OMAP3EVM:FIX: Reset the smsc911x ethernet controller in board_init
Subsystems (3)
PATCH v2 1/1 OMAP3EVM:FIX: Reset the smsc911x ethernet controller in board_init
With addition of hwmod support to gpio, the ethernet controller goes undetected for OMAP35xEVM. So explicitly assert the reset signal to ethernet controller smsc911x -
- GPIO7 (>=RevG version of EVM's)
- GPIO64 (<=RevD version of EVM's)
This patch is based on intial version from Charulatha V, reference to original discussion -
http://www.mail-archive.com/[email protected]/msg35784.html
---
Since Kevin reported that this patch doesn't get applied cleanly, so I am reposting it again after making sure that it gets applied cleanly.
arch/arm/mach-omap2/board-omap3evm.c | 39 +++++++++++++++++++++++++++++++++- 1 files changed, 38 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/board-omap3evm.c +38 -1
@@ -58,6 +58,13 @@#define OMAP3EVM_ETHR_ID_REV 0x50#define OMAP3EVM_ETHR_GPIO_IRQ 176#define OMAP3EVM_SMSC911X_CS 5 +/* +* Eth Reset signal +* 64 = Generation 1 (<=RevD) +* 7 = Generation 2 (>=RevE) +*/ +#define OMAP3EVM_GEN1_ETHR_GPIO_RST 64 +#define OMAP3EVM_GEN2_ETHR_GPIO_RST 7static u8 omap3_evm_version;
@@ -124,10 +131,15 @@ static struct platform_device omap3evm_smsc911x_device = {static inline void __init omap3evm_init_smsc911x (void ) { -int eth_cs; +int eth_cs, eth_rst;struct clk *l3ck;unsigned int rate; +if (get_omap3_evm_rev () ==OMAP3EVM_BOARD_GEN_1 ) + eth_rst =OMAP3EVM_GEN1_ETHR_GPIO_RST ; +else + eth_rst =OMAP3EVM_GEN2_ETHR_GPIO_RST ; + eth_cs =OMAP3EVM_SMSC911X_CS ; l3ck =clk_get (NULL ,"l3_ck" );
@@ -136,6 +148,27 @@ static inline void __init omap3evm_init_smsc911x(void)else rate =clk_get_rate (l3ck); +/* Configure ethernet controller reset gpio */ +if (cpu_is_omap3430 ()) { +if (gpio_request (eth_rst,"SMSC911x gpio" ) <0 ) { +pr_err (KERN_ERR "Failed to request %d for smsc911x\n" , + eth_rst); +return ; + } + +if (gpio_direction_output (eth_rst,1 ) <0 ) { +pr_err (KERN_ERR "Failed to set direction of %d for" \ +" smsc911x\n" , eth_rst); +return ; + } +/* reset pulse to ethernet controller*/ +usleep_range (150 ,220 ); +gpio_set_value (eth_rst,0 ); +usleep_range (150 ,220 ); +gpio_set_value (eth_rst,1 ); +usleep_range (1 ,2 ); + } +if (gpio_request (OMAP3EVM_ETHR_GPIO_IRQ ,"SMSC911x irq" ) <0 ) {printk (KERN_ERR "Failed to request GPIO%d for smsc911x IRQ\n" ,OMAP3EVM_ETHR_GPIO_IRQ );
@@ -658,6 +691,10 @@ static struct omap_board_mux board_mux[] __initdata = { OMAP_PIN_OFF_WAKEUPENABLE),OMAP3_MUX (MCSPI1_CS1 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP |OMAP_PIN_OFF_INPUT_PULLUP |OMAP_PIN_OFF_OUTPUT_LOW ), +OMAP3_MUX (SYS_BOOT5 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP | +OMAP_PIN_OFF_NONE ), +OMAP3_MUX (GPMC_WAIT2 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP | +OMAP_PIN_OFF_NONE ), { .reg_offset = OMAP_MUX_TERMINATOR }, };#endif
--
1.6.2.4
PATCH v2 1/1 OMAP3EVM:FIX: Reset the smsc911x ethernet controller in board_init
Quoted 19 lines
-----Original Message-----
From: Hiremath, Vaibhav
Sent: Tuesday, January 25, 2011 8:53 PM
To: linux-omap at vger.kernel.org
Cc: Hiremath, Vaibhav; Varadarajan, Charulatha
Subject: [PATCH-V2] OMAP3EVM:FIX: Reset the smsc911x ethernet controller inboard_initWith addition of hwmod support to gpio, the ethernet controller goes undetected for OMAP35xEVM. So explicitly assert the reset signal to ethernet controller smsc911x -
- GPIO7 (>=RevG version of EVM's)
- GPIO64 (<=RevD version of EVM's)This patch is based on intial version from Charulatha V, reference to original discussion -
http://www.mail-archive.com/linux-omap at vger.kernel.org/msg35784.html
Quoted 7 lines
Signed-off-by Vaibhav Hiremath <[email protected]>Signed-off-by Charulatha V <[email protected]>Tested-by Kevin Hilman <[email protected]>---
Since Kevin reported that this patch doesn't get applied cleanly, so I am reposting it again after making sure that it gets applied cleanly.
[Hiremath, Vaibhav] Oops, missed linux-arm-kernel list, adding here.
Not sure whether I need to repost keeping linux-arm-kernel?
Thanks,
Vaibhav
Quoted 85 lines
arch/arm/mach-omap2/board-omap3evm.c | 39 +++++++++++++++++++++++++++++++++- 1 files changed, 38 insertions(+), 1 deletions(-)arch/arm/mach- renamed from arch/arm/mach-omap2/board-omap3evm.c +0
-0
omap2/board-omap3evm.c
index 323c380..97e0f65 100644arch/arm/mach-omap2/board-omap3evm.c +13
-1@@ -58,6 +58,13 @@#define OMAP3EVM_ETHR_ID_REV 0x50#define OMAP3EVM_ETHR_GPIO_IRQ 176#define OMAP3EVM_SMSC911X_CS 5 +/* +* Eth Reset signal +* 64 = Generation 1 (<=RevD) +* 7 = Generation 2 (>=RevE) +*/ +#define OMAP3EVM_GEN1_ETHR_GPIO_RST 64 +#define OMAP3EVM_GEN2_ETHR_GPIO_RST 7static u8 omap3_evm_version;@@ -124,10 +131,15 @@ static struct platform_device omap3evm_smsc911x_device = {static inline void __init omap3evm_init_smsc911x (void ) { -int eth_cs; +int eth_cs, eth_rst;struct clk *l3ck;unsigned int rate; +if (get_omap3_evm_rev () ==OMAP3EVM_BOARD_GEN_1 ) + eth_rst =OMAP3EVM_GEN1_ETHR_GPIO_RST ; +else + eth_rst =OMAP3EVM_GEN2_ETHR_GPIO_RST ; + eth_cs =OMAP3EVM_SMSC911X_CS ;arch/arm/mach-omap2/board-omap3evm.c +21
-0l3ck =clk_get (NULL ,"l3_ck" );@@ -136,6 +148,27 @@ static inline void __initomap3evm_init_smsc911x (void ) else rate =clk_get_rate (l3ck); +/* Configure ethernet controller reset gpio */ +if (cpu_is_omap3430 ()) { +if (gpio_request (eth_rst,"SMSC911x gpio" ) <0 ) { +pr_err (KERN_ERR "Failed to request %d for smsc911x\n" , + eth_rst); +return ; + } + +if (gpio_direction_output (eth_rst,1 ) <0 ) { +pr_err (KERN_ERR "Failed to set direction of %d for" \ +" smsc911x\n" , eth_rst); +return ; + } +/* reset pulse to ethernet controller*/ +usleep_range (150 ,220 ); +gpio_set_value (eth_rst,0 ); +usleep_range (150 ,220 ); +gpio_set_value (eth_rst,1 ); +usleep_range (1 ,2 ); + } +if (gpio_request (OMAP3EVM_ETHR_GPIO_IRQ ,"SMSC911x irq" ) <0 ) { printk(KERN_ERR "Failed to request GPIO%d for smsc911x IRQ\n",arch/arm/mach-omap2/board-omap3evm.c +4
-0OMAP3EVM_ETHR_GPIO_IRQ);@@ -658,6 +691,10 @@ static struct omap_board_mux board_mux[] __initdata = { OMAP_PIN_OFF_WAKEUPENABLE),OMAP3_MUX (MCSPI1_CS1 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP |OMAP_PIN_OFF_INPUT_PULLUP |OMAP_PIN_OFF_OUTPUT_LOW ), +OMAP3_MUX (SYS_BOOT5 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP | +OMAP_PIN_OFF_NONE ), +OMAP3_MUX (GPMC_WAIT2 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP | +OMAP_PIN_OFF_NONE ), { .reg_offset = OMAP_MUX_TERMINATOR },};
#endif
--
1.6.2.4
PATCH v2 1/1 OMAP3EVM:FIX: Reset the smsc911x ethernet controller in board_init
Hello,
Quoted 10 lines
Quoted 10 lines
Subject: [PATCH-V2] OMAP3EVM:FIX: Reset the smsc911x ethernet controller in
board_initWith addition of hwmod support to gpio, the ethernet controller goes undetected for OMAP35xEVM. So explicitly assert the reset signal to ethernet controller smsc911x -
- GPIO7 (>=RevG version of EVM's)
- GPIO64 (<=RevD version of EVM's)
Quoted 6 lines
Quoted 6 lines
This patch is based on intial version from Charulatha V, reference to original discussion -
http://www.mail-archive.com/linux-omap at vger.kernel.org/msg35784.htmlSigned-off-by Vaibhav Hiremath <[email protected]>Signed-off-by Charulatha V <[email protected]>Tested-by Kevin Hilman <[email protected]>
Out of interest - have you tried this network chip (smsc9118) in an SMP environment [is it on OMAP4?]? On the Versatile Express it's quite easy to get it to `lock up'. It claims to be servicing interrupts but you certainly don't get any useful packets. and ifdown/ifup brings it back to life again.
I took a brief look at the driver and found a few issues there:
1.) Read-after-read and read-after-write minimum delays aren't respected 2.) The locking is too low-level (it's around the register accessors) so
there is plenty of scope for deadlock if a calling function holds some other locks too.
3.) FIFO fastforwarding uses the word count instead of the byte count. 4.) Bit 20 of the HW_CFG register apparently always needs to be asserted,
but it's 0 out of reset (who knows what they were thinking?!).
I tried to resolve these problems (admittedly as a quick bit of hacking) but the issue persists.
Anyway, it would just be nice to know if anybody else has seen problems with this chip/driver because it makes the Versatile Express pretty much useless as a remote box.
Will
Hello,
Quoted 10 lines
Quoted 10 lines
Subject: [PATCH-V2] OMAP3EVM:FIX: Reset the smsc911x ethernet controller in
board_initWith addition of hwmod support to gpio, the ethernet controller goes undetected for OMAP35xEVM. So explicitly assert the reset signal to ethernet controller smsc911x -
- GPIO7 (>=RevG version of EVM's)
- GPIO64 (<=RevD version of EVM's)
Quoted 6 lines
Quoted 6 lines
This patch is based on intial version from Charulatha V, reference to original discussion -
http://www.mail-archive.com/[email protected]/msg35784.htmlSigned-off-by Vaibhav Hiremath <[email protected]>Signed-off-by Charulatha V <[email protected]>Tested-by Kevin Hilman <[email protected]>
Out of interest - have you tried this network chip (smsc9118) in an SMP environment [is it on OMAP4?]? On the Versatile Express it's quite easy to get it to `lock up'. It claims to be servicing interrupts but you certainly don't get any useful packets. and ifdown/ifup brings it back to life again.
I took a brief look at the driver and found a few issues there:
1.) Read-after-read and read-after-write minimum delays aren't respected 2.) The locking is too low-level (it's around the register accessors) so
there is plenty of scope for deadlock if a calling function holds some other locks too.
3.) FIFO fastforwarding uses the word count instead of the byte count. 4.) Bit 20 of the HW_CFG register apparently always needs to be asserted,
but it's 0 out of reset (who knows what they were thinking?!).
I tried to resolve these problems (admittedly as a quick bit of hacking) but the issue persists.
Anyway, it would just be nice to know if anybody else has seen problems with this chip/driver because it makes the Versatile Express pretty much useless as a remote box.
Will
PATCH v2 1/1 OMAP3EVM:FIX: Reset the smsc911x ethernet controller in board_init
In reply to Hiremath, VaibhavQuoted 25 lines · Vaibhav
Quoted 18 lines
-----Original Message-----
From: Hiremath, Vaibhav
Sent: Tuesday, January 25, 2011 8:53 PM
To: linux-omap at vger.kernel.org
Cc: Hiremath, Vaibhav; Varadarajan, Charulatha
Subject: [PATCH-V2] OMAP3EVM:FIX: Reset the smsc911x ethernet controller inboard_initWith addition of hwmod support to gpio, the ethernet controller goes undetected for OMAP35xEVM. So explicitly assert the reset signal to ethernet controller smsc911x -
- GPIO7 (>=RevG version of EVM's)
- GPIO64 (<=RevD version of EVM's)This patch is based on intial version from Charulatha V, reference to original discussion -
http://www.mail-archive.com/linux-omap at vger.kernel.org/msg35784.htmlQuoted 7 lines
Signed-off-by Vaibhav Hiremath <[email protected]>Signed-off-by Charulatha V <[email protected]>Tested-by Kevin Hilman <[email protected]>---
Since Kevin reported that this patch doesn't get applied cleanly, so I am reposting it again after making sure that it gets applied cleanly.
Quoted 3 lines
[Hiremath, Vaibhav] Oops, missed linux-arm-kernel list, adding here.
Not sure whether I need to repost keeping linux-arm-kernel?
Yes, please repost.
Kevin
Quoted 91 lines
Quoted 82 lines
arch/arm/mach-omap2/board-omap3evm.c | 39 +++++++++++++++++++++++++++++++++- 1 files changed, 38 insertions(+), 1 deletions(-)arch/arm/mach- renamed from arch/arm/mach-omap2/board-omap3evm.c +0
-0
omap2/board-omap3evm.c
index 323c380..97e0f65 100644arch/arm/mach-omap2/board-omap3evm.c +13
-1@@ -58,6 +58,13 @@#define OMAP3EVM_ETHR_ID_REV 0x50#define OMAP3EVM_ETHR_GPIO_IRQ 176#define OMAP3EVM_SMSC911X_CS 5 +/* +* Eth Reset signal +* 64 = Generation 1 (<=RevD) +* 7 = Generation 2 (>=RevE) +*/ +#define OMAP3EVM_GEN1_ETHR_GPIO_RST 64 +#define OMAP3EVM_GEN2_ETHR_GPIO_RST 7static u8 omap3_evm_version;@@ -124,10 +131,15 @@ static struct platform_device omap3evm_smsc911x_device = {static inline void __init omap3evm_init_smsc911x (void ) { -int eth_cs; +int eth_cs, eth_rst;struct clk *l3ck;unsigned int rate; +if (get_omap3_evm_rev () ==OMAP3EVM_BOARD_GEN_1 ) + eth_rst =OMAP3EVM_GEN1_ETHR_GPIO_RST ; +else + eth_rst =OMAP3EVM_GEN2_ETHR_GPIO_RST ; + eth_cs =OMAP3EVM_SMSC911X_CS ;arch/arm/mach-omap2/board-omap3evm.c +21
-0l3ck =clk_get (NULL ,"l3_ck" );@@ -136,6 +148,27 @@ static inline void __initomap3evm_init_smsc911x (void ) else rate =clk_get_rate (l3ck); +/* Configure ethernet controller reset gpio */ +if (cpu_is_omap3430 ()) { +if (gpio_request (eth_rst,"SMSC911x gpio" ) <0 ) { +pr_err (KERN_ERR "Failed to request %d for smsc911x\n" , + eth_rst); +return ; + } + +if (gpio_direction_output (eth_rst,1 ) <0 ) { +pr_err (KERN_ERR "Failed to set direction of %d for" \ +" smsc911x\n" , eth_rst); +return ; + } +/* reset pulse to ethernet controller*/ +usleep_range (150 ,220 ); +gpio_set_value (eth_rst,0 ); +usleep_range (150 ,220 ); +gpio_set_value (eth_rst,1 ); +usleep_range (1 ,2 ); + } +if (gpio_request (OMAP3EVM_ETHR_GPIO_IRQ ,"SMSC911x irq" ) <0 ) { printk(KERN_ERR "Failed to request GPIO%d for smsc911x IRQ\n",arch/arm/mach-omap2/board-omap3evm.c +4
-0OMAP3EVM_ETHR_GPIO_IRQ);@@ -658,6 +691,10 @@ static struct omap_board_mux board_mux[] __initdata = { OMAP_PIN_OFF_WAKEUPENABLE),OMAP3_MUX (MCSPI1_CS1 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP |OMAP_PIN_OFF_INPUT_PULLUP |OMAP_PIN_OFF_OUTPUT_LOW ), +OMAP3_MUX (SYS_BOOT5 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP | +OMAP_PIN_OFF_NONE ), +OMAP3_MUX (GPMC_WAIT2 ,OMAP_MUX_MODE4 |OMAP_PIN_INPUT_PULLUP | +OMAP_PIN_OFF_NONE ), { .reg_offset = OMAP_MUX_TERMINATOR },Quoted 4 lines
};
#endif
--
1.6.2.4--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 1/1 OMAP3EVM:FIX: Reset the smsc911x ethernet controller in board_init
In reply to Hiremath, VaibhavQuoted 25 lines · Vaibhav
Quoted 18 lines
-----Original Message-----
From: Hiremath, Vaibhav
Sent: Tuesday, January 25, 2011 8:53 PM
To: linux-omap at vger.kernel.org
Cc: Hiremath, Vaibhav; Varadarajan, Charulatha
Subject: [PATCH-V2] OMAP3EVM:FIX: Reset the smsc911x ethernet controller inboard_initWith addition of hwmod support to gpio, the ethernet controller goes undetected for OMAP35xEVM. So explicitly assert the reset signal to ethernet controller smsc911x -
- GPIO7 (>=RevG version of EVM's)
- GPIO64 (<=RevD version of EVM's)This patch is based on intial version from Charulatha V, reference to original discussion -
http://www.mail-archive.com/linux-omap at vger.kernel.org/msg35784.htmlQuoted 7 lines
Signed-off-by Vaibhav Hiremath <[email protected]>Signed-off-by Charulatha V <[email protected]>Tested-by Kevin Hilman <[email protected]>---
Since Kevin reported that this patch doesn't get applied cleanly, so I am reposting it again after making sure that it gets applied cleanly.
Quoted 4 lines
[Hiremath, Vaibhav] Oops, missed linux-arm-kernel list, adding here.
Not sure whether I need to repost keeping linux-arm-kernel?
Also, did you post the smc911x driver fix yet that is needed for testing with newer kernels?
Kevin
PATCH v2 1/1 OMAP3EVM:FIX: Reset the smsc911x ethernet controller in board_init
Quoted 40 lines
-----Original Message-----
From: Hilman, Kevin
Sent: Friday, January 28, 2011 1:38 AM
To: Hiremath, Vaibhav
Cc: linux-omap at vger.kernel.org; Varadarajan, Charulatha; linux-arm- kernel at lists.infradead.org
Subject: Re: [PATCH-V2] OMAP3EVM:FIX: Reset the smsc911x ethernet controller inboard_initQuoted 6 lines · Vaibhav
Quoted 6 lines
-----Original Message-----
From: Hiremath, Vaibhav
Sent: Tuesday, January 25, 2011 8:53 PM
To: linux-omap at vger.kernel.org
Cc: Hiremath, Vaibhav; Varadarajan, Charulatha
Subject: [PATCH-V2] OMAP3EVM:FIX: Reset the smsc911x ethernetcontroller
Quoted 4 lines
Quoted 4 lines
in
board_initWith addition of hwmod support to gpio, the ethernet controller goes undetected for OMAP35xEVM. So explicitly assert the reset signal
to
Quoted 5 lines
Quoted 5 lines
ethernet controller smsc911x -
- GPIO7 (>=RevG version of EVM's)
- GPIO64 (<=RevD version of EVM's)Quoted 9 lines
Quoted 9 lines
This patch is based on intial version from Charulatha V, reference to original discussion -
http://www.mail-archive.com/linux-omap at vger.kernel.org/msg35784.htmlSigned-off-by Vaibhav Hiremath <[email protected]>Signed-off-by Charulatha V <[email protected]>Tested-by Kevin Hilman <[email protected]>---
Since Kevin reported that this patch doesn't get applied cleanly, so I am reposting it again after making sure that it gets appliedcleanly.
Quoted 1 line
Quoted 1 line
Quoted 8 lines
Quoted 4 lines
[Hiremath, Vaibhav] Oops, missed linux-arm-kernel list, adding here.
Not sure whether I need to repost keeping linux-arm-kernel?
Also, did you post the smc911x driver fix yet that is needed for testing with newer kernels?
[Hiremath, Vaibhav] Not yet. Got completely loaded with some high priority issues. I will try to post it sometime this week.
Thanks,
Vaibhav
Quoted 1 line
Kevin