Commit 95129b6f authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Samuel Ortiz

NFC: pn544: Get rid of code duplication in ->probe()

Since OF and ACPI case almost the same get rid of code duplication
by moving gpiod_get() calls directly to ->probe().
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent a4a0eb78
...@@ -878,58 +878,10 @@ static const struct acpi_gpio_mapping acpi_pn544_gpios[] = { ...@@ -878,58 +878,10 @@ static const struct acpi_gpio_mapping acpi_pn544_gpios[] = {
{ }, { },
}; };
static int pn544_hci_i2c_acpi_request_resources(struct i2c_client *client)
{
struct pn544_i2c_phy *phy = i2c_get_clientdata(client);
struct device *dev = &client->dev;
int ret;
ret = acpi_dev_add_driver_gpios(ACPI_COMPANION(dev), acpi_pn544_gpios);
if (ret)
return ret;
/* Get EN GPIO from ACPI */
phy->gpiod_en = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
if (IS_ERR(phy->gpiod_en)) {
nfc_err(dev, "Unable to get EN GPIO\n");
return PTR_ERR(phy->gpiod_en);
}
/* Get FW GPIO from ACPI */
phy->gpiod_fw = devm_gpiod_get(dev, "firmware", GPIOD_OUT_LOW);
if (IS_ERR(phy->gpiod_fw)) {
nfc_err(dev, "Unable to get FW GPIO\n");
return PTR_ERR(phy->gpiod_fw);
}
return 0;
}
static int pn544_hci_i2c_of_request_resources(struct i2c_client *client)
{
struct pn544_i2c_phy *phy = i2c_get_clientdata(client);
struct device *dev = &client->dev;
/* Obtaining EN GPIO from device tree */
phy->gpiod_en = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
if (IS_ERR(phy->gpiod_en)) {
nfc_err(dev, "Failed to get EN gpio\n");
return PTR_ERR(phy->gpiod_en);
}
/* Obtaining FW GPIO from device tree */
phy->gpiod_fw = devm_gpiod_get(dev, "firmware", GPIOD_OUT_LOW);
if (IS_ERR(phy->gpiod_fw)) {
nfc_err(dev, "Failed to get FW gpio\n");
return PTR_ERR(phy->gpiod_fw);
}
return 0;
}
static int pn544_hci_i2c_probe(struct i2c_client *client, static int pn544_hci_i2c_probe(struct i2c_client *client,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct device *dev = &client->dev;
struct pn544_i2c_phy *phy; struct pn544_i2c_phy *phy;
int r = 0; int r = 0;
...@@ -952,24 +904,22 @@ static int pn544_hci_i2c_probe(struct i2c_client *client, ...@@ -952,24 +904,22 @@ static int pn544_hci_i2c_probe(struct i2c_client *client,
phy->i2c_dev = client; phy->i2c_dev = client;
i2c_set_clientdata(client, phy); i2c_set_clientdata(client, phy);
/* No platform data, using device tree. */ r = acpi_dev_add_driver_gpios(ACPI_COMPANION(dev), acpi_pn544_gpios);
if (client->dev.of_node) { if (r)
r = pn544_hci_i2c_of_request_resources(client); dev_dbg(dev, "Unable to add GPIO mapping table\n");
if (r) {
nfc_err(&client->dev, "No DT data\n"); /* Get EN GPIO */
return r; phy->gpiod_en = devm_gpiod_get(dev, "enable", GPIOD_OUT_LOW);
} if (IS_ERR(phy->gpiod_en)) {
/* Using ACPI */ nfc_err(dev, "Unable to get EN GPIO\n");
} else if (ACPI_HANDLE(&client->dev)) { return PTR_ERR(phy->gpiod_en);
r = pn544_hci_i2c_acpi_request_resources(client); }
if (r) {
nfc_err(&client->dev, /* Get FW GPIO */
"Cannot get ACPI data\n"); phy->gpiod_fw = devm_gpiod_get(dev, "firmware", GPIOD_OUT_LOW);
return r; if (IS_ERR(phy->gpiod_fw)) {
} nfc_err(dev, "Unable to get FW GPIO\n");
} else { return PTR_ERR(phy->gpiod_fw);
nfc_err(&client->dev, "No platform data\n");
return -EINVAL;
} }
pn544_hci_i2c_platform_init(phy); pn544_hci_i2c_platform_init(phy);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment