mb.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. /*
  2. * (C) Copyright 2000
  3. * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4. *
  5. * See file CREDITS for list of people who contributed to this
  6. * project.
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License as
  10. * published by the Free Software Foundation; either version 2 of
  11. * the License, or (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21. * MA 02111-1307 USA
  22. */
  23. /*
  24. * defines for Cogent Motherboards
  25. */
  26. #ifndef _COGENT_MB_H
  27. #define _COGENT_MB_H
  28. /*
  29. * Cogent Motherboard Address Map
  30. *
  31. * The size of a Cogent motherboard address space is 256 Mbytes (i.e. 28 bits).
  32. *
  33. * The first 32 Mbyte (0x0000000-0x1FFFFFF) is usually RAM. The following
  34. * 3 x 32 Mbyte areas (0x2000000-0x3FFFFFF, 0x4000000-0x5FFFFFF and
  35. * 0x6000000-0x7FFFFFF) are general I/O "slots" (slots 1, 2 and 3).
  36. * Most other motherboard devices have registers mapped into the area
  37. * 0xE000000-0xFFFFFFF (Motherboard I/O slot?). The area 0x8000000-0xDFFFFFF
  38. * is free for whatever.
  39. *
  40. * The location of the motherboard address space in the physical address space
  41. * of the cpu is given by CMA_MB_BASE. This value is determined by the cpu
  42. * module plugged into the motherboard and is configured above.
  43. *
  44. * Motherboard I/O devices mapped into the area (0xE000000-0xFFFFFFF)
  45. * generally only use byte lane 0 (D0-7) for their transfers, i.e. only
  46. * 8 bit, or 1 byte, transfers can take place, so all the registers are
  47. * only 8 bits wide. The exceptions are the motherboard flash, which uses
  48. * byte lanes 0 and 1 (i.e. 16 bits), and the mapped PCI address space.
  49. *
  50. * I/O registers within the mapped motherboard devices are 64 bit aligned
  51. * i.e. they are 8 bytes apart. For big endian addressing, the 8 bit register
  52. * will be at byte 7 (the address + 7). For little endian addressing, the
  53. * register will be at byte 0 (the address + 0). To learn the endianess
  54. * we must include <endian.h>
  55. *
  56. * Take the CMA102 and CMA111 motherboards as examples...
  57. *
  58. * The CMA102 has three CMABus I/O Expansion slots and no PCI bridge. The 3
  59. * CMABus slots are each mapped directly onto the three general I/O slots.
  60. *
  61. * The CMA111 has only one CMABus I/O Expansion slot, but has a V360EPC PCI
  62. * bridge. The CMABus slot is mapped onto general I/O slot 1. The standard
  63. * PCI Bus space is mapped onto general I/O slot 2, with a small area at the
  64. * top reserved for access to the V360EPC registers (0x5FF0000-0x5FFFFFF).
  65. * I/O slot 3 is unused. The extended PCI Bus space is mapped onto the area
  66. * 0xA000000-0xDFFFFFF.
  67. */
  68. #define CMA_MB_RAM_BASE (CFG_CMA_MB_BASE+0x0000000)
  69. #define CMA_MB_RAM_SIZE 0x2000000 /* dip sws set actual size */
  70. #if (CMA_MB_CAPS & CMA_MB_CAP_SLOT1)
  71. #define CMA_MB_SLOT1_BASE (CFG_CMA_MB_BASE+0x2000000)
  72. #define CMA_MB_SLOT1_SIZE 0x2000000
  73. #endif
  74. #if (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
  75. #define CMA_MB_SLOT2_BASE (CFG_CMA_MB_BASE+0x4000000)
  76. #define CMA_MB_SLOT2_SIZE 0x2000000
  77. #endif
  78. #if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
  79. #define CMA_MB_STDPCI_BASE (CFG_CMA_MB_BASE+0x4000000)
  80. #define CMA_MB_STDPCI_SIZE 0x1ff0000
  81. #define CMA_MB_V360EPC_BASE (CFG_CMA_MB_BASE+0x5ff0000)
  82. #define CMA_MB_V360EPC_SIZE 0x10000
  83. #endif
  84. #if (CMA_MB_CAPS & CMA_MB_CAP_SLOT3)
  85. #define CMA_MB_SLOT3_BASE (CFG_CMA_MB_BASE+0x6000000)
  86. #define CMA_MB_SLOT3_SIZE 0x2000000
  87. #endif
  88. #if (CMA_MB_CAPS & CMA_MB_CAP_PCI_EXT)
  89. #define CMA_MB_EXTPCI_BASE (CFG_CMA_MB_BASE+0xa000000)
  90. #define CMA_MB_EXTPCI_SIZE 0x4000000
  91. #endif
  92. #define CMA_MB_ROMLOW_BASE (CFG_CMA_MB_BASE+0xe000000)
  93. #define CMA_MB_ROMLOW_SIZE 0x800000
  94. #if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
  95. #define CMA_MB_FLLOW_EXEC_BASE (CFG_CMA_MB_BASE+0xe000000)
  96. #define CMA_MB_FLLOW_EXEC_SIZE 0x100000
  97. #define CMA_MB_FLLOW_RDWR_BASE (CFG_CMA_MB_BASE+0xe400000)
  98. #define CMA_MB_FLLOW_RDWR_SIZE 0x400000
  99. #endif
  100. #if (CMA_MB_CAPS & CMA_MB_CAP_RTC)
  101. #define CMA_MB_RTC_BASE (CFG_CMA_MB_BASE+0xe800000)
  102. #define CMA_MB_RTC_SIZE 0x4000
  103. #endif
  104. #if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
  105. #define CMA_MB_SERPAR_BASE (CFG_CMA_MB_BASE+0xe900000)
  106. #define CMA_MB_SERIALB_BASE (CMA_MB_SERPAR_BASE+0x00)
  107. #define CMA_MB_SERIALA_BASE (CMA_MB_SERPAR_BASE+0x40)
  108. #define CMA_MB_PARALLEL_BASE (CMA_MB_SERPAR_BASE+0x80)
  109. #define CMA_MB_SERPAR_SIZE 0xa0
  110. #endif
  111. #if (CMA_MB_CAPS & CMA_MB_CAP_KBM)
  112. #define CMA_MB_PKBM_BASE (CFG_CMA_MB_BASE+0xe900100)
  113. #define CMA_MB_PKBM_SIZE 0x10
  114. #endif
  115. #if (CMA_MB_CAPS & CMA_MB_CAP_LCD)
  116. #define CMA_MB_LCD_BASE (CFG_CMA_MB_BASE+0xeb00000)
  117. #define CMA_MB_LCD_SIZE 0x10
  118. #endif
  119. #define CMA_MB_DIPSW_BASE (CFG_CMA_MB_BASE+0xec00000)
  120. #define CMA_MB_DIPSW_SIZE 0x10
  121. #if (CMA_MB_CAPS & (CMA_MB_CAP_SLOT1|CMA_MB_CAP_SER2|CMA_MB_CAP_KBM))
  122. #define CMA_MB_SLOT1CFG_BASE (CFG_CMA_MB_BASE+0xf100000)
  123. #if (CMA_MB_CAPS & CMA_MB_CAP_SER2)
  124. #define CMA_MB_SER2_BASE (CMA_MB_SLOT1CFG_BASE+0x80)
  125. #define CMA_MB_SER2B_BASE (CMA_MB_SER2_BASE+0x00)
  126. #define CMA_MB_SER2A_BASE (CMA_MB_SER2_BASE+0x40)
  127. #endif
  128. #if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT1)
  129. #define CMA_MB_S1KBM_BASE (CMA_MB_SLOT1CFG_BASE+0x200)
  130. #endif
  131. #if (CMA_MB_CAPS & CMA_MB_CAP_KBM) && !defined(COGENT_CMA150)
  132. #define CMA_MB_IREQ1STAT_BASE (CMA_MB_SLOT1CFG_BASE+0x100)
  133. #define CMA_MB_AKBM_BASE (CMA_MB_SLOT1CFG_BASE+0x200)
  134. #define CMA_MB_IREQ1MASK_BASE (CMA_MB_SLOT1CFG_BASE+0x300)
  135. #endif
  136. #define CMA_MB_SLOT1CFG_SIZE 0x400
  137. #endif
  138. #if (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
  139. #define CMA_MB_SLOT2CFG_BASE (CFG_CMA_MB_BASE+0xf200000)
  140. #if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT2)
  141. #define CMA_MB_S2KBM_BASE (CMA_MB_SLOT2CFG_BASE+0x200)
  142. #endif
  143. #define CMA_MB_SLOT2CFG_SIZE 0x400
  144. #endif
  145. #if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
  146. #define CMA_MB_PCICTL_BASE (CFG_CMA_MB_BASE+0xf200000)
  147. #define CMA_MB_PCI_V3CTL_BASE (CMA_MB_PCICTL_BASE+0x100)
  148. #define CMA_MB_PCI_IDSEL_BASE (CMA_MB_PCICTL_BASE+0x200)
  149. #define CMA_MB_PCI_IMASK_BASE (CMA_MB_PCICTL_BASE+0x300)
  150. #define CMA_MB_PCI_ISTAT_BASE (CMA_MB_PCICTL_BASE+0x400)
  151. #define CMA_MB_PCI_MBID_BASE (CMA_MB_PCICTL_BASE+0x500)
  152. #define CMA_MB_PCI_MBREV_BASE (CMA_MB_PCICTL_BASE+0x600)
  153. #define CMA_MB_PCICTL_SIZE 0x700
  154. #endif
  155. #if (CMA_MB_CAPS & CMA_MB_CAP_SLOT3)
  156. #define CMA_MB_SLOT3CFG_BASE (CFG_CMA_MB_BASE+0xf300000)
  157. #if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT3)
  158. #define CMA_MB_S3KBM_BASE (CMA_MB_SLOT3CFG_BASE+0x200)
  159. #endif
  160. #define CMA_MB_SLOT3CFG_SIZE 0x400
  161. #endif
  162. #define CMA_MB_ROMHIGH_BASE (CFG_CMA_MB_BASE+0xf800000)
  163. #define CMA_MB_ROMHIGH_SIZE 0x800000
  164. #if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
  165. #define CMA_MB_FLHIGH_EXEC_BASE (CFG_CMA_MB_BASE+0xf800000)
  166. #define CMA_MB_FLHIGH_EXEC_SIZE 0x100000
  167. #define CMA_MB_FLHIGH_RDWR_BASE (CFG_CMA_MB_BASE+0xfc00000)
  168. #define CMA_MB_FLHIGH_RDWR_SIZE 0x400000
  169. #endif
  170. #if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
  171. /* PCI Control Register bits */
  172. /* V360EPC Control register bits */
  173. #define CMA_MB_PCI_V3CTL_RESET 0x01
  174. #define CMA_MB_PCI_V3CTL_EXTADD 0x08
  175. /* PCI ID Select register bits */
  176. #define CMA_MB_PCI_IDSEL_SLOTA 0x01
  177. #define CMA_MB_PCI_IDSEL_SLOTB 0x02
  178. #define CMA_MB_PCI_IDSEL_GD82559 0x04
  179. #define CMA_MB_PCI_IDSEL_B69000 0x08
  180. #define CMA_MB_PCI_IDSEL_PD6832 0x10
  181. /* PCI Interrupt Mask/Status register bits */
  182. #define CMA_MB_PCI_IMS_INTA 0x01
  183. #define CMA_MB_PCI_IMS_INTB 0x02
  184. #define CMA_MB_PCI_IMS_INTC 0x04
  185. #define CMA_MB_PCI_IMS_INTD 0x08
  186. #define CMA_MB_PCI_IMS_CBINT 0x10
  187. #define CMA_MB_PCI_IMS_V3LINT 0x80
  188. #endif
  189. #if (CMA_MB_CAPS & (CMA_MB_CAP_KBM|CMA_MB_CAP_SER2)) && !defined(COGENT_CMA150)
  190. /*
  191. * IREQ1 Interrupt Mask/Status register bits
  192. * (Note: not available on CMA150 - must poll HT6542B interrupt register)
  193. */
  194. #define IREQ1_MINT 0x01
  195. #define IREQ1_KINT 0x02
  196. #if (CMA_MB_CAPS & CMA_MB_CAP_SER2)
  197. #define IREQ1_SINT2 0x04
  198. #define IREQ1_SINT3 0x08
  199. #endif
  200. #endif
  201. #ifndef __ASSEMBLY__
  202. #ifdef USE_HOSTCC
  203. #include <endian.h> /* avoid using private kernel header files */
  204. #else
  205. #include <asm/byteorder.h> /* use U-Boot provided headers */
  206. #endif
  207. /* a single CMA10x motherboard i/o register */
  208. typedef
  209. struct {
  210. #if __BYTE_ORDER == __LITTLE_ENDIAN
  211. unsigned char value;
  212. #endif
  213. unsigned char filler[7];
  214. #if __BYTE_ORDER == __BIG_ENDIAN
  215. unsigned char value;
  216. #endif
  217. }
  218. cma_mb_reg;
  219. extern __inline__ unsigned char
  220. cma_mb_reg_read(volatile cma_mb_reg *reg)
  221. {
  222. unsigned char data = reg->value;
  223. __asm__ __volatile__ ("eieio" : : : "memory");
  224. return data;
  225. }
  226. extern __inline__ void
  227. cma_mb_reg_write(volatile cma_mb_reg *reg, unsigned char data)
  228. {
  229. reg->value = data;
  230. __asm__ __volatile__ ("eieio" : : : "memory");
  231. }
  232. #if (CMA_MB_CAPS & CMA_MB_CAP_RTC)
  233. /* MK48T02 RTC registers */
  234. typedef
  235. struct {
  236. cma_mb_reg sram[2040];/* Battery-Backed SRAM */
  237. cma_mb_reg clk_ctl; /* Clock Control Register */
  238. cma_mb_reg clk_sec; /* Clock Seconds Register */
  239. cma_mb_reg clk_min; /* Clock Minutes Register */
  240. cma_mb_reg clk_hour; /* Clock Hour Register */
  241. cma_mb_reg clk_day; /* Clock Day Register */
  242. cma_mb_reg clk_date; /* Clock Date Register */
  243. cma_mb_reg clk_month; /* Clock Month Register */
  244. cma_mb_reg clk_year; /* Clock Year Register */
  245. }
  246. cma_mb_rtc;
  247. #endif
  248. #if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
  249. /* ST16C522 Serial I/O */
  250. typedef
  251. struct {
  252. cma_mb_reg ser_rhr; /* Receive Holding Register (R, DLAB=0) */
  253. cma_mb_reg ser_ier; /* Interrupt Enable Register (R/W, DLAB=0) */
  254. cma_mb_reg ser_isr; /* Interrupt Status Register (R) */
  255. cma_mb_reg ser_lcr; /* Line Control Register (R/W) */
  256. cma_mb_reg ser_mcr; /* Modem Control Register (R/W) */
  257. cma_mb_reg ser_lsr; /* Line Status Register (R) */
  258. cma_mb_reg ser_msr; /* Modem Status Register (R/W) */
  259. cma_mb_reg ser_spr; /* Scratch Pad Register (R/W) */
  260. }
  261. cma_mb_serial;
  262. #define ser_thr ser_rhr /* Transmit Holding Register (W, DLAB=0) */
  263. #define ser_brl ser_rhr /* Baud Rate Divisor Low Byte (R/W, DLAB=1) */
  264. #define ser_brh ser_ier /* Baud Rate Divisor High Byte (R/W, DLAB=1) */
  265. #define ser_fcr ser_isr /* FIFO Control Register (W) */
  266. #define ser_nop ser_lsr /* No Operation (W) */
  267. /* ST16C522 Parallel I/O */
  268. typedef
  269. struct {
  270. cma_mb_reg par_rdr; /* Port Read Data Register (R) */
  271. cma_mb_reg par_sr; /* Status Register (R) */
  272. cma_mb_reg par_cmd; /* Command Register (R) */
  273. }
  274. cma_mb_parallel;
  275. #define par_wdr par_rdr /* Port Write Data Register (W) */
  276. #define par_ios par_sr /* I/O Select Register (W) */
  277. #define par_ctl par_cmd /* Control Register (W) */
  278. #endif
  279. #if (CMA_MB_CAPS & CMA_MB_CAP_KBM) || defined(CONFIG_CMA302)
  280. /* HT6542B PS/2 Keyboard/Mouse Controller */
  281. typedef
  282. struct {
  283. cma_mb_reg kbm_rdr; /* Read Data Register (R) */
  284. cma_mb_reg kbm_sr; /* Status Register (R) */
  285. }
  286. cma_mb_kbm;
  287. #define kbm_wdr kbm_rdr /* Write Data Register (W) */
  288. #define kbm_cmd kbm_sr /* Command Register (W) */
  289. #endif
  290. #if (CMA_MB_CAPS & CMA_MB_CAP_LCD)
  291. /* HD44780 LCD Display */
  292. typedef
  293. struct {
  294. cma_mb_reg lcd_ccr; /* Current Character Register (R/W) */
  295. cma_mb_reg lcd_bsr; /* Busy Status Register (R) */
  296. }
  297. cma_mb_lcd;
  298. #define lcd_cmd lcd_bsr /* Command Register (W) */
  299. #endif
  300. /* 8-Position Configuration Switch */
  301. typedef
  302. struct {
  303. cma_mb_reg dip_val; /* Dip Switch value (R) */
  304. }
  305. cma_mb_dipsw;
  306. #if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
  307. /* V360EPC PCI Bridge */
  308. typedef
  309. struct {
  310. #if __BYTE_ORDER == __LITTLE_ENDIAN
  311. unsigned short v3_pci_vendor; /* 0x00 */
  312. unsigned short v3_pci_device;
  313. unsigned short v3_pci_cmd; /* 0x04 */
  314. unsigned short v3_pci_stat;
  315. unsigned long v3_pci_cc_rev; /* 0x08 */
  316. unsigned long v3_pci_hdr_cfg; /* 0x0c */
  317. unsigned long v3_pci_io_base; /* 0x10 */
  318. unsigned long v3_pci_base0; /* 0x14 */
  319. unsigned long v3_pci_base1; /* 0x18 */
  320. unsigned long reserved1[4]; /* 0x1c */
  321. unsigned short v3_pci_sub_vendor; /* 0x2c */
  322. unsigned short v3_pci_sub_id;
  323. unsigned long v3_pci_rom; /* 0x30 */
  324. unsigned long reserved2[2]; /* 0x34 */
  325. unsigned long v3_pci_bparam; /* 0x3c */
  326. unsigned long v3_pci_map0; /* 0x40 */
  327. unsigned long v3_pci_map1; /* 0x44 */
  328. unsigned long v3_pci_int_stat; /* 0x48 */
  329. unsigned long v3_pci_int_cfg; /* 0x4c */
  330. unsigned long reserved3[1]; /* 0x50 */
  331. unsigned long v3_lb_base0; /* 0x54 */
  332. unsigned long v3_lb_base1; /* 0x58 */
  333. unsigned short reserved4; /* 0x5c */
  334. unsigned short v3_lb_map0;
  335. unsigned short reserved5; /* 0x60 */
  336. unsigned short v3_lb_map1;
  337. unsigned short v3_lb_base2; /* 0x64 */
  338. unsigned short v3_lb_map2;
  339. unsigned long v3_lb_size; /* 0x68 */
  340. unsigned short reserved6; /* 0x6c */
  341. unsigned short v3_lb_io_base;
  342. unsigned short v3_fifo_cfg; /* 0x70 */
  343. unsigned short v3_fifo_priority;
  344. unsigned short v3_fifo_stat; /* 0x74 */
  345. unsigned char v3_lb_istat;
  346. unsigned char v3_lb_imask;
  347. unsigned short v3_system; /* 0x78 */
  348. unsigned short v3_lb_cfg;
  349. unsigned short v3_pci_cfg; /* 0x7c */
  350. unsigned short reserved7;
  351. unsigned long v3_dma_pci_addr0; /* 0x80 */
  352. unsigned long v3_dma_local_addr0; /* 0x84 */
  353. unsigned long v3_dma_length0:24; /* 0x88 */
  354. unsigned long v3_dma_csr0:8;
  355. unsigned long v3_dma_ctlb_adr0; /* 0x8c */
  356. unsigned long v3_dma_pci_addr1; /* 0x90 */
  357. unsigned long v3_dma_local_addr1; /* 0x94 */
  358. unsigned long v3_dma_length1:24; /* 0x98 */
  359. unsigned long v3_dma_csr1:8;
  360. unsigned long v3_dma_ctlb_adr1; /* 0x9c */
  361. unsigned long v3_i20_mups[8]; /* 0xa0 */
  362. unsigned char v3_mail_data0; /* 0xc0 */
  363. unsigned char v3_mail_data1;
  364. unsigned char v3_mail_data2;
  365. unsigned char v3_mail_data3;
  366. unsigned char v3_mail_data4; /* 0xc4 */
  367. unsigned char v3_mail_data5;
  368. unsigned char v3_mail_data6;
  369. unsigned char v3_mail_data7;
  370. unsigned char v3_mail_data8; /* 0xc8 */
  371. unsigned char v3_mail_data9;
  372. unsigned char v3_mail_data10;
  373. unsigned char v3_mail_data11;
  374. unsigned char v3_mail_data12; /* 0xcc */
  375. unsigned char v3_mail_data13;
  376. unsigned char v3_mail_data14;
  377. unsigned char v3_mail_data15;
  378. unsigned short v3_pci_mail_iewr; /* 0xd0 */
  379. unsigned short v3_pci_mail_ierd;
  380. unsigned short v3_lb_mail_iewr; /* 0xd4 */
  381. unsigned short v3_lb_mail_ierd;
  382. unsigned short v3_mail_wr_stat; /* 0xd8 */
  383. unsigned short v3_mail_rd_stat;
  384. unsigned long v3_qba_map; /* 0xdc */
  385. unsigned long v3_dma_delay:8; /* 0xe0 */
  386. unsigned long reserved8:24;
  387. unsigned long reserved9[7]; /* 0xe4 */
  388. #endif
  389. #if __BYTE_ORDER == __BIG_ENDIAN
  390. unsigned short v3_pci_device; /* 0x00 */
  391. unsigned short v3_pci_vendor;
  392. unsigned short v3_pci_stat; /* 0x04 */
  393. unsigned short v3_pci_cmd;
  394. unsigned long v3_pci_cc_rev; /* 0x08 */
  395. unsigned long v3_pci_hdr_cfg; /* 0x0c */
  396. unsigned long v3_pci_io_base; /* 0x10 */
  397. unsigned long v3_pci_base0; /* 0x14 */
  398. unsigned long v3_pci_base1; /* 0x18 */
  399. unsigned long reserved1[4]; /* 0x1c */
  400. unsigned short v3_pci_sub_id; /* 0x2c */
  401. unsigned short v3_pci_sub_vendor;
  402. unsigned long v3_pci_rom; /* 0x30 */
  403. unsigned long reserved2[2]; /* 0x34 */
  404. unsigned long v3_pci_bparam; /* 0x3c */
  405. unsigned long v3_pci_map0; /* 0x40 */
  406. unsigned long v3_pci_map1; /* 0x44 */
  407. unsigned long v3_pci_int_stat; /* 0x48 */
  408. unsigned long v3_pci_int_cfg; /* 0x4c */
  409. unsigned long reserved3; /* 0x50 */
  410. unsigned long v3_lb_base0; /* 0x54 */
  411. unsigned long v3_lb_base1; /* 0x58 */
  412. unsigned short v3_lb_map0; /* 0x5c */
  413. unsigned short reserved4;
  414. unsigned short v3_lb_map1; /* 0x60 */
  415. unsigned short reserved5;
  416. unsigned short v3_lb_map2; /* 0x64 */
  417. unsigned short v3_lb_base2;
  418. unsigned long v3_lb_size; /* 0x68 */
  419. unsigned short v3_lb_io_base; /* 0x6c */
  420. unsigned short reserved6;
  421. unsigned short v3_fifo_priority; /* 0x70 */
  422. unsigned short v3_fifo_cfg;
  423. unsigned char v3_lb_imask; /* 0x74 */
  424. unsigned char v3_lb_istat;
  425. unsigned short v3_fifo_stat;
  426. unsigned short v3_lb_cfg; /* 0x78 */
  427. unsigned short v3_system;
  428. unsigned short reserved7; /* 0x7c */
  429. unsigned short v3_pci_cfg;
  430. unsigned long v3_dma_pci_addr0; /* 0x80 */
  431. unsigned long v3_dma_local_addr0; /* 0x84 */
  432. unsigned long v3_dma_csr0:8; /* 0x88 */
  433. unsigned long v3_dma_length0:24;
  434. unsigned long v3_dma_ctlb_adr0; /* 0x8c */
  435. unsigned long v3_dma_pci_addr1; /* 0x90 */
  436. unsigned long v3_dma_local_addr1; /* 0x94 */
  437. unsigned long v3_dma_csr1:8; /* 0x98 */
  438. unsigned long v3_dma_length1:24;
  439. unsigned long v3_dma_ctlb_adr1; /* 0x9c */
  440. unsigned long v3_i20_mups[8]; /* 0xa0 */
  441. unsigned char v3_mail_data3; /* 0xc0 */
  442. unsigned char v3_mail_data2;
  443. unsigned char v3_mail_data1;
  444. unsigned char v3_mail_data0;
  445. unsigned char v3_mail_data7; /* 0xc4 */
  446. unsigned char v3_mail_data6;
  447. unsigned char v3_mail_data5;
  448. unsigned char v3_mail_data4;
  449. unsigned char v3_mail_data11; /* 0xc8 */
  450. unsigned char v3_mail_data10;
  451. unsigned char v3_mail_data9;
  452. unsigned char v3_mail_data8;
  453. unsigned char v3_mail_data15; /* 0xcc */
  454. unsigned char v3_mail_data14;
  455. unsigned char v3_mail_data13;
  456. unsigned char v3_mail_data12;
  457. unsigned short v3_pci_mail_ierd; /* 0xd0 */
  458. unsigned short v3_pci_mail_iewr;
  459. unsigned short v3_lb_mail_ierd; /* 0xd4 */
  460. unsigned short v3_lb_mail_iewr;
  461. unsigned short v3_mail_rd_stat; /* 0xd8 */
  462. unsigned short v3_mail_wr_stat;
  463. unsigned long v3_qba_map; /* 0xdc */
  464. unsigned long reserved8:24; /* 0xe0 */
  465. unsigned long v3_dma_delay:8;
  466. unsigned long reserved9[7]; /* 0xe4 */
  467. #endif
  468. } /* 0x100 */
  469. cma_mb_v360epc;
  470. #endif
  471. #endif /* __ASSEMBLY__ */
  472. #endif /* _COGENT_MB_H */