[U-Boot] Davinci: add support for ea20 board

This patchset superseeds the patch with the same name. Common code is now shared for da8xx boards.
The patchset is based on the following patches:
Sughosh Ganu: Move and rename common headers from under board/davinci Ben Gardiner: da850evm: Add RMII support for EMAC

As more Davinci 8xx board can be added, move common code to be shared between boards.
Signed-off-by: Stefano Babic sbabic@denx.de --- arch/arm/include/asm/arch-davinci/da8xx_common.h | 33 ---------- arch/arm/include/asm/arch-davinci/davinci_misc.h | 12 ++++ board/davinci/common/misc.c | 51 ++++++++++++++++ board/davinci/da8xxevm/Makefile | 1 - board/davinci/da8xxevm/common.c | 69 ---------------------- board/davinci/da8xxevm/da830evm.c | 1 - board/davinci/da8xxevm/da850evm.c | 3 +- 7 files changed, 64 insertions(+), 106 deletions(-) delete mode 100644 arch/arm/include/asm/arch-davinci/da8xx_common.h delete mode 100644 board/davinci/da8xxevm/common.c
diff --git a/arch/arm/include/asm/arch-davinci/da8xx_common.h b/arch/arm/include/asm/arch-davinci/da8xx_common.h deleted file mode 100644 index 8b564f7..0000000 --- a/arch/arm/include/asm/arch-davinci/da8xx_common.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __COMMON_H -#define __COMMON_H - -struct lpsc_resource { - const int lpsc_no; -}; - -void irq_init(void); -int da8xx_configure_lpsc_items(const struct lpsc_resource *item, - int n_items); -#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) -void da850_emac_mii_mode_sel(int mode_sel); -#endif - -#endif /* __COMMON_H */ diff --git a/arch/arm/include/asm/arch-davinci/davinci_misc.h b/arch/arm/include/asm/arch-davinci/davinci_misc.h index a6ac3b9..12cafac 100644 --- a/arch/arm/include/asm/arch-davinci/davinci_misc.h +++ b/arch/arm/include/asm/arch-davinci/davinci_misc.h @@ -45,10 +45,22 @@ struct pinmux_resource { .n_pins = ARRAY_SIZE(item) \ }
+struct lpsc_resource { + const int lpsc_no; +}; + int dvevm_read_mac_address(uint8_t *buf); void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr); int davinci_configure_pin_mux(const struct pinmux_config *pins, int n_pins); int davinci_configure_pin_mux_items(const struct pinmux_resource *item, int n_items); +#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) +void davinci_emac_mii_mode_sel(int mode_sel); +#endif +#if defined(CONFIG_SOC_DA8XX) +void irq_init(void); +int da8xx_configure_lpsc_items(const struct lpsc_resource *item, + const int n_items); +#endif
#endif /* __MISC_H */ diff --git a/board/davinci/common/misc.c b/board/davinci/common/misc.c index a30047b..f7b2fac 100644 --- a/board/davinci/common/misc.c +++ b/board/davinci/common/misc.c @@ -170,3 +170,54 @@ int davinci_configure_pin_mux_items(const struct pinmux_resource *item,
return 0; } + +/* + * Set the mii mode as MII or RMII + */ +#if defined(CONFIG_DRIVER_TI_EMAC) +void davinci_emac_mii_mode_sel(int mode_sel) +{ + int val; + + val = readl(&davinci_syscfg_regs->cfgchip3); + if (mode_sel == 0) + val &= ~(1 << 8); + else + val |= (1 << 8); + writel(val, &davinci_syscfg_regs->cfgchip3); +} +#endif + +#if defined(CONFIG_SOC_DA8XX) +#ifndef CONFIG_USE_IRQ +void irq_init(void) +{ + /* + * Mask all IRQs by clearing the global enable and setting + * the enable clear for all the 90 interrupts. + */ + + writel(0, &davinci_aintc_regs->ger); + + writel(0, &davinci_aintc_regs->hier); + + writel(0xffffffff, &davinci_aintc_regs->ecr1); + writel(0xffffffff, &davinci_aintc_regs->ecr2); + writel(0xffffffff, &davinci_aintc_regs->ecr3); +} +#endif + +/* + * Enable PSC for various peripherals. + */ +int da8xx_configure_lpsc_items(const struct lpsc_resource *item, + const int n_items) +{ + int i; + + for (i = 0; i < n_items; i++) + lpsc_on(item[i].lpsc_no); + + return 0; +} +#endif diff --git a/board/davinci/da8xxevm/Makefile b/board/davinci/da8xxevm/Makefile index 17cbe86..0d42672 100644 --- a/board/davinci/da8xxevm/Makefile +++ b/board/davinci/da8xxevm/Makefile @@ -27,7 +27,6 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS-y += common.o COBJS-$(CONFIG_MACH_DAVINCI_DA830_EVM) += da830evm.o COBJS-$(CONFIG_MACH_DAVINCI_DA850_EVM) += da850evm.o
diff --git a/board/davinci/da8xxevm/common.c b/board/davinci/da8xxevm/common.c deleted file mode 100644 index 2d9a64b..0000000 --- a/board/davinci/da8xxevm/common.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Miscellaneous DA8XX functions. - * - * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include <asm/io.h> -#include <asm/arch/hardware.h> -#include <asm/arch/da8xx_common.h> - -#ifndef CONFIG_USE_IRQ -void irq_init(void) -{ - /* - * Mask all IRQs by clearing the global enable and setting - * the enable clear for all the 90 interrupts. - */ - - writel(0, &davinci_aintc_regs->ger); - - writel(0, &davinci_aintc_regs->hier); - - writel(0xffffffff, &davinci_aintc_regs->ecr1); - writel(0xffffffff, &davinci_aintc_regs->ecr2); - writel(0xffffffff, &davinci_aintc_regs->ecr3); -} -#endif - -/* - * Enable PSC for various peripherals. - */ -int da8xx_configure_lpsc_items(const struct lpsc_resource *item, - const int n_items) -{ - int i; - - for (i = 0; i < n_items; i++) - lpsc_on(item[i].lpsc_no); - - return 0; -} - -#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) -void da850_emac_mii_mode_sel(int mode_sel) -{ - int val; - - val = readl(&davinci_syscfg_regs->cfgchip3); - if (mode_sel == 0) - val &= ~(1 << 8); - else - val |= (1 << 8); - writel(val, &davinci_syscfg_regs->cfgchip3); -} -#endif diff --git a/board/davinci/da8xxevm/da830evm.c b/board/davinci/da8xxevm/da830evm.c index b6b7e37..0650653 100644 --- a/board/davinci/da8xxevm/da830evm.c +++ b/board/davinci/da8xxevm/da830evm.c @@ -41,7 +41,6 @@ #include <asm/arch/emac_defs.h> #include <asm/io.h> #include <asm/arch/davinci_misc.h> -#include <asm/arch/da8xx_common.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c index 4793005..f6d6427 100644 --- a/board/davinci/da8xxevm/da850evm.c +++ b/board/davinci/da8xxevm/da850evm.c @@ -30,7 +30,6 @@ #include <asm/arch/emac_defs.h> #include <asm/io.h> #include <asm/arch/davinci_misc.h> -#include <asm/arch/da8xx_common.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -187,7 +186,7 @@ int board_init(void) if (davinci_configure_pin_mux(emac_pins, ARRAY_SIZE(emac_pins)) != 0) return 1;
- da850_emac_mii_mode_sel(HAS_RMII); + davinci_emac_mii_mode_sel(HAS_RMII); #endif /* CONFIG_DRIVER_TI_EMAC */
/* enable the console UART */

