Updated corresponding to - NFC_AR_00_6000_10.00.08_OpnSrc

This commit is contained in:
nxf35421
2019-06-28 15:49:31 +05:30
parent 2a22a0e8e3
commit a90c2f8052
2 changed files with 16 additions and 2 deletions

View File

@@ -167,7 +167,9 @@ static void pn544_disable_irq(struct pn544_dev *pn544_dev)
static int pn544_dev_release(struct inode *inode, struct file *filp) { static int pn544_dev_release(struct inode *inode, struct file *filp) {
pn544_dev->state_flags = 0x00; pn544_dev->state_flags = 0x00;
pr_info(KERN_ALERT "Exit %s: NFC driver release \n", __func__); if (pn544_dev->firm_gpio)
gpio_set_value(pn544_dev->firm_gpio, 0);
pr_info(KERN_ALERT "Exit %s: NFC driver release nfc hal \n", __func__);
return 0; return 0;
} }
static irqreturn_t pn544_dev_irq_handler(int irq, void *dev_id) static irqreturn_t pn544_dev_irq_handler(int irq, void *dev_id)
@@ -244,7 +246,12 @@ static ssize_t pn544_dev_read(struct file *filp, char __user *buf,
if (ret) if (ret)
goto fail; goto fail;
if(pn544_dev->state_flags & P544_FLAG_NFC_VEN_RESET) {
pr_warning("%s: releasing read \n", __func__);
pn544_dev->state_flags &= ~P544_FLAG_NFC_VEN_RESET;
ret = -EL3RST;
goto fail;
}
if (gpio_get_value(pn544_dev->irq_gpio)) if (gpio_get_value(pn544_dev->irq_gpio))
break; break;
@@ -665,6 +672,9 @@ long pn544_dev_ioctl(struct file *filp, unsigned int cmd,
msleep(10); msleep(10);
} }
} else if (arg == 5) { } else if (arg == 5) {
pn544_dev->state_flags |= P544_FLAG_NFC_VEN_RESET;
pn544_disable_irq(pn544_dev);
wake_up(&pn544_dev->read_wq);
msleep(10); msleep(10);
gpio_set_value(pn544_dev->ven_gpio, 0); gpio_set_value(pn544_dev->ven_gpio, 0);
msleep(10); msleep(10);

View File

@@ -117,6 +117,10 @@
FW_DNLD: NFC_ON and FW download is going on FW_DNLD: NFC_ON and FW download is going on
*/ */
#define P544_FLAG_ESE_COLD_RESET_FROM_DRIVER 0x04 #define P544_FLAG_ESE_COLD_RESET_FROM_DRIVER 0x04
/*
FW_DNLD: NFC_ON and FW download with VEN reset
*/
#define P544_FLAG_NFC_VEN_RESET 0x08
typedef enum p61_access_state{ typedef enum p61_access_state{
P61_STATE_INVALID = 0x0000, P61_STATE_INVALID = 0x0000,