|
@@ -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);
|