summaryrefslogtreecommitdiff
path: root/drivers/mfd
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2013-03-15 16:55:01 +0530
committerRiham Haidar <rhaidar@nvidia.com>2013-03-19 16:08:36 -0700
commit3d49f09f23f12b11cd92e0d45ddd3d6c0bb932c7 (patch)
tree5f86fc4def1722c42ebe1103ee14cae59e53ffb6 /drivers/mfd
parentfa859b7a3dfc10250b8e2dab9985cde31778569a (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.c85
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, &reg);
- 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, &reg);
- 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, &reg);
- 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);