aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile/board-ag5evm.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-shmobile/board-ag5evm.c')
-rw-r--r--arch/arm/mach-shmobile/board-ag5evm.c36
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 */
343static 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
342static struct sh_mobile_sdhi_info sdhi0_info = { 354static 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
469void __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
480static void __init ag5evm_init(void) 479static 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
602MACHINE_START(AG5EVM, "ag5evm") 608MACHINE_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,