Merge branch 'master' of git://git.denx.de/u-boot-arm

Conflicts:
	arch/arm/include/asm/mach-types.h
	common/serial.c

Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
Minkyu Kang 2010-05-10 15:20:50 +09:00
commit 9d62f20d08
682 changed files with 5013 additions and 2514 deletions

View file

@ -471,6 +471,10 @@ Josef Wagner <Wagner@Microsys.de>
CPC45 MPC8245 CPC45 MPC8245
PM520 MPC5200 PM520 MPC5200
Michael Weiss <michael.weiss@ifm.com>
PDM360NG MPC5121e
Stephen Williams <steve@icarus.com> Stephen Williams <steve@icarus.com>
JSE PPC405GPr JSE PPC405GPr
@ -866,6 +870,7 @@ Scott McNutt <smcnutt@psyent.com>
EP1C20 Nios-II EP1C20 Nios-II
EP1S10 Nios-II EP1S10 Nios-II
EP1S40 Nios-II EP1S40 Nios-II
nios2-generic Nios-II
######################################################################### #########################################################################
# MicroBlaze Systems: # # MicroBlaze Systems: #

16
MAKEALL
View file

@ -92,6 +92,7 @@ LIST_512x=" \
aria \ aria \
mecp5123 \ mecp5123 \
mpc5121ads \ mpc5121ads \
pdm360ng \
" "
######################################################################### #########################################################################
@ -489,7 +490,7 @@ LIST_TSEC=" \
${LIST_86xx} \ ${LIST_86xx} \
" "
LIST_ppc=" \ LIST_powerpc=" \
${LIST_5xx} \ ${LIST_5xx} \
${LIST_512x} \ ${LIST_512x} \
${LIST_5xxx} \ ${LIST_5xxx} \
@ -505,6 +506,12 @@ LIST_ppc=" \
${LIST_7xx} \ ${LIST_7xx} \
" "
# Alias "ppc" -> "powerpc" to not break compatibility with older scripts
# still using "ppc" instead of "powerpc"
LIST_ppc=" \
${LIST_powerpc} \
"
######################################################################### #########################################################################
## StrongARM Systems ## StrongARM Systems
######################################################################### #########################################################################
@ -826,6 +833,7 @@ LIST_nios2=" \
EP1S40 \ EP1S40 \
PCI5441 \ PCI5441 \
PK1C20 \ PK1C20 \
nios2-generic \
" "
######################################################################### #########################################################################
@ -951,8 +959,8 @@ LIST_sparc="gr_xc3s_1500 gr_cpci_ax2000 gr_ep2s60 grsim grsim_leon2"
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
#----- for now, just run PPC by default ----- #----- for now, just run PowerPC by default -----
[ $# = 0 ] && set $LIST_ppc [ $# = 0 ] && set $LIST_powerpc
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
@ -1008,7 +1016,7 @@ do
|microblaze \ |microblaze \
|mips|mips_el \ |mips|mips_el \
|nios|nios2 \ |nios|nios2 \
|ppc|5xx|5xxx|512x|8xx|8220|824x|8260|83xx|85xx|86xx|4xx|7xx|74xx|TSEC \ |ppc|powerpc|5xx|5xxx|512x|8xx|8220|824x|8260|83xx|85xx|86xx|4xx|7xx|74xx|TSEC \
|sh|sh2|sh3|sh4 \ |sh|sh2|sh3|sh4 \
|sparc \ |sparc \
|x86|I486 \ |x86|I486 \

615
Makefile

File diff suppressed because it is too large Load diff

27
README
View file

@ -183,7 +183,7 @@ Directory Hierarchy:
/nios2 Files generic to Altera NIOS2 architecture /nios2 Files generic to Altera NIOS2 architecture
/cpu CPU specific files /cpu CPU specific files
/lib Architecture specific library files /lib Architecture specific library files
/ppc Files generic to PowerPC architecture /powerpc Files generic to PowerPC architecture
/cpu CPU specific files /cpu CPU specific files
/74xx_7xx Files specific to Freescale MPC74xx and 7xx CPUs /74xx_7xx Files specific to Freescale MPC74xx and 7xx CPUs
/mpc5xx Files specific to Freescale MPC5xx CPUs /mpc5xx Files specific to Freescale MPC5xx CPUs
@ -1417,7 +1417,7 @@ The following options need to be configured:
the CPU's i2c node address). the CPU's i2c node address).
Now, the u-boot i2c code for the mpc8xx Now, the u-boot i2c code for the mpc8xx
(arch/ppc/cpu/mpc8xx/i2c.c) sets the CPU up as a master node (arch/powerpc/cpu/mpc8xx/i2c.c) sets the CPU up as a master node
and so its address should therefore be cleared to 0 (See, and so its address should therefore be cleared to 0 (See,
eg, MPC823e User's Manual p.16-473). So, set eg, MPC823e User's Manual p.16-473). So, set
CONFIG_SYS_I2C_SLAVE to 0. CONFIG_SYS_I2C_SLAVE to 0.
@ -1509,6 +1509,17 @@ The following options need to be configured:
custom i2c_init_board() routine in boards/xxx/board.c custom i2c_init_board() routine in boards/xxx/board.c
is run early in the boot sequence. is run early in the boot sequence.
CONFIG_SYS_I2C_BOARD_LATE_INIT
An alternative to CONFIG_SYS_I2C_INIT_BOARD. If this option is
defined a custom i2c_board_late_init() routine in
boards/xxx/board.c is run AFTER the operations in i2c_init()
is completed. This callpoint can be used to unreset i2c bus
using CPU i2c controller register accesses for CPUs whose i2c
controller provide such a method. It is called at the end of
i2c_init() to allow i2c_init operations to setup the i2c bus
controller on the CPU (e.g. setting bus speed & slave address).
CONFIG_I2CFAST (PPC405GP|PPC405EP only) CONFIG_I2CFAST (PPC405GP|PPC405EP only)
This option enables configuration of bi_iic_fast[] flags This option enables configuration of bi_iic_fast[] flags
@ -1966,7 +1977,7 @@ Legacy uImage format:
15 arch/<arch>/lib/bootm.c All preparation done, transferring control to OS 15 arch/<arch>/lib/bootm.c All preparation done, transferring control to OS
-30 arch/ppc/lib/board.c Fatal error, hang the system -30 arch/powerpc/lib/board.c Fatal error, hang the system
-31 post/post.c POST test failed, detected by post_output_backlog() -31 post/post.c POST test failed, detected by post_output_backlog()
-32 post/post.c POST test failed, detected by post_run_single() -32 post/post.c POST test failed, detected by post_run_single()
@ -2727,7 +2738,7 @@ Low Level (hardware related) configuration options:
CONFIG_SYS_PCI_MSTR_MEMIO_SIZE, CONFIG_SYS_POCMR1_MASK_ATTRIB, CONFIG_SYS_PCI_MSTR_IO_LOCAL, CONFIG_SYS_PCI_MSTR_MEMIO_SIZE, CONFIG_SYS_POCMR1_MASK_ATTRIB, CONFIG_SYS_PCI_MSTR_IO_LOCAL,
CONFIG_SYS_PCI_MSTR_IO_BUS, CONFIG_SYS_CPU_PCI_IO_START, CONFIG_SYS_PCI_MSTR_IO_SIZE, CONFIG_SYS_PCI_MSTR_IO_BUS, CONFIG_SYS_CPU_PCI_IO_START, CONFIG_SYS_PCI_MSTR_IO_SIZE,
CONFIG_SYS_POCMR2_MASK_ATTRIB: (MPC826x only) CONFIG_SYS_POCMR2_MASK_ATTRIB: (MPC826x only)
Overrides the default PCI memory map in arch/ppc/cpu/mpc8260/pci.c if set. Overrides the default PCI memory map in arch/powerpc/cpu/mpc8260/pci.c if set.
- CONFIG_PCI_DISABLE_PCIE: - CONFIG_PCI_DISABLE_PCIE:
Disable PCI-Express on systems where it is supported but not Disable PCI-Express on systems where it is supported but not
@ -3373,7 +3384,7 @@ configure the Linux device drivers for use with your target hardware
(no, we don't intend to provide a full virtual machine interface to (no, we don't intend to provide a full virtual machine interface to
Linux :-). Linux :-).
But now you can ignore ALL boot loader code (in arch/ppc/mbxboot). But now you can ignore ALL boot loader code (in arch/powerpc/mbxboot).
Just make sure your machine specific header file (for instance Just make sure your machine specific header file (for instance
include/asm-ppc/tqm8xx.h) includes the same definition of the Board include/asm-ppc/tqm8xx.h) includes the same definition of the Board
@ -3471,7 +3482,7 @@ So a typical call to build a U-Boot image would read:
-> tools/mkimage -n '2.4.4 kernel for TQM850L' \ -> tools/mkimage -n '2.4.4 kernel for TQM850L' \
> -A ppc -O linux -T kernel -C gzip -a 0 -e 0 \ > -A ppc -O linux -T kernel -C gzip -a 0 -e 0 \
> -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/ppc/coffboot/vmlinux.gz \ > -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz \
> examples/uImage.TQM850L > examples/uImage.TQM850L
Image Name: 2.4.4 kernel for TQM850L Image Name: 2.4.4 kernel for TQM850L
Created: Wed Jul 19 02:34:59 2000 Created: Wed Jul 19 02:34:59 2000
@ -3495,10 +3506,10 @@ speed for memory and install an UNCOMPRESSED image instead: this
needs more space in Flash, but boots much faster since it does not needs more space in Flash, but boots much faster since it does not
need to be uncompressed: need to be uncompressed:
-> gunzip /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/ppc/coffboot/vmlinux.gz -> gunzip /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz
-> tools/mkimage -n '2.4.4 kernel for TQM850L' \ -> tools/mkimage -n '2.4.4 kernel for TQM850L' \
> -A ppc -O linux -T kernel -C none -a 0 -e 0 \ > -A ppc -O linux -T kernel -C none -a 0 -e 0 \
> -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/ppc/coffboot/vmlinux \ > -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux \
> examples/uImage.TQM850L-uncompressed > examples/uImage.TQM850L-uncompressed
Image Name: 2.4.4 kernel for TQM850L Image Name: 2.4.4 kernel for TQM850L
Created: Wed Jul 19 02:34:59 2000 Created: Wed Jul 19 02:34:59 2000

