diff mbox

[1/1] ARM: OMAP3: igep0020: set GPIO mode for mux mcspi1_cs2 pin

Message ID 1341885452-5372-1-git-send-email-javier@dowhile0.org (mailing list archive)
State New, archived
Headers show

Commit Message

Javier Martinez Canillas July 10, 2012, 1:57 a.m. UTC
According to the IGEPv2 Rev.C data-sheet the LAN9221i pin 14 (IRQ) is
connected to the OMAP3730 mcspi1_cs2 pin. Since this omap mux pin acts
as an IRQ line, it has to be configured as an input GPIO.

IGEPv2 platform code sets the smsc911x_cfg->gpio_irq to GPIO 176 but
since the mux pin default mode is MODE7 (safe_mode) the driver fails
when trying to register the IRQ with the following error message:

[    1.994598] smsc911x: Driver version 2008-10-21
[    3.704162] irq 272: nobody cared (try booting with the "irqpoll" option)
[    3.711364] [<c001a114>] (unwind_backtrace+0x0/0xf0) from [<c009a0d4>] (__report_bad_irq+0x20/0xbc)
[    3.720916] [<c009a0d4>] (__report_bad_irq+0x20/0xbc) from [<c009a41c>] (note_interrupt+0x1d8/0x238)
[    3.730560] [<c009a41c>] (note_interrupt+0x1d8/0x238) from [<c0098234>] (handle_irq_event_percpu+0xc0/0x260)
[    3.740936] [<c0098234>] (handle_irq_event_percpu+0xc0/0x260) from [<c0098410>] (handle_irq_event+0x3c/0x5c)
[    3.751312] [<c0098410>] (handle_irq_event+0x3c/0x5c) from [<c009abe0>] (handle_level_irq+0xac/0x10c)
[    3.761047] [<c009abe0>] (handle_level_irq+0xac/0x10c) from [<c0097a34>] (generic_handle_irq+0x30/0x48)
[    3.770935] [<c0097a34>] (generic_handle_irq+0x30/0x48) from [<c02a6b74>] (gpio_irq_handler+0x180/0x1d4)
[    3.780944] [<c02a6b74>] (gpio_irq_handler+0x180/0x1d4) from [<c0097a34>] (generic_handle_irq+0x30/0x48)
[    3.790954] [<c0097a34>] (generic_handle_irq+0x30/0x48) from [<c0013e18>] (handle_IRQ+0x4c/0xac)
[    3.800231] [<c0013e18>] (handle_IRQ+0x4c/0xac) from [<c000858c>] (omap3_intc_handle_irq+0x60/0x74)
[    3.809783] [<c000858c>] (omap3_intc_handle_irq+0x60/0x74) from [<c04979e4>] (__irq_svc+0x44/0x60)
[    3.819213] Exception stack(0xee42fde0 to 0xee42fe28)
[    3.824554] fde0: 00000001 00000001 00000000 00000000 60000013 c06cce14 c06cce14 00000110
[    3.833190] fe00: 00000000 c06ccdf4 60000013 ee41d000 fb058064 ee42fe28 c0089e08 c04976b4
[    3.841796] fe20: 20000013 ffffffff
[    3.845489] [<c04979e4>] (__irq_svc+0x44/0x60) from [<c04976b4>] (_raw_spin_unlock_irqrestore+0x34/0x44)
[    3.855499] [<c04976b4>] (_raw_spin_unlock_irqrestore+0x34/0x44) from [<c0099744>] (__setup_irq+0x1b8/0x3f0)
[    3.865875] [<c0099744>] (__setup_irq+0x1b8/0x3f0) from [<c0099a34>] (request_threaded_irq+0xb8/0x140)
[    3.875701] [<c0099a34>] (request_threaded_irq+0xb8/0x140) from [<c0487950>] (smsc911x_drv_probe+0x75c/0x11a4)
[    3.886260] [<c0487950>] (smsc911x_drv_probe+0x75c/0x11a4) from [<c02e9bcc>] (platform_drv_probe+0x18/0x1c)
[    3.906707] [<c02e89b8>] (driver_probe_device+0x90/0x210) from [<c02e8bcc>] (__driver_attach+0x94/0x98)
[    3.916625] [<c02e8bcc>] (__driver_attach+0x94/0x98) from [<c02e7298>] (bus_for_each_dev+0x50/0x7c)
[    3.926177] [<c02e7298>] (bus_for_each_dev+0x50/0x7c) from [<c02e81d4>] (bus_add_driver+0x184/0x248)
[    3.935821] [<c02e81d4>] (bus_add_driver+0x184/0x248) from [<c02e909c>] (driver_register+0x78/0x12c)
[    3.945465] [<c02e909c>] (driver_register+0x78/0x12c) from [<c0008648>] (do_one_initcall+0x34/0x178)
[    3.955108] [<c0008648>] (do_one_initcall+0x34/0x178) from [<c066e8f4>] (kernel_init+0xfc/0x1c0)
[    3.964385] [<c066e8f4>] (kernel_init+0xfc/0x1c0) from [<c00140b0>] (kernel_thread_exit+0x0/0x8)
[    3.973632] handlers:
[    3.976043] [<c034e2cc>] smsc911x_irqhandler
[    3.980560] Disabling IRQ #272

Signed-off-by: Javier Martinez Canillas <javier@dowhile0.org>
---
 arch/arm/mach-omap2/board-igep0020.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

Comments

Enric Balletbo Serra July 10, 2012, 7:24 a.m. UTC | #1
2012/7/10 Javier Martinez Canillas <javier@dowhile0.org>

> According to the IGEPv2 Rev.C data-sheet the LAN9221i pin 14 (IRQ) is
> connected to the OMAP3730 mcspi1_cs2 pin. Since this omap mux pin acts
> as an IRQ line, it has to be configured as an input GPIO.
>
> IGEPv2 platform code sets the smsc911x_cfg->gpio_irq to GPIO 176 but
> since the mux pin default mode is MODE7 (safe_mode) the driver fails
> when trying to register the IRQ with the following error message:
>
> [    1.994598] smsc911x: Driver version 2008-10-21
> [    3.704162] irq 272: nobody cared (try booting with the "irqpoll"
> option)
> [    3.711364] [<c001a114>] (unwind_backtrace+0x0/0xf0) from [<c009a0d4>]
> (__report_bad_irq+0x20/0xbc)
> [    3.720916] [<c009a0d4>] (__report_bad_irq+0x20/0xbc) from [<c009a41c>]
> (note_interrupt+0x1d8/0x238)
> [    3.730560] [<c009a41c>] (note_interrupt+0x1d8/0x238) from [<c0098234>]
> (handle_irq_event_percpu+0xc0/0x260)
> [    3.740936] [<c0098234>] (handle_irq_event_percpu+0xc0/0x260) from
> [<c0098410>] (handle_irq_event+0x3c/0x5c)
> [    3.751312] [<c0098410>] (handle_irq_event+0x3c/0x5c) from [<c009abe0>]
> (handle_level_irq+0xac/0x10c)
> [    3.761047] [<c009abe0>] (handle_level_irq+0xac/0x10c) from
> [<c0097a34>] (generic_handle_irq+0x30/0x48)
> [    3.770935] [<c0097a34>] (generic_handle_irq+0x30/0x48) from
> [<c02a6b74>] (gpio_irq_handler+0x180/0x1d4)
> [    3.780944] [<c02a6b74>] (gpio_irq_handler+0x180/0x1d4) from
> [<c0097a34>] (generic_handle_irq+0x30/0x48)
> [    3.790954] [<c0097a34>] (generic_handle_irq+0x30/0x48) from
> [<c0013e18>] (handle_IRQ+0x4c/0xac)
> [    3.800231] [<c0013e18>] (handle_IRQ+0x4c/0xac) from [<c000858c>]
> (omap3_intc_handle_irq+0x60/0x74)
> [    3.809783] [<c000858c>] (omap3_intc_handle_irq+0x60/0x74) from
> [<c04979e4>] (__irq_svc+0x44/0x60)
> [    3.819213] Exception stack(0xee42fde0 to 0xee42fe28)
> [    3.824554] fde0: 00000001 00000001 00000000 00000000 60000013 c06cce14
> c06cce14 00000110
> [    3.833190] fe00: 00000000 c06ccdf4 60000013 ee41d000 fb058064 ee42fe28
> c0089e08 c04976b4
> [    3.841796] fe20: 20000013 ffffffff
> [    3.845489] [<c04979e4>] (__irq_svc+0x44/0x60) from [<c04976b4>]
> (_raw_spin_unlock_irqrestore+0x34/0x44)
> [    3.855499] [<c04976b4>] (_raw_spin_unlock_irqrestore+0x34/0x44) from
> [<c0099744>] (__setup_irq+0x1b8/0x3f0)
> [    3.865875] [<c0099744>] (__setup_irq+0x1b8/0x3f0) from [<c0099a34>]
> (request_threaded_irq+0xb8/0x140)
> [    3.875701] [<c0099a34>] (request_threaded_irq+0xb8/0x140) from
> [<c0487950>] (smsc911x_drv_probe+0x75c/0x11a4)
> [    3.886260] [<c0487950>] (smsc911x_drv_probe+0x75c/0x11a4) from
> [<c02e9bcc>] (platform_drv_probe+0x18/0x1c)
> [    3.906707] [<c02e89b8>] (driver_probe_device+0x90/0x210) from
> [<c02e8bcc>] (__driver_attach+0x94/0x98)
> [    3.916625] [<c02e8bcc>] (__driver_attach+0x94/0x98) from [<c02e7298>]
> (bus_for_each_dev+0x50/0x7c)
> [    3.926177] [<c02e7298>] (bus_for_each_dev+0x50/0x7c) from [<c02e81d4>]
> (bus_add_driver+0x184/0x248)
> [    3.935821] [<c02e81d4>] (bus_add_driver+0x184/0x248) from [<c02e909c>]
> (driver_register+0x78/0x12c)
> [    3.945465] [<c02e909c>] (driver_register+0x78/0x12c) from [<c0008648>]
> (do_one_initcall+0x34/0x178)
> [    3.955108] [<c0008648>] (do_one_initcall+0x34/0x178) from [<c066e8f4>]
> (kernel_init+0xfc/0x1c0)
> [    3.964385] [<c066e8f4>] (kernel_init+0xfc/0x1c0) from [<c00140b0>]
> (kernel_thread_exit+0x0/0x8)
> [    3.973632] handlers:
> [    3.976043] [<c034e2cc>] smsc911x_irqhandler
> [    3.980560] Disabling IRQ #272
>
> Signed-off-by: Javier Martinez Canillas <javier@dowhile0.org>
> ---
>  arch/arm/mach-omap2/board-igep0020.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-igep0020.c
> b/arch/arm/mach-omap2/board-igep0020.c
> index 7491529..2821448 100644
> --- a/arch/arm/mach-omap2/board-igep0020.c
> +++ b/arch/arm/mach-omap2/board-igep0020.c
> @@ -554,6 +554,8 @@ static const struct usbhs_omap_board_data
> igep3_usbhs_bdata __initconst = {
>
>  #ifdef CONFIG_OMAP_MUX
>  static struct omap_board_mux board_mux[] __initdata = {
> +       /* SMSC9221 LAN Controller ETH IRQ (GPIO_176) */
> +       OMAP3_MUX(MCSPI1_CS2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
>         { .reg_offset = OMAP_MUX_TERMINATOR },
>  };
>  #endif
> --
> 1.7.7.6
>
>
Acked-by: Enric Balletbo i Serra <eballetbo@gmail.com>
Tested-by: Enric Balletbo i Serra <eballetbo@gmail.com>

Thanks Javier,
Javier Martinez Canillas July 17, 2012, 7:11 a.m. UTC | #2
On Tue, Jul 10, 2012 at 9:24 AM, Enric Balletbò i Serra
<eballetbo@gmail.com> wrote:
>
>
> 2012/7/10 Javier Martinez Canillas <javier@dowhile0.org>
>>
>> According to the IGEPv2 Rev.C data-sheet the LAN9221i pin 14 (IRQ) is
>> connected to the OMAP3730 mcspi1_cs2 pin. Since this omap mux pin acts
>> as an IRQ line, it has to be configured as an input GPIO.
>>
>> IGEPv2 platform code sets the smsc911x_cfg->gpio_irq to GPIO 176 but
>> since the mux pin default mode is MODE7 (safe_mode) the driver fails
>> when trying to register the IRQ with the following error message:
>>
>> [    1.994598] smsc911x: Driver version 2008-10-21
>> [    3.704162] irq 272: nobody cared (try booting with the "irqpoll"
>> option)
>> [    3.711364] [<c001a114>] (unwind_backtrace+0x0/0xf0) from [<c009a0d4>]
>> (__report_bad_irq+0x20/0xbc)
>> [    3.720916] [<c009a0d4>] (__report_bad_irq+0x20/0xbc) from [<c009a41c>]
>> (note_interrupt+0x1d8/0x238)
>> [    3.730560] [<c009a41c>] (note_interrupt+0x1d8/0x238) from [<c0098234>]
>> (handle_irq_event_percpu+0xc0/0x260)
>> [    3.740936] [<c0098234>] (handle_irq_event_percpu+0xc0/0x260) from
>> [<c0098410>] (handle_irq_event+0x3c/0x5c)
>> [    3.751312] [<c0098410>] (handle_irq_event+0x3c/0x5c) from [<c009abe0>]
>> (handle_level_irq+0xac/0x10c)
>> [    3.761047] [<c009abe0>] (handle_level_irq+0xac/0x10c) from
>> [<c0097a34>] (generic_handle_irq+0x30/0x48)
>> [    3.770935] [<c0097a34>] (generic_handle_irq+0x30/0x48) from
>> [<c02a6b74>] (gpio_irq_handler+0x180/0x1d4)
>> [    3.780944] [<c02a6b74>] (gpio_irq_handler+0x180/0x1d4) from
>> [<c0097a34>] (generic_handle_irq+0x30/0x48)
>> [    3.790954] [<c0097a34>] (generic_handle_irq+0x30/0x48) from
>> [<c0013e18>] (handle_IRQ+0x4c/0xac)
>> [    3.800231] [<c0013e18>] (handle_IRQ+0x4c/0xac) from [<c000858c>]
>> (omap3_intc_handle_irq+0x60/0x74)
>> [    3.809783] [<c000858c>] (omap3_intc_handle_irq+0x60/0x74) from
>> [<c04979e4>] (__irq_svc+0x44/0x60)
>> [    3.819213] Exception stack(0xee42fde0 to 0xee42fe28)
>> [    3.824554] fde0: 00000001 00000001 00000000 00000000 60000013 c06cce14
>> c06cce14 00000110
>> [    3.833190] fe00: 00000000 c06ccdf4 60000013 ee41d000 fb058064 ee42fe28
>> c0089e08 c04976b4
>> [    3.841796] fe20: 20000013 ffffffff
>> [    3.845489] [<c04979e4>] (__irq_svc+0x44/0x60) from [<c04976b4>]
>> (_raw_spin_unlock_irqrestore+0x34/0x44)
>> [    3.855499] [<c04976b4>] (_raw_spin_unlock_irqrestore+0x34/0x44) from
>> [<c0099744>] (__setup_irq+0x1b8/0x3f0)
>> [    3.865875] [<c0099744>] (__setup_irq+0x1b8/0x3f0) from [<c0099a34>]
>> (request_threaded_irq+0xb8/0x140)
>> [    3.875701] [<c0099a34>] (request_threaded_irq+0xb8/0x140) from
>> [<c0487950>] (smsc911x_drv_probe+0x75c/0x11a4)
>> [    3.886260] [<c0487950>] (smsc911x_drv_probe+0x75c/0x11a4) from
>> [<c02e9bcc>] (platform_drv_probe+0x18/0x1c)
>> [    3.906707] [<c02e89b8>] (driver_probe_device+0x90/0x210) from
>> [<c02e8bcc>] (__driver_attach+0x94/0x98)
>> [    3.916625] [<c02e8bcc>] (__driver_attach+0x94/0x98) from [<c02e7298>]
>> (bus_for_each_dev+0x50/0x7c)
>> [    3.926177] [<c02e7298>] (bus_for_each_dev+0x50/0x7c) from [<c02e81d4>]
>> (bus_add_driver+0x184/0x248)
>> [    3.935821] [<c02e81d4>] (bus_add_driver+0x184/0x248) from [<c02e909c>]
>> (driver_register+0x78/0x12c)
>> [    3.945465] [<c02e909c>] (driver_register+0x78/0x12c) from [<c0008648>]
>> (do_one_initcall+0x34/0x178)
>> [    3.955108] [<c0008648>] (do_one_initcall+0x34/0x178) from [<c066e8f4>]
>> (kernel_init+0xfc/0x1c0)
>> [    3.964385] [<c066e8f4>] (kernel_init+0xfc/0x1c0) from [<c00140b0>]
>> (kernel_thread_exit+0x0/0x8)
>> [    3.973632] handlers:
>> [    3.976043] [<c034e2cc>] smsc911x_irqhandler
>> [    3.980560] Disabling IRQ #272
>>
>> Signed-off-by: Javier Martinez Canillas <javier@dowhile0.org>
>> ---
>>  arch/arm/mach-omap2/board-igep0020.c |    2 ++
>>  1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/board-igep0020.c
>> b/arch/arm/mach-omap2/board-igep0020.c
>> index 7491529..2821448 100644
>> --- a/arch/arm/mach-omap2/board-igep0020.c
>> +++ b/arch/arm/mach-omap2/board-igep0020.c
>> @@ -554,6 +554,8 @@ static const struct usbhs_omap_board_data
>> igep3_usbhs_bdata __initconst = {
>>
>>  #ifdef CONFIG_OMAP_MUX
>>  static struct omap_board_mux board_mux[] __initdata = {
>> +       /* SMSC9221 LAN Controller ETH IRQ (GPIO_176) */
>> +       OMAP3_MUX(MCSPI1_CS2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
>>         { .reg_offset = OMAP_MUX_TERMINATOR },
>>  };
>>  #endif
>> --
>> 1.7.7.6
>>
>
> Acked-by: Enric Balletbo i Serra <eballetbo@gmail.com>
> Tested-by: Enric Balletbo i Serra <eballetbo@gmail.com>
>
> Thanks Javier,

Hi Tony,

Just pinging to see if you have further comments on this patch or if
it can be applied. It solves a bug on IGEPv2 boards.

I know the trend is to move away from board code. I'll start working
on an device tree for the IGEPv2 but it will take some time until is
ready (and I'm not sure if all the OMAP3 support is already present on
DT).

So could you please take bug fixes for the board code in the meantime?

Thanks a lot and best regards,
Javier
Tony Lindgren July 18, 2012, 7:20 a.m. UTC | #3
* Javier Martinez Canillas <javier@dowhile0.org> [120717 00:16]:
> 
> Hi Tony,
> 
> Just pinging to see if you have further comments on this patch or if
> it can be applied. It solves a bug on IGEPv2 boards.
> 
> I know the trend is to move away from board code. I'll start working
> on an device tree for the IGEPv2 but it will take some time until is
> ready (and I'm not sure if all the OMAP3 support is already present on
> DT).
> 
> So could you please take bug fixes for the board code in the meantime?

Yes seems like something for the v3.6-rc series.

Regards,

Tony
Javier Martinez Canillas Aug. 3, 2012, 8:06 a.m. UTC | #4
On Wed, Jul 18, 2012 at 9:20 AM, Tony Lindgren <tony@atomide.com> wrote:
> * Javier Martinez Canillas <javier@dowhile0.org> [120717 00:16]:
>>
>> Hi Tony,
>>
>> Just pinging to see if you have further comments on this patch or if
>> it can be applied. It solves a bug on IGEPv2 boards.
>>
>> I know the trend is to move away from board code. I'll start working
>> on an device tree for the IGEPv2 but it will take some time until is
>> ready (and I'm not sure if all the OMAP3 support is already present on
>> DT).
>>
>> So could you please take bug fixes for the board code in the meantime?
>
> Yes seems like something for the v3.6-rc series.
>
> Regards,
>
> Tony

Hi Tony,

I saw that Linus 3.6-rc1 has already been released and I didn't see
this patch on it.

So, this is a kindly reminder so you don't miss this patch :-)

Thanks a lot and best regards,
Javier
Tony Lindgren Aug. 7, 2012, 7:04 a.m. UTC | #5
* Javier Martinez Canillas <javier@dowhile0.org> [120803 01:06]:
> 
> I saw that Linus 3.6-rc1 has already been released and I didn't see
> this patch on it.

Yes I wanted to wait for -rc1 to avoid complicating things during
the merge window.
 
> So, this is a kindly reminder so you don't miss this patch :-)

Applying into fixes, thanks for the patience.

Tony
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index 7491529..2821448 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -554,6 +554,8 @@  static const struct usbhs_omap_board_data igep3_usbhs_bdata __initconst = {
 
 #ifdef CONFIG_OMAP_MUX
 static struct omap_board_mux board_mux[] __initdata = {
+	/* SMSC9221 LAN Controller ETH IRQ (GPIO_176) */
+	OMAP3_MUX(MCSPI1_CS2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
 	{ .reg_offset = OMAP_MUX_TERMINATOR },
 };
 #endif