Hi Stefano,
On Wed, Nov 17, 2010 at 5:09 AM, Stefano Babic sbabic@denx.de wrote:
[...] diff --git a/arch/arm/include/asm/arch-davinci/da8xx_common.h b/arch/arm/include/asm/arch-davinci/da8xx_common.h deleted file mode 100644 index 8b564f7..0000000 --- a/arch/arm/include/asm/arch-davinci/da8xx_common.h +++ /dev/null @@ -1,33 +0,0 @@ -/*
- Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __COMMON_H -#define __COMMON_H
-struct lpsc_resource {
- const int lpsc_no;
-};
-void irq_init(void); -int da8xx_configure_lpsc_items(const struct lpsc_resource *item,
- int n_items);
-#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) -void da850_emac_mii_mode_sel(int mode_sel); -#endif
I was unable to test this series on top of Sugosh's and my patches even after re-basing my patch on top of his by moving the da850_emac_mii_mode_sel declaration from board/davinci/da8xxevm/common.h to the location from which you have removed it above.
It looked like the removal of this file also needs to move the kick register declarations that Sugosh added here.
I'm guessing you are working from a tree that is very close but not quite equal to mainline plus the patches you referenced in the cover letter.
I don't know what is the best way to proceed... I like the current state of this patch series. I was unable to apply the three patch series (Sugosh's, Yours and mine) in any order without conflicts.
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

On 11/17/2010 05:26 PM, Ben Gardiner wrote:
Hi Stefano,
Hi Ben,
I was unable to test this series on top of Sugosh's and my patches even after re-basing my patch on top of his by moving the da850_emac_mii_mode_sel declaration from board/davinci/da8xxevm/common.h to the location from which you have removed it above.
It looked like the removal of this file also needs to move the kick register declarations that Sugosh added here.
I'm guessing you are working from a tree that is very close but not quite equal to mainline plus the patches you referenced in the cover letter.
Let's see. I am working on TOT of u-boot mainline, and I have applied Sugosh's and your patch. Last u-boot commit in mainline is:
commit 8ad25bf8d9233eb7d0b614612108622a59069354 Author: Ben Warren biggerbadderben@gmail.com Date: Tue Aug 31 23:05:04 2010 -0700
Net: clarify board/cpu_eth_init calls
I have then applied in the order the two SPI flash I have already sent and you tested, Sugosh's patch and your patch. At the very top there is my patchset. This is my git log, I drop some part of the commit id to avoid wrapping:
6a1b17dd5cdaeb4c Davinci: add support for the ea20 board 5195253f20d5bedb Davinci 8xx: Move common functions to share code 8e6ed317d74b3b4d da850: Add RMII support for EMAC 9c1455c63dafc292 Move and rename common headers from under board/davinci. 4ccdfedb55b65f30 da850: Enable SPI Flash 0aacad5f81caac89 da8xx: Add cpu_is_da8xx macros 8ad25bf8d9233eb7 Net: clarify board/cpu_eth_init calls ^ |------- this is actual u-boot TOT
I think it is correct - patches are always sent on the actual u-boot TOT. However, in this case my patches need that other patches (yours and Sugosh's) are applied. I have tried to apply patches in the same order I have seen, but we can have a different order.
I don't know what is the best way to proceed... I like the current state of this patch series. I was unable to apply the three patch series (Sugosh's, Yours and mine) in any order without conflicts.
Let's see if something is missing ;-)
Best regards, Stefano Babic

Hi Stefano,
Sorry for the long delay. I thought rebasing my patch onto Sugosh's series would be a good start to getting all of our patches applied together. What I didn't realize was I that I still did not have the order of patches you listed below.
On Wed, Nov 17, 2010 at 11:47 AM, Stefano Babic sbabic@denx.de wrote:
[...] 6a1b17dd5cdaeb4c Davinci: add support for the ea20 board 5195253f20d5bedb Davinci 8xx: Move common functions to share code 8e6ed317d74b3b4d da850: Add RMII support for EMAC 9c1455c63dafc292 Move and rename common headers from under board/davinci. 4ccdfedb55b65f30 da850: Enable SPI Flash 0aacad5f81caac89 da8xx: Add cpu_is_da8xx macros 8ad25bf8d9233eb7 Net: clarify board/cpu_eth_init calls ^ |------- this is actual u-boot TOT
The problem was that I was applying my RMII patch on top of Sugosh's patches without your SPI flash patches underneath. Another RMII version patch is coming.
Still, there were some merge conflicts due to the fact that you were basing your ea20 patches off of only 1 of Sugosh's patches. here is the 'git log --format="%s -- %Cgreen%an <%aE> %Cred%ai" u-boot/master^..HEAD' output after all the merging.
Davinci: add support for the ea20 board -- Stefano Babic sbabic@denx.de 2010-11-17 11:09:05 +0100 Davinci 8xx: Move common functions to share code -- Stefano Babic sbabic@denx.de 2010-11-17 11:09:04 +0100 [PATCH V4][NEXT] da850: Add RMII support for EMAC -- Sudhakar Rajashekhara sudhakar.raj@ti.com 2010-11-18 09:59:37 -0500 Add board support for hawkboard -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:30:34 +0530 Remove board_init_f function from nand_boot.c -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:29:27 +0530 Move and rename common headers from under board/davinci. -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:28:38 +0530 da850: Enable SPI Flash -- Stefano Babic sbabic@denx.de 2010-11-11 15:38:02 +0100 da8xx: Add cpu_is_da8xx macros -- Sudhakar Rajashekhara sudhakar.raj@ti.com 2010-11-11 15:38:01 +0100 Net: clarify board/cpu_eth_init calls -- Ben Warren biggerbadderben@gmail.com 2010-08-31 23:05:04 -0700
You didn't have "Add board support for hawkboard" and "Remove board_init_f function from nand_boot.c" applied.
I hope you don't mind that I merged them and pushed the result to branch "testing-ea20-plus" of git://github.com/BenGardiner/u-boot-bg.git . I hope that saves us some time.
I will be sending a V4 of the RMII patch -- as can be seen from that series -- to the list. I hope you can use the merged patches in the branch I pushed to send your updated patches.
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

On 11/18/2010 10:50 PM, Ben Gardiner wrote:
Hi Stefano,
Hi Ben,
Sorry for the long delay.
No problem at all !
The problem was that I was applying my RMII patch on top of Sugosh's patches without your SPI flash patches underneath. Another RMII version patch is coming.
Still, there were some merge conflicts due to the fact that you were basing your ea20 patches off of only 1 of Sugosh's patches.
Right. Sugosh pointed me out to this patch and I have not seen that the patches for the hawkboard change something in common code, too.
You didn't have "Add board support for hawkboard" and "Remove board_init_f function from nand_boot.c" applied.
I hope you don't mind that I merged them and pushed the result to branch "testing-ea20-plus" of git://github.com/BenGardiner/u-boot-bg.git . I hope that saves us some time.
Thank you for doing that - we have already a working tree !
I will be sending a V4 of the RMII patch -- as can be seen from that series -- to the list. I hope you can use the merged patches in the branch I pushed to send your updated patches.
I will test today on ea20, but it seems all what I have to do is only to send them to the ML - thank you again for your work !
Best regards, Stefano Babic

hi Ben,
On Thu Nov 18, 2010 at 04:50:30PM -0500, Ben Gardiner wrote:
Davinci: add support for the ea20 board -- Stefano Babic sbabic@denx.de 2010-11-17 11:09:05 +0100 Davinci 8xx: Move common functions to share code -- Stefano Babic sbabic@denx.de 2010-11-17 11:09:04 +0100 [PATCH V4][NEXT] da850: Add RMII support for EMAC -- Sudhakar Rajashekhara sudhakar.raj@ti.com 2010-11-18 09:59:37 -0500 Add board support for hawkboard -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:30:34 +0530 Remove board_init_f function from nand_boot.c -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:29:27 +0530 Move and rename common headers from under board/davinci. -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:28:38 +0530 da850: Enable SPI Flash -- Stefano Babic sbabic@denx.de 2010-11-11 15:38:02 +0100 da8xx: Add cpu_is_da8xx macros -- Sudhakar Rajashekhara sudhakar.raj@ti.com 2010-11-11 15:38:01 +0100 Net: clarify board/cpu_eth_init calls -- Ben Warren biggerbadderben@gmail.com 2010-08-31 23:05:04 -0700
You didn't have "Add board support for hawkboard" and "Remove board_init_f function from nand_boot.c" applied.
I hope you don't mind that I merged them and pushed the result to branch "testing-ea20-plus" of git://github.com/BenGardiner/u-boot-bg.git . I hope that saves us some time.
Thanks for all the work. I will be able to test these changes only next week. I will test them on hawkboard and update you. Thanks.
-sughosh

hi Ben,
On Fri, Nov 19, 2010 at 3:20 AM, Ben Gardiner bengardiner@nanometrics.cawrote:
Still, there were some merge conflicts due to the fact that you were basing your ea20 patches off of only 1 of Sugosh's patches. here is the 'git log --format="%s -- %Cgreen%an <%aE> %Cred%ai" u-boot/master^..HEAD' output after all the merging.
Davinci: add support for the ea20 board -- Stefano Babic sbabic@denx.de 2010-11-17 11:09:05 +0100 Davinci 8xx: Move common functions to share code -- Stefano Babic sbabic@denx.de 2010-11-17 11:09:04 +0100 [PATCH V4][NEXT] da850: Add RMII support for EMAC -- Sudhakar Rajashekhara sudhakar.raj@ti.com 2010-11-18 09:59:37 -0500 Add board support for hawkboard -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:30:34 +0530 Remove board_init_f function from nand_boot.c -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:29:27 +0530 Move and rename common headers from under board/davinci. -- Sughosh Ganu urwithsughosh@gmail.com 2010-11-01 23:28:38 +0530 da850: Enable SPI Flash -- Stefano Babic sbabic@denx.de 2010-11-11 15:38:02 +0100 da8xx: Add cpu_is_da8xx macros -- Sudhakar Rajashekhara sudhakar.raj@ti.com 2010-11-11 15:38:01 +0100 Net: clarify board/cpu_eth_init calls -- Ben Warren biggerbadderben@gmail.com 2010-08-31 23:05:04 -0700
You didn't have "Add board support for hawkboard" and "Remove board_init_f function from nand_boot.c" applied.
I hope you don't mind that I merged them and pushed the result to branch "testing-ea20-plus" of git://github.com/BenGardiner/u-boot-bg.git . I hope that saves us some time.
I will be sending a V4 of the RMII patch -- as can be seen from that series -- to the list. I hope you can use the merged patches in the branch I pushed to send your updated patches.
Tested on hawkboard with u-boot and nand_spl images built from Ben's tree.
Tested-by: Sughosh Ganu urwithsughosh@gmail.com
I guess i will have to send an updated version from Ben's tree, as he has fixed some merge issues in "Add board support for hawkboard" patch. The patches would have to be committed in the same order as mentioned above.
-sughosh

On 11/23/2010 05:55 PM, sughosh ganu wrote:
Hi,
Tested on hawkboard with u-boot and nand_spl images built from Ben's tree.
Tested-by: Sughosh Ganu <urwithsughosh@gmail.com mailto:urwithsughosh@gmail.com>
I guess i will have to send an updated version from Ben's tree, as he has fixed some merge issues in "Add board support for hawkboard" patch.
Yes, I did the same for mine as Ben has rebased my patches and they are different as the ones I send to ML.
Stefano

On 11/23/2010 05:55 PM, sughosh ganu wrote:
Hi,
Tested on hawkboard with u-boot and nand_spl images built from Ben's
tree.
Tested-by: Sughosh Ganu <urwithsughosh@gmail.com mailto:urwithsughosh@gmail.com>
I guess i will have to send an updated version from Ben's tree, as he has fixed some merge issues in "Add board support for hawkboard" patch.
Yes, I did the same for mine as Ben has rebased my patches and they are different as the ones I send to ML.
Stefano
Hello All,
I have been tracking this e-mail chain for some time now and I have lost track of which patches to apply in which order.
Can someone please give me the correct order and the correct version of the patches?
Regards, Sandeep

Hi Sandeep,
On Tue, Nov 23, 2010 at 1:25 PM, Paulraj, Sandeep s-paulraj@ti.com wrote:
I have been tracking this e-mail chain for some time now and I have lost track of which patches to apply in which order.
Can someone please give me the correct order and the correct version of the patches?
The correct order and correct versions of the patches can be found in branch "testing-ea20-plus" of git://github.com/BenGardiner/u-boot-bg.git. The commit messages there do not include Sugosh's Tested-by: tag on the hawkboard patches, nor has he re-sent them to the ML yet.
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

Hi Sandeep,
On Tue, Nov 23, 2010 at 1:25 PM, Paulraj, Sandeep s-paulraj@ti.com wrote:
I have been tracking this e-mail chain for some time now and I have lost
track of which patches to apply in which order.
Can someone please give me the correct order and the correct version of
the patches?
The correct order and correct versions of the patches can be found in branch "testing-ea20-plus" of git://github.com/BenGardiner/u-boot-bg.git. The commit messages there do not include Sugosh's Tested-by: tag on the hawkboard patches, nor has he re-sent them to the ML yet.
I tried to access that page but failed.
--Sandeep

On Tue, Nov 23, 2010 at 1:38 PM, Paulraj, Sandeep s-paulraj@ti.com wrote:
I tried to access that page but failed.
Oh. Sorry, Sandeep. The webpage for the repo can be found at http://github.com/BenGardiner/u-boot-bg -- that page contains three URL variants for access to the repo.
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

Hi Sandeep,
On Tue, Nov 23, 2010 at 1:25 PM, Paulraj, Sandeep s-paulraj@ti.com wrote:
I have been tracking this e-mail chain for some time now and I have
lost
track of which patches to apply in which order.
Can someone please give me the correct order and the correct version
of
the patches?
The correct order and correct versions of the patches can be found in branch "testing-ea20-plus" of git://github.com/BenGardiner/u-boot-bg.git. The commit messages there do not include Sugosh's Tested-by: tag on the hawkboard patches, nor has he re-sent them to the ML yet.
I tried to access that page but failed.
I am able to clone the tree but I am unable to access it on the web

On Tue, Nov 23, 2010 at 1:44 PM, Paulraj, Sandeep s-paulraj@ti.com wrote:
I am able to clone the tree but I am unable to access it on the web
I'm very sorry for the trouble you've had accessing that repo -- I will happily switch to any other public git hosting service of your choosing for future merged series.
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

On Tue, Nov 23, 2010 at 1:44 PM, Paulraj, Sandeep s-paulraj@ti.com wrote:
I am able to clone the tree but I am unable to access it on the web
I'm very sorry for the trouble you've had accessing that repo -- I will happily switch to any other public git hosting service of your choosing for future merged series.
Not an issue at all.
In this case because of some major changes and multiple patch versions I lost track. Usually I pick it from the mailing list.
After Wolfgang accept my previous pull request, I'll get on with the program of merging these patches.
Thanks, Sandeep

On Tue, Nov 23, 2010 at 1:57 PM, Paulraj, Sandeep s-paulraj@ti.com wrote:
Not an issue at all.
In this case because of some major changes and multiple patch versions I lost track. Usually I pick it from the mailing list.
After Wolfgang accept my previous pull request, I'll get on with the program of merging these patches.
That is very exciting news! Thank you, Sandeep.
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

hi,
On Tue Nov 23, 2010 at 01:31:46PM -0500, Ben Gardiner wrote:
On Tue, Nov 23, 2010 at 1:25 PM, Paulraj, Sandeep s-paulraj@ti.com wrote:
I have been tracking this e-mail chain for some time now and I have lost track of which patches to apply in which order.
Can someone please give me the correct order and the correct version of the patches?
The correct order and correct versions of the patches can be found in branch "testing-ea20-plus" of git://github.com/BenGardiner/u-boot-bg.git. The commit messages there do not include Sugosh's Tested-by: tag on the hawkboard patches, nor has he re-sent them to the ML yet.
I will be sending the updated version based off Ben's tree tonight. Thanks.
-sughosh

hi Ben,
On Wed Nov 17, 2010 at 11:26:47AM -0500, Ben Gardiner wrote:
Hi Stefano,
On Wed, Nov 17, 2010 at 5:09 AM, Stefano Babic sbabic@denx.de wrote:
[...] diff --git a/arch/arm/include/asm/arch-davinci/da8xx_common.h b/arch/arm/include/asm/arch-davinci/da8xx_common.h deleted file mode 100644 index 8b564f7..0000000 --- a/arch/arm/include/asm/arch-davinci/da8xx_common.h +++ /dev/null @@ -1,33 +0,0 @@ -void irq_init(void); -int da8xx_configure_lpsc_items(const struct lpsc_resource *item,
- int n_items);
-#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) -void da850_emac_mii_mode_sel(int mode_sel); -#endif
I don't know what is the best way to proceed... I like the current state of this patch series. I was unable to apply the three patch series (Sugosh's, Yours and mine) in any order without conflicts.
I think you would need to rebase your patch 'da850: Add RMII support for EMAC', on top of my patches. I had made changes in the include/asm/arch-davinci/hardware.h and moved the board/davinci/da8xxevm/common.h, both of which you are making changes to. Stefano's patch series should then apply on top of your rebased patch. Missed out your patch, else would have flagged you in advance. Sorry about that.
-sughosh

Hi Sugosh,
On Thu, Nov 18, 2010 at 12:26 AM, Sughosh Ganu urwithsughosh@gmail.com wrote:
hi Ben,
On Wed Nov 17, 2010 at 11:26:47AM -0500, Ben Gardiner wrote:
Hi Stefano,
On Wed, Nov 17, 2010 at 5:09 AM, Stefano Babic sbabic@denx.de wrote:
[...] diff --git a/arch/arm/include/asm/arch-davinci/da8xx_common.h b/arch/arm/include/asm/arch-davinci/da8xx_common.h deleted file mode 100644 index 8b564f7..0000000 --- a/arch/arm/include/asm/arch-davinci/da8xx_common.h +++ /dev/null @@ -1,33 +0,0 @@ -void irq_init(void); -int da8xx_configure_lpsc_items(const struct lpsc_resource *item,
- int n_items);
-#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) -void da850_emac_mii_mode_sel(int mode_sel); -#endif
I don't know what is the best way to proceed... I like the current state of this patch series. I was unable to apply the three patch series (Sugosh's, Yours and mine) in any order without conflicts.
I think you would need to rebase your patch 'da850: Add RMII support for EMAC', on top of my patches. I had made changes in the
I agree. A respin is on the way
include/asm/arch-davinci/hardware.h and moved the board/davinci/da8xxevm/common.h, both of which you are making changes to. Stefano's patch series should then apply on top of your rebased patch. Missed out your patch, else would have flagged you in advance. Sorry about that.
No worries.
-- Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

As more Davinci 8xx board can be added, move common code to be shared between boards.
Signed-off-by: Stefano Babic sbabic@denx.de
* rebased ontop of Sugosh's patches * moving the HAWKBOARD_KICK{0,1}_UNLOCK defines to arch/arm/include/asm/arch-davinci/davinci_misc.h from to arch/arm/include/asm/arch-davinci/da8xx_common.h * don't define dram functions in PRELOADER * move sync_env_enetaddr into existing EMAC ifdef * use misc.c in hawkboard nand_spl
Signed-off-by: Ben Gardiner bengardiner@nanometrics.ca --- The patch was rebased by Ben Gardiner on top of the other patches actually posted to the ML. Thanks Ben for your work !
arch/arm/include/asm/arch-davinci/da8xx_common.h | 37 ------------ arch/arm/include/asm/arch-davinci/davinci_misc.h | 15 +++++ board/davinci/common/misc.c | 54 +++++++++++++++++- board/davinci/da8xxevm/Makefile | 1 - board/davinci/da8xxevm/common.c | 69 ---------------------- board/davinci/da8xxevm/da830evm.c | 1 - board/davinci/da8xxevm/da850evm.c | 3 +- board/davinci/da8xxevm/hawkboard.c | 1 - board/davinci/da8xxevm/hawkboard_nand_spl.c | 1 - nand_spl/board/davinci/da8xxevm/Makefile | 6 +- 10 files changed, 72 insertions(+), 116 deletions(-) delete mode 100644 arch/arm/include/asm/arch-davinci/da8xx_common.h delete mode 100644 board/davinci/da8xxevm/common.c
diff --git a/arch/arm/include/asm/arch-davinci/da8xx_common.h b/arch/arm/include/asm/arch-davinci/da8xx_common.h deleted file mode 100644 index e52f613..0000000 --- a/arch/arm/include/asm/arch-davinci/da8xx_common.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __COMMON_H -#define __COMMON_H - -#define HAWKBOARD_KICK0_UNLOCK 0x83e70b13 -#define HAWKBOARD_KICK1_UNLOCK 0x95a4f1e0 - -struct lpsc_resource { - const int lpsc_no; -}; - -void irq_init(void); -int da8xx_configure_lpsc_items(const struct lpsc_resource *item, - int n_items); - -#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) -void da850_emac_mii_mode_sel(int mode_sel); -#endif - -#endif /* __COMMON_H */ diff --git a/arch/arm/include/asm/arch-davinci/davinci_misc.h b/arch/arm/include/asm/arch-davinci/davinci_misc.h index a6ac3b9..347aa89 100644 --- a/arch/arm/include/asm/arch-davinci/davinci_misc.h +++ b/arch/arm/include/asm/arch-davinci/davinci_misc.h @@ -45,10 +45,25 @@ struct pinmux_resource { .n_pins = ARRAY_SIZE(item) \ }
+#define HAWKBOARD_KICK0_UNLOCK 0x83e70b13 +#define HAWKBOARD_KICK1_UNLOCK 0x95a4f1e0 + +struct lpsc_resource { + const int lpsc_no; +}; + int dvevm_read_mac_address(uint8_t *buf); void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr); int davinci_configure_pin_mux(const struct pinmux_config *pins, int n_pins); int davinci_configure_pin_mux_items(const struct pinmux_resource *item, int n_items); +#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) +void davinci_emac_mii_mode_sel(int mode_sel); +#endif +#if defined(CONFIG_SOC_DA8XX) +void irq_init(void); +int da8xx_configure_lpsc_items(const struct lpsc_resource *item, + const int n_items); +#endif
#endif /* __MISC_H */ diff --git a/board/davinci/common/misc.c b/board/davinci/common/misc.c index f25ad7e..08c898f 100644 --- a/board/davinci/common/misc.c +++ b/board/davinci/common/misc.c @@ -33,6 +33,7 @@
DECLARE_GLOBAL_DATA_PTR;
+#ifndef CONFIG_PRELOADER int dram_init(void) { /* dram_init must store complete ramsize in gd->ram_size */ @@ -47,6 +48,7 @@ void dram_init_banksize(void) gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; gd->bd->bi_dram[0].size = gd->ram_size; } +#endif
#ifdef CONFIG_DRIVER_TI_EMAC
@@ -76,6 +78,22 @@ err: }
/* + * Set the mii mode as MII or RMII + */ +#if defined(CONFIG_DRIVER_TI_EMAC) +void davinci_emac_mii_mode_sel(int mode_sel) +{ + int val; + + val = readl(&davinci_syscfg_regs->cfgchip3); + if (mode_sel == 0) + val &= ~(1 << 8); + else + val |= (1 << 8); + writel(val, &davinci_syscfg_regs->cfgchip3); +} +#endif +/* * If there is no MAC address in the environment, then it will be initialized * (silently) from the value in the EEPROM. */ @@ -94,4 +112,38 @@ void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr) } }
-#endif /* DAVINCI_EMAC */ +#endif /* CONFIG_DRIVER_TI_EMAC */ + +#if defined(CONFIG_SOC_DA8XX) +#ifndef CONFIG_USE_IRQ +void irq_init(void) +{ + /* + * Mask all IRQs by clearing the global enable and setting + * the enable clear for all the 90 interrupts. + */ + + writel(0, &davinci_aintc_regs->ger); + + writel(0, &davinci_aintc_regs->hier); + + writel(0xffffffff, &davinci_aintc_regs->ecr1); + writel(0xffffffff, &davinci_aintc_regs->ecr2); + writel(0xffffffff, &davinci_aintc_regs->ecr3); +} +#endif + +/* + * Enable PSC for various peripherals. + */ +int da8xx_configure_lpsc_items(const struct lpsc_resource *item, + const int n_items) +{ + int i; + + for (i = 0; i < n_items; i++) + lpsc_on(item[i].lpsc_no); + + return 0; +} +#endif diff --git a/board/davinci/da8xxevm/Makefile b/board/davinci/da8xxevm/Makefile index 1a67351..fbe29db 100644 --- a/board/davinci/da8xxevm/Makefile +++ b/board/davinci/da8xxevm/Makefile @@ -27,7 +27,6 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS-y += common.o COBJS-$(CONFIG_MACH_DAVINCI_DA830_EVM) += da830evm.o COBJS-$(CONFIG_MACH_DAVINCI_DA850_EVM) += da850evm.o COBJS-$(CONFIG_MACH_DAVINCI_HAWK) += hawkboard.o diff --git a/board/davinci/da8xxevm/common.c b/board/davinci/da8xxevm/common.c deleted file mode 100644 index 2d9a64b..0000000 --- a/board/davinci/da8xxevm/common.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Miscellaneous DA8XX functions. - * - * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include <asm/io.h> -#include <asm/arch/hardware.h> -#include <asm/arch/da8xx_common.h> - -#ifndef CONFIG_USE_IRQ -void irq_init(void) -{ - /* - * Mask all IRQs by clearing the global enable and setting - * the enable clear for all the 90 interrupts. - */ - - writel(0, &davinci_aintc_regs->ger); - - writel(0, &davinci_aintc_regs->hier); - - writel(0xffffffff, &davinci_aintc_regs->ecr1); - writel(0xffffffff, &davinci_aintc_regs->ecr2); - writel(0xffffffff, &davinci_aintc_regs->ecr3); -} -#endif - -/* - * Enable PSC for various peripherals. - */ -int da8xx_configure_lpsc_items(const struct lpsc_resource *item, - const int n_items) -{ - int i; - - for (i = 0; i < n_items; i++) - lpsc_on(item[i].lpsc_no); - - return 0; -} - -#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_MACH_DAVINCI_DA850_EVM) -void da850_emac_mii_mode_sel(int mode_sel) -{ - int val; - - val = readl(&davinci_syscfg_regs->cfgchip3); - if (mode_sel == 0) - val &= ~(1 << 8); - else - val |= (1 << 8); - writel(val, &davinci_syscfg_regs->cfgchip3); -} -#endif diff --git a/board/davinci/da8xxevm/da830evm.c b/board/davinci/da8xxevm/da830evm.c index b6b7e37..0650653 100644 --- a/board/davinci/da8xxevm/da830evm.c +++ b/board/davinci/da8xxevm/da830evm.c @@ -41,7 +41,6 @@ #include <asm/arch/emac_defs.h> #include <asm/io.h> #include <asm/arch/davinci_misc.h> -#include <asm/arch/da8xx_common.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c index a6e2dab..8bfd272 100644 --- a/board/davinci/da8xxevm/da850evm.c +++ b/board/davinci/da8xxevm/da850evm.c @@ -30,7 +30,6 @@ #include <asm/arch/emac_defs.h> #include <asm/io.h> #include <asm/arch/davinci_misc.h> -#include <asm/arch/da8xx_common.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -187,7 +186,7 @@ int board_init(void) if (davinci_configure_pin_mux(emac_pins, ARRAY_SIZE(emac_pins)) != 0) return 1;
- da850_emac_mii_mode_sel(HAS_RMII); + davinci_emac_mii_mode_sel(HAS_RMII); #endif /* CONFIG_DRIVER_TI_EMAC */
/* enable the console UART */ diff --git a/board/davinci/da8xxevm/hawkboard.c b/board/davinci/da8xxevm/hawkboard.c index b672c9d..f34830e 100644 --- a/board/davinci/da8xxevm/hawkboard.c +++ b/board/davinci/da8xxevm/hawkboard.c @@ -28,7 +28,6 @@ #include <asm/io.h> #include <asm/arch/davinci_misc.h> #include <ns16550.h> -#include <asm/arch/da8xx_common.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/board/davinci/da8xxevm/hawkboard_nand_spl.c b/board/davinci/da8xxevm/hawkboard_nand_spl.c index 74eec13..9155236 100644 --- a/board/davinci/da8xxevm/hawkboard_nand_spl.c +++ b/board/davinci/da8xxevm/hawkboard_nand_spl.c @@ -28,7 +28,6 @@ #include <asm/io.h> #include <asm/arch/davinci_misc.h> #include <ns16550.h> -#include <asm/arch/da8xx_common.h>
DECLARE_GLOBAL_DATA_PTR;
diff --git a/nand_spl/board/davinci/da8xxevm/Makefile b/nand_spl/board/davinci/da8xxevm/Makefile index 6102675..4cae223 100644 --- a/nand_spl/board/davinci/da8xxevm/Makefile +++ b/nand_spl/board/davinci/da8xxevm/Makefile @@ -35,7 +35,7 @@ CFLAGS += -DCONFIG_PRELOADER -DCONFIG_NAND_SPL
SOBJS = start.o _udivsi3.o _divsi3.o COBJS = cpu.o davinci_nand.o ns16550.o div0.o davinci_pinmux.o psc.o \ - common.o hawkboard_nand_spl.o nand_boot.o + misc.o hawkboard_nand_spl.o nand_boot.o
SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c)) OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) @@ -116,9 +116,9 @@ $(obj)hawkboard_nand_spl.c: ln -s $(TOPDIR)/board/davinci/da8xxevm/hawkboard_nand_spl.c $@
# from board directory -$(obj)common.c: +$(obj)misc.c: @rm -f $@ - ln -s $(TOPDIR)/board/davinci/da8xxevm/common.c $@ + ln -s $(TOPDIR)/board/davinci/common/misc.c $@
$(obj)psc.c: @rm -f $@

