This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP3 EVM board change in SMSC911x interrupt gpio


In the file board-omap3evm.c

The following lines
#define OMAP3EVM_ETHR_GPIO_IRQ    176
#define OMAP3EVM_SMSC911X_CS    5
I've changed to
#define OMAP3EVM_ETHR_GPIO_IRQ    27
#define OMAP3EVM_SMSC911X_CS    3

because in my board, I'm using gpmc CS 3 & interrupt pin connected to 27 for SMSC911x.

But I'm getting the problem while booting kernel as follows


[    5.705383] calling  smsc911x_init_module+0x0/0xc @ 1
[    5.710784] smsc911x: Driver version 2008-10-21.
[    5.715637] -> Getting Resource size-> got irq resource-> alloted etherdev-> ioremap done-> Calling smsc911x_init
[    5.726287] eth%d: smsc911x_init: Driver Parameters:
[    5.731689] eth%d: smsc911x_init: LAN base: 0xF0884000
[    5.737091] eth%d: smsc911x_init: IRQ: 187
[    5.741363] eth%d: smsc911x_init: PHY will be autodetected.
[    5.747283] eth%d: smsc911x_init: BYTE_TEST: 0x87654321
[    5.752777] eth%d: smsc911x_init: LAN911x identified, idrev: 0x92210000, generation: 4
[    8.233245] irq 187: nobody cared (try booting with the "irqpoll" option)
[    8.240356] [<c004fa88>] (unwind_backtrace+0x0/0xec) from [<c00b6a2c>] (__report_bad_irq+0x30/0x8c)
[    8.249816] [<c00b6a2c>] (__report_bad_irq+0x30/0x8c) from [<c00b6bd4>] (note_interrupt+0x14c/0x1dc)
[    8.259368] [<c00b6bd4>] (note_interrupt+0x14c/0x1dc) from [<c00b7930>] (handle_level_irq+0xe0/0x144)
[    8.269012] [<c00b7930>] (handle_level_irq+0xe0/0x144) from [<c0066f24>] (gpio_irq_handler+0x13c/0x170)
[    8.278839] [<c0066f24>] (gpio_irq_handler+0x13c/0x170) from [<c003f078>] (asm_do_IRQ+0x78/0xa0)
[    8.288055] [<c003f078>] (asm_do_IRQ+0x78/0xa0) from [<c0471ab4>] (__irq_svc+0x34/0x80)
[    8.296417] Exception stack(0xef82be38 to 0xef82be80)
[    8.301696] be20:                                                       c07a2afc 00000301
[    8.310241] be40: ef81a040 00000001 c07a2afc 60000013 00000000 000000bb c07a2afc 60000013
[    8.318786] be60: c07a2ae0 00000088 0000006d ef82be80 c04718e8 c04718ec 60000013 ffffffff
[    8.327331] [<c0471ab4>] (__irq_svc+0x34/0x80) from [<c04718ec>] (_raw_spin_unlock_irqrestore+0x2c/0x34)
[    8.337249] [<c04718ec>] (_raw_spin_unlock_irqrestore+0x2c/0x34) from [<c00b619c>] (__setup_irq+0x24c/0x320)
[    8.347534] [<c00b619c>] (__setup_irq+0x24c/0x320) from [<c00b6388>] (request_threaded_irq+0x118/0x168)
[    8.357360] [<c00b6388>] (request_threaded_irq+0x118/0x168) from [<c0469ba8>] (smsc911x_drv_probe+0x8f0/0xc8c)
[    8.367828] [<c0469ba8>] (smsc911x_drv_probe+0x8f0/0xc8c) from [<c026d8e0>] (platform_drv_probe+0x1c/0x24)
[    8.377929] [<c026d8e0>] (platform_drv_probe+0x1c/0x24) from [<c026c7ac>] (driver_probe_device+0xcc/0x1b4)
[    8.388000] [<c026c7ac>] (driver_probe_device+0xcc/0x1b4) from [<c026c8fc>] (__driver_attach+0x68/0x8c)
[    8.397827] [<c026c8fc>] (__driver_attach+0x68/0x8c) from [<c026bf04>] (bus_for_each_dev+0x4c/0x8c)
[    8.407287] [<c026bf04>] (bus_for_each_dev+0x4c/0x8c) from [<c026b7b8>] (bus_add_driver+0x104/0x290)
[    8.416839] [<c026b7b8>] (bus_add_driver+0x104/0x290) from [<c026cc24>] (driver_register+0xc0/0x150)
[    8.426391] [<c026cc24>] (driver_register+0xc0/0x150) from [<c003f354>] (do_one_initcall+0x54/0x194)
[    8.435943] [<c003f354>] (do_one_initcall+0x54/0x194) from [<c000869c>] (kernel_init+0x98/0x150)
[    8.445159] [<c000869c>] (kernel_init+0x98/0x150) from [<c004accc>] (kernel_thread_exit+0x0/0x8)
[    8.454315] handlers:
[    8.456695] [<c02b1a18>] (smsc911x_irqhandler+0x0/0x5ec)
[    8.462249] Disabling IRQ #187
[    8.467224] eth0: smsc911x_drv_probe: Network interface: "eth0"
[    8.473480] eth0: smsc911x_mii_init: External PHY is not supported, using internal PHY
[    8.483917] smsc911x-mdio: probed
[    8.487426] eth0: smsc911x_mii_probe: PHY 0: addr 1, phy_id 0x0007C0C3
[    8.494598] eth0: attached PHY driver [SMSC LAN8700] (mii_bus:phy_addr=ffffffff:01, irq=-1)
[    8.503570] eth0: smsc911x_phy_check_loopbackpkt: Successfully verified loopback packet
[    8.512054] eth0: smsc911x_mii_probe: Passed Loop Back Test
[    8.517913] eth0: smsc911x_mii_probe: phy initialised successfully
[    8.524444] eth0: smsc911x_drv_probe: MAC Address is set to random_ether_addr
[    8.531921] net eth0: MAC Address: 6e:0d:cf:bd:23:94
[    8.537689] initcall smsc911x_init_module+0x0/0xc returned 0 after 2760738 usecs


Please suggest solution for the problem

  • I've found out that this problem is happening due to spurious interrupt( interrupt coming but not triggered by SMSC controller ).

    Can anyone give me clear suggestion why this may be happening.

    I'm just trying to use gpio 27 as an active low level triggered interrupt.

    While monitoring the pins using a CRO its at high state only.

    Please suggest.

  • Hi,

    When I was trying to use  GPIO 27,

    The mux config  was done for GPIO 27 but, during actual IRQ request,

    I've found that the GPIO was at mode3.

    Hence I there was spurious IRQ & that caused the problem.

    So resolve it, I did mux config for GPIO27 just before request irq & now its fine.