diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2013-03-15 16:55:01 +0530 |
---|---|---|
committer | Riham Haidar <rhaidar@nvidia.com> | 2013-03-19 16:08:36 -0700 |
commit | 3d49f09f23f12b11cd92e0d45ddd3d6c0bb932c7 (patch) | |
tree | 5f86fc4def1722c42ebe1103ee14cae59e53ffb6 /drivers/mfd | |
parent | fa859b7a3dfc10250b8e2dab9985cde31778569a (diff) |
mfd: palmas: register pincontrol driver submfd device
Enable pincontrol driver as submfd devices.
bug 1242260
Change-Id: Ib980e3f8e258b5e13892c872185a00f8d98a1244
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/209986
Reviewed-by: Naveen Kumar S <nkumars@nvidia.com>
Tested-by: Naveen Kumar S <nkumars@nvidia.com>
GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/palmas.c | 85 |
1 files changed, 5 insertions, 80 deletions
diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c index 7caa13b2863e..10fb9b5d5aa6 100644 --- a/drivers/mfd/palmas.c +++ b/drivers/mfd/palmas.c @@ -108,6 +108,7 @@ static const struct resource wdt_resource[] = { }; enum palmas_ids { + PALMAS_PIN_MUX_ID, PALMAS_PMIC_ID, PALMAS_GPIO_ID, PALMAS_LEDS_ID, @@ -124,6 +125,10 @@ enum palmas_ids { static const struct mfd_cell palmas_children[] = { { + .name = "palmas-pinctrl", + .id = PALMAS_PIN_MUX_ID, + }, + { .name = "palmas-pmic", .id = PALMAS_PMIC_ID, }, @@ -1018,86 +1023,6 @@ static int __devinit palmas_i2c_probe(struct i2c_client *i2c, if (ret < 0) goto err; - slave = PALMAS_BASE_TO_SLAVE(PALMAS_PU_PD_OD_BASE); - addr = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE, - PALMAS_PRIMARY_SECONDARY_PAD1); - - if (pdata->mux_from_pdata) { - reg = pdata->pad1; - ret = regmap_write(palmas->regmap[slave], addr, reg); - if (ret) - goto err; - } else { - ret = regmap_read(palmas->regmap[slave], addr, ®); - if (ret) - goto err; - } - - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_0)) - palmas->gpio_muxed |= PALMAS_GPIO_0_MUXED; - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_1_MASK)) - palmas->gpio_muxed |= PALMAS_GPIO_1_MUXED; - else if ((reg & PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_1_MASK) == - (2 << PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_1_SHIFT)) - palmas->led_muxed |= PALMAS_LED1_MUXED; - else if ((reg & PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_1_MASK) == - (3 << PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_1_SHIFT)) - palmas->pwm_muxed |= PALMAS_PWM1_MUXED; - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_2_MASK)) - palmas->gpio_muxed |= PALMAS_GPIO_2_MUXED; - else if ((reg & PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_2_MASK) == - (2 << PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_2_SHIFT)) - palmas->led_muxed |= PALMAS_LED2_MUXED; - else if ((reg & PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_2_MASK) == - (3 << PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_2_SHIFT)) - palmas->pwm_muxed |= PALMAS_PWM2_MUXED; - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD1_GPIO_3)) - palmas->gpio_muxed |= PALMAS_GPIO_3_MUXED; - - addr = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE, - PALMAS_PRIMARY_SECONDARY_PAD2); - - if (pdata->mux_from_pdata) { - reg = pdata->pad2; - ret = regmap_write(palmas->regmap[slave], addr, reg); - if (ret) - goto err; - } else { - ret = regmap_read(palmas->regmap[slave], addr, ®); - if (ret) - goto err; - } - - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_4)) - palmas->gpio_muxed |= PALMAS_GPIO_4_MUXED; - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_5_MASK)) - palmas->gpio_muxed |= PALMAS_GPIO_5_MUXED; - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_6)) - palmas->gpio_muxed |= PALMAS_GPIO_6_MUXED; - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD2_GPIO_7_MASK)) - palmas->gpio_muxed |= PALMAS_GPIO_7_MUXED; - - addr = PALMAS_BASE_TO_REG(PALMAS_PU_PD_OD_BASE, - PALMAS_PRIMARY_SECONDARY_PAD3); - - if (pdata->mux_from_pdata) { - reg = pdata->pad3; - ret = regmap_write(palmas->regmap[slave], addr, reg); - if (ret) - goto err; - } else { - ret = regmap_read(palmas->regmap[slave], addr, ®); - if (ret) - goto err; - } - - if (!(reg & PALMAS_PRIMARY_SECONDARY_PAD3_DVFS2)) - palmas->gpio_muxed |= PALMAS_GPIO_6_MUXED; - - dev_info(palmas->dev, "Muxing GPIO %x, PWM %x, LED %x\n", - palmas->gpio_muxed, palmas->pwm_muxed, - palmas->led_muxed); - reg = pdata->power_ctrl; slave = PALMAS_BASE_TO_SLAVE(PALMAS_PMU_CONTROL_BASE); |