home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-mips / lasat / lasat.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  7.5 KB  |  256 lines

  1. /*
  2.  * lasat.h
  3.  *
  4.  * Thomas Horsten <thh@lasat.com>
  5.  * Copyright (C) 2000 LASAT Networks A/S.
  6.  *
  7.  *  This program is free software; you can distribute it and/or modify it
  8.  *  under the terms of the GNU General Public License (Version 2) as
  9.  *  published by the Free Software Foundation.
  10.  *
  11.  *  This program is distributed in the hope it will be useful, but WITHOUT
  12.  *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13.  *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14.  *  for more details.
  15.  *
  16.  *  You should have received a copy of the GNU General Public License along
  17.  *  with this program; if not, write to the Free Software Foundation, Inc.,
  18.  *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
  19.  *
  20.  * Configuration for LASAT boards, loads the appropriate include files.
  21.  */
  22. #ifndef _LASAT_H
  23. #define _LASAT_H
  24.  
  25. #ifndef _LANGUAGE_ASSEMBLY
  26.  
  27. extern struct lasat_misc {
  28.     volatile u32 *reset_reg;
  29.     volatile u32 *flash_wp_reg;
  30.     u32 flash_wp_bit;
  31. } *lasat_misc;
  32.  
  33. enum lasat_mtdparts {
  34.     LASAT_MTD_BOOTLOADER,
  35.     LASAT_MTD_SERVICE,
  36.     LASAT_MTD_NORMAL,
  37.     LASAT_MTD_CONFIG,
  38.     LASAT_MTD_FS,
  39.     LASAT_MTD_LAST
  40. };
  41.  
  42. /*
  43.  * The format of the data record in the EEPROM.
  44.  * See Documentation/LASAT/eeprom.txt for a detailed description
  45.  * of the fields in this struct, and the LASAT Hardware Configuration
  46.  * field specification for a detailed description of the config
  47.  * field.
  48.  */
  49. #include <linux/types.h>
  50.  
  51. #define LASAT_EEPROM_VERSION 7
  52. struct lasat_eeprom_struct {
  53.     unsigned int  version;
  54.     unsigned int  cfg[3];
  55.     unsigned char hwaddr[6];
  56.     unsigned char print_partno[12];
  57.     unsigned char term0;
  58.     unsigned char print_serial[14];
  59.     unsigned char term1;
  60.     unsigned char prod_partno[12];
  61.     unsigned char term2;
  62.     unsigned char prod_serial[14];
  63.     unsigned char term3;
  64.     unsigned char passwd_hash[16];
  65.     unsigned char pwdnull;
  66.     unsigned char vendid;
  67.     unsigned char ts_ref;
  68.     unsigned char ts_signoff;
  69.     unsigned char reserved[11];
  70.     unsigned char debugaccess;
  71.     unsigned short prid;
  72.     unsigned int  serviceflag;
  73.     unsigned int  ipaddr;
  74.     unsigned int  netmask;
  75.     unsigned int  crc32;
  76. };
  77.  
  78. struct lasat_eeprom_struct_pre7 {
  79.     unsigned int  version;
  80.     unsigned int  flags[3];
  81.     unsigned char hwaddr0[6];
  82.     unsigned char hwaddr1[6];
  83.     unsigned char print_partno[9];
  84.     unsigned char term0;
  85.     unsigned char print_serial[14];
  86.     unsigned char term1;
  87.     unsigned char prod_partno[9];
  88.     unsigned char term2;
  89.     unsigned char prod_serial[14];
  90.     unsigned char term3;
  91.     unsigned char passwd_hash[24];
  92.     unsigned char pwdnull;
  93.     unsigned char vendor;
  94.     unsigned char ts_ref;
  95.     unsigned char ts_signoff;
  96.     unsigned char reserved[6];
  97.     unsigned int  writecount;
  98.     unsigned int  ipaddr;
  99.     unsigned int  netmask;
  100.     unsigned int  crc32;
  101. };
  102.  
  103. /* Configuration descriptor encoding - see the doc for details */
  104.  
  105. #define LASAT_W0_DSCTYPE(v)        ( ( (v)         ) & 0xf )
  106. #define LASAT_W0_BMID(v)        ( ( (v) >> 0x04 ) & 0xf )
  107. #define LASAT_W0_CPUTYPE(v)        ( ( (v) >> 0x08 ) & 0xf )
  108. #define LASAT_W0_BUSSPEED(v)        ( ( (v) >> 0x0c ) & 0xf )
  109. #define LASAT_W0_CPUCLK(v)        ( ( (v) >> 0x10 ) & 0xf )
  110. #define LASAT_W0_SDRAMBANKSZ(v)        ( ( (v) >> 0x14 ) & 0xf )
  111. #define LASAT_W0_SDRAMBANKS(v)        ( ( (v) >> 0x18 ) & 0xf )
  112. #define LASAT_W0_L2CACHE(v)        ( ( (v) >> 0x1c ) & 0xf )
  113.  
  114. #define LASAT_W1_EDHAC(v)        ( ( (v)         ) & 0xf )
  115. #define LASAT_W1_HIFN(v)        ( ( (v) >> 0x04 ) & 0x1 )
  116. #define LASAT_W1_ISDN(v)        ( ( (v) >> 0x05 ) & 0x1 )
  117. #define LASAT_W1_IDE(v)            ( ( (v) >> 0x06 ) & 0x1 )
  118. #define LASAT_W1_HDLC(v)        ( ( (v) >> 0x07 ) & 0x1 )
  119. #define LASAT_W1_USVERSION(v)        ( ( (v) >> 0x08 ) & 0x1 )
  120. #define LASAT_W1_4MACS(v)        ( ( (v) >> 0x09 ) & 0x1 )
  121. #define LASAT_W1_EXTSERIAL(v)        ( ( (v) >> 0x0a ) & 0x1 )
  122. #define LASAT_W1_FLASHSIZE(v)        ( ( (v) >> 0x0c ) & 0xf )
  123. #define LASAT_W1_PCISLOTS(v)        ( ( (v) >> 0x10 ) & 0xf )
  124. #define LASAT_W1_PCI1OPT(v)        ( ( (v) >> 0x14 ) & 0xf )
  125. #define LASAT_W1_PCI2OPT(v)        ( ( (v) >> 0x18 ) & 0xf )
  126. #define LASAT_W1_PCI3OPT(v)        ( ( (v) >> 0x1c ) & 0xf )
  127.  
  128. /* Routines specific to LASAT boards */
  129.  
  130. #define LASAT_BMID_MASQUERADE2        0
  131. #define LASAT_BMID_MASQUERADEPRO    1
  132. #define LASAT_BMID_SAFEPIPE25            2
  133. #define LASAT_BMID_SAFEPIPE50            3
  134. #define LASAT_BMID_SAFEPIPE100        4
  135. #define LASAT_BMID_SAFEPIPE5000        5
  136. #define LASAT_BMID_SAFEPIPE7000        6
  137. #define LASAT_BMID_SAFEPIPE1000        7
  138. //#define LASAT_BMID_SAFEPIPE30        7
  139. //#define LASAT_BMID_SAFEPIPE5100    8
  140. //#define LASAT_BMID_SAFEPIPE7100    9
  141. #define LASAT_BMID_UNKNOWN                0xf
  142. #define LASAT_MAX_BMID_NAMES            9   // no larger than 15!
  143.  
  144. #define LASAT_HAS_EDHAC            ( 1 << 0 )
  145. #define LASAT_EDHAC_FAST        ( 1 << 1 )
  146. #define LASAT_HAS_EADI            ( 1 << 2 )
  147. #define LASAT_HAS_HIFN            ( 1 << 3 )
  148. #define LASAT_HAS_ISDN            ( 1 << 4 )
  149. #define LASAT_HAS_LEASEDLINE_IF        ( 1 << 5 )
  150. #define LASAT_HAS_HDC            ( 1 << 6 )
  151.  
  152. #define LASAT_PRID_MASQUERADE2        0
  153. #define LASAT_PRID_MASQUERADEPRO    1
  154. #define LASAT_PRID_SAFEPIPE25            2
  155. #define LASAT_PRID_SAFEPIPE50            3
  156. #define LASAT_PRID_SAFEPIPE100        4
  157. #define LASAT_PRID_SAFEPIPE5000        5
  158. #define LASAT_PRID_SAFEPIPE7000        6
  159. #define LASAT_PRID_SAFEPIPE30            7
  160. #define LASAT_PRID_SAFEPIPE5100        8
  161. #define LASAT_PRID_SAFEPIPE7100        9
  162.  
  163. #define LASAT_PRID_SAFEPIPE1110        10
  164. #define LASAT_PRID_SAFEPIPE3020        11
  165. #define LASAT_PRID_SAFEPIPE3030        12
  166. #define LASAT_PRID_SAFEPIPE5020        13
  167. #define LASAT_PRID_SAFEPIPE5030        14
  168. #define LASAT_PRID_SAFEPIPE1120        15
  169. #define LASAT_PRID_SAFEPIPE1130        16
  170. #define LASAT_PRID_SAFEPIPE6010        17
  171. #define LASAT_PRID_SAFEPIPE6110        18
  172. #define LASAT_PRID_SAFEPIPE6210        19
  173. #define LASAT_PRID_SAFEPIPE1020        20
  174. #define LASAT_PRID_SAFEPIPE1040        21
  175. #define LASAT_PRID_SAFEPIPE1060        22
  176.  
  177. struct lasat_info {
  178.     unsigned int  li_cpu_hz;
  179.     unsigned int  li_bus_hz;
  180.     unsigned int  li_bmid;
  181.     unsigned int  li_memsize;
  182.     unsigned int  li_flash_size;
  183.     unsigned int  li_prid;
  184.     unsigned char li_bmstr[16];
  185.     unsigned char li_namestr[32];
  186.     unsigned char li_typestr[16];
  187.     /* Info on the Flash layout */
  188.     unsigned int  li_flash_base;
  189.     unsigned long li_flashpart_base[LASAT_MTD_LAST];
  190.     unsigned long li_flashpart_size[LASAT_MTD_LAST];
  191.     struct lasat_eeprom_struct li_eeprom_info;
  192.     unsigned int  li_eeprom_upgrade_version;
  193.     unsigned int  li_debugaccess;
  194. };
  195.  
  196. extern struct lasat_info lasat_board_info;
  197.  
  198. static inline unsigned long lasat_flash_partition_start(int partno)
  199. {
  200.     if (partno < 0 || partno >= LASAT_MTD_LAST)
  201.         return 0;
  202.  
  203.     return lasat_board_info.li_flashpart_base[partno];
  204. }
  205.  
  206. static inline unsigned long lasat_flash_partition_size(int partno)
  207. {
  208.     if (partno < 0 || partno >= LASAT_MTD_LAST)
  209.         return 0;
  210.  
  211.     return lasat_board_info.li_flashpart_size[partno];
  212. }
  213.  
  214. /* Called from setup() to initialize the global board_info struct */
  215. extern int lasat_init_board_info(void);
  216.  
  217. /* Write the modified EEPROM info struct */
  218. extern void lasat_write_eeprom_info(void);
  219.  
  220. #define N_MACHTYPES        2
  221. /* for calibration of delays */
  222.  
  223. /* the lasat_ndelay function is necessary because it is used at an
  224.  * early stage of the boot process where ndelay is not calibrated.
  225.  * It is used for the bit-banging rtc and eeprom drivers */
  226.  
  227. #include <asm/delay.h>
  228. /* calculating with the slowest board with 100 MHz clock */
  229. #define LASAT_100_DIVIDER 20
  230. /* All 200's run at 250 MHz clock */
  231. #define LASAT_200_DIVIDER 8
  232.  
  233. extern unsigned int lasat_ndelay_divider;
  234.  
  235. static inline void lasat_ndelay(unsigned int ns)
  236. {
  237.             __delay(ns / lasat_ndelay_divider);
  238. }
  239.  
  240. extern void (* prom_printf)(const char *fmt, ...);
  241.  
  242. #endif /* !defined (_LANGUAGE_ASSEMBLY) */
  243.  
  244. #define LASAT_SERVICEMODE_MAGIC_1     0xdeadbeef
  245. #define LASAT_SERVICEMODE_MAGIC_2     0xfedeabba
  246.  
  247. /* Lasat 100 boards */
  248. #define LASAT_GT_BASE           (KSEG1ADDR(0x14000000))
  249.  
  250. /* Lasat 200 boards */
  251. #define Vrc5074_PHYS_BASE       0x1fa00000
  252. #define Vrc5074_BASE            (KSEG1ADDR(Vrc5074_PHYS_BASE))
  253. #define PCI_WINDOW1             0x1a000000
  254.  
  255. #endif /* _LASAT_H */
  256.