Jelajahi Sumber

Merge branch 'caf/driver/br_android_ncihalx_comm_13' into nfc-driver.lnx.13.0

* caf/driver/br_android_ncihalx_comm_13:
  Updated corresponding to - NFC_AR_00_E800_13.03.00_OpnSrc
  Updated corresponding to - NFC_AR_00_E800_13.02.01_OpnSrc

Change-Id: I8494390209f52873828fcc2c83929403c633646d
Khageswararao Rao B 3 tahun lalu
induk
melakukan
1273eaa4c3
2 mengubah file dengan 18 tambahan dan 27 penghapusan
  1. 3 7
      nfc/common.h
  2. 15 20
      nfc/i2c_drv.c

+ 3 - 7
nfc/common.h

@@ -1,6 +1,6 @@
 /******************************************************************************
  * Copyright (C) 2015, The Linux Foundation. All rights reserved.
- * Copyright (C) 2019-2021 NXP
+ * Copyright (C) 2019-2022 NXP
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -91,12 +91,8 @@
 #define NCI_CMD_RSP_TIMEOUT_MS		(2000)
 /* Time to wait for NFCC to be ready again after any change in the GPIO */
 #define NFC_GPIO_SET_WAIT_TIME_US	(10000)
-/*Time to wait after soft reset via any NCI/DL cmd*/
-#define NFC_SOFT_RESET_WAIT_TIME_USEC   (5000)
-/* Time to wait for IRQ low during write 5*3ms */
-#define NFC_WRITE_IRQ_WAIT_TIME_US	(3000)
-/* Time to wait before retrying i2c/I3C writes */
-#define WRITE_RETRY_WAIT_TIME_US	(1000)
+/* Time to wait before retrying writes */
+#define WRITE_RETRY_WAIT_TIME_US	(3000)
 /* Time to wait before retrying read for some specific usecases */
 #define READ_RETRY_WAIT_TIME_US		(3500)
 #define NFC_MAGIC			(0xE9)

+ 15 - 20
nfc/i2c_drv.c

@@ -1,6 +1,6 @@
 /******************************************************************************
  * Copyright (C) 2015, The Linux Foundation. All rights reserved.
- * Copyright (C) 2013-2021 NXP
+ * Copyright (C) 2013-2022 NXP
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -237,8 +237,8 @@ int i2c_write(struct nfc_dev *nfc_dev, const char *buf, size_t count,
 	for (retry_cnt = 1; retry_cnt <= MAX_WRITE_IRQ_COUNT; retry_cnt++) {
 		if (gpio_get_value(nfc_gpio->irq)) {
 			pr_warn("%s: irq high during write, wait\n", __func__);
-			usleep_range(NFC_WRITE_IRQ_WAIT_TIME_US,
-				     NFC_WRITE_IRQ_WAIT_TIME_US + 100);
+			usleep_range(WRITE_RETRY_WAIT_TIME_US,
+				     WRITE_RETRY_WAIT_TIME_US + 100);
 		} else {
 			break;
 		}
@@ -336,26 +336,26 @@ int nfc_i2c_dev_probe(struct i2c_client *client, const struct i2c_device_id *id)
 	int ret = 0;
 	struct nfc_dev *nfc_dev = NULL;
 	struct i2c_dev *i2c_dev = NULL;
-	struct platform_configs nfc_configs;
-	struct platform_gpio *nfc_gpio = &nfc_configs.gpio;
-
+	struct platform_configs *nfc_configs = NULL;
+	struct platform_gpio *nfc_gpio = NULL;
 	pr_debug("%s: enter\n", __func__);
+	nfc_dev = kzalloc(sizeof(struct nfc_dev), GFP_KERNEL);
+	if (nfc_dev == NULL) {
+		ret = -ENOMEM;
+		goto err;
+	}
+	nfc_configs = &nfc_dev->configs;
+	nfc_gpio = &nfc_configs->gpio;
 	/* retrieve details of gpios from dt */
-	ret = nfc_parse_dt(&client->dev, &nfc_configs, PLATFORM_IF_I2C);
+	ret = nfc_parse_dt(&client->dev,nfc_configs, PLATFORM_IF_I2C);
 	if (ret) {
 		pr_err("%s: failed to parse dt\n", __func__);
-		goto err;
+		goto err_free_nfc_dev;
 	}
-
 	if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
 		pr_err("%s: need I2C_FUNC_I2C\n", __func__);
 		ret = -ENODEV;
-		goto err;
-	}
-	nfc_dev = kzalloc(sizeof(struct nfc_dev), GFP_KERNEL);
-	if (nfc_dev == NULL) {
-		ret = -ENOMEM;
-		goto err;
+		goto err_free_nfc_dev;
 	}
 	nfc_dev->read_kbuf = kzalloc(MAX_NCI_BUFFER_SIZE, GFP_DMA | GFP_KERNEL);
 	if (!nfc_dev->read_kbuf) {
@@ -393,11 +393,6 @@ int nfc_i2c_dev_probe(struct i2c_client *client, const struct i2c_device_id *id)
 		pr_err("%s: unable to request nfc firm downl gpio [%d]\n",
 		       __func__, nfc_gpio->dwl_req);
 	}
-
-	/* copy the retrieved gpio details from DT */
-	memcpy(&nfc_dev->configs, &nfc_configs,
-	       sizeof(struct platform_configs));
-
 	/* init mutex and queues */
 	init_waitqueue_head(&nfc_dev->read_wq);
 	mutex_init(&nfc_dev->read_mutex);