]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/nfc/trf7970a.c
Merge tag 'samsung-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene...
[karo-tx-linux.git] / drivers / nfc / trf7970a.c
index 59a7df7f023cd2eaa8369350fc6fefe98749531f..d2ccd289064739a17c9463e4698eab84ce716b64 100644 (file)
@@ -920,7 +920,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
                                        TRF7970A_SPECIAL_FCN_REG1,
                                        TRF7970A_SPECIAL_FCN_REG1_14_ANTICOLL);
                                if (ret)
-                                       return ret;
+                                       goto err_unlock_exit;
 
                                trf->special_fcn_reg1 =
                                        TRF7970A_SPECIAL_FCN_REG1_14_ANTICOLL;
@@ -933,7 +933,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
                                ret = trf7970a_write(trf, TRF7970A_ISO_CTRL,
                                                iso_ctrl);
                                if (ret)
-                                       return ret;
+                                       goto err_unlock_exit;
 
                                trf->iso_ctrl = iso_ctrl;
                        }
@@ -975,6 +975,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id)
                                __func__, trf->state);
        }
 
+err_unlock_exit:
        mutex_unlock(&trf->lock);
        return IRQ_HANDLED;
 }
@@ -1727,22 +1728,22 @@ static int _trf7970a_tg_listen(struct nfc_digital_dev *ddev, u16 timeout,
                        TRF7970A_RX_SPECIAL_SETTINGS_C424 |
                        TRF7970A_RX_SPECIAL_SETTINGS_C212);
        if (ret)
-               return ret;
+               goto out_err;
 
        ret = trf7970a_write(trf, TRF7970A_REG_IO_CTRL,
                        TRF7970A_REG_IO_CTRL_VRS(0x1));
        if (ret)
-               return ret;
+               goto out_err;
 
        ret = trf7970a_write(trf, TRF7970A_NFC_LOW_FIELD_LEVEL,
                        TRF7970A_NFC_LOW_FIELD_LEVEL_RFDET(0x3));
        if (ret)
-               return ret;
+               goto out_err;
 
        ret = trf7970a_write(trf, TRF7970A_NFC_TARGET_LEVEL,
                        TRF7970A_NFC_TARGET_LEVEL_RFDET(0x7));
        if (ret)
-               return ret;
+               goto out_err;
 
        trf->ddev = ddev;
        trf->cb = cb;