diff options
Diffstat (limited to 'arch/arm/mach-shmobile/board-ag5evm.c')
-rw-r--r-- | arch/arm/mach-shmobile/board-ag5evm.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index 475342bcc95c..83624e26b884 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
@@ -59,7 +59,7 @@ static struct resource smsc9220_resources[] = { | |||
59 | .flags = IORESOURCE_MEM, | 59 | .flags = IORESOURCE_MEM, |
60 | }, | 60 | }, |
61 | [1] = { | 61 | [1] = { |
62 | .start = gic_spi(33), /* PINT1 */ | 62 | .start = SH73A0_PINT0_IRQ(2), /* PINTA2 */ |
63 | .flags = IORESOURCE_IRQ, | 63 | .flags = IORESOURCE_IRQ, |
64 | }, | 64 | }, |
65 | }; | 65 | }; |
@@ -339,6 +339,18 @@ static struct platform_device mipidsi0_device = { | |||
339 | }, | 339 | }, |
340 | }; | 340 | }; |
341 | 341 | ||
342 | /* SDHI0 */ | ||
343 | static irqreturn_t ag5evm_sdhi0_gpio_cd(int irq, void *arg) | ||
344 | { | ||
345 | struct device *dev = arg; | ||
346 | struct sh_mobile_sdhi_info *info = dev->platform_data; | ||
347 | struct tmio_mmc_data *pdata = info->pdata; | ||
348 | |||
349 | tmio_mmc_cd_wakeup(pdata); | ||
350 | |||
351 | return IRQ_HANDLED; | ||
352 | } | ||
353 | |||
342 | static struct sh_mobile_sdhi_info sdhi0_info = { | 354 | static struct sh_mobile_sdhi_info sdhi0_info = { |
343 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 355 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
344 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 356 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
@@ -462,19 +474,6 @@ static void __init ag5evm_map_io(void) | |||
462 | shmobile_setup_console(); | 474 | shmobile_setup_console(); |
463 | } | 475 | } |
464 | 476 | ||
465 | #define PINTC_ADDR 0xe6900000 | ||
466 | #define PINTER0A (PINTC_ADDR + 0xa0) | ||
467 | #define PINTCR0A (PINTC_ADDR + 0xb0) | ||
468 | |||
469 | void __init ag5evm_init_irq(void) | ||
470 | { | ||
471 | sh73a0_init_irq(); | ||
472 | |||
473 | /* setup PINT: enable PINTA2 as active low */ | ||
474 | __raw_writel(__raw_readl(PINTER0A) | (1<<29), PINTER0A); | ||
475 | __raw_writew(__raw_readw(PINTCR0A) | (2<<10), PINTCR0A); | ||
476 | } | ||
477 | |||
478 | #define DSI0PHYCR 0xe615006c | 477 | #define DSI0PHYCR 0xe615006c |
479 | 478 | ||
480 | static void __init ag5evm_init(void) | 479 | static void __init ag5evm_init(void) |
@@ -570,6 +569,13 @@ static void __init ag5evm_init(void) | |||
570 | gpio_request(GPIO_FN_SDHID0_1, NULL); | 569 | gpio_request(GPIO_FN_SDHID0_1, NULL); |
571 | gpio_request(GPIO_FN_SDHID0_0, NULL); | 570 | gpio_request(GPIO_FN_SDHID0_0, NULL); |
572 | 571 | ||
572 | if (!request_irq(intcs_evt2irq(0x3c0), ag5evm_sdhi0_gpio_cd, | ||
573 | IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, | ||
574 | "sdhi0 cd", &sdhi0_device.dev)) | ||
575 | sdhi0_info.tmio_flags |= TMIO_MMC_HAS_COLD_CD; | ||
576 | else | ||
577 | pr_warn("Unable to setup SDHI0 GPIO IRQ\n"); | ||
578 | |||
573 | /* enable SDHI1 on CN4 [WLAN I/F] */ | 579 | /* enable SDHI1 on CN4 [WLAN I/F] */ |
574 | gpio_request(GPIO_FN_SDHICLK1, NULL); | 580 | gpio_request(GPIO_FN_SDHICLK1, NULL); |
575 | gpio_request(GPIO_FN_SDHICMD1_PU, NULL); | 581 | gpio_request(GPIO_FN_SDHICMD1_PU, NULL); |
@@ -601,7 +607,7 @@ struct sys_timer ag5evm_timer = { | |||
601 | 607 | ||
602 | MACHINE_START(AG5EVM, "ag5evm") | 608 | MACHINE_START(AG5EVM, "ag5evm") |
603 | .map_io = ag5evm_map_io, | 609 | .map_io = ag5evm_map_io, |
604 | .init_irq = ag5evm_init_irq, | 610 | .init_irq = sh73a0_init_irq, |
605 | .handle_irq = shmobile_handle_irq_gic, | 611 | .handle_irq = shmobile_handle_irq_gic, |
606 | .init_machine = ag5evm_init, | 612 | .init_machine = ag5evm_init, |
607 | .timer = &ag5evm_timer, | 613 | .timer = &ag5evm_timer, |