]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - include/common.h
Patch by Travis Sawyer, 30 Dec 2003:
[people/ms/u-boot.git] / include / common.h
index a950cdcc40cbebddd60a74f5b31cc00ca74f2f1e..fed04a9a73feba8d2d8cb80ef4d6c49debeddc40 100644 (file)
@@ -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 <config.h>
@@ -41,16 +41,40 @@ typedef volatile unsigned char      vu_char;
 #if defined(CONFIG_PCI) && defined(CONFIG_440)
 #include <pci.h>
 #endif
-#ifdef CONFIG_8xx
+#if defined(CONFIG_8xx)
 #include <asm/8xx_immap.h>
+#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_et_al 1
+#elif defined(CONFIG_MPC870) \
+   || defined(CONFIG_MPC875) \
+   || defined(CONFIG_MPC880) \
+   || defined(CONFIG_MPC885)
+# define CONFIG_DUET   1
+#endif
+#if   defined(CONFIG_MPC860)      \
+   || defined(CONFIG_MPC860T)     \
+   || defined(CONFIG_MPC866_et_al) \
+   || defined(CONFIG_DUET)
+# define CONFIG_MPC86x 1
+#endif
+#elif defined(CONFIG_5xx)
+#include <asm/5xx_immap.h>
 #elif defined(CONFIG_8260)
 #include <asm/immap_8260.h>
 #endif
+#ifdef CONFIG_MPC85xx
+#include <mpc85xx.h>
+#include <asm/immap_85xx.h>
+#endif
 #ifdef CONFIG_4xx
 #include <ppc4xx.h>
 #endif
 #ifdef CONFIG_HYMOD
-#include <asm/hymod.h>
+#include <board/hymod/hymod.h>
 #endif
 #ifdef CONFIG_ARM
 #define asmlinkage     /* nothing */
@@ -62,24 +86,50 @@ typedef volatile unsigned char      vu_char;
 
 #ifdef DEBUG
 #define debug(fmt,args...)     printf (fmt ,##args)
+#define debugX(level,fmt,args...) if (DEBUG>=level) printf(fmt,##args);
 #else
 #define debug(fmt,args...)
+#define debugX(level,fmt,args...)
 #endif /* DEBUG */
 
-typedef        void (interrupt_handler_t)(void *);
+typedef void (interrupt_handler_t)(void *);
 
-#include <asm/u-boot.h>        /* boot information for Linux kernel */
+#include <asm/u-boot.h> /* boot information for Linux kernel */
 #include <asm/global_data.h>   /* global data used for startup functions */
 
-/* enable common handling for all TQM8xxL boards */
+/*
+ * enable common handling for all TQM8xxL/M boards:
+ * - CONFIG_TQM8xxM will be defined for all TQM8xxM 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_TQM866M)
+# ifndef CONFIG_TQM8xxM
+#  define CONFIG_TQM8xxM
+# endif
+#endif
 #if defined(CONFIG_TQM823L) || defined(CONFIG_TQM850L) || \
-    defined(CONFIG_TQM855L) || defined(CONFIG_TQM860L)
+    defined(CONFIG_TQM855L) || defined(CONFIG_TQM860L) || \
+    defined(CONFIG_TQM862L) || defined(CONFIG_TQM8xxM)
 # ifndef CONFIG_TQM8xxL
 #  define CONFIG_TQM8xxL
 # endif
 #endif
 
 
+/*
+ * General Purpose Utilities
+ */
+#define min(X, Y)                              \
+       ({ typeof (X) __x = (X), __y = (Y);     \
+               (__x < __y) ? __x : __y; })
+
+#define max(X, Y)                              \
+       ({ typeof (X) __x = (X), __y = (Y);     \
+               (__x > __y) ? __x : __y; })
+
+
 /*
  * Function Prototypes
  */
@@ -92,20 +142,21 @@ 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 */
 void   main_loop       (void);
 int    run_command     (const char *cmd, int flag);
 int    readline        (const char *const prompt);
+void   init_cmd_timeout(void);
 void   reset_cmd_timeout(void);
 
-/* common/board.c */
+/* lib_$(ARCH)/board.c */
 void   board_init_f  (ulong);
 void   board_init_r  (gd_t *, ulong);
 int    checkboard    (void);
@@ -113,58 +164,73 @@ int       checkflash    (void);
 int    checkdram     (void);
 char * strmhz(char *buf, long hz);
 int    last_stage_init(void);
+extern ulong monitor_flash_len;
 
 /* common/flash.c */
 void flash_perror (int);
 
+/* common/cmd_autoscript.c */
+int    autoscript (ulong addr);
+
 /* common/cmd_bootm.c */
-void print_image_hdr (image_header_t *hdr);
+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 *);
+char   *getenv      (uchar *);
 int    getenv_r     (uchar *name, uchar *buf, unsigned len);
-int    saveenv      (void);
+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 <asm/setup.h>
 # include <asm/u-boot-arm.h>   /* ARM version to be fixed! */
 #endif /* CONFIG_ARM */
 #ifdef CONFIG_I386             /* x86 version to be fixed! */
