[media] budget-core: fix sparse warnings
authorHans Verkuil <hans.verkuil@cisco.com>
Sat, 13 Dec 2014 11:52:52 +0000 (08:52 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 23 Dec 2014 12:40:01 +0000 (10:40 -0200)
Fixes these sparse warnings.

drivers/media/pci/ttpci/budget-core.c:250:17: warning: context imbalance in 'ttpci_budget_debiread' - different lock contexts for basic block
drivers/media/pci/ttpci/budget-core.c:289:17: warning: context imbalance in 'ttpci_budget_debiwrite' - different lock contexts for basic block

To be honest, the new code does look better than the old.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/pci/ttpci/budget-core.c

index 37d02fe091376977840455a555038587dda0e9aa..23e05499b50969346234fa03c6bfd2b5ab2e437f 100644 (file)
@@ -231,63 +231,59 @@ static void vpeirq(unsigned long data)
 }
 
 
-int ttpci_budget_debiread(struct budget *budget, u32 config, int addr, int count,
-                         int uselocks, int nobusyloop)
+static int ttpci_budget_debiread_nolock(struct budget *budget, u32 config,
+               int addr, int count, int nobusyloop)
 {
        struct saa7146_dev *saa = budget->dev;
-       int result = 0;
-       unsigned long flags = 0;
-
-       if (count > 4 || count <= 0)
-               return 0;
-
-       if (uselocks)
-               spin_lock_irqsave(&budget->debilock, flags);
+       int result;
 
-       if ((result = saa7146_wait_for_debi_done(saa, nobusyloop)) < 0) {
-               if (uselocks)
-                       spin_unlock_irqrestore(&budget->debilock, flags);
+       result = saa7146_wait_for_debi_done(saa, nobusyloop);
+       if (result < 0)
                return result;
-       }
 
        saa7146_write(saa, DEBI_COMMAND, (count << 17) | 0x10000 | (addr & 0xffff));
        saa7146_write(saa, DEBI_CONFIG, config);
        saa7146_write(saa, DEBI_PAGE, 0);
        saa7146_write(saa, MC2, (2 << 16) | 2);
 
-       if ((result = saa7146_wait_for_debi_done(saa, nobusyloop)) < 0) {
-               if (uselocks)
-                       spin_unlock_irqrestore(&budget->debilock, flags);
+       result = saa7146_wait_for_debi_done(saa, nobusyloop);
+       if (result < 0)
                return result;
-       }
 
        result = saa7146_read(saa, DEBI_AD);
        result &= (0xffffffffUL >> ((4 - count) * 8));
-
-       if (uselocks)
-               spin_unlock_irqrestore(&budget->debilock, flags);
-
        return result;
 }
 
-int ttpci_budget_debiwrite(struct budget *budget, u32 config, int addr,
-                          int count, u32 value, int uselocks, int nobusyloop)
+int ttpci_budget_debiread(struct budget *budget, u32 config, int addr, int count,
+                         int uselocks, int nobusyloop)
 {
-       struct saa7146_dev *saa = budget->dev;
-       unsigned long flags = 0;
-       int result;
-
        if (count > 4 || count <= 0)
                return 0;
 
-       if (uselocks)
-               spin_lock_irqsave(&budget->debilock, flags);
+       if (uselocks) {
+               unsigned long flags;
+               int result;
 
-       if ((result = saa7146_wait_for_debi_done(saa, nobusyloop)) < 0) {
-               if (uselocks)
-                       spin_unlock_irqrestore(&budget->debilock, flags);
+               spin_lock_irqsave(&budget->debilock, flags);
+               result = ttpci_budget_debiread_nolock(budget, config, addr,
+                                                     count, nobusyloop);
+               spin_unlock_irqrestore(&budget->debilock, flags);
                return result;
        }
+       return ttpci_budget_debiread_nolock(budget, config, addr,
+                                           count, nobusyloop);
+}
+
+static int ttpci_budget_debiwrite_nolock(struct budget *budget, u32 config,
+               int addr, int count, u32 value, int nobusyloop)
+{
+       struct saa7146_dev *saa = budget->dev;
+       int result;
+
+       result = saa7146_wait_for_debi_done(saa, nobusyloop);
+       if (result < 0)
+               return result;
 
        saa7146_write(saa, DEBI_COMMAND, (count << 17) | 0x00000 | (addr & 0xffff));
        saa7146_write(saa, DEBI_CONFIG, config);
@@ -295,15 +291,28 @@ int ttpci_budget_debiwrite(struct budget *budget, u32 config, int addr,
        saa7146_write(saa, DEBI_AD, value);
        saa7146_write(saa, MC2, (2 << 16) | 2);
 
-       if ((result = saa7146_wait_for_debi_done(saa, nobusyloop)) < 0) {
-               if (uselocks)
-                       spin_unlock_irqrestore(&budget->debilock, flags);
-               return result;
-       }
+       result = saa7146_wait_for_debi_done(saa, nobusyloop);
+       return result < 0 ? result : 0;
+}
 
-       if (uselocks)
+int ttpci_budget_debiwrite(struct budget *budget, u32 config, int addr,
+                          int count, u32 value, int uselocks, int nobusyloop)
+{
+       if (count > 4 || count <= 0)
+               return 0;
+
+       if (uselocks) {
+               unsigned long flags;
+               int result;
+
+               spin_lock_irqsave(&budget->debilock, flags);
+               result = ttpci_budget_debiwrite_nolock(budget, config, addr,
+                                               count, value, nobusyloop);
                spin_unlock_irqrestore(&budget->debilock, flags);
-       return 0;
+               return result;
+       }
+       return ttpci_budget_debiwrite_nolock(budget, config, addr,
+                                            count, value, nobusyloop);
 }