Sugosh and Stefano,
On Fri, Nov 19, 2010 at 2:23 AM, Sughosh Ganu urwithsughosh@gmail.com wrote:
Thanks for all the work. I will be able to test these changes only next week. I will test them on hawkboard and update you. Thanks.
You're very welcome. Looking forward to it.
On Fri, Nov 19, 2010 at 9:35 AM, Stefano Babic sbabic@denx.de wrote:
[...] The patch was rebased by Ben Gardiner on top of the other patches actually posted to the ML. Thanks Ben for your work !
You're very welcome. I'm glad you found it useful.
We are happy to see the omap-L138 support in u-boot moving forward. We would like to get either SD or USB (or both) omapL138 support upstream next. Does the ea20 have USB or SD? Will the hawkboard u-boot support include USB or SD support?
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

On 11/19/2010 04:16 PM, Ben Gardiner wrote:
You're very welcome. I'm glad you found it useful.
We are happy to see the omap-L138 support in u-boot moving forward. We would like to get either SD or USB (or both) omapL138 support upstream next. Does the ea20 have USB or SD?
Hi Ben,
there is at the moment no plan to add support to ea20 for USB or SD. However, Things could be changed when a new revision of hardware will become available (at the beginning of next years).
Patches to add SD support was already sent to the ML, I see the ACK by the MMC maintainer:
http://www.mail-archive.com/u-boot@lists.denx.de/msg32375.html
It seems to me the only reason the patch did not go to the mainline was to understand who should merge it and then push to Wolfgang.
Probably what we need is to check again the status of this patch. I cannot find it on patchwork, it looks like it was missed ;-(.
I see a patch to enable USB in da850evm, too::
http://patchwork.ozlabs.org/patch/71817/
Best regards, Stefano Babic

Hi Stefano,
On Mon, Nov 22, 2010 at 2:28 AM, Stefano Babic sbabic@denx.de wrote:
[...]
there is at the moment no plan to add support to ea20 for USB or SD. However, Things could be changed when a new revision of hardware will become available (at the beginning of next years).
Thank you for the follow-up.
Patches to add SD support was already sent to the ML, I see the ACK by the MMC maintainer:
http://www.mail-archive.com/u-boot@lists.denx.de/msg32375.html
It seems to me the only reason the patch did not go to the mainline was to understand who should merge it and then push to Wolfgang.
Probably what we need is to check again the status of this patch. I cannot find it on patchwork, it looks like it was missed ;-(.
I see a patch to enable USB in da850evm, too::
Nice finds. Both of those patches look applicable -- thank you, Stefano. I can't say that I will be starting an effort to apply/port these to da850evm immeadiately. But now I have a great place to start when I do.
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

http://www.mail-archive.com/u-boot@lists.denx.de/msg32375.html
Sadly that patch never made it to the mainline
It seems to me the only reason the patch did not go to the mainline was to understand who should merge it and then push to Wolfgang.
Usually I take small changes to the other subsystems with an ACK from the maintainer and I merge it myself. The series in question was part of a set of I believe 9 patches which made quite a few changes to the MMC subsystem.
I asked the author to resubmit patches quite a few times but have not received a response. If anybody can do the rebasing and testing that would be welcome.
Probably what we need is to check again the status of this patch. I cannot find it on patchwork, it looks like it was missed ;-(.
I see a patch to enable USB in da850evm, too::
--Sandeep

hi Ben,
On Fri Nov 19, 2010 at 10:16:09AM -0500, Ben Gardiner wrote:
We are happy to see the omap-L138 support in u-boot moving forward. We would like to get either SD or USB (or both) omapL138 support upstream next. Does the ea20 have USB or SD? Will the hawkboard u-boot support include USB or SD support?
Sorry for the late response. I will start working on getting the USB stuff in after the base port has gone into mainline. This might take some time though, as i am not much familiar with the USB related code.
-sughosh

Hi Sugosh,
On Wed, Nov 24, 2010 at 2:23 AM, Sughosh Ganu urwithsughosh@gmail.com wrote:
hi Ben,
On Fri Nov 19, 2010 at 10:16:09AM -0500, Ben Gardiner wrote:
We are happy to see the omap-L138 support in u-boot moving forward. We would like to get either SD or USB (or both) omapL138 support upstream next. Does the ea20 have USB or SD? Will the hawkboard u-boot support include USB or SD support?
Sorry for the late response. I will start working on getting the USB stuff in after the base port has gone into mainline. This might take some time though, as i am not much familiar with the USB related code.
No problem. That's great news. We'll be happy to help test and/or review those patches when you're ready.
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca

This board uses the OMAP-L138 SOM stacked on a custom baseboard. It supports SPI Flash, Ethernet with RMII.
Signed-off-by: Stefano Babic sbabic@denx.de
rebased on top of Sugosh's patches. merge in boards.cfg
Signed-off-by: Ben Gardiner bengardiner@nanometrics.ca --- MAINTAINERS | 1 + board/davinci/ea20/Makefile | 53 ++++++++++++ board/davinci/ea20/ea20.c | 196 +++++++++++++++++++++++++++++++++++++++++++ boards.cfg | 1 + include/configs/ea20.h | 192 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 443 insertions(+), 0 deletions(-) create mode 100644 board/davinci/ea20/Makefile create mode 100644 board/davinci/ea20/ea20.c create mode 100644 include/configs/ea20.h
diff --git a/MAINTAINERS b/MAINTAINERS index 2a7d23d..ac2b94e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -551,6 +551,7 @@ Rowel Atienza rowel@diwalabs.com
Stefano Babic sbabic@denx.de
+ ea20 davinci polaris xscale trizepsiv xscale mx51evk i.MX51 diff --git a/board/davinci/ea20/Makefile b/board/davinci/ea20/Makefile new file mode 100644 index 0000000..ddd2564 --- /dev/null +++ b/board/davinci/ea20/Makefile @@ -0,0 +1,53 @@ +# +# (C) Copyright 2000, 2001, 2002 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# Copyright (C) 2007 Sergey Kubushyn ksi@koi8.net +# +# See file CREDITS for list of people who contributed to this +# project. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# + +include $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).a + +COBJS-y += ea20.o + +COBJS := $(COBJS-y) + +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS)) + +$(LIB): $(obj).depend $(OBJS) $(SOBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak *~ .depend + +######################################################################### +# This is for $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/davinci/ea20/ea20.c b/board/davinci/ea20/ea20.c new file mode 100644 index 0000000..9d0f71b --- /dev/null +++ b/board/davinci/ea20/ea20.c @@ -0,0 +1,196 @@ +/* + * (C) Copyright 2010 + * Stefano Babic, DENX Software Engineering, sbabic@denx.de + * + * Based on da850evm.c, original Copyrights follow: + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * Based on da830evm.c. Original Copyrights follow: + * + * Copyright (C) 2009 Nick Thompson, GE Fanuc, Ltd. nick.thompson@gefanuc.com + * Copyright (C) 2007 Sergey Kubushyn ksi@koi8.net + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <common.h> +#include <i2c.h> +#include <net.h> +#include <netdev.h> +#include <asm/arch/hardware.h> +#include <asm/arch/emif_defs.h> +#include <asm/arch/emac_defs.h> +#include <asm/io.h> +#include <asm/arch/davinci_misc.h> + +DECLARE_GLOBAL_DATA_PTR; + +#define pinmux(x) (&davinci_syscfg_regs->pinmux[x]) + +/* SPI0 pin muxer settings */ +static const struct pinmux_config spi1_pins[] = { + { pinmux(5), 1, 1 }, + { pinmux(5), 1, 2 }, + { pinmux(5), 1, 4 }, + { pinmux(5), 1, 5 } +}; + +/* UART pin muxer settings */ +static const struct pinmux_config uart_pins[] = { + { pinmux(0), 4, 6 }, + { pinmux(0), 4, 7 }, + { pinmux(4), 2, 4 }, + { pinmux(4), 2, 5 } +}; + +#ifdef CONFIG_DRIVER_TI_EMAC +#define HAS_RMII 1 +static const struct pinmux_config emac_pins[] = { + { pinmux(14), 8, 2 }, + { pinmux(14), 8, 3 }, + { pinmux(14), 8, 4 }, + { pinmux(14), 8, 5 }, + { pinmux(14), 8, 6 }, + { pinmux(14), 8, 7 }, + { pinmux(15), 8, 1 }, + { pinmux(4), 8, 0 }, + { pinmux(4), 8, 1 } +}; +#endif + +#ifdef CONFIG_NAND_DAVINCI +const struct pinmux_config nand_pins[] = { + { pinmux(7), 1, 1 }, + { pinmux(7), 1, 2 }, + { pinmux(7), 1, 4 }, + { pinmux(7), 1, 5 }, + { pinmux(9), 1, 0 }, + { pinmux(9), 1, 1 }, + { pinmux(9), 1, 2 }, + { pinmux(9), 1, 3 }, + { pinmux(9), 1, 4 }, + { pinmux(9), 1, 5 }, + { pinmux(9), 1, 6 }, + { pinmux(9), 1, 7 }, + { pinmux(12), 1, 5 }, + { pinmux(12), 1, 6 } +}; +#endif + +static const struct pinmux_resource pinmuxes[] = { +#ifdef CONFIG_SPI_FLASH + PINMUX_ITEM(spi1_pins), +#endif + PINMUX_ITEM(uart_pins), +#ifdef CONFIG_NAND_DAVINCI + PINMUX_ITEM(nand_pins), +#endif +}; + +static const struct lpsc_resource lpsc[] = { + { DAVINCI_LPSC_AEMIF }, /* NAND, NOR */ + { DAVINCI_LPSC_SPI1 }, /* Serial Flash */ + { DAVINCI_LPSC_EMAC }, /* image download */ + { DAVINCI_LPSC_UART2 }, /* console */ + { DAVINCI_LPSC_GPIO }, +}; + +int board_init(void) +{ +#ifndef CONFIG_USE_IRQ + irq_init(); +#endif + + +#ifdef CONFIG_NAND_DAVINCI + /* + * NAND CS setup - cycle counts based on da850evm NAND timings in the + * Linux kernel @ 25MHz EMIFA + */ + writel((DAVINCI_ABCR_WSETUP(0) | + DAVINCI_ABCR_WSTROBE(0) | + DAVINCI_ABCR_WHOLD(0) | + DAVINCI_ABCR_RSETUP(0) | + DAVINCI_ABCR_RSTROBE(1) | + DAVINCI_ABCR_RHOLD(0) | + DAVINCI_ABCR_TA(0) | + DAVINCI_ABCR_ASIZE_8BIT), + &davinci_emif_regs->ab2cr); /* CS3 */ +#endif + + /* arch number of the board */ + gd->bd->bi_arch_number = MACH_TYPE_EA20; + + /* address of boot parameters */ + gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR; + + /* + * Power on required peripherals + * ARM does not have access by default to PSC0 and PSC1 + * assuming here that the DSP bootloader has set the IOPU + * such that PSC access is available to ARM + */ + if (da8xx_configure_lpsc_items(lpsc, ARRAY_SIZE(lpsc))) + return 1; + + /* setup the SUSPSRC for ARM to control emulation suspend */ + writel(readl(&davinci_syscfg_regs->suspsrc) & + ~(DAVINCI_SYSCFG_SUSPSRC_EMAC | DAVINCI_SYSCFG_SUSPSRC_I2C | + DAVINCI_SYSCFG_SUSPSRC_SPI1 | DAVINCI_SYSCFG_SUSPSRC_TIMER0 | + DAVINCI_SYSCFG_SUSPSRC_UART2), + &davinci_syscfg_regs->suspsrc); + + /* configure pinmux settings */ + if (davinci_configure_pin_mux_items(pinmuxes, ARRAY_SIZE(pinmuxes))) + return 1; + +#ifdef CONFIG_DRIVER_TI_EMAC + if (davinci_configure_pin_mux(emac_pins, ARRAY_SIZE(emac_pins)) != 0) + return 1; + + davinci_emac_mii_mode_sel(HAS_RMII); +#endif /* CONFIG_DRIVER_TI_EMAC */ + + /* enable the console UART */ + writel((DAVINCI_UART_PWREMU_MGMT_FREE | DAVINCI_UART_PWREMU_MGMT_URRST | + DAVINCI_UART_PWREMU_MGMT_UTRST), + &davinci_uart2_ctrl_regs->pwremu_mgmt); + + return 0; +} + +#ifdef CONFIG_DRIVER_TI_EMAC + +/* + * Initializes on-board ethernet controllers. + */ +int board_eth_init(bd_t *bis) +{ + if (!davinci_emac_initialize()) { + printf("Error: Ethernet init failed!\n"); + return -1; + } + + /* + * This board has a RMII PHY. However, the MDC line on the SOM + * must not be disabled (there is no MII PHY on the + * baseboard) via the GPIO2[6], because this pin + * disables at the same time the SPI flash. + */ + + return 0; +} +#endif /* CONFIG_DRIVER_TI_EMAC */ diff --git a/boards.cfg b/boards.cfg index 3f2cbd7..56b2495 100644 --- a/boards.cfg +++ b/boards.cfg @@ -375,6 +375,7 @@ da850evm arm arm926ejs da8xxevm davinci davinci hawkboard arm arm926ejs da8xxevm davinci davinci hawkboard:SYS_TEXT_BASE=0xc1180000 hawkboard_nand arm arm926ejs da8xxevm davinci davinci hawkboard:SYS_TEXT_BASE=0xc1080000,NAND_U_BOOT hawkboard_uart arm arm926ejs da8xxevm davinci davinci hawkboard:SYS_TEXT_BASE=0xc1080000 +ea20 arm arm926ejs ea20 davinci davinci guruplug arm arm926ejs - Marvell kirkwood mv88f6281gtw_ge arm arm926ejs - Marvell kirkwood openrd_base arm arm926ejs - Marvell kirkwood diff --git a/include/configs/ea20.h b/include/configs/ea20.h new file mode 100644 index 0000000..48ce945 --- /dev/null +++ b/include/configs/ea20.h @@ -0,0 +1,192 @@ +/* + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * Based on davinci_dvevm.h. Original Copyrights follow: + * + * Copyright (C) 2007 Sergey Kubushyn ksi@koi8.net + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * Board + */ +#define CONFIG_DRIVER_TI_EMAC +#define CONFIG_USE_SPIFLASH +#define CONFIG_DRIVER_TI_EMAC_USE_RMII + +/* + * SoC Configuration + */ +#define CONFIG_MACH_DAVINCI_DA850_EVM +#define CONFIG_ARM926EJS /* arm926ejs CPU core */ +#define CONFIG_SOC_DA8XX /* TI DA8xx SoC */ +#define CONFIG_SYS_CLK_FREQ clk_get(DAVINCI_ARM_CLKID) +#define CONFIG_SYS_OSCIN_FREQ 24000000 +#define CONFIG_SYS_TIMERBASE DAVINCI_TIMER0_BASE +#define CONFIG_SYS_HZ_CLOCK clk_get(DAVINCI_AUXCLK_CLKID) +#define CONFIG_SYS_HZ 1000 +#define CONFIG_SKIP_LOWLEVEL_INIT +#define CONFIG_SYS_TEXT_BASE 0xc1080000 + +/* + * Memory Info + */ +#define CONFIG_SYS_MALLOC_LEN (0x10000 + 1*1024*1024) /* malloc() len */ +#define PHYS_SDRAM_1 DAVINCI_DDR_EMIF_DATA_BASE /* DDR Start */ +#define PHYS_SDRAM_1_SIZE (64 << 20) /* SDRAM size 64MB */ +#define CONFIG_MAX_RAM_BANK_SIZE (512 << 20) /* max size from SPRS586*/ + +/* memtest start addr */ +#define CONFIG_SYS_MEMTEST_START (PHYS_SDRAM_1 + 0x2000000) + +/* memtest will be run on 16MB */ +#define CONFIG_SYS_MEMTEST_END (PHYS_SDRAM_1 + 0x2000000 + 16*1024*1024) + +#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */ +#define CONFIG_STACKSIZE (256*1024) /* regular stack */ + +/* + * Serial Driver info + */ +#define CONFIG_SYS_NS16550 +#define CONFIG_SYS_NS16550_SERIAL +#define CONFIG_SYS_NS16550_REG_SIZE -4 /* NS16550 register size */ +#define CONFIG_SYS_NS16550_COM1 DAVINCI_UART2_BASE /* Base address of UART2 */ +#define CONFIG_SYS_NS16550_CLK clk_get(DAVINCI_UART2_CLKID) +#define CONFIG_CONS_INDEX 1 /* use UART0 for console */ +#define CONFIG_BAUDRATE 115200 /* Default baud rate */ +#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_SPI +#define CONFIG_SPI_FLASH +#define CONFIG_SPI_FLASH_STMICRO +#define CONFIG_DAVINCI_SPI +#define CONFIG_SYS_SPI_BASE DAVINCI_SPI1_BASE +#define CONFIG_SYS_SPI_CLK clk_get(DAVINCI_SPI1_CLKID) +#define CONFIG_SF_DEFAULT_SPEED 30000000 +#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED + +/* + * Network & Ethernet Configuration + */ +#ifdef CONFIG_DRIVER_TI_EMAC +#define CONFIG_EMAC_MDIO_PHY_NUM 0 +#define CONFIG_MII +#define CONFIG_BOOTP_DEFAULT +#define CONFIG_BOOTP_DNS +#define CONFIG_BOOTP_DNS2 +#define CONFIG_BOOTP_SEND_HOSTNAME +#define CONFIG_NET_RETRY_COUNT 10 +#define CONFIG_NET_MULTI +#endif + +#ifdef CONFIG_USE_SPIFLASH +#undef CONFIG_ENV_IS_IN_FLASH +#undef CONFIG_ENV_IS_IN_NAND +#define CONFIG_ENV_IS_IN_SPI_FLASH +#define CONFIG_ENV_SIZE (8 << 10) +#define CONFIG_ENV_OFFSET (256 << 10) +#define CONFIG_ENV_SECT_SIZE (64 << 10) +#define CONFIG_SYS_NO_FLASH +#endif + +/* + * U-Boot general configuration + */ +#define CONFIG_BOOTFILE "uImage" /* Boot file name */ +#define CONFIG_SYS_PROMPT "ea20 > " /* Command Prompt */ +#define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer Size */ +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) +#define CONFIG_SYS_MAXARGS 16 /* max number of command args */ +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE /* Boot Args Buffer Size */ +#define CONFIG_SYS_LOAD_ADDR (PHYS_SDRAM_1 + 0x700000) +#define CONFIG_VERSION_VARIABLE +#define CONFIG_AUTO_COMPLETE +#define CONFIG_SYS_HUSH_PARSER +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> " +#define CONFIG_CMDLINE_EDITING +#define CONFIG_SYS_LONGHELP +#define CONFIG_CRC32_VERIFY +#define CONFIG_MX_CYCLIC + +/* + * Linux Information + */ +#define LINUX_BOOT_PARAM_ADDR (PHYS_SDRAM_1 + 0x100) +#define CONFIG_CMDLINE_TAG +#define CONFIG_SETUP_MEMORY_TAGS +#define CONFIG_BOOTDELAY 3 + +/* + * U-Boot commands + */ +#include <config_cmd_default.h> +#define CONFIG_CMD_ENV +#define CONFIG_CMD_ASKENV +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_DIAG +#define CONFIG_CMD_MII +#define CONFIG_CMD_PING +#define CONFIG_CMD_SAVES +#define CONFIG_CMD_MEMORY + +#ifndef CONFIG_DRIVER_TI_EMAC +#undef CONFIG_CMD_NET +#undef CONFIG_CMD_DHCP +#undef CONFIG_CMD_MII +#undef CONFIG_CMD_PING +#endif + +#ifdef CONFIG_USE_NAND +#undef CONFIG_CMD_FLASH +#undef CONFIG_CMD_IMLS +#define CONFIG_CMD_NAND + +#define CONFIG_CMD_MTDPARTS +#define CONFIG_MTD_DEVICE +#define CONFIG_MTD_PARTITIONS +#define CONFIG_LZO +#define CONFIG_RBTREE +#define CONFIG_CMD_UBI +#define CONFIG_CMD_UBIFS +#endif + +#ifdef CONFIG_USE_SPIFLASH +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_FLASH +#define CONFIG_CMD_SPI +#define CONFIG_CMD_SF +#define CONFIG_CMD_SAVEENV +#endif + +#if !defined(CONFIG_USE_NAND) && \ + !defined(CONFIG_USE_NOR) && \ + !defined(CONFIG_USE_SPIFLASH) +#define CONFIG_ENV_IS_NOWHERE +#define CONFIG_SYS_NO_FLASH +#define CONFIG_ENV_SIZE (16 << 10) +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_ENV +#endif + +/* additions for new relocation code, must added to all boards */ +#define CONFIG_SYS_SDRAM_BASE 0xc0000000 +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x1000 - \ + GENERATED_GBL_DATA_SIZE) +#endif /* __CONFIG_H */

This board uses the OMAP-L138 SOM stacked on a custom baseboard. It supports SPI Flash, Ethernet with RMII.
Signed-off-by: Stefano Babic sbabic@denx.de --- MAINTAINERS | 1 + board/davinci/ea20/Makefile | 53 ++++++++++++ board/davinci/ea20/ea20.c | 196 +++++++++++++++++++++++++++++++++++++++++++ boards.cfg | 1 + include/configs/ea20.h | 192 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 443 insertions(+), 0 deletions(-) create mode 100644 board/davinci/ea20/Makefile create mode 100644 board/davinci/ea20/ea20.c create mode 100644 include/configs/ea20.h
diff --git a/MAINTAINERS b/MAINTAINERS index 9258cb1..386a7b9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -551,6 +551,7 @@ Rowel Atienza rowel@diwalabs.com
Stefano Babic sbabic@denx.de
+ ea20 davinci polaris xscale trizepsiv xscale mx51evk i.MX51 diff --git a/board/davinci/ea20/Makefile b/board/davinci/ea20/Makefile new file mode 100644 index 0000000..ddd2564 --- /dev/null +++ b/board/davinci/ea20/Makefile @@ -0,0 +1,53 @@ +# +# (C) Copyright 2000, 2001, 2002 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# Copyright (C) 2007 Sergey Kubushyn ksi@koi8.net +# +# See file CREDITS for list of people who contributed to this +# project. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# + +include $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).a + +COBJS-y += ea20.o + +COBJS := $(COBJS-y) + +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS)) + +$(LIB): $(obj).depend $(OBJS) $(SOBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak *~ .depend + +######################################################################### +# This is for $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/davinci/ea20/ea20.c b/board/davinci/ea20/ea20.c new file mode 100644 index 0000000..9d0f71b --- /dev/null +++ b/board/davinci/ea20/ea20.c @@ -0,0 +1,196 @@ +/* + * (C) Copyright 2010 + * Stefano Babic, DENX Software Engineering, sbabic@denx.de + * + * Based on da850evm.c, original Copyrights follow: + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * Based on da830evm.c. Original Copyrights follow: + * + * Copyright (C) 2009 Nick Thompson, GE Fanuc, Ltd. nick.thompson@gefanuc.com + * Copyright (C) 2007 Sergey Kubushyn ksi@koi8.net + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <common.h> +#include <i2c.h> +#include <net.h> +#include <netdev.h> +#include <asm/arch/hardware.h> +#include <asm/arch/emif_defs.h> +#include <asm/arch/emac_defs.h> +#include <asm/io.h> +#include <asm/arch/davinci_misc.h> + +DECLARE_GLOBAL_DATA_PTR; + +#define pinmux(x) (&davinci_syscfg_regs->pinmux[x]) + +/* SPI0 pin muxer settings */ +static const struct pinmux_config spi1_pins[] = { + { pinmux(5), 1, 1 }, + { pinmux(5), 1, 2 }, + { pinmux(5), 1, 4 }, + { pinmux(5), 1, 5 } +}; + +/* UART pin muxer settings */ +static const struct pinmux_config uart_pins[] = { + { pinmux(0), 4, 6 }, + { pinmux(0), 4, 7 }, + { pinmux(4), 2, 4 }, + { pinmux(4), 2, 5 } +}; + +#ifdef CONFIG_DRIVER_TI_EMAC +#define HAS_RMII 1 +static const struct pinmux_config emac_pins[] = { + { pinmux(14), 8, 2 }, + { pinmux(14), 8, 3 }, + { pinmux(14), 8, 4 }, + { pinmux(14), 8, 5 }, + { pinmux(14), 8, 6 }, + { pinmux(14), 8, 7 }, + { pinmux(15), 8, 1 }, + { pinmux(4), 8, 0 }, + { pinmux(4), 8, 1 } +}; +#endif + +#ifdef CONFIG_NAND_DAVINCI +const struct pinmux_config nand_pins[] = { + { pinmux(7), 1, 1 }, + { pinmux(7), 1, 2 }, + { pinmux(7), 1, 4 }, + { pinmux(7), 1, 5 }, + { pinmux(9), 1, 0 }, + { pinmux(9), 1, 1 }, + { pinmux(9), 1, 2 }, + { pinmux(9), 1, 3 }, + { pinmux(9), 1, 4 }, + { pinmux(9), 1, 5 }, + { pinmux(9), 1, 6 }, + { pinmux(9), 1, 7 }, + { pinmux(12), 1, 5 }, + { pinmux(12), 1, 6 } +}; +#endif + +static const struct pinmux_resource pinmuxes[] = { +#ifdef CONFIG_SPI_FLASH + PINMUX_ITEM(spi1_pins), +#endif + PINMUX_ITEM(uart_pins), +#ifdef CONFIG_NAND_DAVINCI + PINMUX_ITEM(nand_pins), +#endif +}; + +static const struct lpsc_resource lpsc[] = { + { DAVINCI_LPSC_AEMIF }, /* NAND, NOR */ + { DAVINCI_LPSC_SPI1 }, /* Serial Flash */ + { DAVINCI_LPSC_EMAC }, /* image download */ + { DAVINCI_LPSC_UART2 }, /* console */ + { DAVINCI_LPSC_GPIO }, +}; + +int board_init(void) +{ +#ifndef CONFIG_USE_IRQ + irq_init(); +#endif + + +#ifdef CONFIG_NAND_DAVINCI + /* + * NAND CS setup - cycle counts based on da850evm NAND timings in the + * Linux kernel @ 25MHz EMIFA + */ + writel((DAVINCI_ABCR_WSETUP(0) | + DAVINCI_ABCR_WSTROBE(0) | + DAVINCI_ABCR_WHOLD(0) | + DAVINCI_ABCR_RSETUP(0) | + DAVINCI_ABCR_RSTROBE(1) | + DAVINCI_ABCR_RHOLD(0) | + DAVINCI_ABCR_TA(0) | + DAVINCI_ABCR_ASIZE_8BIT), + &davinci_emif_regs->ab2cr); /* CS3 */ +#endif + + /* arch number of the board */ + gd->bd->bi_arch_number = MACH_TYPE_EA20; + + /* address of boot parameters */ + gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR; + + /* + * Power on required peripherals + * ARM does not have access by default to PSC0 and PSC1 + * assuming here that the DSP bootloader has set the IOPU + * such that PSC access is available to ARM + */ + if (da8xx_configure_lpsc_items(lpsc, ARRAY_SIZE(lpsc))) + return 1; + + /* setup the SUSPSRC for ARM to control emulation suspend */ + writel(readl(&davinci_syscfg_regs->suspsrc) & + ~(DAVINCI_SYSCFG_SUSPSRC_EMAC | DAVINCI_SYSCFG_SUSPSRC_I2C | + DAVINCI_SYSCFG_SUSPSRC_SPI1 | DAVINCI_SYSCFG_SUSPSRC_TIMER0 | + DAVINCI_SYSCFG_SUSPSRC_UART2), + &davinci_syscfg_regs->suspsrc); + + /* configure pinmux settings */ + if (davinci_configure_pin_mux_items(pinmuxes, ARRAY_SIZE(pinmuxes))) + return 1; + +#ifdef CONFIG_DRIVER_TI_EMAC + if (davinci_configure_pin_mux(emac_pins, ARRAY_SIZE(emac_pins)) != 0) + return 1; + + davinci_emac_mii_mode_sel(HAS_RMII); +#endif /* CONFIG_DRIVER_TI_EMAC */ + + /* enable the console UART */ + writel((DAVINCI_UART_PWREMU_MGMT_FREE | DAVINCI_UART_PWREMU_MGMT_URRST | + DAVINCI_UART_PWREMU_MGMT_UTRST), + &davinci_uart2_ctrl_regs->pwremu_mgmt); + + return 0; +} + +#ifdef CONFIG_DRIVER_TI_EMAC + +/* + * Initializes on-board ethernet controllers. + */ +int board_eth_init(bd_t *bis) +{ + if (!davinci_emac_initialize()) { + printf("Error: Ethernet init failed!\n"); + return -1; + } + + /* + * This board has a RMII PHY. However, the MDC line on the SOM + * must not be disabled (there is no MII PHY on the + * baseboard) via the GPIO2[6], because this pin + * disables at the same time the SPI flash. + */ + + return 0; +} +#endif /* CONFIG_DRIVER_TI_EMAC */ diff --git a/boards.cfg b/boards.cfg index 08e531e..b4fe8f5 100644 --- a/boards.cfg +++ b/boards.cfg @@ -372,6 +372,7 @@ davinci_sffsdr arm arm926ejs sffsdr davinci davinci davinci_sonata arm arm926ejs sonata davinci davinci da830evm arm arm926ejs da8xxevm davinci davinci da850evm arm arm926ejs da8xxevm davinci davinci +ea20 arm arm926ejs ea20 davinci davinci guruplug arm arm926ejs - Marvell kirkwood mv88f6281gtw_ge arm arm926ejs - Marvell kirkwood openrd_base arm arm926ejs - Marvell kirkwood diff --git a/include/configs/ea20.h b/include/configs/ea20.h new file mode 100644 index 0000000..48ce945 --- /dev/null +++ b/include/configs/ea20.h @@ -0,0 +1,192 @@ +/* + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * Based on davinci_dvevm.h. Original Copyrights follow: + * + * Copyright (C) 2007 Sergey Kubushyn ksi@koi8.net + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * Board + */ +#define CONFIG_DRIVER_TI_EMAC +#define CONFIG_USE_SPIFLASH +#define CONFIG_DRIVER_TI_EMAC_USE_RMII + +/* + * SoC Configuration + */ +#define CONFIG_MACH_DAVINCI_DA850_EVM +#define CONFIG_ARM926EJS /* arm926ejs CPU core */ +#define CONFIG_SOC_DA8XX /* TI DA8xx SoC */ +#define CONFIG_SYS_CLK_FREQ clk_get(DAVINCI_ARM_CLKID) +#define CONFIG_SYS_OSCIN_FREQ 24000000 +#define CONFIG_SYS_TIMERBASE DAVINCI_TIMER0_BASE +#define CONFIG_SYS_HZ_CLOCK clk_get(DAVINCI_AUXCLK_CLKID) +#define CONFIG_SYS_HZ 1000 +#define CONFIG_SKIP_LOWLEVEL_INIT +#define CONFIG_SYS_TEXT_BASE 0xc1080000 + +/* + * Memory Info + */ +#define CONFIG_SYS_MALLOC_LEN (0x10000 + 1*1024*1024) /* malloc() len */ +#define PHYS_SDRAM_1 DAVINCI_DDR_EMIF_DATA_BASE /* DDR Start */ +#define PHYS_SDRAM_1_SIZE (64 << 20) /* SDRAM size 64MB */ +#define CONFIG_MAX_RAM_BANK_SIZE (512 << 20) /* max size from SPRS586*/ + +/* memtest start addr */ +#define CONFIG_SYS_MEMTEST_START (PHYS_SDRAM_1 + 0x2000000) + +/* memtest will be run on 16MB */ +#define CONFIG_SYS_MEMTEST_END (PHYS_SDRAM_1 + 0x2000000 + 16*1024*1024) + +#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */ +#define CONFIG_STACKSIZE (256*1024) /* regular stack */ + +/* + * Serial Driver info + */ +#define CONFIG_SYS_NS16550 +#define CONFIG_SYS_NS16550_SERIAL +#define CONFIG_SYS_NS16550_REG_SIZE -4 /* NS16550 register size */ +#define CONFIG_SYS_NS16550_COM1 DAVINCI_UART2_BASE /* Base address of UART2 */ +#define CONFIG_SYS_NS16550_CLK clk_get(DAVINCI_UART2_CLKID) +#define CONFIG_CONS_INDEX 1 /* use UART0 for console */ +#define CONFIG_BAUDRATE 115200 /* Default baud rate */ +#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_SPI +#define CONFIG_SPI_FLASH +#define CONFIG_SPI_FLASH_STMICRO +#define CONFIG_DAVINCI_SPI +#define CONFIG_SYS_SPI_BASE DAVINCI_SPI1_BASE +#define CONFIG_SYS_SPI_CLK clk_get(DAVINCI_SPI1_CLKID) +#define CONFIG_SF_DEFAULT_SPEED 30000000 +#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED + +/* + * Network & Ethernet Configuration + */ +#ifdef CONFIG_DRIVER_TI_EMAC +#define CONFIG_EMAC_MDIO_PHY_NUM 0 +#define CONFIG_MII +#define CONFIG_BOOTP_DEFAULT +#define CONFIG_BOOTP_DNS +#define CONFIG_BOOTP_DNS2 +#define CONFIG_BOOTP_SEND_HOSTNAME +#define CONFIG_NET_RETRY_COUNT 10 +#define CONFIG_NET_MULTI +#endif + +#ifdef CONFIG_USE_SPIFLASH +#undef CONFIG_ENV_IS_IN_FLASH +#undef CONFIG_ENV_IS_IN_NAND +#define CONFIG_ENV_IS_IN_SPI_FLASH +#define CONFIG_ENV_SIZE (8 << 10) +#define CONFIG_ENV_OFFSET (256 << 10) +#define CONFIG_ENV_SECT_SIZE (64 << 10) +#define CONFIG_SYS_NO_FLASH +#endif + +/* + * U-Boot general configuration + */ +#define CONFIG_BOOTFILE "uImage" /* Boot file name */ +#define CONFIG_SYS_PROMPT "ea20 > " /* Command Prompt */ +#define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer Size */ +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) +#define CONFIG_SYS_MAXARGS 16 /* max number of command args */ +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE /* Boot Args Buffer Size */ +#define CONFIG_SYS_LOAD_ADDR (PHYS_SDRAM_1 + 0x700000) +#define CONFIG_VERSION_VARIABLE +#define CONFIG_AUTO_COMPLETE +#define CONFIG_SYS_HUSH_PARSER +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> " +#define CONFIG_CMDLINE_EDITING +#define CONFIG_SYS_LONGHELP +#define CONFIG_CRC32_VERIFY +#define CONFIG_MX_CYCLIC + +/* + * Linux Information + */ +#define LINUX_BOOT_PARAM_ADDR (PHYS_SDRAM_1 + 0x100) +#define CONFIG_CMDLINE_TAG +#define CONFIG_SETUP_MEMORY_TAGS +#define CONFIG_BOOTDELAY 3 + +/* + * U-Boot commands + */ +#include <config_cmd_default.h> +#define CONFIG_CMD_ENV +#define CONFIG_CMD_ASKENV +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_DIAG +#define CONFIG_CMD_MII +#define CONFIG_CMD_PING +#define CONFIG_CMD_SAVES +#define CONFIG_CMD_MEMORY + +#ifndef CONFIG_DRIVER_TI_EMAC +#undef CONFIG_CMD_NET +#undef CONFIG_CMD_DHCP +#undef CONFIG_CMD_MII +#undef CONFIG_CMD_PING +#endif + +#ifdef CONFIG_USE_NAND +#undef CONFIG_CMD_FLASH +#undef CONFIG_CMD_IMLS +#define CONFIG_CMD_NAND + +#define CONFIG_CMD_MTDPARTS +#define CONFIG_MTD_DEVICE +#define CONFIG_MTD_PARTITIONS +#define CONFIG_LZO +#define CONFIG_RBTREE +#define CONFIG_CMD_UBI +#define CONFIG_CMD_UBIFS +#endif + +#ifdef CONFIG_USE_SPIFLASH +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_FLASH +#define CONFIG_CMD_SPI +#define CONFIG_CMD_SF +#define CONFIG_CMD_SAVEENV +#endif + +#if !defined(CONFIG_USE_NAND) && \ + !defined(CONFIG_USE_NOR) && \ + !defined(CONFIG_USE_SPIFLASH) +#define CONFIG_ENV_IS_NOWHERE +#define CONFIG_SYS_NO_FLASH +#define CONFIG_ENV_SIZE (16 << 10) +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_ENV +#endif + +/* additions for new relocation code, must added to all boards */ +#define CONFIG_SYS_SDRAM_BASE 0xc0000000 +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x1000 - \ + GENERATED_GBL_DATA_SIZE) +#endif /* __CONFIG_H */
participants (5)
-
Ben Gardiner
-
Paulraj, Sandeep
-
Stefano Babic
-
Sughosh Ganu
-
sughosh ganu