aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile/board-ap4evb.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 18:54:04 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 18:54:04 -0400
commitb779b332d0e1ef68f40867948ae5526a3e925163 (patch)
treed2fc8bb455d696fbdb288055ce0a4f0cfcee31fd /arch/arm/mach-shmobile/board-ap4evb.c
parenta0cadc2777a71b1fde62e6417284b38e52128e88 (diff)
parent0f48285755991b73c14b6eeeee464590f490ac25 (diff)
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (73 commits) power: Revert "power_supply: Mark twl4030_charger as broken" mfd: Fix a memory leak when unload mc13xxx-core module mfd: Fix resource reclaim for max8998 mfd: Remove unneeded ret value checking for max8998 register updates mfd: Add free max8998->ono irq in max8998_irq_exit() mfd: Fix resource reclaim in pcf50633_remove() omap4: pandaboard: fix up mmc card detect logic mfd: Fix ezx_pcap_probe error path mfd: Fix off-by-one value range checking for tps6507x mfd: Remove __devinitdata from tc6393xb_mmc_resources mfd: Add WM831x SPI support mfd: Factor out WM831x I2C I/O from the core driver mfd: Remove DEBUG defines from mc13xxx-core mfd: Fix jz4740_adc_set_enabled mfd: Add TPS658621C device ID mfd: Fix twl-irq function declaration warnings regulator: max8998 BUCK1/2 voltage change with use of GPIOs mfd: Voltages and GPIOs platform_data definitions for max8998 regulator: max8998 BUCK1/2 internal voltages and indexes defined mfd: Support for ICs compliant with max8998 ...
Diffstat (limited to 'arch/arm/mach-shmobile/board-ap4evb.c')
-rw-r--r--arch/arm/mach-shmobile/board-ap4evb.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c
index 14923989ea05..22a2b44ddb7b 100644
--- a/arch/arm/mach-shmobile/board-ap4evb.c
+++ b/arch/arm/mach-shmobile/board-ap4evb.c
@@ -235,6 +235,18 @@ static struct platform_device smc911x_device = {
235 }, 235 },
236}; 236};
237 237
238/*
239 * The card detect pin of the top SD/MMC slot (CN7) is active low and is
240 * connected to GPIO A22 of SH7372 (GPIO_PORT41).
241 */
242static int slot_cn7_get_cd(struct platform_device *pdev)
243{
244 if (gpio_is_valid(GPIO_PORT41))
245 return !gpio_get_value(GPIO_PORT41);
246 else
247 return -ENXIO;
248}
249
238/* SH_MMCIF */ 250/* SH_MMCIF */
239static struct resource sh_mmcif_resources[] = { 251static struct resource sh_mmcif_resources[] = {
240 [0] = { 252 [0] = {
@@ -261,6 +273,7 @@ static struct sh_mmcif_plat_data sh_mmcif_plat = {
261 .caps = MMC_CAP_4_BIT_DATA | 273 .caps = MMC_CAP_4_BIT_DATA |
262 MMC_CAP_8_BIT_DATA | 274 MMC_CAP_8_BIT_DATA |
263 MMC_CAP_NEEDS_POLL, 275 MMC_CAP_NEEDS_POLL,
276 .get_cd = slot_cn7_get_cd,
264}; 277};
265 278
266static struct platform_device sh_mmcif_device = { 279static struct platform_device sh_mmcif_device = {
@@ -310,6 +323,8 @@ static struct sh_mobile_sdhi_info sdhi1_info = {
310 .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, 323 .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX,
311 .tmio_ocr_mask = MMC_VDD_165_195, 324 .tmio_ocr_mask = MMC_VDD_165_195,
312 .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE, 325 .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE,
326 .tmio_caps = MMC_CAP_NEEDS_POLL,
327 .get_cd = slot_cn7_get_cd,
313}; 328};
314 329
315static struct resource sdhi1_resources[] = { 330static struct resource sdhi1_resources[] = {
@@ -948,6 +963,10 @@ static void __init ap4evb_init(void)
948 gpio_no_direction(GPIO_PORT9CR); /* FSIAOBT needs no direction */ 963 gpio_no_direction(GPIO_PORT9CR); /* FSIAOBT needs no direction */
949 gpio_no_direction(GPIO_PORT10CR); /* FSIAOLR needs no direction */ 964 gpio_no_direction(GPIO_PORT10CR); /* FSIAOLR needs no direction */
950 965
966 /* card detect pin for MMC slot (CN7) */
967 gpio_request(GPIO_PORT41, NULL);
968 gpio_direction_input(GPIO_PORT41);
969
951 /* set SPU2 clock to 119.6 MHz */ 970 /* set SPU2 clock to 119.6 MHz */
952 clk = clk_get(NULL, "spu_clk"); 971 clk = clk_get(NULL, "spu_clk");
953 if (!IS_ERR(clk)) { 972 if (!IS_ERR(clk)) {