X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fmedia%2Fvideo%2Fzr36120.c;h=7899c63984a3de1c9751175d319ed3b25adf51c0;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=9b55341baf4099dfa522b9cf3ada64003f7026ce;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/media/video/zr36120.c b/drivers/media/video/zr36120.c index 9b55341ba..7899c6398 100644 --- a/drivers/media/video/zr36120.c +++ b/drivers/media/video/zr36120.c @@ -145,14 +145,11 @@ static struct { const char name[8]; uint mode; uint bpp; } palette2fmt[] = { static void __init handle_chipset(void) { - struct pci_dev *dev = NULL; - /* Just in case some nut set this to something dangerous */ if (triton1) triton1 = ZORAN_VDC_TRICOM; - while ((dev = pci_find_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437, dev))) - { + if (pci_pci_problems & PCIPCI_TRITON) { printk(KERN_INFO "zoran: Host bridge 82437FX Triton PIIX\n"); triton1 = ZORAN_VDC_TRICOM; } @@ -341,7 +338,7 @@ void zoran_irq(int irq, void *dev_id, struct pt_regs * regs) { u32 stat,estat; int count = 0; - struct zoran *ztv = (struct zoran *)dev_id; + struct zoran *ztv = dev_id; UNUSED(irq); UNUSED(regs); for (;;) { @@ -778,7 +775,7 @@ static int zoran_open(struct video_device *dev, int flags) memset(ztv->fbuffer,0,ZORAN_MAX_FBUFSIZE); if (!ztv->overinfo.overlay) - ztv->overinfo.overlay = (void*)kmalloc(1024*1024/8, GFP_KERNEL); + ztv->overinfo.overlay = kmalloc(1024*1024/8, GFP_KERNEL); if (!ztv->overinfo.overlay) { /* could not get an overlay buffer, bail out */ bfree(ztv->fbuffer, ZORAN_MAX_FBUFSIZE); @@ -819,8 +816,7 @@ void zoran_close(struct video_device* dev) * be sure its safe to free the buffer. We wait 5-6 fields * which is more than sufficient to be sure. */ - current->state = TASK_UNINTERRUPTIBLE; - schedule_timeout(HZ/10); /* Wait 1/10th of a second */ + msleep(100); /* Wait 1/10th of a second */ /* free the allocated framebuffer */ if (ztv->fbuffer) @@ -1475,8 +1471,8 @@ int zoran_mmap(struct vm_area_struct *vma, struct video_device* dev, const char* /* start mapping the whole shabang to user memory */ pos = (unsigned long)ztv->fbuffer; while (size>0) { - unsigned long page = virt_to_phys((void*)pos); - if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) + unsigned long pfn = virt_to_phys((void*)pos) >> PAGE_SHIFT; + if (remap_pfn_range(vma, start, pfn, PAGE_SIZE, PAGE_SHARED)) return -EAGAIN; start += PAGE_SIZE; pos += PAGE_SIZE; @@ -1504,7 +1500,7 @@ static struct video_device zr36120_template= static int vbi_open(struct video_device *dev, int flags) { - struct zoran *ztv = (struct zoran*)dev->priv; + struct zoran *ztv = dev->priv; struct vidinfo* item; DEBUG(printk(CARD_DEBUG "vbi_open(dev,%d)\n",CARD,flags)); @@ -1553,7 +1549,7 @@ int vbi_open(struct video_device *dev, int flags) static void vbi_close(struct video_device *dev) { - struct zoran *ztv = (struct zoran*)dev->priv; + struct zoran *ztv = dev->priv; struct vidinfo* item; DEBUG(printk(CARD_DEBUG "vbi_close(dev)\n",CARD)); @@ -1568,8 +1564,7 @@ void vbi_close(struct video_device *dev) * be sure its safe to free the buffer. We wait 5-6 fields * which is more than sufficient to be sure. */ - current->state = TASK_UNINTERRUPTIBLE; - schedule_timeout(HZ/10); /* Wait 1/10th of a second */ + msleep(100); /* Wait 1/10th of a second */ for (item=ztv->readinfo; item!=ztv->readinfo+ZORAN_VBI_BUFFERS; item++) { @@ -1590,7 +1585,7 @@ void vbi_close(struct video_device *dev) static long vbi_read(struct video_device* dev, char* buf, unsigned long count, int nonblock) { - struct zoran *ztv = (struct zoran*)dev->priv; + struct zoran *ztv = dev->priv; unsigned long max; struct vidinfo* unused = 0; struct vidinfo* done = 0; @@ -1745,7 +1740,7 @@ out: static unsigned int vbi_poll(struct video_device *dev, struct file *file, poll_table *wait) { - struct zoran *ztv = (struct zoran*)dev->priv; + struct zoran *ztv = dev->priv; struct vidinfo* item; unsigned int mask = 0; @@ -1766,7 +1761,7 @@ unsigned int vbi_poll(struct video_device *dev, struct file *file, poll_table *w static int vbi_ioctl(struct video_device *dev, unsigned int cmd, void *arg) { - struct zoran* ztv = (struct zoran*)dev->priv; + struct zoran* ztv = dev->priv; switch (cmd) { case VIDIOCGVBIFMT: @@ -1866,7 +1861,7 @@ int __init find_zoran(void) DEBUG(printk(KERN_DEBUG "zoran: mapped-memory at 0x%p\n",ztv->zoran_mem)); result = request_irq(dev->irq, zoran_irq, - SA_SHIRQ|SA_INTERRUPT,"zoran",(void *)ztv); + SA_SHIRQ|SA_INTERRUPT,"zoran", ztv); if (result==-EINVAL) { iounmap(ztv->zoran_mem); @@ -1955,7 +1950,7 @@ int __init init_zoran(int card) ztv->tuner_type = 0; ztv->running = 0; ztv->users = 0; - ztv->lock = RW_LOCK_UNLOCKED; + rwlock_init(&ztv->lock); ztv->workqueue = 0; ztv->fieldnr = 0; ztv->lastfieldnr = 0;