View file

@ -2773,6 +2773,57 @@ extern unsigned int __machine_arch_type;
#define MACH_TYPE_SKAT91_S3E 2790 #define MACH_TYPE_SKAT91_S3E 2790
#define MACH_TYPE_OMAP4_PANDA 2791 #define MACH_TYPE_OMAP4_PANDA 2791
#define MACH_TYPE_DF7220 2792 #define MACH_TYPE_DF7220 2792
#define MACH_TYPE_NEMINI 2793
#define MACH_TYPE_T8200 2794
#define MACH_TYPE_APF51 2795
#define MACH_TYPE_DR_RC_UNIT 2796
#define MACH_TYPE_BORDEAUX 2797
#define MACH_TYPE_CATANIA_B 2798
#define MACH_TYPE_MX51_OCEAN 2799
#define MACH_TYPE_TI8168EVM 2800
#define MACH_TYPE_NEOCOREOMAP 2801
#define MACH_TYPE_WITHINGS_WBP 2802
#define MACH_TYPE_DBPS 2803
#define MACH_TYPE_SBC9261 2804
#define MACH_TYPE_PCBFP0001 2805
#define MACH_TYPE_SPEEDY 2806
#define MACH_TYPE_CHRYSAOR 2807
#define MACH_TYPE_TANGO 2808
#define MACH_TYPE_SYNOLOGY_DSX11 2809
#define MACH_TYPE_HANLIN_V3EXT 2810
#define MACH_TYPE_HANLIN_V5 2811
#define MACH_TYPE_HANLIN_V3PLUS 2812
#define MACH_TYPE_IRIVER_STORY 2813
#define MACH_TYPE_IREX_ILIAD 2814
#define MACH_TYPE_IREX_DR1000 2815
#define MACH_TYPE_TETON_BGA 2816
#define MACH_TYPE_SNAPPER9G45 2817
#define MACH_TYPE_TAM3517 2818
#define MACH_TYPE_PDC100 2819
#define MACH_TYPE_EUKREA_CPUIMX25 2820
#define MACH_TYPE_EUKREA_CPUIMX35 2821
#define MACH_TYPE_EUKREA_CPUIMX51SD 2822
#define MACH_TYPE_EUKREA_CPUIMX51 2823
#define MACH_TYPE_P565 2824
#define MACH_TYPE_ACER_A4 2825
#define MACH_TYPE_DAVINCI_DM368_BIP 2826
#define MACH_TYPE_ESHARE 2827
#define MACH_TYPE_HW_OMAPL138_EUROPA 2828
#define MACH_TYPE_WLBARGN 2829
#define MACH_TYPE_BM170 2830
#define MACH_TYPE_NETSPACE_MINI_V2 2831
#define MACH_TYPE_NETSPACE_PLUG_V2 2832
#define MACH_TYPE_SIEMENS_L1 2833
#define MACH_TYPE_ELV_LCU1 2834
#define MACH_TYPE_MCU1 2835
#define MACH_TYPE_OMAP3_TAO3530 2836
#define MACH_TYPE_OMAP3_PCUTOUCH 2837
#define MACH_TYPE_SMDKC210 2838
#define MACH_TYPE_OMAP3_BRAILLO 2839
#define MACH_TYPE_SPYPLUG 2840
#define MACH_TYPE_GINGER 2841
#define MACH_TYPE_TNY_T3530 2842
#define MACH_TYPE_PCA102 2843
#ifdef CONFIG_ARCH_EBSA110 #ifdef CONFIG_ARCH_EBSA110
# ifdef machine_arch_type # ifdef machine_arch_type
@ -33573,9 +33624,9 @@ extern unsigned int __machine_arch_type;
# else # else
# define machine_arch_type MACH_TYPE_DAVINCI_CIO # define machine_arch_type MACH_TYPE_DAVINCI_CIO
# endif # endif
# define machine_is_davinci_cio() (machine_arch_type == MACH_TYPE_DAVINCI_CIO) # define machine_is_davinci_dm6467_cio() (machine_arch_type == MACH_TYPE_DAVINCI_CIO)
#else #else
# define machine_is_davinci_cio() (0) # define machine_is_davinci_dm6467_cio() (0)
#endif #endif
#ifdef CONFIG_MACH_SMARTMETER_DL #ifdef CONFIG_MACH_SMARTMETER_DL
@ -35906,6 +35957,618 @@ extern unsigned int __machine_arch_type;
# define machine_is_df7220() (0) # define machine_is_df7220() (0)
#endif #endif
#ifdef CONFIG_MACH_NEMINI
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_NEMINI
# endif
# define machine_is_nemini() (machine_arch_type == MACH_TYPE_NEMINI)
#else
# define machine_is_nemini() (0)
#endif
#ifdef CONFIG_MACH_T8200
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_T8200
# endif
# define machine_is_t8200() (machine_arch_type == MACH_TYPE_T8200)
#else
# define machine_is_t8200() (0)
#endif
#ifdef CONFIG_MACH_APF51
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_APF51
# endif
# define machine_is_apf51() (machine_arch_type == MACH_TYPE_APF51)
#else
# define machine_is_apf51() (0)
#endif
#ifdef CONFIG_MACH_DR_RC_UNIT
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_DR_RC_UNIT
# endif
# define machine_is_dr_rc_unit() (machine_arch_type == MACH_TYPE_DR_RC_UNIT)
#else
# define machine_is_dr_rc_unit() (0)
#endif
#ifdef CONFIG_MACH_BORDEAUX
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_BORDEAUX
# endif
# define machine_is_bordeaux() (machine_arch_type == MACH_TYPE_BORDEAUX)
#else
# define machine_is_bordeaux() (0)
#endif
#ifdef CONFIG_MACH_CATANIA_B
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_CATANIA_B
# endif
# define machine_is_catania_b() (machine_arch_type == MACH_TYPE_CATANIA_B)
#else
# define machine_is_catania_b() (0)
#endif
#ifdef CONFIG_MACH_MX51_OCEAN
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_MX51_OCEAN
# endif
# define machine_is_mx51_ocean() (machine_arch_type == MACH_TYPE_MX51_OCEAN)
#else
# define machine_is_mx51_ocean() (0)
#endif
#ifdef CONFIG_MACH_TI8168EVM
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_TI8168EVM
# endif
# define machine_is_ti8168evm() (machine_arch_type == MACH_TYPE_TI8168EVM)
#else
# define machine_is_ti8168evm() (0)
#endif
#ifdef CONFIG_MACH_NEOCOREOMAP
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_NEOCOREOMAP
# endif
# define machine_is_neocoreomap() (machine_arch_type == MACH_TYPE_NEOCOREOMAP)
#else
# define machine_is_neocoreomap() (0)
#endif
#ifdef CONFIG_MACH_WITHINGS_WBP
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_WITHINGS_WBP
# endif
# define machine_is_withings_wbp() (machine_arch_type == MACH_TYPE_WITHINGS_WBP)
#else
# define machine_is_withings_wbp() (0)
#endif
#ifdef CONFIG_MACH_DBPS
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_DBPS
# endif
# define machine_is_dbps() (machine_arch_type == MACH_TYPE_DBPS)
#else
# define machine_is_dbps() (0)
#endif
#ifdef CONFIG_MACH_SBC9261
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_SBC9261
# endif
# define machine_is_at91sam9261() (machine_arch_type == MACH_TYPE_SBC9261)
#else
# define machine_is_at91sam9261() (0)
#endif
#ifdef CONFIG_MACH_PCBFP0001
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_PCBFP0001
# endif
# define machine_is_pcbfp0001() (machine_arch_type == MACH_TYPE_PCBFP0001)
#else
# define machine_is_pcbfp0001() (0)
#endif
#ifdef CONFIG_MACH_SPEEDY
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_SPEEDY
# endif
# define machine_is_speedy() (machine_arch_type == MACH_TYPE_SPEEDY)
#else
# define machine_is_speedy() (0)
#endif
#ifdef CONFIG_MACH_CHRYSAOR
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_CHRYSAOR
# endif
# define machine_is_chrysaor() (machine_arch_type == MACH_TYPE_CHRYSAOR)
#else
# define machine_is_chrysaor() (0)
#endif
#ifdef CONFIG_MACH_TANGO
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_TANGO
# endif
# define machine_is_tango() (machine_arch_type == MACH_TYPE_TANGO)
#else
# define machine_is_tango() (0)
#endif
#ifdef CONFIG_MACH_SYNOLOGY_DSX11
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_SYNOLOGY_DSX11
# endif
# define machine_is_synology_dsx11() (machine_arch_type == MACH_TYPE_SYNOLOGY_DSX11)
#else
# define machine_is_synology_dsx11() (0)
#endif
#ifdef CONFIG_MACH_HANLIN_V3EXT
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_HANLIN_V3EXT
# endif
# define machine_is_hanlin_v3ext() (machine_arch_type == MACH_TYPE_HANLIN_V3EXT)
#else
# define machine_is_hanlin_v3ext() (0)
#endif
#ifdef CONFIG_MACH_HANLIN_V5
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_HANLIN_V5
# endif
# define machine_is_hanlin_v5() (machine_arch_type == MACH_TYPE_HANLIN_V5)
#else
# define machine_is_hanlin_v5() (0)
#endif
#ifdef CONFIG_MACH_HANLIN_V3PLUS
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_HANLIN_V3PLUS
# endif
# define machine_is_hanlin_v3plus() (machine_arch_type == MACH_TYPE_HANLIN_V3PLUS)
#else
# define machine_is_hanlin_v3plus() (0)
#endif
#ifdef CONFIG_MACH_IRIVER_STORY
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_IRIVER_STORY
# endif
# define machine_is_iriver_story() (machine_arch_type == MACH_TYPE_IRIVER_STORY)
#else
# define machine_is_iriver_story() (0)
#endif
#ifdef CONFIG_MACH_IREX_ILIAD
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_IREX_ILIAD
# endif
# define machine_is_irex_iliad() (machine_arch_type == MACH_TYPE_IREX_ILIAD)
#else
# define machine_is_irex_iliad() (0)
#endif
#ifdef CONFIG_MACH_IREX_DR1000
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_IREX_DR1000
# endif
# define machine_is_irex_dr1000() (machine_arch_type == MACH_TYPE_IREX_DR1000)
#else
# define machine_is_irex_dr1000() (0)
#endif
#ifdef CONFIG_MACH_TETON_BGA
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_TETON_BGA
# endif
# define machine_is_teton_bga() (machine_arch_type == MACH_TYPE_TETON_BGA)
#else
# define machine_is_teton_bga() (0)
#endif
#ifdef CONFIG_MACH_SNAPPER9G45
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_SNAPPER9G45
# endif
# define machine_is_snapper9g45() (machine_arch_type == MACH_TYPE_SNAPPER9G45)
#else
# define machine_is_snapper9g45() (0)
#endif
#ifdef CONFIG_MACH_TAM3517
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_TAM3517
# endif
# define machine_is_tam3517() (machine_arch_type == MACH_TYPE_TAM3517)
#else
# define machine_is_tam3517() (0)
#endif
#ifdef CONFIG_MACH_PDC100
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_PDC100
# endif
# define machine_is_pdc100() (machine_arch_type == MACH_TYPE_PDC100)
#else
# define machine_is_pdc100() (0)
#endif
#ifdef CONFIG_MACH_EUKREA_CPUIMX25
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_EUKREA_CPUIMX25
# endif
# define machine_is_eukrea_cpuimx25sd() (machine_arch_type == MACH_TYPE_EUKREA_CPUIMX25)
#else
# define machine_is_eukrea_cpuimx25sd() (0)
#endif
#ifdef CONFIG_MACH_EUKREA_CPUIMX35
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_EUKREA_CPUIMX35
# endif
# define machine_is_eukrea_cpuimx35sd() (machine_arch_type == MACH_TYPE_EUKREA_CPUIMX35)
#else
# define machine_is_eukrea_cpuimx35sd() (0)
#endif
#ifdef CONFIG_MACH_EUKREA_CPUIMX51SD
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_EUKREA_CPUIMX51SD
# endif
# define machine_is_eukrea_cpuimx51sd() (machine_arch_type == MACH_TYPE_EUKREA_CPUIMX51SD)
#else
# define machine_is_eukrea_cpuimx51sd() (0)
#endif
#ifdef CONFIG_MACH_EUKREA_CPUIMX51
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_EUKREA_CPUIMX51
# endif
# define machine_is_eukrea_cpuimx51() (machine_arch_type == MACH_TYPE_EUKREA_CPUIMX51)
#else
# define machine_is_eukrea_cpuimx51() (0)
#endif
#ifdef CONFIG_MACH_P565
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_P565
# endif
# define machine_is_p565() (machine_arch_type == MACH_TYPE_P565)
#else
# define machine_is_p565() (0)
#endif
#ifdef CONFIG_MACH_ACER_A4
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_ACER_A4
# endif
# define machine_is_acer_a4() (machine_arch_type == MACH_TYPE_ACER_A4)
#else
# define machine_is_acer_a4() (0)
#endif
#ifdef CONFIG_MACH_DAVINCI_DM368_BIP
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_DAVINCI_DM368_BIP
# endif
# define machine_is_davinci_dm368_bip() (machine_arch_type == MACH_TYPE_DAVINCI_DM368_BIP)
#else
# define machine_is_davinci_dm368_bip() (0)
#endif
#ifdef CONFIG_MACH_ESHARE
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_ESHARE
# endif
# define machine_is_eshare() (machine_arch_type == MACH_TYPE_ESHARE)
#else
# define machine_is_eshare() (0)
#endif
#ifdef CONFIG_MACH_HW_OMAPL138_EUROPA
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_HW_OMAPL138_EUROPA
# endif
# define machine_is_hw_omapl138_europa() (machine_arch_type == MACH_TYPE_HW_OMAPL138_EUROPA)
#else
# define machine_is_hw_omapl138_europa() (0)
#endif
#ifdef CONFIG_MACH_WLBARGN
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_WLBARGN
# endif
# define machine_is_wlbargn() (machine_arch_type == MACH_TYPE_WLBARGN)
#else
# define machine_is_wlbargn() (0)
#endif
#ifdef CONFIG_MACH_BM170
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_BM170
# endif
# define machine_is_bm170() (machine_arch_type == MACH_TYPE_BM170)
#else
# define machine_is_bm170() (0)
#endif
#ifdef CONFIG_MACH_NETSPACE_MINI_V2
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_NETSPACE_MINI_V2
# endif
# define machine_is_netspace_mini_v2() (machine_arch_type == MACH_TYPE_NETSPACE_MINI_V2)
#else
# define machine_is_netspace_mini_v2() (0)
#endif
#ifdef CONFIG_MACH_NETSPACE_PLUG_V2
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_NETSPACE_PLUG_V2
# endif
# define machine_is_netspace_plug_v2() (machine_arch_type == MACH_TYPE_NETSPACE_PLUG_V2)
#else
# define machine_is_netspace_plug_v2() (0)
#endif
#ifdef CONFIG_MACH_SIEMENS_L1
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_SIEMENS_L1
# endif
# define machine_is_siemens_l1() (machine_arch_type == MACH_TYPE_SIEMENS_L1)
#else
# define machine_is_siemens_l1() (0)
#endif
#ifdef CONFIG_MACH_ELV_LCU1
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_ELV_LCU1
# endif
# define machine_is_elv_lcu1() (machine_arch_type == MACH_TYPE_ELV_LCU1)
#else
# define machine_is_elv_lcu1() (0)
#endif
#ifdef CONFIG_MACH_MCU1
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_MCU1
# endif
# define machine_is_mcu1() (machine_arch_type == MACH_TYPE_MCU1)
#else
# define machine_is_mcu1() (0)
#endif
#ifdef CONFIG_MACH_OMAP3_TAO3530
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_OMAP3_TAO3530
# endif
# define machine_is_omap3_tao3530() (machine_arch_type == MACH_TYPE_OMAP3_TAO3530)
#else
# define machine_is_omap3_tao3530() (0)
#endif
#ifdef CONFIG_MACH_OMAP3_PCUTOUCH
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_OMAP3_PCUTOUCH
# endif
# define machine_is_omap3_pcutouch() (machine_arch_type == MACH_TYPE_OMAP3_PCUTOUCH)
#else
# define machine_is_omap3_pcutouch() (0)
#endif
#ifdef CONFIG_MACH_SMDKC210
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_SMDKC210
# endif
# define machine_is_smdkc210() (machine_arch_type == MACH_TYPE_SMDKC210)
#else
# define machine_is_smdkc210() (0)
#endif
#ifdef CONFIG_MACH_OMAP3_BRAILLO
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_OMAP3_BRAILLO
# endif
# define machine_is_omap3_braillo() (machine_arch_type == MACH_TYPE_OMAP3_BRAILLO)
#else
# define machine_is_omap3_braillo() (0)
#endif
#ifdef CONFIG_MACH_SPYPLUG
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_SPYPLUG
# endif
# define machine_is_spyplug() (machine_arch_type == MACH_TYPE_SPYPLUG)
#else
# define machine_is_spyplug() (0)
#endif
#ifdef CONFIG_MACH_GINGER
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_GINGER
# endif
# define machine_is_ginger() (machine_arch_type == MACH_TYPE_GINGER)
#else
# define machine_is_ginger() (0)
#endif
#ifdef CONFIG_MACH_TNY_T3530
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_TNY_T3530
# endif
# define machine_is_tny_t3530() (machine_arch_type == MACH_TYPE_TNY_T3530)
#else
# define machine_is_tny_t3530() (0)
#endif
#ifdef CONFIG_MACH_PCA102
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_PCA102
# endif
# define machine_is_pca102() (machine_arch_type == MACH_TYPE_PCA102)
#else
# define machine_is_pca102() (0)
#endif
/* /*
* These have not yet been registered * These have not yet been registered
*/ */

