Message ID | 20110706034138.GA8987@leaf (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
diff --git a/drivers/mfd/sm501.c b/drivers/mfd/sm501.c index df3702c..d7a0ab9 100644 --- a/drivers/mfd/sm501.c +++ b/drivers/mfd/sm501.c @@ -1089,6 +1089,7 @@ static int __devinit sm501_register_gpio(struct sm501_devdata *sm) goto err_low_chip; } + sm501_unit_power(sm->dev, SM501_GATE_GPIO, 1); gpio->registered = 1; return 0; @@ -1118,6 +1119,8 @@ static void sm501_gpio_remove(struct sm501_devdata *sm) if (!sm->gpio.registered) return; + sm501_unit_power(sm->dev, SM501_GATE_GPIO, 0); + ret = gpiochip_remove(&gpio->low.gpio); if (ret) dev_err(sm->dev, "cannot remove low chip, cannot tidy up\n");
When attempting to use GPIO via the sm501 unit on the TQM5200 board, GPIO operations would only function if during the same boot u-boot's "fkt led" command had initialized the sm501. Comparing the sm501's registers with and without running the "fkt led" command turned up one significant difference: u-boot had enabled the GPIO power gate. Changing the Linux sm501 driver to enable the GPIO power gate allows GPIO to work without first initializing it with u-boot. Signed-off-by: Josh Triplett <josh@joshtriplett.org> --- drivers/mfd/sm501.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)