aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci/board-da830-evm.c
diff options
context:
space:
mode:
authorVipin Bhandari <vipin.bhandari@ti.com>2010-03-10 03:33:01 -0500
committerKevin Hilman <khilman@deeprootsystems.com>2010-05-06 18:02:02 -0400
commit8ccfd3f074f75135971905d2413811729e19580e (patch)
tree1c3cadae321c50cedde31835c69f796d0b92587f /arch/arm/mach-davinci/board-da830-evm.c
parent21ce873d211a42e315558d6ae09a8bb04508a592 (diff)
davinci: da830/omap-l137 evm: add support for GPIO based MMC/SD card detection
The DA830/OMAP-L137 EVM has GPIO based card detection logic, but the current code does not use it. Add support for GPIO based card detection to avoid reading the card to see if a card is present or not. Signed-off-by: Vipin Bhandari <vipin.bhandari@ti.com> Signed-off-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci/board-da830-evm.c')
-rw-r--r--arch/arm/mach-davinci/board-da830-evm.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index dc19870b23cd..8e670372d7fe 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -229,14 +229,21 @@ static const short da830_evm_mmc_sd_pins[] = {
229}; 229};
230 230
231#define DA830_MMCSD_WP_PIN GPIO_TO_PIN(2, 1) 231#define DA830_MMCSD_WP_PIN GPIO_TO_PIN(2, 1)
232#define DA830_MMCSD_CD_PIN GPIO_TO_PIN(2, 2)
232 233
233static int da830_evm_mmc_get_ro(int index) 234static int da830_evm_mmc_get_ro(int index)
234{ 235{
235 return gpio_get_value(DA830_MMCSD_WP_PIN); 236 return gpio_get_value(DA830_MMCSD_WP_PIN);
236} 237}
237 238
239static int da830_evm_mmc_get_cd(int index)
240{
241 return !gpio_get_value(DA830_MMCSD_CD_PIN);
242}
243
238static struct davinci_mmc_config da830_evm_mmc_config = { 244static struct davinci_mmc_config da830_evm_mmc_config = {
239 .get_ro = da830_evm_mmc_get_ro, 245 .get_ro = da830_evm_mmc_get_ro,
246 .get_cd = da830_evm_mmc_get_cd,
240 .wires = 4, 247 .wires = 4,
241 .max_freq = 50000000, 248 .max_freq = 50000000,
242 .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, 249 .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
@@ -262,6 +269,14 @@ static inline void da830_evm_init_mmc(void)
262 } 269 }
263 gpio_direction_input(DA830_MMCSD_WP_PIN); 270 gpio_direction_input(DA830_MMCSD_WP_PIN);
264 271
272 ret = gpio_request(DA830_MMCSD_CD_PIN, "MMC CD\n");
273 if (ret) {
274 pr_warning("da830_evm_init: can not open GPIO %d\n",
275 DA830_MMCSD_CD_PIN);
276 return;
277 }
278 gpio_direction_input(DA830_MMCSD_CD_PIN);
279
265 ret = da8xx_register_mmcsd0(&da830_evm_mmc_config); 280 ret = da8xx_register_mmcsd0(&da830_evm_mmc_config);
266 if (ret) { 281 if (ret) {
267 pr_warning("da830_evm_init: mmc/sd registration failed: %d\n", 282 pr_warning("da830_evm_init: mmc/sd registration failed: %d\n",