1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 233f810b2SJeff Kirsher /****************************************************************************** 333f810b2SJeff Kirsher * 433f810b2SJeff Kirsher * (C)Copyright 1998,1999 SysKonnect, 533f810b2SJeff Kirsher * a business unit of Schneider & Koch & Co. Datensysteme GmbH. 633f810b2SJeff Kirsher * 733f810b2SJeff Kirsher * The information in this file is provided "AS IS" without warranty. 833f810b2SJeff Kirsher * 933f810b2SJeff Kirsher ******************************************************************************/ 1033f810b2SJeff Kirsher 1133f810b2SJeff Kirsher #ifndef _SKFBI_H_ 1233f810b2SJeff Kirsher #define _SKFBI_H_ 1333f810b2SJeff Kirsher 1433f810b2SJeff Kirsher /* 1533f810b2SJeff Kirsher * FDDI-Fx (x := {I(SA), P(CI)}) 1633f810b2SJeff Kirsher * address calculation & function defines 1733f810b2SJeff Kirsher */ 1833f810b2SJeff Kirsher 1933f810b2SJeff Kirsher /*--------------------------------------------------------------------------*/ 2033f810b2SJeff Kirsher #ifdef PCI 2133f810b2SJeff Kirsher 2233f810b2SJeff Kirsher /* 2333f810b2SJeff Kirsher * (DV) = only defined for Da Vinci 2433f810b2SJeff Kirsher * (ML) = only defined for Monalisa 2533f810b2SJeff Kirsher */ 2633f810b2SJeff Kirsher 2733f810b2SJeff Kirsher 2833f810b2SJeff Kirsher /* 2933f810b2SJeff Kirsher * I2C Address (PCI Config) 3033f810b2SJeff Kirsher * 3133f810b2SJeff Kirsher * Note: The temperature and voltage sensors are relocated on a different 3233f810b2SJeff Kirsher * I2C bus. 3333f810b2SJeff Kirsher */ 3433f810b2SJeff Kirsher #define I2C_ADDR_VPD 0xA0 /* I2C address for the VPD EEPROM */ 3533f810b2SJeff Kirsher 3633f810b2SJeff Kirsher /* 3733f810b2SJeff Kirsher * Control Register File: 3833f810b2SJeff Kirsher * Bank 0 3933f810b2SJeff Kirsher */ 4033f810b2SJeff Kirsher #define B0_RAP 0x0000 /* 8 bit register address port */ 4133f810b2SJeff Kirsher /* 0x0001 - 0x0003: reserved */ 4233f810b2SJeff Kirsher #define B0_CTRL 0x0004 /* 8 bit control register */ 4333f810b2SJeff Kirsher #define B0_DAS 0x0005 /* 8 Bit control register (DAS) */ 4433f810b2SJeff Kirsher #define B0_LED 0x0006 /* 8 Bit LED register */ 4533f810b2SJeff Kirsher #define B0_TST_CTRL 0x0007 /* 8 bit test control register */ 4633f810b2SJeff Kirsher #define B0_ISRC 0x0008 /* 32 bit Interrupt source register */ 4733f810b2SJeff Kirsher #define B0_IMSK 0x000c /* 32 bit Interrupt mask register */ 4833f810b2SJeff Kirsher 4933f810b2SJeff Kirsher /* 0x0010 - 0x006b: formac+ (supernet_3) fequently used registers */ 5033f810b2SJeff Kirsher #define B0_CMDREG1 0x0010 /* write command reg 1 instruction */ 5133f810b2SJeff Kirsher #define B0_CMDREG2 0x0014 /* write command reg 2 instruction */ 5233f810b2SJeff Kirsher #define B0_ST1U 0x0010 /* read upper 16-bit of status reg 1 */ 5333f810b2SJeff Kirsher #define B0_ST1L 0x0014 /* read lower 16-bit of status reg 1 */ 5433f810b2SJeff Kirsher #define B0_ST2U 0x0018 /* read upper 16-bit of status reg 2 */ 5533f810b2SJeff Kirsher #define B0_ST2L 0x001c /* read lower 16-bit of status reg 2 */ 5633f810b2SJeff Kirsher 5733f810b2SJeff Kirsher #define B0_MARR 0x0020 /* r/w the memory read addr register */ 5833f810b2SJeff Kirsher #define B0_MARW 0x0024 /* r/w the memory write addr register*/ 5933f810b2SJeff Kirsher #define B0_MDRU 0x0028 /* r/w upper 16-bit of mem. data reg */ 6033f810b2SJeff Kirsher #define B0_MDRL 0x002c /* r/w lower 16-bit of mem. data reg */ 6133f810b2SJeff Kirsher 6233f810b2SJeff Kirsher #define B0_MDREG3 0x0030 /* r/w Mode Register 3 */ 6333f810b2SJeff Kirsher #define B0_ST3U 0x0034 /* read upper 16-bit of status reg 3 */ 6433f810b2SJeff Kirsher #define B0_ST3L 0x0038 /* read lower 16-bit of status reg 3 */ 6533f810b2SJeff Kirsher #define B0_IMSK3U 0x003c /* r/w upper 16-bit of IMSK reg 3 */ 6633f810b2SJeff Kirsher #define B0_IMSK3L 0x0040 /* r/w lower 16-bit of IMSK reg 3 */ 6733f810b2SJeff Kirsher #define B0_IVR 0x0044 /* read Interrupt Vector register */ 6833f810b2SJeff Kirsher #define B0_IMR 0x0048 /* r/w Interrupt mask register */ 6933f810b2SJeff Kirsher /* 0x4c Hidden */ 7033f810b2SJeff Kirsher 7133f810b2SJeff Kirsher #define B0_CNTRL_A 0x0050 /* control register A (r/w) */ 7233f810b2SJeff Kirsher #define B0_CNTRL_B 0x0054 /* control register B (r/w) */ 7333f810b2SJeff Kirsher #define B0_INTR_MASK 0x0058 /* interrupt mask (r/w) */ 7433f810b2SJeff Kirsher #define B0_XMIT_VECTOR 0x005c /* transmit vector register (r/w) */ 7533f810b2SJeff Kirsher 7633f810b2SJeff Kirsher #define B0_STATUS_A 0x0060 /* status register A (read only) */ 7733f810b2SJeff Kirsher #define B0_STATUS_B 0x0064 /* status register B (read only) */ 7833f810b2SJeff Kirsher #define B0_CNTRL_C 0x0068 /* control register C (r/w) */ 7933f810b2SJeff Kirsher #define B0_MDREG1 0x006c /* r/w Mode Register 1 */ 8033f810b2SJeff Kirsher 8133f810b2SJeff Kirsher #define B0_R1_CSR 0x0070 /* 32 bit BMU control/status reg (rec q 1) */ 8233f810b2SJeff Kirsher #define B0_R2_CSR 0x0074 /* 32 bit BMU control/status reg (rec q 2)(DV)*/ 8333f810b2SJeff Kirsher #define B0_XA_CSR 0x0078 /* 32 bit BMU control/status reg (a xmit q) */ 8433f810b2SJeff Kirsher #define B0_XS_CSR 0x007c /* 32 bit BMU control/status reg (s xmit q) */ 8533f810b2SJeff Kirsher 8633f810b2SJeff Kirsher /* 8733f810b2SJeff Kirsher * Bank 1 8833f810b2SJeff Kirsher * - completely empty (this is the RAP Block window) 8933f810b2SJeff Kirsher * Note: if RAP = 1 this page is reserved 9033f810b2SJeff Kirsher */ 9133f810b2SJeff Kirsher 9233f810b2SJeff Kirsher /* 9333f810b2SJeff Kirsher * Bank 2 9433f810b2SJeff Kirsher */ 9533f810b2SJeff Kirsher #define B2_MAC_0 0x0100 /* 8 bit MAC address Byte 0 */ 9633f810b2SJeff Kirsher #define B2_MAC_1 0x0101 /* 8 bit MAC address Byte 1 */ 9733f810b2SJeff Kirsher #define B2_MAC_2 0x0102 /* 8 bit MAC address Byte 2 */ 9833f810b2SJeff Kirsher #define B2_MAC_3 0x0103 /* 8 bit MAC address Byte 3 */ 9933f810b2SJeff Kirsher #define B2_MAC_4 0x0104 /* 8 bit MAC address Byte 4 */ 10033f810b2SJeff Kirsher #define B2_MAC_5 0x0105 /* 8 bit MAC address Byte 5 */ 10133f810b2SJeff Kirsher #define B2_MAC_6 0x0106 /* 8 bit MAC address Byte 6 (== 0) (DV) */ 10233f810b2SJeff Kirsher #define B2_MAC_7 0x0107 /* 8 bit MAC address Byte 7 (== 0) (DV) */ 10333f810b2SJeff Kirsher 10433f810b2SJeff Kirsher #define B2_CONN_TYP 0x0108 /* 8 bit Connector type */ 10533f810b2SJeff Kirsher #define B2_PMD_TYP 0x0109 /* 8 bit PMD type */ 10633f810b2SJeff Kirsher /* 0x010a - 0x010b: reserved */ 10733f810b2SJeff Kirsher /* Eprom registers are currently of no use */ 10833f810b2SJeff Kirsher #define B2_E_0 0x010c /* 8 bit EPROM Byte 0 */ 10933f810b2SJeff Kirsher #define B2_E_1 0x010d /* 8 bit EPROM Byte 1 */ 11033f810b2SJeff Kirsher #define B2_E_2 0x010e /* 8 bit EPROM Byte 2 */ 11133f810b2SJeff Kirsher #define B2_E_3 0x010f /* 8 bit EPROM Byte 3 */ 11233f810b2SJeff Kirsher #define B2_FAR 0x0110 /* 32 bit Flash-Prom Address Register/Counter */ 11333f810b2SJeff Kirsher #define B2_FDP 0x0114 /* 8 bit Flash-Prom Data Port */ 11433f810b2SJeff Kirsher /* 0x0115 - 0x0117: reserved */ 11533f810b2SJeff Kirsher #define B2_LD_CRTL 0x0118 /* 8 bit loader control */ 11633f810b2SJeff Kirsher #define B2_LD_TEST 0x0119 /* 8 bit loader test */ 11733f810b2SJeff Kirsher /* 0x011a - 0x011f: reserved */ 11833f810b2SJeff Kirsher #define B2_TI_INI 0x0120 /* 32 bit Timer init value */ 11933f810b2SJeff Kirsher #define B2_TI_VAL 0x0124 /* 32 bit Timer value */ 12033f810b2SJeff Kirsher #define B2_TI_CRTL 0x0128 /* 8 bit Timer control */ 12133f810b2SJeff Kirsher #define B2_TI_TEST 0x0129 /* 8 Bit Timer Test */ 12233f810b2SJeff Kirsher /* 0x012a - 0x012f: reserved */ 12333f810b2SJeff Kirsher #define B2_WDOG_INI 0x0130 /* 32 bit Watchdog init value */ 12433f810b2SJeff Kirsher #define B2_WDOG_VAL 0x0134 /* 32 bit Watchdog value */ 12533f810b2SJeff Kirsher #define B2_WDOG_CRTL 0x0138 /* 8 bit Watchdog control */ 12633f810b2SJeff Kirsher #define B2_WDOG_TEST 0x0139 /* 8 Bit Watchdog Test */ 12733f810b2SJeff Kirsher /* 0x013a - 0x013f: reserved */ 12833f810b2SJeff Kirsher #define B2_RTM_INI 0x0140 /* 32 bit RTM init value */ 12933f810b2SJeff Kirsher #define B2_RTM_VAL 0x0144 /* 32 bit RTM value */ 13033f810b2SJeff Kirsher #define B2_RTM_CRTL 0x0148 /* 8 bit RTM control */ 13133f810b2SJeff Kirsher #define B2_RTM_TEST 0x0149 /* 8 Bit RTM Test */ 13233f810b2SJeff Kirsher 13333f810b2SJeff Kirsher #define B2_TOK_COUNT 0x014c /* (ML) 32 bit Token Counter */ 13433f810b2SJeff Kirsher #define B2_DESC_ADDR_H 0x0150 /* (ML) 32 bit Desciptor Base Addr Reg High */ 13533f810b2SJeff Kirsher #define B2_CTRL_2 0x0154 /* (ML) 8 bit Control Register 2 */ 13633f810b2SJeff Kirsher #define B2_IFACE_REG 0x0155 /* (ML) 8 bit Interface Register */ 13733f810b2SJeff Kirsher /* 0x0156: reserved */ 13833f810b2SJeff Kirsher #define B2_TST_CTRL_2 0x0157 /* (ML) 8 bit Test Control Register 2 */ 13933f810b2SJeff Kirsher #define B2_I2C_CTRL 0x0158 /* (ML) 32 bit I2C Control Register */ 14033f810b2SJeff Kirsher #define B2_I2C_DATA 0x015c /* (ML) 32 bit I2C Data Register */ 14133f810b2SJeff Kirsher 14233f810b2SJeff Kirsher #define B2_IRQ_MOD_INI 0x0160 /* (ML) 32 bit IRQ Moderation Timer Init Reg. */ 14333f810b2SJeff Kirsher #define B2_IRQ_MOD_VAL 0x0164 /* (ML) 32 bit IRQ Moderation Timer Value */ 14433f810b2SJeff Kirsher #define B2_IRQ_MOD_CTRL 0x0168 /* (ML) 8 bit IRQ Moderation Timer Control */ 14533f810b2SJeff Kirsher #define B2_IRQ_MOD_TEST 0x0169 /* (ML) 8 bit IRQ Moderation Timer Test */ 14633f810b2SJeff Kirsher /* 0x016a - 0x017f: reserved */ 14733f810b2SJeff Kirsher 14833f810b2SJeff Kirsher /* 14933f810b2SJeff Kirsher * Bank 3 15033f810b2SJeff Kirsher */ 15133f810b2SJeff Kirsher /* 15233f810b2SJeff Kirsher * This is a copy of the Configuration register file (lower half) 15333f810b2SJeff Kirsher */ 15433f810b2SJeff Kirsher #define B3_CFG_SPC 0x180 15533f810b2SJeff Kirsher 15633f810b2SJeff Kirsher /* 15733f810b2SJeff Kirsher * Bank 4 15833f810b2SJeff Kirsher */ 15933f810b2SJeff Kirsher #define B4_R1_D 0x0200 /* 4*32 bit current receive Descriptor */ 16033f810b2SJeff Kirsher #define B4_R1_DA 0x0210 /* 32 bit current rec desc address */ 16133f810b2SJeff Kirsher #define B4_R1_AC 0x0214 /* 32 bit current receive Address Count */ 16233f810b2SJeff Kirsher #define B4_R1_BC 0x0218 /* 32 bit current receive Byte Counter */ 16333f810b2SJeff Kirsher #define B4_R1_CSR 0x021c /* 32 bit BMU Control/Status Register */ 16433f810b2SJeff Kirsher #define B4_R1_F 0x0220 /* 32 bit flag register */ 16533f810b2SJeff Kirsher #define B4_R1_T1 0x0224 /* 32 bit Test Register 1 */ 16633f810b2SJeff Kirsher #define B4_R1_T1_TR 0x0224 /* 8 bit Test Register 1 TR */ 16733f810b2SJeff Kirsher #define B4_R1_T1_WR 0x0225 /* 8 bit Test Register 1 WR */ 16833f810b2SJeff Kirsher #define B4_R1_T1_RD 0x0226 /* 8 bit Test Register 1 RD */ 16933f810b2SJeff Kirsher #define B4_R1_T1_SV 0x0227 /* 8 bit Test Register 1 SV */ 17033f810b2SJeff Kirsher #define B4_R1_T2 0x0228 /* 32 bit Test Register 2 */ 17133f810b2SJeff Kirsher #define B4_R1_T3 0x022c /* 32 bit Test Register 3 */ 17233f810b2SJeff Kirsher #define B4_R1_DA_H 0x0230 /* (ML) 32 bit Curr Rx Desc Address High */ 17333f810b2SJeff Kirsher #define B4_R1_AC_H 0x0234 /* (ML) 32 bit Curr Addr Counter High dword */ 17433f810b2SJeff Kirsher /* 0x0238 - 0x023f: reserved */ 17533f810b2SJeff Kirsher /* Receive queue 2 is removed on Monalisa */ 17633f810b2SJeff Kirsher #define B4_R2_D 0x0240 /* 4*32 bit current receive Descriptor (q2) */ 17733f810b2SJeff Kirsher #define B4_R2_DA 0x0250 /* 32 bit current rec desc address (q2) */ 17833f810b2SJeff Kirsher #define B4_R2_AC 0x0254 /* 32 bit current receive Address Count (q2) */ 17933f810b2SJeff Kirsher #define B4_R2_BC 0x0258 /* 32 bit current receive Byte Counter (q2) */ 18033f810b2SJeff Kirsher #define B4_R2_CSR 0x025c /* 32 bit BMU Control/Status Register (q2) */ 18133f810b2SJeff Kirsher #define B4_R2_F 0x0260 /* 32 bit flag register (q2) */ 18233f810b2SJeff Kirsher #define B4_R2_T1 0x0264 /* 32 bit Test Register 1 (q2) */ 18333f810b2SJeff Kirsher #define B4_R2_T1_TR 0x0264 /* 8 bit Test Register 1 TR (q2) */ 18433f810b2SJeff Kirsher #define B4_R2_T1_WR 0x0265 /* 8 bit Test Register 1 WR (q2) */ 18533f810b2SJeff Kirsher #define B4_R2_T1_RD 0x0266 /* 8 bit Test Register 1 RD (q2) */ 18633f810b2SJeff Kirsher #define B4_R2_T1_SV 0x0267 /* 8 bit Test Register 1 SV (q2) */ 18733f810b2SJeff Kirsher #define B4_R2_T2 0x0268 /* 32 bit Test Register 2 (q2) */ 18833f810b2SJeff Kirsher #define B4_R2_T3 0x026c /* 32 bit Test Register 3 (q2) */ 18933f810b2SJeff Kirsher /* 0x0270 - 0x027c: reserved */ 19033f810b2SJeff Kirsher 19133f810b2SJeff Kirsher /* 19233f810b2SJeff Kirsher * Bank 5 19333f810b2SJeff Kirsher */ 19433f810b2SJeff Kirsher #define B5_XA_D 0x0280 /* 4*32 bit current transmit Descriptor (xa) */ 19533f810b2SJeff Kirsher #define B5_XA_DA 0x0290 /* 32 bit current tx desc address (xa) */ 19633f810b2SJeff Kirsher #define B5_XA_AC 0x0294 /* 32 bit current tx Address Count (xa) */ 19733f810b2SJeff Kirsher #define B5_XA_BC 0x0298 /* 32 bit current tx Byte Counter (xa) */ 19833f810b2SJeff Kirsher #define B5_XA_CSR 0x029c /* 32 bit BMU Control/Status Register (xa) */ 19933f810b2SJeff Kirsher #define B5_XA_F 0x02a0 /* 32 bit flag register (xa) */ 20033f810b2SJeff Kirsher #define B5_XA_T1 0x02a4 /* 32 bit Test Register 1 (xa) */ 20133f810b2SJeff Kirsher #define B5_XA_T1_TR 0x02a4 /* 8 bit Test Register 1 TR (xa) */ 20233f810b2SJeff Kirsher #define B5_XA_T1_WR 0x02a5 /* 8 bit Test Register 1 WR (xa) */ 20333f810b2SJeff Kirsher #define B5_XA_T1_RD 0x02a6 /* 8 bit Test Register 1 RD (xa) */ 20433f810b2SJeff Kirsher #define B5_XA_T1_SV 0x02a7 /* 8 bit Test Register 1 SV (xa) */ 20533f810b2SJeff Kirsher #define B5_XA_T2 0x02a8 /* 32 bit Test Register 2 (xa) */ 20633f810b2SJeff Kirsher #define B5_XA_T3 0x02ac /* 32 bit Test Register 3 (xa) */ 20733f810b2SJeff Kirsher #define B5_XA_DA_H 0x02b0 /* (ML) 32 bit Curr Tx Desc Address High */ 20833f810b2SJeff Kirsher #define B5_XA_AC_H 0x02b4 /* (ML) 32 bit Curr Addr Counter High dword */ 20933f810b2SJeff Kirsher /* 0x02b8 - 0x02bc: reserved */ 21033f810b2SJeff Kirsher #define B5_XS_D 0x02c0 /* 4*32 bit current transmit Descriptor (xs) */ 21133f810b2SJeff Kirsher #define B5_XS_DA 0x02d0 /* 32 bit current tx desc address (xs) */ 21233f810b2SJeff Kirsher #define B5_XS_AC 0x02d4 /* 32 bit current transmit Address Count(xs) */ 21333f810b2SJeff Kirsher #define B5_XS_BC 0x02d8 /* 32 bit current transmit Byte Counter (xs) */ 21433f810b2SJeff Kirsher #define B5_XS_CSR 0x02dc /* 32 bit BMU Control/Status Register (xs) */ 21533f810b2SJeff Kirsher #define B5_XS_F 0x02e0 /* 32 bit flag register (xs) */ 21633f810b2SJeff Kirsher #define B5_XS_T1 0x02e4 /* 32 bit Test Register 1 (xs) */ 21733f810b2SJeff Kirsher #define B5_XS_T1_TR 0x02e4 /* 8 bit Test Register 1 TR (xs) */ 21833f810b2SJeff Kirsher #define B5_XS_T1_WR 0x02e5 /* 8 bit Test Register 1 WR (xs) */ 21933f810b2SJeff Kirsher #define B5_XS_T1_RD 0x02e6 /* 8 bit Test Register 1 RD (xs) */ 22033f810b2SJeff Kirsher #define B5_XS_T1_SV 0x02e7 /* 8 bit Test Register 1 SV (xs) */ 22133f810b2SJeff Kirsher #define B5_XS_T2 0x02e8 /* 32 bit Test Register 2 (xs) */ 22233f810b2SJeff Kirsher #define B5_XS_T3 0x02ec /* 32 bit Test Register 3 (xs) */ 22333f810b2SJeff Kirsher #define B5_XS_DA_H 0x02f0 /* (ML) 32 bit Curr Tx Desc Address High */ 22433f810b2SJeff Kirsher #define B5_XS_AC_H 0x02f4 /* (ML) 32 bit Curr Addr Counter High dword */ 22533f810b2SJeff Kirsher /* 0x02f8 - 0x02fc: reserved */ 22633f810b2SJeff Kirsher 22733f810b2SJeff Kirsher /* 22833f810b2SJeff Kirsher * Bank 6 22933f810b2SJeff Kirsher */ 23033f810b2SJeff Kirsher /* External PLC-S registers (SN2 compatibility for DV) */ 23133f810b2SJeff Kirsher /* External registers (ML) */ 23233f810b2SJeff Kirsher #define B6_EXT_REG 0x300 23333f810b2SJeff Kirsher 23433f810b2SJeff Kirsher /* 23533f810b2SJeff Kirsher * Bank 7 23633f810b2SJeff Kirsher */ 23733f810b2SJeff Kirsher /* DAS PLC-S Registers */ 23833f810b2SJeff Kirsher 23933f810b2SJeff Kirsher /* 24033f810b2SJeff Kirsher * Bank 8 - 15 24133f810b2SJeff Kirsher */ 24233f810b2SJeff Kirsher /* IFCP registers */ 24333f810b2SJeff Kirsher 24433f810b2SJeff Kirsher /*---------------------------------------------------------------------------*/ 24533f810b2SJeff Kirsher /* Definitions of the Bits in the registers */ 24633f810b2SJeff Kirsher 24733f810b2SJeff Kirsher /* B0_RAP 16 bit register address port */ 24833f810b2SJeff Kirsher #define RAP_RAP 0x0f /* Bit 3..0: 0 = block0, .., f = block15 */ 24933f810b2SJeff Kirsher 25033f810b2SJeff Kirsher /* B0_CTRL 8 bit control register */ 25133f810b2SJeff Kirsher #define CTRL_FDDI_CLR (1<<7) /* Bit 7: (ML) Clear FDDI Reset */ 25233f810b2SJeff Kirsher #define CTRL_FDDI_SET (1<<6) /* Bit 6: (ML) Set FDDI Reset */ 25333f810b2SJeff Kirsher #define CTRL_HPI_CLR (1<<5) /* Bit 5: Clear HPI SM reset */ 25433f810b2SJeff Kirsher #define CTRL_HPI_SET (1<<4) /* Bit 4: Set HPI SM reset */ 25533f810b2SJeff Kirsher #define CTRL_MRST_CLR (1<<3) /* Bit 3: Clear Master reset */ 25633f810b2SJeff Kirsher #define CTRL_MRST_SET (1<<2) /* Bit 2: Set Master reset */ 25733f810b2SJeff Kirsher #define CTRL_RST_CLR (1<<1) /* Bit 1: Clear Software reset */ 25833f810b2SJeff Kirsher #define CTRL_RST_SET (1<<0) /* Bit 0: Set Software reset */ 25933f810b2SJeff Kirsher 26033f810b2SJeff Kirsher /* B0_DAS 8 Bit control register (DAS) */ 26133f810b2SJeff Kirsher #define BUS_CLOCK (1<<7) /* Bit 7: (ML) Bus Clock 0/1 = 33/66MHz */ 26233f810b2SJeff Kirsher #define BUS_SLOT_SZ (1<<6) /* Bit 6: (ML) Slot Size 0/1 = 32/64 bit slot*/ 26333f810b2SJeff Kirsher /* Bit 5..4: reserved */ 26433f810b2SJeff Kirsher #define DAS_AVAIL (1<<3) /* Bit 3: 1 = DAS, 0 = SAS */ 26533f810b2SJeff Kirsher #define DAS_BYP_ST (1<<2) /* Bit 2: 1 = avail,SAS, 0 = not avail */ 26633f810b2SJeff Kirsher #define DAS_BYP_INS (1<<1) /* Bit 1: 1 = insert Bypass */ 26733f810b2SJeff Kirsher #define DAS_BYP_RMV (1<<0) /* Bit 0: 1 = remove Bypass */ 26833f810b2SJeff Kirsher 26933f810b2SJeff Kirsher /* B0_LED 8 Bit LED register */ 27033f810b2SJeff Kirsher /* Bit 7..6: reserved */ 27133f810b2SJeff Kirsher #define LED_2_ON (1<<5) /* Bit 5: 1 = switch LED_2 on (left,gn)*/ 27233f810b2SJeff Kirsher #define LED_2_OFF (1<<4) /* Bit 4: 1 = switch LED_2 off */ 27333f810b2SJeff Kirsher #define LED_1_ON (1<<3) /* Bit 3: 1 = switch LED_1 on (mid,yel)*/ 27433f810b2SJeff Kirsher #define LED_1_OFF (1<<2) /* Bit 2: 1 = switch LED_1 off */ 27533f810b2SJeff Kirsher #define LED_0_ON (1<<1) /* Bit 1: 1 = switch LED_0 on (rght,gn)*/ 27633f810b2SJeff Kirsher #define LED_0_OFF (1<<0) /* Bit 0: 1 = switch LED_0 off */ 27733f810b2SJeff Kirsher /* This hardware defines are very ugly therefore we define some others */ 27833f810b2SJeff Kirsher 27933f810b2SJeff Kirsher #define LED_GA_ON LED_2_ON /* S port = A port */ 28033f810b2SJeff Kirsher #define LED_GA_OFF LED_2_OFF /* S port = A port */ 28133f810b2SJeff Kirsher #define LED_MY_ON LED_1_ON 28233f810b2SJeff Kirsher #define LED_MY_OFF LED_1_OFF 28333f810b2SJeff Kirsher #define LED_GB_ON LED_0_ON 28433f810b2SJeff Kirsher #define LED_GB_OFF LED_0_OFF 28533f810b2SJeff Kirsher 28633f810b2SJeff Kirsher /* B0_TST_CTRL 8 bit test control register */ 28733f810b2SJeff Kirsher #define TST_FRC_DPERR_MR (1<<7) /* Bit 7: force DATAPERR on MST RE. */ 28833f810b2SJeff Kirsher #define TST_FRC_DPERR_MW (1<<6) /* Bit 6: force DATAPERR on MST WR. */ 28933f810b2SJeff Kirsher #define TST_FRC_DPERR_TR (1<<5) /* Bit 5: force DATAPERR on TRG RE. */ 29033f810b2SJeff Kirsher #define TST_FRC_DPERR_TW (1<<4) /* Bit 4: force DATAPERR on TRG WR. */ 29133f810b2SJeff Kirsher #define TST_FRC_APERR_M (1<<3) /* Bit 3: force ADDRPERR on MST */ 29233f810b2SJeff Kirsher #define TST_FRC_APERR_T (1<<2) /* Bit 2: force ADDRPERR on TRG */ 29333f810b2SJeff Kirsher #define TST_CFG_WRITE_ON (1<<1) /* Bit 1: ena configuration reg. WR */ 29433f810b2SJeff Kirsher #define TST_CFG_WRITE_OFF (1<<0) /* Bit 0: dis configuration reg. WR */ 29533f810b2SJeff Kirsher 29633f810b2SJeff Kirsher /* B0_ISRC 32 bit Interrupt source register */ 29733f810b2SJeff Kirsher /* Bit 31..28: reserved */ 29833f810b2SJeff Kirsher #define IS_I2C_READY (1L<<27) /* Bit 27: (ML) IRQ on end of I2C tx */ 29933f810b2SJeff Kirsher #define IS_IRQ_SW (1L<<26) /* Bit 26: (ML) SW forced IRQ */ 30033f810b2SJeff Kirsher #define IS_EXT_REG (1L<<25) /* Bit 25: (ML) IRQ from external reg*/ 30133f810b2SJeff Kirsher #define IS_IRQ_STAT (1L<<24) /* Bit 24: IRQ status exception */ 30233f810b2SJeff Kirsher /* PERR, RMABORT, RTABORT DATAPERR */ 30333f810b2SJeff Kirsher #define IS_IRQ_MST_ERR (1L<<23) /* Bit 23: IRQ master error */ 30433f810b2SJeff Kirsher /* RMABORT, RTABORT, DATAPERR */ 30533f810b2SJeff Kirsher #define IS_TIMINT (1L<<22) /* Bit 22: IRQ_TIMER */ 30633f810b2SJeff Kirsher #define IS_TOKEN (1L<<21) /* Bit 21: IRQ_RTM */ 30733f810b2SJeff Kirsher /* 30833f810b2SJeff Kirsher * Note: The DAS is our First Port (!=PA) 30933f810b2SJeff Kirsher */ 31033f810b2SJeff Kirsher #define IS_PLINT1 (1L<<20) /* Bit 20: IRQ_PHY_DAS */ 31133f810b2SJeff Kirsher #define IS_PLINT2 (1L<<19) /* Bit 19: IRQ_IFCP_4 */ 31233f810b2SJeff Kirsher #define IS_MINTR3 (1L<<18) /* Bit 18: IRQ_IFCP_3/IRQ_PHY */ 31333f810b2SJeff Kirsher #define IS_MINTR2 (1L<<17) /* Bit 17: IRQ_IFCP_2/IRQ_MAC_2 */ 31433f810b2SJeff Kirsher #define IS_MINTR1 (1L<<16) /* Bit 16: IRQ_IFCP_1/IRQ_MAC_1 */ 31533f810b2SJeff Kirsher /* Receive Queue 1 */ 31633f810b2SJeff Kirsher #define IS_R1_P (1L<<15) /* Bit 15: Parity Error (q1) */ 31733f810b2SJeff Kirsher #define IS_R1_B (1L<<14) /* Bit 14: End of Buffer (q1) */ 31833f810b2SJeff Kirsher #define IS_R1_F (1L<<13) /* Bit 13: End of Frame (q1) */ 31933f810b2SJeff Kirsher #define IS_R1_C (1L<<12) /* Bit 12: Encoding Error (q1) */ 32033f810b2SJeff Kirsher /* Receive Queue 2 */ 32133f810b2SJeff Kirsher #define IS_R2_P (1L<<11) /* Bit 11: (DV) Parity Error (q2) */ 32233f810b2SJeff Kirsher #define IS_R2_B (1L<<10) /* Bit 10: (DV) End of Buffer (q2) */ 32333f810b2SJeff Kirsher #define IS_R2_F (1L<<9) /* Bit 9: (DV) End of Frame (q2) */ 32433f810b2SJeff Kirsher #define IS_R2_C (1L<<8) /* Bit 8: (DV) Encoding Error (q2) */ 32533f810b2SJeff Kirsher /* Asynchronous Transmit queue */ 32633f810b2SJeff Kirsher /* Bit 7: reserved */ 32733f810b2SJeff Kirsher #define IS_XA_B (1L<<6) /* Bit 6: End of Buffer (xa) */ 32833f810b2SJeff Kirsher #define IS_XA_F (1L<<5) /* Bit 5: End of Frame (xa) */ 32933f810b2SJeff Kirsher #define IS_XA_C (1L<<4) /* Bit 4: Encoding Error (xa) */ 33033f810b2SJeff Kirsher /* Synchronous Transmit queue */ 33133f810b2SJeff Kirsher /* Bit 3: reserved */ 33233f810b2SJeff Kirsher #define IS_XS_B (1L<<2) /* Bit 2: End of Buffer (xs) */ 33333f810b2SJeff Kirsher #define IS_XS_F (1L<<1) /* Bit 1: End of Frame (xs) */ 33433f810b2SJeff Kirsher #define IS_XS_C (1L<<0) /* Bit 0: Encoding Error (xs) */ 33533f810b2SJeff Kirsher 33633f810b2SJeff Kirsher /* 33733f810b2SJeff Kirsher * Define all valid interrupt source Bits from GET_ISR () 33833f810b2SJeff Kirsher */ 33933f810b2SJeff Kirsher #define ALL_IRSR 0x01ffff77L /* (DV) */ 34033f810b2SJeff Kirsher #define ALL_IRSR_ML 0x0ffff077L /* (ML) */ 34133f810b2SJeff Kirsher 34233f810b2SJeff Kirsher 34333f810b2SJeff Kirsher /* B0_IMSK 32 bit Interrupt mask register */ 34433f810b2SJeff Kirsher /* 34533f810b2SJeff Kirsher * The Bit definnition of this register are the same as of the interrupt 34633f810b2SJeff Kirsher * source register. These definition are directly derived from the Hardware 34733f810b2SJeff Kirsher * spec. 34833f810b2SJeff Kirsher */ 34933f810b2SJeff Kirsher /* Bit 31..28: reserved */ 35033f810b2SJeff Kirsher #define IRQ_I2C_READY (1L<<27) /* Bit 27: (ML) IRQ on end of I2C tx */ 35133f810b2SJeff Kirsher #define IRQ_SW (1L<<26) /* Bit 26: (ML) SW forced IRQ */ 35233f810b2SJeff Kirsher #define IRQ_EXT_REG (1L<<25) /* Bit 25: (ML) IRQ from external reg*/ 35333f810b2SJeff Kirsher #define IRQ_STAT (1L<<24) /* Bit 24: IRQ status exception */ 35433f810b2SJeff Kirsher /* PERR, RMABORT, RTABORT DATAPERR */ 35533f810b2SJeff Kirsher #define IRQ_MST_ERR (1L<<23) /* Bit 23: IRQ master error */ 35633f810b2SJeff Kirsher /* RMABORT, RTABORT, DATAPERR */ 35733f810b2SJeff Kirsher #define IRQ_TIMER (1L<<22) /* Bit 22: IRQ_TIMER */ 35833f810b2SJeff Kirsher #define IRQ_RTM (1L<<21) /* Bit 21: IRQ_RTM */ 35933f810b2SJeff Kirsher #define IRQ_DAS (1L<<20) /* Bit 20: IRQ_PHY_DAS */ 36033f810b2SJeff Kirsher #define IRQ_IFCP_4 (1L<<19) /* Bit 19: IRQ_IFCP_4 */ 36133f810b2SJeff Kirsher #define IRQ_IFCP_3 (1L<<18) /* Bit 18: IRQ_IFCP_3/IRQ_PHY */ 36233f810b2SJeff Kirsher #define IRQ_IFCP_2 (1L<<17) /* Bit 17: IRQ_IFCP_2/IRQ_MAC_2 */ 36333f810b2SJeff Kirsher #define IRQ_IFCP_1 (1L<<16) /* Bit 16: IRQ_IFCP_1/IRQ_MAC_1 */ 36433f810b2SJeff Kirsher /* Receive Queue 1 */ 36533f810b2SJeff Kirsher #define IRQ_R1_P (1L<<15) /* Bit 15: Parity Error (q1) */ 36633f810b2SJeff Kirsher #define IRQ_R1_B (1L<<14) /* Bit 14: End of Buffer (q1) */ 36733f810b2SJeff Kirsher #define IRQ_R1_F (1L<<13) /* Bit 13: End of Frame (q1) */ 36833f810b2SJeff Kirsher #define IRQ_R1_C (1L<<12) /* Bit 12: Encoding Error (q1) */ 36933f810b2SJeff Kirsher /* Receive Queue 2 */ 37033f810b2SJeff Kirsher #define IRQ_R2_P (1L<<11) /* Bit 11: (DV) Parity Error (q2) */ 37133f810b2SJeff Kirsher #define IRQ_R2_B (1L<<10) /* Bit 10: (DV) End of Buffer (q2) */ 37233f810b2SJeff Kirsher #define IRQ_R2_F (1L<<9) /* Bit 9: (DV) End of Frame (q2) */ 37333f810b2SJeff Kirsher #define IRQ_R2_C (1L<<8) /* Bit 8: (DV) Encoding Error (q2) */ 37433f810b2SJeff Kirsher /* Asynchronous Transmit queue */ 37533f810b2SJeff Kirsher /* Bit 7: reserved */ 37633f810b2SJeff Kirsher #define IRQ_XA_B (1L<<6) /* Bit 6: End of Buffer (xa) */ 37733f810b2SJeff Kirsher #define IRQ_XA_F (1L<<5) /* Bit 5: End of Frame (xa) */ 37833f810b2SJeff Kirsher #define IRQ_XA_C (1L<<4) /* Bit 4: Encoding Error (xa) */ 37933f810b2SJeff Kirsher /* Synchronous Transmit queue */ 38033f810b2SJeff Kirsher /* Bit 3: reserved */ 38133f810b2SJeff Kirsher #define IRQ_XS_B (1L<<2) /* Bit 2: End of Buffer (xs) */ 38233f810b2SJeff Kirsher #define IRQ_XS_F (1L<<1) /* Bit 1: End of Frame (xs) */ 38333f810b2SJeff Kirsher #define IRQ_XS_C (1L<<0) /* Bit 0: Encoding Error (xs) */ 38433f810b2SJeff Kirsher 38533f810b2SJeff Kirsher /* 0x0010 - 0x006b: formac+ (supernet_3) fequently used registers */ 38633f810b2SJeff Kirsher /* B0_R1_CSR 32 bit BMU control/status reg (rec q 1 ) */ 38733f810b2SJeff Kirsher /* B0_R2_CSR 32 bit BMU control/status reg (rec q 2 ) */ 38833f810b2SJeff Kirsher /* B0_XA_CSR 32 bit BMU control/status reg (a xmit q ) */ 38933f810b2SJeff Kirsher /* B0_XS_CSR 32 bit BMU control/status reg (s xmit q ) */ 39033f810b2SJeff Kirsher /* The registers are the same as B4_R1_CSR, B4_R2_CSR, B5_Xa_CSR, B5_XS_CSR */ 39133f810b2SJeff Kirsher 39233f810b2SJeff Kirsher /* B2_MAC_0 8 bit MAC address Byte 0 */ 39333f810b2SJeff Kirsher /* B2_MAC_1 8 bit MAC address Byte 1 */ 39433f810b2SJeff Kirsher /* B2_MAC_2 8 bit MAC address Byte 2 */ 39533f810b2SJeff Kirsher /* B2_MAC_3 8 bit MAC address Byte 3 */ 39633f810b2SJeff Kirsher /* B2_MAC_4 8 bit MAC address Byte 4 */ 39733f810b2SJeff Kirsher /* B2_MAC_5 8 bit MAC address Byte 5 */ 39833f810b2SJeff Kirsher /* B2_MAC_6 8 bit MAC address Byte 6 (== 0) (DV) */ 39933f810b2SJeff Kirsher /* B2_MAC_7 8 bit MAC address Byte 7 (== 0) (DV) */ 40033f810b2SJeff Kirsher 40133f810b2SJeff Kirsher /* B2_CONN_TYP 8 bit Connector type */ 40233f810b2SJeff Kirsher /* B2_PMD_TYP 8 bit PMD type */ 40333f810b2SJeff Kirsher /* Values of connector and PMD type comply to SysKonnect internal std */ 40433f810b2SJeff Kirsher 40533f810b2SJeff Kirsher /* The EPROM register are currently of no use */ 40633f810b2SJeff Kirsher /* B2_E_0 8 bit EPROM Byte 0 */ 40733f810b2SJeff Kirsher /* B2_E_1 8 bit EPROM Byte 1 */ 40833f810b2SJeff Kirsher /* B2_E_2 8 bit EPROM Byte 2 */ 40933f810b2SJeff Kirsher /* B2_E_3 8 bit EPROM Byte 3 */ 41033f810b2SJeff Kirsher 41133f810b2SJeff Kirsher /* B2_FAR 32 bit Flash-Prom Address Register/Counter */ 41233f810b2SJeff Kirsher #define FAR_ADDR 0x1ffffL /* Bit 16..0: FPROM Address mask */ 41333f810b2SJeff Kirsher 41433f810b2SJeff Kirsher /* B2_FDP 8 bit Flash-Prom Data Port */ 41533f810b2SJeff Kirsher 41633f810b2SJeff Kirsher /* B2_LD_CRTL 8 bit loader control */ 41733f810b2SJeff Kirsher /* Bits are currently reserved */ 41833f810b2SJeff Kirsher 41933f810b2SJeff Kirsher /* B2_LD_TEST 8 bit loader test */ 42033f810b2SJeff Kirsher #define LD_T_ON (1<<3) /* Bit 3: Loader Testmode on */ 42133f810b2SJeff Kirsher #define LD_T_OFF (1<<2) /* Bit 2: Loader Testmode off */ 42233f810b2SJeff Kirsher #define LD_T_STEP (1<<1) /* Bit 1: Decrement FPROM addr. Counter */ 42333f810b2SJeff Kirsher #define LD_START (1<<0) /* Bit 0: Start loading FPROM */ 42433f810b2SJeff Kirsher 42533f810b2SJeff Kirsher /* B2_TI_INI 32 bit Timer init value */ 42633f810b2SJeff Kirsher /* B2_TI_VAL 32 bit Timer value */ 42733f810b2SJeff Kirsher /* B2_TI_CRTL 8 bit Timer control */ 42833f810b2SJeff Kirsher /* B2_TI_TEST 8 Bit Timer Test */ 42933f810b2SJeff Kirsher /* B2_WDOG_INI 32 bit Watchdog init value */ 43033f810b2SJeff Kirsher /* B2_WDOG_VAL 32 bit Watchdog value */ 43133f810b2SJeff Kirsher /* B2_WDOG_CRTL 8 bit Watchdog control */ 43233f810b2SJeff Kirsher /* B2_WDOG_TEST 8 Bit Watchdog Test */ 43333f810b2SJeff Kirsher /* B2_RTM_INI 32 bit RTM init value */ 43433f810b2SJeff Kirsher /* B2_RTM_VAL 32 bit RTM value */ 43533f810b2SJeff Kirsher /* B2_RTM_CRTL 8 bit RTM control */ 43633f810b2SJeff Kirsher /* B2_RTM_TEST 8 Bit RTM Test */ 43733f810b2SJeff Kirsher /* B2_<TIM>_CRTL 8 bit <TIM> control */ 43833f810b2SJeff Kirsher /* B2_IRQ_MOD_INI 32 bit IRQ Moderation Timer Init Reg. (ML) */ 43933f810b2SJeff Kirsher /* B2_IRQ_MOD_VAL 32 bit IRQ Moderation Timer Value (ML) */ 44033f810b2SJeff Kirsher /* B2_IRQ_MOD_CTRL 8 bit IRQ Moderation Timer Control (ML) */ 44133f810b2SJeff Kirsher /* B2_IRQ_MOD_TEST 8 bit IRQ Moderation Timer Test (ML) */ 44233f810b2SJeff Kirsher #define GET_TOK_CT (1<<4) /* Bit 4: Get the Token Counter (RTM) */ 44333f810b2SJeff Kirsher #define TIM_RES_TOK (1<<3) /* Bit 3: RTM Status: 1 == restricted */ 44433f810b2SJeff Kirsher #define TIM_ALARM (1<<3) /* Bit 3: Timer Alarm (WDOG) */ 44533f810b2SJeff Kirsher #define TIM_START (1<<2) /* Bit 2: Start Timer (TI,WDOG,RTM,IRQ_MOD)*/ 44633f810b2SJeff Kirsher #define TIM_STOP (1<<1) /* Bit 1: Stop Timer (TI,WDOG,RTM,IRQ_MOD) */ 44733f810b2SJeff Kirsher #define TIM_CL_IRQ (1<<0) /* Bit 0: Clear Timer IRQ (TI,WDOG,RTM) */ 44833f810b2SJeff Kirsher /* B2_<TIM>_TEST 8 Bit <TIM> Test */ 44933f810b2SJeff Kirsher #define TIM_T_ON (1<<2) /* Bit 2: Test mode on (TI,WDOG,RTM,IRQ_MOD) */ 45033f810b2SJeff Kirsher #define TIM_T_OFF (1<<1) /* Bit 1: Test mode off (TI,WDOG,RTM,IRQ_MOD) */ 45133f810b2SJeff Kirsher #define TIM_T_STEP (1<<0) /* Bit 0: Test step (TI,WDOG,RTM,IRQ_MOD) */ 45233f810b2SJeff Kirsher 45333f810b2SJeff Kirsher /* B2_TOK_COUNT 0x014c (ML) 32 bit Token Counter */ 45433f810b2SJeff Kirsher /* B2_DESC_ADDR_H 0x0150 (ML) 32 bit Desciptor Base Addr Reg High */ 45533f810b2SJeff Kirsher /* B2_CTRL_2 0x0154 (ML) 8 bit Control Register 2 */ 45633f810b2SJeff Kirsher /* Bit 7..5: reserved */ 45733f810b2SJeff Kirsher #define CTRL_CL_I2C_IRQ (1<<4) /* Bit 4: Clear I2C IRQ */ 45833f810b2SJeff Kirsher #define CTRL_ST_SW_IRQ (1<<3) /* Bit 3: Set IRQ SW Request */ 45933f810b2SJeff Kirsher #define CTRL_CL_SW_IRQ (1<<2) /* Bit 2: Clear IRQ SW Request */ 46033f810b2SJeff Kirsher #define CTRL_STOP_DONE (1<<1) /* Bit 1: Stop Master is finished */ 46133f810b2SJeff Kirsher #define CTRL_STOP_MAST (1<<0) /* Bit 0: Command Bit to stop the master*/ 46233f810b2SJeff Kirsher 46333f810b2SJeff Kirsher /* B2_IFACE_REG 0x0155 (ML) 8 bit Interface Register */ 46433f810b2SJeff Kirsher /* Bit 7..3: reserved */ 46533f810b2SJeff Kirsher #define IF_I2C_DATA_DIR (1<<2) /* Bit 2: direction of IF_I2C_DATA*/ 46633f810b2SJeff Kirsher #define IF_I2C_DATA (1<<1) /* Bit 1: I2C Data Port */ 46733f810b2SJeff Kirsher #define IF_I2C_CLK (1<<0) /* Bit 0: I2C Clock Port */ 46833f810b2SJeff Kirsher 46933f810b2SJeff Kirsher /* 0x0156: reserved */ 47033f810b2SJeff Kirsher /* B2_TST_CTRL_2 0x0157 (ML) 8 bit Test Control Register 2 */ 47133f810b2SJeff Kirsher /* Bit 7..4: reserved */ 47233f810b2SJeff Kirsher /* force the following error on */ 47333f810b2SJeff Kirsher /* the next master read/write */ 47433f810b2SJeff Kirsher #define TST_FRC_DPERR_MR64 (1<<3) /* Bit 3: DataPERR RD 64 */ 47533f810b2SJeff Kirsher #define TST_FRC_DPERR_MW64 (1<<2) /* Bit 2: DataPERR WR 64 */ 47633f810b2SJeff Kirsher #define TST_FRC_APERR_1M64 (1<<1) /* Bit 1: AddrPERR on 1. phase */ 47733f810b2SJeff Kirsher #define TST_FRC_APERR_2M64 (1<<0) /* Bit 0: AddrPERR on 2. phase */ 47833f810b2SJeff Kirsher 47933f810b2SJeff Kirsher /* B2_I2C_CTRL 0x0158 (ML) 32 bit I2C Control Register */ 48033f810b2SJeff Kirsher #define I2C_FLAG (1L<<31) /* Bit 31: Start read/write if WR */ 48133f810b2SJeff Kirsher #define I2C_ADDR (0x7fffL<<16) /* Bit 30..16: Addr to be read/written*/ 48233f810b2SJeff Kirsher #define I2C_DEV_SEL (0x7fL<<9) /* Bit 9..15: I2C Device Select */ 48333f810b2SJeff Kirsher /* Bit 5.. 8: reserved */ 48433f810b2SJeff Kirsher #define I2C_BURST_LEN (1L<<4) /* Bit 4 Burst Len, 1/4 bytes */ 48533f810b2SJeff Kirsher #define I2C_DEV_SIZE (7L<<1) /* Bit 1.. 3: I2C Device Size */ 48633f810b2SJeff Kirsher #define I2C_025K_DEV (0L<<1) /* 0: 256 Bytes or smaller*/ 48733f810b2SJeff Kirsher #define I2C_05K_DEV (1L<<1) /* 1: 512 Bytes */ 48833f810b2SJeff Kirsher #define I2C_1K_DEV (2L<<1) /* 2: 1024 Bytes */ 48933f810b2SJeff Kirsher #define I2C_2K_DEV (3L<<1) /* 3: 2048 Bytes */ 49033f810b2SJeff Kirsher #define I2C_4K_DEV (4L<<1) /* 4: 4096 Bytes */ 49133f810b2SJeff Kirsher #define I2C_8K_DEV (5L<<1) /* 5: 8192 Bytes */ 49233f810b2SJeff Kirsher #define I2C_16K_DEV (6L<<1) /* 6: 16384 Bytes */ 49333f810b2SJeff Kirsher #define I2C_32K_DEV (7L<<1) /* 7: 32768 Bytes */ 49433f810b2SJeff Kirsher #define I2C_STOP_BIT (1<<0) /* Bit 0: Interrupt I2C transfer */ 49533f810b2SJeff Kirsher 49633f810b2SJeff Kirsher /* 49733f810b2SJeff Kirsher * I2C Addresses 49833f810b2SJeff Kirsher * 49933f810b2SJeff Kirsher * The temperature sensor and the voltage sensor are on the same I2C bus. 50033f810b2SJeff Kirsher * Note: The voltage sensor (Micorwire) will be selected by PCI_EXT_PATCH_1 50133f810b2SJeff Kirsher * in PCI_OUR_REG 1. 50233f810b2SJeff Kirsher */ 50333f810b2SJeff Kirsher #define I2C_ADDR_TEMP 0x90 /* I2C Address Temperature Sensor */ 50433f810b2SJeff Kirsher 50533f810b2SJeff Kirsher /* B2_I2C_DATA 0x015c (ML) 32 bit I2C Data Register */ 50633f810b2SJeff Kirsher 50733f810b2SJeff Kirsher /* B4_R1_D 4*32 bit current receive Descriptor (q1) */ 50833f810b2SJeff Kirsher /* B4_R1_DA 32 bit current rec desc address (q1) */ 50933f810b2SJeff Kirsher /* B4_R1_AC 32 bit current receive Address Count (q1) */ 51033f810b2SJeff Kirsher /* B4_R1_BC 32 bit current receive Byte Counter (q1) */ 51133f810b2SJeff Kirsher /* B4_R1_CSR 32 bit BMU Control/Status Register (q1) */ 51233f810b2SJeff Kirsher /* B4_R1_F 32 bit flag register (q1) */ 51333f810b2SJeff Kirsher /* B4_R1_T1 32 bit Test Register 1 (q1) */ 51433f810b2SJeff Kirsher /* B4_R1_T2 32 bit Test Register 2 (q1) */ 51533f810b2SJeff Kirsher /* B4_R1_T3 32 bit Test Register 3 (q1) */ 51633f810b2SJeff Kirsher /* B4_R2_D 4*32 bit current receive Descriptor (q2) */ 51733f810b2SJeff Kirsher /* B4_R2_DA 32 bit current rec desc address (q2) */ 51833f810b2SJeff Kirsher /* B4_R2_AC 32 bit current receive Address Count (q2) */ 51933f810b2SJeff Kirsher /* B4_R2_BC 32 bit current receive Byte Counter (q2) */ 52033f810b2SJeff Kirsher /* B4_R2_CSR 32 bit BMU Control/Status Register (q2) */ 52133f810b2SJeff Kirsher /* B4_R2_F 32 bit flag register (q2) */ 52233f810b2SJeff Kirsher /* B4_R2_T1 32 bit Test Register 1 (q2) */ 52333f810b2SJeff Kirsher /* B4_R2_T2 32 bit Test Register 2 (q2) */ 52433f810b2SJeff Kirsher /* B4_R2_T3 32 bit Test Register 3 (q2) */ 52533f810b2SJeff Kirsher /* B5_XA_D 4*32 bit current receive Descriptor (xa) */ 52633f810b2SJeff Kirsher /* B5_XA_DA 32 bit current rec desc address (xa) */ 52733f810b2SJeff Kirsher /* B5_XA_AC 32 bit current receive Address Count (xa) */ 52833f810b2SJeff Kirsher /* B5_XA_BC 32 bit current receive Byte Counter (xa) */ 52933f810b2SJeff Kirsher /* B5_XA_CSR 32 bit BMU Control/Status Register (xa) */ 53033f810b2SJeff Kirsher /* B5_XA_F 32 bit flag register (xa) */ 53133f810b2SJeff Kirsher /* B5_XA_T1 32 bit Test Register 1 (xa) */ 53233f810b2SJeff Kirsher /* B5_XA_T2 32 bit Test Register 2 (xa) */ 53333f810b2SJeff Kirsher /* B5_XA_T3 32 bit Test Register 3 (xa) */ 53433f810b2SJeff Kirsher /* B5_XS_D 4*32 bit current receive Descriptor (xs) */ 53533f810b2SJeff Kirsher /* B5_XS_DA 32 bit current rec desc address (xs) */ 53633f810b2SJeff Kirsher /* B5_XS_AC 32 bit current receive Address Count (xs) */ 53733f810b2SJeff Kirsher /* B5_XS_BC 32 bit current receive Byte Counter (xs) */ 53833f810b2SJeff Kirsher /* B5_XS_CSR 32 bit BMU Control/Status Register (xs) */ 53933f810b2SJeff Kirsher /* B5_XS_F 32 bit flag register (xs) */ 54033f810b2SJeff Kirsher /* B5_XS_T1 32 bit Test Register 1 (xs) */ 54133f810b2SJeff Kirsher /* B5_XS_T2 32 bit Test Register 2 (xs) */ 54233f810b2SJeff Kirsher /* B5_XS_T3 32 bit Test Register 3 (xs) */ 54333f810b2SJeff Kirsher /* B5_<xx>_CSR 32 bit BMU Control/Status Register (xx) */ 54433f810b2SJeff Kirsher #define CSR_DESC_CLEAR (1L<<21) /* Bit 21: Clear Reset for Descr */ 54533f810b2SJeff Kirsher #define CSR_DESC_SET (1L<<20) /* Bit 20: Set Reset for Descr */ 54633f810b2SJeff Kirsher #define CSR_FIFO_CLEAR (1L<<19) /* Bit 19: Clear Reset for FIFO */ 54733f810b2SJeff Kirsher #define CSR_FIFO_SET (1L<<18) /* Bit 18: Set Reset for FIFO */ 54833f810b2SJeff Kirsher #define CSR_HPI_RUN (1L<<17) /* Bit 17: Release HPI SM */ 54933f810b2SJeff Kirsher #define CSR_HPI_RST (1L<<16) /* Bit 16: Reset HPI SM to Idle */ 55033f810b2SJeff Kirsher #define CSR_SV_RUN (1L<<15) /* Bit 15: Release Supervisor SM */ 55133f810b2SJeff Kirsher #define CSR_SV_RST (1L<<14) /* Bit 14: Reset Supervisor SM */ 55233f810b2SJeff Kirsher #define CSR_DREAD_RUN (1L<<13) /* Bit 13: Release Descr Read SM */ 55333f810b2SJeff Kirsher #define CSR_DREAD_RST (1L<<12) /* Bit 12: Reset Descr Read SM */ 55433f810b2SJeff Kirsher #define CSR_DWRITE_RUN (1L<<11) /* Bit 11: Rel. Descr Write SM */ 55533f810b2SJeff Kirsher #define CSR_DWRITE_RST (1L<<10) /* Bit 10: Reset Descr Write SM */ 55633f810b2SJeff Kirsher #define CSR_TRANS_RUN (1L<<9) /* Bit 9: Release Transfer SM */ 55733f810b2SJeff Kirsher #define CSR_TRANS_RST (1L<<8) /* Bit 8: Reset Transfer SM */ 55833f810b2SJeff Kirsher /* Bit 7..5: reserved */ 55933f810b2SJeff Kirsher #define CSR_START (1L<<4) /* Bit 4: Start Rec/Xmit Queue */ 56033f810b2SJeff Kirsher #define CSR_IRQ_CL_P (1L<<3) /* Bit 3: Clear Parity IRQ, Rcv */ 56133f810b2SJeff Kirsher #define CSR_IRQ_CL_B (1L<<2) /* Bit 2: Clear EOB IRQ */ 56233f810b2SJeff Kirsher #define CSR_IRQ_CL_F (1L<<1) /* Bit 1: Clear EOF IRQ */ 56333f810b2SJeff Kirsher #define CSR_IRQ_CL_C (1L<<0) /* Bit 0: Clear ERR IRQ */ 56433f810b2SJeff Kirsher 56533f810b2SJeff Kirsher #define CSR_SET_RESET (CSR_DESC_SET|CSR_FIFO_SET|CSR_HPI_RST|CSR_SV_RST|\ 56633f810b2SJeff Kirsher CSR_DREAD_RST|CSR_DWRITE_RST|CSR_TRANS_RST) 56733f810b2SJeff Kirsher #define CSR_CLR_RESET (CSR_DESC_CLEAR|CSR_FIFO_CLEAR|CSR_HPI_RUN|CSR_SV_RUN|\ 56833f810b2SJeff Kirsher CSR_DREAD_RUN|CSR_DWRITE_RUN|CSR_TRANS_RUN) 56933f810b2SJeff Kirsher 57033f810b2SJeff Kirsher 57133f810b2SJeff Kirsher /* B5_<xx>_F 32 bit flag register (xx) */ 57233f810b2SJeff Kirsher /* Bit 28..31: reserved */ 57333f810b2SJeff Kirsher #define F_ALM_FULL (1L<<27) /* Bit 27: (ML) FIFO almost full */ 57433f810b2SJeff Kirsher #define F_FIFO_EOF (1L<<26) /* Bit 26: (ML) Fag bit in FIFO */ 57533f810b2SJeff Kirsher #define F_WM_REACHED (1L<<25) /* Bit 25: (ML) Watermark reached */ 57633f810b2SJeff Kirsher #define F_UP_DW_USED (1L<<24) /* Bit 24: (ML) Upper Dword used (bug)*/ 57733f810b2SJeff Kirsher /* Bit 23: reserved */ 57833f810b2SJeff Kirsher #define F_FIFO_LEVEL (0x1fL<<16) /* Bit 16..22:(ML) # of Qwords in FIFO*/ 57933f810b2SJeff Kirsher /* Bit 8..15: reserved */ 58033f810b2SJeff Kirsher #define F_ML_WATER_M 0x0000ffL /* Bit 0.. 7:(ML) Watermark */ 58133f810b2SJeff Kirsher #define FLAG_WATER 0x00001fL /* Bit 4..0:(DV) Level of req data tr.*/ 58233f810b2SJeff Kirsher 58333f810b2SJeff Kirsher /* B5_<xx>_T1 32 bit Test Register 1 (xx) */ 58433f810b2SJeff Kirsher /* Holds four State Machine control Bytes */ 58533f810b2SJeff Kirsher #define SM_CRTL_SV (0xffL<<24) /* Bit 31..24: Control Supervisor SM */ 58633f810b2SJeff Kirsher #define SM_CRTL_RD (0xffL<<16) /* Bit 23..16: Control Read Desc SM */ 58733f810b2SJeff Kirsher #define SM_CRTL_WR (0xffL<<8) /* Bit 15..8: Control Write Desc SM */ 58833f810b2SJeff Kirsher #define SM_CRTL_TR (0xffL<<0) /* Bit 7..0: Control Transfer SM */ 58933f810b2SJeff Kirsher 59033f810b2SJeff Kirsher /* B4_<xx>_T1_TR 8 bit Test Register 1 TR (xx) */ 59133f810b2SJeff Kirsher /* B4_<xx>_T1_WR 8 bit Test Register 1 WR (xx) */ 59233f810b2SJeff Kirsher /* B4_<xx>_T1_RD 8 bit Test Register 1 RD (xx) */ 59333f810b2SJeff Kirsher /* B4_<xx>_T1_SV 8 bit Test Register 1 SV (xx) */ 59433f810b2SJeff Kirsher /* The control status byte of each machine looks like ... */ 59533f810b2SJeff Kirsher #define SM_STATE 0xf0 /* Bit 7..4: State which shall be loaded */ 59633f810b2SJeff Kirsher #define SM_LOAD 0x08 /* Bit 3: Load the SM with SM_STATE */ 59733f810b2SJeff Kirsher #define SM_TEST_ON 0x04 /* Bit 2: Switch on SM Test Mode */ 59833f810b2SJeff Kirsher #define SM_TEST_OFF 0x02 /* Bit 1: Go off the Test Mode */ 59933f810b2SJeff Kirsher #define SM_STEP 0x01 /* Bit 0: Step the State Machine */ 60033f810b2SJeff Kirsher 60133f810b2SJeff Kirsher /* The coding of the states */ 60233f810b2SJeff Kirsher #define SM_SV_IDLE 0x0 /* Supervisor Idle Tr/Re */ 60333f810b2SJeff Kirsher #define SM_SV_RES_START 0x1 /* Supervisor Res_Start Tr/Re */ 60433f810b2SJeff Kirsher #define SM_SV_GET_DESC 0x3 /* Supervisor Get_Desc Tr/Re */ 60533f810b2SJeff Kirsher #define SM_SV_CHECK 0x2 /* Supervisor Check Tr/Re */ 60633f810b2SJeff Kirsher #define SM_SV_MOV_DATA 0x6 /* Supervisor Move_Data Tr/Re */ 60733f810b2SJeff Kirsher #define SM_SV_PUT_DESC 0x7 /* Supervisor Put_Desc Tr/Re */ 60833f810b2SJeff Kirsher #define SM_SV_SET_IRQ 0x5 /* Supervisor Set_Irq Tr/Re */ 60933f810b2SJeff Kirsher 61033f810b2SJeff Kirsher #define SM_RD_IDLE 0x0 /* Read Desc. Idle Tr/Re */ 61133f810b2SJeff Kirsher #define SM_RD_LOAD 0x1 /* Read Desc. Load Tr/Re */ 61233f810b2SJeff Kirsher #define SM_RD_WAIT_TC 0x3 /* Read Desc. Wait_TC Tr/Re */ 61333f810b2SJeff Kirsher #define SM_RD_RST_EOF 0x6 /* Read Desc. Reset_EOF Re */ 61433f810b2SJeff Kirsher #define SM_RD_WDONE_R 0x2 /* Read Desc. Wait_Done Re */ 61533f810b2SJeff Kirsher #define SM_RD_WDONE_T 0x4 /* Read Desc. Wait_Done Tr */ 61633f810b2SJeff Kirsher 61733f810b2SJeff Kirsher #define SM_TR_IDLE 0x0 /* Trans. Data Idle Tr/Re */ 61833f810b2SJeff Kirsher #define SM_TR_LOAD 0x3 /* Trans. Data Load Tr/Re */ 61933f810b2SJeff Kirsher #define SM_TR_LOAD_R_ML 0x1 /* Trans. Data Load /Re (ML) */ 62033f810b2SJeff Kirsher #define SM_TR_WAIT_TC 0x2 /* Trans. Data Wait_TC Tr/Re */ 62133f810b2SJeff Kirsher #define SM_TR_WDONE 0x4 /* Trans. Data Wait_Done Tr/Re */ 62233f810b2SJeff Kirsher 62333f810b2SJeff Kirsher #define SM_WR_IDLE 0x0 /* Write Desc. Idle Tr/Re */ 62433f810b2SJeff Kirsher #define SM_WR_ABLEN 0x1 /* Write Desc. Act_Buf_Length Tr/Re */ 62533f810b2SJeff Kirsher #define SM_WR_LD_A4 0x2 /* Write Desc. Load_A4 Re */ 62633f810b2SJeff Kirsher #define SM_WR_RES_OWN 0x2 /* Write Desc. Res_OWN Tr */ 62733f810b2SJeff Kirsher #define SM_WR_WAIT_EOF 0x3 /* Write Desc. Wait_EOF Re */ 62833f810b2SJeff Kirsher #define SM_WR_LD_N2C_R 0x4 /* Write Desc. Load_N2C Re */ 62933f810b2SJeff Kirsher #define SM_WR_WAIT_TC_R 0x5 /* Write Desc. Wait_TC Re */ 63033f810b2SJeff Kirsher #define SM_WR_WAIT_TC4 0x6 /* Write Desc. Wait_TC4 Re */ 63133f810b2SJeff Kirsher #define SM_WR_LD_A_T 0x6 /* Write Desc. Load_A Tr */ 63233f810b2SJeff Kirsher #define SM_WR_LD_A_R 0x7 /* Write Desc. Load_A Re */ 63333f810b2SJeff Kirsher #define SM_WR_WAIT_TC_T 0x7 /* Write Desc. Wait_TC Tr */ 63433f810b2SJeff Kirsher #define SM_WR_LD_N2C_T 0xc /* Write Desc. Load_N2C Tr */ 63533f810b2SJeff Kirsher #define SM_WR_WDONE_T 0x9 /* Write Desc. Wait_Done Tr */ 63633f810b2SJeff Kirsher #define SM_WR_WDONE_R 0xc /* Write Desc. Wait_Done Re */ 63733f810b2SJeff Kirsher #define SM_WR_LD_D_AD 0xe /* Write Desc. Load_Dumr_A Re (ML) */ 63833f810b2SJeff Kirsher #define SM_WR_WAIT_D_TC 0xf /* Write Desc. Wait_Dumr_TC Re (ML) */ 63933f810b2SJeff Kirsher 64033f810b2SJeff Kirsher /* B5_<xx>_T2 32 bit Test Register 2 (xx) */ 64133f810b2SJeff Kirsher /* Note: This register is only defined for the transmit queues */ 64233f810b2SJeff Kirsher /* Bit 31..8: reserved */ 64333f810b2SJeff Kirsher #define AC_TEST_ON (1<<7) /* Bit 7: Address Counter Test Mode on */ 64433f810b2SJeff Kirsher #define AC_TEST_OFF (1<<6) /* Bit 6: Address Counter Test Mode off*/ 64533f810b2SJeff Kirsher #define BC_TEST_ON (1<<5) /* Bit 5: Byte Counter Test Mode on */ 64633f810b2SJeff Kirsher #define BC_TEST_OFF (1<<4) /* Bit 4: Byte Counter Test Mode off */ 64733f810b2SJeff Kirsher #define TEST_STEP04 (1<<3) /* Bit 3: Inc AC/Dec BC by 4 */ 64833f810b2SJeff Kirsher #define TEST_STEP03 (1<<2) /* Bit 2: Inc AC/Dec BC by 3 */ 64933f810b2SJeff Kirsher #define TEST_STEP02 (1<<1) /* Bit 1: Inc AC/Dec BC by 2 */ 65033f810b2SJeff Kirsher #define TEST_STEP01 (1<<0) /* Bit 0: Inc AC/Dec BC by 1 */ 65133f810b2SJeff Kirsher 65233f810b2SJeff Kirsher /* B5_<xx>_T3 32 bit Test Register 3 (xx) */ 65333f810b2SJeff Kirsher /* Note: This register is only defined for the transmit queues */ 65433f810b2SJeff Kirsher /* Bit 31..8: reserved */ 65533f810b2SJeff Kirsher #define T3_MUX_2 (1<<7) /* Bit 7: (ML) Mux position MSB */ 65633f810b2SJeff Kirsher #define T3_VRAM_2 (1<<6) /* Bit 6: (ML) Virtual RAM buffer addr MSB */ 65733f810b2SJeff Kirsher #define T3_LOOP (1<<5) /* Bit 5: Set Loopback (Xmit) */ 65833f810b2SJeff Kirsher #define T3_UNLOOP (1<<4) /* Bit 4: Unset Loopback (Xmit) */ 65933f810b2SJeff Kirsher #define T3_MUX (3<<2) /* Bit 3..2: Mux position */ 66033f810b2SJeff Kirsher #define T3_VRAM (3<<0) /* Bit 1..0: Virtual RAM buffer Address */ 66133f810b2SJeff Kirsher 66233f810b2SJeff Kirsher 66333f810b2SJeff Kirsher /* 66433f810b2SJeff Kirsher * address transmission from logical to physical offset address on board 66533f810b2SJeff Kirsher */ 66633f810b2SJeff Kirsher #define FMA(a) (0x0400|((a)<<2)) /* FORMAC+ (r/w) (SN3) */ 66733f810b2SJeff Kirsher #define P1(a) (0x0380|((a)<<2)) /* PLC1 (r/w) (DAS) */ 66833f810b2SJeff Kirsher #define P2(a) (0x0600|((a)<<2)) /* PLC2 (r/w) (covered by the SN3) */ 66933f810b2SJeff Kirsher #define PRA(a) (B2_MAC_0 + (a)) /* configuration PROM (MAC address) */ 67033f810b2SJeff Kirsher 67133f810b2SJeff Kirsher /* 67233f810b2SJeff Kirsher * FlashProm specification 67333f810b2SJeff Kirsher */ 67433f810b2SJeff Kirsher #define MAX_PAGES 0x20000L /* Every byte has a single page */ 67533f810b2SJeff Kirsher #define MAX_FADDR 1 /* 1 byte per page */ 67633f810b2SJeff Kirsher 67733f810b2SJeff Kirsher /* 67833f810b2SJeff Kirsher * Receive / Transmit Buffer Control word 67933f810b2SJeff Kirsher */ 68033f810b2SJeff Kirsher #define BMU_OWN (1UL<<31) /* OWN bit: 0 == host, 1 == adapter */ 68133f810b2SJeff Kirsher #define BMU_STF (1L<<30) /* Start of Frame ? */ 68233f810b2SJeff Kirsher #define BMU_EOF (1L<<29) /* End of Frame ? */ 68333f810b2SJeff Kirsher #define BMU_EN_IRQ_EOB (1L<<28) /* Enable "End of Buffer" IRQ */ 68433f810b2SJeff Kirsher #define BMU_EN_IRQ_EOF (1L<<27) /* Enable "End of Frame" IRQ */ 68533f810b2SJeff Kirsher #define BMU_DEV_0 (1L<<26) /* RX: don't transfer to system mem */ 68633f810b2SJeff Kirsher #define BMU_SMT_TX (1L<<25) /* TX: if set, buffer type SMT_MBuf */ 68733f810b2SJeff Kirsher #define BMU_ST_BUF (1L<<25) /* RX: copy of start of frame */ 68833f810b2SJeff Kirsher #define BMU_UNUSED (1L<<24) /* Set if the Descr is curr unused */ 68933f810b2SJeff Kirsher #define BMU_SW (3L<<24) /* 2 Bits reserved for SW usage */ 69033f810b2SJeff Kirsher #define BMU_CHECK 0x00550000L /* To identify the control word */ 69133f810b2SJeff Kirsher #define BMU_BBC 0x0000FFFFL /* R/T Buffer Byte Count */ 69233f810b2SJeff Kirsher 69333f810b2SJeff Kirsher /* 69433f810b2SJeff Kirsher * physical address offset + IO-Port base address 69533f810b2SJeff Kirsher */ 69633f810b2SJeff Kirsher #ifdef MEM_MAPPED_IO 69733f810b2SJeff Kirsher #define ADDR(a) (char far *) smc->hw.iop+(a) 69833f810b2SJeff Kirsher #define ADDRS(smc,a) (char far *) (smc)->hw.iop+(a) 69933f810b2SJeff Kirsher #else 70033f810b2SJeff Kirsher #define ADDR(a) (((a)>>7) ? (outp(smc->hw.iop+B0_RAP,(a)>>7), \ 70133f810b2SJeff Kirsher (smc->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0)))) : \ 70233f810b2SJeff Kirsher (smc->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0)))) 70333f810b2SJeff Kirsher #define ADDRS(smc,a) (((a)>>7) ? (outp((smc)->hw.iop+B0_RAP,(a)>>7), \ 70433f810b2SJeff Kirsher ((smc)->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0)))) : \ 70533f810b2SJeff Kirsher ((smc)->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0)))) 70633f810b2SJeff Kirsher #endif 70733f810b2SJeff Kirsher 70833f810b2SJeff Kirsher /* 70933f810b2SJeff Kirsher * Define a macro to access the configuration space 71033f810b2SJeff Kirsher */ 71133f810b2SJeff Kirsher #define PCI_C(a) ADDR(B3_CFG_SPC + (a)) /* PCI Config Space */ 71233f810b2SJeff Kirsher 71333f810b2SJeff Kirsher #define EXT_R(a) ADDR(B6_EXT_REG + (a)) /* External Registers */ 71433f810b2SJeff Kirsher 71533f810b2SJeff Kirsher /* 71633f810b2SJeff Kirsher * Define some values needed for the MAC address (PROM) 71733f810b2SJeff Kirsher */ 71833f810b2SJeff Kirsher #define SA_MAC (0) /* start addr. MAC_AD within the PROM */ 71933f810b2SJeff Kirsher #define PRA_OFF (0) /* offset correction when 4th byte reading */ 72033f810b2SJeff Kirsher 72133f810b2SJeff Kirsher #define SKFDDI_PSZ 8 /* address PROM size */ 72233f810b2SJeff Kirsher 72333f810b2SJeff Kirsher #define FM_A(a) ADDR(FMA(a)) /* FORMAC Plus physical addr */ 72433f810b2SJeff Kirsher #define P1_A(a) ADDR(P1(a)) /* PLC1 (r/w) */ 72533f810b2SJeff Kirsher #define P2_A(a) ADDR(P2(a)) /* PLC2 (r/w) (DAS) */ 72633f810b2SJeff Kirsher #define PR_A(a) ADDR(PRA(a)) /* config. PROM (MAC address) */ 72733f810b2SJeff Kirsher 72833f810b2SJeff Kirsher /* 72933f810b2SJeff Kirsher * Macro to read the PROM 73033f810b2SJeff Kirsher */ 73133f810b2SJeff Kirsher #define READ_PROM(a) ((u_char)inp(a)) 73233f810b2SJeff Kirsher 73333f810b2SJeff Kirsher #define GET_PAGE(bank) outpd(ADDR(B2_FAR),bank) 73433f810b2SJeff Kirsher #define VPP_ON() 73533f810b2SJeff Kirsher #define VPP_OFF() 73633f810b2SJeff Kirsher 73733f810b2SJeff Kirsher /* 73833f810b2SJeff Kirsher * Note: Values of the Interrupt Source Register are defined above 73933f810b2SJeff Kirsher */ 74033f810b2SJeff Kirsher #define ISR_A ADDR(B0_ISRC) 74133f810b2SJeff Kirsher #define GET_ISR() inpd(ISR_A) 74233f810b2SJeff Kirsher #define GET_ISR_SMP(iop) inpd((iop)+B0_ISRC) 74333f810b2SJeff Kirsher #define CHECK_ISR() (inpd(ISR_A) & inpd(ADDR(B0_IMSK))) 74433f810b2SJeff Kirsher #define CHECK_ISR_SMP(iop) (inpd((iop)+B0_ISRC) & inpd((iop)+B0_IMSK)) 74533f810b2SJeff Kirsher 74633f810b2SJeff Kirsher #define BUS_CHECK() 74733f810b2SJeff Kirsher 74833f810b2SJeff Kirsher /* 74933f810b2SJeff Kirsher * CLI_FBI: Disable Board Interrupts 75033f810b2SJeff Kirsher * STI_FBI: Enable Board Interrupts 75133f810b2SJeff Kirsher */ 75233f810b2SJeff Kirsher #ifndef UNIX 75333f810b2SJeff Kirsher #define CLI_FBI() outpd(ADDR(B0_IMSK),0) 75433f810b2SJeff Kirsher #else 75533f810b2SJeff Kirsher #define CLI_FBI(smc) outpd(ADDRS((smc),B0_IMSK),0) 75633f810b2SJeff Kirsher #endif 75733f810b2SJeff Kirsher 75833f810b2SJeff Kirsher #ifndef UNIX 75933f810b2SJeff Kirsher #define STI_FBI() outpd(ADDR(B0_IMSK),smc->hw.is_imask) 76033f810b2SJeff Kirsher #else 76133f810b2SJeff Kirsher #define STI_FBI(smc) outpd(ADDRS((smc),B0_IMSK),(smc)->hw.is_imask) 76233f810b2SJeff Kirsher #endif 76333f810b2SJeff Kirsher 76433f810b2SJeff Kirsher #define CLI_FBI_SMP(iop) outpd((iop)+B0_IMSK,0) 76533f810b2SJeff Kirsher #define STI_FBI_SMP(smc,iop) outpd((iop)+B0_IMSK,(smc)->hw.is_imask) 76633f810b2SJeff Kirsher 76733f810b2SJeff Kirsher #endif /* PCI */ 76833f810b2SJeff Kirsher /*--------------------------------------------------------------------------*/ 76933f810b2SJeff Kirsher 77033f810b2SJeff Kirsher /* 77133f810b2SJeff Kirsher * 12 bit transfer (dword) counter: 77233f810b2SJeff Kirsher * (ISA: 2*trc = number of byte) 77333f810b2SJeff Kirsher * (EISA: 4*trc = number of byte) 77433f810b2SJeff Kirsher * (MCA: 4*trc = number of byte) 77533f810b2SJeff Kirsher */ 77633f810b2SJeff Kirsher #define MAX_TRANS (0x0fff) 77733f810b2SJeff Kirsher 77833f810b2SJeff Kirsher /* 77933f810b2SJeff Kirsher * PC PIC 78033f810b2SJeff Kirsher */ 78133f810b2SJeff Kirsher #define MST_8259 (0x20) 78233f810b2SJeff Kirsher #define SLV_8259 (0xA0) 78333f810b2SJeff Kirsher 78433f810b2SJeff Kirsher #define TPS (18) /* ticks per second */ 78533f810b2SJeff Kirsher 78633f810b2SJeff Kirsher /* 78733f810b2SJeff Kirsher * error timer defs 78833f810b2SJeff Kirsher */ 78933f810b2SJeff Kirsher #define TN (4) /* number of supported timer = TN+1 */ 79033f810b2SJeff Kirsher #define SNPPND_TIME (5) /* buffer memory access over mem. data reg. */ 79133f810b2SJeff Kirsher 79233f810b2SJeff Kirsher #define MAC_AD 0x405a0000 79333f810b2SJeff Kirsher 79433f810b2SJeff Kirsher #define MODR1 FM_A(FM_MDREG1) /* mode register 1 */ 79533f810b2SJeff Kirsher #define MODR2 FM_A(FM_MDREG2) /* mode register 2 */ 79633f810b2SJeff Kirsher 79733f810b2SJeff Kirsher #define CMDR1 FM_A(FM_CMDREG1) /* command register 1 */ 79833f810b2SJeff Kirsher #define CMDR2 FM_A(FM_CMDREG2) /* command register 2 */ 79933f810b2SJeff Kirsher 80033f810b2SJeff Kirsher 80133f810b2SJeff Kirsher /* 80233f810b2SJeff Kirsher * function defines 80333f810b2SJeff Kirsher */ 80433f810b2SJeff Kirsher #define CLEAR(io,mask) outpw((io),inpw(io)&(~(mask))) 80533f810b2SJeff Kirsher #define SET(io,mask) outpw((io),inpw(io)|(mask)) 80633f810b2SJeff Kirsher #define GET(io,mask) (inpw(io)&(mask)) 80733f810b2SJeff Kirsher #define SETMASK(io,val,mask) outpw((io),(inpw(io) & ~(mask)) | (val)) 80833f810b2SJeff Kirsher 80933f810b2SJeff Kirsher /* 81033f810b2SJeff Kirsher * PHY Port A (PA) = PLC 1 81133f810b2SJeff Kirsher * With SuperNet 3 PHY-A and PHY S are identical. 81233f810b2SJeff Kirsher */ 81333f810b2SJeff Kirsher #define PLC(np,reg) (((np) == PA) ? P2_A(reg) : P1_A(reg)) 81433f810b2SJeff Kirsher 81533f810b2SJeff Kirsher /* 81633f810b2SJeff Kirsher * set memory address register for write and read 81733f810b2SJeff Kirsher */ 81833f810b2SJeff Kirsher #define MARW(ma) outpw(FM_A(FM_MARW),(unsigned int)(ma)) 81933f810b2SJeff Kirsher #define MARR(ma) outpw(FM_A(FM_MARR),(unsigned int)(ma)) 82033f810b2SJeff Kirsher 82133f810b2SJeff Kirsher /* 82233f810b2SJeff Kirsher * read/write from/to memory data register 82333f810b2SJeff Kirsher */ 82433f810b2SJeff Kirsher /* write double word */ 82533f810b2SJeff Kirsher #define MDRW(dd) outpw(FM_A(FM_MDRU),(unsigned int)((dd)>>16)) ;\ 82633f810b2SJeff Kirsher outpw(FM_A(FM_MDRL),(unsigned int)(dd)) 82733f810b2SJeff Kirsher 82833f810b2SJeff Kirsher #ifndef WINNT 82933f810b2SJeff Kirsher /* read double word */ 83033f810b2SJeff Kirsher #define MDRR() (((long)inpw(FM_A(FM_MDRU))<<16) + inpw(FM_A(FM_MDRL))) 83133f810b2SJeff Kirsher 83233f810b2SJeff Kirsher /* read FORMAC+ 32-bit status register */ 83333f810b2SJeff Kirsher #define GET_ST1() (((long)inpw(FM_A(FM_ST1U))<<16) + inpw(FM_A(FM_ST1L))) 83433f810b2SJeff Kirsher #define GET_ST2() (((long)inpw(FM_A(FM_ST2U))<<16) + inpw(FM_A(FM_ST2L))) 83533f810b2SJeff Kirsher #ifdef SUPERNET_3 83633f810b2SJeff Kirsher #define GET_ST3() (((long)inpw(FM_A(FM_ST3U))<<16) + inpw(FM_A(FM_ST3L))) 83733f810b2SJeff Kirsher #endif 83833f810b2SJeff Kirsher #else 83933f810b2SJeff Kirsher /* read double word */ 84033f810b2SJeff Kirsher #define MDRR() inp2w((FM_A(FM_MDRU)),(FM_A(FM_MDRL))) 84133f810b2SJeff Kirsher 84233f810b2SJeff Kirsher /* read FORMAC+ 32-bit status register */ 84333f810b2SJeff Kirsher #define GET_ST1() inp2w((FM_A(FM_ST1U)),(FM_A(FM_ST1L))) 84433f810b2SJeff Kirsher #define GET_ST2() inp2w((FM_A(FM_ST2U)),(FM_A(FM_ST2L))) 84533f810b2SJeff Kirsher #ifdef SUPERNET_3 84633f810b2SJeff Kirsher #define GET_ST3() inp2w((FM_A(FM_ST3U)),(FM_A(FM_ST3L))) 84733f810b2SJeff Kirsher #endif 84833f810b2SJeff Kirsher #endif 84933f810b2SJeff Kirsher 85033f810b2SJeff Kirsher /* Special timer macro for 82c54 */ 85133f810b2SJeff Kirsher /* timer access over data bus bit 8..15 */ 85233f810b2SJeff Kirsher #define OUT_82c54_TIMER(port,val) outpw(TI_A(port),(val)<<8) 85333f810b2SJeff Kirsher #define IN_82c54_TIMER(port) ((inpw(TI_A(port))>>8) & 0xff) 85433f810b2SJeff Kirsher 85533f810b2SJeff Kirsher 85633f810b2SJeff Kirsher #ifdef DEBUG 85733f810b2SJeff Kirsher #define DB_MAC(mac,st) {if (debug_mac & 0x1)\ 85833f810b2SJeff Kirsher printf("M") ;\ 85933f810b2SJeff Kirsher if (debug_mac & 0x2)\ 86033f810b2SJeff Kirsher printf("\tMAC %d status 0x%08lx\n",mac,st) ;\ 86133f810b2SJeff Kirsher if (debug_mac & 0x4)\ 86233f810b2SJeff Kirsher dp_mac(mac,st) ;\ 86333f810b2SJeff Kirsher } 86433f810b2SJeff Kirsher 86533f810b2SJeff Kirsher #define DB_PLC(p,iev) { if (debug_plc & 0x1)\ 86633f810b2SJeff Kirsher printf("P") ;\ 86733f810b2SJeff Kirsher if (debug_plc & 0x2)\ 86833f810b2SJeff Kirsher printf("\tPLC %s Int 0x%04x\n", \ 86933f810b2SJeff Kirsher (p == PA) ? "A" : "B", iev) ;\ 87033f810b2SJeff Kirsher if (debug_plc & 0x4)\ 87133f810b2SJeff Kirsher dp_plc(p,iev) ;\ 87233f810b2SJeff Kirsher } 87333f810b2SJeff Kirsher 87433f810b2SJeff Kirsher #define DB_TIMER() { if (debug_timer & 0x1)\ 87533f810b2SJeff Kirsher printf("T") ;\ 87633f810b2SJeff Kirsher if (debug_timer & 0x2)\ 87733f810b2SJeff Kirsher printf("\tTimer ISR\n") ;\ 87833f810b2SJeff Kirsher } 87933f810b2SJeff Kirsher 88033f810b2SJeff Kirsher #else /* no DEBUG */ 88133f810b2SJeff Kirsher 88233f810b2SJeff Kirsher #define DB_MAC(mac,st) 88333f810b2SJeff Kirsher #define DB_PLC(p,iev) 88433f810b2SJeff Kirsher #define DB_TIMER() 88533f810b2SJeff Kirsher 88633f810b2SJeff Kirsher #endif /* no DEBUG */ 88733f810b2SJeff Kirsher 88833f810b2SJeff Kirsher #define INC_PTR(sp,cp,ep) if (++cp == ep) cp = sp 88933f810b2SJeff Kirsher /* 89033f810b2SJeff Kirsher * timer defs 89133f810b2SJeff Kirsher */ 89233f810b2SJeff Kirsher #define COUNT(t) ((t)<<6) /* counter */ 89333f810b2SJeff Kirsher #define RW_OP(o) ((o)<<4) /* read/write operation */ 89433f810b2SJeff Kirsher #define TMODE(m) ((m)<<1) /* timer mode */ 89533f810b2SJeff Kirsher 89633f810b2SJeff Kirsher #endif 897