Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board
Dear Sanjeev Premi, In message 1308770649-3802-3-git-send-email-pr...@ti.com you wrote: + if (get_omap3_evm_rev() == OMAP3EVM_BOARD_GEN_1) { + gpio_base = (struct gpio *)OMAP34XX_GPIO3_BASE; + pin = GPIO0;/* Output pin: GPIO Bank 3, pin 0 */ + } else { + gpio_base = (struct gpio *)OMAP34XX_GPIO1_BASE; + pin = GPIO7;/* Output pin: GPIO Bank 0, pin 7 */ Is this bank 0 or bank 1? Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de There are some things worth dying for. -- Kirk, Errand of Mercy, stardate 3201.7 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board
On 06/27/11 08:06, Premi, Sanjeev wrote: -Original Message- From: Premi, Sanjeev Sent: Thursday, June 23, 2011 4:48 PM To: Premi, Sanjeev; Igor Grinberg Cc: Govindarajan, Sriramakrishnan; u-boot@lists.denx.de Subject: RE: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board -Original Message- From: u-boot-boun...@lists.denx.de [mailto:u-boot-boun...@lists.denx.de] On Behalf Of Premi, Sanjeev Sent: Thursday, June 23, 2011 4:43 PM To: Igor Grinberg Cc: Govindarajan, Sriramakrishnan; u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board -Original Message- From: Igor Grinberg [mailto:grinb...@compulab.co.il] Sent: Thursday, June 23, 2011 2:38 PM To: Premi, Sanjeev Cc: u-boot@lists.denx.de; Govindarajan, Sriramakrishnan Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board Hi Sanjeev, On 06/22/11 22:24, Sanjeev Premi wrote: From: Sriramakrishnan s...@ti.com The GPIO pin used for resetting the external LAN chip has changed for Rev.G board. Signed-off-by: Sriramakrishnan s...@ti.com Signed-off-by: Sanjeev Premi pr...@ti.com --- board/ti/evm/evm.c | 27 ++- 1 files changed, 18 insertions(+), 9 deletions(-) [snip]...[snip] + /* Send a pulse on the GPIO pin */ + writel(pin, gpio_base-setdataout); udelay(1); - writel(GPIO0, gpio3_base-cleardataout); + writel(pin, gpio_base-cleardataout); udelay(1); - writel(GPIO0, gpio3_base-setdataout); + writel(pin, gpio_base-setdataout); Why keep messing with the gpio registers? Why not use gpio framework? Though it is omap specific, but it will be much cleaner then the above. [sp] I guess the intent was to keep code similar. But yes, gpio framework can be used. [sp] Sorry, mail went earlier than I wanted :( The only issue is that I couln't see gpio framework for omap. Let me dig further... [sp] Implementing GPIO for OMAP would be a long task. It should be done for long term; but is it necessary pre-condition for the patch? There is no need to implement GPIO for OMAP. It is already there, you just need to use it instead of writing directly to the GPIO registers. You can find all the implementation in: arch/arm/cpu/armv7/omap3/gpio.c and the header is: arch/arm/include/asm/arch-omap3/gpio.h All you need is to include the header, request the appropriate gpio, send the pulse and maybe (if you don't need it anymore) free that gpio. This is not hard or long at all. -- Regards, Igor. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board
-Original Message- From: Igor Grinberg [mailto:grinb...@compulab.co.il] Sent: Monday, June 27, 2011 12:17 PM To: Premi, Sanjeev Cc: Govindarajan, Sriramakrishnan; u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board On 06/27/11 08:06, Premi, Sanjeev wrote: -Original Message- From: Premi, Sanjeev Sent: Thursday, June 23, 2011 4:48 PM To: Premi, Sanjeev; Igor Grinberg Cc: Govindarajan, Sriramakrishnan; u-boot@lists.denx.de Subject: RE: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board -Original Message- From: u-boot-boun...@lists.denx.de [mailto:u-boot-boun...@lists.denx.de] On Behalf Of Premi, Sanjeev Sent: Thursday, June 23, 2011 4:43 PM To: Igor Grinberg Cc: Govindarajan, Sriramakrishnan; u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board -Original Message- From: Igor Grinberg [mailto:grinb...@compulab.co.il] Sent: Thursday, June 23, 2011 2:38 PM To: Premi, Sanjeev Cc: u-boot@lists.denx.de; Govindarajan, Sriramakrishnan Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board Hi Sanjeev, On 06/22/11 22:24, Sanjeev Premi wrote: From: Sriramakrishnan s...@ti.com The GPIO pin used for resetting the external LAN chip has changed for Rev.G board. Signed-off-by: Sriramakrishnan s...@ti.com Signed-off-by: Sanjeev Premi pr...@ti.com --- board/ti/evm/evm.c | 27 ++- 1 files changed, 18 insertions(+), 9 deletions(-) [snip]...[snip] + /* Send a pulse on the GPIO pin */ + writel(pin, gpio_base-setdataout); udelay(1); - writel(GPIO0, gpio3_base-cleardataout); + writel(pin, gpio_base-cleardataout); udelay(1); - writel(GPIO0, gpio3_base-setdataout); + writel(pin, gpio_base-setdataout); Why keep messing with the gpio registers? Why not use gpio framework? Though it is omap specific, but it will be much cleaner then the above. [sp] I guess the intent was to keep code similar. But yes, gpio framework can be used. [sp] Sorry, mail went earlier than I wanted :( The only issue is that I couln't see gpio framework for omap. Let me dig further... [sp] Implementing GPIO for OMAP would be a long task. It should be done for long term; but is it necessary pre-condition for the patch? There is no need to implement GPIO for OMAP. It is already there, you just need to use it instead of writing directly to the GPIO registers. You can find all the implementation in: arch/arm/cpu/armv7/omap3/gpio.c and the header is: arch/arm/include/asm/arch-omap3/gpio.h [sp] No wonder, I couldn't find it in drivers/gpio. (Didn't occur that it could be in ARCH specific dir) Will rebase and send an updated patch soon. ~sanjeev All you need is to include the header, request the appropriate gpio, send the pulse and maybe (if you don't need it anymore) free that gpio. This is not hard or long at all. -- Regards, Igor. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board
-Original Message- From: Premi, Sanjeev Sent: Thursday, June 23, 2011 4:48 PM To: Premi, Sanjeev; Igor Grinberg Cc: Govindarajan, Sriramakrishnan; u-boot@lists.denx.de Subject: RE: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board -Original Message- From: u-boot-boun...@lists.denx.de [mailto:u-boot-boun...@lists.denx.de] On Behalf Of Premi, Sanjeev Sent: Thursday, June 23, 2011 4:43 PM To: Igor Grinberg Cc: Govindarajan, Sriramakrishnan; u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board -Original Message- From: Igor Grinberg [mailto:grinb...@compulab.co.il] Sent: Thursday, June 23, 2011 2:38 PM To: Premi, Sanjeev Cc: u-boot@lists.denx.de; Govindarajan, Sriramakrishnan Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board Hi Sanjeev, On 06/22/11 22:24, Sanjeev Premi wrote: From: Sriramakrishnan s...@ti.com The GPIO pin used for resetting the external LAN chip has changed for Rev.G board. Signed-off-by: Sriramakrishnan s...@ti.com Signed-off-by: Sanjeev Premi pr...@ti.com --- board/ti/evm/evm.c | 27 ++- 1 files changed, 18 insertions(+), 9 deletions(-) [snip]...[snip] + /* Send a pulse on the GPIO pin */ + writel(pin, gpio_base-setdataout); udelay(1); - writel(GPIO0, gpio3_base-cleardataout); + writel(pin, gpio_base-cleardataout); udelay(1); - writel(GPIO0, gpio3_base-setdataout); + writel(pin, gpio_base-setdataout); Why keep messing with the gpio registers? Why not use gpio framework? Though it is omap specific, but it will be much cleaner then the above. [sp] I guess the intent was to keep code similar. But yes, gpio framework can be used. [sp] Sorry, mail went earlier than I wanted :( The only issue is that I couln't see gpio framework for omap. Let me dig further... [sp] Implementing GPIO for OMAP would be a long task. It should be done for long term; but is it necessary pre-condition for the patch? ~sanjeev ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board
Hi Sanjeev, On 06/22/11 22:24, Sanjeev Premi wrote: From: Sriramakrishnan s...@ti.com The GPIO pin used for resetting the external LAN chip has changed for Rev.G board. Signed-off-by: Sriramakrishnan s...@ti.com Signed-off-by: Sanjeev Premi pr...@ti.com --- board/ti/evm/evm.c | 27 ++- 1 files changed, 18 insertions(+), 9 deletions(-) diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index 8f9f141..57e5fa5 100644 --- a/board/ti/evm/evm.c +++ b/board/ti/evm/evm.c @@ -181,17 +181,26 @@ static void setup_net_chip(void) */ static void reset_net_chip(void) { - struct gpio *gpio3_base = (struct gpio *)OMAP34XX_GPIO3_BASE; - - /* Make GPIO 64 as output pin */ - writel(readl(gpio3_base-oe) ~(GPIO0), gpio3_base-oe); - - /* Now send a pulse on the GPIO pin */ - writel(GPIO0, gpio3_base-setdataout); + struct gpio *gpio_base; + u32 pin; + + if (get_omap3_evm_rev() == OMAP3EVM_BOARD_GEN_1) { + gpio_base = (struct gpio *)OMAP34XX_GPIO3_BASE; + pin = GPIO0;/* Output pin: GPIO Bank 3, pin 0 */ + } else { + gpio_base = (struct gpio *)OMAP34XX_GPIO1_BASE; + pin = GPIO7;/* Output pin: GPIO Bank 0, pin 7 */ + } + + /* Configure the pin as output */ + writel(readl(gpio_base-oe) ~(pin), gpio_base-oe); + + /* Send a pulse on the GPIO pin */ + writel(pin, gpio_base-setdataout); udelay(1); - writel(GPIO0, gpio3_base-cleardataout); + writel(pin, gpio_base-cleardataout); udelay(1); - writel(GPIO0, gpio3_base-setdataout); + writel(pin, gpio_base-setdataout); Why keep messing with the gpio registers? Why not use gpio framework? Though it is omap specific, but it will be much cleaner then the above. -- Regards, Igor. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board
-Original Message- From: Igor Grinberg [mailto:grinb...@compulab.co.il] Sent: Thursday, June 23, 2011 2:38 PM To: Premi, Sanjeev Cc: u-boot@lists.denx.de; Govindarajan, Sriramakrishnan Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board Hi Sanjeev, On 06/22/11 22:24, Sanjeev Premi wrote: From: Sriramakrishnan s...@ti.com The GPIO pin used for resetting the external LAN chip has changed for Rev.G board. Signed-off-by: Sriramakrishnan s...@ti.com Signed-off-by: Sanjeev Premi pr...@ti.com --- board/ti/evm/evm.c | 27 ++- 1 files changed, 18 insertions(+), 9 deletions(-) diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index 8f9f141..57e5fa5 100644 --- a/board/ti/evm/evm.c +++ b/board/ti/evm/evm.c @@ -181,17 +181,26 @@ static void setup_net_chip(void) */ static void reset_net_chip(void) { - struct gpio *gpio3_base = (struct gpio *)OMAP34XX_GPIO3_BASE; - - /* Make GPIO 64 as output pin */ - writel(readl(gpio3_base-oe) ~(GPIO0), gpio3_base-oe); - - /* Now send a pulse on the GPIO pin */ - writel(GPIO0, gpio3_base-setdataout); + struct gpio *gpio_base; + u32 pin; + + if (get_omap3_evm_rev() == OMAP3EVM_BOARD_GEN_1) { + gpio_base = (struct gpio *)OMAP34XX_GPIO3_BASE; + pin = GPIO0;/* Output pin: GPIO Bank 3, pin 0 */ + } else { + gpio_base = (struct gpio *)OMAP34XX_GPIO1_BASE; + pin = GPIO7;/* Output pin: GPIO Bank 0, pin 7 */ + } + + /* Configure the pin as output */ + writel(readl(gpio_base-oe) ~(pin), gpio_base-oe); + + /* Send a pulse on the GPIO pin */ + writel(pin, gpio_base-setdataout); udelay(1); - writel(GPIO0, gpio3_base-cleardataout); + writel(pin, gpio_base-cleardataout); udelay(1); - writel(GPIO0, gpio3_base-setdataout); + writel(pin, gpio_base-setdataout); Why keep messing with the gpio registers? Why not use gpio framework? Though it is omap specific, but it will be much cleaner then the above. [sp] I guess the intent was to keep code similar. But yes, gpio framework can be used. ~sanjeev -- Regards, Igor. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board
-Original Message- From: u-boot-boun...@lists.denx.de [mailto:u-boot-boun...@lists.denx.de] On Behalf Of Premi, Sanjeev Sent: Thursday, June 23, 2011 4:43 PM To: Igor Grinberg Cc: Govindarajan, Sriramakrishnan; u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board -Original Message- From: Igor Grinberg [mailto:grinb...@compulab.co.il] Sent: Thursday, June 23, 2011 2:38 PM To: Premi, Sanjeev Cc: u-boot@lists.denx.de; Govindarajan, Sriramakrishnan Subject: Re: [U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board Hi Sanjeev, On 06/22/11 22:24, Sanjeev Premi wrote: From: Sriramakrishnan s...@ti.com The GPIO pin used for resetting the external LAN chip has changed for Rev.G board. Signed-off-by: Sriramakrishnan s...@ti.com Signed-off-by: Sanjeev Premi pr...@ti.com --- board/ti/evm/evm.c | 27 ++- 1 files changed, 18 insertions(+), 9 deletions(-) diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index 8f9f141..57e5fa5 100644 --- a/board/ti/evm/evm.c +++ b/board/ti/evm/evm.c @@ -181,17 +181,26 @@ static void setup_net_chip(void) */ static void reset_net_chip(void) { - struct gpio *gpio3_base = (struct gpio *)OMAP34XX_GPIO3_BASE; - - /* Make GPIO 64 as output pin */ - writel(readl(gpio3_base-oe) ~(GPIO0), gpio3_base-oe); - - /* Now send a pulse on the GPIO pin */ - writel(GPIO0, gpio3_base-setdataout); + struct gpio *gpio_base; + u32 pin; + + if (get_omap3_evm_rev() == OMAP3EVM_BOARD_GEN_1) { + gpio_base = (struct gpio *)OMAP34XX_GPIO3_BASE; + pin = GPIO0;/* Output pin: GPIO Bank 3, pin 0 */ + } else { + gpio_base = (struct gpio *)OMAP34XX_GPIO1_BASE; + pin = GPIO7;/* Output pin: GPIO Bank 0, pin 7 */ + } + + /* Configure the pin as output */ + writel(readl(gpio_base-oe) ~(pin), gpio_base-oe); + + /* Send a pulse on the GPIO pin */ + writel(pin, gpio_base-setdataout); udelay(1); - writel(GPIO0, gpio3_base-cleardataout); + writel(pin, gpio_base-cleardataout); udelay(1); - writel(GPIO0, gpio3_base-setdataout); + writel(pin, gpio_base-setdataout); Why keep messing with the gpio registers? Why not use gpio framework? Though it is omap specific, but it will be much cleaner then the above. [sp] I guess the intent was to keep code similar. But yes, gpio framework can be used. [sp] Sorry, mail went earlier than I wanted :( The only issue is that I couln't see gpio framework for omap. Let me dig further... ~sanjeev -- Regards, Igor. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 2/3] omap3evm: Update ethernet reset sequence for Rev.G board
From: Sriramakrishnan s...@ti.com The GPIO pin used for resetting the external LAN chip has changed for Rev.G board. Signed-off-by: Sriramakrishnan s...@ti.com Signed-off-by: Sanjeev Premi pr...@ti.com --- board/ti/evm/evm.c | 27 ++- 1 files changed, 18 insertions(+), 9 deletions(-) diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index 8f9f141..57e5fa5 100644 --- a/board/ti/evm/evm.c +++ b/board/ti/evm/evm.c @@ -181,17 +181,26 @@ static void setup_net_chip(void) */ static void reset_net_chip(void) { - struct gpio *gpio3_base = (struct gpio *)OMAP34XX_GPIO3_BASE; - - /* Make GPIO 64 as output pin */ - writel(readl(gpio3_base-oe) ~(GPIO0), gpio3_base-oe); - - /* Now send a pulse on the GPIO pin */ - writel(GPIO0, gpio3_base-setdataout); + struct gpio *gpio_base; + u32 pin; + + if (get_omap3_evm_rev() == OMAP3EVM_BOARD_GEN_1) { + gpio_base = (struct gpio *)OMAP34XX_GPIO3_BASE; + pin = GPIO0;/* Output pin: GPIO Bank 3, pin 0 */ + } else { + gpio_base = (struct gpio *)OMAP34XX_GPIO1_BASE; + pin = GPIO7;/* Output pin: GPIO Bank 0, pin 7 */ + } + + /* Configure the pin as output */ + writel(readl(gpio_base-oe) ~(pin), gpio_base-oe); + + /* Send a pulse on the GPIO pin */ + writel(pin, gpio_base-setdataout); udelay(1); - writel(GPIO0, gpio3_base-cleardataout); + writel(pin, gpio_base-cleardataout); udelay(1); - writel(GPIO0, gpio3_base-setdataout); + writel(pin, gpio_base-setdataout); } int board_eth_init(bd_t *bis) -- 1.7.2.2 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot