home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / mips / include / asm / lasat / lasat.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  7.5 KB  |  259 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. #if 0
  139. #define LASAT_BMID_SAFEPIPE30        7
  140. #define LASAT_BMID_SAFEPIPE5100        8
  141. #define LASAT_BMID_SAFEPIPE7100        9
  142. #endif
  143. #define LASAT_BMID_UNKNOWN        0xf
  144. #define LASAT_MAX_BMID_NAMES        9   /* no larger than 15! */
  145.  
  146. #define LASAT_HAS_EDHAC            (1 << 0)
  147. #define LASAT_EDHAC_FAST        (1 << 1)
  148. #define LASAT_HAS_EADI            (1 << 2)
  149. #define LASAT_HAS_HIFN            (1 << 3)
  150. #define LASAT_HAS_ISDN            (1 << 4)
  151. #define LASAT_HAS_LEASEDLINE_IF        (1 << 5)
  152. #define LASAT_HAS_HDC            (1 << 6)
  153.  
  154. #define LASAT_PRID_MASQUERADE2        0
  155. #define LASAT_PRID_MASQUERADEPRO    1
  156. #define LASAT_PRID_SAFEPIPE25        2
  157. #define LASAT_PRID_SAFEPIPE50        3
  158. #define LASAT_PRID_SAFEPIPE100        4
  159. #define LASAT_PRID_SAFEPIPE5000        5
  160. #define LASAT_PRID_SAFEPIPE7000        6
  161. #define LASAT_PRID_SAFEPIPE30        7
  162. #define LASAT_PRID_SAFEPIPE5100        8
  163. #define LASAT_PRID_SAFEPIPE7100        9
  164.  
  165. #define LASAT_PRID_SAFEPIPE1110        10
  166. #define LASAT_PRID_SAFEPIPE3020        11
  167. #define LASAT_PRID_SAFEPIPE3030        12
  168. #define LASAT_PRID_SAFEPIPE5020        13
  169. #define LASAT_PRID_SAFEPIPE5030        14
  170. #define LASAT_PRID_SAFEPIPE1120        15
  171. #define LASAT_PRID_SAFEPIPE1130        16
  172. #define LASAT_PRID_SAFEPIPE6010        17
  173. #define LASAT_PRID_SAFEPIPE6110        18
  174. #define LASAT_PRID_SAFEPIPE6210        19
  175. #define LASAT_PRID_SAFEPIPE1020        20
  176. #define LASAT_PRID_SAFEPIPE1040        21
  177. #define LASAT_PRID_SAFEPIPE1060        22
  178.  
  179. struct lasat_info {
  180.     unsigned int  li_cpu_hz;
  181.     unsigned int  li_bus_hz;
  182.     unsigned int  li_bmid;
  183.     unsigned int  li_memsize;
  184.     unsigned int  li_flash_size;
  185.     unsigned int  li_prid;
  186.     unsigned char li_bmstr[16];
  187.     unsigned char li_namestr[32];
  188.     unsigned char li_typestr[16];
  189.     /* Info on the Flash layout */
  190.     unsigned int  li_flash_base;
  191.     unsigned long li_flashpart_base[LASAT_MTD_LAST];
  192.     unsigned long li_flashpart_size[LASAT_MTD_LAST];
  193.     struct lasat_eeprom_struct li_eeprom_info;
  194.     unsigned int  li_eeprom_upgrade_version;
  195.     unsigned int  li_debugaccess;
  196. };
  197.  
  198. extern struct lasat_info lasat_board_info;
  199.  
  200. static inline unsigned long lasat_flash_partition_start(int partno)
  201. {
  202.     if (partno < 0 || partno >= LASAT_MTD_LAST)
  203.         return 0;
  204.  
  205.     return lasat_board_info.li_flashpart_base[partno];
  206. }
  207.  
  208. static inline unsigned long lasat_flash_partition_size(int partno)
  209. {
  210.     if (partno < 0 || partno >= LASAT_MTD_LAST)
  211.         return 0;
  212.  
  213.     return lasat_board_info.li_flashpart_size[partno];
  214. }
  215.  
  216. /* Called from setup() to initialize the global board_info struct */
  217. extern int lasat_init_board_info(void);
  218.  
  219. /* Write the modified EEPROM info struct */
  220. extern void lasat_write_eeprom_info(void);
  221.  
  222. #define N_MACHTYPES        2
  223. /* for calibration of delays */
  224.  
  225. /* the lasat_ndelay function is necessary because it is used at an
  226.  * early stage of the boot process where ndelay is not calibrated.
  227.  * It is used for the bit-banging rtc and eeprom drivers */
  228.  
  229. #include <linux/delay.h>
  230.  
  231. /* calculating with the slowest board with 100 MHz clock */
  232. #define LASAT_100_DIVIDER 20
  233. /* All 200's run at 250 MHz clock */
  234. #define LASAT_200_DIVIDER 8
  235.  
  236. extern unsigned int lasat_ndelay_divider;
  237.  
  238. static inline void lasat_ndelay(unsigned int ns)
  239. {
  240.     __delay(ns / lasat_ndelay_divider);
  241. }
  242.  
  243. #define IS_LASAT_200()     (current_cpu_data.cputype == CPU_R5000)
  244.  
  245. #endif /* !defined (_LANGUAGE_ASSEMBLY) */
  246.  
  247. #define LASAT_SERVICEMODE_MAGIC_1     0xdeadbeef
  248. #define LASAT_SERVICEMODE_MAGIC_2     0xfedeabba
  249.  
  250. /* Lasat 100 boards */
  251. #define LASAT_GT_BASE           (KSEG1ADDR(0x14000000))
  252.  
  253. /* Lasat 200 boards */
  254. #define Vrc5074_PHYS_BASE       0x1fa00000
  255. #define Vrc5074_BASE            (KSEG1ADDR(Vrc5074_PHYS_BASE))
  256. #define PCI_WINDOW1             0x1a000000
  257.  
  258. #endif /* _LASAT_H */
  259.