ARM: OMAP3: mmc-twl4030 add cover switch
Allow a cover switch to be used to cause a rescan of the MMC slot. Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com> Acked-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
034ae7b417
commit
8d75e98b58
|
@ -100,6 +100,14 @@ static int twl_mmc_get_ro(struct device *dev, int slot)
|
|||
return gpio_get_value_cansleep(mmc->slots[0].gpio_wp);
|
||||
}
|
||||
|
||||
static int twl_mmc_get_cover_state(struct device *dev, int slot)
|
||||
{
|
||||
struct omap_mmc_platform_data *mmc = dev->platform_data;
|
||||
|
||||
/* NOTE: assumes card detect signal is active-low */
|
||||
return !gpio_get_value_cansleep(mmc->slots[0].switch_pin);
|
||||
}
|
||||
|
||||
/*
|
||||
* MMC Slot Initialization.
|
||||
*/
|
||||
|
@ -411,6 +419,9 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)
|
|||
|
||||
mmc->slots[0].switch_pin = c->gpio_cd;
|
||||
mmc->slots[0].card_detect_irq = gpio_to_irq(c->gpio_cd);
|
||||
if (c->cover_only)
|
||||
mmc->slots[0].get_cover_state = twl_mmc_get_cover_state;
|
||||
else
|
||||
mmc->slots[0].card_detect = twl_mmc_card_detect;
|
||||
} else
|
||||
mmc->slots[0].switch_pin = -EINVAL;
|
||||
|
|
|
@ -11,6 +11,7 @@ struct twl4030_hsmmc_info {
|
|||
u8 wires; /* 1/4/8 wires */
|
||||
bool transceiver; /* MMC-2 option */
|
||||
bool ext_clock; /* use external pin for input clock */
|
||||
bool cover_only; /* No card detect - just cover switch */
|
||||
int gpio_cd; /* or -EINVAL */
|
||||
int gpio_wp; /* or -EINVAL */
|
||||
struct device *dev; /* returned: pointer to mmc adapter */
|
||||
|
|
Loading…
Reference in New Issue