View file

@ -50,6 +50,8 @@ void icache_enable (void) {
} }
void icache_disable(void) { void icache_disable(void) {
/* we are not generate ICACHE size -> flush whole cache */
flush_cache(0, 32768);
MSRCLR(0x20); MSRCLR(0x20);
} }
@ -58,5 +60,31 @@ void dcache_enable (void) {
} }
void dcache_disable(void) { void dcache_disable(void) {
#ifdef XILINX_USE_DCACHE
#ifdef XILINX_DCACHE_BYTE_SIZE
flush_cache(0, XILINX_DCACHE_BYTE_SIZE);
#else
#warning please rebuild BSPs and update configuration
flush_cache(0, 32768);
#endif
#endif
MSRCLR(0x80); MSRCLR(0x80);
} }
void flush_cache (ulong addr, ulong size)
{
int i;
for (i = 0; i < size; i += 4)
asm volatile (
#ifdef CONFIG_ICACHE
"wic %0, r0;"
#endif
"nop;"
#ifdef CONFIG_DCACHE
"wdc.flush %0, r0;"
#endif
"nop;"
:
: "r" (addr + i)
: "memory");
}

View file

@ -46,13 +46,6 @@ int disable_interrupts (void)
} }
#ifdef CONFIG_SYS_INTC_0 #ifdef CONFIG_SYS_INTC_0
#ifdef CONFIG_SYS_TIMER_0
extern void timer_init (void);
#endif
#ifdef CONFIG_SYS_FSL_2
extern void fsl_init2 (void);
#endif
static struct irq_action vecs[CONFIG_SYS_INTC_0_NUM]; static struct irq_action vecs[CONFIG_SYS_INTC_0_NUM];
@ -142,20 +135,14 @@ int interrupts_init (void)
} }
/* initialize intc controller */ /* initialize intc controller */
intc_init (); intc_init ();
#ifdef CONFIG_SYS_TIMER_0
timer_init ();
#endif
#ifdef CONFIG_SYS_FSL_2
fsl_init2 ();
#endif
enable_interrupts (); enable_interrupts ();
return 0; return 0;
} }
void interrupt_handler (void) void interrupt_handler (void)
{ {
int irqs = (intc->isr & intc->ier); /* find active interrupt */ int irqs = intc->ivr; /* find active interrupt */
int i = 1; int mask = 1;
#ifdef DEBUG_INT #ifdef DEBUG_INT
int value; int value;
printf ("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier, printf ("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier,
@ -163,23 +150,17 @@ void interrupt_handler (void)
R14(value); R14(value);
printf ("Interrupt handler on %x line, r14 %x\n", irqs, value); printf ("Interrupt handler on %x line, r14 %x\n", irqs, value);
#endif #endif
struct irq_action *act = vecs; struct irq_action *act = vecs + irqs;
while (irqs) {
if (irqs & 1) { intc->iar = mask << irqs;
#ifdef DEBUG_INT #ifdef DEBUG_INT
printf printf
("Jumping to interrupt handler rutine addr %x,count %x,arg %x\n", ("Jumping to interrupt handler rutine addr %x,count %x,arg %x\n",
act->handler, act->count, act->arg); act->handler, act->count, act->arg);
#endif #endif
act->handler (act->arg); act->handler (act->arg);
act->count++; act->count++;
intc->iar = i;
return;
}
irqs >>= 1;
act++;
i <<= 1;
}
#ifdef DEBUG_INT #ifdef DEBUG_INT
printf ("Dump INTC reg, isr %x, ier %x, iar %x, mer %x\n", intc->isr, printf ("Dump INTC reg, isr %x, ier %x, iar %x, mer %x\n", intc->isr,

View file

@ -27,129 +27,71 @@
.text .text
.global _interrupt_handler .global _interrupt_handler
_interrupt_handler: _interrupt_handler:
addi r1, r1, -4 swi r2, r1, -4
swi r2, r1, 0 swi r3, r1, -8
addi r1, r1, -4 swi r4, r1, -12
swi r3, r1, 0 swi r5, r1, -16
addi r1, r1, -4 swi r6, r1, -20
swi r4, r1, 0 swi r7, r1, -24
addi r1, r1, -4 swi r8, r1, -28
swi r5, r1, 0 swi r9, r1, -32
addi r1, r1, -4 swi r10, r1, -36
swi r6, r1, 0 swi r11, r1, -40
addi r1, r1, -4 swi r12, r1, -44
swi r7, r1, 0 swi r13, r1, -48
addi r1, r1, -4 swi r14, r1, -52
swi r8, r1, 0 swi r15, r1, -56
addi r1, r1, -4 swi r16, r1, -60
swi r9, r1, 0 swi r17, r1, -64
addi r1, r1, -4 swi r18, r1, -68
swi r10, r1, 0 swi r19, r1, -72
addi r1, r1, -4 swi r20, r1, -76
swi r11, r1, 0 swi r21, r1, -80
addi r1, r1, -4 swi r22, r1, -84
swi r12, r1, 0 swi r23, r1, -88
addi r1, r1, -4 swi r24, r1, -92
swi r13, r1, 0 swi r25, r1, -96
addi r1, r1, -4 swi r26, r1, -100
swi r14, r1, 0 swi r27, r1, -104
addi r1, r1, -4 swi r28, r1, -108
swi r15, r1, 0 swi r29, r1, -112
addi r1, r1, -4 swi r30, r1, -116
swi r16, r1, 0 swi r31, r1, -120
addi r1, r1, -4 addik r1, r1, -124
swi r17, r1, 0
addi r1, r1, -4
swi r18, r1, 0
addi r1, r1, -4
swi r19, r1, 0
addi r1, r1, -4
swi r20, r1, 0
addi r1, r1, -4
swi r21, r1, 0
addi r1, r1, -4
swi r22, r1, 0
addi r1, r1, -4
swi r23, r1, 0
addi r1, r1, -4
swi r24, r1, 0
addi r1, r1, -4
swi r25, r1, 0
addi r1, r1, -4
swi r26, r1, 0
addi r1, r1, -4
swi r27, r1, 0
addi r1, r1, -4
swi r28, r1, 0
addi r1, r1, -4
swi r29, r1, 0
addi r1, r1, -4
swi r30, r1, 0
addi r1, r1, -4
swi r31, r1, 0
brlid r15, interrupt_handler brlid r15, interrupt_handler
nop nop
nop nop
lwi r31, r1, 0 addik r1, r1, 124
addi r1, r1, 4 lwi r31, r1, -120
lwi r30, r1, 0 lwi r30, r1, -116
addi r1, r1, 4 lwi r29, r1, -112
lwi r29, r1, 0 lwi r28, r1, -108
addi r1, r1, 4 lwi r27, r1, -104
lwi r28, r1, 0 lwi r26, r1, -100
addi r1, r1, 4 lwi r25, r1, -96
lwi r27, r1, 0 lwi r24, r1, -92
addi r1, r1, 4 lwi r23, r1, -88
lwi r26, r1, 0 lwi r22, r1, -84
addi r1, r1, 4 lwi r21, r1, -80
lwi r25, r1, 0 lwi r20, r1, -76
addi r1, r1, 4 lwi r19, r1, -72
lwi r24, r1, 0 lwi r18, r1, -68
addi r1, r1, 4 lwi r17, r1, -64
lwi r23, r1, 0 lwi r16, r1, -60
addi r1, r1, 4 lwi r15, r1, -56
lwi r22, r1, 0 lwi r14, r1, -52
addi r1, r1, 4 lwi r13, r1, -48
lwi r21, r1, 0 lwi r12, r1, -44
addi r1, r1, 4 lwi r11, r1, -40
lwi r20, r1, 0 lwi r10, r1, -36
addi r1, r1, 4 lwi r9, r1, -32
lwi r19, r1, 0 lwi r8, r1, -28
addi r1, r1, 4 lwi r7, r1, -24
lwi r18, r1, 0 lwi r6, r1, -20
addi r1, r1, 4 lwi r5, r1, -16
lwi r17, r1, 0 lwi r4, r1, -12
addi r1, r1, 4 lwi r3, r1, -8
lwi r16, r1, 0 lwi r2, r1, -4
addi r1, r1, 4
lwi r15, r1, 0
addi r1, r1, 4
lwi r14, r1, 0
addi r1, r1, 4
lwi r13, r1, 0
addi r1, r1, 4
lwi r12, r1, 0
addi r1, r1, 4
lwi r11, r1, 0
addi r1, r1, 4
lwi r10, r1, 0
addi r1, r1, 4
lwi r9, r1, 0
addi r1, r1, 4
lwi r8, r1, 0
addi r1, r1, 4
lwi r7, r1, 0
addi r1, r1, 4
lwi r6, r1, 0
addi r1, r1, 4
lwi r5, r1, 0
addi r1, r1, 4
lwi r4, r1, 0
addi r1, r1, 4
lwi r3, r1, 0
addi r1, r1, 4
lwi r2, r1, 0
addi r1, r1, 4
/* enable_interrupt */ /* enable_interrupt */
#ifdef XILINX_USE_MSR_INSTR #ifdef XILINX_USE_MSR_INSTR

View file

@ -60,7 +60,7 @@ void timer_isr (void *arg)
tmr->control = tmr->control | TIMER_INTERRUPT; tmr->control = tmr->control | TIMER_INTERRUPT;
} }
void timer_init (void) int timer_init (void)
{ {
tmr->loadreg = CONFIG_SYS_TIMER_0_PRELOAD; tmr->loadreg = CONFIG_SYS_TIMER_0_PRELOAD;
tmr->control = TIMER_INTERRUPT | TIMER_RESET; tmr->control = TIMER_INTERRUPT | TIMER_RESET;
@ -68,6 +68,7 @@ void timer_init (void)
TIMER_ENABLE | TIMER_ENABLE_INTR | TIMER_RELOAD | TIMER_DOWN_COUNT; TIMER_ENABLE | TIMER_ENABLE_INTR | TIMER_RELOAD | TIMER_DOWN_COUNT;
reset_timer (); reset_timer ();
install_interrupt_handler (CONFIG_SYS_TIMER_0_IRQ, timer_isr, (void *)tmr); install_interrupt_handler (CONFIG_SYS_TIMER_0_IRQ, timer_isr, (void *)tmr);
return 0;
} }
#endif #endif
#endif #endif

View file

@ -29,7 +29,6 @@ SOBJS-y +=
COBJS-y += board.o COBJS-y += board.o
COBJS-y += bootm.o COBJS-y += bootm.o
COBJS-y += cache.o
COBJS-y += time.o COBJS-y += time.o
SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)

View file

@ -30,6 +30,7 @@
#include <timestamp.h> #include <timestamp.h>
#include <version.h> #include <version.h>
#include <watchdog.h> #include <watchdog.h>
#include <stdio_dev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -44,6 +45,12 @@ extern int interrupts_init (void);
#if defined(CONFIG_CMD_NET) #if defined(CONFIG_CMD_NET)
extern int eth_init (bd_t * bis); extern int eth_init (bd_t * bis);
#endif #endif
#ifdef CONFIG_SYS_TIMER_0
extern int timer_init (void);
#endif
#ifdef CONFIG_SYS_FSL_2
extern void fsl_init2 (void);
#endif
/* /*
* All attempts to come up with a "common" initialization sequence * All attempts to come up with a "common" initialization sequence
@ -67,6 +74,12 @@ init_fnc_t *init_sequence[] = {
#endif #endif
#ifdef CONFIG_SYS_INTC_0 #ifdef CONFIG_SYS_INTC_0
interrupts_init, interrupts_init,
#endif
#ifdef CONFIG_SYS_TIMER_0
timer_init,
#endif
#ifdef CONFIG_SYS_FSL_2
fsl_init2,
#endif #endif
NULL, NULL,
}; };
@ -76,6 +89,7 @@ void board_init (void)
bd_t *bd; bd_t *bd;
init_fnc_t **init_fnc_ptr; init_fnc_t **init_fnc_ptr;
gd = (gd_t *) CONFIG_SYS_GBL_DATA_OFFSET; gd = (gd_t *) CONFIG_SYS_GBL_DATA_OFFSET;
char *s;
#if defined(CONFIG_CMD_FLASH) #if defined(CONFIG_CMD_FLASH)
ulong flash_size = 0; ulong flash_size = 0;
#endif #endif
@ -104,8 +118,8 @@ void board_init (void)
} }
puts ("SDRAM :\n"); puts ("SDRAM :\n");
printf ("\t\tIcache:%s\n", icache_status() ? "OK" : "FAIL"); printf ("\t\tIcache:%s\n", icache_status() ? "ON" : "OFF");
printf ("\t\tDcache:%s\n", dcache_status() ? "OK" : "FAIL"); printf ("\t\tDcache:%s\n", dcache_status() ? "ON" : "OFF");
printf ("\tU-Boot Start:0x%08x\n", TEXT_BASE); printf ("\tU-Boot Start:0x%08x\n", TEXT_BASE);
#if defined(CONFIG_CMD_FLASH) #if defined(CONFIG_CMD_FLASH)
@ -139,15 +153,22 @@ void board_init (void)
} }
#endif #endif
/* relocate environment function pointers etc. */
env_relocate ();
/* Initialize stdio devices */
stdio_init ();
if ((s = getenv ("loadaddr")) != NULL) {
load_addr = simple_strtoul (s, NULL, 16);
}
#if defined(CONFIG_CMD_NET) #if defined(CONFIG_CMD_NET)
/* IP Address */ /* IP Address */
bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); bd->bi_ip_addr = getenv_IPaddr ("ipaddr");
eth_init (bd); eth_init (bd);
#endif #endif
/* relocate environment function pointers etc. */
env_relocate ();
/* main_loop */ /* main_loop */
for (;;) { for (;;) {
WATCHDOG_RESET (); WATCHDOG_RESET ();

View file

@ -35,22 +35,59 @@ DECLARE_GLOBAL_DATA_PTR;
int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
{ {
/* First parameter is mapped to $r5 for kernel boot args */ /* First parameter is mapped to $r5 for kernel boot args */
void (*theKernel) (char *); void (*theKernel) (char *, ulong, ulong);
char *commandline = getenv ("bootargs"); char *commandline = getenv ("bootargs");
ulong rd_data_start, rd_data_end;
if ((flag != 0) && (flag != BOOTM_STATE_OS_GO)) if ((flag != 0) && (flag != BOOTM_STATE_OS_GO))
return 1; return 1;
theKernel = (void (*)(char *))images->ep; int ret;
char *of_flat_tree = NULL;
#if defined(CONFIG_OF_LIBFDT)
ulong of_size = 0;
/* find flattened device tree */
ret = boot_get_fdt (flag, argc, argv, images, &of_flat_tree, &of_size);
if (ret)
return 1;
#endif
theKernel = (void (*)(char *, ulong, ulong))images->ep;
/* find ramdisk */
ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_MICROBLAZE,
&rd_data_start, &rd_data_end);
if (ret)
return 1;
show_boot_progress (15); show_boot_progress (15);
if (!(ulong) of_flat_tree)
of_flat_tree = (char *)simple_strtoul (argv[3], NULL, 16);
#ifdef DEBUG #ifdef DEBUG
printf ("## Transferring control to Linux (at address %08lx) ...\n", printf ("## Transferring control to Linux (at address 0x%08lx) " \
(ulong) theKernel); "ramdisk 0x%08lx, FDT 0x%08lx...\n",
(ulong) theKernel, rd_data_start, (ulong) of_flat_tree);
#endif #endif
theKernel (commandline); #ifdef XILINX_USE_DCACHE
#ifdef XILINX_DCACHE_BYTE_SIZE
flush_cache(0, XILINX_DCACHE_BYTE_SIZE);
#else
#warning please rebuild BSPs and update configuration
flush_cache(0, 32768);
#endif
#endif
/*
* Linux Kernel Parameters (passing device tree):
* r5: pointer to command line
* r6: pointer to ramdisk
* r7: pointer to the fdt, followed by the board info data
*/
theKernel (commandline, rd_data_start, (ulong) of_flat_tree);
/* does not return */ /* does not return */
return 1; return 1;

View file

@ -28,3 +28,5 @@ STANDALONE_LOAD_ADDR = 0x02000000 -L $(gcclibdir)
PLATFORM_CPPFLAGS += -DCONFIG_NIOS2 -D__NIOS2__ PLATFORM_CPPFLAGS += -DCONFIG_NIOS2 -D__NIOS2__
PLATFORM_CPPFLAGS += -ffixed-r15 -G0 PLATFORM_CPPFLAGS += -ffixed-r15 -G0
LDSCRIPT ?= $(SRCTREE)/$(CPUDIR)/u-boot.lds

View file

@ -34,6 +34,7 @@
.global _start .global _start
_start: _start:
wrctl status, r0 /* Disable interrupts */
/* ICACHE INIT -- only the icache line at the reset address /* ICACHE INIT -- only the icache line at the reset address
* is invalidated at reset. So the init must stay within * is invalidated at reset. So the init must stay within
* the cache line size (8 words). If GERMS is used, we'll * the cache line size (8 words). If GERMS is used, we'll
@ -43,10 +44,9 @@ _start:
ori r4, r0, %lo(CONFIG_SYS_ICACHELINE_SIZE) ori r4, r0, %lo(CONFIG_SYS_ICACHELINE_SIZE)
movhi r5, %hi(CONFIG_SYS_ICACHE_SIZE) movhi r5, %hi(CONFIG_SYS_ICACHE_SIZE)
ori r5, r5, %lo(CONFIG_SYS_ICACHE_SIZE) ori r5, r5, %lo(CONFIG_SYS_ICACHE_SIZE)
mov r6, r0 0: initi r5
0: initi r6 sub r5, r5, r4
add r6, r6, r4 bgt r5, r0, 0b
bltu r6, r5, 0b
br _except_end /* Skip the tramp */ br _except_end /* Skip the tramp */
/* EXCEPTION TRAMPOLINE -- the following gets copied /* EXCEPTION TRAMPOLINE -- the following gets copied
@ -62,7 +62,6 @@ _except_end:
/* INTERRUPTS -- for now, all interrupts masked and globally /* INTERRUPTS -- for now, all interrupts masked and globally
* disabled. * disabled.
*/ */
wrctl status, r0 /* Disable interrupts */
wrctl ienable, r0 /* All disabled */ wrctl ienable, r0 /* All disabled */
/* DCACHE INIT -- if dcache not implemented, initd behaves as /* DCACHE INIT -- if dcache not implemented, initd behaves as

View file

@ -30,7 +30,7 @@ SECTIONS
{ {
.text : .text :
{ {
arch/nios/cpu2/start.o (.text) arch/nios2/cpu/start.o (.text)
*(.text) *(.text)
*(.text.*) *(.text.*)
*(.gnu.linkonce.t*) *(.gnu.linkonce.t*)

View file

@ -25,6 +25,12 @@
#define __ASM_NIOS2_BYTEORDER_H_ #define __ASM_NIOS2_BYTEORDER_H_
#include <asm/types.h> #include <asm/types.h>
#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
# define __BYTEORDER_HAS_U64__
# define __SWAB_64_THRU_32__
#endif
#include <linux/byteorder/little_endian.h> #include <linux/byteorder/little_endian.h>
#endif /* __ASM_NIOS2_BYTEORDER_H_ */ #endif /* __ASM_NIOS2_BYTEORDER_H_ */

View file

@ -0,0 +1,23 @@
#ifndef __ASM_NIOS2_DMA_MAPPING_H
#define __ASM_NIOS2_DMA_MAPPING_H
/* dma_alloc_coherent() return cache-line aligned allocation which is mapped
* to uncached io region.
*
* IO_REGION_BASE should be defined in board config header file
* 0x80000000 for nommu, 0xe0000000 for mmu
*/
static inline void *dma_alloc_coherent(size_t len, unsigned long *handle)
{
void *addr = malloc(len + CONFIG_SYS_DCACHELINE_SIZE);
if (!addr)
return 0;
flush_dcache((unsigned long)addr, len + CONFIG_SYS_DCACHELINE_SIZE);
*handle = ((unsigned long)addr +
(CONFIG_SYS_DCACHELINE_SIZE - 1)) &
~(CONFIG_SYS_DCACHELINE_SIZE - 1) & ~(IO_REGION_BASE);
return (void *)(*handle | IO_REGION_BASE);
}
#endif /* __ASM_NIOS2_DMA_MAPPING_H */

View file

@ -28,6 +28,7 @@
#include <stdio_dev.h> #include <stdio_dev.h>
#include <watchdog.h> #include <watchdog.h>
#include <malloc.h> #include <malloc.h>
#include <mmc.h>
#include <net.h> #include <net.h>
#ifdef CONFIG_STATUS_LED #ifdef CONFIG_STATUS_LED
#include <status_led.h> #include <status_led.h>
@ -35,6 +36,9 @@
#if defined(CONFIG_SYS_NIOS_EPCSBASE) #if defined(CONFIG_SYS_NIOS_EPCSBASE)
#include <nios2-epcs.h> #include <nios2-epcs.h>
#endif #endif
#ifdef CONFIG_CMD_NAND
#include <nand.h> /* cannot even include nand.h if it isnt configured */
#endif
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -100,7 +104,9 @@ void board_init (void)
bd = gd->bd; bd = gd->bd;
bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE; bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
#ifndef CONFIG_SYS_NO_FLASH
bd->bi_flashstart = CONFIG_SYS_FLASH_BASE; bd->bi_flashstart = CONFIG_SYS_FLASH_BASE;
#endif
#if defined(CONFIG_SYS_SRAM_BASE) && defined(CONFIG_SYS_SRAM_SIZE) #if defined(CONFIG_SYS_SRAM_BASE) && defined(CONFIG_SYS_SRAM_SIZE)
bd->bi_sramstart= CONFIG_SYS_SRAM_BASE; bd->bi_sramstart= CONFIG_SYS_SRAM_BASE;
bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;
@ -119,8 +125,20 @@ void board_init (void)
/* The Malloc area is immediately below the monitor copy in RAM */ /* The Malloc area is immediately below the monitor copy in RAM */
mem_malloc_init(CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN); mem_malloc_init(CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN);
#ifndef CONFIG_SYS_NO_FLASH
WATCHDOG_RESET (); WATCHDOG_RESET ();
bd->bi_flashsize = flash_init(); bd->bi_flashsize = flash_init();
#endif
#ifdef CONFIG_CMD_NAND
puts("NAND: ");
nand_init();
#endif
#ifdef CONFIG_GENERIC_MMC
puts("MMC: ");
mmc_initialize(bd);
#endif
WATCHDOG_RESET (); WATCHDOG_RESET ();
env_relocate(); env_relocate();

View file

@ -1,5 +1,5 @@
/* /*
* linux/arch/ppc/kernel/traps.c * linux/arch/powerpc/kernel/traps.c
* *
* Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
* *

View file

@ -29,6 +29,7 @@ LIB = $(obj)lib$(CPU).a
START = start.o START = start.o
COBJS-y := cpu.o COBJS-y := cpu.o
COBJS-y += traps.o COBJS-y += traps.o
COBJS-y += common.o
COBJS-y += cpu_init.o COBJS-y += cpu_init.o
COBJS-y += fixed_sdram.o COBJS-y += fixed_sdram.o
COBJS-y += i2c.o COBJS-y += i2c.o

View file

@ -1,5 +1,5 @@
/* /*
* needed for arch/ppc/cpu/mpc512x/start.S * needed for arch/powerpc/cpu/mpc512x/start.S
* *
* These should be auto-generated * These should be auto-generated
*/ */

View file

@ -0,0 +1,25 @@
#include <common.h>
#include <asm/io.h>
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
#if defined(CONFIG_SYS_POST_WORD_ADDR)
# define _POST_ADDR (CONFIG_SYS_POST_WORD_ADDR)
#else
#error echo "No POST word address defined"
#endif
void post_word_store(ulong a)
{
volatile void *save_addr = (volatile void *)(_POST_ADDR);
out_be32(save_addr, a);
}
ulong post_word_load(void)
{
volatile void *save_addr = (volatile void *)(_POST_ADDR);
return in_be32(save_addr);
}
#endif /* CONFIG_POST || CONFIG_LOGBUFFER */

View file

@ -26,4 +26,4 @@ PLATFORM_CPPFLAGS += -DCONFIG_MPC512X -DCONFIG_E300 \
# Use default linker script. # Use default linker script.
# A board port can override this setting in board/*/config.mk # A board port can override this setting in board/*/config.mk
LDSCRIPT := $(SRCTREE)/arch/ppc/cpu/mpc512x/u-boot.lds LDSCRIPT := $(SRCTREE)/arch/powerpc/cpu/mpc512x/u-boot.lds

View file

@ -34,6 +34,8 @@
#include <video_fb.h> #include <video_fb.h>
#endif #endif
DECLARE_GLOBAL_DATA_PTR;
#ifdef CONFIG_FSL_DIU_LOGO_BMP #ifdef CONFIG_FSL_DIU_LOGO_BMP
extern unsigned int FSL_Logo_BMP[]; extern unsigned int FSL_Logo_BMP[];
#else #else
@ -65,10 +67,11 @@ void diu_set_pixel_clock(unsigned int pixclock)
char *valid_bmp(char *addr) char *valid_bmp(char *addr)
{ {
unsigned long h_addr; unsigned long h_addr;
bd_t *bd = gd->bd;
h_addr = simple_strtoul(addr, NULL, 16); h_addr = simple_strtoul(addr, NULL, 16);
if (h_addr < CONFIG_SYS_FLASH_BASE || if (h_addr < bd->bi_flashstart ||
h_addr >= (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_SIZE - 1)) { h_addr >= (bd->bi_flashstart + bd->bi_flashsize - 1)) {
printf("bmp addr %lx is not a valid flash address\n", h_addr); printf("bmp addr %lx is not a valid flash address\n", h_addr);
return 0; return 0;
} else if ((*(char *)(h_addr) != 'B') || (*(char *)(h_addr+1) != 'M')) { } else if ((*(char *)(h_addr) != 'B') || (*(char *)(h_addr+1) != 'M')) {
@ -84,8 +87,13 @@ int mpc5121_diu_init(void)
char *bmp = NULL; char *bmp = NULL;
char *bmp_env; char *bmp_env;
#if defined(CONFIG_VIDEO_XRES) & defined(CONFIG_VIDEO_YRES)
xres = CONFIG_VIDEO_XRES;
yres = CONFIG_VIDEO_YRES;
#else
xres = 1024; xres = 1024;
yres = 768; yres = 768;
#endif
pixel_format = 0x88883316; pixel_format = 0x88883316;
debug("mpc5121_diu_init\n"); debug("mpc5121_diu_init\n");

View file

@ -78,7 +78,7 @@ long int fixed_sdram(ddr512x_config_t *mddrc_config,
u32 *dram_init_seq, int seq_sz) u32 *dram_init_seq, int seq_sz)
{ {
volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR; volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
u32 msize = CONFIG_SYS_DDR_SIZE * 1024 * 1024; u32 msize = CONFIG_SYS_MAX_RAM_SIZE;
u32 msize_log2 = __ilog2(msize); u32 msize_log2 = __ilog2(msize);
u32 i; u32 i;
@ -91,7 +91,7 @@ long int fixed_sdram(ddr512x_config_t *mddrc_config,
} }
/* Initialize IO Control */ /* Initialize IO Control */
out_be32(&im->io_ctrl.io_control_mem, IOCTRL_MUX_DDR); out_be32(&im->io_ctrl.io_control_mem, CONFIG_SYS_IOCTRL_MUX_DDR);
/* Initialize DDR Local Window */ /* Initialize DDR Local Window */
out_be32(&im->sysconf.ddrlaw.bar, CONFIG_SYS_DDR_BASE & 0xFFFFF000); out_be32(&im->sysconf.ddrlaw.bar, CONFIG_SYS_DDR_BASE & 0xFFFFF000);
@ -148,5 +148,10 @@ long int fixed_sdram(ddr512x_config_t *mddrc_config,
out_be32(&im->mddrc.ddr_time_config0, mddrc_config->ddr_time_config0); out_be32(&im->mddrc.ddr_time_config0, mddrc_config->ddr_time_config0);
out_be32(&im->mddrc.ddr_sys_config, mddrc_config->ddr_sys_config); out_be32(&im->mddrc.ddr_sys_config, mddrc_config->ddr_sys_config);
msize = get_ram_size(CONFIG_SYS_DDR_BASE, CONFIG_SYS_MAX_RAM_SIZE);
/* Fix DDR Local Window for new size */
out_be32(&im->sysconf.ddrlaw.ar, __ilog2(msize) - 1);
sync_law(&im->sysconf.ddrlaw.ar);
return msize; return msize;
} }

View file

@ -0,0 +1,490 @@
/*
* (C) Copyright 2000 - 2010
* Wolfgang Denk, DENX Software Engineering, wd@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
*
* Based ont the MPC5200 PSC driver.
* Adapted for MPC512x by Jan Wrobel <wrr@semihalf.com>
*/
/*
* Minimal serial functions needed to use one of the PSC ports
* as serial console interface.
*/
#include <common.h>
#include <asm/io.h>
#include <asm/processor.h>
#include <serial.h>
DECLARE_GLOBAL_DATA_PTR;
#if defined(CONFIG_PSC_CONSOLE) || defined(CONFIG_SERIAL_MULTI)
static void fifo_init (volatile psc512x_t *psc)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
u32 tfsize, rfsize;
/* reset Rx & Tx fifo slice */
out_be32(&psc->rfcmd, PSC_FIFO_RESET_SLICE);
out_be32(&psc->tfcmd, PSC_FIFO_RESET_SLICE);
/* disable Tx & Rx FIFO interrupts */
out_be32(&psc->rfintmask, 0);
out_be32(&psc->tfintmask, 0);
#if defined(CONFIG_SERIAL_MULTI)
switch (((u32)psc & 0xf00) >> 8) {
case 0:
tfsize = FIFOC_PSC0_TX_SIZE | (FIFOC_PSC0_TX_ADDR << 16);
rfsize = FIFOC_PSC0_RX_SIZE | (FIFOC_PSC0_RX_ADDR << 16);
break;
case 1:
tfsize = FIFOC_PSC1_TX_SIZE | (FIFOC_PSC1_TX_ADDR << 16);
rfsize = FIFOC_PSC1_RX_SIZE | (FIFOC_PSC1_RX_ADDR << 16);
break;
case 2:
tfsize = FIFOC_PSC2_TX_SIZE | (FIFOC_PSC2_TX_ADDR << 16);
rfsize = FIFOC_PSC2_RX_SIZE | (FIFOC_PSC2_RX_ADDR << 16);
break;
case 3:
tfsize = FIFOC_PSC3_TX_SIZE | (FIFOC_PSC3_TX_ADDR << 16);
rfsize = FIFOC_PSC3_RX_SIZE | (FIFOC_PSC3_RX_ADDR << 16);
break;
case 4:
tfsize = FIFOC_PSC4_TX_SIZE | (FIFOC_PSC4_TX_ADDR << 16);
rfsize = FIFOC_PSC4_RX_SIZE | (FIFOC_PSC4_RX_ADDR << 16);
break;
case 5:
tfsize = FIFOC_PSC5_TX_SIZE | (FIFOC_PSC5_TX_ADDR << 16);
rfsize = FIFOC_PSC5_RX_SIZE | (FIFOC_PSC5_RX_ADDR << 16);
break;
case 6:
tfsize = FIFOC_PSC6_TX_SIZE | (FIFOC_PSC6_TX_ADDR << 16);
rfsize = FIFOC_PSC6_RX_SIZE | (FIFOC_PSC6_RX_ADDR << 16);
break;
case 7:
tfsize = FIFOC_PSC7_TX_SIZE | (FIFOC_PSC7_TX_ADDR << 16);
rfsize = FIFOC_PSC7_RX_SIZE | (FIFOC_PSC7_RX_ADDR << 16);
break;
case 8:
tfsize = FIFOC_PSC8_TX_SIZE | (FIFOC_PSC8_TX_ADDR << 16);
rfsize = FIFOC_PSC8_RX_SIZE | (FIFOC_PSC8_RX_ADDR << 16);
break;
case 9:
tfsize = FIFOC_PSC9_TX_SIZE | (FIFOC_PSC9_TX_ADDR << 16);
rfsize = FIFOC_PSC9_RX_SIZE | (FIFOC_PSC9_RX_ADDR << 16);
break;
case 10:
tfsize = FIFOC_PSC10_TX_SIZE | (FIFOC_PSC10_TX_ADDR << 16);
rfsize = FIFOC_PSC10_RX_SIZE | (FIFOC_PSC10_RX_ADDR << 16);
break;
case 11:
tfsize = FIFOC_PSC11_TX_SIZE | (FIFOC_PSC11_TX_ADDR << 16);
rfsize = FIFOC_PSC11_RX_SIZE | (FIFOC_PSC11_RX_ADDR << 16);
break;
default:
return;
}
#else
tfsize = CONSOLE_FIFO_TX_SIZE | (CONSOLE_FIFO_TX_ADDR << 16);
rfsize = CONSOLE_FIFO_RX_SIZE | (CONSOLE_FIFO_RX_ADDR << 16);
#endif
out_be32(&psc->tfsize, tfsize);
out_be32(&psc->rfsize, rfsize);
/* enable Tx & Rx FIFO slice */
out_be32(&psc->rfcmd, PSC_FIFO_ENABLE_SLICE);
out_be32(&psc->tfcmd, PSC_FIFO_ENABLE_SLICE);
out_be32(&im->fifoc.fifoc_cmd, FIFOC_DISABLE_CLOCK_GATE);
__asm__ volatile ("sync");
}
void serial_setbrg_dev(unsigned int idx)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
unsigned long baseclk, div;
unsigned long baudrate;
char buf[16];
char *br_env;
baudrate = gd->baudrate;
if (idx != CONFIG_PSC_CONSOLE) {
/* Allows setting baudrate for other serial devices
* on PSCx using environment. If not specified, use
* the same baudrate as for console.
*/
sprintf(buf, "psc%d_baudrate", idx);
br_env = getenv(buf);
if (br_env)
baudrate = simple_strtoul(br_env, NULL, 10);
debug("%s: idx %d, baudrate %d\n", __func__, idx, baudrate);
}
/* calculate divisor for setting PSC CTUR and CTLR registers */
baseclk = (gd->ips_clk + 8) / 16;
div = (baseclk + (baudrate / 2)) / baudrate;
out_8(&psc->ctur, (div >> 8) & 0xff);
out_8(&psc->ctlr, div & 0xff); /* set baudrate */
}
int serial_init_dev(unsigned int idx)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
#if defined(CONFIG_SERIAL_MULTI)
u32 reg;
reg = in_be32(&im->clk.sccr[0]);
out_be32(&im->clk.sccr[0], reg | CLOCK_SCCR1_PSC_EN(idx));
#endif
fifo_init (psc);
/* set MR register to point to MR1 */
out_8(&psc->command, PSC_SEL_MODE_REG_1);
/* disable Tx/Rx */
out_8(&psc->command, PSC_TX_DISABLE | PSC_RX_DISABLE);
/* choose the prescaler by 16 for the Tx/Rx clock generation */
out_be16(&psc->psc_clock_select, 0xdd00);
/* switch to UART mode */
out_be32(&psc->sicr, 0);
/* mode register points to mr1 */
/* configure parity, bit length and so on in mode register 1*/
out_8(&psc->mode, PSC_MODE_8_BITS | PSC_MODE_PARNONE);
/* now, mode register points to mr2 */
out_8(&psc->mode, PSC_MODE_1_STOPBIT);
/* set baudrate */
serial_setbrg_dev(idx);
/* disable all interrupts */
out_be16(&psc->psc_imr, 0);
/* reset and enable Rx/Tx */
out_8(&psc->command, PSC_RST_RX);
out_8(&psc->command, PSC_RST_TX);
out_8(&psc->command, PSC_RX_ENABLE | PSC_TX_ENABLE);
return 0;
}
int serial_uninit_dev(unsigned int idx)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
u32 reg;
out_8(&psc->command, PSC_RX_DISABLE | PSC_TX_DISABLE);
reg = in_be32(&im->clk.sccr[0]);
reg &= ~CLOCK_SCCR1_PSC_EN(idx);
out_be32(&im->clk.sccr[0], reg);
return 0;
}
void serial_putc_dev(unsigned int idx, const char c)
{
volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
if (c == '\n')
serial_putc_dev(idx, '\r');
/* Wait for last character to go. */
while (!(in_be16(&psc->psc_status) & PSC_SR_TXEMP))
;
out_8(&psc->tfdata_8, c);
}
void serial_putc_raw_dev(unsigned int idx, const char c)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
/* Wait for last character to go. */
while (!(in_be16(&psc->psc_status) & PSC_SR_TXEMP))
;
out_8(&psc->tfdata_8, c);
}
void serial_puts_dev(unsigned int idx, const char *s)
{
while (*s)
serial_putc_dev(idx, *s++);
}
int serial_getc_dev(unsigned int idx)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
/* Wait for a character to arrive. */
while (in_be32(&psc->rfstat) & PSC_FIFO_EMPTY)
;
return in_8(&psc->rfdata_8);
}
int serial_tstc_dev(unsigned int idx)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
return !(in_be32(&psc->rfstat) & PSC_FIFO_EMPTY);
}
void serial_setrts_dev(unsigned int idx, int s)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
if (s) {
/* Assert RTS (become LOW) */
out_8(&psc->op1, 0x1);
}
else {
/* Negate RTS (become HIGH) */
out_8(&psc->op0, 0x1);
}
}
int serial_getcts_dev(unsigned int idx)
{
volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
volatile psc512x_t *psc = (psc512x_t *) &im->psc[idx];
return (in_8(&psc->ip) & 0x1) ? 0 : 1;
}
#endif /* CONFIG_PSC_CONSOLE || CONFIG_SERIAL_MULTI */
#if defined(CONFIG_SERIAL_MULTI)
#define DECLARE_PSC_SERIAL_FUNCTIONS(port) \
int serial##port##_init(void) \
{ \
return serial_init_dev(port); \
} \
int serial##port##_uninit(void) \
{ \
return serial_uninit_dev(port); \
} \
void serial##port##_setbrg(void) \
{ \
serial_setbrg_dev(port); \
} \
int serial##port##_getc(void) \
{ \
return serial_getc_dev(port); \
} \
int serial##port##_tstc(void) \
{ \
return serial_tstc_dev(port); \
} \
void serial##port##_putc(const char c) \
{ \
serial_putc_dev(port, c); \
} \
void serial##port##_puts(const char *s) \
{ \
serial_puts_dev(port, s); \
}
#define INIT_PSC_SERIAL_STRUCTURE(port, name, bus) { \
name, \
bus, \
serial##port##_init, \
serial##port##_uninit, \
serial##port##_setbrg, \
serial##port##_getc, \
serial##port##_tstc, \
serial##port##_putc, \
serial##port##_puts, \
}
#if defined(CONFIG_SYS_PSC1)
DECLARE_PSC_SERIAL_FUNCTIONS(1);
struct serial_device serial1_device =
INIT_PSC_SERIAL_STRUCTURE(1, "psc1", "UART1");
#endif
#if defined(CONFIG_SYS_PSC3)
DECLARE_PSC_SERIAL_FUNCTIONS(3);
struct serial_device serial3_device =
INIT_PSC_SERIAL_STRUCTURE(3, "psc3", "UART3");
#endif
#if defined(CONFIG_SYS_PSC4)
DECLARE_PSC_SERIAL_FUNCTIONS(4);
struct serial_device serial4_device =
INIT_PSC_SERIAL_STRUCTURE(4, "psc4", "UART4");
#endif
#if defined(CONFIG_SYS_PSC6)
DECLARE_PSC_SERIAL_FUNCTIONS(6);
struct serial_device serial6_device =
INIT_PSC_SERIAL_STRUCTURE(6, "psc6", "UART6");
#endif
#else
void serial_setbrg(void)
{
serial_setbrg_dev(CONFIG_PSC_CONSOLE);
}
int serial_init(void)
{
return serial_init_dev(CONFIG_PSC_CONSOLE);
}
void serial_putc(const char c)
{
serial_putc_dev(CONFIG_PSC_CONSOLE, c);
}
void serial_putc_raw(const char c)
{
serial_putc_raw_dev(CONFIG_PSC_CONSOLE, c);
}
void serial_puts(const char *s)
{
serial_puts_dev(CONFIG_PSC_CONSOLE, s);
}
int serial_getc(void)
{
return serial_getc_dev(CONFIG_PSC_CONSOLE);
}
int serial_tstc(void)
{
return serial_tstc_dev(CONFIG_PSC_CONSOLE);
}
void serial_setrts(int s)
{
return serial_setrts_dev(CONFIG_PSC_CONSOLE, s);
}
int serial_getcts(void)
{
return serial_getcts_dev(CONFIG_PSC_CONSOLE);
}
#endif /* CONFIG_PSC_CONSOLE */
#if defined(CONFIG_SERIAL_MULTI)
#include <stdio_dev.h>
/*
* Routines for communication with serial devices over PSC
*/
/* Bitfield for initialized PSCs */
static unsigned int initialized;
struct stdio_dev *open_port(int num, int baudrate)
{
struct stdio_dev *port;
char env_var[16];
char env_val[10];
char name[7];
if (num < 0 || num > 11)
return NULL;
sprintf(name, "psc%d", num);
port = stdio_get_by_name(name);
if (!port)
return NULL;
if (!test_bit(num, &initialized)) {
sprintf(env_var, "psc%d_baudrate", num);
sprintf(env_val, "%d", baudrate);
setenv(env_var, env_val);
if (port->start())
return NULL;
set_bit(num, &initialized);
}
return port;
}
int close_port(int num)
{
struct stdio_dev *port;
int ret;
char name[7];
if (num < 0 || num > 11)
return -1;
sprintf(name, "psc%d", num);
port = stdio_get_by_name(name);
if (!port)
return -1;
ret = port->stop();
clear_bit(num, &initialized);
return ret;
}
int write_port(struct stdio_dev *port, char *buf)
{
if (!port || !buf)
return -1;
port->puts(buf);
return 0;
}
int read_port(struct stdio_dev *port, char *buf, int size)
{
int cnt = 0;
if (!port || !buf)
return -1;
if (!size)
return 0;
while (port->tstc()) {
buf[cnt++] = port->getc();
if (cnt > size)
break;
}
return cnt;
}
#endif /* CONFIG_SERIAL_MULTI */

