X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fcommon.h;h=9a19001c18d841a6a3af04b16b81666bca9c3d5f;hb=3b0ff842bf70baf1f370c8e76e8f33a0f9904c1b;hp=474ea75944cbd5ef8dc4808f4a6a9f23c36b72ac;hpb=15647dc7fd86bbaeb68740929ecb9f8473c7ceae;p=u-boot diff --git a/include/common.h b/include/common.h index 474ea75944..9a19001c18 100644 --- a/include/common.h +++ b/include/common.h @@ -1,5 +1,5 @@ /* - * (C) Copyright 2000-2002 + * (C) Copyright 2000-2004 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -12,7 +12,7 @@ * * 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 + * 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 @@ -29,7 +29,7 @@ typedef unsigned char uchar; typedef volatile unsigned long vu_long; -typedef volatile unsigned short vu_short; +typedef volatile unsigned short vu_short; typedef volatile unsigned char vu_char; #include @@ -41,27 +41,52 @@ typedef volatile unsigned char vu_char; #if defined(CONFIG_PCI) && defined(CONFIG_440) #include #endif -#ifdef CONFIG_8xx +#if defined(CONFIG_8xx) #include -#ifdef CONFIG_MPC860 -#define CONFIG_MPC86x 1 +#if defined(CONFIG_MPC852) || defined(CONFIG_MPC852T) || \ + defined(CONFIG_MPC859) || defined(CONFIG_MPC859T) || \ + defined(CONFIG_MPC859DSL) || \ + defined(CONFIG_MPC866) || defined(CONFIG_MPC866T) || \ + defined(CONFIG_MPC866P) +# define CONFIG_MPC866_FAMILY 1 +#elif defined(CONFIG_MPC870) \ + || defined(CONFIG_MPC875) \ + || defined(CONFIG_MPC880) \ + || defined(CONFIG_MPC885) +# define CONFIG_MPC885_FAMILY 1 #endif -#ifdef CONFIG_MPC860T -#define CONFIG_MPC86x 1 -#endif -#if defined(CONFIG_MPC866P) || \ - defined(CONFIG_MPC866T) || \ - defined(CONFIG_MPC859T) || \ - defined(CONFIG_MPC859DSL) || \ - defined(CONFIG_MPC852T) -#define CONFIG_MPC866_et_al 1 -#define CONFIG_MPC86x 1 +#if defined(CONFIG_MPC860) \ + || defined(CONFIG_MPC860T) \ + || defined(CONFIG_MPC866_FAMILY) \ + || defined(CONFIG_MPC885_FAMILY) +# define CONFIG_MPC86x 1 #endif #elif defined(CONFIG_5xx) #include +#elif defined(CONFIG_MPC5xxx) +#include +#elif defined(CONFIG_MPC8220) +#include #elif defined(CONFIG_8260) +#if defined(CONFIG_MPC8247) \ + || defined(CONFIG_MPC8248) \ + || defined(CONFIG_MPC8271) \ + || defined(CONFIG_MPC8272) +#define CONFIG_MPC8272_FAMILY 1 +#endif +#if defined(CONFIG_MPC8272_FAMILY) +#define CONFIG_MPC8260 1 +#endif #include #endif +#ifdef CONFIG_MPC85xx +#include +#include +#endif +#ifdef CONFIG_MPC83XX +#include +#include +#endif #ifdef CONFIG_4xx #include #endif @@ -84,19 +109,20 @@ typedef volatile unsigned char vu_char; #define debugX(level,fmt,args...) #endif /* DEBUG */ -typedef void (interrupt_handler_t)(void *); +typedef void (interrupt_handler_t)(void *); -#include /* boot information for Linux kernel */ +#include /* boot information for Linux kernel */ #include /* global data used for startup functions */ /* * enable common handling for all TQM8xxL/M boards: - * - CONFIG_TQM8xxM will be defined for all TQM8xxM boards + * - CONFIG_TQM8xxM will be defined for all TQM8xxM and TQM885D boards * - CONFIG_TQM8xxL will be defined for all TQM8xxL _and_ TQM8xxM boards */ #if defined(CONFIG_TQM823M) || defined(CONFIG_TQM850M) || \ defined(CONFIG_TQM855M) || defined(CONFIG_TQM860M) || \ - defined(CONFIG_TQM862M) + defined(CONFIG_TQM862M) || defined(CONFIG_TQM866M) || \ + defined(CONFIG_TQM885D) # ifndef CONFIG_TQM8xxM # define CONFIG_TQM8xxM # endif @@ -109,6 +135,17 @@ typedef void (interrupt_handler_t)(void *); # endif #endif +#ifndef CONFIG_SERIAL_MULTI + +#if defined(CONFIG_8xx_CONS_SMC1) || defined(CONFIG_8xx_CONS_SMC2) \ + || defined(CONFIG_8xx_CONS_SCC1) || defined(CONFIG_8xx_CONS_SCC2) \ + || defined(CONFIG_8xx_CONS_SCC3) || defined(CONFIG_8xx_CONS_SCC4) + +#define CONFIG_SERIAL_MULTI 1 + +#endif + +#endif /* CONFIG_SERIAL_MULTI */ /* * General Purpose Utilities @@ -126,7 +163,7 @@ typedef void (interrupt_handler_t)(void *); * Function Prototypes */ -#if CONFIG_SERIAL_SOFTWARE_FIFO +#ifdef CONFIG_SERIAL_SOFTWARE_FIFO void serial_buffered_init (void); void serial_buffered_putc (const char); void serial_buffered_puts (const char *); @@ -134,11 +171,11 @@ int serial_buffered_getc (void); int serial_buffered_tstc (void); #endif /* CONFIG_SERIAL_SOFTWARE_FIFO */ -void hang (void) __attribute__ ((noreturn)); +void hang (void) __attribute__ ((noreturn)); /* */ long int initdram (int); -int display_options (void); +int display_options (void); void print_size (ulong, const char *); /* common/main.c */ @@ -167,41 +204,50 @@ int autoscript (ulong addr); /* common/cmd_bootm.c */ void print_image_hdr (image_header_t *hdr); -extern ulong load_addr; /* Default Load Address */ +extern ulong load_addr; /* Default Load Address */ /* common/cmd_nvedit.c */ int env_init (void); void env_relocate (void); -char *getenv (uchar *); -int getenv_r (uchar *name, uchar *buf, unsigned len); -int saveenv (void); +char *getenv (char *); +int getenv_r (char *name, char *buf, unsigned len); +int saveenv (void); #ifdef CONFIG_PPC /* ARM version to be fixed! */ void inline setenv (char *, char *); #else -void setenv (char *, char *); +void setenv (char *, char *); #endif /* CONFIG_PPC */ #ifdef CONFIG_ARM +# include +# include # include /* ARM version to be fixed! */ #endif /* CONFIG_ARM */ #ifdef CONFIG_I386 /* x86 version to be fixed! */ # include #endif /* CONFIG_I386 */ -void pci_init (void); -void pci_init_board(void); -void pciinfo (int, int); +#ifdef CONFIG_AUTO_COMPLETE +int env_complete(char *var, int maxv, char *cmdv[], int maxsz, char *buf); +#endif + +void pci_init (void); +void pci_init_board(void); +void pciinfo (int, int); #if defined(CONFIG_PCI) && defined(CONFIG_440) # if defined(CFG_PCI_PRE_INIT) - int pci_pre_init (struct pci_controller * ); + int pci_pre_init (struct pci_controller * ); # endif # if defined(CFG_PCI_TARGET_INIT) - void pci_target_init (struct pci_controller *); + void pci_target_init (struct pci_controller *); # endif # if defined(CFG_PCI_MASTER_INIT) - void pci_master_init (struct pci_controller *); + void pci_master_init (struct pci_controller *); # endif - int is_pci_host (struct pci_controller *); + int is_pci_host (struct pci_controller *); +#if defined(CONFIG_440SPE) + void pcie_setup_hoses(void); +#endif #endif int misc_init_f (void); @@ -210,9 +256,12 @@ int misc_init_r (void); /* common/exports.c */ void jumptable_init(void); +/* common/memsize.c */ +int get_ram_size (volatile long *, long); + /* $(BOARD)/$(BOARD).c */ void reset_phy (void); -void fdc_hw_init (void); +void fdc_hw_init (void); /* $(BOARD)/eeprom.c */ void eeprom_init (void); @@ -239,7 +288,7 @@ extern void pic_write (uchar reg, uchar val); #if defined(CONFIG_SPI) extern void spi_init_f (void); extern void spi_init_r (void); -extern ssize_t spi_read (uchar *, int, uchar *, int); +extern ssize_t spi_read (uchar *, int, uchar *, int); extern ssize_t spi_write (uchar *, int, uchar *, int); #endif @@ -247,6 +296,8 @@ extern ssize_t spi_write (uchar *, int, uchar *, int); void rpxclassic_init (void); #endif +void rpxlite_init (void); + #ifdef CONFIG_MBX /* $(BOARD)/mbx8xx.c */ void mbx_init (void); @@ -254,7 +305,9 @@ void board_serial_init (void); void board_ether_init (void); #endif -#if defined(CONFIG_RPXCLASSIC) || defined(CONFIG_MBX) || defined(CONFIG_IAD210) +#if defined(CONFIG_RPXCLASSIC) || defined(CONFIG_MBX) || \ + defined(CONFIG_IAD210) || defined(CONFIG_XPEDITE1K) || \ + defined(CONFIG_METROBOX) || defined(CONFIG_KAREF) void board_get_enetaddr (uchar *addr); #endif @@ -273,9 +326,10 @@ void perform_soft_reset(void); void load_sernum_ethaddr (void); /* $(BOARD)/$(BOARD).c */ -int board_pre_init (void); -int board_post_init (void); +int board_early_init_f (void); +int board_late_init (void); int board_postclk_init (void); /* after clocks/timebase, before env/serial */ +int board_early_init_r (void); void board_poweroff (void); #if defined(CFG_DRAM_TEST) @@ -283,11 +337,16 @@ int testdram(void); #endif /* CFG_DRAM_TEST */ /* $(CPU)/start.S */ -#if defined(CONFIG_5xx) || \ +#if defined(CONFIG_5xx) || \ defined(CONFIG_8xx) uint get_immr (uint); #endif +uint get_pir (void); +#if defined(CONFIG_MPC5xxx) +uint get_svr (void); +#endif uint get_pvr (void); +uint get_svr (void); uint rd_ic_cst (void); void wr_ic_cst (uint); void wr_ic_adr (uint); @@ -304,23 +363,28 @@ void relocate_code (ulong, gd_t *, ulong); ulong get_endaddr (void); void trap_init (ulong); #if defined (CONFIG_4xx) || \ + defined (CONFIG_MPC5xxx) || \ defined (CONFIG_74xx_7xx) || \ defined (CONFIG_74x) || \ defined (CONFIG_75x) || \ - defined (CONFIG_74xx) -unsigned char in8(unsigned int); -void out8(unsigned int, unsigned char); -unsigned short in16(unsigned int); -unsigned short in16r(unsigned int); -void out16(unsigned int, unsigned short value); -void out16r(unsigned int, unsigned short value); -unsigned long in32(unsigned int); -unsigned long in32r(unsigned int); -void out32(unsigned int, unsigned long value); -void out32r(unsigned int, unsigned long value); -void ppcDcbf(unsigned long value); -void ppcDcbi(unsigned long value); -void ppcSync(void); + defined (CONFIG_74xx) || \ + defined (CONFIG_MPC8220) || \ + defined (CONFIG_MPC85xx) || \ + defined (CONFIG_MPC83XX) +unsigned char in8(unsigned int); +void out8(unsigned int, unsigned char); +unsigned short in16(unsigned int); +unsigned short in16r(unsigned int); +void out16(unsigned int, unsigned short value); +void out16r(unsigned int, unsigned short value); +unsigned long in32(unsigned int); +unsigned long in32r(unsigned int); +void out32(unsigned int, unsigned long value); +void out32r(unsigned int, unsigned long value); +void ppcDcbf(unsigned long value); +void ppcDcbi(unsigned long value); +void ppcSync(void); +void ppcDcbz(unsigned long value); #endif /* $(CPU)/cpu.c */ @@ -329,60 +393,102 @@ int checkicache (void); int checkdcache (void); void upmconfig (unsigned int, unsigned int *, unsigned int); ulong get_tbclk (void); +void reset_cpu (ulong addr); /* $(CPU)/serial.c */ int serial_init (void); +void serial_addr (unsigned int); void serial_setbrg (void); void serial_putc (const char); +void serial_putc_raw(const char); void serial_puts (const char *); -void serial_addr (unsigned int); int serial_getc (void); int serial_tstc (void); +void _serial_setbrg (const int); +void _serial_putc (const char, const int); +void _serial_putc_raw(const char, const int); +void _serial_puts (const char *, const int); +int _serial_getc (const int); +int _serial_tstc (const int); + /* $(CPU)/speed.c */ int get_clocks (void); +int get_clocks_866 (void); +int sdram_adjust_866 (void); +int adjust_sdram_tbs_8xx (void); #if defined(CONFIG_8260) int prt_8260_clks (void); -#endif -#if defined(CONFIG_MPC5XXX) +#elif defined(CONFIG_MPC83XX) +int print_clock_conf(void); +#elif defined(CONFIG_MPC5xxx) int prt_mpc5xxx_clks (void); #endif +#if defined(CONFIG_MPC8220) +int prt_mpc8220_clks (void); +#endif #ifdef CONFIG_4xx ulong get_OPB_freq (void); ulong get_PCI_freq (void); #endif -#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) +#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_LH7A40X) ulong get_FCLK (void); ulong get_HCLK (void); ulong get_PCLK (void); ulong get_UCLK (void); #endif +#if defined(CONFIG_LH7A40X) +ulong get_PLLCLK (void); +#endif +#if defined CONFIG_INCA_IP +uint incaip_get_cpuclk (void); +#endif +#if defined(CONFIG_IMX) +ulong get_systemPLLCLK(void); +ulong get_FCLK(void); +ulong get_HCLK(void); +ulong get_BCLK(void); +ulong get_PERCLK1(void); +ulong get_PERCLK2(void); +ulong get_PERCLK3(void); +#endif ulong get_bus_freq (ulong); +#if defined(CONFIG_MPC85xx) +typedef MPC85xx_SYS_INFO sys_info_t; +void get_sys_info ( sys_info_t * ); +#endif + #if defined(CONFIG_4xx) || defined(CONFIG_IOP480) # if defined(CONFIG_440) typedef PPC440_SYS_INFO sys_info_t; +# if defined(CONFIG_440SPE) + unsigned long determine_sysper(void); + unsigned long determine_pci_clock_per(void); + int ppc440spe_revB(void); +# endif # else typedef PPC405_SYS_INFO sys_info_t; # endif -void get_sys_info ( sys_info_t * ); +void get_sys_info ( sys_info_t * ); #endif /* $(CPU)/cpu_init.c */ #if defined(CONFIG_8xx) || defined(CONFIG_8260) void cpu_init_f (volatile immap_t *immr); #endif -#ifdef CONFIG_4xx +#if defined(CONFIG_4xx) || defined(CONFIG_MPC85xx) || defined(CONFIG_MCF52x2) void cpu_init_f (void); #endif + int cpu_init_r (void); #if defined(CONFIG_8260) int prt_8260_rsr (void); #endif /* $(CPU)/interrupts.c */ -int interrupt_init (void); -void timer_interrupt (struct pt_regs *); +int interrupt_init (void); +void timer_interrupt (struct pt_regs *); void external_interrupt (struct pt_regs *); void irq_install_handler(int, interrupt_handler_t *, void *); void irq_free_handler (int); @@ -416,7 +522,7 @@ ulong vfd_setmem (ulong); /* $(CPU)/.../video.c */ ulong video_setmem (ulong); -/* ppc/cache.c */ +/* lib_$(ARCH)/cache.c */ void flush_cache (unsigned long, unsigned long); @@ -432,10 +538,13 @@ int init_timebase (void); /* lib_generic/vsprintf.c */ ulong simple_strtoul(const char *cp,char **endp,unsigned int base); +#ifdef CFG_64BIT_VSPRINTF +unsigned long long simple_strtoull(const char *cp,char **endp,unsigned int base); +#endif long simple_strtol(const char *cp,char **endp,unsigned int base); void panic(const char *fmt, ...); int sprintf(char * buf, const char *fmt, ...); -int vsprintf(char *buf, const char *fmt, va_list args); +int vsprintf(char *buf, const char *fmt, va_list args); /* lib_generic/crc32.c */ ulong crc32 (ulong, const unsigned char *, uint); @@ -493,4 +602,9 @@ int pcmcia_init (void); void show_boot_progress (int status); #endif +#ifdef CONFIG_INIT_CRITICAL +#error CONFIG_INIT_CRITICAL is deprecated! +#error Read section CONFIG_SKIP_LOWLEVEL_INIT in README. +#endif + #endif /* __COMMON_H_ */