[PATCHv4 07/10] mfd: ti-lmu: register one backlight device per channel
From: Sebastian Reichel
Date: Fri Mar 30 2018 - 13:25:47 EST
All LMU devices support multiple channels, that can be controlled
independently. This registers one backlight sub-device per channel.
Signed-off-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx>
---
drivers/mfd/ti-lmu.c | 62 +++++++++++++++++++++++++++++++++++++---------
include/linux/mfd/ti-lmu.h | 4 +++
2 files changed, 54 insertions(+), 12 deletions(-)
diff --git a/drivers/mfd/ti-lmu.c b/drivers/mfd/ti-lmu.c
index f43b8acc30e1..f4311d215dfa 100644
--- a/drivers/mfd/ti-lmu.c
+++ b/drivers/mfd/ti-lmu.c
@@ -56,8 +56,16 @@ static void ti_lmu_disable_hw(void *data)
static const struct mfd_cell lm3532_devices[] = {
{
- .name = "ti-lmu-backlight",
- .id = LM3532,
+ .name = "ti-lmu-led-backlight",
+ .id = 0,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 1,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 2,
},
};
@@ -75,8 +83,12 @@ static const struct mfd_cell lm3631_devices[] = {
LM363X_REGULATOR(LM3631_LDO_POS),
LM363X_REGULATOR(LM3631_LDO_NEG),
{
- .name = "ti-lmu-backlight",
- .id = LM3631,
+ .name = "ti-lmu-led-backlight",
+ .id = 0,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 1,
},
};
@@ -85,15 +97,27 @@ static const struct mfd_cell lm3632_devices[] = {
LM363X_REGULATOR(LM3632_LDO_POS),
LM363X_REGULATOR(LM3632_LDO_NEG),
{
- .name = "ti-lmu-backlight",
- .id = LM3632,
+ .name = "ti-lmu-led-backlight",
+ .id = 0,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 1,
},
};
static const struct mfd_cell lm3633_devices[] = {
{
- .name = "ti-lmu-backlight",
- .id = LM3633,
+ .name = "ti-lmu-led-backlight",
+ .id = 0,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 1,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 2,
},
{
.name = "lm3633-leds",
@@ -109,15 +133,27 @@ static const struct mfd_cell lm3633_devices[] = {
static const struct mfd_cell lm3695_devices[] = {
{
- .name = "ti-lmu-backlight",
- .id = LM3695,
+ .name = "ti-lmu-led-backlight",
+ .id = 0,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 1,
},
};
static const struct mfd_cell lm3697_devices[] = {
{
- .name = "ti-lmu-backlight",
- .id = LM3697,
+ .name = "ti-lmu-led-backlight",
+ .id = 0,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 1,
+ },
+ {
+ .name = "ti-lmu-led-backlight",
+ .id = 2,
},
/* Monitoring driver for open/short circuit detection */
{
@@ -163,6 +199,7 @@ static int ti_lmu_probe(struct i2c_client *cl, const struct i2c_device_id *id)
return -ENOMEM;
lmu->dev = &cl->dev;
+ lmu->id = id->driver_data;
/* Setup regmap */
memset(®map_cfg, 0, sizeof(struct regmap_config));
@@ -208,6 +245,7 @@ static int ti_lmu_probe(struct i2c_client *cl, const struct i2c_device_id *id)
* configuration. The notifier enables such kind of handling.
*/
BLOCKING_INIT_NOTIFIER_HEAD(&lmu->notifier);
+ lmu->backlight_initialized = false;
i2c_set_clientdata(cl, lmu);
diff --git a/include/linux/mfd/ti-lmu.h b/include/linux/mfd/ti-lmu.h
index 246ab5145dff..708c79adcabe 100644
--- a/include/linux/mfd/ti-lmu.h
+++ b/include/linux/mfd/ti-lmu.h
@@ -80,6 +80,8 @@ enum lm363x_regulator_id {
* @en_gpio: GPIO for HWEN pin [Optional]
* @pwm: PWM for module [Optional]
* @notifier: Notifier for reporting hwmon event
+ * @id: Device ID
+ * @backlight_initialized: Global Backlight has been initialized
*/
struct ti_lmu {
struct device *dev;
@@ -87,5 +89,7 @@ struct ti_lmu {
struct gpio_desc *en_gpio;
struct pwm_device *pwm;
struct blocking_notifier_head notifier;
+ enum ti_lmu_id id;
+ bool backlight_initialized;
};
#endif
--
2.16.2