-# include <asm/ppcboot-i386.h>  
+# include <asm/u-boot-i386.h>
 #endif /* CONFIG_I386 */
 
-void    pci_init      (void);
-void    pciinfo       (int, int);
+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 *);
 #endif
 
 int    misc_init_f   (void);
 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);
+#ifndef CONFIG_SPI
+int  eeprom_probe (unsigned dev_addr, unsigned offset);
+#endif
 int  eeprom_read  (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt);
 int  eeprom_write (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt);
 #ifdef CONFIG_LWMON
@@ -182,10 +248,10 @@ extern void  pic_write (uchar reg, uchar val);
 # define CFG_DEF_EEPROM_ADDR CFG_I2C_EEPROM_ADDR
 #endif /* CONFIG_SPI || !defined(CFG_I2C_EEPROM_ADDR) */
 
-#if defined(CONFIG_PCU_E) || defined(CONFIG_CCM)
+#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
 
@@ -200,7 +266,8 @@ 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)
 void   board_get_enetaddr (uchar *addr);
 #endif
 
@@ -219,8 +286,10 @@ void  perform_soft_reset(void);
 void   load_sernum_ethaddr (void);
 
 /* $(BOARD)/$(BOARD).c */
-int board_pre_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)
@@ -228,9 +297,11 @@ int testdram(void);
 #endif /* CFG_DRAM_TEST */
 
 /* $(CPU)/start.S */
-#ifdef CONFIG_8xx
+#if defined(CONFIG_5xx) || \
+    defined(CONFIG_8xx)
 uint   get_immr      (uint);
 #endif
+uint   get_pir       (void);
 uint   get_pvr       (void);
 uint   rd_ic_cst     (void);
 void   wr_ic_cst     (uint);
@@ -252,19 +323,19 @@ void      trap_init     (ulong);
     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);
+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);
 #endif
 
 /* $(CPU)/cpu.c */
@@ -285,9 +356,14 @@ int        serial_tstc   (void);
 
 /* $(CPU)/speed.c */
 int    get_clocks (void);
+int    get_clocks_866 (void);
+int    sdram_adjust_866 (void);
 #if defined(CONFIG_8260)
 int    prt_8260_clks (void);
 #endif
+#if defined(CONFIG_MPC5XXX)
+int    prt_mpc5xxx_clks (void);
+#endif
 #ifdef CONFIG_4xx
 ulong  get_OPB_freq (void);
 ulong  get_PCI_freq (void);
@@ -298,22 +374,30 @@ ulong     get_HCLK (void);
 ulong  get_PCLK (void);
 ulong  get_UCLK (void);
 #endif
+#if defined CONFIG_INCA_IP
+uint   incaip_get_cpuclk (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;
 #  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)
 void   cpu_init_f    (void);
 #endif
 int    cpu_init_r    (void);
@@ -322,8 +406,8 @@ 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);
@@ -341,6 +425,9 @@ uint        dpram_alloc(uint size);
 uint   dpram_alloc_align(uint size,uint align);
 void   post_word_store (ulong);
 ulong  post_word_load (void);
+void   bootcount_store (ulong);
+ulong  bootcount_load (void);
+#define BOOTCOUNT_MAGIC                0xB001C041
 
 /* $(CPU)/.../<eth> */
 void mii_init (void);
@@ -357,30 +444,29 @@ ulong     video_setmem (ulong);
 /* ppc/cache.c */
 void   flush_cache   (unsigned long, unsigned long);
 
-/* ppc/ticks.S */
+
+/* lib_$(ARCH)/ticks.S */
 unsigned long long get_ticks(void);
 void   wait_ticks    (unsigned long);
 
-/* ppc/time.c */
+/* lib_$(ARCH)/time.c */
 void   udelay        (unsigned long);
 ulong  usec2ticks    (unsigned long usec);
 ulong  ticks2usec    (unsigned long ticks);
 int    init_timebase (void);
 
-/* ppc/vsprintf.c */
+/* lib_generic/vsprintf.c */
 ulong  simple_strtoul(const char *cp,char **endp,unsigned int base);
 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);
 
-/* ppc/crc32.c */
+/* lib_generic/crc32.c */
 ulong crc32 (ulong, const unsigned char *, uint);
 ulong crc32_no_comp (ulong, const unsigned char *, uint);
 
 /* common/console.c */
-extern void **syscall_tbl;
-
 int    console_init_f(void);   /* Before relocation; uses the serial  stuff    */
 int    console_init_r(void);   /* After  relocation; uses the console stuff    */
 int    console_assign (int file, char *devname);       /* Assign the console   */
@@ -404,6 +490,7 @@ int tstc(void);
 void   putc(const char c);
 void   puts(const char *s);
 void   printf(const char *fmt, ...);
+void   vprintf(const char *fmt, va_list args);
 
 /* stderr */
 #define eputc(c)               fputc(stderr, c)