View file

@ -49,7 +49,7 @@ SECTIONS
.plt : { *(.plt) } .plt : { *(.plt) }
.text : .text :
{ {
arch/ppc/cpu/mpc512x/start.o (.text) arch/powerpc/cpu/mpc512x/start.o (.text)
*(.text) *(.text)
*(.got1) *(.got1)
. = ALIGN(16); . = ALIGN(16);

View file

@ -25,11 +25,11 @@
# #
# #
# File: arch/ppc/cpu/mpc5xx/Makefile # File: arch/powerpc/cpu/mpc5xx/Makefile
# #
# Discription: Makefile to build mpc5xx cpu configuration. # Discription: Makefile to build mpc5xx cpu configuration.
# Will include top config.mk which itselfs # Will include top config.mk which itselfs
# uses the definitions made in arch/ppc/cpu/mpc5xx/config.mk # uses the definitions made in arch/powerpc/cpu/mpc5xx/config.mk
# #

View file

@ -33,4 +33,4 @@ PLATFORM_RELFLAGS += -fPIC -meabi
PLATFORM_CPPFLAGS += -DCONFIG_5xx -ffixed-r2 -mpowerpc -msoft-float PLATFORM_CPPFLAGS += -DCONFIG_5xx -ffixed-r2 -mpowerpc -msoft-float
# Use default linker script. Board port can override in board/*/config.mk # Use default linker script. Board port can override in board/*/config.mk
LDSCRIPT := $(SRCTREE)/arch/ppc/cpu/mpc5xx/u-boot.lds LDSCRIPT := $(SRCTREE)/arch/powerpc/cpu/mpc5xx/u-boot.lds

View file

@ -1,5 +1,5 @@
/* /*
* linux/arch/ppc/kernel/traps.c * linux/arch/powerpc/kernel/traps.c
* *
* Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
* *

View file

@ -55,7 +55,7 @@ SECTIONS
/* WARNING - the following is hand-optimized to fit within */ /* WARNING - the following is hand-optimized to fit within */
/* the sector layout of our flash chips! XXX FIXME XXX */ /* the sector layout of our flash chips! XXX FIXME XXX */
arch/ppc/cpu/mpc5xx/start.o (.text) arch/powerpc/cpu/mpc5xx/start.o (.text)
*(.text) *(.text)
*(.got1) *(.got1)

View file

@ -27,4 +27,4 @@ PLATFORM_CPPFLAGS += -DCONFIG_MPC5xxx -ffixed-r2 \
-mstring -mcpu=603e -mmultiple -mstring -mcpu=603e -mmultiple
# Use default linker script. Board port can override in board/*/config.mk # Use default linker script. Board port can override in board/*/config.mk
LDSCRIPT := $(SRCTREE)/arch/ppc/cpu/mpc5xxx/u-boot.lds LDSCRIPT := $(SRCTREE)/arch/powerpc/cpu/mpc5xxx/u-boot.lds

View file

@ -27,7 +27,7 @@
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
/* this section was ripped out of arch/ppc/syslib/mpc52xx_pic.c in the /* this section was ripped out of arch/powerpc/syslib/mpc52xx_pic.c in the
* Linux 2.6 source with the following copyright. * Linux 2.6 source with the following copyright.
* *
* Based on (well, mostly copied from) the code from the 2.4 kernel by * Based on (well, mostly copied from) the code from the 2.4 kernel by

View file

@ -21,7 +21,7 @@
* MA 02111-1307 USA * MA 02111-1307 USA
* *
* Hacked for MPC8260 by Murray.Jensen@cmst.csiro.au, 19-Oct-00, with * Hacked for MPC8260 by Murray.Jensen@cmst.csiro.au, 19-Oct-00, with
* changes based on the file arch/ppc/mbxboot/m8260_tty.c from the * changes based on the file arch/powerpc/mbxboot/m8260_tty.c from the
* Linux/PPC sources (m8260_tty.c had no copyright info in it). * Linux/PPC sources (m8260_tty.c had no copyright info in it).
* *
* Martin Krause, 8 Jun 2006 * Martin Krause, 8 Jun 2006
@ -340,6 +340,7 @@ struct serial_device serial0_device =
"serial0", "serial0",
"UART0", "UART0",
serial0_init, serial0_init,
NULL,
serial0_setbrg, serial0_setbrg,
serial0_getc, serial0_getc,
serial0_tstc, serial0_tstc,
@ -352,6 +353,7 @@ struct serial_device serial1_device =
"serial1", "serial1",
"UART1", "UART1",
serial1_init, serial1_init,
NULL,
serial1_setbrg, serial1_setbrg,
serial1_getc, serial1_getc,
serial1_tstc, serial1_tstc,

View file

@ -442,7 +442,7 @@ init_5xxx_core:
/* */ /* */
/* bits 15-19 correspond to addresses 0x00000000 to 0x0001F000 */ /* bits 15-19 correspond to addresses 0x00000000 to 0x0001F000 */
/* incrementing by 0x1000 each time. The code below is sort of */ /* incrementing by 0x1000 each time. The code below is sort of */
/* based on code in "flush_tlbs" from arch/ppc/kernel/head.S */ /* based on code in "flush_tlbs" from arch/powerpc/kernel/head.S */
/* */ /* */
/*--------------------------------------------------------------*/ /*--------------------------------------------------------------*/

View file

@ -1,5 +1,5 @@
/* /*
* linux/arch/ppc/kernel/traps.c * linux/arch/powerpc/kernel/traps.c
* *
* Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
* *

View file

@ -55,11 +55,11 @@ SECTIONS
/* WARNING - the following is hand-optimized to fit within */ /* WARNING - the following is hand-optimized to fit within */
/* the sector layout of our flash chips! XXX FIXME XXX */ /* the sector layout of our flash chips! XXX FIXME XXX */
arch/ppc/cpu/mpc5xxx/start.o (.text) arch/powerpc/cpu/mpc5xxx/start.o (.text)
arch/ppc/cpu/mpc5xxx/traps.o (.text) arch/powerpc/cpu/mpc5xxx/traps.o (.text)
lib/crc32.o (.text) lib/crc32.o (.text)
arch/ppc/lib/cache.o (.text) arch/powerpc/lib/cache.o (.text)
arch/ppc/lib/time.o (.text) arch/powerpc/lib/time.o (.text)
. = DEFINED(env_offset) ? env_offset : .; . = DEFINED(env_offset) ? env_offset : .;
common/env_embedded.o (.ppcenv) common/env_embedded.o (.ppcenv)

View file

@ -52,7 +52,7 @@ SECTIONS
.plt : { *(.plt) } .plt : { *(.plt) }
.text : .text :
{ {
arch/ppc/cpu/mpc5xxx/start.o (.text) arch/powerpc/cpu/mpc5xxx/start.o (.text)
*(.text) *(.text)
*(.got1) *(.got1)
. = ALIGN(16); . = ALIGN(16);

View file

@ -27,4 +27,4 @@ PLATFORM_CPPFLAGS += -DCONFIG_MPC8220 -ffixed-r2 \
-mstring -mcpu=603e -mmultiple -mstring -mcpu=603e -mmultiple
# Use default linker script. Board port can override in board/*/config.mk # Use default linker script. Board port can override in board/*/config.mk
LDSCRIPT := $(SRCTREE)/arch/ppc/cpu/mpc8220/u-boot.lds LDSCRIPT := $(SRCTREE)/arch/powerpc/cpu/mpc8220/u-boot.lds

View file

@ -419,7 +419,7 @@ init_8220_core:
/* */ /* */
/* bits 15-19 correspond to addresses 0x00000000 to 0x0001F000 */ /* bits 15-19 correspond to addresses 0x00000000 to 0x0001F000 */
/* incrementing by 0x1000 each time. The code below is sort of */ /* incrementing by 0x1000 each time. The code below is sort of */
/* based on code in "flush_tlbs" from arch/ppc/kernel/head.S */ /* based on code in "flush_tlbs" from arch/powerpc/kernel/head.S */
/* */ /* */
/*--------------------------------------------------------------*/ /*--------------------------------------------------------------*/

Some files were not shown because too many files have changed in this diff Show more