]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] dvb: Update saa7146 driver core
authorAndrew Morton <akpm@osdl.org>
Thu, 26 Feb 2004 00:21:38 +0000 (16:21 -0800)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Thu, 26 Feb 2004 00:21:38 +0000 (16:21 -0800)
From: Michael Hunold <hunold@linuxtv.org>

- saa7146: fix timeout bug on AMD64 in saa7146_wait_for_debi_done()

- saa7146: release resources for video overlay properly, don't
  (incorrectly) rely on VIDIOC_OVERLAY(0)

drivers/media/common/saa7146_core.c
drivers/media/common/saa7146_video.c

index 706783c1e56239e97b6a34e157b792ba89b6b9ef..369d949fded45d8e1e60f1288cb00f3e8f433a79 100644 (file)
@@ -69,14 +69,14 @@ void saa7146_set_gpio(struct saa7146_dev *dev, u8 pin, u8 data)
 /* This DEBI code is based on the saa7146 Stradis driver by Nathan Laredo */
 int saa7146_wait_for_debi_done(struct saa7146_dev *dev)
 {
-       int start;
+       unsigned long start;
 
        /* wait for registers to be programmed */
        start = jiffies;
        while (1) {
                 if (saa7146_read(dev, MC2) & 2)
                         break;
-               if (jiffies-start > HZ/20) {
+               if (time_after(jiffies, start + HZ/20)) {
                        DEB_S(("timed out while waiting for registers getting programmed\n"));
                        return -ETIMEDOUT;
                }
@@ -88,7 +88,7 @@ int saa7146_wait_for_debi_done(struct saa7146_dev *dev)
                if (!(saa7146_read(dev, PSR) & SPCI_DEBI_S))
                        break;
                saa7146_read(dev, MC2);
-               if (jiffies-start > HZ/4) {
+               if (time_after(jiffies, start + HZ/4)) {
                        DEB_S(("timed out while waiting for transfer completion\n"));
                        return -ETIMEDOUT;
                }
index c3e935d288d6e6e2e2ac4d31298010f31699c4a0..f7b7b1f708fa0ee840a3b3d6db98ed1c2cc5bea1 100644 (file)
@@ -1413,6 +1413,7 @@ static void video_close(struct saa7146_dev *dev, struct file *file)
                        spin_lock_irqsave(&dev->slock,flags);
                        saa7146_stop_preview(fh);
                        spin_unlock_irqrestore(&dev->slock,flags);
+                       saa7146_res_free(fh, RESOURCE_DMA1_HPS|RESOURCE_DMA2_CLP);
                }
        }