Commit ace01d99 authored by Adrian Hunter's avatar Adrian Hunter Committed by Tony Lindgren

OMAP: mmc-twl4030 add cover switch

Allow a cover switch to be used to cause a rescan of the
MMC slot.
Signed-off-by: default avatarAdrian Hunter <adrian.hunter@nokia.com>
Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 9ed67881
...@@ -100,6 +100,14 @@ static int twl_mmc_get_ro(struct device *dev, int slot) ...@@ -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); 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. * MMC Slot Initialization.
*/ */
...@@ -409,6 +417,9 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers) ...@@ -409,6 +417,9 @@ void __init twl4030_mmc_init(struct twl4030_hsmmc_info *controllers)
mmc->slots[0].switch_pin = c->gpio_cd; mmc->slots[0].switch_pin = c->gpio_cd;
mmc->slots[0].card_detect_irq = gpio_to_irq(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; mmc->slots[0].card_detect = twl_mmc_card_detect;
} else } else
mmc->slots[0].switch_pin = -EINVAL; mmc->slots[0].switch_pin = -EINVAL;
......
...@@ -11,6 +11,7 @@ struct twl4030_hsmmc_info { ...@@ -11,6 +11,7 @@ struct twl4030_hsmmc_info {
u8 wires; /* 1/4/8 wires */ u8 wires; /* 1/4/8 wires */
bool transceiver; /* MMC-2 option */ bool transceiver; /* MMC-2 option */
bool ext_clock; /* use external pin for input clock */ 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_cd; /* or -EINVAL */
int gpio_wp; /* or -EINVAL */ int gpio_wp; /* or -EINVAL */
struct device *dev; /* returned: pointer to mmc adapter */ struct device *dev; /* returned: pointer to mmc adapter */
......
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