mfd: ti-lmu: Add LM36274 support to the ti-lmu
authorDan Murphy <dmurphy@ti.com>
Wed, 5 Jun 2019 12:56:31 +0000 (07:56 -0500)
committerJacek Anaszewski <jacek.anaszewski@gmail.com>
Thu, 6 Jun 2019 18:38:22 +0000 (20:38 +0200)
Add the LM36274 register support to the ti-lmu MFD driver.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
drivers/mfd/Kconfig
drivers/mfd/ti-lmu.c
include/linux/mfd/ti-lmu-register.h
include/linux/mfd/ti-lmu.h

index 8933485..a69aca3 100644 (file)
@@ -1335,9 +1335,8 @@ config MFD_TI_LMU
        select REGMAP_I2C
        help
          Say yes here to enable support for TI LMU chips.
-
-         TI LMU MFD supports LM3532, LM3631, LM3632, LM3633, and LM3695.
-         It consists of backlight, LED and regulator driver.
+         TI LMU MFD supports LM3532, LM3631, LM3632, LM3633, LM3695 and
+         LM36274.  It consists of backlight, LED and regulator driver.
          It provides consistent device controls for lighting functions.
 
 config MFD_OMAP_USB_HOST
index 89b1c5b..691ab9d 100644 (file)
@@ -111,6 +111,17 @@ static const struct mfd_cell lm3695_devices[] = {
        },
 };
 
+static const struct mfd_cell lm36274_devices[] = {
+       LM363X_REGULATOR(LM36274_BOOST),
+       LM363X_REGULATOR(LM36274_LDO_POS),
+       LM363X_REGULATOR(LM36274_LDO_NEG),
+       {
+               .name          = "lm36274-leds",
+               .id            = LM36274,
+               .of_compatible = "ti,lm36274-backlight",
+       },
+};
+
 #define TI_LMU_DATA(chip, max_reg)             \
 static const struct ti_lmu_data chip##_data =  \
 {                                              \
@@ -123,6 +134,7 @@ TI_LMU_DATA(lm3631, LM3631_MAX_REG);
 TI_LMU_DATA(lm3632, LM3632_MAX_REG);
 TI_LMU_DATA(lm3633, LM3633_MAX_REG);
 TI_LMU_DATA(lm3695, LM3695_MAX_REG);
+TI_LMU_DATA(lm36274, LM36274_MAX_REG);
 
 static int ti_lmu_probe(struct i2c_client *cl, const struct i2c_device_id *id)
 {
@@ -191,6 +203,7 @@ static const struct of_device_id ti_lmu_of_match[] = {
        { .compatible = "ti,lm3632", .data = &lm3632_data },
        { .compatible = "ti,lm3633", .data = &lm3633_data },
        { .compatible = "ti,lm3695", .data = &lm3695_data },
+       { .compatible = "ti,lm36274", .data = &lm36274_data },
        { }
 };
 MODULE_DEVICE_TABLE(of, ti_lmu_of_match);
@@ -200,6 +213,7 @@ static const struct i2c_device_id ti_lmu_ids[] = {
        { "lm3632", LM3632 },
        { "lm3633", LM3633 },
        { "lm3695", LM3695 },
+       { "lm36274", LM36274 },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, ti_lmu_ids);
index 76998b0..076d8de 100644 (file)
 #define LM3695_REG_BRT_MSB                     0x14
 
 #define LM3695_MAX_REG                         0x14
+
+/* LM36274 */
+#define LM36274_REG_REV                                0x01
+#define LM36274_REG_BL_CFG_1                   0x02
+#define LM36274_REG_BL_CFG_2                   0x03
+#define LM36274_REG_BRT_LSB                    0x04
+#define LM36274_REG_BRT_MSB                    0x05
+#define LM36274_REG_BL_EN                      0x08
+
+#define LM36274_REG_BIAS_CONFIG_1              0x09
+#define LM36274_EXT_EN_MASK                    BIT(0)
+#define LM36274_EN_VNEG_MASK                   BIT(1)
+#define LM36274_EN_VPOS_MASK                   BIT(2)
+
+#define LM36274_REG_BIAS_CONFIG_2              0x0a
+#define LM36274_REG_BIAS_CONFIG_3              0x0b
+#define LM36274_REG_VOUT_BOOST                 0x0c
+#define LM36274_REG_VOUT_POS                   0x0d
+#define LM36274_REG_VOUT_NEG                   0x0e
+#define LM36274_VOUT_MASK                      0x3F
+
+#define LM36274_MAX_REG                                0x13
+
 #endif
index 54e9d27..0957598 100644 (file)
@@ -26,6 +26,7 @@ enum ti_lmu_id {
        LM3632,
        LM3633,
        LM3695,
+       LM36274,
        LMU_MAX_ID,
 };
 
@@ -67,6 +68,9 @@ enum lm363x_regulator_id {
        LM3632_BOOST,           /* Boost output */
        LM3632_LDO_POS,         /* Positive display bias output */
        LM3632_LDO_NEG,         /* Negative display bias output */
+       LM36274_BOOST,          /* Boost output */
+       LM36274_LDO_POS,        /* Positive display bias output */
+       LM36274_LDO_NEG,        /* Negative display bias output */
 };
 
 /**