diff options
-rw-r--r-- | arch/arm/mach-davinci/board-da830-evm.c | 15 |
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 | ||
233 | static int da830_evm_mmc_get_ro(int index) | 234 | static 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 | ||
239 | static int da830_evm_mmc_get_cd(int index) | ||
240 | { | ||
241 | return !gpio_get_value(DA830_MMCSD_CD_PIN); | ||
242 | } | ||
243 | |||
238 | static struct davinci_mmc_config da830_evm_mmc_config = { | 244 | static 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", |