skfbi.h 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128
  1. /******************************************************************************
  2. *
  3. * (C)Copyright 1998,1999 SysKonnect,
  4. * a business unit of Schneider & Koch & Co. Datensysteme GmbH.
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 2 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * The information in this file is provided "AS IS" without warranty.
  12. *
  13. ******************************************************************************/
  14. #ifndef _SKFBI_H_
  15. #define _SKFBI_H_
  16. /*
  17. * FDDI-Fx (x := {I(SA), P(CI)})
  18. * address calculation & function defines
  19. */
  20. /*--------------------------------------------------------------------------*/
  21. #ifdef PCI
  22. /*
  23. * (DV) = only defined for Da Vinci
  24. * (ML) = only defined for Monalisa
  25. */
  26. /*
  27. * Configuration Space header
  28. */
  29. #define PCI_VENDOR_ID 0x00 /* 16 bit Vendor ID */
  30. #define PCI_DEVICE_ID 0x02 /* 16 bit Device ID */
  31. #define PCI_COMMAND 0x04 /* 16 bit Command */
  32. #define PCI_STATUS 0x06 /* 16 bit Status */
  33. #define PCI_REV_ID 0x08 /* 8 bit Revision ID */
  34. #define PCI_CLASS_CODE 0x09 /* 24 bit Class Code */
  35. #define PCI_CACHE_LSZ 0x0c /* 8 bit Cache Line Size */
  36. #define PCI_LAT_TIM 0x0d /* 8 bit Latency Timer */
  37. #define PCI_HEADER_T 0x0e /* 8 bit Header Type */
  38. #define PCI_BIST 0x0f /* 8 bit Built-in selftest */
  39. #define PCI_BASE_1ST 0x10 /* 32 bit 1st Base address */
  40. #define PCI_BASE_2ND 0x14 /* 32 bit 2nd Base address */
  41. /* Byte 18..2b: Reserved */
  42. #define PCI_SUB_VID 0x2c /* 16 bit Subsystem Vendor ID */
  43. #define PCI_SUB_ID 0x2e /* 16 bit Subsystem ID */
  44. #define PCI_BASE_ROM 0x30 /* 32 bit Expansion ROM Base Address */
  45. /* Byte 34..33: Reserved */
  46. #define PCI_CAP_PTR 0x34 /* 8 bit (ML) Capabilities Ptr */
  47. /* Byte 35..3b: Reserved */
  48. #define PCI_IRQ_LINE 0x3c /* 8 bit Interrupt Line */
  49. #define PCI_IRQ_PIN 0x3d /* 8 bit Interrupt Pin */
  50. #define PCI_MIN_GNT 0x3e /* 8 bit Min_Gnt */
  51. #define PCI_MAX_LAT 0x3f /* 8 bit Max_Lat */
  52. /* Device Dependent Region */
  53. #define PCI_OUR_REG 0x40 /* 32 bit (DV) Our Register */
  54. #define PCI_OUR_REG_1 0x40 /* 32 bit (ML) Our Register 1 */
  55. #define PCI_OUR_REG_2 0x44 /* 32 bit (ML) Our Register 2 */
  56. /* Power Management Region */
  57. #define PCI_PM_CAP_ID 0x48 /* 8 bit (ML) Power Management Cap. ID */
  58. #define PCI_PM_NITEM 0x49 /* 8 bit (ML) Next Item Ptr */
  59. #define PCI_PM_CAP_REG 0x4a /* 16 bit (ML) Power Management Capabilities */
  60. #define PCI_PM_CTL_STS 0x4c /* 16 bit (ML) Power Manag. Control/Status */
  61. /* Byte 0x4e: Reserved */
  62. #define PCI_PM_DAT_REG 0x4f /* 8 bit (ML) Power Manag. Data Register */
  63. /* VPD Region */
  64. #define PCI_VPD_CAP_ID 0x50 /* 8 bit (ML) VPD Cap. ID */
  65. #define PCI_VPD_NITEM 0x51 /* 8 bit (ML) Next Item Ptr */
  66. #define PCI_VPD_ADR_REG 0x52 /* 16 bit (ML) VPD Address Register */
  67. #define PCI_VPD_DAT_REG 0x54 /* 32 bit (ML) VPD Data Register */
  68. /* Byte 58..ff: Reserved */
  69. /*
  70. * I2C Address (PCI Config)
  71. *
  72. * Note: The temperature and voltage sensors are relocated on a different
  73. * I2C bus.
  74. */
  75. #define I2C_ADDR_VPD 0xA0 /* I2C address for the VPD EEPROM */
  76. /*
  77. * Define Bits and Values of the registers
  78. */
  79. /* PCI_VENDOR_ID 16 bit Vendor ID */
  80. /* PCI_DEVICE_ID 16 bit Device ID */
  81. /* Values for Vendor ID and Device ID shall be patched into the code */
  82. /* PCI_COMMAND 16 bit Command */
  83. #define PCI_FBTEN 0x0200 /* Bit 9: Fast Back-To-Back enable */
  84. #define PCI_SERREN 0x0100 /* Bit 8: SERR enable */
  85. #define PCI_ADSTEP 0x0080 /* Bit 7: Address Stepping */
  86. #define PCI_PERREN 0x0040 /* Bit 6: Parity Report Response enable */
  87. #define PCI_VGA_SNOOP 0x0020 /* Bit 5: VGA palette snoop */
  88. #define PCI_MWIEN 0x0010 /* Bit 4: Memory write an inv cycl ena */
  89. #define PCI_SCYCEN 0x0008 /* Bit 3: Special Cycle enable */
  90. #define PCI_BMEN 0x0004 /* Bit 2: Bus Master enable */
  91. #define PCI_MEMEN 0x0002 /* Bit 1: Memory Space Access enable */
  92. #define PCI_IOEN 0x0001 /* Bit 0: IO Space Access enable */
  93. /* PCI_STATUS 16 bit Status */
  94. #define PCI_PERR 0x8000 /* Bit 15: Parity Error */
  95. #define PCI_SERR 0x4000 /* Bit 14: Signaled SERR */
  96. #define PCI_RMABORT 0x2000 /* Bit 13: Received Master Abort */
  97. #define PCI_RTABORT 0x1000 /* Bit 12: Received Target Abort */
  98. #define PCI_STABORT 0x0800 /* Bit 11: Sent Target Abort */
  99. #define PCI_DEVSEL 0x0600 /* Bit 10..9: DEVSEL Timing */
  100. #define PCI_DEV_FAST (0<<9) /* fast */
  101. #define PCI_DEV_MEDIUM (1<<9) /* medium */
  102. #define PCI_DEV_SLOW (2<<9) /* slow */
  103. #define PCI_DATAPERR 0x0100 /* Bit 8: DATA Parity error detected */
  104. #define PCI_FB2BCAP 0x0080 /* Bit 7: Fast Back-to-Back Capability */
  105. #define PCI_UDF 0x0040 /* Bit 6: User Defined Features */
  106. #define PCI_66MHZCAP 0x0020 /* Bit 5: 66 MHz PCI bus clock capable */
  107. #define PCI_NEWCAP 0x0010 /* Bit 4: New cap. list implemented */
  108. #define PCI_ERRBITS (PCI_PERR|PCI_SERR|PCI_RMABORT|PCI_STABORT|PCI_DATAPERR)
  109. /* PCI_REV_ID 8 bit Revision ID */
  110. /* PCI_CLASS_CODE 24 bit Class Code */
  111. /* Byte 2: Base Class (02) */
  112. /* Byte 1: SubClass (02) */
  113. /* Byte 0: Programming Interface (00) */
  114. /* PCI_CACHE_LSZ 8 bit Cache Line Size */
  115. /* Possible values: 0,2,4,8,16 */
  116. /* PCI_LAT_TIM 8 bit Latency Timer */
  117. /* PCI_HEADER_T 8 bit Header Type */
  118. #define PCI_HD_MF_DEV 0x80 /* Bit 7: 0= single, 1= multi-func dev */
  119. #define PCI_HD_TYPE 0x7f /* Bit 6..0: Header Layout 0= normal */
  120. /* PCI_BIST 8 bit Built-in selftest */
  121. #define PCI_BIST_CAP 0x80 /* Bit 7: BIST Capable */
  122. #define PCI_BIST_ST 0x40 /* Bit 6: Start BIST */
  123. #define PCI_BIST_RET 0x0f /* Bit 3..0: Completion Code */
  124. /* PCI_BASE_1ST 32 bit 1st Base address */
  125. #define PCI_MEMSIZE 0x800L /* use 2 kB Memory Base */
  126. #define PCI_MEMBASE_BITS 0xfffff800L /* Bit 31..11: Memory Base Address */
  127. #define PCI_MEMSIZE_BIIS 0x000007f0L /* Bit 10..4: Memory Size Req. */
  128. #define PCI_PREFEN 0x00000008L /* Bit 3: Prefetchable */
  129. #define PCI_MEM_TYP 0x00000006L /* Bit 2..1: Memory Type */
  130. #define PCI_MEM32BIT (0<<1) /* Base addr anywhere in 32 Bit range */
  131. #define PCI_MEM1M (1<<1) /* Base addr below 1 MegaByte */
  132. #define PCI_MEM64BIT (2<<1) /* Base addr anywhere in 64 Bit range */
  133. #define PCI_MEMSPACE 0x00000001L /* Bit 0: Memory Space Indic. */
  134. /* PCI_SUB_VID 16 bit Subsystem Vendor ID */
  135. /* PCI_SUB_ID 16 bit Subsystem ID */
  136. /* PCI_BASE_ROM 32 bit Expansion ROM Base Address */
  137. #define PCI_ROMBASE 0xfffe0000L /* Bit 31..17: ROM BASE address (1st) */
  138. #define PCI_ROMBASZ 0x0001c000L /* Bit 16..14: Treat as BASE or SIZE */
  139. #define PCI_ROMSIZE 0x00003800L /* Bit 13..11: ROM Size Requirements */
  140. #define PCI_ROMEN 0x00000001L /* Bit 0: Address Decode enable */
  141. /* PCI_CAP_PTR 8 bit New Capabilities Pointers */
  142. /* PCI_IRQ_LINE 8 bit Interrupt Line */
  143. /* PCI_IRQ_PIN 8 bit Interrupt Pin */
  144. /* PCI_MIN_GNT 8 bit Min_Gnt */
  145. /* PCI_MAX_LAT 8 bit Max_Lat */
  146. /* Device Dependent Region */
  147. /* PCI_OUR_REG (DV) 32 bit Our Register */
  148. /* PCI_OUR_REG_1 (ML) 32 bit Our Register 1 */
  149. /* Bit 31..29: reserved */
  150. #define PCI_PATCH_DIR (3L<<27) /*(DV) Bit 28..27: Ext Patchs direction */
  151. #define PCI_PATCH_DIR_0 (1L<<27) /*(DV) Type of the pins EXT_PATCHS<1..0> */
  152. #define PCI_PATCH_DIR_1 (1L<<28) /* 0 = input */
  153. /* 1 = output */
  154. #define PCI_EXT_PATCHS (3L<<25) /*(DV) Bit 26..25: Extended Patches */
  155. #define PCI_EXT_PATCH_0 (1L<<25) /*(DV) */
  156. #define PCI_EXT_PATCH_1 (1L<<26) /* CLK for MicroWire (ML) */
  157. #define PCI_VIO (1L<<25) /*(ML) */
  158. #define PCI_EN_BOOT (1L<<24) /* Bit 24: Enable BOOT via ROM */
  159. /* 1 = Don't boot with ROM */
  160. /* 0 = Boot with ROM */
  161. #define PCI_EN_IO (1L<<23) /* Bit 23: Mapping to IO space */
  162. #define PCI_EN_FPROM (1L<<22) /* Bit 22: FLASH mapped to mem? */
  163. /* 1 = Map Flash to Memory */
  164. /* 0 = Disable all addr. decoding */
  165. #define PCI_PAGESIZE (3L<<20) /* Bit 21..20: FLASH Page Size */
  166. #define PCI_PAGE_16 (0L<<20) /* 16 k pages */
  167. #define PCI_PAGE_32K (1L<<20) /* 32 k pages */
  168. #define PCI_PAGE_64K (2L<<20) /* 64 k pages */
  169. #define PCI_PAGE_128K (3L<<20) /* 128 k pages */
  170. /* Bit 19: reserved (ML) and (DV) */
  171. #define PCI_PAGEREG (7L<<16) /* Bit 18..16: Page Register */
  172. /* Bit 15: reserved */
  173. #define PCI_FORCE_BE (1L<<14) /* Bit 14: Assert all BEs on MR */
  174. #define PCI_DIS_MRL (1L<<13) /* Bit 13: Disable Mem R Line */
  175. #define PCI_DIS_MRM (1L<<12) /* Bit 12: Disable Mem R multip */
  176. #define PCI_DIS_MWI (1L<<11) /* Bit 11: Disable Mem W & inv */
  177. #define PCI_DISC_CLS (1L<<10) /* Bit 10: Disc: cacheLsz bound */
  178. #define PCI_BURST_DIS (1L<<9) /* Bit 9: Burst Disable */
  179. #define PCI_BYTE_SWAP (1L<<8) /*(DV) Bit 8: Byte Swap in DATA */
  180. #define PCI_SKEW_DAS (0xfL<<4) /* Bit 7..4: Skew Ctrl, DAS Ext */
  181. #define PCI_SKEW_BASE (0xfL<<0) /* Bit 3..0: Skew Ctrl, Base */
  182. /* PCI_OUR_REG_2 (ML) 32 bit Our Register 2 (Monalisa only) */
  183. #define PCI_VPD_WR_TH (0xffL<<24) /* Bit 24..31 VPD Write Threshold */
  184. #define PCI_DEV_SEL (0x7fL<<17) /* Bit 17..23 EEPROM Device Select */
  185. #define PCI_VPD_ROM_SZ (7L<<14) /* Bit 14..16 VPD ROM Size */
  186. /* Bit 12..13 reserved */
  187. #define PCI_PATCH_DIR2 (0xfL<<8) /* Bit 8..11 Ext Patchs dir 2..5 */
  188. #define PCI_PATCH_DIR_2 (1L<<8) /* Bit 8 CS for MicroWire */
  189. #define PCI_PATCH_DIR_3 (1L<<9)
  190. #define PCI_PATCH_DIR_4 (1L<<10)
  191. #define PCI_PATCH_DIR_5 (1L<<11)
  192. #define PCI_EXT_PATCHS2 (0xfL<<4) /* Bit 4..7 Extended Patches */
  193. #define PCI_EXT_PATCH_2 (1L<<4) /* Bit 4 CS for MicroWire */
  194. #define PCI_EXT_PATCH_3 (1L<<5)
  195. #define PCI_EXT_PATCH_4 (1L<<6)
  196. #define PCI_EXT_PATCH_5 (1L<<7)
  197. #define PCI_EN_DUMMY_RD (1L<<3) /* Bit 3 Enable Dummy Read */
  198. #define PCI_REV_DESC (1L<<2) /* Bit 2 Reverse Desc. Bytes */
  199. #define PCI_USEADDR64 (1L<<1) /* Bit 1 Use 64 Bit Addresse */
  200. #define PCI_USEDATA64 (1L<<0) /* Bit 0 Use 64 Bit Data bus ext*/
  201. /* Power Management Region */
  202. /* PCI_PM_CAP_ID 8 bit (ML) Power Management Cap. ID */
  203. /* PCI_PM_NITEM 8 bit (ML) Next Item Ptr */
  204. /* PCI_PM_CAP_REG 16 bit (ML) Power Management Capabilities*/
  205. #define PCI_PME_SUP (0x1f<<11) /* Bit 11..15 PM Manag. Event Support*/
  206. #define PCI_PM_D2_SUB (1<<10) /* Bit 10 D2 Support Bit */
  207. #define PCI_PM_D1_SUB (1<<9) /* Bit 9 D1 Support Bit */
  208. /* Bit 6..8 reserved */
  209. #define PCI_PM_DSI (1<<5) /* Bit 5 Device Specific Init.*/
  210. #define PCI_PM_APS (1<<4) /* Bit 4 Auxialiary Power Src */
  211. #define PCI_PME_CLOCK (1<<3) /* Bit 3 PM Event Clock */
  212. #define PCI_PM_VER (7<<0) /* Bit 0..2 PM PCI Spec. version */
  213. /* PCI_PM_CTL_STS 16 bit (ML) Power Manag. Control/Status */
  214. #define PCI_PME_STATUS (1<<15) /* Bit 15 PFA doesn't sup. PME#*/
  215. #define PCI_PM_DAT_SCL (3<<13) /* Bit 13..14 dat reg Scaling factor */
  216. #define PCI_PM_DAT_SEL (0xf<<9) /* Bit 9..12 PM data selector field */
  217. /* Bit 7.. 2 reserved */
  218. #define PCI_PM_STATE (3<<0) /* Bit 0.. 1 Power Management State */
  219. #define PCI_PM_STATE_D0 (0<<0) /* D0: Operational (default) */
  220. #define PCI_PM_STATE_D1 (1<<0) /* D1: not supported */
  221. #define PCI_PM_STATE_D2 (2<<0) /* D2: not supported */
  222. #define PCI_PM_STATE_D3 (3<<0) /* D3: HOT, Power Down and Reset */
  223. /* PCI_PM_DAT_REG 8 bit (ML) Power Manag. Data Register */
  224. /* VPD Region */
  225. /* PCI_VPD_CAP_ID 8 bit (ML) VPD Cap. ID */
  226. /* PCI_VPD_NITEM 8 bit (ML) Next Item Ptr */
  227. /* PCI_VPD_ADR_REG 16 bit (ML) VPD Address Register */
  228. #define PCI_VPD_FLAG (1<<15) /* Bit 15 starts VPD rd/wd cycle*/
  229. /* PCI_VPD_DAT_REG 32 bit (ML) VPD Data Register */
  230. /*
  231. * Control Register File:
  232. * Bank 0
  233. */
  234. #define B0_RAP 0x0000 /* 8 bit register address port */
  235. /* 0x0001 - 0x0003: reserved */
  236. #define B0_CTRL 0x0004 /* 8 bit control register */
  237. #define B0_DAS 0x0005 /* 8 Bit control register (DAS) */
  238. #define B0_LED 0x0006 /* 8 Bit LED register */
  239. #define B0_TST_CTRL 0x0007 /* 8 bit test control register */
  240. #define B0_ISRC 0x0008 /* 32 bit Interrupt source register */
  241. #define B0_IMSK 0x000c /* 32 bit Interrupt mask register */
  242. /* 0x0010 - 0x006b: formac+ (supernet_3) fequently used registers */
  243. #define B0_CMDREG1 0x0010 /* write command reg 1 instruction */
  244. #define B0_CMDREG2 0x0014 /* write command reg 2 instruction */
  245. #define B0_ST1U 0x0010 /* read upper 16-bit of status reg 1 */
  246. #define B0_ST1L 0x0014 /* read lower 16-bit of status reg 1 */
  247. #define B0_ST2U 0x0018 /* read upper 16-bit of status reg 2 */
  248. #define B0_ST2L 0x001c /* read lower 16-bit of status reg 2 */
  249. #define B0_MARR 0x0020 /* r/w the memory read addr register */
  250. #define B0_MARW 0x0024 /* r/w the memory write addr register*/
  251. #define B0_MDRU 0x0028 /* r/w upper 16-bit of mem. data reg */
  252. #define B0_MDRL 0x002c /* r/w lower 16-bit of mem. data reg */
  253. #define B0_MDREG3 0x0030 /* r/w Mode Register 3 */
  254. #define B0_ST3U 0x0034 /* read upper 16-bit of status reg 3 */
  255. #define B0_ST3L 0x0038 /* read lower 16-bit of status reg 3 */
  256. #define B0_IMSK3U 0x003c /* r/w upper 16-bit of IMSK reg 3 */
  257. #define B0_IMSK3L 0x0040 /* r/w lower 16-bit of IMSK reg 3 */
  258. #define B0_IVR 0x0044 /* read Interrupt Vector register */
  259. #define B0_IMR 0x0048 /* r/w Interrupt mask register */
  260. /* 0x4c Hidden */
  261. #define B0_CNTRL_A 0x0050 /* control register A (r/w) */
  262. #define B0_CNTRL_B 0x0054 /* control register B (r/w) */
  263. #define B0_INTR_MASK 0x0058 /* interrupt mask (r/w) */
  264. #define B0_XMIT_VECTOR 0x005c /* transmit vector register (r/w) */
  265. #define B0_STATUS_A 0x0060 /* status register A (read only) */
  266. #define B0_STATUS_B 0x0064 /* status register B (read only) */
  267. #define B0_CNTRL_C 0x0068 /* control register C (r/w) */
  268. #define B0_MDREG1 0x006c /* r/w Mode Register 1 */
  269. #define B0_R1_CSR 0x0070 /* 32 bit BMU control/status reg (rec q 1) */
  270. #define B0_R2_CSR 0x0074 /* 32 bit BMU control/status reg (rec q 2)(DV)*/
  271. #define B0_XA_CSR 0x0078 /* 32 bit BMU control/status reg (a xmit q) */
  272. #define B0_XS_CSR 0x007c /* 32 bit BMU control/status reg (s xmit q) */
  273. /*
  274. * Bank 1
  275. * - completely empty (this is the RAP Block window)
  276. * Note: if RAP = 1 this page is reserved
  277. */
  278. /*
  279. * Bank 2
  280. */
  281. #define B2_MAC_0 0x0100 /* 8 bit MAC address Byte 0 */
  282. #define B2_MAC_1 0x0101 /* 8 bit MAC address Byte 1 */
  283. #define B2_MAC_2 0x0102 /* 8 bit MAC address Byte 2 */
  284. #define B2_MAC_3 0x0103 /* 8 bit MAC address Byte 3 */
  285. #define B2_MAC_4 0x0104 /* 8 bit MAC address Byte 4 */
  286. #define B2_MAC_5 0x0105 /* 8 bit MAC address Byte 5 */
  287. #define B2_MAC_6 0x0106 /* 8 bit MAC address Byte 6 (== 0) (DV) */
  288. #define B2_MAC_7 0x0107 /* 8 bit MAC address Byte 7 (== 0) (DV) */
  289. #define B2_CONN_TYP 0x0108 /* 8 bit Connector type */
  290. #define B2_PMD_TYP 0x0109 /* 8 bit PMD type */
  291. /* 0x010a - 0x010b: reserved */
  292. /* Eprom registers are currently of no use */
  293. #define B2_E_0 0x010c /* 8 bit EPROM Byte 0 */
  294. #define B2_E_1 0x010d /* 8 bit EPROM Byte 1 */
  295. #define B2_E_2 0x010e /* 8 bit EPROM Byte 2 */
  296. #define B2_E_3 0x010f /* 8 bit EPROM Byte 3 */
  297. #define B2_FAR 0x0110 /* 32 bit Flash-Prom Address Register/Counter */
  298. #define B2_FDP 0x0114 /* 8 bit Flash-Prom Data Port */
  299. /* 0x0115 - 0x0117: reserved */
  300. #define B2_LD_CRTL 0x0118 /* 8 bit loader control */
  301. #define B2_LD_TEST 0x0119 /* 8 bit loader test */
  302. /* 0x011a - 0x011f: reserved */
  303. #define B2_TI_INI 0x0120 /* 32 bit Timer init value */
  304. #define B2_TI_VAL 0x0124 /* 32 bit Timer value */
  305. #define B2_TI_CRTL 0x0128 /* 8 bit Timer control */
  306. #define B2_TI_TEST 0x0129 /* 8 Bit Timer Test */
  307. /* 0x012a - 0x012f: reserved */
  308. #define B2_WDOG_INI 0x0130 /* 32 bit Watchdog init value */
  309. #define B2_WDOG_VAL 0x0134 /* 32 bit Watchdog value */
  310. #define B2_WDOG_CRTL 0x0138 /* 8 bit Watchdog control */
  311. #define B2_WDOG_TEST 0x0139 /* 8 Bit Watchdog Test */
  312. /* 0x013a - 0x013f: reserved */
  313. #define B2_RTM_INI 0x0140 /* 32 bit RTM init value */
  314. #define B2_RTM_VAL 0x0144 /* 32 bit RTM value */
  315. #define B2_RTM_CRTL 0x0148 /* 8 bit RTM control */
  316. #define B2_RTM_TEST 0x0149 /* 8 Bit RTM Test */
  317. #define B2_TOK_COUNT 0x014c /* (ML) 32 bit Token Counter */
  318. #define B2_DESC_ADDR_H 0x0150 /* (ML) 32 bit Desciptor Base Addr Reg High */
  319. #define B2_CTRL_2 0x0154 /* (ML) 8 bit Control Register 2 */
  320. #define B2_IFACE_REG 0x0155 /* (ML) 8 bit Interface Register */
  321. /* 0x0156: reserved */
  322. #define B2_TST_CTRL_2 0x0157 /* (ML) 8 bit Test Control Register 2 */
  323. #define B2_I2C_CTRL 0x0158 /* (ML) 32 bit I2C Control Register */
  324. #define B2_I2C_DATA 0x015c /* (ML) 32 bit I2C Data Register */
  325. #define B2_IRQ_MOD_INI 0x0160 /* (ML) 32 bit IRQ Moderation Timer Init Reg. */
  326. #define B2_IRQ_MOD_VAL 0x0164 /* (ML) 32 bit IRQ Moderation Timer Value */
  327. #define B2_IRQ_MOD_CTRL 0x0168 /* (ML) 8 bit IRQ Moderation Timer Control */
  328. #define B2_IRQ_MOD_TEST 0x0169 /* (ML) 8 bit IRQ Moderation Timer Test */
  329. /* 0x016a - 0x017f: reserved */
  330. /*
  331. * Bank 3
  332. */
  333. /*
  334. * This is a copy of the Configuration register file (lower half)
  335. */
  336. #define B3_CFG_SPC 0x180
  337. /*
  338. * Bank 4
  339. */
  340. #define B4_R1_D 0x0200 /* 4*32 bit current receive Descriptor */
  341. #define B4_R1_DA 0x0210 /* 32 bit current rec desc address */
  342. #define B4_R1_AC 0x0214 /* 32 bit current receive Address Count */
  343. #define B4_R1_BC 0x0218 /* 32 bit current receive Byte Counter */
  344. #define B4_R1_CSR 0x021c /* 32 bit BMU Control/Status Register */
  345. #define B4_R1_F 0x0220 /* 32 bit flag register */
  346. #define B4_R1_T1 0x0224 /* 32 bit Test Register 1 */
  347. #define B4_R1_T1_TR 0x0224 /* 8 bit Test Register 1 TR */
  348. #define B4_R1_T1_WR 0x0225 /* 8 bit Test Register 1 WR */
  349. #define B4_R1_T1_RD 0x0226 /* 8 bit Test Register 1 RD */
  350. #define B4_R1_T1_SV 0x0227 /* 8 bit Test Register 1 SV */
  351. #define B4_R1_T2 0x0228 /* 32 bit Test Register 2 */
  352. #define B4_R1_T3 0x022c /* 32 bit Test Register 3 */
  353. #define B4_R1_DA_H 0x0230 /* (ML) 32 bit Curr Rx Desc Address High */
  354. #define B4_R1_AC_H 0x0234 /* (ML) 32 bit Curr Addr Counter High dword */
  355. /* 0x0238 - 0x023f: reserved */
  356. /* Receive queue 2 is removed on Monalisa */
  357. #define B4_R2_D 0x0240 /* 4*32 bit current receive Descriptor (q2) */
  358. #define B4_R2_DA 0x0250 /* 32 bit current rec desc address (q2) */
  359. #define B4_R2_AC 0x0254 /* 32 bit current receive Address Count (q2) */
  360. #define B4_R2_BC 0x0258 /* 32 bit current receive Byte Counter (q2) */
  361. #define B4_R2_CSR 0x025c /* 32 bit BMU Control/Status Register (q2) */
  362. #define B4_R2_F 0x0260 /* 32 bit flag register (q2) */
  363. #define B4_R2_T1 0x0264 /* 32 bit Test Register 1 (q2) */
  364. #define B4_R2_T1_TR 0x0264 /* 8 bit Test Register 1 TR (q2) */
  365. #define B4_R2_T1_WR 0x0265 /* 8 bit Test Register 1 WR (q2) */
  366. #define B4_R2_T1_RD 0x0266 /* 8 bit Test Register 1 RD (q2) */
  367. #define B4_R2_T1_SV 0x0267 /* 8 bit Test Register 1 SV (q2) */
  368. #define B4_R2_T2 0x0268 /* 32 bit Test Register 2 (q2) */
  369. #define B4_R2_T3 0x026c /* 32 bit Test Register 3 (q2) */
  370. /* 0x0270 - 0x027c: reserved */
  371. /*
  372. * Bank 5
  373. */
  374. #define B5_XA_D 0x0280 /* 4*32 bit current transmit Descriptor (xa) */
  375. #define B5_XA_DA 0x0290 /* 32 bit current tx desc address (xa) */
  376. #define B5_XA_AC 0x0294 /* 32 bit current tx Address Count (xa) */
  377. #define B5_XA_BC 0x0298 /* 32 bit current tx Byte Counter (xa) */
  378. #define B5_XA_CSR 0x029c /* 32 bit BMU Control/Status Register (xa) */
  379. #define B5_XA_F 0x02a0 /* 32 bit flag register (xa) */
  380. #define B5_XA_T1 0x02a4 /* 32 bit Test Register 1 (xa) */
  381. #define B5_XA_T1_TR 0x02a4 /* 8 bit Test Register 1 TR (xa) */
  382. #define B5_XA_T1_WR 0x02a5 /* 8 bit Test Register 1 WR (xa) */
  383. #define B5_XA_T1_RD 0x02a6 /* 8 bit Test Register 1 RD (xa) */
  384. #define B5_XA_T1_SV 0x02a7 /* 8 bit Test Register 1 SV (xa) */
  385. #define B5_XA_T2 0x02a8 /* 32 bit Test Register 2 (xa) */
  386. #define B5_XA_T3 0x02ac /* 32 bit Test Register 3 (xa) */
  387. #define B5_XA_DA_H 0x02b0 /* (ML) 32 bit Curr Tx Desc Address High */
  388. #define B5_XA_AC_H 0x02b4 /* (ML) 32 bit Curr Addr Counter High dword */
  389. /* 0x02b8 - 0x02bc: reserved */
  390. #define B5_XS_D 0x02c0 /* 4*32 bit current transmit Descriptor (xs) */
  391. #define B5_XS_DA 0x02d0 /* 32 bit current tx desc address (xs) */
  392. #define B5_XS_AC 0x02d4 /* 32 bit current transmit Address Count(xs) */
  393. #define B5_XS_BC 0x02d8 /* 32 bit current transmit Byte Counter (xs) */
  394. #define B5_XS_CSR 0x02dc /* 32 bit BMU Control/Status Register (xs) */
  395. #define B5_XS_F 0x02e0 /* 32 bit flag register (xs) */
  396. #define B5_XS_T1 0x02e4 /* 32 bit Test Register 1 (xs) */
  397. #define B5_XS_T1_TR 0x02e4 /* 8 bit Test Register 1 TR (xs) */
  398. #define B5_XS_T1_WR 0x02e5 /* 8 bit Test Register 1 WR (xs) */
  399. #define B5_XS_T1_RD 0x02e6 /* 8 bit Test Register 1 RD (xs) */
  400. #define B5_XS_T1_SV 0x02e7 /* 8 bit Test Register 1 SV (xs) */
  401. #define B5_XS_T2 0x02e8 /* 32 bit Test Register 2 (xs) */
  402. #define B5_XS_T3 0x02ec /* 32 bit Test Register 3 (xs) */
  403. #define B5_XS_DA_H 0x02f0 /* (ML) 32 bit Curr Tx Desc Address High */
  404. #define B5_XS_AC_H 0x02f4 /* (ML) 32 bit Curr Addr Counter High dword */
  405. /* 0x02f8 - 0x02fc: reserved */
  406. /*
  407. * Bank 6
  408. */
  409. /* External PLC-S registers (SN2 compatibility for DV) */
  410. /* External registers (ML) */
  411. #define B6_EXT_REG 0x300
  412. /*
  413. * Bank 7
  414. */
  415. /* DAS PLC-S Registers */
  416. /*
  417. * Bank 8 - 15
  418. */
  419. /* IFCP registers */
  420. /*---------------------------------------------------------------------------*/
  421. /* Definitions of the Bits in the registers */
  422. /* B0_RAP 16 bit register address port */
  423. #define RAP_RAP 0x0f /* Bit 3..0: 0 = block0, .., f = block15 */
  424. /* B0_CTRL 8 bit control register */
  425. #define CTRL_FDDI_CLR (1<<7) /* Bit 7: (ML) Clear FDDI Reset */
  426. #define CTRL_FDDI_SET (1<<6) /* Bit 6: (ML) Set FDDI Reset */
  427. #define CTRL_HPI_CLR (1<<5) /* Bit 5: Clear HPI SM reset */
  428. #define CTRL_HPI_SET (1<<4) /* Bit 4: Set HPI SM reset */
  429. #define CTRL_MRST_CLR (1<<3) /* Bit 3: Clear Master reset */
  430. #define CTRL_MRST_SET (1<<2) /* Bit 2: Set Master reset */
  431. #define CTRL_RST_CLR (1<<1) /* Bit 1: Clear Software reset */
  432. #define CTRL_RST_SET (1<<0) /* Bit 0: Set Software reset */
  433. /* B0_DAS 8 Bit control register (DAS) */
  434. #define BUS_CLOCK (1<<7) /* Bit 7: (ML) Bus Clock 0/1 = 33/66MHz */
  435. #define BUS_SLOT_SZ (1<<6) /* Bit 6: (ML) Slot Size 0/1 = 32/64 bit slot*/
  436. /* Bit 5..4: reserved */
  437. #define DAS_AVAIL (1<<3) /* Bit 3: 1 = DAS, 0 = SAS */
  438. #define DAS_BYP_ST (1<<2) /* Bit 2: 1 = avail,SAS, 0 = not avail */
  439. #define DAS_BYP_INS (1<<1) /* Bit 1: 1 = insert Bypass */
  440. #define DAS_BYP_RMV (1<<0) /* Bit 0: 1 = remove Bypass */
  441. /* B0_LED 8 Bit LED register */
  442. /* Bit 7..6: reserved */
  443. #define LED_2_ON (1<<5) /* Bit 5: 1 = switch LED_2 on (left,gn)*/
  444. #define LED_2_OFF (1<<4) /* Bit 4: 1 = switch LED_2 off */
  445. #define LED_1_ON (1<<3) /* Bit 3: 1 = switch LED_1 on (mid,yel)*/
  446. #define LED_1_OFF (1<<2) /* Bit 2: 1 = switch LED_1 off */
  447. #define LED_0_ON (1<<1) /* Bit 1: 1 = switch LED_0 on (rght,gn)*/
  448. #define LED_0_OFF (1<<0) /* Bit 0: 1 = switch LED_0 off */
  449. /* This hardware defines are very ugly therefore we define some others */
  450. #define LED_GA_ON LED_2_ON /* S port = A port */
  451. #define LED_GA_OFF LED_2_OFF /* S port = A port */
  452. #define LED_MY_ON LED_1_ON
  453. #define LED_MY_OFF LED_1_OFF
  454. #define LED_GB_ON LED_0_ON
  455. #define LED_GB_OFF LED_0_OFF
  456. /* B0_TST_CTRL 8 bit test control register */
  457. #define TST_FRC_DPERR_MR (1<<7) /* Bit 7: force DATAPERR on MST RE. */
  458. #define TST_FRC_DPERR_MW (1<<6) /* Bit 6: force DATAPERR on MST WR. */
  459. #define TST_FRC_DPERR_TR (1<<5) /* Bit 5: force DATAPERR on TRG RE. */
  460. #define TST_FRC_DPERR_TW (1<<4) /* Bit 4: force DATAPERR on TRG WR. */
  461. #define TST_FRC_APERR_M (1<<3) /* Bit 3: force ADDRPERR on MST */
  462. #define TST_FRC_APERR_T (1<<2) /* Bit 2: force ADDRPERR on TRG */
  463. #define TST_CFG_WRITE_ON (1<<1) /* Bit 1: ena configuration reg. WR */
  464. #define TST_CFG_WRITE_OFF (1<<0) /* Bit 0: dis configuration reg. WR */
  465. /* B0_ISRC 32 bit Interrupt source register */
  466. /* Bit 31..28: reserved */
  467. #define IS_I2C_READY (1L<<27) /* Bit 27: (ML) IRQ on end of I2C tx */
  468. #define IS_IRQ_SW (1L<<26) /* Bit 26: (ML) SW forced IRQ */
  469. #define IS_EXT_REG (1L<<25) /* Bit 25: (ML) IRQ from external reg*/
  470. #define IS_IRQ_STAT (1L<<24) /* Bit 24: IRQ status exception */
  471. /* PERR, RMABORT, RTABORT DATAPERR */
  472. #define IS_IRQ_MST_ERR (1L<<23) /* Bit 23: IRQ master error */
  473. /* RMABORT, RTABORT, DATAPERR */
  474. #define IS_TIMINT (1L<<22) /* Bit 22: IRQ_TIMER */
  475. #define IS_TOKEN (1L<<21) /* Bit 21: IRQ_RTM */
  476. /*
  477. * Note: The DAS is our First Port (!=PA)
  478. */
  479. #define IS_PLINT1 (1L<<20) /* Bit 20: IRQ_PHY_DAS */
  480. #define IS_PLINT2 (1L<<19) /* Bit 19: IRQ_IFCP_4 */
  481. #define IS_MINTR3 (1L<<18) /* Bit 18: IRQ_IFCP_3/IRQ_PHY */
  482. #define IS_MINTR2 (1L<<17) /* Bit 17: IRQ_IFCP_2/IRQ_MAC_2 */
  483. #define IS_MINTR1 (1L<<16) /* Bit 16: IRQ_IFCP_1/IRQ_MAC_1 */
  484. /* Receive Queue 1 */
  485. #define IS_R1_P (1L<<15) /* Bit 15: Parity Error (q1) */
  486. #define IS_R1_B (1L<<14) /* Bit 14: End of Buffer (q1) */
  487. #define IS_R1_F (1L<<13) /* Bit 13: End of Frame (q1) */
  488. #define IS_R1_C (1L<<12) /* Bit 12: Encoding Error (q1) */
  489. /* Receive Queue 2 */
  490. #define IS_R2_P (1L<<11) /* Bit 11: (DV) Parity Error (q2) */
  491. #define IS_R2_B (1L<<10) /* Bit 10: (DV) End of Buffer (q2) */
  492. #define IS_R2_F (1L<<9) /* Bit 9: (DV) End of Frame (q2) */
  493. #define IS_R2_C (1L<<8) /* Bit 8: (DV) Encoding Error (q2) */
  494. /* Asynchronous Transmit queue */
  495. /* Bit 7: reserved */
  496. #define IS_XA_B (1L<<6) /* Bit 6: End of Buffer (xa) */
  497. #define IS_XA_F (1L<<5) /* Bit 5: End of Frame (xa) */
  498. #define IS_XA_C (1L<<4) /* Bit 4: Encoding Error (xa) */
  499. /* Synchronous Transmit queue */
  500. /* Bit 3: reserved */
  501. #define IS_XS_B (1L<<2) /* Bit 2: End of Buffer (xs) */
  502. #define IS_XS_F (1L<<1) /* Bit 1: End of Frame (xs) */
  503. #define IS_XS_C (1L<<0) /* Bit 0: Encoding Error (xs) */
  504. /*
  505. * Define all valid interrupt source Bits from GET_ISR ()
  506. */
  507. #define ALL_IRSR 0x01ffff77L /* (DV) */
  508. #define ALL_IRSR_ML 0x0ffff077L /* (ML) */
  509. /* B0_IMSK 32 bit Interrupt mask register */
  510. /*
  511. * The Bit definnition of this register are the same as of the interrupt
  512. * source register. These definition are directly derived from the Hardware
  513. * spec.
  514. */
  515. /* Bit 31..28: reserved */
  516. #define IRQ_I2C_READY (1L<<27) /* Bit 27: (ML) IRQ on end of I2C tx */
  517. #define IRQ_SW (1L<<26) /* Bit 26: (ML) SW forced IRQ */
  518. #define IRQ_EXT_REG (1L<<25) /* Bit 25: (ML) IRQ from external reg*/
  519. #define IRQ_STAT (1L<<24) /* Bit 24: IRQ status exception */
  520. /* PERR, RMABORT, RTABORT DATAPERR */
  521. #define IRQ_MST_ERR (1L<<23) /* Bit 23: IRQ master error */
  522. /* RMABORT, RTABORT, DATAPERR */
  523. #define IRQ_TIMER (1L<<22) /* Bit 22: IRQ_TIMER */
  524. #define IRQ_RTM (1L<<21) /* Bit 21: IRQ_RTM */
  525. #define IRQ_DAS (1L<<20) /* Bit 20: IRQ_PHY_DAS */
  526. #define IRQ_IFCP_4 (1L<<19) /* Bit 19: IRQ_IFCP_4 */
  527. #define IRQ_IFCP_3 (1L<<18) /* Bit 18: IRQ_IFCP_3/IRQ_PHY */
  528. #define IRQ_IFCP_2 (1L<<17) /* Bit 17: IRQ_IFCP_2/IRQ_MAC_2 */
  529. #define IRQ_IFCP_1 (1L<<16) /* Bit 16: IRQ_IFCP_1/IRQ_MAC_1 */
  530. /* Receive Queue 1 */
  531. #define IRQ_R1_P (1L<<15) /* Bit 15: Parity Error (q1) */
  532. #define IRQ_R1_B (1L<<14) /* Bit 14: End of Buffer (q1) */
  533. #define IRQ_R1_F (1L<<13) /* Bit 13: End of Frame (q1) */
  534. #define IRQ_R1_C (1L<<12) /* Bit 12: Encoding Error (q1) */
  535. /* Receive Queue 2 */
  536. #define IRQ_R2_P (1L<<11) /* Bit 11: (DV) Parity Error (q2) */
  537. #define IRQ_R2_B (1L<<10) /* Bit 10: (DV) End of Buffer (q2) */
  538. #define IRQ_R2_F (1L<<9) /* Bit 9: (DV) End of Frame (q2) */
  539. #define IRQ_R2_C (1L<<8) /* Bit 8: (DV) Encoding Error (q2) */
  540. /* Asynchronous Transmit queue */
  541. /* Bit 7: reserved */
  542. #define IRQ_XA_B (1L<<6) /* Bit 6: End of Buffer (xa) */
  543. #define IRQ_XA_F (1L<<5) /* Bit 5: End of Frame (xa) */
  544. #define IRQ_XA_C (1L<<4) /* Bit 4: Encoding Error (xa) */
  545. /* Synchronous Transmit queue */
  546. /* Bit 3: reserved */
  547. #define IRQ_XS_B (1L<<2) /* Bit 2: End of Buffer (xs) */
  548. #define IRQ_XS_F (1L<<1) /* Bit 1: End of Frame (xs) */
  549. #define IRQ_XS_C (1L<<0) /* Bit 0: Encoding Error (xs) */
  550. /* 0x0010 - 0x006b: formac+ (supernet_3) fequently used registers */
  551. /* B0_R1_CSR 32 bit BMU control/status reg (rec q 1 ) */
  552. /* B0_R2_CSR 32 bit BMU control/status reg (rec q 2 ) */
  553. /* B0_XA_CSR 32 bit BMU control/status reg (a xmit q ) */
  554. /* B0_XS_CSR 32 bit BMU control/status reg (s xmit q ) */
  555. /* The registers are the same as B4_R1_CSR, B4_R2_CSR, B5_Xa_CSR, B5_XS_CSR */
  556. /* B2_MAC_0 8 bit MAC address Byte 0 */
  557. /* B2_MAC_1 8 bit MAC address Byte 1 */
  558. /* B2_MAC_2 8 bit MAC address Byte 2 */
  559. /* B2_MAC_3 8 bit MAC address Byte 3 */
  560. /* B2_MAC_4 8 bit MAC address Byte 4 */
  561. /* B2_MAC_5 8 bit MAC address Byte 5 */
  562. /* B2_MAC_6 8 bit MAC address Byte 6 (== 0) (DV) */
  563. /* B2_MAC_7 8 bit MAC address Byte 7 (== 0) (DV) */
  564. /* B2_CONN_TYP 8 bit Connector type */
  565. /* B2_PMD_TYP 8 bit PMD type */
  566. /* Values of connector and PMD type comply to SysKonnect internal std */
  567. /* The EPROM register are currently of no use */
  568. /* B2_E_0 8 bit EPROM Byte 0 */
  569. /* B2_E_1 8 bit EPROM Byte 1 */
  570. /* B2_E_2 8 bit EPROM Byte 2 */
  571. /* B2_E_3 8 bit EPROM Byte 3 */
  572. /* B2_FAR 32 bit Flash-Prom Address Register/Counter */
  573. #define FAR_ADDR 0x1ffffL /* Bit 16..0: FPROM Address mask */
  574. /* B2_FDP 8 bit Flash-Prom Data Port */
  575. /* B2_LD_CRTL 8 bit loader control */
  576. /* Bits are currently reserved */
  577. /* B2_LD_TEST 8 bit loader test */
  578. #define LD_T_ON (1<<3) /* Bit 3: Loader Testmode on */
  579. #define LD_T_OFF (1<<2) /* Bit 2: Loader Testmode off */
  580. #define LD_T_STEP (1<<1) /* Bit 1: Decrement FPROM addr. Counter */
  581. #define LD_START (1<<0) /* Bit 0: Start loading FPROM */
  582. /* B2_TI_INI 32 bit Timer init value */
  583. /* B2_TI_VAL 32 bit Timer value */
  584. /* B2_TI_CRTL 8 bit Timer control */
  585. /* B2_TI_TEST 8 Bit Timer Test */
  586. /* B2_WDOG_INI 32 bit Watchdog init value */
  587. /* B2_WDOG_VAL 32 bit Watchdog value */
  588. /* B2_WDOG_CRTL 8 bit Watchdog control */
  589. /* B2_WDOG_TEST 8 Bit Watchdog Test */
  590. /* B2_RTM_INI 32 bit RTM init value */
  591. /* B2_RTM_VAL 32 bit RTM value */
  592. /* B2_RTM_CRTL 8 bit RTM control */
  593. /* B2_RTM_TEST 8 Bit RTM Test */
  594. /* B2_<TIM>_CRTL 8 bit <TIM> control */
  595. /* B2_IRQ_MOD_INI 32 bit IRQ Moderation Timer Init Reg. (ML) */
  596. /* B2_IRQ_MOD_VAL 32 bit IRQ Moderation Timer Value (ML) */
  597. /* B2_IRQ_MOD_CTRL 8 bit IRQ Moderation Timer Control (ML) */
  598. /* B2_IRQ_MOD_TEST 8 bit IRQ Moderation Timer Test (ML) */
  599. #define GET_TOK_CT (1<<4) /* Bit 4: Get the Token Counter (RTM) */
  600. #define TIM_RES_TOK (1<<3) /* Bit 3: RTM Status: 1 == restricted */
  601. #define TIM_ALARM (1<<3) /* Bit 3: Timer Alarm (WDOG) */
  602. #define TIM_START (1<<2) /* Bit 2: Start Timer (TI,WDOG,RTM,IRQ_MOD)*/
  603. #define TIM_STOP (1<<1) /* Bit 1: Stop Timer (TI,WDOG,RTM,IRQ_MOD) */
  604. #define TIM_CL_IRQ (1<<0) /* Bit 0: Clear Timer IRQ (TI,WDOG,RTM) */
  605. /* B2_<TIM>_TEST 8 Bit <TIM> Test */
  606. #define TIM_T_ON (1<<2) /* Bit 2: Test mode on (TI,WDOG,RTM,IRQ_MOD) */
  607. #define TIM_T_OFF (1<<1) /* Bit 1: Test mode off (TI,WDOG,RTM,IRQ_MOD) */
  608. #define TIM_T_STEP (1<<0) /* Bit 0: Test step (TI,WDOG,RTM,IRQ_MOD) */
  609. /* B2_TOK_COUNT 0x014c (ML) 32 bit Token Counter */
  610. /* B2_DESC_ADDR_H 0x0150 (ML) 32 bit Desciptor Base Addr Reg High */
  611. /* B2_CTRL_2 0x0154 (ML) 8 bit Control Register 2 */
  612. /* Bit 7..5: reserved */
  613. #define CTRL_CL_I2C_IRQ (1<<4) /* Bit 4: Clear I2C IRQ */
  614. #define CTRL_ST_SW_IRQ (1<<3) /* Bit 3: Set IRQ SW Request */
  615. #define CTRL_CL_SW_IRQ (1<<2) /* Bit 2: Clear IRQ SW Request */
  616. #define CTRL_STOP_DONE (1<<1) /* Bit 1: Stop Master is finished */
  617. #define CTRL_STOP_MAST (1<<0) /* Bit 0: Command Bit to stop the master*/
  618. /* B2_IFACE_REG 0x0155 (ML) 8 bit Interface Register */
  619. /* Bit 7..3: reserved */
  620. #define IF_I2C_DATA_DIR (1<<2) /* Bit 2: direction of IF_I2C_DATA*/
  621. #define IF_I2C_DATA (1<<1) /* Bit 1: I2C Data Port */
  622. #define IF_I2C_CLK (1<<0) /* Bit 0: I2C Clock Port */
  623. /* 0x0156: reserved */
  624. /* B2_TST_CTRL_2 0x0157 (ML) 8 bit Test Control Register 2 */
  625. /* Bit 7..4: reserved */
  626. /* force the following error on */
  627. /* the next master read/write */
  628. #define TST_FRC_DPERR_MR64 (1<<3) /* Bit 3: DataPERR RD 64 */
  629. #define TST_FRC_DPERR_MW64 (1<<2) /* Bit 2: DataPERR WR 64 */
  630. #define TST_FRC_APERR_1M64 (1<<1) /* Bit 1: AddrPERR on 1. phase */
  631. #define TST_FRC_APERR_2M64 (1<<0) /* Bit 0: AddrPERR on 2. phase */
  632. /* B2_I2C_CTRL 0x0158 (ML) 32 bit I2C Control Register */
  633. #define I2C_FLAG (1L<<31) /* Bit 31: Start read/write if WR */
  634. #define I2C_ADDR (0x7fffL<<16) /* Bit 30..16: Addr to be read/written*/
  635. #define I2C_DEV_SEL (0x7fL<<9) /* Bit 9..15: I2C Device Select */
  636. /* Bit 5.. 8: reserved */
  637. #define I2C_BURST_LEN (1L<<4) /* Bit 4 Burst Len, 1/4 bytes */
  638. #define I2C_DEV_SIZE (7L<<1) /* Bit 1.. 3: I2C Device Size */
  639. #define I2C_025K_DEV (0L<<1) /* 0: 256 Bytes or smaller*/
  640. #define I2C_05K_DEV (1L<<1) /* 1: 512 Bytes */
  641. #define I2C_1K_DEV (2L<<1) /* 2: 1024 Bytes */
  642. #define I2C_2K_DEV (3L<<1) /* 3: 2048 Bytes */
  643. #define I2C_4K_DEV (4L<<1) /* 4: 4096 Bytes */
  644. #define I2C_8K_DEV (5L<<1) /* 5: 8192 Bytes */
  645. #define I2C_16K_DEV (6L<<1) /* 6: 16384 Bytes */
  646. #define I2C_32K_DEV (7L<<1) /* 7: 32768 Bytes */
  647. #define I2C_STOP_BIT (1<<0) /* Bit 0: Interrupt I2C transfer */
  648. /*
  649. * I2C Addresses
  650. *
  651. * The temperature sensor and the voltage sensor are on the same I2C bus.
  652. * Note: The voltage sensor (Micorwire) will be selected by PCI_EXT_PATCH_1
  653. * in PCI_OUR_REG 1.
  654. */
  655. #define I2C_ADDR_TEMP 0x90 /* I2C Address Temperature Sensor */
  656. /* B2_I2C_DATA 0x015c (ML) 32 bit I2C Data Register */
  657. /* B4_R1_D 4*32 bit current receive Descriptor (q1) */
  658. /* B4_R1_DA 32 bit current rec desc address (q1) */
  659. /* B4_R1_AC 32 bit current receive Address Count (q1) */
  660. /* B4_R1_BC 32 bit current receive Byte Counter (q1) */
  661. /* B4_R1_CSR 32 bit BMU Control/Status Register (q1) */
  662. /* B4_R1_F 32 bit flag register (q1) */
  663. /* B4_R1_T1 32 bit Test Register 1 (q1) */
  664. /* B4_R1_T2 32 bit Test Register 2 (q1) */
  665. /* B4_R1_T3 32 bit Test Register 3 (q1) */
  666. /* B4_R2_D 4*32 bit current receive Descriptor (q2) */
  667. /* B4_R2_DA 32 bit current rec desc address (q2) */
  668. /* B4_R2_AC 32 bit current receive Address Count (q2) */
  669. /* B4_R2_BC 32 bit current receive Byte Counter (q2) */
  670. /* B4_R2_CSR 32 bit BMU Control/Status Register (q2) */
  671. /* B4_R2_F 32 bit flag register (q2) */
  672. /* B4_R2_T1 32 bit Test Register 1 (q2) */
  673. /* B4_R2_T2 32 bit Test Register 2 (q2) */
  674. /* B4_R2_T3 32 bit Test Register 3 (q2) */
  675. /* B5_XA_D 4*32 bit current receive Descriptor (xa) */
  676. /* B5_XA_DA 32 bit current rec desc address (xa) */
  677. /* B5_XA_AC 32 bit current receive Address Count (xa) */
  678. /* B5_XA_BC 32 bit current receive Byte Counter (xa) */
  679. /* B5_XA_CSR 32 bit BMU Control/Status Register (xa) */
  680. /* B5_XA_F 32 bit flag register (xa) */
  681. /* B5_XA_T1 32 bit Test Register 1 (xa) */
  682. /* B5_XA_T2 32 bit Test Register 2 (xa) */
  683. /* B5_XA_T3 32 bit Test Register 3 (xa) */
  684. /* B5_XS_D 4*32 bit current receive Descriptor (xs) */
  685. /* B5_XS_DA 32 bit current rec desc address (xs) */
  686. /* B5_XS_AC 32 bit current receive Address Count (xs) */
  687. /* B5_XS_BC 32 bit current receive Byte Counter (xs) */
  688. /* B5_XS_CSR 32 bit BMU Control/Status Register (xs) */
  689. /* B5_XS_F 32 bit flag register (xs) */
  690. /* B5_XS_T1 32 bit Test Register 1 (xs) */
  691. /* B5_XS_T2 32 bit Test Register 2 (xs) */
  692. /* B5_XS_T3 32 bit Test Register 3 (xs) */
  693. /* B5_<xx>_CSR 32 bit BMU Control/Status Register (xx) */
  694. #define CSR_DESC_CLEAR (1L<<21) /* Bit 21: Clear Reset for Descr */
  695. #define CSR_DESC_SET (1L<<20) /* Bit 20: Set Reset for Descr */
  696. #define CSR_FIFO_CLEAR (1L<<19) /* Bit 19: Clear Reset for FIFO */
  697. #define CSR_FIFO_SET (1L<<18) /* Bit 18: Set Reset for FIFO */
  698. #define CSR_HPI_RUN (1L<<17) /* Bit 17: Release HPI SM */
  699. #define CSR_HPI_RST (1L<<16) /* Bit 16: Reset HPI SM to Idle */
  700. #define CSR_SV_RUN (1L<<15) /* Bit 15: Release Supervisor SM */
  701. #define CSR_SV_RST (1L<<14) /* Bit 14: Reset Supervisor SM */
  702. #define CSR_DREAD_RUN (1L<<13) /* Bit 13: Release Descr Read SM */
  703. #define CSR_DREAD_RST (1L<<12) /* Bit 12: Reset Descr Read SM */
  704. #define CSR_DWRITE_RUN (1L<<11) /* Bit 11: Rel. Descr Write SM */
  705. #define CSR_DWRITE_RST (1L<<10) /* Bit 10: Reset Descr Write SM */
  706. #define CSR_TRANS_RUN (1L<<9) /* Bit 9: Release Transfer SM */
  707. #define CSR_TRANS_RST (1L<<8) /* Bit 8: Reset Transfer SM */
  708. /* Bit 7..5: reserved */
  709. #define CSR_START (1L<<4) /* Bit 4: Start Rec/Xmit Queue */
  710. #define CSR_IRQ_CL_P (1L<<3) /* Bit 3: Clear Parity IRQ, Rcv */
  711. #define CSR_IRQ_CL_B (1L<<2) /* Bit 2: Clear EOB IRQ */
  712. #define CSR_IRQ_CL_F (1L<<1) /* Bit 1: Clear EOF IRQ */
  713. #define CSR_IRQ_CL_C (1L<<0) /* Bit 0: Clear ERR IRQ */
  714. #define CSR_SET_RESET (CSR_DESC_SET|CSR_FIFO_SET|CSR_HPI_RST|CSR_SV_RST|\
  715. CSR_DREAD_RST|CSR_DWRITE_RST|CSR_TRANS_RST)
  716. #define CSR_CLR_RESET (CSR_DESC_CLEAR|CSR_FIFO_CLEAR|CSR_HPI_RUN|CSR_SV_RUN|\
  717. CSR_DREAD_RUN|CSR_DWRITE_RUN|CSR_TRANS_RUN)
  718. /* B5_<xx>_F 32 bit flag register (xx) */
  719. /* Bit 28..31: reserved */
  720. #define F_ALM_FULL (1L<<27) /* Bit 27: (ML) FIFO almost full */
  721. #define F_FIFO_EOF (1L<<26) /* Bit 26: (ML) Fag bit in FIFO */
  722. #define F_WM_REACHED (1L<<25) /* Bit 25: (ML) Watermark reached */
  723. #define F_UP_DW_USED (1L<<24) /* Bit 24: (ML) Upper Dword used (bug)*/
  724. /* Bit 23: reserved */
  725. #define F_FIFO_LEVEL (0x1fL<<16) /* Bit 16..22:(ML) # of Qwords in FIFO*/
  726. /* Bit 8..15: reserved */
  727. #define F_ML_WATER_M 0x0000ffL /* Bit 0.. 7:(ML) Watermark */
  728. #define FLAG_WATER 0x00001fL /* Bit 4..0:(DV) Level of req data tr.*/
  729. /* B5_<xx>_T1 32 bit Test Register 1 (xx) */
  730. /* Holds four State Machine control Bytes */
  731. #define SM_CRTL_SV (0xffL<<24) /* Bit 31..24: Control Supervisor SM */
  732. #define SM_CRTL_RD (0xffL<<16) /* Bit 23..16: Control Read Desc SM */
  733. #define SM_CRTL_WR (0xffL<<8) /* Bit 15..8: Control Write Desc SM */
  734. #define SM_CRTL_TR (0xffL<<0) /* Bit 7..0: Control Transfer SM */
  735. /* B4_<xx>_T1_TR 8 bit Test Register 1 TR (xx) */
  736. /* B4_<xx>_T1_WR 8 bit Test Register 1 WR (xx) */
  737. /* B4_<xx>_T1_RD 8 bit Test Register 1 RD (xx) */
  738. /* B4_<xx>_T1_SV 8 bit Test Register 1 SV (xx) */
  739. /* The control status byte of each machine looks like ... */
  740. #define SM_STATE 0xf0 /* Bit 7..4: State which shall be loaded */
  741. #define SM_LOAD 0x08 /* Bit 3: Load the SM with SM_STATE */
  742. #define SM_TEST_ON 0x04 /* Bit 2: Switch on SM Test Mode */
  743. #define SM_TEST_OFF 0x02 /* Bit 1: Go off the Test Mode */
  744. #define SM_STEP 0x01 /* Bit 0: Step the State Machine */
  745. /* The coding of the states */
  746. #define SM_SV_IDLE 0x0 /* Supervisor Idle Tr/Re */
  747. #define SM_SV_RES_START 0x1 /* Supervisor Res_Start Tr/Re */
  748. #define SM_SV_GET_DESC 0x3 /* Supervisor Get_Desc Tr/Re */
  749. #define SM_SV_CHECK 0x2 /* Supervisor Check Tr/Re */
  750. #define SM_SV_MOV_DATA 0x6 /* Supervisor Move_Data Tr/Re */
  751. #define SM_SV_PUT_DESC 0x7 /* Supervisor Put_Desc Tr/Re */
  752. #define SM_SV_SET_IRQ 0x5 /* Supervisor Set_Irq Tr/Re */
  753. #define SM_RD_IDLE 0x0 /* Read Desc. Idle Tr/Re */
  754. #define SM_RD_LOAD 0x1 /* Read Desc. Load Tr/Re */
  755. #define SM_RD_WAIT_TC 0x3 /* Read Desc. Wait_TC Tr/Re */
  756. #define SM_RD_RST_EOF 0x6 /* Read Desc. Reset_EOF Re */
  757. #define SM_RD_WDONE_R 0x2 /* Read Desc. Wait_Done Re */
  758. #define SM_RD_WDONE_T 0x4 /* Read Desc. Wait_Done Tr */
  759. #define SM_TR_IDLE 0x0 /* Trans. Data Idle Tr/Re */
  760. #define SM_TR_LOAD 0x3 /* Trans. Data Load Tr/Re */
  761. #define SM_TR_LOAD_R_ML 0x1 /* Trans. Data Load /Re (ML) */
  762. #define SM_TR_WAIT_TC 0x2 /* Trans. Data Wait_TC Tr/Re */
  763. #define SM_TR_WDONE 0x4 /* Trans. Data Wait_Done Tr/Re */
  764. #define SM_WR_IDLE 0x0 /* Write Desc. Idle Tr/Re */
  765. #define SM_WR_ABLEN 0x1 /* Write Desc. Act_Buf_Length Tr/Re */
  766. #define SM_WR_LD_A4 0x2 /* Write Desc. Load_A4 Re */
  767. #define SM_WR_RES_OWN 0x2 /* Write Desc. Res_OWN Tr */
  768. #define SM_WR_WAIT_EOF 0x3 /* Write Desc. Wait_EOF Re */
  769. #define SM_WR_LD_N2C_R 0x4 /* Write Desc. Load_N2C Re */
  770. #define SM_WR_WAIT_TC_R 0x5 /* Write Desc. Wait_TC Re */
  771. #define SM_WR_WAIT_TC4 0x6 /* Write Desc. Wait_TC4 Re */
  772. #define SM_WR_LD_A_T 0x6 /* Write Desc. Load_A Tr */
  773. #define SM_WR_LD_A_R 0x7 /* Write Desc. Load_A Re */
  774. #define SM_WR_WAIT_TC_T 0x7 /* Write Desc. Wait_TC Tr */
  775. #define SM_WR_LD_N2C_T 0xc /* Write Desc. Load_N2C Tr */
  776. #define SM_WR_WDONE_T 0x9 /* Write Desc. Wait_Done Tr */
  777. #define SM_WR_WDONE_R 0xc /* Write Desc. Wait_Done Re */
  778. #define SM_WR_LD_D_AD 0xe /* Write Desc. Load_Dumr_A Re (ML) */
  779. #define SM_WR_WAIT_D_TC 0xf /* Write Desc. Wait_Dumr_TC Re (ML) */
  780. /* B5_<xx>_T2 32 bit Test Register 2 (xx) */
  781. /* Note: This register is only defined for the transmit queues */
  782. /* Bit 31..8: reserved */
  783. #define AC_TEST_ON (1<<7) /* Bit 7: Address Counter Test Mode on */
  784. #define AC_TEST_OFF (1<<6) /* Bit 6: Address Counter Test Mode off*/
  785. #define BC_TEST_ON (1<<5) /* Bit 5: Byte Counter Test Mode on */
  786. #define BC_TEST_OFF (1<<4) /* Bit 4: Byte Counter Test Mode off */
  787. #define TEST_STEP04 (1<<3) /* Bit 3: Inc AC/Dec BC by 4 */
  788. #define TEST_STEP03 (1<<2) /* Bit 2: Inc AC/Dec BC by 3 */
  789. #define TEST_STEP02 (1<<1) /* Bit 1: Inc AC/Dec BC by 2 */
  790. #define TEST_STEP01 (1<<0) /* Bit 0: Inc AC/Dec BC by 1 */
  791. /* B5_<xx>_T3 32 bit Test Register 3 (xx) */
  792. /* Note: This register is only defined for the transmit queues */
  793. /* Bit 31..8: reserved */
  794. #define T3_MUX_2 (1<<7) /* Bit 7: (ML) Mux position MSB */
  795. #define T3_VRAM_2 (1<<6) /* Bit 6: (ML) Virtual RAM buffer addr MSB */
  796. #define T3_LOOP (1<<5) /* Bit 5: Set Loopback (Xmit) */
  797. #define T3_UNLOOP (1<<4) /* Bit 4: Unset Loopback (Xmit) */
  798. #define T3_MUX (3<<2) /* Bit 3..2: Mux position */
  799. #define T3_VRAM (3<<0) /* Bit 1..0: Virtual RAM buffer Address */
  800. /* PCI card IDs */
  801. /*
  802. * Note: The following 4 byte definitions shall not be used! Use OEM Concept!
  803. */
  804. #define PCI_VEND_ID0 0x48 /* PCI vendor ID (SysKonnect) */
  805. #define PCI_VEND_ID1 0x11 /* PCI vendor ID (SysKonnect) */
  806. /* (High byte) */
  807. #define PCI_DEV_ID0 0x00 /* PCI device ID */
  808. #define PCI_DEV_ID1 0x40 /* PCI device ID (High byte) */
  809. /*#define PCI_CLASS 0x02*/ /* PCI class code: network device */
  810. #define PCI_NW_CLASS 0x02 /* PCI class code: network device */
  811. #define PCI_SUB_CLASS 0x02 /* PCI subclass ID: FDDI device */
  812. #define PCI_PROG_INTFC 0x00 /* PCI programming Interface (=0) */
  813. /*
  814. * address transmission from logical to physical offset address on board
  815. */
  816. #define FMA(a) (0x0400|((a)<<2)) /* FORMAC+ (r/w) (SN3) */
  817. #define P1(a) (0x0380|((a)<<2)) /* PLC1 (r/w) (DAS) */
  818. #define P2(a) (0x0600|((a)<<2)) /* PLC2 (r/w) (covered by the SN3) */
  819. #define PRA(a) (B2_MAC_0 + (a)) /* configuration PROM (MAC address) */
  820. /*
  821. * FlashProm specification
  822. */
  823. #define MAX_PAGES 0x20000L /* Every byte has a single page */
  824. #define MAX_FADDR 1 /* 1 byte per page */
  825. /*
  826. * Receive / Transmit Buffer Control word
  827. */
  828. #define BMU_OWN (1UL<<31) /* OWN bit: 0 == host, 1 == adapter */
  829. #define BMU_STF (1L<<30) /* Start of Frame ? */
  830. #define BMU_EOF (1L<<29) /* End of Frame ? */
  831. #define BMU_EN_IRQ_EOB (1L<<28) /* Enable "End of Buffer" IRQ */
  832. #define BMU_EN_IRQ_EOF (1L<<27) /* Enable "End of Frame" IRQ */
  833. #define BMU_DEV_0 (1L<<26) /* RX: don't transfer to system mem */
  834. #define BMU_SMT_TX (1L<<25) /* TX: if set, buffer type SMT_MBuf */
  835. #define BMU_ST_BUF (1L<<25) /* RX: copy of start of frame */
  836. #define BMU_UNUSED (1L<<24) /* Set if the Descr is curr unused */
  837. #define BMU_SW (3L<<24) /* 2 Bits reserved for SW usage */
  838. #define BMU_CHECK 0x00550000L /* To identify the control word */
  839. #define BMU_BBC 0x0000FFFFL /* R/T Buffer Byte Count */
  840. /*
  841. * physical address offset + IO-Port base address
  842. */
  843. #ifdef MEM_MAPPED_IO
  844. #define ADDR(a) (char far *) smc->hw.iop+(a)
  845. #define ADDRS(smc,a) (char far *) (smc)->hw.iop+(a)
  846. #else
  847. #define ADDR(a) (((a)>>7) ? (outp(smc->hw.iop+B0_RAP,(a)>>7), \
  848. (smc->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0)))) : \
  849. (smc->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0))))
  850. #define ADDRS(smc,a) (((a)>>7) ? (outp((smc)->hw.iop+B0_RAP,(a)>>7), \
  851. ((smc)->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0)))) : \
  852. ((smc)->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0))))
  853. #endif
  854. /*
  855. * Define a macro to access the configuration space
  856. */
  857. #define PCI_C(a) ADDR(B3_CFG_SPC + (a)) /* PCI Config Space */
  858. #define EXT_R(a) ADDR(B6_EXT_REG + (a)) /* External Registers */
  859. /*
  860. * Define some values needed for the MAC address (PROM)
  861. */
  862. #define SA_MAC (0) /* start addr. MAC_AD within the PROM */
  863. #define PRA_OFF (0) /* offset correction when 4th byte reading */
  864. #define SKFDDI_PSZ 8 /* address PROM size */
  865. #define FM_A(a) ADDR(FMA(a)) /* FORMAC Plus physical addr */
  866. #define P1_A(a) ADDR(P1(a)) /* PLC1 (r/w) */
  867. #define P2_A(a) ADDR(P2(a)) /* PLC2 (r/w) (DAS) */
  868. #define PR_A(a) ADDR(PRA(a)) /* config. PROM (MAC address) */
  869. /*
  870. * Macro to read the PROM
  871. */
  872. #define READ_PROM(a) ((u_char)inp(a))
  873. #define GET_PAGE(bank) outpd(ADDR(B2_FAR),bank)
  874. #define VPP_ON()
  875. #define VPP_OFF()
  876. /*
  877. * Note: Values of the Interrupt Source Register are defined above
  878. */
  879. #define ISR_A ADDR(B0_ISRC)
  880. #define GET_ISR() inpd(ISR_A)
  881. #define GET_ISR_SMP(iop) inpd((iop)+B0_ISRC)
  882. #define CHECK_ISR() (inpd(ISR_A) & inpd(ADDR(B0_IMSK)))
  883. #define CHECK_ISR_SMP(iop) (inpd((iop)+B0_ISRC) & inpd((iop)+B0_IMSK))
  884. #define BUS_CHECK()
  885. /*
  886. * CLI_FBI: Disable Board Interrupts
  887. * STI_FBI: Enable Board Interrupts
  888. */
  889. #ifndef UNIX
  890. #define CLI_FBI() outpd(ADDR(B0_IMSK),0)
  891. #else
  892. #define CLI_FBI(smc) outpd(ADDRS((smc),B0_IMSK),0)
  893. #endif
  894. #ifndef UNIX
  895. #define STI_FBI() outpd(ADDR(B0_IMSK),smc->hw.is_imask)
  896. #else
  897. #define STI_FBI(smc) outpd(ADDRS((smc),B0_IMSK),(smc)->hw.is_imask)
  898. #endif
  899. #define CLI_FBI_SMP(iop) outpd((iop)+B0_IMSK,0)
  900. #define STI_FBI_SMP(smc,iop) outpd((iop)+B0_IMSK,(smc)->hw.is_imask)
  901. #endif /* PCI */
  902. /*--------------------------------------------------------------------------*/
  903. /*
  904. * 12 bit transfer (dword) counter:
  905. * (ISA: 2*trc = number of byte)
  906. * (EISA: 4*trc = number of byte)
  907. * (MCA: 4*trc = number of byte)
  908. */
  909. #define MAX_TRANS (0x0fff)
  910. /*
  911. * PC PIC
  912. */
  913. #define MST_8259 (0x20)
  914. #define SLV_8259 (0xA0)
  915. #define TPS (18) /* ticks per second */
  916. /*
  917. * error timer defs
  918. */
  919. #define TN (4) /* number of supported timer = TN+1 */
  920. #define SNPPND_TIME (5) /* buffer memory access over mem. data reg. */
  921. #define MAC_AD 0x405a0000
  922. #define MODR1 FM_A(FM_MDREG1) /* mode register 1 */
  923. #define MODR2 FM_A(FM_MDREG2) /* mode register 2 */
  924. #define CMDR1 FM_A(FM_CMDREG1) /* command register 1 */
  925. #define CMDR2 FM_A(FM_CMDREG2) /* command register 2 */
  926. /*
  927. * function defines
  928. */
  929. #define CLEAR(io,mask) outpw((io),inpw(io)&(~(mask)))
  930. #define SET(io,mask) outpw((io),inpw(io)|(mask))
  931. #define GET(io,mask) (inpw(io)&(mask))
  932. #define SETMASK(io,val,mask) outpw((io),(inpw(io) & ~(mask)) | (val))
  933. /*
  934. * PHY Port A (PA) = PLC 1
  935. * With SuperNet 3 PHY-A and PHY S are identical.
  936. */
  937. #define PLC(np,reg) (((np) == PA) ? P2_A(reg) : P1_A(reg))
  938. /*
  939. * set memory address register for write and read
  940. */
  941. #define MARW(ma) outpw(FM_A(FM_MARW),(unsigned int)(ma))
  942. #define MARR(ma) outpw(FM_A(FM_MARR),(unsigned int)(ma))
  943. /*
  944. * read/write from/to memory data register
  945. */
  946. /* write double word */
  947. #define MDRW(dd) outpw(FM_A(FM_MDRU),(unsigned int)((dd)>>16)) ;\
  948. outpw(FM_A(FM_MDRL),(unsigned int)(dd))
  949. #ifndef WINNT
  950. /* read double word */
  951. #define MDRR() (((long)inpw(FM_A(FM_MDRU))<<16) + inpw(FM_A(FM_MDRL)))
  952. /* read FORMAC+ 32-bit status register */
  953. #define GET_ST1() (((long)inpw(FM_A(FM_ST1U))<<16) + inpw(FM_A(FM_ST1L)))
  954. #define GET_ST2() (((long)inpw(FM_A(FM_ST2U))<<16) + inpw(FM_A(FM_ST2L)))
  955. #ifdef SUPERNET_3
  956. #define GET_ST3() (((long)inpw(FM_A(FM_ST3U))<<16) + inpw(FM_A(FM_ST3L)))
  957. #endif
  958. #else
  959. /* read double word */
  960. #define MDRR() inp2w((FM_A(FM_MDRU)),(FM_A(FM_MDRL)))
  961. /* read FORMAC+ 32-bit status register */
  962. #define GET_ST1() inp2w((FM_A(FM_ST1U)),(FM_A(FM_ST1L)))
  963. #define GET_ST2() inp2w((FM_A(FM_ST2U)),(FM_A(FM_ST2L)))
  964. #ifdef SUPERNET_3
  965. #define GET_ST3() inp2w((FM_A(FM_ST3U)),(FM_A(FM_ST3L)))
  966. #endif
  967. #endif
  968. /* Special timer macro for 82c54 */
  969. /* timer access over data bus bit 8..15 */
  970. #define OUT_82c54_TIMER(port,val) outpw(TI_A(port),(val)<<8)
  971. #define IN_82c54_TIMER(port) ((inpw(TI_A(port))>>8) & 0xff)
  972. #ifdef DEBUG
  973. #define DB_MAC(mac,st) {if (debug_mac & 0x1)\
  974. printf("M") ;\
  975. if (debug_mac & 0x2)\
  976. printf("\tMAC %d status 0x%08lx\n",mac,st) ;\
  977. if (debug_mac & 0x4)\
  978. dp_mac(mac,st) ;\
  979. }
  980. #define DB_PLC(p,iev) { if (debug_plc & 0x1)\
  981. printf("P") ;\
  982. if (debug_plc & 0x2)\
  983. printf("\tPLC %s Int 0x%04x\n", \
  984. (p == PA) ? "A" : "B", iev) ;\
  985. if (debug_plc & 0x4)\
  986. dp_plc(p,iev) ;\
  987. }
  988. #define DB_TIMER() { if (debug_timer & 0x1)\
  989. printf("T") ;\
  990. if (debug_timer & 0x2)\
  991. printf("\tTimer ISR\n") ;\
  992. }
  993. #else /* no DEBUG */
  994. #define DB_MAC(mac,st)
  995. #define DB_PLC(p,iev)
  996. #define DB_TIMER()
  997. #endif /* no DEBUG */
  998. #define INC_PTR(sp,cp,ep) if (++cp == ep) cp = sp
  999. /*
  1000. * timer defs
  1001. */
  1002. #define COUNT(t) ((t)<<6) /* counter */
  1003. #define RW_OP(o) ((o)<<4) /* read/write operation */
  1004. #define TMODE(m) ((m)<<1) /* timer mode */
  1005. #endif