Commit ebf55511 authored by Sebastian Reichel's avatar Sebastian Reichel Committed by Lee Jones

mfd: da9052: Make touchscreen registration optional

If the touchscreen pins are used as general purpose analogue
input, the touchscreen driver should not be used. The pins
will be handled by the existing hwmon driver instead.
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 7fe9899e
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/mfd/core.h> #include <linux/mfd/core.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/property.h>
#include <linux/mfd/da9052/da9052.h> #include <linux/mfd/da9052/da9052.h>
#include <linux/mfd/da9052/pdata.h> #include <linux/mfd/da9052/pdata.h>
...@@ -518,9 +519,6 @@ static const struct mfd_cell da9052_subdev_info[] = { ...@@ -518,9 +519,6 @@ static const struct mfd_cell da9052_subdev_info[] = {
{ {
.name = "da9052-wled3", .name = "da9052-wled3",
}, },
{
.name = "da9052-tsi",
},
{ {
.name = "da9052-bat", .name = "da9052-bat",
}, },
...@@ -529,6 +527,10 @@ static const struct mfd_cell da9052_subdev_info[] = { ...@@ -529,6 +527,10 @@ static const struct mfd_cell da9052_subdev_info[] = {
}, },
}; };
static const struct mfd_cell da9052_tsi_subdev_info[] = {
{ .name = "da9052-tsi" },
};
const struct regmap_config da9052_regmap_config = { const struct regmap_config da9052_regmap_config = {
.reg_bits = 8, .reg_bits = 8,
.val_bits = 8, .val_bits = 8,
...@@ -619,9 +621,27 @@ int da9052_device_init(struct da9052 *da9052, u8 chip_id) ...@@ -619,9 +621,27 @@ int da9052_device_init(struct da9052 *da9052, u8 chip_id)
goto err; goto err;
} }
/*
* Check if touchscreen pins are used are analogue input instead
* of having a touchscreen connected to them. The analogue input
* functionality will be provided by hwmon driver (if enabled).
*/
if (!device_property_read_bool(da9052->dev, "dlg,tsi-as-adc")) {
ret = mfd_add_devices(da9052->dev, PLATFORM_DEVID_AUTO,
da9052_tsi_subdev_info,
ARRAY_SIZE(da9052_tsi_subdev_info),
NULL, 0, NULL);
if (ret) {
dev_err(da9052->dev, "failed to add TSI subdev: %d\n",
ret);
goto err;
}
}
return 0; return 0;
err: err:
mfd_remove_devices(da9052->dev);
da9052_irq_exit(da9052); da9052_irq_exit(da9052);
return ret; return ret;
......
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