Overview
Subsystems (2)
v4 cover Overview
Hi,
here is the fourth incarnation of the IXP patch series. This is rebased against master (basically pulling in the __bss_end change), and it adds separate changelogs per patch.
cu
Michael
Michael Schwingen (17):
add XScale sub architecture (IXP/PXA) to maintainer list add support for IXP42x Rev. B1 and newer trigger hardware watchdog in IXP42x serial driver Fix IXP code to work after relocation was added fix "depend" target in npe directory
support CONFIG_SYS_LDSCRIPT on ARM
use -ffunction-sections / --gc-sections on IXP42x update/fix AcTux1 board
update/fix AcTux2 board
update/fix AcTux3 board
update/fix AcTux4 board
IXP NPE: add support for fixed-speed MII ports add dvlhost (dLAN 200 AV Wireless G) board update/fix IXDP425 / IXDPG425 boards
update/fix PDNB3 board
IXP42x PCI rewrite
run arm_pci_init after relocation
MAINTAINERS | 45 ++- arch/arm/config.mk | 6 + arch/arm/cpu/ixp/config.mk | 5 + arch/arm/cpu/ixp/cpu.c | 5 - arch/arm/cpu/ixp/npe/Makefile | 1 + arch/arm/cpu/ixp/npe/npe.c | 74 +++-- arch/arm/cpu/ixp/start.S | 59 +--- arch/arm/cpu/ixp/timer.c | 124 +++--- arch/arm/cpu/ixp/u-boot.lds | 8 +- arch/arm/include/asm/arch-ixp/ixp425.h | 5 +- arch/arm/include/asm/arch-ixp/ixp425pci.h | 130 +------ arch/arm/include/asm/global_data.h | 3 + arch/arm/lib/board.c | 6 +- board/actux1/actux1.c | 111 +++--- board/actux1/config.mk | 6 - board/actux1/u-boot.lds | 41 ++- board/actux2/actux2.c | 99 +++--- board/actux2/config.mk | 6 - board/actux2/u-boot.lds | 46 ++- board/actux3/actux3.c | 126 +++--- board/actux3/config.mk | 6 - board/actux3/u-boot.lds | 52 ++- board/actux4/actux4.c | 103 +++-- board/actux4/config.mk | 4 - board/dvlhost/Makefile | 50 +++ board/dvlhost/dvlhost.c | 130 ++++++ board/dvlhost/dvlhost_hw.h | 47 +++ board/dvlhost/u-boot.lds | 87 ++++ board/dvlhost/watchdog.c | 43 ++ board/ixdp425/config.mk | 2 - board/ixdp425/flash.c | 427 -------------------- board/ixdp425/ixdp425.c | 155 +++++++- board/prodrive/pdnb3/config.mk | 2 - boards.cfg | 8 +- drivers/pci/pci.c | 4 - drivers/pci/pci_indirect.c | 13 +- drivers/pci/pci_ixp.c | 612 ++++++++++------------------- drivers/serial/serial_ixp.c | 7 +- include/configs/actux1.h | 63 ++-- include/configs/actux2.h | 36 ++- include/configs/actux3.h | 38 ++- include/configs/actux4.h | 40 ++- include/configs/dvlhost.h | 248 ++++++++++++ include/configs/ixdp425.h | 196 +++++++--- include/configs/ixdpg425.h | 11 +- include/configs/pdnb3.h | 10 +- 46 files changed, 1697 insertions(+), 1603 deletions(-) delete mode 100644 board/actux1/config.mk delete mode 100644 board/actux2/config.mk delete mode 100644 board/actux3/config.mk delete mode 100644 board/actux4/config.mk create mode 100644 board/dvlhost/Makefile create mode 100644 board/dvlhost/dvlhost.c create mode 100644 board/dvlhost/dvlhost_hw.h create mode 100644 board/dvlhost/u-boot.lds create mode 100644 board/dvlhost/watchdog.c delete mode 100644 board/ixdp425/config.mk delete mode 100644 board/ixdp425/flash.c delete mode 100644 board/prodrive/pdnb3/config.mk create mode 100644 include/configs/dvlhost.h
Signature · 1 line
1.7.2.5
PATCH v4 1/17 add XScale sub architecture (IXP/PXA) to maintainer list
---
Changes for V2:
Changes for V3:
- change patch description
- drop wepep250 (should already be deleted)
Changes for V4:
- add changelog
MAINTAINERS | 44 ++++++++++++++++++++++---------------------- 1 files changed, 22 insertions(+), 22 deletions(-)
MAINTAINERS +22 -22
@@ -560,8 +560,8 @@ Stefano Babic <[email protected]> ea20 davinci mx35pdk i.MX35 mx51evk i.MX51 - polaris xscale - trizepsiv xscale + polaris xscale/pxa + trizepsiv xscale/pxa vision2 i.MX51 Jason Liu <[email protected]>
@@ -593,7 +593,7 @@ Andreas Bie Cliff Brake <[email protected]> - pxa255_idp xscale + pxa255_idp xscale/pxa Rick Bronson <[email protected]>
@@ -699,7 +699,7 @@ Sergey Kubushyn <[email protected]> Prakash Kumar <[email protected]> - cerf250 xscale + cerf250 xscale/pxa Vipin Kumar <[email protected]>
@@ -777,9 +777,9 @@ John Rigby <[email protected]> Stefan Roese <[email protected]> - ixdpg425 xscale - pdnb3 xscale - scpu xscale + ixdpg425 xscale/ixp + pdnb3 xscale/ixp + scpu xscale/ixp Alessandro Rubini <[email protected]> Nomadik Linux Team <[email protected]>
@@ -802,15 +802,15 @@ Heiko Schocher <[email protected]> Robert Schwebel <[email protected]> - csb226 xscale - innokom xscale + csb226 xscale/pxa + innokom xscale/pxa Michael Schwingen <[email protected]> - actux1 xscale - actux2 xscale - actux3 xscale - actux4 xscale + actux1 xscale/ixp + actux2 xscale/ixp + actux3 xscale/ixp + actux4 xscale/ixp Andrea Scian <[email protected]>
@@ -834,12 +834,12 @@ Greg Ungerer <[email protected]> Marek Vasut <[email protected]> - balloon3 xscale - colibri_pxa270 xscale - palmld xscale - palmtc xscale - vpac270 xscale - zipitz2 xscale + balloon3 xscale/pxa + colibri_pxa270 xscale/pxa + palmld xscale/pxa + palmtc xscale/pxa + vpac270 xscale/pxa + zipitz2 xscale/pxa efikamx i.MX51 Hugo Villeneuve <[email protected]>
@@ -890,9 +890,9 @@ Sughosh Ganu <[email protected]> Unknown / orphaned boards: Board CPU Last known maintainer / Comment ......................................................................... - cradle xscale Kyle Harris <[email protected]> / dead address - ixdp425 xscale Kyle Harris <[email protected]> / dead address - lubbock xscale Kyle Harris <[email protected]> / dead address + cradle xscale/pxa Kyle Harris <[email protected]> / dead address + ixdp425 xscale/ixp Kyle Harris <[email protected]> / dead address + lubbock xscale/pxa Kyle Harris <[email protected]> / dead address imx31_phycore_eet i.MX31 Guennadi Liakhovetski <[email protected]> / resigned mx31ads i.MX31 Guennadi Liakhovetski <[email protected]> / resigned
Signature · 1 line
1.7.2.5
PATCH v4 1/17 add XScale sub architecture (IXP/PXA) to maintainer list
Quoted 101 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:Changes for V3:
- change patch description
- drop wepep250 (should already be deleted)
Changes for V4:
- add changelogMAINTAINERS | 44 ++++++++++++++++++++++---------------------- 1 files changed, 22 insertions(+), 22 deletions(-)MAINTAINERS +19
-19@@ -560,8 +560,8 @@ Stefano Babic <[email protected]> ea20 davinci mx35pdk i.MX35 mx51evk i.MX51 - polaris xscale - trizepsiv xscale + polaris xscale/pxa + trizepsiv xscale/pxa vision2 i.MX51 Jason Liu <[email protected]>@@ -593,7 +593,7 @@ Andreas Bie Cliff Brake <[email protected]> - pxa255_idp xscale + pxa255_idp xscale/pxa Rick Bronson <[email protected]>@@ -699,7 +699,7 @@ Sergey Kubushyn <[email protected]> Prakash Kumar <[email protected]> - cerf250 xscale + cerf250 xscale/pxa Vipin Kumar <[email protected]>@@ -777,9 +777,9 @@ John Rigby <[email protected]> Stefan Roese <[email protected]> - ixdpg425 xscale - pdnb3 xscale - scpu xscale + ixdpg425 xscale/ixp + pdnb3 xscale/ixp + scpu xscale/ixp Alessandro Rubini <[email protected]> Nomadik Linux Team <[email protected]>@@ -802,15 +802,15 @@ Heiko Schocher <[email protected]> Robert Schwebel <[email protected]> - csb226 xscale - innokom xscale + csb226 xscale/pxa + innokom xscale/pxa Michael Schwingen <[email protected]> - actux1 xscale - actux2 xscale - actux3 xscale - actux4 xscale + actux1 xscale/ixp + actux2 xscale/ixp + actux3 xscale/ixp + actux4 xscale/ixp Andrea Scian <[email protected]>@@ -834,12 +834,12 @@ Greg Ungerer <[email protected]> Marek Vasut <[email protected]> - balloon3 xscale - colibri_pxa270 xscale - palmld xscale - palmtc xscale - vpac270 xscale - zipitz2 xscale + balloon3 xscale/pxa + colibri_pxa270 xscale/pxa + palmld xscale/pxa + palmtc xscale/pxa + vpac270 xscale/pxa + zipitz2 xscale/pxa efikamx i.MX51 Hugo Villeneuve <[email protected]>
MAINTAINERS Sughosh Ganu <[email protected]>
Quoted 4 lines
MAINTAINERS +0
-1@@ -890,9 +890,9 @@ Sughosh Ganu <[email protected]> Unknown / orphaned boards: Board CPU Last known maintainer / Comment - cradle xscale Kyle Harris <[email protected]> / dead
address
MAINTAINERS
Quoted 1 line
MAINTAINERS +0
-1- ixdp425 xscale Kyle Harris <[email protected]> / dead
address
MAINTAINERS
Quoted 1 line
MAINTAINERS +0
-1- lubbock xscale Kyle Harris <[email protected]> / dead
address
MAINTAINERS
Quoted 1 line
MAINTAINERS +1
-0+ cradle xscale/pxa Kyle Harris <[email protected]> / dead
address
MAINTAINERS
Quoted 1 line
MAINTAINERS +1
-0+ ixdp425 xscale/ixp Kyle Harris <[email protected]> / dead
address
Quoted 5 lines
MAINTAINERS +1
-0+ lubbock xscale/pxa Kyle Harris <[email protected]> / dead address imx31_phycore_eet i.MX31 Guennadi Liakhovetski <[email protected]> /resigned mx31ads i.MX31 Guennadi Liakhovetski <[email protected]>
/ resigned
PATCH v4 2/17 add support for IXP42x Rev. B1 and newer
In reply to Michael Schwingen---
Changes for V2:
Changes for V3:
- reformat to wrap long lines
Changes for V4:
- add changelog
arch/arm/cpu/ixp/npe/npe.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
arch/arm/cpu/ixp/npe/npe.c +5 -2
@@ -621,9 +621,12 @@ int npe_initialize(bd_t * bis)if (ixFeatureCtrlDeviceRead () ==IX_FEATURE_CTRL_DEVICE_TYPE_IXP42X ) {switch (ixFeatureCtrlProductIdRead () &IX_FEATURE_CTRL_SILICON_STEPPING_MASK ) {case IX_FEATURE_CTRL_SILICON_TYPE_B0 : +default :/* newer than B0 */ /* -* If it is B0 Silicon, we only enable port when its corresponding -* Eth Coprocessor is available. +* If it is B0 or newer Silicon, we +* only enable port when its +* corresponding Eth Coprocessor is +* available. */ if (ixFeatureCtrlComponentCheck (IX_FEATURECTRL_ETH0 ) ==IX_FEATURE_CTRL_COMPONENT_ENABLED )
Signature · 1 line
1.7.2.5
PATCH v4 2/17 add support for IXP42x Rev. B1 and newer
Quoted 17 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:Changes for V3:
- reformat to wrap long lines
Changes for V4:
- add changelogarch/arm/cpu/ixp/npe/npe.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)arch/arm/cpu/ixp/npe/npe.c +0
-0
arch/arm/cpu/ixp/npe/npe.c int npe_initialize(bd_t * bis) · line 621
Quoted 1 line
arch/arm/cpu/ixp/npe/npe.c +0
-0@@ -621,9 +621,12 @@ int npe_initialize(bd_t * bis) if (ixFeatureCtrlDeviceRead() ==
IX_FEATURE_CTRL_DEVICE_TYPE_IXP42X) {
arch/arm/cpu/ixp/npe/npe.c int npe_initialize(bd_t * bis)
Quoted 6 lines
arch/arm/cpu/ixp/npe/npe.c +0
-0switch (ixFeatureCtrlProductIdRead() &
IX_FEATURE_CTRL_SILICON_STEPPING_MASK) { caseIX_FEATURE_CTRL_SILICON_TYPE_B0:arch/arm/cpu/ixp/npe/npe.c +1
-1+default :/* newer than B0 */ /* -* If it is B0 Silicon, we only enable port when its
corresponding
arch/arm/cpu/ixp/npe/npe.c int npe_initialize(bd_t * bis) · line 632
Quoted 8 lines
arch/arm/cpu/ixp/npe/npe.c +4
-1-* Eth Coprocessor is available. +* If it is B0 or newer Silicon, we +* only enable port when its +* corresponding Eth Coprocessor is +* available. */ if (ixFeatureCtrlComponentCheck (IX_FEATURECTRL_ETH0 ) ==IX_FEATURE_CTRL_COMPONENT_ENABLED )
PATCH v4 2/17 add support for IXP42x Rev. B1 and newer
Dear Marek Vasut,
Quoted 12 lines · In message <[email protected]> you wrote:
Quoted 11 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:Changes for V3:
- reformat to wrap long lines
Changes for V4:
- add changelogarch/arm/cpu/ixp/npe/npe.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
...
Quoted 1 line
Acked-by Marek Vasut <[email protected]>
I'm not sure what this ACK means. I would expect that you apply this patch to your tree and send me a pull request?
Best regards,
Wolfgang Denk
Signature · 7 lines
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: wd at denx.de Severe culture shock results when experts from another protocol suite [...] try to read OSI documents. The term "osified" is used to refer to such documents. [...] Any relationship to the word "ossified" is purely intentional. - Marshall T. Rose
PATCH v4 3/17 trigger hardware watchdog in IXP42x serial driver
In reply to Michael Schwingen---
Changes for V2:
Changes for V3:
- coding style fixes
Changes for V4:
- add changelog
drivers/serial/serial_ixp.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
drivers/serial/serial_ixp.c +5 -2
@@ -30,6 +30,7 @@#include <common.h> #include <asm/arch/ixp425.h> +#include <watchdog.h> /* * 14.7456 MHz
@@ -85,7 +86,8 @@ int serial_init (void)void serial_putc (const char c) {/* wait for room in the tx FIFO on UART */ -while ((LSR (CONFIG_SYS_IXP425_CONSOLE ) &LSR_TEMT ) ==0 ); +while ((LSR (CONFIG_SYS_IXP425_CONSOLE ) &LSR_TEMT ) ==0 ) +WATCHDOG_RESET ();/* Reset HW Watchdog, if needed */ THR (CONFIG_SYS_IXP425_CONSOLE ) = c;
@@ -111,7 +113,8 @@ int serial_tstc (void)*/ int serial_getc (void ) { -while (!(LSR (CONFIG_SYS_IXP425_CONSOLE ) &LSR_DR )); +while (!(LSR (CONFIG_SYS_IXP425_CONSOLE ) &LSR_DR )) +WATCHDOG_RESET ();/* Reset HW Watchdog, if needed */ return (char )RBR (CONFIG_SYS_IXP425_CONSOLE ) &0xff ; }
Signature · 1 line
1.7.2.5
PATCH v4 3/17 trigger hardware watchdog in IXP42x serial driver
Quoted 35 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:Changes for V3:
- coding style fixes
Changes for V4:
- add changelogdrivers/serial/serial_ixp.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)drivers/serial/serial_ixp.c +3
-1@@ -30,6 +30,7 @@#include <common.h> #include <asm/arch/ixp425.h> +#include <watchdog.h> /* * 14.7456 MHz @@ -85,7 +86,8 @@ int serial_init (void)void serial_putc (const char c) {/* wait for room in the tx FIFO on UART */ -while ((LSR (CONFIG_SYS_IXP425_CONSOLE ) &LSR_TEMT ) ==0 ); +while ((LSR (CONFIG_SYS_IXP425_CONSOLE ) &LSR_TEMT ) ==0 ) +WATCHDOG_RESET ();/* Reset HW Watchdog, if needed */ THR (CONFIG_SYS_IXP425_CONSOLE ) = c;
drivers/serial/serial_ixp.c int serial_tstc (void) · line 120
Quoted 9 lines
drivers/serial/serial_ixp.c +2
-1@@ -111,7 +113,8 @@ int serial_tstc (void)*/ int serial_getc (void ) { -while (!(LSR (CONFIG_SYS_IXP425_CONSOLE ) &LSR_DR )); +while (!(LSR (CONFIG_SYS_IXP425_CONSOLE ) &LSR_DR )) +WATCHDOG_RESET ();/* Reset HW Watchdog, if needed */ return (char )RBR (CONFIG_SYS_IXP425_CONSOLE ) &0xff ; }
Please recheck for line-too-long here, but it might be just lack of sleep. Otherwise:
PATCH v4 4/17 Fix IXP code to work after relocation was added
In reply to Michael Schwingen - jump to real flash location after reset before turning off flash mirror
- fix timer system to use HZ == 1000, remove broken interrupt-based code
---
Changes for V2:
- fix patch description
Changes for V3:
- use I/O accessors
- move timestamp variable from BSS to global data
- coding style fixes
Changes for V4:
- add changelog
arch/arm/cpu/ixp/cpu.c | 5 -- arch/arm/cpu/ixp/start.S | 59 ++-------------- arch/arm/cpu/ixp/timer.c | 124 +++++++++++++++----------------- arch/arm/include/asm/arch-ixp/ixp425.h | 5 +- arch/arm/include/asm/global_data.h | 3 + 5 files changed, 68 insertions(+), 128 deletions(-)
arch/arm/cpu/ixp/cpu.c +0 -5
@@ -36,8 +36,6 @@#include <asm/arch/ixp425.h> #include <asm/system.h> -ulong loops_per_jiffy; -static void cache_flush (void );#if defined(CONFIG_DISPLAY_CPUINFO )
@@ -51,17 +49,14 @@ int print_cpuinfo (void)puts ("CPU: Intel IXP425 at " );switch ((id &0x000003f0 ) >>4 ) {case 0x1c : - loops_per_jiffy =887467 ; speed =533 ;break ;case 0x1d : - loops_per_jiffy =666016 ; speed =400 ;break ;case 0x1f : - loops_per_jiffy =442901 ; speed =266 ;break ; }
arch/arm/cpu/ixp/start.S +5 -54
103 lines not on this page · raw message
arch/arm/cpu/ixp/timer.c +58 -66
167 lines not on this page · raw message
arch/arm/include/asm/arch-ixp/ixp425.h +2 -3
@@ -391,9 +391,8 @@#define IXP425_TIMER_REG (x) (IXP425_TIMER_BASE_PHYS+(x))#endif -#if 0 /* test-only: also defined in npe/include/... */ -#define IXP425_OSTS IXP425_TIMER_REG(IXP425_OSTS_OFFSET) -#endif +/* _B to avoid collision: also defined in npe/include/... */ +#define IXP425_OSTS_B IXP425_TIMER_REG(IXP425_OSTS_OFFSET)#define IXP425_OST1 IXP425_TIMER_REG(IXP425_OST1_OFFSET)#define IXP425_OSRT1 IXP425_TIMER_REG(IXP425_OSRT1_OFFSET)#define IXP425_OST2 IXP425_TIMER_REG(IXP425_OST2_OFFSET)
arch/arm/include/asm/global_data.h +3 -0
@@ -64,6 +64,9 @@ typedef struct global_data {unsigned long long timer_reset_value;unsigned long lastinc;#endif +#ifdef CONFIG_IXP425 +unsigned long timestamp; +#endif unsigned long relocaddr;/* Start address of U-Boot in RAM */ phys_size_t ram_size;/* RAM size */ unsigned long mon_len;/* monitor len */
Signature · 1 line
1.7.2.5
PATCH v4 4/17 Fix IXP code to work after relocation was added
Quoted 181 lines · Michael Schwingen
- jump to real flash location after reset before turning off flash mirror
- fix timer system to use HZ == 1000, remove broken interrupt-based codeSigned-off-by Michael Schwingen <[email protected]>---
Changes for V2:
- fix patch description
Changes for V3:
- use I/O accessors
- move timestamp variable from BSS to global data
- coding style fixes
Changes for V4:
- add changelogarch/arm/cpu/ixp/cpu.c | 5 -- arch/arm/cpu/ixp/start.S | 59 ++-------------- arch/arm/cpu/ixp/timer.c | 124 +++++++++++++++----------------- arch/arm/include/asm/arch-ixp/ixp425.h | 5 +- arch/arm/include/asm/global_data.h | 3 + 5 files changed, 68 insertions(+), 128 deletions(-)arch/arm/cpu/ixp/cpu.c +0
-5@@ -36,8 +36,6 @@#include <asm/arch/ixp425.h> #include <asm/system.h> -ulong loops_per_jiffy; -static void cache_flush (void );#if defined(CONFIG_DISPLAY_CPUINFO )@@ -51,17 +49,14 @@ int print_cpuinfo (void)puts ("CPU: Intel IXP425 at " );switch ((id &0x000003f0 ) >>4 ) {case 0x1c : - loops_per_jiffy =887467 ; speed =533 ;break ;case 0x1d : - loops_per_jiffy =666016 ; speed =400 ;break ;case 0x1f : - loops_per_jiffy =442901 ; speed =266 ;break ; }arch/arm/cpu/ixp/start.S +5
-54@@ -65,7 +65,8 @@ .endm .globl _start -_start: b reset +_start: + ldr pc, _reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort@@ -74,6 +75,7 @@ _start: b reset ldr pc, _irq ldr pc, _fiq +_reset: .word reset _undefined_instruction: .word undefined_instruction _software_interrupt: .word software_interrupt _prefetch_abort: .word prefetch_abort@@ -167,12 +169,6 @@ reset: str r1, [r2] /* make sure flash is visible at 0 */ -#if 0 - ldr r2, =IXP425_EXP_CFG0 - ldr r1, [r2] - orr r1, r1, #0x80000000 - str r1, [r2] -#endif mov r1, #CONFIG_SYS_SDR_CONFIG ldr r2, =IXP425_SDR_CONFIG str r1, [r2]@@ -216,19 +212,6 @@ reset: str r1, [r4] DELAY_FOR 0x4000, r0 - /* copy */ - mov r0, #0 - mov r4, r0 - add r2, r0, #CONFIG_SYS_MONITOR_LEN - mov r1, #0x10000000 - mov r5, r1 - - 30: - ldr r3, [r0], #4 - str r3, [r1], #4 - cmp r0, r2 - bne 30b - /* invalidate I & D caches & BTB */ mcr p15, 0, r0, c7, c7, 0 CPWAIT r0@@ -241,19 +224,12 @@ reset: mcr p15, 0, r0, c7, c10, 4 CPWAIT r0 - /* move flash to 0x50000000 */ + /* remove flash mirror at 0x00000000 */ ldr r2, =IXP425_EXP_CFG0 ldr r1, [r2] bic r1, r1, #0x80000000 str r1, [r2] - nop - nop - nop - nop - nop - nop - /* invalidate I & Data TLB */ mcr p15, 0, r0, c8, c7, 0 CPWAIT r0@@ -269,7 +245,7 @@ reset: orr r0,r0,#0x13 msr cpsr,r0 -/* Set stackpointer in internal RAM to call board_init_f */ +/* Set initial stackpointer in SDRAM to call board_init_f */ call_board_init_f: ldr sp, =(CONFIG_SYS_INIT_SP_ADDR) bic sp, sp, #7 /* 8-byte alignment for ABI compliance */@@ -580,28 +556,3 @@ reset_endless: b reset_endless -#ifdef CONFIG_USE_IRQ - -.LC0: .word loops_per_jiffy - -/* - * 0 <= r0 <= 2000 - */ -.globl __udelay -__udelay: - mov r2, #0x6800 - orr r2, r2, #0x00db - mul r0, r2, r0 - ldr r2, .LC0 - ldr r2, [r2] @ max = 0x0fffffff - mov r0, r0, lsr #11 @ max = 0x00003fff - mov r2, r2, lsr #11 @ max = 0x0003ffff - mul r0, r2, r0 @ max = 2^32-1 - movs r0, r0, lsr #6 - -delay_loop: - subs r0, r0, #1 - bne delay_loop - mov pc, lr - -#endif /* CONFIG_USE_IRQ */arch/arm/cpu/ixp/timer.c +3
-0@@ -1,4 +1,7 @@/* +* (C) Copyright 2010 +* Michael Schwingen, michael at schwingen.org +* * (C) Copyright 2006 * Stefan Roese, DENX Software Engineering, sr at denx.de. * @@ -31,105 +34,94 @@
arch/arm/cpu/ixp/timer.c line 40
Quoted 10 lines
arch/arm/cpu/ixp/timer.c +3
-4#include <common.h> #include <asm/arch/ixp425.h> +#include <asm/io.h> +#include <div64.h> -#ifdef CONFIG_TIMER_IRQ - -#define FREQ 66666666 -#define CLOCK_TICK_RATE (((FREQ / CONFIG_SYS_HZ & ~IXP425_OST_RELOAD_MASK) + 1) * CONFIG_SYS_HZ) -#define LATCH ((CLOCK_TICK_RATE +
CONFIG_SYS_HZ/2)
Quoted 43 lines
arch/arm/cpu/ixp/timer.c +14
-17/ CONFIG_SYS_HZ) /* For divider */ +DECLARE_GLOBAL_DATA_PTR;/* -* When interrupts are enabled, use timer 2 for time/delay generation... +* The IXP42x time-stamp timer runs at 2*OSC_IN (66.666MHz when using a +* 33.333MHz crystal). */ - -static volatile ulong timestamp; - -static void timer_isr (void *data) +static inline unsigned long long tick_to_time (unsigned long long tick) { -unsigned int *pTime = (unsigned int *)data; - - (*pTime)++; - -/* -* Reset IRQ source -*/ - *IXP425_OSST =IXP425_OSST_TIMER_2_PEND ; + tick *=CONFIG_SYS_HZ ; +do_div (tick,CONFIG_IXP425_TIMER_CLK ); +return tick; } -ulong get_timer (ulong base) +static inline unsigned long long time_to_tick (unsigned long long time) { -return timestamp - base; + time *=CONFIG_IXP425_TIMER_CLK ; +do_div (time,CONFIG_SYS_HZ ); +return time; } -void reset_timer (void ) +static inline unsigned long long us_to_tick (unsigned long long us) { - timestamp =0 ; + us = us *CONFIG_IXP425_TIMER_CLK +999999 ; +do_div (us,1000000 ); +return us; }
arch/arm/cpu/ixp/timer.c line 69
Quoted 10 lines
arch/arm/cpu/ixp/timer.c +2
-6-int timer_init (void ) +unsigned long long get_ticks (void ) { -/* install interrupt handler for timer */ -irq_install_handler (IXP425_TIMER_2_IRQ , timer_isr, (void *)×tamp); - -/* setup the Timer counter value */ - *IXP425_OSRT2 = (LATCH & ~IXP425_OST_RELOAD_MASK ) |IXP425_OST_ENABLE ; +ulong now = *IXP425_OSTS_B ;
Aren't you missing an IO accessor here ?
Quoted 102 lines
arch/arm/cpu/ixp/timer.c +36
-38+ +if (readl (IXP425_OSST ) &IXP425_OSST_TIMER_TS_PEND ) { +/* rollover of timestamp timer register */ + gd->timestamp += (0xFFFFFFFF - gd->lastinc) + now +1 ; +writel (IXP425_OSST_TIMER_TS_PEND ,IXP425_OSST ); + }else { +/* move stamp forward with absolut diff ticks */ + gd->timestamp += (now - gd->lastinc); + } + gd->lastinc = now; +return gd->timestamp; +} -/* enable timer irq */ - *IXP425_ICMR = (1 <<IXP425_TIMER_2_IRQ ); -return 0 ; -} -#else -ulong get_timer (ulong base) +void reset_timer_masked (void ) { -return get_timer_masked () - base; +/* capture current timestamp counter */ + gd->lastinc =readl (IXP425_OSTS_B ); +/* start "advancing" time stamp from 0 */ + gd->timestamp =0 ; } -void ixp425_udelay (unsigned long usec) +void reset_timer (void ) { -/* -* This function has a max usec, but since it is called from udelay -* we should not have to worry... be happy -*/ -unsigned long usecs =CONFIG_SYS_HZ /1000000L & ~IXP425_OST_RELOAD_MASK ; - - *IXP425_OSST =IXP425_OSST_TIMER_1_PEND ; - usecs |=IXP425_OST_ONE_SHOT |IXP425_OST_ENABLE ; - *IXP425_OSRT1 = usecs; -while (!(*IXP425_OSST &IXP425_OSST_TIMER_1_PEND )); +reset_timer_masked (); } -void __udelay (unsigned long usec) +ulong get_timer_masked (void ) { -while (usec--)ixp425_udelay (1 ); +return tick_to_time (get_ticks ()); } -static ulong reload_constant =0xfffffff0 ; - -void reset_timer_masked (void ) +ulong get_timer (ulong base) { -ulong reload = reload_constant |IXP425_OST_ONE_SHOT |IXP425_OST_ENABLE ; +return get_timer_masked () - base; +} - *IXP425_OSST =IXP425_OSST_TIMER_1_PEND ; - *IXP425_OSRT1 = reload; +void set_timer (ulong t) +{ + gd->timestamp =time_to_tick (t); } -ulong get_timer_masked (void ) +/* delay x useconds AND preserve advance timestamp value */ +void __udelay (unsigned long usec) { -/* -* Note that it is possible for this to wrap! -* In this case we return max. -*/ -ulong current = *IXP425_OST1 ; -if (*IXP425_OSST &IXP425_OSST_TIMER_1_PEND ) - { -return reload_constant; - } -return (reload_constant - current); +unsigned long long tmp; + + tmp =get_ticks () +us_to_tick (usec); + +while (get_ticks () < tmp) + ; }int timer_init (void ) { +writel (IXP425_OSST_TIMER_TS_PEND ,IXP425_OSST );return 0 ; } -#endif (quoted diff) +0
-0
b/arch/arm/include/asm/arch-ixp/ixp425.hindex 2114437..5132607 100644arch/arm/include/asm/arch-ixp/ixp425.h +0
-0@@ -391,9 +391,8 @@#define IXP425_TIMER_REG (x) (IXP425_TIMER_BASE_PHYS+(x))
arch/arm/include/asm/arch-ixp/ixp425.h line 398
Quoted 10 lines
arch/arm/include/asm/arch-ixp/ixp425.h +2
-3#endif -#if 0 /* test-only: also defined in npe/include/... */ -#define IXP425_OSTS IXP425_TIMER_REG(IXP425_OSTS_OFFSET) -#endif +/* _B to avoid collision: also defined in npe/include/... */ +#define IXP425_OSTS_B IXP425_TIMER_REG(IXP425_OSTS_OFFSET)#define IXP425_OST1 IXP425_TIMER_REG(IXP425_OST1_OFFSET)#define IXP425_OSRT1 IXP425_TIMER_REG(IXP425_OSRT1_OFFSET)#define IXP425_OST2 IXP425_TIMER_REG(IXP425_OST2_OFFSET)
This will eventually enjoy being converted to struct ixp_timer_regset { ... } goo. If you already did it in some further patch, sorry, I didn't get there yet ;-)
Quoted 14 lines
(quoted diff) +0
-0
b/arch/arm/include/asm/global_data.hindex 2a84d27..c1a59f2 100644arch/arm/include/asm/global_data.h +3
-0@@ -64,6 +64,9 @@ typedef struct global_data {unsigned long long timer_reset_value;unsigned long lastinc;#endif +#ifdef CONFIG_IXP425 +unsigned long timestamp; +#endif unsigned long relocaddr;/* Start address of U-Boot in RAM */ phys_size_t ram_size;/* RAM size */ unsigned long mon_len;/* monitor len */
PATCH v4 4/17 Fix IXP code to work after relocation was added
Am 05/21/2011 01:58 AM, schrieb Marek Vasut:
Quoted 11 lines
arch/arm/cpu/ixp/timer.c line 69
Quoted 10 lines
arch/arm/cpu/ixp/timer.c +2
-6-int timer_init (void ) +unsigned long long get_ticks (void ) { -/* install interrupt handler for timer */ -irq_install_handler (IXP425_TIMER_2_IRQ , timer_isr, (void *)×tamp); - -/* setup the Timer counter value */ - *IXP425_OSRT2 = (LATCH & ~IXP425_OST_RELOAD_MASK ) |IXP425_OST_ENABLE ; +ulong now = *IXP425_OSTS_B ;Aren't you missing an IO accessor here ?
Oops - you are correct.
Quoted 8 lines
Quoted 8 lines
(quoted diff) +0
-0
b/arch/arm/include/asm/arch-ixp/ixp425.hindex 2114437..5132607 100644arch/arm/include/asm/arch-ixp/ixp425.h +0
-0@@ -391,9 +391,8 @@#define IXP425_TIMER_REG (x) (IXP425_TIMER_BASE_PHYS+(x))#endif
Quoted 11 lines
arch/arm/include/asm/arch-ixp/ixp425.h line 398
Quoted 8 lines
arch/arm/include/asm/arch-ixp/ixp425.h +2
-3-#if 0 /* test-only: also defined in npe/include/... */ -#define IXP425_OSTS IXP425_TIMER_REG(IXP425_OSTS_OFFSET) -#endif +/* _B to avoid collision: also defined in npe/include/... */ +#define IXP425_OSTS_B IXP425_TIMER_REG(IXP425_OSTS_OFFSET)#define IXP425_OST1 IXP425_TIMER_REG(IXP425_OST1_OFFSET)#define IXP425_OSRT1 IXP425_TIMER_REG(IXP425_OSRT1_OFFSET)#define IXP425_OST2 IXP425_TIMER_REG(IXP425_OST2_OFFSET)This will eventually enjoy being converted to struct
ixp_timer_regset{ ... } goo. If you already did it in some further patch, sorry, I didn't get there yet ;-)
That would probably require a major rework of all the Intel access/NPE library code - this is not something I want to touch now. Most of these defines are used inside the Intel code, so cleaning up only outside of that area would not improve the code much.
cu
Michael
PATCH v4 4/17 Fix IXP code to work after relocation was added
Quoted 40 lines · Michael Schwingen
Am 05/21/2011 01:58 AM, schrieb Marek Vasut:
Quoted 5 lines
Quoted 5 lines
arch/arm/cpu/ixp/timer.c +1
-1-int timer_init (void ) +unsigned long long get_ticks (void ) {Quoted 8 lines
arch/arm/cpu/ixp/timer.c line 69
Quoted 6 lines
(quoted diff) +0
-2- /* install interrupt handler for timer */ - irq_install_handler(IXP425_TIMER_2_IRQ, timer_isr, (void*)×tamp); -
arch/arm/cpu/ixp/timer.c +1
-2-/* setup the Timer counter value */ - *IXP425_OSRT2 = (LATCH & ~IXP425_OST_RELOAD_MASK ) |IXP425_OST_ENABLE ; +ulong now = *IXP425_OSTS_B ;Aren't you missing an IO accessor here ?
Oops - you are correct.
Quoted 15 lines
Quoted 15 lines
(quoted diff) +0
-0
b/arch/arm/include/asm/arch-ixp/ixp425.hindex 2114437..5132607 100644arch/arm/include/asm/arch-ixp/ixp425.h +2
-3@@ -391,9 +391,8 @@#define IXP425_TIMER_REG (x) (IXP425_TIMER_BASE_PHYS+(x))#endif -#if 0 /* test-only: also defined in npe/include/... */ -#define IXP425_OSTS IXP425_TIMER_REG(IXP425_OSTS_OFFSET) -#endif +/* _B to avoid collision: also defined in npe/include/... */ +#define IXP425_OSTS_B IXP425_TIMER_REG(IXP425_OSTS_OFFSET)Quoted 7 lines
Quoted 3 lines
arch/arm/include/asm/arch-ixp/ixp425.h +0
-0#define IXP425_OST1 IXP425_TIMER_REG(IXP425_OST1_OFFSET)#define
IXP425_OSRT1IXP425_TIMER_REG(IXP425_OSRT1_OFFSET)
#defineIXP425_OST2IXP425_TIMER_REG(IXP425_OST2_OFFSET)This will eventually enjoy being converted to struct
ixp_timer_regset{ ... } goo. If you already did it in some further patch, sorry, I didn't get there yet ;-)
Quoted 4 lines
That would probably require a major rework of all the Intel access/NPE library code - this is not something I want to touch now. Most of these defines are used inside the Intel code, so cleaning up only outside of that area would not improve the code much.
It'd be cool to have this done in next cycle ;-)
Quoted 3 lines
cu
Michael
PATCH v4 5/17 fix "depend" target in npe directory
In reply to Michael Schwingen---
Changes for V2:
Changes for V3:
Changes for V4:
- add changelog
arch/arm/cpu/ixp/npe/Makefile | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
arch/arm/cpu/ixp/npe/Makefile +1 -0
@@ -27,6 +27,7 @@ LIB := $(obj)libnpe.o LOCAL_CFLAGS += -I$(TOPDIR)/arch/arm/cpu/ixp/npe/include -DCONFIG_IXP425_COMPONENT_ETHDB -D__linux CFLAGS += $(LOCAL_CFLAGS) +CPPFLAGS += $(LOCAL_CFLAGS) # needed for depend HOSTCFLAGS += $(LOCAL_CFLAGS) COBJS-$(CONFIG_IXP4XX_NPE) := npe.o \
Signature · 1 line
1.7.2.5
PATCH v4 5/17 fix "depend" target in npe directory
Quoted 17 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:Changes for V3:
Changes for V4:
- add changelogarch/arm/cpu/ixp/npe/Makefile | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)arch/arm/cpu/ixp/npe/Makefile +0
-0
arch/arm/cpu/ixp/npe/Makefile LIB := $(obj)libnpe.o · line 32
Quoted 7 lines
arch/arm/cpu/ixp/npe/Makefile +1
-1@@ -27,6 +27,7 @@ LIB := $(obj)libnpe.o LOCAL_CFLAGS += -I$(TOPDIR)/arch/arm/cpu/ixp/npe/include -DCONFIG_IXP425_COMPONENT_ETHDB -D__linux CFLAGS += $(LOCAL_CFLAGS) +CPPFLAGS += $(LOCAL_CFLAGS) # needed for depend HOSTCFLAGS += $(LOCAL_CFLAGS) COBJS-$(CONFIG_IXP4XX_NPE) := npe.o \
PATCH v4 6/17 support CONFIG_SYS_LDSCRIPT on ARM
In reply to Michael Schwingen---
Changes for V3:
- new in V3, replaces config.mk files in earlier patches
Changes for V4:
- add changelog
arch/arm/config.mk | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
arch/arm/config.mk +6 -0
@@ -63,7 +63,13 @@ ifeq (,$(findstring arch/arm/lib/eabi_compat.o,$(PLATFORM_LIBS))) PLATFORM_LIBS += $(OBJTREE)/arch/arm/lib/eabi_compat.o endif endif + +ifdef CONFIG_SYS_LDSCRIPT +# need to strip off double quotes +LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT)) +else LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds +endif # needed for relocation ifndef CONFIG_NAND_SPL
Signature · 1 line
1.7.2.5
PATCH v4 6/17 support CONFIG_SYS_LDSCRIPT on ARM
Quoted 19 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V3:
- new in V3, replaces config.mk files in earlier patches
Changes for V4:
- add changelogarch/arm/config.mk | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)arch/arm/config.mk +0
-0@@ -63,7 +63,13 @@ ifeq (,$(findstringarch/arm/lib/eabi_compat.o,$(PLATFORM_LIBS)))
PLATFORM_LIBS+= $(OBJTREE)/arch/arm/lib/eabi_compat.o
endif
endif
arch/arm/config.mk ifeq (,$(findstring arch/arm/lib/eabi_compat.o,$(PLATFORM_LIBS))) · line 75
Quoted 10 lines
arch/arm/config.mk +6
-0+ +ifdef CONFIG_SYS_LDSCRIPT +# need to strip off double quotes +LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT)) +else LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds +endif # needed for relocation ifndef CONFIG_NAND_SPL
Hi, this one doesn't apply for me ...
PATCH v4 7/17 use -ffunction-sections / --gc-sections on IXP42x
In reply to Michael Schwingen---
Changes for V2:
- remove changes from config.mk and board config.h files
- add wildcards to sections in arch/arm/cpu/ixp/u-boot.lds
Changes for V3:
- set compiler/linker flags in arch/arm/cpu/ixp/config.mk instead of per-board config.mk files
Changes for V4:
- add changelog
arch/arm/cpu/ixp/config.mk | 5 +++++ arch/arm/cpu/ixp/u-boot.lds | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-)
arch/arm/cpu/ixp/config.mk +5 -0
@@ -27,6 +27,11 @@ BIG_ENDIAN = y PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float -mbig-endian PLATFORM_CPPFLAGS += -mbig-endian -march=armv5te -mtune=strongarm1100 + +# -fdata-sections triggers "section .bss overlaps section .rel.dyn" linker error +PLATFORM_RELFLAGS += -ffunction-sections +LDFLAGS_u-boot += --gc-sections + # ========================================================================= # # Supply options according to compiler version
arch/arm/cpu/ixp/u-boot.lds +4 -4
@@ -31,8 +31,8 @@ SECTIONS . = ALIGN(4); .text : { - arch/arm/cpu/ixp/start.o(.text) - *(.text) + arch/arm/cpu/ixp/start.o(.text*) + *(.text*) } . = ALIGN(4);
@@ -40,7 +40,7 @@ SECTIONS . = ALIGN(4); .data : { - *(.data) + *(.data*) } . = ALIGN(4);
@@ -67,7 +67,7 @@ SECTIONS .bss __rel_dyn_start (OVERLAY) : { __bss_start = .; - *(.bss) + *(.bss*) . = ALIGN(4); __bss_end__ = .; }
Signature · 1 line
1.7.2.5
PATCH v4 8/17 update/fix AcTux1 board
In reply to Michael Schwingen---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
- add wildcard to bss segment in linker script
Changes for V3:
- use I/O accessors
- coding style fixes
- add PCI clock/reset initialization
- use get_ram_size in dram_init
- add PCI support
- remove config.mk
- remove unused definitions from config.h
- add CONFIG_BOARD_SIZE_LIMIT
Changes for V4:
- add changelog
- merge __bss_end change in u-boot.lds from master
board/actux1/actux1.c | 111 ++++++++++++++++++++++++---------------------- board/actux1/config.mk | 6 --- board/actux1/u-boot.lds | 41 ++++++++++++----- boards.cfg | 5 ++- include/configs/actux1.h | 63 +++++++++++++++----------- 5 files changed, 127 insertions(+), 99 deletions(-) delete mode 100644 board/actux1/config.mk
board/actux1/actux1.c +58 -53
@@ -37,49 +37,57 @@#include <asm/arch/ixp425.h> #include <asm/io.h> #include <miiphy.h> +#ifdef CONFIG_PCI +#include <pci.h> +#include <asm/arch/ixp425pci.h> +#endif #include "actux1_hw.h" DECLARE_GLOBAL_DATA_PTR ; -int board_init (void ) +int board_early_init_f (void ) +{ +/* CS5: Debug port */ +writel (0x9d520003 ,IXP425_EXP_CS5 ); +/* CS6: HwRel */ +writel (0x81860001 ,IXP425_EXP_CS6 ); +/* CS7: LEDs */ +writel (0x80900003 ,IXP425_EXP_CS7 ); +return 0 ; +} + +int board_init (void ) { gd->bd->bi_arch_number =MACH_TYPE_ACTUX1 ;/* adress of boot parameters */ gd->bd->bi_boot_params =0x00000100 ; -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); -/* Setup GPIO's for PCI INTA */ -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI1_INTA ); -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI1_INTA ); +/* Setup GPIOs for PCI INTA */ +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI1_INTA ); +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI1_INTA ); -/* Setup GPIO's for 33MHz clock output */ -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); - *IXP425_GPIO_GPCLKR =0x011001FF ; +/* Setup GPIOs for 33MHz clock output */ +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); +writel (0x011001FF ,IXP425_GPIO_GPCLKR ); -/* CS5: Debug port */ - *IXP425_EXP_CS5 =0x9d520003 ; -/* CS6: HwRel */ - *IXP425_EXP_CS6 =0x81860001 ; -/* CS7: LEDs */ - *IXP425_EXP_CS7 =0x80900003 ; - -udelay (533 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); +udelay (533 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); -ACTUX1_LED1 (2 ); -ACTUX1_LED2 (2 ); -ACTUX1_LED3 (0 ); -ACTUX1_LED4 (0 ); -ACTUX1_LED5 (0 ); -ACTUX1_LED6 (0 ); -ACTUX1_LED7 (0 ); +ACTUX1_LED1 (2 ); +ACTUX1_LED2 (2 ); +ACTUX1_LED3 (0 ); +ACTUX1_LED4 (0 ); +ACTUX1_LED5 (0 ); +ACTUX1_LED6 (0 ); +ACTUX1_LED7 (0 ); -ACTUX1_HS (ACTUX1_HS_DCD ); +ACTUX1_HS (ACTUX1_HS_DCD );return 0 ; }
@@ -87,20 +95,20 @@ int board_init (void)/* * Check Board Identity */ -int checkboard (void ) +int checkboard (void ) { -char *s =getenv ("serial#" ); +char *s =getenv ("serial#" ); -puts ("Board: AcTux-1 rev." ); -putc (ACTUX1_BOARDREL +'A' -1 ); +puts ("Board: AcTux-1 rev." ); +putc (ACTUX1_BOARDREL +'A' -1 );if (s !=NULL ) { -puts (", serial# " ); -puts (s); +puts (", serial# " ); +puts (s); } -putc ('\n' ); +putc ('\n' ); -return (0 ); +return 0 ; }/*************************************************************************
@@ -109,39 +117,36 @@ int checkboard (void)* 1 = Rev. A * 2 = Rev. B *************************************************************************/ -u32 get_board_rev (void ) +u32 get_board_rev (void ) {return ACTUX1_BOARDREL ; } -int dram_init (void ) +int dram_init (void ) { - gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size =PHYS_SDRAM_1_SIZE ; - -return (0 ); + gd->ram_size =get_ram_size (CONFIG_SYS_SDRAM_BASE ,128 <<20 ); +return 0 ; } -#if defined(CONFIG_CMD_PCI ) || defined(CONFIG_PCI ) -extern struct pci_controller hose; -extern void pci_ixp_init (struct pci_controller *hose); -void pci_init_board (void ) +#ifdef CONFIG_PCI +struct pci_controller hose; + +void pci_init_board (void ) { -extern void pci_ixp_init (struct pci_controller *hose); -pci_ixp_init (&hose); +pci_ixp_init (&hose); }#endif -void reset_phy (void ) +void reset_phy (void ) {u16 id1, id2;/* initialize the PHY */ -miiphy_reset ("NPE0" ,CONFIG_PHY_ADDR ); +miiphy_reset ("NPE0" ,CONFIG_PHY_ADDR ); -miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID1 , &id1); -miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID2 , &id2); +miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID1 , &id1); +miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID2 , &id2); id2 &=0xFFF0 ;/* mask out revision bits */
@@ -152,9 +157,9 @@ void reset_phy (void)* LED2 (unused) = LINK, * LED3(red) = Coll */ -miiphy_write ("NPE0" ,CONFIG_PHY_ADDR ,20 ,0xD432 ); +miiphy_write ("NPE0" ,CONFIG_PHY_ADDR ,20 ,0xD432 ); }else if (id1 ==0x143 && id2 ==0xbc30 ) {/* BCM5241: default values are OK */ }else -printf ("unknown ethernet PHY ID: %x %x\n" , id1, id2); +printf ("unknown ethernet PHY ID: %x %x\n" , id1, id2); }
board/actux1/config.mk deleted +0 -6
@@ -1,6 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x00e00000 - -# include NPE ethernet driver -BOARDLIBS = arch/arm/cpu/ixp/npe/libnpe.o - -LDSCRIPT := $(SRCTREE)/board/$(BOARDDIR)/u-boot.lds
board/actux1/u-boot.lds +29 -12
61 lines not on this page · raw message
boards.cfg +4 -1
@@ -130,7 +130,10 @@ smdkc100 arm armv7 smdkc100 samsung s5pc210_universal arm armv7 universal_c210 samsung s5pc2xx harmony arm armv7 harmony nvidia tegra2 seaboard arm armv7 seaboard nvidia tegra2 -actux1 arm ixp +actux1_4_16 arm ixp actux1 - - actux1:FLASH2X2 +actux1_8_16 arm ixp actux1 - - actux1:FLASH1X8 +actux1_4_32 arm ixp actux1 - - actux1:FLASH2X2,RAM_32MB +actux1_8_32 arm ixp actux1 - - actux1:FLASH1X8,RAM_32MB actux2 arm ixp actux3 arm ixp actux4 arm ixp
include/configs/actux1.h +36 -27
170 lines not on this page · raw message
Signature · 1 line
1.7.2.5
PATCH v4 8/17 update/fix AcTux1 board
Quoted 43 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
- add wildcard to bss segment in linker script
Changes for V3:
- use I/O accessors
- coding style fixes
- add PCI clock/reset initialization
- useget_ram_sizeindram_init
- add PCI support
- remove config.mk
- remove unused definitions fromconfig.h
- addCONFIG_BOARD_SIZE_LIMIT
Changes for V4:
- add changelog
- merge__bss_endchange inu-boot.ldsfrom masterboard/actux1/actux1.c | 111 ++++++++++++++++++++++++---------------------- board/actux1/config.mk | 6 --- board/actux1/u-boot.lds | 41 ++++++++++++----- boards.cfg | 5 ++- include/configs/actux1.h | 63 +++++++++++++++----------- 5 files changed, 127 insertions(+), 99 deletions(-) delete mode 100644 board/actux1/config.mkboard/actux1/actux1.c +4
-0@@ -37,49 +37,57 @@#include <asm/arch/ixp425.h> #include <asm/io.h> #include <miiphy.h> +#ifdef CONFIG_PCI +#include <pci.h> +#include <asm/arch/ixp425pci.h> +#endif #include "actux1_hw.h" DECLARE_GLOBAL_DATA_PTR ;
board/actux1/actux1.c line 56
Quoted 10 lines
board/actux1/actux1.c +8
-1-int board_init (void ) +int board_early_init_f (void ) +{ +/* CS5: Debug port */ +writel (0x9d520003 ,IXP425_EXP_CS5 ); +/* CS6: HwRel */ +writel (0x81860001 ,IXP425_EXP_CS6 ); +/* CS7: LEDs */ +writel (0x80900003 ,IXP425_EXP_CS7 );
Any idea what this magic means ?
Quoted 164 lines
board/actux1/actux1.c +46
-52+return 0 ; +} + +int board_init (void ) { gd->bd->bi_arch_number =MACH_TYPE_ACTUX1 ;/* adress of boot parameters */ gd->bd->bi_boot_params =0x00000100 ; -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); -/* Setup GPIO's for PCI INTA */ -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI1_INTA ); -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI1_INTA ); +/* Setup GPIOs for PCI INTA */ +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI1_INTA ); +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI1_INTA ); -/* Setup GPIO's for 33MHz clock output */ -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); - *IXP425_GPIO_GPCLKR =0x011001FF ; +/* Setup GPIOs for 33MHz clock output */ +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); +writel (0x011001FF ,IXP425_GPIO_GPCLKR ); -/* CS5: Debug port */ - *IXP425_EXP_CS5 =0x9d520003 ; -/* CS6: HwRel */ - *IXP425_EXP_CS6 =0x81860001 ; -/* CS7: LEDs */ - *IXP425_EXP_CS7 =0x80900003 ; - -udelay (533 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); +udelay (533 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); -ACTUX1_LED1 (2 ); -ACTUX1_LED2 (2 ); -ACTUX1_LED3 (0 ); -ACTUX1_LED4 (0 ); -ACTUX1_LED5 (0 ); -ACTUX1_LED6 (0 ); -ACTUX1_LED7 (0 ); +ACTUX1_LED1 (2 ); +ACTUX1_LED2 (2 ); +ACTUX1_LED3 (0 ); +ACTUX1_LED4 (0 ); +ACTUX1_LED5 (0 ); +ACTUX1_LED6 (0 ); +ACTUX1_LED7 (0 ); -ACTUX1_HS (ACTUX1_HS_DCD ); +ACTUX1_HS (ACTUX1_HS_DCD );return 0 ; }@@ -87,20 +95,20 @@ int board_init (void)/* * Check Board Identity */ -int checkboard (void ) +int checkboard (void ) { -char *s =getenv ("serial#" ); +char *s =getenv ("serial#" ); -puts ("Board: AcTux-1 rev." ); -putc (ACTUX1_BOARDREL +'A' -1 ); +puts ("Board: AcTux-1 rev." ); +putc (ACTUX1_BOARDREL +'A' -1 );if (s !=NULL ) { -puts (", serial# " ); -puts (s); +puts (", serial# " ); +puts (s); } -putc ('\n' ); +putc ('\n' ); -return (0 ); +return 0 ; }/************************************************************************* @@ -109,39 +117,36 @@ int checkboard (void)* 1 = Rev. A * 2 = Rev. B *************************************************************************/ -u32 get_board_rev (void ) +u32 get_board_rev (void ) {return ACTUX1_BOARDREL ; } -int dram_init (void ) +int dram_init (void ) { - gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size =PHYS_SDRAM_1_SIZE ; - -return (0 ); + gd->ram_size =get_ram_size (CONFIG_SYS_SDRAM_BASE ,128 <<20 ); +return 0 ; } -#if defined(CONFIG_CMD_PCI ) || defined(CONFIG_PCI ) -extern struct pci_controller hose; -extern void pci_ixp_init (struct pci_controller *hose); -void pci_init_board (void ) +#ifdef CONFIG_PCI +struct pci_controller hose; + +void pci_init_board (void ) { -extern void pci_ixp_init (struct pci_controller *hose); -pci_ixp_init (&hose); +pci_ixp_init (&hose); }#endif -void reset_phy (void ) +void reset_phy (void ) {u16 id1, id2;/* initialize the PHY */ -miiphy_reset ("NPE0" ,CONFIG_PHY_ADDR ); +miiphy_reset ("NPE0" ,CONFIG_PHY_ADDR ); -miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID1 , &id1); -miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID2 , &id2); +miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID1 , &id1); +miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID2 , &id2); id2 &=0xFFF0 ;/* mask out revision bits */ @@ -152,9 +157,9 @@ void reset_phy (void)* LED2 (unused) = LINK, * LED3(red) = Coll */ -miiphy_write ("NPE0" ,CONFIG_PHY_ADDR ,20 ,0xD432 ); +miiphy_write ("NPE0" ,CONFIG_PHY_ADDR ,20 ,0xD432 ); }else if (id1 ==0x143 && id2 ==0xbc30 ) {/* BCM5241: default values are OK */ }else -printf ("unknown ethernet PHY ID: %x %x\n" , id1, id2); +printf ("unknown ethernet PHY ID: %x %x\n" , id1, id2); }board/actux1/config.mk deleted +0
-0
board/actux1/config.mk line 6
Quoted 6 lines
board/actux1/config.mk deleted +0
-6@@ -1,6 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x00e00000 - -# include NPE ethernet driver -BOARDLIBS = arch/arm/cpu/ixp/npe/libnpe.o - -LDSCRIPT := $(SRCTREE)/board/$(BOARDDIR)/u-boot.lds
Do you need uboot.lds at all ?
Quoted 276 lines
board/actux1/u-boot.lds +29
-12@@ -30,15 +30,15 @@ SECTIONS . = ALIGN (4); .text : { - arch/arm/cpu/ixp/start.o(.text) - lib/string.o(.text) - lib/vsprintf.o(.text) - arch/arm/lib/board.o(.text) - common/dlmalloc.o(.text) - arch/arm/cpu/ixp/cpu.o(.text) + arch/arm/cpu/ixp/start.o(.text*) + net/libnet.o(.text*) + board/actux1/libactux1.o(.text*) + arch/arm/cpu/ixp/libixp.o(.text*) + drivers/serial/libserial.o(.text*) + . = env_offset; common/env_embedded.o(.ppcenv) - * (.text) + *(.text*) } . = ALIGN (4);@@ -47,7 +47,7 @@ SECTIONS } . = ALIGN (4); .data : { - *(.data) + *(.data*) } . = ALIGN (4); .got : {@@ -61,10 +61,27 @@ SECTIONS __u_boot_cmd_end =.; . = ALIGN (4); - __bss_start =.; - .bss (NOLOAD): { - *(.bss) - . = ALIGN(4); + .rel.dyn : { + __rel_dyn_start = .; + *(.rel*) + __rel_dyn_end = .; + } + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + } + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.bss*) + . = ALIGN(4); + _end = .; } __bss_end__ =.; + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } }boards.cfg +0
-0@@ -130,7 +130,10 @@ smdkc100 arm armv7smdkc100 samsung
s5pc210_universalarm armv7
universal_c210samsung s5pc2xx harmony
arm armv7 harmony nvidia tegra2
seaboard arm armv7 seaboard
nvidia tegra2 -actux1 arm ixp
+actux1_4_16 arm ixp actux1 -
- actux1:FLASH2X2 +actux1_8_16 arm
ixp actux1 - -
actux1:FLASH1X8 +actux1_4_32 arm ixp
actux1 - - actux1:FLASH2X2,RAM_32MBboards.cfg +1
-1+actux1_8_32 arm ixp actux1 - - actux1:FLASH1X8,RAM_32MB actux2 arm ixp actux3 arm ixp actux4 arm ixpinclude/configs/actux1.h +35
-27@@ -26,13 +26,6 @@#ifndef __CONFIG_H#define __CONFIG_H -/* 1: modified board with 32MB DRAM */ -#define CONFIG_ACTUX1_32MB 0 -/* 1: 2*2MB FLASH (standard) */ -#define CONFIG_ACTUX1_FLASH2X2 1 -/* 1: 1*8MB FLASH (upgraded boards) */ -#define CONFIG_ACTUX1_FLASH1X8 0 -#define CONFIG_IXP425 1#define CONFIG_ACTUX1 1@@ -44,17 +37,16 @@#define CONFIG_BAUDRATE 115200#define CONFIG_BOOTDELAY 3#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ +#define CONFIG_BOARD_EARLY_INIT_F 1 +#define CONFIG_SYS_LDSCRIPT "board/actux1/u-boot.lds"/*************************************************************** * U-boot generic defines start here. ***************************************************************/ -#undef CONFIG_USE_IRQ -/* * Size of malloc() pool */ #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024) -/* size in bytes reserved for initial data */ /* allow to overwrite serial and ethaddr */ #define CONFIG_ENV_OVERWRITE @@ -63,8 +55,13 @@#include <config_cmd_default.h> #define CONFIG_CMD_ELF -#undef CONFIG_CMD_PCI -#undef CONFIG_PCI +#ifdef CONFIG_PCI +#define CONFIG_CMD_PCI +#define CONFIG_PCI_PNP +#define CONFIG_IXP_PCI +#define CONFIG_PCI_SCAN_SHOW +#define CONFIG_CMD_PCI_ENUM +#endif #define CONFIG_BOOTCOMMAND "run boot_flash"/* enable passing of ATAGs */ @@ -94,8 +91,9 @@#define CONFIG_SYS_MEMTEST_START 0x00400000#define CONFIG_SYS_MEMTEST_END 0x00800000 -/* spec says 66.666 MHz, but it appears to be 33 */ -#define CONFIG_SYS_HZ 3333333 +/* timer clock - 2* OSC_IN system clock */ +#define CONFIG_IXP425_TIMER_CLK 66666666 +#define CONFIG_SYS_HZ 1000/* default load address */ #define CONFIG_SYS_LOAD_ADDR 0x00010000@@ -110,10 +108,6 @@* The stack sizes are set up in start.S using the settings below */ #define CONFIG_STACKSIZE (128*1024)/* regular stack */ -#ifdef CONFIG_USE_IRQ -# define CONFIG_STACKSIZE_IRQ (4*1024)/* IRQ stack */ -# define CONFIG_STACKSIZE_FIQ (4*1024)/* FIQ stack */ -#endif /* Expansion bus settings */ #define CONFIG_SYS_EXP_CS0 0xbd113842@@ -121,9 +115,9 @@/* SDRAM settings */ #define CONFIG_NR_DRAM_BANKS 1#define PHYS_SDRAM_1 0x00000000 -#define CONFIG_SYS_DRAM_BASE 0x00000000 +#define CONFIG_SYS_SDRAM_BASE 0x00000000 -#if CONFIG_ACTUX1_32MB +#ifdef CONFIG_RAM_32MB # define CONFIG_SYS_SDR_CONFIG 0x18# define PHYS_SDRAM_1_SIZE 0x02000000# define CONFIG_SYS_SDRAM_REFRESH_CNT 0x81a@@ -137,8 +131,11 @@# define CONFIG_SYS_DRAM_SIZE 0x01000000#endif + +/* FLASH organization */ -#if CONFIG_ACTUX1_FLASH2X2 +#define CONFIG_SYS_TEXT_BASE 0x50000000 +#ifdef CONFIG_FLASH2X2 # define CONFIG_SYS_MAX_FLASH_BANKS 2/* max number of sectors on one chip */ # define CONFIG_SYS_MAX_FLASH_SECT 40@@ -146,7 +143,7 @@# define PHYS_FLASH_2 0x50200000# define CONFIG_SYS_FLASH_BANKS_LIST { PHYS_FLASH_1, PHYS_FLASH_2 }#endif -#if CONFIG_ACTUX1_FLASH1X8 +#ifdef CONFIG_FLASH1X8 # define CONFIG_SYS_MAX_FLASH_BANKS 1/* max number of sectors on one chip */ # define CONFIG_SYS_MAX_FLASH_SECT 140@@ -157,6 +154,7 @@#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_LEN (256 << 10) +#define CONFIG_BOARD_SIZE_LIMIT 262144/* Use common CFI driver */ #define CONFIG_SYS_FLASH_CFI @@ -173,12 +171,16 @@#define CONFIG_NET_MULTI 1/* NPE0 PHY address */ #define CONFIG_PHY_ADDR 0 +/* NPE1 PHY address (HW Release E only) */ +#define CONFIG_PHY1_ADDR 1/* MII PHY management */ #define CONFIG_MII 1/* Number of ethernet rx buffers & descriptors */ #define CONFIG_SYS_RX_ETH_BUFFER 16#define CONFIG_RESET_PHY_R 1 +#define CONFIG_HAS_ETH1 1 +#define CONFIG_CMD_DHCP #define CONFIG_CMD_NET #define CONFIG_CMD_MII @@ -203,17 +205,19 @@#define CONFIG_ENV_ADDR (PHYS_FLASH_1 + 0x4000)#define CONFIG_SYS_USE_PPCENV 1 -#define CONFIG_EXTRA_ENV_SETTINGS \ +#define CONFIG_EXTRA_ENV_SETTINGS \ "npe_ucode=50040000\0" \ "mtd=IXP4XX-Flash.0:256k(uboot),64k(ucode),1152k(linux),-(root)\0" \ "kerneladdr=50050000\0" \ + "kernelfile=actux1/uImage\0" \ + "rootfile=actux1/rootfs\0" \ "rootaddr=50170000\0" \ "loadaddr=10000\0" \ "updateboot_ser=mw.b 10000 ff 40000;" \ " loady ${loadaddr};" \ " run eraseboot writeboot\0" \ "updateboot_net=mw.b 10000 ff 40000;" \ - " tftp ${loadaddr} u-boot.bin;" \ + " tftp ${loadaddr} actux1/u-boot.bin;" \ " run eraseboot writeboot\0" \ "eraseboot=protect off 50000000 50003fff;" \ " protect off 50006000 5003ffff;" \@@ -221,8 +225,9 @@" erase 50006000 5003ffff\0" \"writeboot=cp.b 10000 50000000 4000;" \" cp.b 16000 50006000 3a000\0" \ -"eraseenv=protect off 50004000 50005fff;" \ -" erase 50004000 50005fff\0" \ +"updateucode=loady;" \ +" era ${npe_ucode} +${filesize};" \ +" cp.b ${loadaddr} ${npe_ucode} ${filesize}\0" \"updateroot=tftp ${loadaddr} ${rootfile};" \" era ${rootaddr} +${filesize};" \" cp.b ${loadaddr} ${rootaddr} ${filesize}\0" \@@ -233,7 +238,7 @@" rootfstype=squashfs,jffs2 init=/etc/preinit\0" \"netargs=setenv bootargs mtdparts=${mtd} root=/dev/mtdblock3" \" rootfstype=squashfs,jffs2 init=/etc/preinit\0" \ -"addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0" \ +"addtty=setenv bootargs ${bootargs} console=ttyS1,${baudrate}\0" \"addeth=setenv bootargs ${bootargs} ethaddr=${ethaddr}\0" \"boot_flash=run flashargs addtty addeth;" \" bootm ${kerneladdr}\0" \@@ -241,4 +246,8 @@" tftpboot ${loadaddr} ${kernelfile};" \" bootm\0" +/* additions for new relocation code, must be added to all boards */ +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) +#endif /* __CONFIG_H */
PATCH v4 8/17 update/fix AcTux1 board
Quoted 630 lines · Marek Vasut
Quoted 51 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
- add wildcard to bss segment in linker scriptChanges for V3:
- use I/O accessors
- coding style fixes
- add PCI clock/reset initialization
- useget_ram_sizeindram_init
- add PCI support
- remove config.mk
- remove unused definitions fromconfig.h
- addCONFIG_BOARD_SIZE_LIMITChanges for V4:
- add changelog
- merge__bss_endchange inu-boot.ldsfrom masterboard/actux1/actux1.c | 111++++++++++++++++++++++++----------------------
board/actux1/config.mk|6 ---
board/actux1/u-boot.lds | 41 ++++++++++++----- boards.cfg | 5 ++- include/configs/actux1.h | 63 +++++++++++++++----------- 5 files changed, 127 insertions(+), 99 deletions(-) delete mode 100644 board/actux1/config.mkboard/actux1/actux1.c +4
-0@@ -37,49 +37,57 @@#include <asm/arch/ixp425.h> #include <asm/io.h> #include <miiphy.h> +#ifdef CONFIG_PCI +#include <pci.h> +#include <asm/arch/ixp425pci.h> +#endif #include "actux1_hw.h" DECLARE_GLOBAL_DATA_PTR ;board/actux1/actux1.c line 58
Quoted 10 lines
board/actux1/actux1.c +8
-1-int board_init (void ) +int board_early_init_f (void ) +{ +/* CS5: Debug port */ +writel (0x9d520003 ,IXP425_EXP_CS5 ); +/* CS6: HwRel */ +writel (0x81860001 ,IXP425_EXP_CS6 ); +/* CS7: LEDs */ +writel (0x80900003 ,IXP425_EXP_CS7 );Any idea what this magic means ?
Quoted 200 lines
board/actux1/actux1.c +29
-32+return 0 ; +} + +int board_init (void ) { gd->bd->bi_arch_number =MACH_TYPE_ACTUX1 ;/* adress of boot parameters */ gd->bd->bi_boot_params =0x00000100 ; -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); -/* Setup GPIO's for PCI INTA */ -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI1_INTA ); -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI1_INTA ); +/* Setup GPIOs for PCI INTA */ +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI1_INTA ); +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI1_INTA ); -/* Setup GPIO's for 33MHz clock output */ -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); - *IXP425_GPIO_GPCLKR =0x011001FF ; +/* Setup GPIOs for 33MHz clock output */ +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); +writel (0x011001FF ,IXP425_GPIO_GPCLKR ); -/* CS5: Debug port */ - *IXP425_EXP_CS5 =0x9d520003 ; -/* CS6: HwRel */ - *IXP425_EXP_CS6 =0x81860001 ; -/* CS7: LEDs */ - *IXP425_EXP_CS7 =0x80900003 ; - -udelay (533 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); +udelay (533 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); -ACTUX1_LED1 (2 ); -ACTUX1_LED2 (2 ); -ACTUX1_LED3 (0 ); -ACTUX1_LED4 (0 ); -ACTUX1_LED5 (0 ); -ACTUX1_LED6 (0 ); -ACTUX1_LED7 (0 ); +ACTUX1_LED1 (2 ); +ACTUX1_LED2 (2 ); +ACTUX1_LED3 (0 ); +ACTUX1_LED4 (0 ); +ACTUX1_LED5 (0 ); +ACTUX1_LED6 (0 ); +ACTUX1_LED7 (0 ); -ACTUX1_HS (ACTUX1_HS_DCD ); +ACTUX1_HS (ACTUX1_HS_DCD );return 0 ; }@@ -87,20 +95,20 @@ int board_init (void)/* * Check Board Identity */ -int checkboard (void ) +int checkboard (void ) { -char *s =getenv ("serial#" ); +char *s =getenv ("serial#" ); -puts ("Board: AcTux-1 rev." ); -putc (ACTUX1_BOARDREL +'A' -1 ); +puts ("Board: AcTux-1 rev." ); +putc (ACTUX1_BOARDREL +'A' -1 );if (s !=NULL ) { -puts (", serial# " ); -puts (s); +puts (", serial# " ); +puts (s);board/actux1/actux1.c +16
-18} -putc ('\n' ); +putc ('\n' ); -return (0 ); +return 0 ; }/*********************************************************************** ** @@ -109,39 +117,36 @@ int checkboard (void)* 1 = Rev. A * 2 = Rev. B ************************************************************************* / -u32 get_board_rev (void) +u32 get_board_rev(void) { return ACTUX1_BOARDREL; } -int dram_init (void) +int dram_init(void) { -gd->bd->bi_dram[0].start = PHYS_SDRAM_1; -gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; - -return (0); +gd->ram_size = get_ram_size(CONFIG_SYS_SDRAM_BASE, 128<<20); +return 0; } -#if defined(CONFIG_CMD_PCI) || defined(CONFIG_PCI) -extern struct pci_controller hose; -extern void pci_ixp_init (struct pci_controller *hose); -void pci_init_board (void) +#ifdef CONFIG_PCI +struct pci_controller hose; + +void pci_init_board(void) { -extern void pci_ixp_init (struct pci_controller *hose); -pci_ixp_init (&hose); +pci_ixp_init(&hose); } #endif -void reset_phy (void) +void reset_phy(void) { u16 id1, id2; /* initialize the PHY */ -miiphy_reset ("NPE0" ,CONFIG_PHY_ADDR ); +miiphy_reset ("NPE0" ,CONFIG_PHY_ADDR ); -miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID1 , &id1); -miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID2 , &id2); +miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID1 , &id1); +miiphy_read ("NPE0" ,CONFIG_PHY_ADDR ,MII_PHYSID2 , &id2); id2 &=0xFFF0 ;/* mask out revision bits */ @@ -152,9 +157,9 @@ void reset_phy (void)* LED2 (unused) = LINK, * LED3(red) = Coll */ -miiphy_write ("NPE0" ,CONFIG_PHY_ADDR ,20 ,0xD432 ); +miiphy_write ("NPE0" ,CONFIG_PHY_ADDR ,20 ,0xD432 ); }else if (id1 ==0x143 && id2 ==0xbc30 ) {board/actux1/actux1.c +1
-1/* BCM5241: default values are OK */ }else -printf ("unknown ethernet PHY ID: %x %x\n" , id1, id2); +printf ("unknown ethernet PHY ID: %x %x\n" , id1, id2); }board/actux1/config.mk deleted +0
-0board/actux1/config.mk line 6
Quoted 6 lines
board/actux1/config.mk deleted +0
-6@@ -1,6 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x00e00000 - -# include NPE ethernet driver -BOARDLIBS = arch/arm/cpu/ixp/npe/libnpe.o - -LDSCRIPT := $(SRCTREE)/board/$(BOARDDIR)/u-boot.ldsDo you need
uboot.ldsat all ?Quoted 356 lines
board/actux1/u-boot.lds +7
-7@@ -30,15 +30,15 @@ SECTIONS . = ALIGN (4); .text : { - arch/arm/cpu/ixp/start.o(.text) - lib/string.o(.text) - lib/vsprintf.o(.text) - arch/arm/lib/board.o(.text) - common/dlmalloc.o(.text) - arch/arm/cpu/ixp/cpu.o(.text) + arch/arm/cpu/ixp/start.o(.text*) + net/libnet.o(.text*) + board/actux1/libactux1.o(.text*) + arch/arm/cpu/ixp/libixp.o(.text*) + drivers/serial/libserial.o(.text*) + . = env_offset; common/env_embedded.o(.ppcenv) - * (.text) + *(.text*)board/actux1/u-boot.lds +1
-1} . = ALIGN (4);@@ -47,7 +47,7 @@ SECTIONS } . = ALIGN (4); .data : { - *(.data) + *(.data*)board/actux1/u-boot.lds +21
-4} . = ALIGN (4); .got : {@@ -61,10 +61,27 @@ SECTIONS __u_boot_cmd_end =.; . = ALIGN (4); - __bss_start =.; - .bss (NOLOAD): { - *(.bss) - . = ALIGN(4); + .rel.dyn : { + __rel_dyn_start = .; + *(.rel*) + __rel_dyn_end = .; + } + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + } + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.bss*) + . = ALIGN(4); + _end = .; } __bss_end__ =.; + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } }boards.cfg +0
-0@@ -130,7 +130,10 @@ smdkc100 arm armv7smdkc100 samsung
s5pc210_universalarm
armv7
universal_c210samsung s5pc2xx harmonyarm armv7 harmony nvidia tegra2
seaboard arm armv7 seaboard
nvidia tegra2 -actux1 arm ixpboards.cfg +1
-1+actux1_4_16 arm ixp actux1 - - actux1:FLASH2X2 +actux1_8_16 arm ixp actux1 - -actux1:FLASH1X8 +actux1_4_32 arm ixp
actux1 - - actux1:FLASH2X2,RAM_32MBboards.cfg +1
-1+actux1_8_32 arm ixp actux1 - - actux1:FLASH1X8,RAM_32MB actux2 arm ixp actux3 arm ixp actux4 arm ixpinclude/configs/actux1.h +0
-7@@ -26,13 +26,6 @@#ifndef __CONFIG_H#define __CONFIG_H -/* 1: modified board with 32MB DRAM */ -#define CONFIG_ACTUX1_32MB 0 -/* 1: 2*2MB FLASH (standard) */ -#define CONFIG_ACTUX1_FLASH2X2 1 -/* 1: 1*8MB FLASH (upgraded boards) */ -#define CONFIG_ACTUX1_FLASH1X8 0 -#define CONFIG_IXP425 1#define
CONFIG_ACTUX11include/configs/actux1.h +1
-2@@ -44,17 +37,16 @@#define CONFIG_BAUDRATE 115200#define CONFIG_BOOTDELAY 3#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ +#define CONFIG_BOARD_EARLY_INIT_F 1 +#define CONFIG_SYS_LDSCRIPT "board/actux1/u-boot.lds"/*************************************************************** * U-boot generic defines start here. ***************************************************************/ -#undef CONFIG_USE_IRQ -/* * Size of
malloc()pool
*/#define
CONFIG_SYS_MALLOC_LEN(CONFIG_ENV_SIZE+ 128*1024)include/configs/actux1.h +7
-3-/* size in bytes reserved for initial data */ /* allow to overwrite serial and ethaddr */ #define CONFIG_ENV_OVERWRITE @@ -63,8 +55,13 @@#include <config_cmd_default.h> #define CONFIG_CMD_ELF -#undef CONFIG_CMD_PCI -#undef CONFIG_PCI +#ifdef CONFIG_PCI +#define CONFIG_CMD_PCI +#define CONFIG_PCI_PNP +#define CONFIG_IXP_PCI +#define CONFIG_PCI_SCAN_SHOW +#define CONFIG_CMD_PCI_ENUM +#endif #define
CONFIG_BOOTCOMMAND"runboot_flash"
/* enable passing of ATAGs */include/configs/actux1.h +3
-2@@ -94,8 +91,9 @@#define CONFIG_SYS_MEMTEST_START 0x00400000#define CONFIG_SYS_MEMTEST_END 0x00800000 -/* spec says 66.666 MHz, but it appears to be 33 */ -#define CONFIG_SYS_HZ 3333333 +/* timer clock - 2* OSC_IN system clock */ +#define CONFIG_IXP425_TIMER_CLK 66666666 +#define CONFIG_SYS_HZ 1000/* default load address */ #define
CONFIG_SYS_LOAD_ADDR0x00010000include/configs/actux1.h +0
-4@@ -110,10 +108,6 @@* The stack sizes are set up in start.S using the settings below */ #define CONFIG_STACKSIZE (128*1024)/* regular stack */ -#ifdef CONFIG_USE_IRQ -# define CONFIG_STACKSIZE_IRQ (4*1024)/* IRQ stack */ -# define CONFIG_STACKSIZE_FIQ (4*1024)/* FIQ stack */ -#endif /* Expansion bus settings */
#defineCONFIG_SYS_EXP_CS00xbd113842include/configs/actux1.h +2
-2@@ -121,9 +115,9 @@/* SDRAM settings */ #define CONFIG_NR_DRAM_BANKS 1#define PHYS_SDRAM_1 0x00000000 -#define CONFIG_SYS_DRAM_BASE 0x00000000 +#define CONFIG_SYS_SDRAM_BASE 0x00000000 -#if CONFIG_ACTUX1_32MB +#ifdef CONFIG_RAM_32MB # define CONFIG_SYS_SDR_CONFIG 0x18 # define PHYS_SDRAM_1_SIZE 0x02000000 # define CONFIG_SYS_SDRAM_REFRESH_CNT 0x81ainclude/configs/actux1.h +4
-1@@ -137,8 +131,11 @@# define CONFIG_SYS_DRAM_SIZE 0x01000000#endif + +/* FLASH organization */ -#if CONFIG_ACTUX1_FLASH2X2 +#define CONFIG_SYS_TEXT_BASE 0x50000000 +#ifdef CONFIG_FLASH2X2 # define CONFIG_SYS_MAX_FLASH_BANKS 2 /* max number of sectors on one chip */ # define CONFIG_SYS_MAX_FLASH_SECT 40include/configs/actux1.h +1
-1@@ -146,7 +143,7 @@# define PHYS_FLASH_2 0x50200000# define CONFIG_SYS_FLASH_BANKS_LIST { PHYS_FLASH_1, PHYS_FLASH_2 }#endif -#if CONFIG_ACTUX1_FLASH1X8 +#ifdef CONFIG_FLASH1X8 # define CONFIG_SYS_MAX_FLASH_BANKS 1 /* max number of sectors on one chip */ # define CONFIG_SYS_MAX_FLASH_SECT 140include/configs/actux1.h +1
-0@@ -157,6 +154,7 @@#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_LEN (256 << 10) +#define CONFIG_BOARD_SIZE_LIMIT 262144/* Use common CFI driver */
#defineCONFIG_SYS_FLASH_CFIinclude/configs/actux1.h +4
-0@@ -173,12 +171,16 @@#define CONFIG_NET_MULTI 1/* NPE0 PHY address */ #define CONFIG_PHY_ADDR 0 +/* NPE1 PHY address (HW Release E only) */ +#define CONFIG_PHY1_ADDR 1/* MII PHY management */ #define CONFIG_MII 1/* Number of ethernet rx buffers & descriptors */ #define CONFIG_SYS_RX_ETH_BUFFER 16#define CONFIG_RESET_PHY_R 1 +#define CONFIG_HAS_ETH1 1 +#define
CONFIG_CMD_DHCP
#defineCONFIG_CMD_NET
#defineCONFIG_CMD_MIIinclude/configs/actux1.h +7
-4@@ -203,17 +205,19 @@#define CONFIG_ENV_ADDR (PHYS_FLASH_1 + 0x4000)#define CONFIG_SYS_USE_PPCENV 1 -#define CONFIG_EXTRA_ENV_SETTINGS \ +#define CONFIG_EXTRA_ENV_SETTINGS \ "npe_ucode=50040000\0" \ "mtd=IXP4XX-Flash.0:256k(uboot),64k(ucode),1152k(linux),-(root)\0" \ "kerneladdr=50050000\0" \ +"kernelfile=actux1/uImage\0" \ +"rootfile=actux1/rootfs\0" \"rootaddr=50170000\0" \"loadaddr=10000\0" \"updateboot_ser=mw.b 10000 ff 40000;" \" loady ${loadaddr};" \" run eraseboot writeboot\0" \"updateboot_net=mw.b 10000 ff 40000;" \ -" tftp ${loadaddr} u-boot.bin;" \ +" tftp ${loadaddr} actux1/u-boot.bin;" \" run eraseboot writeboot\0" \"eraseboot=protect off 50000000 50003fff;" \" protect off 50006000 5003ffff;" \@@ -221,8 +225,9 @@" erase 50006000 5003ffff\0" \"writeboot=cp.b 10000 50000000 4000;" \" cp.b 16000 50006000 3a000\0" \ -"eraseenv=protect off 50004000 50005fff;" \ -" erase 50004000 50005fff\0" \ +"updateucode=loady;" \ +" era ${npe_ucode} +${filesize};" \ +" cp.b ${loadaddr} ${npe_ucode} ${filesize}\0" \include/configs/actux1.h +1
-1"updateroot=tftp ${loadaddr} ${rootfile};" \" era ${rootaddr} +${filesize};" \" cp.b ${loadaddr} ${rootaddr} ${filesize}\0" \@@ -233,7 +238,7 @@" rootfstype=squashfs,jffs2 init=/etc/preinit\0" \"netargs=setenv bootargs mtdparts=${mtd} root=/dev/mtdblock3" \" rootfstype=squashfs,jffs2 init=/etc/preinit\0" \ -"addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0" \ +"addtty=setenv bootargs ${bootargs} console=ttyS1,${baudrate}\0" \include/configs/actux1.h +0
-0"addeth=setenv bootargs ${bootargs} ethaddr=${ethaddr}\0" \"boot_flash=run flashargs addtty addeth;" \" bootm ${kerneladdr}\0" \@@ -241,4 +246,8 @@" tftpboot ${loadaddr} ${kernelfile};" \" bootm\0"
Quoted 6 lines
Quoted 6 lines
include/configs/actux1.h +4
-0+/* additions for new relocation code, must be added to all boards */ +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) +#endif /*
__CONFIG_H*/
btw this one doesn't apply for me. Can you please update according to u-boot- pxa.git ? Thanks !
I applied 0001,2,3,4,5,7 so far.
Sorry I frustrated you ;-)
PATCH v4 8/17 update/fix AcTux1 board
Am 05/22/2011 05:36 PM, schrieb Marek Vasut:
Quoted 35 lines · Marek Vasut
Quoted 34 lines · Michael Schwingen
Quoted 33 lines
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
- add wildcard to bss segment in linker scriptChanges for V3:
- use I/O accessors
- coding style fixes
- add PCI clock/reset initialization
- useget_ram_sizeindram_init
- add PCI support
- remove config.mk
- remove unused definitions fromconfig.h
- addCONFIG_BOARD_SIZE_LIMITChanges for V4:
- add changelog
- merge__bss_endchange inu-boot.ldsfrom masterboard/actux1/actux1.c | 111++++++++++++++++++++++++----------------------
board/actux1/config.mk|6 ---
board/actux1/u-boot.lds | 41 ++++++++++++----- boards.cfg | 5 ++- include/configs/actux1.h | 63 +++++++++++++++----------- 5 files changed, 127 insertions(+), 99 deletions(-) delete mode 100644 board/actux1/config.mk
Quoted 7 lines
Quoted 3 lines
board/actux1/actux1.c
Quoted 2 lines
board/actux1/actux1.c +0
-0btw this one doesn't apply for me. Can you please update according to u-boot- pxa.git ? Thanks !
I applied 0001,2,3,4,5,7 so far.
I'll resend the whole series, based on u-boot-pxa.git, as "V5" - I kept all patches and their numbering, ignore anything that is already applied.
cu
Michael
PATCH v4 8/17 update/fix AcTux1 board
In reply to Marek VasutAm 05/21/2011 02:03 AM, schrieb Marek Vasut:
Quoted 11 lines
board/actux1/actux1.c line 56
Quoted 10 lines
board/actux1/actux1.c +8
-1-int board_init (void ) +int board_early_init_f (void ) +{ +/* CS5: Debug port */ +writel (0x9d520003 ,IXP425_EXP_CS5 ); +/* CS6: HwRel */ +writel (0x81860001 ,IXP425_EXP_CS6 ); +/* CS7: LEDs */ +writel (0x80900003 ,IXP425_EXP_CS7 );Any idea what this magic means ?
Those are the parameters for the chip select timings on the expansion bus. Since the IXP port does no supply useful defines for these bits, I had to use magics there (however, even defines would only be readable if you have the datasheet open at the same time).
This is basically just existing code that is moved around.
Quoted 5 lines
Quoted 5 lines
board/actux1/config.mk deleted +0
-0
Quoted 8 lines
board/actux1/config.mk line 6
Quoted 7 lines
board/actux1/config.mk deleted +0
-6@@ -1,6 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x00e00000 - -# include NPE ethernet driver -BOARDLIBS = arch/arm/cpu/ixp/npe/libnpe.o - -LDSCRIPT := $(SRCTREE)/board/$(BOARDDIR)/u-boot.ldsDo you need
uboot.ldsat all ?
Unfortunately, yes, because the environment sector is embedded inside the u-boot image.
cu
Michael
PATCH v4 9/17 update/fix AcTux2 board
In reply to Michael Schwingen---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
- add wildcard to bss segment in linker script
Changes for V3:
- use I/O accessors
- coding style fixes
- use get_ram_size in dram_init
- remove config.mk
- remove unused definitions from config.h
- add CONFIG_BOARD_SIZE_LIMIT
- add CONFIG_MII_NPE0_FIXEDLINK definition
Changes for V4:
- add changelog
- merge __bss_end change in u-boot.lds from master
board/actux2/actux2.c | 99 +++++++++++++++++++++++---------------------- board/actux2/config.mk | 6 --- board/actux2/u-boot.lds | 46 +++++++++++++-------- include/configs/actux2.h | 36 +++++++++++------ 4 files changed, 103 insertions(+), 84 deletions(-) delete mode 100644 board/actux2/config.mk
board/actux2/actux2.c +51 -48
@@ -43,50 +43,55 @@DECLARE_GLOBAL_DATA_PTR ; -int board_init (void ) +int board_early_init_f (void ) +{ +/* CS1: IPAC-X */ +writel (0x94d10013 ,IXP425_EXP_CS1 ); +/* CS5: Debug port */ +writel (0x9d520003 ,IXP425_EXP_CS5 ); +/* CS6: HW release register */ +writel (0x81860001 ,IXP425_EXP_CS6 ); +/* CS7: LEDs */ +writel (0x80900003 ,IXP425_EXP_CS7 ); + +return 0 ; +} + +int board_init (void ) { gd->bd->bi_arch_number =MACH_TYPE_ACTUX2 ;/* adress of boot parameters */ gd->bd->bi_boot_params =0x00000100 ; -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_ETHRST ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DSR ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DCD ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_ETHRST ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DSR ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DCD ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_ETHRST ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_ETHRST ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_DSR ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_DCD ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_DSR ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_DCD ); -/* Setup GPIO's for Interrupt inputs */ -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_DBGINT ); -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_ETHINT ); +/* Setup GPIOs for Interrupt inputs */ +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_DBGINT ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_ETHINT ); -/* Setup GPIO's for 33MHz clock output */ -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); - *IXP425_GPIO_GPCLKR =0x011001FF ; +/* Setup GPIOs for 33MHz clock output */ +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); +writel (0x011001FF ,IXP425_GPIO_GPCLKR ); -/* CS1: IPAC-X */ - *IXP425_EXP_CS1 =0x94d10013 ; -/* CS5: Debug port */ - *IXP425_EXP_CS5 =0x9d520003 ; -/* CS6: HW release register */ - *IXP425_EXP_CS6 =0x81860001 ; -/* CS7: LEDs */ - *IXP425_EXP_CS7 =0x80900003 ; +udelay (533 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_ETHRST ); -udelay (533 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_ETHRST ); - -ACTUX2_LED1 (1 ); -ACTUX2_LED2 (0 ); -ACTUX2_LED3 (0 ); -ACTUX2_LED4 (0 ); +ACTUX2_LED1 (1 ); +ACTUX2_LED2 (0 ); +ACTUX2_LED3 (0 ); +ACTUX2_LED4 (0 );return 0 ; }
@@ -94,28 +99,26 @@ int board_init (void)/* * Check Board Identity */ -int checkboard (void ) +int checkboard (void ) { -char *s =getenv ("serial#" ); +char *s =getenv ("serial#" ); -puts ("Board: AcTux-2 rev." ); -putc (ACTUX2_BOARDREL +'A' -1 ); +puts ("Board: AcTux-2 rev." ); +putc (ACTUX2_BOARDREL +'A' -1 );if (s !=NULL ) { -puts (", serial# " ); -puts (s); +puts (", serial# " ); +puts (s); } -putc ('\n' ); +putc ('\n' ); -return (0 ); +return 0 ; } -int dram_init (void ) +int dram_init (void ) { - gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size =PHYS_SDRAM_1_SIZE ; - -return (0 ); + gd->ram_size =get_ram_size (CONFIG_SYS_SDRAM_BASE ,128 <<20 ); +return 0 ; }/*************************************************************************
@@ -124,13 +127,13 @@ int dram_init (void)* 1 = Rev. A * 2 = Rev. B *************************************************************************/ -u32 get_board_rev (void ) +u32 get_board_rev (void ) {return ACTUX2_BOARDREL ; } -void reset_phy (void ) +void reset_phy (void ) {/* init IcPlus IP175C ethernet switch to native IP175C mode */ -miiphy_write ("NPE0" ,29 ,31 ,0x175C ); +miiphy_write ("NPE0" ,29 ,31 ,0x175C ); }
board/actux2/config.mk deleted +0 -6
@@ -1,6 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x00e00000 - -# include NPE ethernet driver -BOARDLIBS = arch/arm/cpu/ixp/npe/libnpe.o - -LDSCRIPT := $(SRCTREE)/board/$(BOARDDIR)/u-boot.lds
board/actux2/u-boot.lds +29 -17
73 lines not on this page · raw message
include/configs/actux2.h +23 -13
@@ -37,15 +37,14 @@#define CONFIG_BAUDRATE 115200#define CONFIG_BOOTDELAY 5#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ +#define CONFIG_BOARD_EARLY_INIT_F 1 +#define CONFIG_SYS_LDSCRIPT "board/actux2/u-boot.lds"/*************************************************************** * U-boot generic defines start here. ***************************************************************/ -#undef CONFIG_USE_IRQ -/* Size of malloc() pool */ #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024) -/* size in bytes reserved for initial data */ /* allow to overwrite serial and ethaddr */ #define CONFIG_ENV_OVERWRITE
@@ -85,8 +84,9 @@#define CONFIG_SYS_MEMTEST_START 0x00400000#define CONFIG_SYS_MEMTEST_END 0x00800000 -/* spec says 66.666 MHz, but it appears to be 33 */ -#define CONFIG_SYS_HZ 3333333 +/* timer clock - 2* OSC_IN system clock */ +#define CONFIG_IXP425_TIMER_CLK 66666666 +#define CONFIG_SYS_HZ 1000/* default load address */ #define CONFIG_SYS_LOAD_ADDR 0x00010000
@@ -101,10 +101,6 @@* The stack sizes are set up in start.S using the settings below */ #define CONFIG_STACKSIZE (128*1024)/* regular stack */ -#ifdef CONFIG_USE_IRQ -# define CONFIG_STACKSIZE_IRQ (4*1024)/* IRQ stack */ -# define CONFIG_STACKSIZE_FIQ (4*1024)/* FIQ stack */ -#endif /* Expansion bus settings */ #define CONFIG_SYS_EXP_CS0 0xbd113042
@@ -112,7 +108,7 @@/* SDRAM settings */ #define CONFIG_NR_DRAM_BANKS 1#define PHYS_SDRAM_1 0x00000000 -#define CONFIG_SYS_DRAM_BASE 0x00000000 +#define CONFIG_SYS_SDRAM_BASE 0x00000000/* 16MB SDRAM */ #define CONFIG_SYS_SDR_CONFIG 0x3A
@@ -122,6 +118,7 @@#define CONFIG_SYS_DRAM_SIZE 0x01000000/* FLASH organization */ +#define CONFIG_SYS_TEXT_BASE 0x50000000#define CONFIG_SYS_MAX_FLASH_BANKS 1/* max number of sectors on one chip */ #define CONFIG_SYS_MAX_FLASH_SECT 140
@@ -131,6 +128,7 @@#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_LEN (256 << 10) +#define CONFIG_BOARD_SIZE_LIMIT 262144/* Use common CFI driver */ #define CONFIG_SYS_FLASH_CFI
@@ -150,6 +148,11 @@#define CONFIG_PHY_ADDR 0x00/* MII PHY management */ #define CONFIG_MII 1 +/* fixed-speed switch without standard PHY registers on MII */ +#define CONFIG_MII_NPE0_FIXEDLINK 1 +#define CONFIG_MII_NPE0_SPEED 100 +#define CONFIG_MII_NPE0_FULLDUPLEX 1 +/* Number of ethernet rx buffers & descriptors */ #define CONFIG_SYS_RX_ETH_BUFFER 16#define CONFIG_RESET_PHY_R 1
@@ -184,13 +187,15 @@"npe_ucode=50040000\0" \"mtd=IXP4XX-Flash.0:256k(uboot),64k(ucode),1152k(linux),-(root)\0" \"kerneladdr=50050000\0" \ +"kernelfile=actux2/uImage\0" \ +"rootfile=actux2/rootfs\0" \"rootaddr=50170000\0" \"loadaddr=10000\0" \"updateboot_ser=mw.b 10000 ff 40000;" \" loady ${loadaddr};" \" run eraseboot writeboot\0" \"updateboot_net=mw.b 10000 ff 40000;" \ -" tftp ${loadaddr} u-boot.bin;" \ +" tftp ${loadaddr} actux2/u-boot.bin;" \" run eraseboot writeboot\0" \"eraseboot=protect off 50000000 50003fff;" \" protect off 50006000 5003ffff;" \
@@ -198,8 +203,9 @@" erase 50006000 5003ffff\0" \"writeboot=cp.b 10000 50000000 4000;" \" cp.b 16000 50006000 3a000\0" \ -"eraseenv=protect off 50004000 50005fff;" \ -" erase 50004000 50005fff\0" \ +"updateucode=loady;" \ +" era ${npe_ucode} +${filesize};" \ +" cp.b ${loadaddr} ${npe_ucode} ${filesize}\0" \"updateroot=tftp ${loadaddr} ${rootfile};" \" era ${rootaddr} +${filesize};" \" cp.b ${loadaddr} ${rootaddr} ${filesize}\0" \
@@ -218,4 +224,8 @@" tftpboot ${loadaddr} ${kernelfile};" \" bootm\0" +/* additions for new relocation code, must be added to all boards */ +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) +#endif /* __CONFIG_H */
Signature · 1 line
1.7.2.5
PATCH v4 10/17 update/fix AcTux3 board
In reply to Michael Schwingen---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
- add wildcard to bss segment in linker script
Changes for V3:
- use I/O accessors
- coding style fixes
- use get_ram_size in dram_init
- remove config.mk
- remove unused definitions from config.h
- add CONFIG_BOARD_SIZE_LIMIT
- add CONFIG_MII_NPE0_FIXEDLINK definition
Changes for V4:
- add changelog
- merge __bss_end change in u-boot.lds from master
board/actux3/actux3.c | 126 +++++++++++++++++++++++---------------------- board/actux3/config.mk | 6 -- board/actux3/u-boot.lds | 52 ++++++++++++------- include/configs/actux3.h | 38 +++++++++----- 4 files changed, 120 insertions(+), 102 deletions(-) delete mode 100644 board/actux3/config.mk
board/actux3/actux3.c +64 -62
@@ -36,72 +36,76 @@#include <malloc.h> #include <asm/arch/ixp425.h> #include <asm/io.h> -#include <miiphy.h> -#include "actux3_hw.h" DECLARE_GLOBAL_DATA_PTR ; -int board_init (void ) +int board_early_init_f (void ) +{ +/* CS1: IPAC-X */ +writel (0x94d10013 ,IXP425_EXP_CS1 ); +/* CS5: Debug port */ +writel (0x9d520003 ,IXP425_EXP_CS5 ); +/* CS6: Release/Option register */ +writel (0x81860001 ,IXP425_EXP_CS6 ); +/* CS7: LEDs */ +writel (0x80900003 ,IXP425_EXP_CS7 ); + +return 0 ; +} + +int board_init (void ) { gd->bd->bi_arch_number =MACH_TYPE_ACTUX3 ;/* adress of boot parameters */ gd->bd->bi_boot_params =0x00000100 ; -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_ETHRST ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DSR ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DCD ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED5_GN ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED6_RT ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED6_GN ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_ETHRST ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DSR ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DCD ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED5_GN ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED6_RT ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED6_GN ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_ETHRST ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_ETHRST ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_DSR ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_DCD ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_DSR ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_DCD ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_LED5_GN ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_LED6_RT ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_LED6_GN ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_LED5_GN ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_LED6_RT ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_LED6_GN );/* * Setup GPIO's for Interrupt inputs */ -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_DBGINT ); -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_ETHINT ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_DBGINT ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_ETHINT );/* * Setup GPIO's for 33MHz clock output */ -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); - *IXP425_GPIO_GPCLKR =0x011001FF ; - -/* CS1: IPAC-X */ - *IXP425_EXP_CS1 =0x94d10013 ; -/* CS5: Debug port */ - *IXP425_EXP_CS5 =0x9d520003 ; -/* CS6: Release/Option register */ - *IXP425_EXP_CS6 =0x81860001 ; -/* CS7: LEDs */ - *IXP425_EXP_CS7 =0x80900003 ; - -udelay (533 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_ETHRST ); - -ACTUX3_LED1_RT (1 ); -ACTUX3_LED1_GN (0 ); -ACTUX3_LED2_RT (0 ); -ACTUX3_LED2_GN (0 ); -ACTUX3_LED3_RT (0 ); -ACTUX3_LED3_GN (0 ); -ACTUX3_LED4_GN (0 ); -ACTUX3_LED5_RT (0 ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); +writel (0x011001FF ,IXP425_GPIO_GPCLKR ); + +/* we need a minimum PCI reset pulse width after enabling the clock */ +udelay (533 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_ETHRST ); + +ACTUX3_LED1_RT (1 ); +ACTUX3_LED1_GN (0 ); +ACTUX3_LED2_RT (0 ); +ACTUX3_LED2_GN (0 ); +ACTUX3_LED3_RT (0 ); +ACTUX3_LED3_GN (0 ); +ACTUX3_LED4_GN (0 ); +ACTUX3_LED5_RT (0 );return 0 ; }
@@ -109,20 +113,20 @@ int board_init (void)/* * Check Board Identity */ -int checkboard (void ) +int checkboard (void ) { -char *s =getenv ("serial#" ); +char *s =getenv ("serial#" ); -puts ("Board: AcTux-3 rev." ); -putc (ACTUX3_BOARDREL +'A' -1 ); +puts ("Board: AcTux-3 rev." ); +putc (ACTUX3_BOARDREL +'A' -1 );if (s !=NULL ) { -puts (", serial# " ); -puts (s); +puts (", serial# " ); +puts (s); } -putc ('\n' ); +putc ('\n' ); -return (0 ); +return 0 ; }/*************************************************************************
@@ -131,34 +135,32 @@ int checkboard (void)* 1 = Rev. A * 2 = Rev. B *************************************************************************/ -u32 get_board_rev (void ) +u32 get_board_rev (void ) {return ACTUX3_BOARDREL ; } -int dram_init (void ) +int dram_init (void ) { - gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size =PHYS_SDRAM_1_SIZE ; - -return (0 ); + gd->ram_size =get_ram_size (CONFIG_SYS_SDRAM_BASE ,128 <<20 ); +return 0 ; } -void reset_phy (void ) +void reset_phy (void ) {int i;/* initialize the PHY */ -miiphy_reset ("NPE0" ,CONFIG_PHY_ADDR ); +miiphy_reset ("NPE0" ,CONFIG_PHY_ADDR );/* all LED outputs = Link/Act */ -miiphy_write ("NPE0" ,CONFIG_PHY_ADDR ,0x16 ,0x0AAA ); +miiphy_write ("NPE0" ,CONFIG_PHY_ADDR ,0x16 ,0x0AAA );/* * The Marvell 88E6060 switch comes up with all ports disabled. * set all ethernet switch ports to forwarding state */ for (i =1 ; i <=5 ; i++) -miiphy_write ("NPE0" ,CONFIG_PHY_ADDR +8 + i,0x04 ,0x03 ); +miiphy_write ("NPE0" ,CONFIG_PHY_ADDR +8 + i,0x04 ,0x03 ); }
board/actux3/config.mk deleted +0 -6
@@ -1,6 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x00e00000 - -# include NPE ethernet driver -BOARDLIBS = arch/arm/cpu/ixp/npe/libnpe.o - -LDSCRIPT := $(SRCTREE)/board/$(BOARDDIR)/u-boot.lds
board/actux3/u-boot.lds +32 -20
76 lines not on this page · raw message
include/configs/actux3.h +24 -14
@@ -37,15 +37,14 @@#define CONFIG_BAUDRATE 115200#define CONFIG_BOOTDELAY 3#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ +#define CONFIG_BOARD_EARLY_INIT_F 1 +#define CONFIG_SYS_LDSCRIPT "board/actux3/u-boot.lds"/*************************************************************** * U-boot generic defines start here. ***************************************************************/ -#undef CONFIG_USE_IRQ -/* Size of malloc() pool */ #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024) -/* size in bytes reserved for initial data */ /* allow to overwrite serial and ethaddr */ #define CONFIG_ENV_OVERWRITE
@@ -83,8 +82,9 @@#define CONFIG_SYS_MEMTEST_START 0x00400000#define CONFIG_SYS_MEMTEST_END 0x00800000 -/* spec says 66.666 MHz, but it appears to be 33 */ -#define CONFIG_SYS_HZ 3333333 +/* timer clock - 2* OSC_IN system clock */ +#define CONFIG_IXP425_TIMER_CLK 66666666 +#define CONFIG_SYS_HZ 1000/* default load address */ #define CONFIG_SYS_LOAD_ADDR 0x00010000
@@ -100,10 +100,6 @@* The stack sizes are set up in start.S using the settings below */ #define CONFIG_STACKSIZE (128*1024)/* regular stack */ -#ifdef CONFIG_USE_IRQ -# define CONFIG_STACKSIZE_IRQ (4*1024)/* IRQ stack */ -# define CONFIG_STACKSIZE_FIQ (4*1024)/* FIQ stack */ -#endif /* Expansion bus settings */ #define CONFIG_SYS_EXP_CS0 0xbd113442
@@ -111,7 +107,7 @@/* SDRAM settings */ #define CONFIG_NR_DRAM_BANKS 1#define PHYS_SDRAM_1 0x00000000 -#define CONFIG_SYS_DRAM_BASE 0x00000000 +#define CONFIG_SYS_SDRAM_BASE 0x00000000/* 16MB SDRAM */ #define CONFIG_SYS_SDR_CONFIG 0x3A
@@ -121,6 +117,7 @@#define CONFIG_SYS_DRAM_SIZE 0x01000000/* FLASH organization */ +#define CONFIG_SYS_TEXT_BASE 0x50000000#define CONFIG_SYS_MAX_FLASH_BANKS 1/* max number of sectors on one chip */ #define CONFIG_SYS_MAX_FLASH_SECT 140
@@ -130,6 +127,7 @@#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_LEN (256 << 10) +#define CONFIG_BOARD_SIZE_LIMIT 262144/* Use common CFI driver */ #define CONFIG_SYS_FLASH_CFI
@@ -150,6 +148,11 @@#define CONFIG_PHY_ADDR 0x10/* MII PHY management */ #define CONFIG_MII 1 +/* fixed-speed switch without standard PHY registers on MII */ +#define CONFIG_MII_NPE0_FIXEDLINK 1 +#define CONFIG_MII_NPE0_SPEED 100 +#define CONFIG_MII_NPE0_FULLDUPLEX 1 +/* Number of ethernet rx buffers & descriptors */ #define CONFIG_SYS_RX_ETH_BUFFER 16#define CONFIG_RESET_PHY_R 1
@@ -184,13 +187,15 @@"npe_ucode=50040000\0" \"mtd=IXP4XX-Flash.0:256k(uboot),64k(ucode),1152k(linux),-(root)\0" \"kerneladdr=50050000\0" \ +"kernelfile=actux3/uImage\0" \ +"rootfile=actux3/rootfs\0" \"rootaddr=50170000\0" \"loadaddr=10000\0" \"updateboot_ser=mw.b 10000 ff 40000;" \" loady ${loadaddr};" \" run eraseboot writeboot\0" \"updateboot_net=mw.b 10000 ff 40000;" \ -" tftp ${loadaddr} u-boot.bin;" \ +" tftp ${loadaddr} actux3/u-boot.bin;" \" run eraseboot writeboot\0" \"eraseboot=protect off 50000000 50003fff;" \" protect off 50006000 5003ffff;" \
@@ -198,8 +203,9 @@" erase 50006000 5003ffff\0" \"writeboot=cp.b 10000 50000000 4000;" \" cp.b 16000 50006000 3a000\0" \ -"eraseenv=protect off 50004000 50005fff;" \ -" erase 50004000 50005fff\0" \ +"updateucode=loady;" \ +" era ${npe_ucode} +${filesize};" \ +" cp.b ${loadaddr} ${npe_ucode} ${filesize}\0" \"updateroot=tftp ${loadaddr} ${rootfile};" \" era ${rootaddr} +${filesize};" \" cp.b ${loadaddr} ${rootaddr} ${filesize}\0" \
@@ -210,7 +216,7 @@" rootfstype=squashfs,jffs2 init=/etc/preinit\0" \"netargs=setenv bootargs mtdparts=${mtd} root=/dev/mtdblock3" \" rootfstype=squashfs,jffs2 init=/etc/preinit\0" \ -"addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0" \ +"addtty=setenv bootargs ${bootargs} console=ttyS1,${baudrate}\0" \"addeth=setenv bootargs ${bootargs} ethaddr=${ethaddr}\0" \"boot_flash=run flashargs addtty addeth;" \" bootm ${kerneladdr}\0" \
@@ -218,4 +224,8 @@" tftpboot ${loadaddr} ${kernelfile};" \" bootm\0" +/* additions for new relocation code, must be added to all boards */ +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) +#endif /* __CONFIG_H */
Signature · 1 line
1.7.2.5
PATCH v4 11/17 update/fix AcTux4 board
In reply to Michael Schwingen---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
Changes for V3:
- use I/O accessors
- coding style fixes
- use get_ram_size in dram_init
- add PCI support
- remove config.mk
- remove unused definitions from config.h
- add CONFIG_BOARD_SIZE_LIMIT
- add CONFIG_MII_NPE0_FIXEDLINK definition
Changes for V4:
- add changelog
- merge __bss_end change in u-boot.lds from master
board/actux4/actux4.c | 103 ++++++++++++++++++++++++++------------------- board/actux4/config.mk | 4 -- include/configs/actux4.h | 40 ++++++++++++------ 3 files changed, 86 insertions(+), 61 deletions(-) delete mode 100644 board/actux4/config.mk
board/actux4/actux4.c +59 -44
@@ -35,92 +35,107 @@#include <command.h> #include <malloc.h> #include <asm/arch/ixp425.h> - +#include <asm/io.h> #include <miiphy.h> +#ifdef CONFIG_PCI +#include <pci.h> +#include <asm/arch/ixp425pci.h> +#endif #include "actux4_hw.h" DECLARE_GLOBAL_DATA_PTR ; -int board_init (void ) +int board_early_init_f (void ) +{ +writel (0xbd113c42 ,IXP425_EXP_CS1 ); +return 0 ; +} + +int board_init (void ) { gd->bd->bi_arch_number =MACH_TYPE_ACTUX4 ;/* adress of boot parameters */ gd->bd->bi_boot_params =0x00000100 ; -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_nPWRON); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_nPWRON); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_nPWRON); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_nPWRON); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_IORST );/* led not populated on board*/ -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED3 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_LED3 ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED3 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_LED3 );/* middle LED */ -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED2 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_LED2 ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_LED2 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_LED2 );/* right LED */ /* weak pulldown = LED weak on */ -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_LED1 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_LED1 ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_LED1 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_LED1 );/* Setup GPIO's for Interrupt inputs */ -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_USBINTA ); -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_USBINTB ); -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_USBINTC ); -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_RTCINT ); -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI_INTA ); -GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI_INTB ); - -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_USBINTA ); -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_USBINTB ); -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_USBINTC ); -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_RTCINT ); -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI_INTA ); -GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI_INTB ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_USBINTA ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_USBINTB ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_USBINTC ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_RTCINT ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI_INTA ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_PCI_INTB ); + +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_USBINTA ); +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_USBINTB ); +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_USBINTC ); +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_RTCINT ); +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI_INTA ); +GPIO_INT_ACT_LOW_SET (CONFIG_SYS_GPIO_PCI_INTB );/* Setup GPIO's for 33MHz clock output */ - *IXP425_GPIO_GPCLKR =0x011001FF ; -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); -GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); - - *IXP425_EXP_CS1 =0xbd113c42 ; +writel (0x011001FF ,IXP425_GPIO_GPCLKR ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); -udelay (10000 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); -udelay (10000 ); -GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); -udelay (10000 ); -GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); +udelay (10000 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST ); +udelay (10000 ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_IORST ); +udelay (10000 ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_IORST );return 0 ; }/* Check Board Identity */ -int checkboard (void ) +int checkboard (void ) { -puts ("Board: AcTux-4\n" ); -return (0 ); +puts ("Board: AcTux-4\n" ); +return 0 ; } -int dram_init (void ) +int dram_init (void ) { - gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size =PHYS_SDRAM_1_SIZE ; + gd->ram_size =get_ram_size (CONFIG_SYS_SDRAM_BASE ,128 <<20 ); +return 0 ; +} -return (0 ); +#ifdef CONFIG_PCI +struct pci_controller hose; + +void pci_init_board (void ) +{ +pci_ixp_init (&hose); } +#endif /* * Hardcoded flash setup: * Flash 0 is a non-CFI SST 39VF020 flash, 8 bit flash / 8 bit bus. * Flash 1 is an Intel *16 flash using the CFI driver. */ -ulong board_flash_get_legacy (ulong base,int banknum,flash_info_t * info) +ulong board_flash_get_legacy (ulong base,int banknum,flash_info_t *info) {if (banknum ==0 ) {/* non-CFI boot flash */ info->portwidth =1 ;
board/actux4/config.mk deleted +0 -4
@@ -1,4 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x00e00000 - -# include NPE ethernet driver -BOARDLIBS = arch/arm/cpu/ixp/npe/libnpe.o
include/configs/actux4.h +27 -13
@@ -37,15 +37,13 @@#define CONFIG_BAUDRATE 115200#define CONFIG_BOOTDELAY 3#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ +#define CONFIG_BOARD_EARLY_INIT_F 1/*************************************************************** * U-boot generic defines start here. ***************************************************************/ -#undef CONFIG_USE_IRQ -/* Size of malloc() pool */ #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024) -/* size in bytes reserved for initial data */ /* allow to overwrite serial and ethaddr */ #define CONFIG_ENV_OVERWRITE
@@ -55,6 +53,15 @@#define CONFIG_CMD_ELF +#define CONFIG_PCI +#ifdef CONFIG_PCI +#define CONFIG_CMD_PCI +#define CONFIG_PCI_PNP +#define CONFIG_IXP_PCI +#define CONFIG_PCI_SCAN_SHOW +#define CONFIG_CMD_PCI_ENUM +#endif +#define CONFIG_BOOTCOMMAND "run boot_flash"/* enable passing of ATAGs */ #define CONFIG_CMDLINE_TAG 1
@@ -82,8 +89,9 @@#define CONFIG_SYS_MEMTEST_START 0x00400000#define CONFIG_SYS_MEMTEST_END 0x00800000 -/* spec says 66.666 MHz, but it appears to be 33 */ -#define CONFIG_SYS_HZ 3333333 +/* timer clock - 2* OSC_IN system clock */ +#define CONFIG_IXP425_TIMER_CLK 66000000 +#define CONFIG_SYS_HZ 1000/* default load address */ #define CONFIG_SYS_LOAD_ADDR 0x00010000
@@ -98,10 +106,6 @@* The stack sizes are set up in start.S using the settings below */ #define CONFIG_STACKSIZE (128*1024)/* regular stack */ -#ifdef CONFIG_USE_IRQ -# define CONFIG_STACKSIZE_IRQ (4*1024)/* IRQ stack */ -# define CONFIG_STACKSIZE_FIQ (4*1024)/* FIQ stack */ -#endif /* Expansion bus settings */ #define CONFIG_SYS_EXP_CS0 0xbd113003
@@ -109,7 +113,7 @@/* SDRAM settings */ #define CONFIG_NR_DRAM_BANKS 1#define PHYS_SDRAM_1 0x00000000 -#define CONFIG_SYS_DRAM_BASE 0x00000000 +#define CONFIG_SYS_SDRAM_BASE 0x00000000/* 32MB SDRAM */ #define CONFIG_SYS_SDR_CONFIG 0x18
@@ -119,6 +123,7 @@#define CONFIG_SYS_DRAM_SIZE 0x02000000/* FLASH organization */ +#define CONFIG_SYS_TEXT_BASE 0x50000000#define CONFIG_SYS_MAX_FLASH_BANKS 2/* max # of sectors per chip */ #define CONFIG_SYS_MAX_FLASH_SECT 70
@@ -129,6 +134,7 @@#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_BASE PHYS_FLASH_1#define CONFIG_SYS_MONITOR_LEN (252 << 10) +#define CONFIG_BOARD_SIZE_LIMIT 258048/* Use common CFI driver */ #define CONFIG_SYS_FLASH_CFI
@@ -153,6 +159,7 @@#define CONFIG_PHY_ADDR 0x1C/* MII PHY management */ #define CONFIG_MII 1 +/* Number of ethernet rx buffers & descriptors */ #define CONFIG_SYS_RX_ETH_BUFFER 16
@@ -181,19 +188,22 @@"mtd=IXP4XX-Flash.0:252k(uboot),4k(uboot_env);" \"IXP4XX-Flash.1:128k(ucode),1280k(linux),-(root)\0" \"kerneladdr=51020000\0" \ +"kernelfile=actux4/uImage\0" \ +"rootfile=actux4/rootfs\0" \"rootaddr=51160000\0" \"loadaddr=10000\0" \"updateboot_ser=mw.b 10000 ff 40000;" \" loady ${loadaddr};" \" run eraseboot writeboot\0" \"updateboot_net=mw.b 10000 ff 40000;" \ -" tftp ${loadaddr} u-boot.bin;" \ +" tftp ${loadaddr} actux4/u-boot.bin;" \" run eraseboot writeboot\0" \"eraseboot=protect off 50000000 5003efff;" \" erase 50000000 +${filesize}\0" \"writeboot=cp.b 10000 50000000 ${filesize}\0" \ -"eraseenv=protect off 5003f000 5003ffff;" \ -" erase 5003f000 5003ffff\0" \ +"updateucode=loady;" \ +" era ${npe_ucode} +${filesize};" \ +" cp.b ${loadaddr} ${npe_ucode} ${filesize}\0" \"updateroot=tftp ${loadaddr} ${rootfile};" \" era ${rootaddr} +${filesize};" \" cp.b ${loadaddr} ${rootaddr} ${filesize}\0" \
@@ -212,4 +222,8 @@" tftpboot ${loadaddr} ${kernelfile};" \" bootm\0" +/* additions for new relocation code, must be added to all boards */ +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) +#endif /* __CONFIG_H */
Signature · 1 line
1.7.2.5
PATCH v4 12/17 IXP NPE: add support for fixed-speed MII ports
In reply to Michael Schwingen---
Changes for V2:
Changes for V3:
- coding style / indentation cleanup
- move config.h changes to AcTux2/AcTux3 board patches
Changes for V4:
- add changelog
arch/arm/cpu/ixp/npe/npe.c | 67 +++++++++++++++++++++++++++---------------- 1 files changed, 42 insertions(+), 25 deletions(-)
arch/arm/cpu/ixp/npe/npe.c +42 -25
@@ -359,36 +359,53 @@ static int npe_init(struct eth_device *dev, bd_t * bis)debug ("%s: 1\n" , __FUNCTION__); -miiphy_read (dev->name, p_npe->phy_no,MII_BMSR , ®_short); - -/* -* Wait if PHY is capable of autonegotiation and autonegotiation is not complete -*/ -if ((reg_short &BMSR_ANEGCAPABLE ) && !(reg_short &BMSR_ANEGCOMPLETE )) { -puts ("Waiting for PHY auto negotiation to complete" ); - i =0 ; -while (!(reg_short &BMSR_ANEGCOMPLETE )) { -/* -* Timeout reached ? -*/ -if (i >PHY_AUTONEGOTIATE_TIMEOUT ) { -puts (" TIMEOUT !\n" ); -break ; - } +#ifdef CONFIG_MII_NPE0_FIXEDLINK +if (0 == p_npe->eth_id) { + speed =CONFIG_MII_NPE0_SPEED ; + duplex =CONFIG_MII_NPE0_FULLDUPLEX ?FULL :HALF ; + } else +#endif +#ifdef CONFIG_MII_NPE1_FIXEDLINK +if (1 == p_npe->eth_id) { + speed =CONFIG_MII_NPE1_SPEED ; + duplex =CONFIG_MII_NPE1_FULLDUPLEX ?FULL :HALF ; + } else +#endif + { +miiphy_read (dev->name, p_npe->phy_no,MII_BMSR , ®_short); + +/* +* Wait if PHY is capable of autonegotiation and +* autonegotiation is not complete +*/ +if ((reg_short &BMSR_ANEGCAPABLE ) && + !(reg_short &BMSR_ANEGCOMPLETE )) { +puts ("Waiting for PHY auto negotiation to complete" ); + i =0 ; +while (!(reg_short &BMSR_ANEGCOMPLETE )) { +/* +* Timeout reached ? +*/ +if (i >PHY_AUTONEGOTIATE_TIMEOUT ) { +puts (" TIMEOUT !\n" ); +break ; + } -if ((i++ %1000 ) ==0 ) { -putc ('.' ); -miiphy_read (dev->name, p_npe->phy_no,MII_BMSR , ®_short); +if ((i++ %1000 ) ==0 ) { +putc ('.' ); +miiphy_read (dev->name, p_npe->phy_no, +MII_BMSR , ®_short); + } +udelay (1000 );/* 1 ms */ } -udelay (1000 );/* 1 ms */ +puts (" done\n" ); +/* another 500 ms (results in faster booting) */ +udelay (500000 ); } -puts (" done\n" ); -udelay (500000 );/* another 500 ms (results in faster booting) */ + speed =miiphy_speed (dev->name, p_npe->phy_no); + duplex =miiphy_duplex (dev->name, p_npe->phy_no); } - speed =miiphy_speed (dev->name, p_npe->phy_no); - duplex =miiphy_duplex (dev->name, p_npe->phy_no); -if (p_npe->print_speed) { p_npe->print_speed =0 ; printf ("ENET Speed is %d Mbps - %s duplex connection\n",
Signature · 1 line
1.7.2.5
PATCH v4 12/17 IXP NPE: add support for fixed-speed MII ports
Quoted 40 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:
Changes for V3:
- coding style / indentation cleanup
- moveconfig.hchanges to AcTux2/AcTux3 board patches
Changes for V4:
- add changelogarch/arm/cpu/ixp/npe/npe.c | 67+++++++++++++++++++++++++++---------------- 1 files changed, 42 insertions(+), 25 deletions(-)
arch/arm/cpu/ixp/npe/npe.c +0
-4@@ -359,36 +359,53 @@ static int npe_init(struct eth_device *dev, bd_t * bis) debug("%s: 1\n", __FUNCTION__); -miiphy_read (dev->name, p_npe->phy_no,MII_BMSR , ®_short); - -/* -* Wait if PHY is capable of autonegotiation and autonegotiation is not complete - */
arch/arm/cpu/ixp/npe/npe.c +2
-11-if ((reg_short &BMSR_ANEGCAPABLE ) && !(reg_short &BMSR_ANEGCOMPLETE )) { -puts ("Waiting for PHY auto negotiation to complete" ); - i =0 ; -while (!(reg_short &BMSR_ANEGCOMPLETE )) { -/* -* Timeout reached ? -*/ -if (i >PHY_AUTONEGOTIATE_TIMEOUT ) { -puts (" TIMEOUT !\n" ); -break ; - } +#ifdef CONFIG_MII_NPE0_FIXEDLINK +if (0 == p_npe->eth_id) {
arch/arm/cpu/ixp/npe/npe.c static int npe_init(struct eth_device *dev, bd_t * bis) · line 373
Quoted 10 lines
arch/arm/cpu/ixp/npe/npe.c +10
-0+ speed =CONFIG_MII_NPE0_SPEED ; + duplex =CONFIG_MII_NPE0_FULLDUPLEX ?FULL :HALF ; + } else +#endif +#ifdef CONFIG_MII_NPE1_FIXEDLINK +if (1 == p_npe->eth_id) { + speed =CONFIG_MII_NPE1_SPEED ; + duplex =CONFIG_MII_NPE1_FULLDUPLEX ?FULL :HALF ; + } else +#endif
Maybe you can bend the CPP here a bit to avoid code duplication ?
Quoted 13 lines
arch/arm/cpu/ixp/npe/npe.c +13
-0+ { +miiphy_read (dev->name, p_npe->phy_no,MII_BMSR , ®_short); + +/* +* Wait if PHY is capable of autonegotiation and +* autonegotiation is not complete +*/ +if ((reg_short &BMSR_ANEGCAPABLE ) && + !(reg_short &BMSR_ANEGCOMPLETE )) { +puts ("Waiting for PHY auto negotiation to complete" ); + i =0 ; +while (!(reg_short &BMSR_ANEGCOMPLETE )) { +/*
arch/arm/cpu/ixp/npe/npe.c static int npe_init(struct eth_device *dev, bd_t * bis)
Quoted 10 lines
arch/arm/cpu/ixp/npe/npe.c +6
-3+* Timeout reached ? +*/ +if (i >PHY_AUTONEGOTIATE_TIMEOUT ) { +puts (" TIMEOUT !\n" ); +break ; + } -if ((i++ %1000 ) ==0 ) { -putc ('.' ); - miiphy_read (dev->name, p_npe->phy_no, MII_BMSR,
®_short);
Quoted 24 lines
arch/arm/cpu/ixp/npe/npe.c +11
-6+if ((i++ %1000 ) ==0 ) { +putc ('.' ); +miiphy_read (dev->name, p_npe->phy_no, +MII_BMSR , ®_short); + } +udelay (1000 );/* 1 ms */ } -udelay (1000 );/* 1 ms */ +puts (" done\n" ); +/* another 500 ms (results in faster booting) */ +udelay (500000 ); } -puts (" done\n" ); -udelay (500000 );/* another 500 ms (results in faster booting) */ + speed =miiphy_speed (dev->name, p_npe->phy_no); + duplex =miiphy_duplex (dev->name, p_npe->phy_no); } - speed =miiphy_speed (dev->name, p_npe->phy_no); - duplex =miiphy_duplex (dev->name, p_npe->phy_no); -if (p_npe->print_speed) { p_npe->print_speed =0 ; printf ("ENET Speed is %d Mbps - %s duplex connection\n",
PATCH v4 13/17 add dvlhost (dLAN 200 AV Wireless G) board
In reply to Michael Schwingen---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
- add wildcard to bss segment in linker script
- add ethprime/ethrotate to default environment
Changes for V3:
- use I/O accessors
- coding style fixes
- add PCI clock/reset initialization
- use get_ram_size in dram_init
- add PCI support
- remove config.mk
- remove unused definitions from config.h
- add CONFIG_BOARD_SIZE_LIMIT
Changes for V4:
- add changelog
- add __bss_end to u-boot.lds
MAINTAINERS | 1 + board/dvlhost/Makefile | 50 +++++++++ board/dvlhost/dvlhost.c | 130 +++++++++++++++++++++++ board/dvlhost/dvlhost_hw.h | 47 +++++++++ board/dvlhost/u-boot.lds | 87 +++++++++++++++ board/dvlhost/watchdog.c | 43 ++++++++ boards.cfg | 1 + include/configs/dvlhost.h | 248 ++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 607 insertions(+), 0 deletions(-) create mode 100644 board/dvlhost/Makefile create mode 100644 board/dvlhost/dvlhost.c create mode 100644 board/dvlhost/dvlhost_hw.h create mode 100644 board/dvlhost/u-boot.lds create mode 100644 board/dvlhost/watchdog.c create mode 100644 include/configs/dvlhost.h
MAINTAINERS +1 -0
@@ -811,6 +811,7 @@ Michael Schwingen <[email protected]> actux2 xscale/ixp actux3 xscale/ixp actux4 xscale/ixp + dvlhost xscale/ixp Andrea Scian <[email protected]>
board/dvlhost/Makefile new file +50 -0
50 lines not on this page · raw message
board/dvlhost/dvlhost.c new file +130 -0
130 lines not on this page · raw message
board/dvlhost/dvlhost_hw.h new file +47 -0
47 lines not on this page · raw message
board/dvlhost/u-boot.lds new file +87 -0
87 lines not on this page · raw message
board/dvlhost/watchdog.c new file +43 -0
43 lines not on this page · raw message
boards.cfg +1 -0
@@ -137,6 +137,7 @@ actux1_8_32 arm ixp actux1 - actux2 arm ixp actux3 arm ixp actux4 arm ixp +dvlhost arm ixp ixdp425 arm ixp ixdpg425 arm ixp lpd7a400 arm lh7a40x lpd7a40x
include/configs/dvlhost.h new file +248 -0
248 lines not on this page · raw message
Signature · 1 line
1.7.2.5
PATCH v4 13/17 add dvlhost (dLAN 200 AV Wireless G) board
Quoted 189 lines · Michael Schwingen
Signed-off-by Michael Schwingen <[email protected]>---
Changes for V2:
- move -ffunction-sections/--gc-sections to board config.mk
- add wildcard to bss segment in linker script
- add ethprime/ethrotate to default environment
Changes for V3:
- use I/O accessors
- coding style fixes
- add PCI clock/reset initialization
- useget_ram_sizeindram_init
- add PCI support
- remove config.mk
- remove unused definitions fromconfig.h
- addCONFIG_BOARD_SIZE_LIMIT
Changes for V4:
- add changelog
- add__bss_endtou-boot.ldsMAINTAINERS | 1 + board/dvlhost/Makefile | 50 +++++++++ board/dvlhost/dvlhost.c | 130 +++++++++++++++++++++++ board/dvlhost/dvlhost_hw.h | 47 +++++++++ board/dvlhost/u-boot.lds | 87 +++++++++++++++ board/dvlhost/watchdog.c | 43 ++++++++ boards.cfg | 1 + include/configs/dvlhost.h | 248 ++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 607 insertions(+), 0 deletions(-) create mode 100644 board/dvlhost/Makefile create mode 100644 board/dvlhost/dvlhost.c create mode 100644 board/dvlhost/dvlhost_hw.h create mode 100644 board/dvlhost/u-boot.lds create mode 100644 board/dvlhost/watchdog.c create mode 100644 include/configs/dvlhost.hMAINTAINERS +1
-0@@ -811,6 +811,7 @@ Michael Schwingen <[email protected]> actux2 xscale/ixp actux3 xscale/ixp actux4 xscale/ixp + dvlhost xscale/ixp Andrea Scian <[email protected]>board/dvlhost/Makefile new file +50
-0@@ -0,0 +1,50 @@ +# +# (C) Copyright 2000-2006 +# Wolfgang Denk, DENX Software Engineering, wd at denx.de. +# +# 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).o + +COBJS := dvlhost.o watchdog.o + +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS)) + +$(LIB): $(obj).depend $(OBJS) + $(call cmd_link_o_target, $(OBJS)) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak $(obj).depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +#########################################################################board/dvlhost/dvlhost.c new file +79
-0@@ -0,0 +1,130 @@ +/* +* (C) Copyright 2009 +* Michael Schwingen, michael at schwingen.org +* +* 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 <common.h> +#include <config.h> +#include <command.h> +#include <malloc.h> +#include <asm/arch/ixp425.h> +#include <asm/io.h> +#include <miiphy.h> +#ifdef CONFIG_PCI +#include <pci.h> +#include <asm/arch/ixp425pci.h> +#endif + +#include "dvlhost_hw.h" + +DECLARE_GLOBAL_DATA_PTR ; + +int board_early_init_f (void ) +{ +/* CS1: LED Latch */ +writel (0xBFFF0002 ,IXP425_EXP_CS1 ); +return 0 ; +} + +int board_init (void ) +{ + gd->bd->bi_arch_number =MACH_TYPE_DVLHOST ; + +/* adress of boot parameters */ + gd->bd->bi_boot_params =0x00000100 ; + +/* Setup GPIOs used as output */ +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_WDGTRIGGER ); +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_DLAN_PAIRING ); +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_PCIRST ); + +/* +* LED latch enable and watchdog enable are tied to the same GPIO, +* so we need to trigger the watchdog if we want to enable the LEDs. +*/ +#ifdef CONFIG_HW_WATCHDOG +GPIO_OUTPUT_CLEAR (CONFIG_SYS_GPIO_WDG_LED_EN ); +#else +GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_WDG_LED_EN ); +#endif + +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_WDGTRIGGER ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_DLAN_PAIRING ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_WDG_LED_EN ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCIRST ); + +/* Setup GPIOs for Interrupt inputs */ +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_BTN_WLAN ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_BTN_PAIRING ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_BTN_RESET ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_IRQA ); +GPIO_OUTPUT_DISABLE (CONFIG_SYS_GPIO_IRQB );
board/dvlhost/dvlhost.c line 89
Quoted 10 lines
board/dvlhost/dvlhost.c new file +10
-0+ +/* Setup GPIO's for 33MHz clock output */ +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); +writel (0x01FF01FF ,IXP425_GPIO_GPCLKR ); + +/* turn off all LEDs */ +writew (0x0000 ,DVLHOST_LED_LATCH ); + +udelay (533 );
Why 533 ?
Quoted 503 lines
board/dvlhost/dvlhost.c new file +41
-0+GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_PCIRST ); + +return 0 ; +} + +/* Check Board Identity */ +int checkboard (void ) +{ +char *s =getenv ("serial#" ); + +puts ("Board: dLAN 200AV (dvlhost)" ); + +if (s !=NULL ) { +puts (", serial# " ); +puts (s); + } +putc ('\n' ); + +return 0 ; +} + +int dram_init (void ) +{ + gd->ram_size =get_ram_size (CONFIG_SYS_SDRAM_BASE ,128 <<20 ); +return 0 ; +} + +#ifdef CONFIG_PCI +struct pci_controller hose; + +void pci_init_board (void ) +{ +pci_ixp_init (&hose); +} +#endif + +void reset_phy (void ) +{ +/* init IcPlus IP175C ethernet switch to native IP175C mode */ +miiphy_write ("NPE1" ,29 ,31 ,0x175C ); +}board/dvlhost/dvlhost_hw.h new file +47
-0@@ -0,0 +1,47 @@ +/* +* (C) Copyright 2009 +* Michael Schwingen, michael at schwingen.org +* +* hardware register definitions for the +* dLAN200 AV Wireless G ("dvlhost") board. +* +* 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 +*/ + +#ifndef _DVLHOST_HW_H +#define _DVLHOST_HW_H + +/* +* GPIO settings +*/ +#define CONFIG_SYS_GPIO_WDGTRIGGER 0/* Out */ +#define CONFIG_SYS_GPIO_BTN_WLAN 1 +#define CONFIG_SYS_GPIO_BTN_PAIRING 6 +#define CONFIG_SYS_GPIO_DLAN_PAIRING 7/* Out */ +#define CONFIG_SYS_GPIO_BTN_RESET 9 +#define CONFIG_SYS_GPIO_IRQB 10 +#define CONFIG_SYS_GPIO_IRQA 11 +#define CONFIG_SYS_GPIO_WDG_LED_EN 12/* Out */ +#define CONFIG_SYS_GPIO_PCIRST 13/* Out */ +#define CONFIG_SYS_GPIO_PCI_CLK 14/* Out */ +#define CONFIG_SYS_GPIO_EXTBUS_CLK 15/* Out */ + +#define DVLHOST_LED_LATCH IXP425_EXP_BUS_CS1_BASE_PHYS + +#endif board/dvlhost/u-boot.lds new file +87
-0@@ -0,0 +1,87 @@ +/* + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd at denx.de. + * + * 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 + */ + +OUTPUT_FORMAT ("elf32-bigarm", "elf32-bigarm", "elf32-bigarm") +OUTPUT_ARCH (arm) +ENTRY (_start) +SECTIONS +{ + . = 0x00000000; + + . = ALIGN (4); + .text : { + arch/arm/cpu/ixp/start.o(.text*) + net/libnet.o(.text*) + board/dvlhost/libdvlhost.o(.text*) + arch/arm/cpu/ixp/libixp.o(.text*) + drivers/serial/libserial.o(.text*) + + . = env_offset; + common/env_embedded.o(.ppcenv) + *(.text*) + } + + . = ALIGN (4); + .rodata : { + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } + . = ALIGN (4); + .data : { + *(.data*) + } + . = ALIGN (4); + .got : { + *(.got) + } + . =.; + __u_boot_cmd_start =.; + .u_boot_cmd : { + *(.u_boot_cmd) + } + __u_boot_cmd_end =.; + + . = ALIGN (4); + .rel.dyn : { + __rel_dyn_start = .; + *(.rel*) + __rel_dyn_end = .; + } + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + } + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.bss*) + . = ALIGN(4); + _end = .; + } + __bss_end__ =.; + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } +}board/dvlhost/watchdog.c new file +43
-0@@ -0,0 +1,43 @@ +/* +* (C) Copyright 2009 +* Michael Schwingen, michael at schwingen.org +* +* 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 <common.h> +#include <config.h> +#include <asm/io.h> +#include "dvlhost_hw.h" + +DECLARE_GLOBAL_DATA_PTR ; + +#ifdef CONFIG_HW_WATCHDOG +#include <watchdog.h> +#include <asm/arch/ixp425.h> + +void hw_watchdog_reset (void ) +{ +unsigned int x; + x =readl (IXP425_GPIO_GPOUTR ); + x ^= (1 << (CONFIG_SYS_GPIO_WDGTRIGGER )); +writel (x,IXP425_GPIO_GPOUTR ); +} + +#endif /* CONFIG_HW_WATCHDOG */ boards.cfg +0
-0@@ -137,6 +137,7 @@ actux1_8_32 arm ixpactux1 - actux2 arm ixp
actux3 arm ixp actux4 arm ixpboards.cfg +1
-0+dvlhost arm ixp ixdp425 arm ixp ixdpg425 arm ixp lpd7a400 arm lh7a40x lpd7a40xinclude/configs/dvlhost.h new file +40
-0@@ -0,0 +1,248 @@ +/* +* (C) Copyright 2009 +* Michael Schwingen, michael at schwingen.org +* +* Configuration settings for the +* dLAN200 AV Wireless G ("dvlhost") board. +* +* 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 +*/ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#define CONFIG_IXP425 1 +#define CONFIG_DVLHOST 1 + +#define CONFIG_DISPLAY_CPUINFO 1 +#define CONFIG_DISPLAY_BOARDINFO 1 + +#define CONFIG_IXP_SERIAL +#define CONFIG_SYS_IXP425_CONSOLE IXP425_UART2 +#define CONFIG_BAUDRATE 115200 +#define CONFIG_BOOTDELAY 3 +#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ +#define
CONFIG_BOARD_EARLY_INIT_F1include/configs/dvlhost.h new file +43
-0+#define CONFIG_SYS_LDSCRIPT "board/dvlhost/u-boot.lds" + +/*************************************************************** +* U-boot generic defines start here. +***************************************************************/ +/* Size of malloc() pool */ +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024) + +/* allow to overwrite serial and ethaddr */ +#define CONFIG_ENV_OVERWRITE + +/* Command line configuration. */ +#include <config_cmd_default.h> + +#define CONFIG_CMD_ELF +#define CONFIG_PCI +#ifdef CONFIG_PCI +#define CONFIG_CMD_PCI +#define CONFIG_PCI_PNP +#define CONFIG_IXP_PCI +#define CONFIG_PCI_SCAN_SHOW +#define CONFIG_CMD_PCI_ENUM +#endif + +#define CONFIG_BOOTCOMMAND "run boot_flash" +/* enable passing of ATAGs */ +#define CONFIG_CMDLINE_TAG 1 +#define CONFIG_SETUP_MEMORY_TAGS 1 +#define CONFIG_INITRD_TAG 1 + +#if defined(CONFIG_CMD_KGDB ) +# define CONFIG_KGDB_BAUDRATE 230400 +/* which serial port to use */ +# define CONFIG_KGDB_SER_INDEX 1 +#endif + +/* Miscellaneous configurable options */ +#define CONFIG_SYS_LONGHELP +#define CONFIG_SYS_PROMPT "=> " +/* Console I/O Buffer Size */ +#define CONFIG_SYS_CBSIZE 256 +/* Print Buffer Size */ +#define
CONFIG_SYS_PBSIZE(CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) +/*
max number of command args */include/configs/dvlhost.h new file +163
-0+#define CONFIG_SYS_MAXARGS 16 +/* Boot Argument Buffer Size */ +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE + +#define CONFIG_SYS_MEMTEST_START 0x00000000 +#define CONFIG_SYS_MEMTEST_END 0x01D80000 + +/* timer clock - 2* OSC_IN system clock */ +#define CONFIG_IXP425_TIMER_CLK 66666666 +#define CONFIG_SYS_HZ 1000 + +/* default load address */ +#define CONFIG_SYS_LOAD_ADDR 0x00010000 + +/* valid baudrates */ +#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, \ + 115200, 230400 } +#define CONFIG_SERIAL_RTS_ACTIVE 1 + +/* +* Stack sizes +* +* The stack sizes are set up in start.S using the settings below +*/ +#define CONFIG_STACKSIZE (128*1024)/* regular stack */ + +/* Expansion bus settings */ +#define CONFIG_SYS_EXP_CS0 0xbd113442 + +/* SDRAM settings */ +#define CONFIG_NR_DRAM_BANKS 1 +#define PHYS_SDRAM_1 0x00000000 +#define CONFIG_SYS_SDRAM_BASE 0x00000000 + +/* 32MB SDRAM: 2* 8Mx16, CL3 */ +#define CONFIG_SYS_SDR_CONFIG 0x18 +#define PHYS_SDRAM_1_SIZE 0x02000000 +#define CONFIG_SYS_SDRAM_REFRESH_CNT 0x800 +#define CONFIG_SYS_SDR_MODE_CONFIG 0x1 +#define CONFIG_SYS_DRAM_SIZE PHYS_SDRAM_1_SIZE + +/* FLASH organization: one Spansion S29AL032D-04 Flash */ +#define CONFIG_SYS_TEXT_BASE 0x50000000 +#define CONFIG_SYS_MAX_FLASH_BANKS 1 +/* max number of sectors on one chip */ +#define CONFIG_SYS_MAX_FLASH_SECT 140 +#define PHYS_FLASH_1 0x50000000 +#define CONFIG_SYS_FLASH_BANKS_LIST { PHYS_FLASH_1 } + +#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1 +#define CONFIG_SYS_MONITOR_BASE PHYS_FLASH_1 +#define CONFIG_SYS_MONITOR_LEN (256 << 10) +#define CONFIG_BOARD_SIZE_LIMIT 262144 + +/* Use common CFI driver */ +#define CONFIG_SYS_FLASH_CFI +#define CONFIG_FLASH_CFI_DRIVER +/* no byte writes on IXP4xx */ +#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_16BIT + +/* print 'E' for empty sector on flinfo */ +#define CONFIG_SYS_FLASH_EMPTY_INFO + +/* Ethernet */ + +/* include IXP4xx NPE support */ +#define CONFIG_IXP4XX_NPE 1 + +#define CONFIG_NET_MULTI 1 +/* NPE0 PHY: MII dLAN200 AVmodule, 100BaseT-FDX fixed */ +#define CONFIG_PHY_ADDR 0x18 +/* NPE1 PHY: MII IP175 switch, port 5 is host port */ +#define CONFIG_PHY1_ADDR 0x05 +/* MII PHY management */ +#define CONFIG_MII 1 +/* fixed-speed powerline modem without standard PHY registers on MII */ +#define CONFIG_MII_NPE0_FIXEDLINK 1 +#define CONFIG_MII_NPE0_SPEED 100 +#define CONFIG_MII_NPE0_FULLDUPLEX 1 +/* fixed-speed switch without standard PHY registers on MII */ +#define CONFIG_MII_NPE1_FIXEDLINK 1 +#define CONFIG_MII_NPE1_SPEED 100 +#define CONFIG_MII_NPE1_FULLDUPLEX 1 + +/* Number of ethernet rx buffers & descriptors */ +#define CONFIG_SYS_RX_ETH_BUFFER 16 +#define CONFIG_RESET_PHY_R 1 +/* ethernet switch connected to MII port */ +#define CONFIG_MII_ETHSWITCH 1 +#define CONFIG_HAS_ETH1 1 + +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_NET +#define CONFIG_CMD_MII +#define CONFIG_CMD_PING +#undef CONFIG_CMD_NFS + +/* BOOTP options */ +#define CONFIG_BOOTP_BOOTFILESIZE +#define CONFIG_BOOTP_BOOTPATH +#define CONFIG_BOOTP_GATEWAY +#define CONFIG_BOOTP_HOSTNAME + +/* Cache Configuration */ +#define CONFIG_SYS_CACHELINE_SIZE 32 + +/* +* environment organization: +* one flash sector, embedded in uboot area (bottom bootblock flash) +*/ +#define CONFIG_ENV_IS_IN_FLASH 1 +#define CONFIG_ENV_SIZE 0x2000 +#define CONFIG_ENV_ADDR (PHYS_FLASH_1 + 0x4000) +#define CONFIG_SYS_USE_PPCENV 1 + +#define CONFIG_EXTRA_ENV_SETTINGS \ + "npe_ucode=50040000\0" \ + "ethprime=NPE1\0" \ + "ethrotate=no\0" \ + "mtd=IXP4XX-Flash.0:256k(uboot),64k(ucode),1152k(linux),-(root),\0" \ + "kerneladdr=50050000\0" \ + "kernelfile=dvlhost/uImage\0" \ + "rootfile=dvlhost/rootfs\0" \ + "rootaddr=50170000\0" \ + "loadaddr=10000\0" \ + "updateboot_ser=mw.b 10000 ff 40000;" \ + " loady ${loadaddr};" \ + " run eraseboot writeboot\0" \ + "updateboot_net=mw.b 10000 ff 40000;" \ + " tftp ${loadaddr} dvlhost/u-boot.bin;" \ + " run eraseboot writeboot\0" \ + "eraseboot=protect off 50000000 50003fff;" \ + " protect off 50006000 5003ffff;" \ + " erase 50000000 50003fff;" \ + " erase 50006000 5003ffff\0" \ + "writeboot=cp.b 10000 50000000 4000;" \ + " cp.b 16000 50006000 3a000\0" \ + "updateucode=loady;" \ + " era ${npe_ucode} +${filesize};" \ + " cp.b ${loadaddr} ${npe_ucode} ${filesize}\0" \ + "updateroot=tftp ${loadaddr} ${rootfile};" \ + " era ${rootaddr} +${filesize};" \ + " cp.b ${loadaddr} ${rootaddr} ${filesize}\0" \ + "updatekern=tftp ${loadaddr} ${kernelfile};" \ + " era ${kerneladdr} +${filesize};" \ + " cp.b ${loadaddr} ${kerneladdr} ${filesize}\0" \ + "flashargs=setenv bootargs mtdparts=${mtd} root=/dev/mtdblock3" \ + " rootfstype=squashfs,jffs2 init=/etc/preinit\0" \ + "netargs=setenv bootargs mtdparts=${mtd} root=/dev/mtdblock3" \ + " rootfstype=squashfs,jffs2 init=/etc/preinit\0" \ + "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0" \ + "addeth=setenv bootargs ${bootargs} ethaddr=${ethaddr}\0" \ + "boot_flash=run flashargs addtty addeth;" \ + " bootm ${kerneladdr}\0" \ + "boot_net=run netargs addtty addeth;" \ + " tftpboot ${loadaddr} ${kernelfile};" \ + " bootm\0" + +/* additions for new relocation code, must be added to all boards */ +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) + +#endif /* __CONFIG_H */
PATCH v4 13/17 add dvlhost (dLAN 200 AV Wireless G) board
Am 05/21/2011 02:06 AM, schrieb Marek Vasut:
Quoted 12 lines
board/dvlhost/dvlhost.c line 89
Quoted 10 lines
board/dvlhost/dvlhost.c new file +9
-0+/* Setup GPIO's for 33MHz clock output */ +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_PCI_CLK ); +GPIO_OUTPUT_ENABLE (CONFIG_SYS_GPIO_EXTBUS_CLK ); +writel (0x01FF01FF ,IXP425_GPIO_GPCLKR ); + +/* turn off all LEDs */ +writew (0x0000 ,DVLHOST_LED_LATCH ); + +udelay (533 );Why 533 ?
Quoted 1 line
board/dvlhost/dvlhost.c line 90
Quoted 1 line
board/dvlhost/dvlhost.c new file +1
-0+GPIO_OUTPUT_SET (CONFIG_SYS_GPIO_PCIRST );
Hm - that is copied from the PCI init sequence in pci_ixp.c - however, the constant *does* look dodgy:
We need at least 100us reset pulse *after the clock is stable* - whatever time that requires.
On the other hand, the PCI spec requires 2^25 clocks after reset before the first configuration access, which would be around 1s - we probably violate that, since the timing depends on what other code delays operation until the first PCI configuration access.
Since PCI is not 100% functional (at least in my attempts), even on the existing IXDP425 board, I would like to leave this as is for now - at least it is consistent across all IXP boards.
cu
Michael
PATCH v4 14/17 update/fix IXDP425 / IXDPG425 boards
In reply to Michael Schwingen---
Changes for V3:
- new in V3 (split from "update_fix some more IXP42x boards" in V2)
Changes for V4:
- add changelog
board/ixdp425/config.mk | 2 - board/ixdp425/flash.c | 427 -------------------------------------------- board/ixdp425/ixdp425.c | 155 ++++++++++++++--- boards.cfg | 2 +- include/configs/ixdp425.h | 196 ++++++++++++++------- include/configs/ixdpg425.h | 11 +- 6 files changed, 276 insertions(+), 517 deletions(-) delete mode 100644 board/ixdp425/config.mk delete mode 100644 board/ixdp425/flash.c
board/ixdp425/config.mk deleted +0 -2
@@ -1,2 +0,0 @@ -# -CONFIG_SYS_TEXT_BASE = 0x00f80000
board/ixdp425/flash.c deleted +0 -427
427 lines not on this page · raw message
board/ixdp425/ixdp425.c +133 -22
206 lines not on this page · raw message
boards.cfg +1 -1
@@ -139,7 +139,7 @@ actux3 arm ixp actux4 arm ixp dvlhost arm ixp ixdp425 arm ixp -ixdpg425 arm ixp +ixdpg425 arm ixp ixdp425 lpd7a400 arm lh7a40x lpd7a40x lpd7a404 arm lh7a40x lpd7a40x balloon3 arm pxa
include/configs/ixdp425.h +134 -62
284 lines not on this page · raw message
include/configs/ixdpg425.h +8 -3
@@ -53,9 +53,6 @@/* * Misc configuration options */ -#undef CONFIG_USE_IRQ/* we don't need IRQ/FIQ stuff */ -#define CONFIG_USE_IRQ 1/* we need IRQ stuff for timer */ -#define CONFIG_TIMER_IRQ #define CONFIG_BOOTCOUNT_LIMIT /* support for bootcount limit */ #define CONFIG_SYS_BOOTCOUNT_ADDR 0x60003000/* inside qmrg sram */
@@ -115,6 +112,7 @@#define CONFIG_SYS_MEMTEST_END 0x00800000/* 4 ... 8 MB in DRAM */ #define CONFIG_SYS_LOAD_ADDR 0x00010000/* default load address */ +#define CONFIG_IXP425_TIMER_CLK 66666666#define CONFIG_SYS_HZ 1000/* decrementer freq: 1 ms ticks */ /* valid baudrates */
@@ -179,6 +177,8 @@#define PHYS_SDRAM_1 0x00000000/* SDRAM Bank #1 */ #define PHYS_SDRAM_1_SIZE 0x02000000/* 32 MB */ +#define CONFIG_SYS_TEXT_BASE 0x50000000 +#define PHYS_FLASH_1 0x50000000/* Flash Bank #1 */ #define PHYS_FLASH_SIZE 0x01000000/* 16 MB */ #define PHYS_FLASH_BANK_SIZE 0x01000000/* 16 MB Banks */
@@ -248,4 +248,9 @@*/ #define CONFIG_SYS_CACHELINE_SIZE 32 +/* additions for new relocation code, must be added to all boards */ +#define CONFIG_SYS_SDRAM_BASE 0 +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) +#endif /* __CONFIG_H */
Signature · 1 line
1.7.2.5
PATCH v4 15/17 update/fix PDNB3 board
In reply to Michael Schwingen---
Changes for V3:
- new in V3 (split from "update_fix some more IXP42x boards" in V2)
Changes for V4:
- add changelog
board/prodrive/pdnb3/config.mk | 2 -- include/configs/pdnb3.h | 10 +++++++--- 2 files changed, 7 insertions(+), 5 deletions(-) delete mode 100644 board/prodrive/pdnb3/config.mk
board/prodrive/pdnb3/config.mk deleted +0 -2
@@ -1,2 +0,0 @@ -# -CONFIG_SYS_TEXT_BASE = 0x01f00000
include/configs/pdnb3.h +7 -3
@@ -50,9 +50,6 @@/* * Misc configuration options */ -#define CONFIG_USE_IRQ 1/* we need IRQ stuff for timer */ -#define CONFIG_TIMER_IRQ -#define CONFIG_BOOTCOUNT_LIMIT /* support for bootcount limit */ #define CONFIG_SYS_BOOTCOUNT_ADDR 0x60003000/* inside qmrg sram */
@@ -117,6 +114,7 @@#define CONFIG_SYS_MEMTEST_END 0x00800000/* 4 ... 8 MB in DRAM */ #define CONFIG_SYS_LOAD_ADDR 0x00010000/* default load address */ +#define CONFIG_IXP425_TIMER_CLK 66666666#define CONFIG_SYS_HZ 1000/* decrementer freq: 1 ms ticks */ /* valid baudrates */ #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
@@ -188,6 +186,7 @@#define PHYS_SDRAM_1 0x00000000/* SDRAM Bank #1 */ #define PHYS_SDRAM_1_SIZE 0x02000000/* 32 MB */ +#define CONFIG_SYS_TEXT_BASE 0x50000000#define CONFIG_SYS_FLASH_BASE 0x50000000#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE#if defined(CONFIG_SCPU )
@@ -345,4 +344,9 @@*/ #define CONFIG_SYS_CACHELINE_SIZE 32 +/* additions for new relocation code, must be added to all boards */ +#define CONFIG_SYS_SDRAM_BASE 0x00000000 +#define CONFIG_SYS_INIT_SP_ADDR \ + (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) +#endif /* __CONFIG_H */
Signature · 1 line
1.7.2.5
PATCH v4 16/17 IXP42x PCI rewrite
In reply to Michael Schwingenclean up IXP PCI handling: get rid of IXP-private bus scan, BAR assign etc. code and use u-boot's PCI infrastructure instead. Move board-specific PCI setup code (clock/reset) to board directory.
---
Changes for V3:
- new in V3
Changes for V4:
- add changelog
arch/arm/include/asm/arch-ixp/ixp425pci.h | 130 +------ drivers/pci/pci.c | 4 - drivers/pci/pci_indirect.c | 13 +- drivers/pci/pci_ixp.c | 612 ++++++++++------------------- 4 files changed, 210 insertions(+), 549 deletions(-)
arch/arm/include/asm/arch-ixp/ixp425pci.h +4 -126
@@ -22,88 +22,21 @@* MA 02111-1307 USA */ -#ifndef _IXP425PCI_H_ -#define _IXP425PCI_H_ +#ifndef _IXP425PCI_H +#define _IXP425PCI_H -#define TRUE 1 -#define FALSE 0#define OK 0#define ERROR -1 -#define BOOL int -#define IXP425_PCI_MAX_BAR_PER_FUNC 6 -#define IXP425_PCI_MAX_BAR (IXP425_PCI_MAX_BAR_PER_FUNC * \ - IXP425_PCI_MAX_FUNC_ON_BUS) - -enum PciBarId -{ -CSR_BAR =0 , -IO_BAR , -SD_BAR , -NO_BAR -}; - -/*Base address register descriptor*/ -typedef struct -{ -unsigned int size; -unsigned int address; -}PciBar ; - -typedef struct -{ -unsigned int bus; -unsigned int device; -unsigned int func; -unsigned int irq; -BOOL error; -unsigned short vendor_id; -unsigned short device_id; -/*We need an extra entry in this array for dummy placeholder*/ -PciBar bar[IXP425_PCI_MAX_BAR_PER_FUNC +1 ]; -}PciDevice ; +struct pci_controller ; +extern void pci_ixp_init (struct pci_controller *hose);/* Mask definitions*/ -#define IXP425_PCI_TOP_WORD_OF_LONG_MASK 0xffff0000 -#define IXP425_PCI_TOP_BYTE_OF_LONG_MASK 0xff000000 -#define IXP425_PCI_BOTTOM_WORD_OF_LONG_MASK 0x0000ffff -#define IXP425_PCI_BOTTOM_TRIBYTES_OF_LONG_MASK 0x00ffffff#define IXP425_PCI_BOTTOM_NIBBLE_OF_LONG_MASK 0x0000000f -#define IXP425_PCI_MAX_UINT32 0xffffffff - - -#define IXP425_PCI_BAR_QUERY 0xffffffff - -#define IXP425_PCI_BAR_MEM_BASE 0x100000 -#define IXP425_PCI_BAR_IO_BASE 0x000000 - -/*define the maximum number of bus segments - we support a single segment*/ -#define IXP425_PCI_MAX_BUS 1 -/*define the maximum number of cards per bus segment*/ -#define IXP425_PCI_MAX_DEV 4 -/*define the maximum number of functions per device*/ -#define IXP425_PCI_MAX_FUNC 8 -/* define the maximum number of separate functions that we can -potentially have on the bus*/ -#define IXP425_PCI_MAX_FUNC_ON_BUS (1+ IXP425_PCI_MAX_FUNC * \ - IXP425_PCI_MAX_DEV * \ - IXP425_PCI_MAX_BUS) -/*define the maximum number of BARs per function*/ -#define IXP425_PCI_MAX_BAR_PER_FUNC 6 -#define IXP425_PCI_MAX_BAR (IXP425_PCI_MAX_BAR_PER_FUNC * \ - IXP425_PCI_MAX_FUNC_ON_BUS)#define PCI_NP_CBE_BESL (4)#define PCI_NP_AD_FUNCSL (8) -#define REG_WRITE (b,o,v) (*(volatile unsigned int*)((b+o))=(v)) -#define REG_READ (b,o,v) ((v)=(*(volatile unsigned int*)((b+o)))) - -#define PCI_DELAY 500 -#define USEC_LOOP_COUNT 533 -#define PCI_SETTLE_USEC 200 -#define PCI_MIN_RESET_ASSERT_USEC 2000 -/*Register addressing definitions for PCI controller configuration and status registers*/
@@ -150,28 +83,6 @@ typedef struct#define NP_CMD_CONFIGWRITE (0xb) */ -/*define the default setting of the AHB memory base reg*/ -#define IXP425_PCI_AHBMEMBASE_DEFAULT 0x00010203 -#define IXP425_PCI_AHBIOBASE_DEFAULT 0x0 -#define IXP425_PCI_PCIMEMBASE_DEFAULT 0x0 - -/*define the default settings for the controller's BARs*/ -#ifdef IXP425_PCI_SIMPLE_MAPPING -#define IXP425_PCI_BAR_0_DEFAULT 0x00000000 -#define IXP425_PCI_BAR_1_DEFAULT 0x01000000 -#define IXP425_PCI_BAR_2_DEFAULT 0x02000000 -#define IXP425_PCI_BAR_3_DEFAULT 0x03000000 -#define IXP425_PCI_BAR_4_DEFAULT 0x00000000 -#define IXP425_PCI_BAR_5_DEFAULT 0x00000000 -#else -#define IXP425_PCI_BAR_0_DEFAULT 0x40000000 -#define IXP425_PCI_BAR_1_DEFAULT 0x41000000 -#define IXP425_PCI_BAR_2_DEFAULT 0x42000000 -#define IXP425_PCI_BAR_3_DEFAULT 0x43000000 -#define IXP425_PCI_BAR_4_DEFAULT 0x00000000 -#define IXP425_PCI_BAR_5_DEFAULT 0x00000000 -#endif -/*Configuration Port register bit definitions*/ #define PCI_CRP_WRITE BIT(16)
@@ -228,17 +139,6 @@ typedef struct#define PCI_CFG_SPECIAL_USE 0x41#define PCI_CFG_MODE 0x43 -/*Specify the initial command we send to PCI devices*/ -#define INITIAL_PCI_CMD (PCI_CMD_IO_ENABLE \ - | PCI_CMD_MEM_ENABLE \ - | PCI_CMD_MASTER_ENABLE \ - | PCI_CMD_WI_ENABLE) - -/*define the sub vendor and subsystem to be used */ -#define IXP425_PCI_SUB_VENDOR_SYSTEM 0x00000000 - -#define PCI_IRQ_LINES 4 -#define PCI_CMD_IO_ENABLE 0x0001/* IO access enable */ #define PCI_CMD_MEM_ENABLE 0x0002/* memory access enable */ #define PCI_CMD_MASTER_ENABLE 0x0004/* bus master enable */
@@ -287,26 +187,4 @@ typedef struct#define PCI_DMACTRL_PADC1 BIT(14)#define PCI_DMACTRL_PADE1 BIT(15) -/* GPIO related register */ -#undef IXP425_GPIO_GPOUTR -#undef IXP425_GPIO_GPOER -#undef IXP425_GPIO_GPINR -#undef IXP425_GPIO_GPISR -#undef IXP425_GPIO_GPIT1R -#undef IXP425_GPIO_GPIT2R -#undef IXP425_GPIO_GPCLKR - -#define IXP425_GPIO_GPOUTR 0xC8004000 -#define IXP425_GPIO_GPOER 0xC8004004 -#define IXP425_GPIO_GPINR 0xC8004008 -#define IXP425_GPIO_GPISR 0xC800400C -#define IXP425_GPIO_GPIT1R 0xC8004010 -#define IXP425_GPIO_GPIT2R 0xC8004014 -#define IXP425_GPIO_GPCLKR 0xC8004018 - -#define READ_GPIO_REG (addr,val) \ - (val) = *((volatile int *)(addr)); -#define WRITE_GPIO_REG (addr,val) \ - *((volatile int *)(addr)) = (val); -#endif
drivers/pci/pci.c +0 -4
@@ -50,7 +50,6 @@ PCI_HOSE_OP(write, byte, u8) PCI_HOSE_OP(write, word, u16) PCI_HOSE_OP(write, dword, u32) -#ifndef CONFIG_IXP425 #define PCI_OP (rw, size, type, error_code) \ int pci_##rw##_config_##size(pci_dev_t dev, int offset, type value) \ { \
@@ -71,7 +70,6 @@ PCI_OP(read, dword, u32 *, *value = 0xffffffff) PCI_OP(write, byte, u8, ) PCI_OP(write, word, u16, ) PCI_OP(write, dword, u32, ) -#endif /* CONFIG_IXP425 */ #define PCI_READ_VIA_DWORD_OP(size, type, off_mask) \ int pci_hose_read_config_##size##_via_dword(struct pci_controller *hose,\
@@ -190,7 +188,6 @@ int pci_last_busno(void)return hose->last_busno; } -#ifndef CONFIG_IXP425 pci_dev_t pci_find_devices (struct pci_device_id *ids,int index) {struct pci_controller * hose;
@@ -246,7 +243,6 @@ pci_dev_t pci_find_devices(struct pci_device_id *ids, int index)return (-1 ); } -#endif /* CONFIG_IXP425 */ pci_dev_t pci_find_device (unsigned int vendor,unsigned int device,int index) {
drivers/pci/pci_indirect.c +2 -11
@@ -11,7 +11,7 @@#include <common.h> -#if (!defined(__I386__) && !defined(CONFIG_IXDP425 )) +#if !defined(__I386__)#include <asm/processor.h> #include <asm/io.h>
@@ -20,15 +20,6 @@#define cfg_read (val, addr, type, op) *val = op((type)(addr))#define cfg_write (val, addr, type, op) op((type *)(addr), (val)) -#ifdef CONFIG_IXP425 -extern unsigned char in_8 (volatile unsigned *addr); -extern unsigned short in_le16 (volatile unsigned *addr); -extern unsigned in_le32 (volatile unsigned *addr); -extern void out_8 (volatile unsigned *addr,char val); -extern void out_le16 (volatile unsigned *addr,unsigned short val); -extern void out_le32 (volatile unsigned *addr,unsigned int val); -#endif /* CONFIG_IXP425 */ -#if defined(CONFIG_MPC8260 )#define INDIRECT_PCI_OP (rw, size, type, op, mask) \ static int \
@@ -134,4 +125,4 @@ void pci_setup_indirect(struct pci_controller* hose, u32 cfg_addr, u32 cfg_data) hose->cfg_data = (unsigned char *) cfg_data; } -#endif /* !__I386__ && !CONFIG_IXDP425 */ +#endif /* !__I386__ */
drivers/pci/pci_ixp.c +204 -408
758 lines not on this page · raw message
Signature · 1 line
1.7.2.5
PATCH v4 17/17 run arm_pci_init after relocation
In reply to Michael Schwingen---
Changes for V3:
- new in V3
Changes for V4:
- add changelog
arch/arm/lib/board.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
arch/arm/lib/board.c +3 -3
@@ -262,9 +262,6 @@ init_fnc_t *init_sequence[] = { init_func_i2c, #endif dram_init,/* configure available RAM banks */ -#if defined(CONFIG_CMD_PCI) || defined (CONFIG_PCI) - arm_pci_init, -#endif NULL, };
@@ -529,6 +526,9 @@ void board_init_r (gd_t *id, ulong dest_addr)/* initialize environment */ env_relocate (); +#if defined(CONFIG_CMD_PCI ) || defined(CONFIG_PCI ) +arm_pci_init (); +#endif #ifdef CONFIG_VFD /* must do this after the framebuffer is allocated */ drv_vfd_init ();
Signature · 1 line
1.7.2.5