[PATCH 314/314] ARM: fix kernel hang at boot time on zeus board

Jai Vaze vazejai90 at gmail.com
Thu Jun 13 09:40:24 EDT 2013


The gpio irq configuration should be done after pxa-gpio platform
driver is loaded. Moved all gpio irq configuration from init_irq
to init_machine to fix kernel hang at boot time.

Signed-off-by: Jai Vaze <jai.vaze at simantinee.com>
---
 arch/arm/mach-pxa/zeus.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index f5d4364..5af7d50 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -133,8 +133,6 @@ static void __init zeus_init_irq(void)
 	int level;
 	int isa_irq;
 
-	pxa27x_init_irq();
-
 	/* Peripheral IRQs. It would be nice to move those inside driver
 	   configuration, but it is not supported at the moment. */
 	irq_set_irq_type(gpio_to_irq(ZEUS_AC97_GPIO), IRQ_TYPE_EDGE_RISING);
@@ -722,7 +720,7 @@ static int zeus_get_pcb_info(struct i2c_client *client, unsigned gpio,
 			continue;
 		}
 
-		pcb_info |= !!gpio_get_value(pcb_bit) << i;
+		pcb_info |= !!gpio_get_value_cansleep(pcb_bit) << i;
 
 		gpio_free(pcb_bit);
 	}
@@ -841,6 +839,8 @@ static void __init zeus_init(void)
 
 	pxa2xx_mfp_config(ARRAY_AND_SIZE(zeus_pin_config));
 
+	zeus_init_irq();
+
 	platform_add_devices(zeus_devices, ARRAY_SIZE(zeus_devices));
 
 	pxa_set_ohci_info(&zeus_ohci_platform_data);
@@ -908,7 +908,7 @@ MACHINE_START(ARCOM_ZEUS, "Arcom/Eurotech ZEUS")
 	.atag_offset	= 0x100,
 	.map_io		= zeus_map_io,
 	.nr_irqs	= ZEUS_NR_IRQS,
-	.init_irq	= zeus_init_irq,
+	.init_irq	= pxa27x_init_irq,
 	.handle_irq	= pxa27x_handle_irq,
 	.init_time	= pxa_timer_init,
 	.init_machine	= zeus_init,
-- 
1.7.0.4




More information about the linux-arm-kernel mailing list