Commit 21f8e721 authored by David Brownell's avatar David Brownell Committed by Tony Lindgren

twl4030 MMC card detction

Replace stubbed-out card-detect support for twl4030 GPIOs with
a simpler platform_data mechanism.  As before, no current users.
Sanity tested by enabling this on Beagle; it booted OK with
root on MMC.
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent c0e855ff
...@@ -46,8 +46,6 @@ ...@@ -46,8 +46,6 @@
* intended to support multiple hosts. * intended to support multiple hosts.
* *
* There are also two LED pins used sometimes as output-only GPIOs. * There are also two LED pins used sometimes as output-only GPIOs.
*
* FIXME code currently only handles the first IRQ line.
*/ */
...@@ -235,41 +233,6 @@ int twl4030_set_gpio_debounce(int gpio, int enable) ...@@ -235,41 +233,6 @@ int twl4030_set_gpio_debounce(int gpio, int enable)
} }
EXPORT_SYMBOL(twl4030_set_gpio_debounce); EXPORT_SYMBOL(twl4030_set_gpio_debounce);
#if 0
/*
* Configure Card detect for GPIO pin on TWL4030
*
* This means: VMMC1 or VMMC2 is enabled or disabled based
* on the status of GPIO-0 or GPIO-1 pins (respectively).
*/
int twl4030_set_gpio_card_detect(int gpio, int enable)
{
u8 reg = 0;
u8 msk = (1 << gpio);
int ret = 0;
/* Only GPIO 0 or 1 can be used for CD feature.. */
if (unlikely((gpio >= TWL4030_GPIO_MAX)
|| !(gpio_usage_count & BIT(gpio))
|| (gpio >= TWL4030_GPIO_MAX_CD))) {
return -EPERM;
}
mutex_lock(&gpio_lock);
ret = gpio_twl4030_read(REG_GPIO_CTRL);
if (ret >= 0) {
if (enable)
reg = (u8) (ret | msk);
else
reg = (u8) (ret & ~msk);
ret = gpio_twl4030_write(REG_GPIO_CTRL, reg);
}
mutex_unlock(&gpio_lock);
return ret;
}
#endif
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
static int twl_request(struct gpio_chip *chip, unsigned offset) static int twl_request(struct gpio_chip *chip, unsigned offset)
...@@ -317,9 +280,18 @@ static int twl_request(struct gpio_chip *chip, unsigned offset) ...@@ -317,9 +280,18 @@ static int twl_request(struct gpio_chip *chip, unsigned offset)
} }
/* on first use, turn GPIO module "on" */ /* on first use, turn GPIO module "on" */
if (!gpio_usage_count) if (!gpio_usage_count) {
status = gpio_twl4030_write(REG_GPIO_CTRL, struct twl4030_gpio_platform_data *pdata;
MASK_GPIO_CTRL_GPIO_ON); u8 value = MASK_GPIO_CTRL_GPIO_ON;
/* optionally have the first two GPIOs switch vMMC1
* and vMMC2 power supplies based on card presence.
*/
pdata = chip->dev->platform_data;
value |= pdata->mmc_cd & 0x03;
status = gpio_twl4030_write(REG_GPIO_CTRL, value);
}
if (!status) if (!status)
gpio_usage_count |= (0x1 << offset); gpio_usage_count |= (0x1 << offset);
......
...@@ -231,6 +231,9 @@ struct twl4030_gpio_platform_data { ...@@ -231,6 +231,9 @@ struct twl4030_gpio_platform_data {
/* package the two LED signals as output-only GPIOs? */ /* package the two LED signals as output-only GPIOs? */
bool use_leds; bool use_leds;
/* gpio-n should control VMMC(n+1) if BIT(n) in mmc_cd is set */
u8 mmc_cd;
/* For gpio-N, bit (1 << N) in "pullups" is set if that pullup /* For gpio-N, bit (1 << N) in "pullups" is set if that pullup
* should be enabled. Else, if that bit is set in "pulldowns", * should be enabled. Else, if that bit is set in "pulldowns",
* that pulldown is enabled. Don't waste power by letting any * that pulldown is enabled. Don't waste power by letting any
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment