| Stephen Hemminger | 5ad887f | 2007-09-15 19:35:14 -0400 | [diff] [blame] | 1 | /****************************************************************************** | 
 | 2 |  * | 
 | 3 |  * Name:	skgehw.h | 
 | 4 |  * Project:	Gigabit Ethernet Adapters, Common Modules | 
 | 5 |  * Version:	$Revision: 1.56 $ | 
 | 6 |  * Date:	$Date: 2003/09/23 09:01:00 $ | 
 | 7 |  * Purpose:	Defines and Macros for the Gigabit Ethernet Adapter Product Family | 
 | 8 |  * | 
 | 9 |  ******************************************************************************/ | 
 | 10 |  | 
 | 11 | /****************************************************************************** | 
 | 12 |  * | 
 | 13 |  *	(C)Copyright 1998-2002 SysKonnect. | 
 | 14 |  *	(C)Copyright 2002-2003 Marvell. | 
 | 15 |  * | 
 | 16 |  *	This program is free software; you can redistribute it and/or modify | 
 | 17 |  *	it under the terms of the GNU General Public License as published by | 
 | 18 |  *	the Free Software Foundation; either version 2 of the License, or | 
 | 19 |  *	(at your option) any later version. | 
 | 20 |  * | 
 | 21 |  *	The information in this file is provided "AS IS" without warranty. | 
 | 22 |  * | 
 | 23 |  ******************************************************************************/ | 
 | 24 |  | 
 | 25 | #ifndef __INC_SKGEHW_H | 
 | 26 | #define __INC_SKGEHW_H | 
 | 27 |  | 
 | 28 | #ifdef __cplusplus | 
 | 29 | extern "C" { | 
 | 30 | #endif	/* __cplusplus */ | 
 | 31 |  | 
 | 32 | /* defines ********************************************************************/ | 
 | 33 |  | 
 | 34 | #define BIT_31		(1UL << 31) | 
 | 35 | #define BIT_30		(1L << 30) | 
 | 36 | #define BIT_29		(1L << 29) | 
 | 37 | #define BIT_28		(1L << 28) | 
 | 38 | #define BIT_27		(1L << 27) | 
 | 39 | #define BIT_26		(1L << 26) | 
 | 40 | #define BIT_25		(1L << 25) | 
 | 41 | #define BIT_24		(1L << 24) | 
 | 42 | #define BIT_23		(1L << 23) | 
 | 43 | #define BIT_22		(1L << 22) | 
 | 44 | #define BIT_21		(1L << 21) | 
 | 45 | #define BIT_20		(1L << 20) | 
 | 46 | #define BIT_19		(1L << 19) | 
 | 47 | #define BIT_18		(1L << 18) | 
 | 48 | #define BIT_17		(1L << 17) | 
 | 49 | #define BIT_16		(1L << 16) | 
 | 50 | #define BIT_15		(1L << 15) | 
 | 51 | #define BIT_14		(1L << 14) | 
 | 52 | #define BIT_13		(1L << 13) | 
 | 53 | #define BIT_12		(1L << 12) | 
 | 54 | #define BIT_11		(1L << 11) | 
 | 55 | #define BIT_10		(1L << 10) | 
 | 56 | #define BIT_9		(1L << 9) | 
 | 57 | #define BIT_8		(1L << 8) | 
 | 58 | #define BIT_7		(1L << 7) | 
 | 59 | #define BIT_6		(1L << 6) | 
 | 60 | #define BIT_5		(1L << 5) | 
 | 61 | #define BIT_4		(1L << 4) | 
 | 62 | #define BIT_3		(1L << 3) | 
 | 63 | #define BIT_2		(1L << 2) | 
 | 64 | #define BIT_1		(1L << 1) | 
 | 65 | #define BIT_0		1L | 
 | 66 |  | 
 | 67 | #define BIT_15S		(1U << 15) | 
 | 68 | #define BIT_14S		(1 << 14) | 
 | 69 | #define BIT_13S		(1 << 13) | 
 | 70 | #define BIT_12S		(1 << 12) | 
 | 71 | #define BIT_11S		(1 << 11) | 
 | 72 | #define BIT_10S		(1 << 10) | 
 | 73 | #define BIT_9S		(1 << 9) | 
 | 74 | #define BIT_8S		(1 << 8) | 
 | 75 | #define BIT_7S 		(1 << 7) | 
 | 76 | #define BIT_6S		(1 << 6) | 
 | 77 | #define BIT_5S		(1 << 5) | 
 | 78 | #define BIT_4S		(1 << 4) | 
 | 79 | #define BIT_3S		(1 << 3) | 
 | 80 | #define BIT_2S		(1 << 2) | 
 | 81 | #define BIT_1S		(1 << 1) | 
 | 82 | #define BIT_0S		1 | 
 | 83 |  | 
 | 84 | #define SHIFT31(x)	((x) << 31) | 
 | 85 | #define SHIFT30(x)	((x) << 30) | 
 | 86 | #define SHIFT29(x)	((x) << 29) | 
 | 87 | #define SHIFT28(x)	((x) << 28) | 
 | 88 | #define SHIFT27(x)	((x) << 27) | 
 | 89 | #define SHIFT26(x)	((x) << 26) | 
 | 90 | #define SHIFT25(x)	((x) << 25) | 
 | 91 | #define SHIFT24(x)	((x) << 24) | 
 | 92 | #define SHIFT23(x)	((x) << 23) | 
 | 93 | #define SHIFT22(x)	((x) << 22) | 
 | 94 | #define SHIFT21(x)	((x) << 21) | 
 | 95 | #define SHIFT20(x)	((x) << 20) | 
 | 96 | #define SHIFT19(x)	((x) << 19) | 
 | 97 | #define SHIFT18(x)	((x) << 18) | 
 | 98 | #define SHIFT17(x)	((x) << 17) | 
 | 99 | #define SHIFT16(x)	((x) << 16) | 
 | 100 | #define SHIFT15(x)	((x) << 15) | 
 | 101 | #define SHIFT14(x)	((x) << 14) | 
 | 102 | #define SHIFT13(x)	((x) << 13) | 
 | 103 | #define SHIFT12(x)	((x) << 12) | 
 | 104 | #define SHIFT11(x)	((x) << 11) | 
 | 105 | #define SHIFT10(x)	((x) << 10) | 
 | 106 | #define SHIFT9(x)	((x) << 9) | 
 | 107 | #define SHIFT8(x)	((x) << 8) | 
 | 108 | #define SHIFT7(x)	((x) << 7) | 
 | 109 | #define SHIFT6(x)	((x) << 6) | 
 | 110 | #define SHIFT5(x)	((x) << 5) | 
 | 111 | #define SHIFT4(x)	((x) << 4) | 
 | 112 | #define SHIFT3(x)	((x) << 3) | 
 | 113 | #define SHIFT2(x)	((x) << 2) | 
 | 114 | #define SHIFT1(x)	((x) << 1) | 
 | 115 | #define SHIFT0(x)	((x) << 0) | 
 | 116 |  | 
 | 117 | /* | 
 | 118 |  * Configuration Space header | 
 | 119 |  * Since this module is used for different OS', those may be | 
 | 120 |  * duplicate on some of them (e.g. Linux). But to keep the | 
 | 121 |  * common source, we have to live with this... | 
 | 122 |  */ | 
 | 123 | #define PCI_VENDOR_ID	0x00	/* 16 bit	Vendor ID */ | 
 | 124 | #define PCI_DEVICE_ID	0x02	/* 16 bit	Device ID */ | 
 | 125 | #define PCI_COMMAND		0x04	/* 16 bit	Command */ | 
 | 126 | #define PCI_STATUS		0x06	/* 16 bit	Status */ | 
 | 127 | #define PCI_REV_ID		0x08	/*  8 bit	Revision ID */ | 
 | 128 | #define PCI_CLASS_CODE	0x09	/* 24 bit	Class Code */ | 
 | 129 | #define PCI_CACHE_LSZ	0x0c	/*  8 bit	Cache Line Size */ | 
 | 130 | #define PCI_LAT_TIM		0x0d	/*  8 bit	Latency Timer */ | 
 | 131 | #define PCI_HEADER_T	0x0e	/*  8 bit	Header Type */ | 
 | 132 | #define PCI_BIST		0x0f	/*  8 bit	Built-in selftest */ | 
 | 133 | #define PCI_BASE_1ST	0x10	/* 32 bit	1st Base address */ | 
 | 134 | #define PCI_BASE_2ND	0x14	/* 32 bit	2nd Base address */ | 
 | 135 | 	/* Byte 0x18..0x2b:	reserved */ | 
 | 136 | #define PCI_SUB_VID		0x2c	/* 16 bit	Subsystem Vendor ID */ | 
 | 137 | #define PCI_SUB_ID		0x2e	/* 16 bit	Subsystem ID */ | 
 | 138 | #define PCI_BASE_ROM	0x30	/* 32 bit	Expansion ROM Base Address */ | 
 | 139 | #define PCI_CAP_PTR		0x34	/*  8 bit 	Capabilities Ptr */ | 
 | 140 | 	/* Byte 0x35..0x3b:	reserved */ | 
 | 141 | #define PCI_IRQ_LINE	0x3c	/*  8 bit	Interrupt Line */ | 
 | 142 | #define PCI_IRQ_PIN		0x3d	/*  8 bit	Interrupt Pin */ | 
 | 143 | #define PCI_MIN_GNT		0x3e	/*  8 bit	Min_Gnt */ | 
 | 144 | #define PCI_MAX_LAT		0x3f	/*  8 bit	Max_Lat */ | 
 | 145 | 	/* Device Dependent Region */ | 
 | 146 | #define PCI_OUR_REG_1	0x40	/* 32 bit 	Our Register 1 */ | 
 | 147 | #define PCI_OUR_REG_2	0x44	/* 32 bit 	Our Register 2 */ | 
 | 148 | 	/* Power Management Region */ | 
 | 149 | #define PCI_PM_CAP_ID	0x48	/*  8 bit 	Power Management Cap. ID */ | 
 | 150 | #define PCI_PM_NITEM	0x49	/*  8 bit 	Next Item Ptr */ | 
 | 151 | #define PCI_PM_CAP_REG	0x4a	/* 16 bit 	Power Management Capabilities */ | 
 | 152 | #define PCI_PM_CTL_STS	0x4c	/* 16 bit 	Power Manag. Control/Status */ | 
 | 153 | 	/* Byte 0x4e:	reserved */ | 
 | 154 | #define PCI_PM_DAT_REG	0x4f	/*  8 bit 	Power Manag. Data Register */ | 
 | 155 | 	/* VPD Region */ | 
 | 156 | #define PCI_VPD_CAP_ID	0x50	/*  8 bit 	VPD Cap. ID */ | 
 | 157 | #define PCI_VPD_NITEM	0x51	/*  8 bit 	Next Item Ptr */ | 
 | 158 | #define PCI_VPD_ADR_REG	0x52	/* 16 bit 	VPD Address Register */ | 
 | 159 | #define PCI_VPD_DAT_REG	0x54	/* 32 bit 	VPD Data Register */ | 
 | 160 | 	/* Byte 0x58..0x59:	reserved */ | 
 | 161 | #define PCI_SER_LD_CTRL	0x5a	/* 16 bit 	SEEPROM Loader Ctrl (YUKON only) */ | 
 | 162 | 	/* Byte 0x5c..0xff:	reserved */ | 
 | 163 |  | 
 | 164 | /* | 
 | 165 |  * I2C Address (PCI Config) | 
 | 166 |  * | 
 | 167 |  * Note: The temperature and voltage sensors are relocated on a different | 
 | 168 |  *	 I2C bus. | 
 | 169 |  */ | 
 | 170 | #define I2C_ADDR_VPD	0xa0	/* I2C address for the VPD EEPROM */ | 
 | 171 |  | 
 | 172 | /* | 
 | 173 |  * Define Bits and Values of the registers | 
 | 174 |  */ | 
 | 175 | /*	PCI_COMMAND	16 bit	Command */ | 
 | 176 | 								/* Bit 15..11:	reserved */ | 
 | 177 | #define PCI_INT_DIS		BIT_10S		/* Interrupt INTx# disable (PCI 2.3) */ | 
 | 178 | #define PCI_FBTEN		BIT_9S		/* Fast Back-To-Back enable */ | 
 | 179 | #define PCI_SERREN		BIT_8S		/* SERR enable */ | 
 | 180 | #define PCI_ADSTEP		BIT_7S		/* Address Stepping */ | 
 | 181 | #define PCI_PERREN		BIT_6S		/* Parity Report Response enable */ | 
 | 182 | #define PCI_VGA_SNOOP	BIT_5S		/* VGA palette snoop */ | 
 | 183 | #define PCI_MWIEN		BIT_4S		/* Memory write an inv cycl ena */ | 
 | 184 | #define PCI_SCYCEN		BIT_3S		/* Special Cycle enable */ | 
 | 185 | #define PCI_BMEN		BIT_2S		/* Bus Master enable */ | 
 | 186 | #define PCI_MEMEN		BIT_1S		/* Memory Space Access enable */ | 
 | 187 | #define PCI_IOEN		BIT_0S		/* I/O Space Access enable */ | 
 | 188 |  | 
 | 189 | #define PCI_COMMAND_VAL	(PCI_FBTEN | PCI_SERREN | PCI_PERREN | PCI_MWIEN |\ | 
 | 190 | 						 PCI_BMEN | PCI_MEMEN | PCI_IOEN) | 
 | 191 |  | 
 | 192 | /*	PCI_STATUS	16 bit	Status */ | 
 | 193 | #define PCI_PERR		BIT_15S		/* Parity Error */ | 
 | 194 | #define PCI_SERR		BIT_14S		/* Signaled SERR */ | 
 | 195 | #define PCI_RMABORT		BIT_13S		/* Received Master Abort */ | 
 | 196 | #define PCI_RTABORT		BIT_12S		/* Received Target Abort */ | 
 | 197 | 								/* Bit 11:	reserved */ | 
 | 198 | #define PCI_DEVSEL		(3<<9)		/* Bit 10.. 9:	DEVSEL Timing */ | 
 | 199 | #define PCI_DEV_FAST	(0<<9)		/*		fast */ | 
 | 200 | #define PCI_DEV_MEDIUM	(1<<9)		/*		medium */ | 
 | 201 | #define PCI_DEV_SLOW	(2<<9)		/*		slow */ | 
 | 202 | #define PCI_DATAPERR	BIT_8S		/* DATA Parity error detected */ | 
 | 203 | #define PCI_FB2BCAP		BIT_7S		/* Fast Back-to-Back Capability */ | 
 | 204 | #define PCI_UDF			BIT_6S		/* User Defined Features */ | 
 | 205 | #define PCI_66MHZCAP	BIT_5S		/* 66 MHz PCI bus clock capable */ | 
 | 206 | #define PCI_NEWCAP		BIT_4S		/* New cap. list implemented */ | 
 | 207 | #define PCI_INT_STAT	BIT_3S		/* Interrupt INTx# Status (PCI 2.3) */ | 
 | 208 | 								/* Bit  2.. 0:	reserved */ | 
 | 209 |  | 
 | 210 | #define PCI_ERRBITS	(PCI_PERR | PCI_SERR | PCI_RMABORT | PCI_RTABORT |\ | 
 | 211 | 			PCI_DATAPERR) | 
 | 212 |  | 
 | 213 | /*	PCI_CLASS_CODE	24 bit	Class Code */ | 
 | 214 | /*	Byte 2:		Base Class		(02) */ | 
 | 215 | /*	Byte 1:		SubClass		(00) */ | 
 | 216 | /*	Byte 0:		Programming Interface	(00) */ | 
 | 217 |  | 
 | 218 | /*	PCI_CACHE_LSZ	8 bit	Cache Line Size */ | 
 | 219 | /*	Possible values: 0,2,4,8,16,32,64,128	*/ | 
 | 220 |  | 
 | 221 | /*	PCI_HEADER_T	8 bit	Header Type */ | 
 | 222 | #define PCI_HD_MF_DEV	BIT_7S	/* 0= single, 1= multi-func dev */ | 
 | 223 | #define PCI_HD_TYPE		0x7f	/* Bit 6..0:	Header Layout 0= normal */ | 
 | 224 |  | 
 | 225 | /*	PCI_BIST	8 bit	Built-in selftest */ | 
 | 226 | /*	Built-in Self test not supported (optional) */ | 
 | 227 |  | 
 | 228 | /*	PCI_BASE_1ST	32 bit	1st Base address */ | 
 | 229 | #define PCI_MEMSIZE		0x4000L		/* use 16 kB Memory Base */ | 
 | 230 | #define PCI_MEMBASE_MSK 0xffffc000L	/* Bit 31..14:	Memory Base Address */ | 
 | 231 | #define PCI_MEMSIZE_MSK 0x00003ff0L	/* Bit 13.. 4:	Memory Size Req. */ | 
 | 232 | #define PCI_PREFEN		BIT_3		/* Prefetchable */ | 
 | 233 | #define PCI_MEM_TYP		(3L<<2)		/* Bit	2.. 1:	Memory Type */ | 
 | 234 | #define PCI_MEM32BIT	(0L<<1)		/* Base addr anywhere in 32 Bit range */ | 
 | 235 | #define PCI_MEM1M		(1L<<1)		/* Base addr below 1 MegaByte */ | 
 | 236 | #define PCI_MEM64BIT	(2L<<1)		/* Base addr anywhere in 64 Bit range */ | 
 | 237 | #define PCI_MEMSPACE	BIT_0		/* Memory Space Indicator */ | 
 | 238 |  | 
 | 239 | /*	PCI_BASE_2ND	32 bit	2nd Base address */ | 
 | 240 | #define PCI_IOBASE		0xffffff00L	/* Bit 31.. 8:	I/O Base address */ | 
 | 241 | #define PCI_IOSIZE		0x000000fcL	/* Bit	7.. 2:	I/O Size Requirements */ | 
 | 242 | 									/* Bit	1:	reserved */ | 
 | 243 | #define PCI_IOSPACE		BIT_0		/* I/O Space Indicator */ | 
 | 244 |  | 
 | 245 | /*	PCI_BASE_ROM	32 bit	Expansion ROM Base Address */ | 
 | 246 | #define PCI_ROMBASE_MSK	0xfffe0000L	/* Bit 31..17:	ROM Base address */ | 
 | 247 | #define PCI_ROMBASE_SIZ	(0x1cL<<14)	/* Bit 16..14:	Treat as Base or Size */ | 
 | 248 | #define PCI_ROMSIZE		(0x38L<<11)	/* Bit 13..11:	ROM Size Requirements */ | 
 | 249 | 									/* Bit 10.. 1:	reserved */ | 
 | 250 | #define PCI_ROMEN		BIT_0		/* Address Decode enable */ | 
 | 251 |  | 
 | 252 | /* Device Dependent Region */ | 
 | 253 | /*	PCI_OUR_REG_1		32 bit	Our Register 1 */ | 
 | 254 | 									/* Bit 31..29:	reserved */ | 
 | 255 | #define PCI_PHY_COMA	BIT_28		/* Set PHY to Coma Mode (YUKON only) */ | 
 | 256 | #define PCI_TEST_CAL	BIT_27		/* Test PCI buffer calib. (YUKON only) */ | 
 | 257 | #define PCI_EN_CAL		BIT_26		/* Enable PCI buffer calib. (YUKON only) */ | 
 | 258 | #define PCI_VIO			BIT_25		/* PCI I/O Voltage, 0 = 3.3V, 1 = 5V */ | 
 | 259 | #define PCI_DIS_BOOT	BIT_24		/* Disable BOOT via ROM */ | 
 | 260 | #define PCI_EN_IO		BIT_23		/* Mapping to I/O space */ | 
 | 261 | #define PCI_EN_FPROM	BIT_22		/* Enable FLASH mapping to memory */ | 
 | 262 | 									/*		1 = Map Flash to memory */ | 
 | 263 | 									/*		0 = Disable addr. dec */ | 
 | 264 | #define PCI_PAGESIZE	(3L<<20)	/* Bit 21..20:	FLASH Page Size	*/ | 
 | 265 | #define PCI_PAGE_16		(0L<<20)	/*		16 k pages	*/ | 
 | 266 | #define PCI_PAGE_32K	(1L<<20)	/*		32 k pages	*/ | 
 | 267 | #define PCI_PAGE_64K	(2L<<20)	/*		64 k pages	*/ | 
 | 268 | #define PCI_PAGE_128K	(3L<<20)	/*		128 k pages	*/ | 
 | 269 | 									/* Bit 19:	reserved	*/ | 
 | 270 | #define PCI_PAGEREG		(7L<<16)	/* Bit 18..16:	Page Register	*/ | 
 | 271 | #define PCI_NOTAR		BIT_15		/* No turnaround cycle */ | 
 | 272 | #define PCI_FORCE_BE	BIT_14		/* Assert all BEs on MR */ | 
 | 273 | #define PCI_DIS_MRL		BIT_13		/* Disable Mem Read Line */ | 
 | 274 | #define PCI_DIS_MRM		BIT_12		/* Disable Mem Read Multiple */ | 
 | 275 | #define PCI_DIS_MWI		BIT_11		/* Disable Mem Write & Invalidate */ | 
 | 276 | #define PCI_DISC_CLS	BIT_10		/* Disc: cacheLsz bound */ | 
 | 277 | #define PCI_BURST_DIS	BIT_9		/* Burst Disable */ | 
 | 278 | #define PCI_DIS_PCI_CLK	BIT_8		/* Disable PCI clock driving */ | 
 | 279 | #define PCI_SKEW_DAS	(0xfL<<4)	/* Bit	7.. 4:	Skew Ctrl, DAS Ext */ | 
 | 280 | #define PCI_SKEW_BASE	0xfL		/* Bit	3.. 0:	Skew Ctrl, Base	*/ | 
 | 281 |  | 
 | 282 |  | 
 | 283 | /*	PCI_OUR_REG_2		32 bit	Our Register 2 */ | 
 | 284 | #define PCI_VPD_WR_THR	(0xffL<<24)	/* Bit 31..24:	VPD Write Threshold */ | 
 | 285 | #define PCI_DEV_SEL		(0x7fL<<17)	/* Bit 23..17:	EEPROM Device Select */ | 
 | 286 | #define PCI_VPD_ROM_SZ	(7L<<14)	/* Bit 16..14:	VPD ROM Size	*/ | 
 | 287 | 									/* Bit 13..12:	reserved	*/ | 
 | 288 | #define PCI_PATCH_DIR	(0xfL<<8)	/* Bit 11.. 8:	Ext Patches dir 3..0 */ | 
 | 289 | #define PCI_PATCH_DIR_3	BIT_11 | 
 | 290 | #define PCI_PATCH_DIR_2	BIT_10 | 
 | 291 | #define PCI_PATCH_DIR_1	BIT_9 | 
 | 292 | #define PCI_PATCH_DIR_0	BIT_8 | 
 | 293 | #define PCI_EXT_PATCHS	(0xfL<<4)	/* Bit	7.. 4:	Extended Patches 3..0 */ | 
 | 294 | #define PCI_EXT_PATCH_3	BIT_7 | 
 | 295 | #define PCI_EXT_PATCH_2	BIT_6 | 
 | 296 | #define PCI_EXT_PATCH_1	BIT_5 | 
 | 297 | #define PCI_EXT_PATCH_0	BIT_4 | 
 | 298 | #define PCI_EN_DUMMY_RD	BIT_3		/* Enable Dummy Read */ | 
 | 299 | #define PCI_REV_DESC	BIT_2		/* Reverse Desc. Bytes */ | 
 | 300 | 									/* Bit	1:	reserved */ | 
 | 301 | #define PCI_USEDATA64	BIT_0		/* Use 64Bit Data bus ext */ | 
 | 302 |  | 
 | 303 |  | 
 | 304 | /* Power Management Region */ | 
 | 305 | /*	PCI_PM_CAP_REG		16 bit	Power Management Capabilities */ | 
 | 306 | #define PCI_PME_SUP_MSK	(0x1f<<11)	/* Bit 15..11:	PM Event Support Mask */ | 
 | 307 | #define PCI_PME_D3C_SUP	BIT_15S		/* PME from D3cold Support (if Vaux) */ | 
 | 308 | #define PCI_PME_D3H_SUP	BIT_14S		/* PME from D3hot Support */ | 
 | 309 | #define PCI_PME_D2_SUP	BIT_13S		/* PME from D2 Support */ | 
 | 310 | #define PCI_PME_D1_SUP	BIT_12S		/* PME from D1 Support */ | 
 | 311 | #define PCI_PME_D0_SUP	BIT_11S		/* PME from D0 Support */ | 
 | 312 | #define PCI_PM_D2_SUP	BIT_10S		/* D2 Support in 33 MHz mode */ | 
 | 313 | #define PCI_PM_D1_SUP	BIT_9S		/* D1 Support */ | 
 | 314 | 									/* Bit	8.. 6:	reserved */ | 
 | 315 | #define PCI_PM_DSI		BIT_5S		/* Device Specific Initialization */ | 
 | 316 | #define PCI_PM_APS		BIT_4S		/* Auxialiary Power Source */ | 
 | 317 | #define PCI_PME_CLOCK	BIT_3S		/* PM Event Clock */ | 
 | 318 | #define PCI_PM_VER_MSK		7		/* Bit	2.. 0:	PM PCI Spec. version */ | 
 | 319 |  | 
 | 320 | /*	PCI_PM_CTL_STS		16 bit	Power Management Control/Status */ | 
 | 321 | #define PCI_PME_STATUS	BIT_15S		/* PME Status (YUKON only) */ | 
 | 322 | #define PCI_PM_DAT_SCL	(3<<13)		/* Bit 14..13:	Data Reg. scaling factor */ | 
 | 323 | #define PCI_PM_DAT_SEL	(0xf<<9)	/* Bit 12.. 9:	PM data selector field */ | 
 | 324 | #define PCI_PME_EN		BIT_8S		/* Enable PME# generation (YUKON only) */ | 
 | 325 | 									/* Bit	7.. 2:	reserved */ | 
 | 326 | #define PCI_PM_STATE_MSK	3		/* Bit	1.. 0:	Power Management State */ | 
 | 327 |  | 
 | 328 | #define PCI_PM_STATE_D0		0		/* D0:	Operational (default) */ | 
 | 329 | #define PCI_PM_STATE_D1		1		/* D1:	(YUKON only) */ | 
 | 330 | #define PCI_PM_STATE_D2		2		/* D2:	(YUKON only) */ | 
 | 331 | #define PCI_PM_STATE_D3 	3		/* D3:	HOT, Power Down and Reset */ | 
 | 332 |  | 
 | 333 | /* VPD Region */ | 
 | 334 | /*	PCI_VPD_ADR_REG		16 bit	VPD Address Register */ | 
 | 335 | #define PCI_VPD_FLAG	BIT_15S		/* starts VPD rd/wr cycle */ | 
 | 336 | #define PCI_VPD_ADR_MSK	0x7fffL		/* Bit 14.. 0:	VPD address mask */ | 
 | 337 |  | 
 | 338 | /*	Control Register File (Address Map) */ | 
 | 339 |  | 
 | 340 | /* | 
 | 341 |  *	Bank 0 | 
 | 342 |  */ | 
 | 343 | #define B0_RAP			0x0000	/*  8 bit	Register Address Port */ | 
 | 344 | 	/* 0x0001 - 0x0003:	reserved */ | 
 | 345 | #define B0_CTST			0x0004	/* 16 bit	Control/Status register */ | 
 | 346 | #define B0_LED			0x0006	/*  8 Bit	LED register */ | 
 | 347 | #define B0_POWER_CTRL	0x0007	/*  8 Bit	Power Control reg (YUKON only) */ | 
 | 348 | #define B0_ISRC			0x0008	/* 32 bit	Interrupt Source Register */ | 
 | 349 | #define B0_IMSK			0x000c	/* 32 bit	Interrupt Mask Register */ | 
 | 350 | #define B0_HWE_ISRC		0x0010	/* 32 bit	HW Error Interrupt Src Reg */ | 
 | 351 | #define B0_HWE_IMSK		0x0014	/* 32 bit	HW Error Interrupt Mask Reg */ | 
 | 352 | #define B0_SP_ISRC		0x0018	/* 32 bit	Special Interrupt Source Reg */ | 
 | 353 | 	/* 0x001c:		reserved */ | 
 | 354 |  | 
 | 355 | /* B0 XMAC 1 registers (GENESIS only) */ | 
 | 356 | #define B0_XM1_IMSK		0x0020	/* 16 bit r/w	XMAC 1 Interrupt Mask Register*/ | 
 | 357 | 	/* 0x0022 - 0x0027:	reserved */ | 
 | 358 | #define B0_XM1_ISRC		0x0028	/* 16 bit ro	XMAC 1 Interrupt Status Reg */ | 
 | 359 | 	/* 0x002a - 0x002f:	reserved */ | 
 | 360 | #define B0_XM1_PHY_ADDR 0x0030	/* 16 bit r/w	XMAC 1 PHY Address Register */ | 
 | 361 | 	/* 0x0032 - 0x0033:	reserved */ | 
 | 362 | #define B0_XM1_PHY_DATA 0x0034	/* 16 bit r/w	XMAC 1 PHY Data Register */ | 
 | 363 | 	/* 0x0036 - 0x003f:	reserved */ | 
 | 364 |  | 
 | 365 | /* B0 XMAC 2 registers (GENESIS only) */ | 
 | 366 | #define B0_XM2_IMSK		0x0040	/* 16 bit r/w	XMAC 2 Interrupt Mask Register*/ | 
 | 367 | 	/* 0x0042 - 0x0047:	reserved */ | 
 | 368 | #define B0_XM2_ISRC		0x0048	/* 16 bit ro	XMAC 2 Interrupt Status Reg */ | 
 | 369 | 	/* 0x004a - 0x004f:	reserved */ | 
 | 370 | #define B0_XM2_PHY_ADDR 0x0050	/* 16 bit r/w	XMAC 2 PHY Address Register */ | 
 | 371 | 	/* 0x0052 - 0x0053:	reserved */ | 
 | 372 | #define B0_XM2_PHY_DATA 0x0054	/* 16 bit r/w	XMAC 2 PHY Data Register */ | 
 | 373 | 	/* 0x0056 - 0x005f:	reserved */ | 
 | 374 |  | 
 | 375 | /* BMU Control Status Registers */ | 
 | 376 | #define B0_R1_CSR		0x0060	/* 32 bit	BMU Ctrl/Stat Rx Queue 1 */ | 
 | 377 | #define B0_R2_CSR		0x0064	/* 32 bit	BMU Ctrl/Stat Rx Queue 2 */ | 
 | 378 | #define B0_XS1_CSR		0x0068	/* 32 bit	BMU Ctrl/Stat Sync Tx Queue 1 */ | 
 | 379 | #define B0_XA1_CSR		0x006c	/* 32 bit	BMU Ctrl/Stat Async Tx Queue 1*/ | 
 | 380 | #define B0_XS2_CSR		0x0070	/* 32 bit	BMU Ctrl/Stat Sync Tx Queue 2 */ | 
 | 381 | #define B0_XA2_CSR		0x0074	/* 32 bit	BMU Ctrl/Stat Async Tx Queue 2*/ | 
 | 382 | 	/* 0x0078 - 0x007f:	reserved */ | 
 | 383 |  | 
 | 384 | /* | 
 | 385 |  *	Bank 1 | 
 | 386 |  *	- completely empty (this is the RAP Block window) | 
 | 387 |  *	Note: if RAP = 1 this page is reserved | 
 | 388 |  */ | 
 | 389 |  | 
 | 390 | /* | 
 | 391 |  *	Bank 2 | 
 | 392 |  */ | 
 | 393 | /* NA reg = 48 bit Network Address Register, 3x16 or 8x8 bit readable */ | 
 | 394 | #define B2_MAC_1		0x0100	/* NA reg	 MAC Address 1 */ | 
 | 395 | 	/* 0x0106 - 0x0107:	reserved */ | 
 | 396 | #define B2_MAC_2		0x0108	/* NA reg	 MAC Address 2 */ | 
 | 397 | 	/* 0x010e - 0x010f:	reserved */ | 
 | 398 | #define B2_MAC_3		0x0110	/* NA reg	 MAC Address 3 */ | 
 | 399 | 	/* 0x0116 - 0x0117:	reserved */ | 
 | 400 | #define B2_CONN_TYP		0x0118	/*  8 bit	Connector type */ | 
 | 401 | #define B2_PMD_TYP		0x0119	/*  8 bit	PMD type */ | 
 | 402 | #define B2_MAC_CFG		0x011a	/*  8 bit	MAC Configuration / Chip Revision */ | 
 | 403 | #define B2_CHIP_ID		0x011b	/*  8 bit 	Chip Identification Number */ | 
 | 404 | 	/* Eprom registers are currently of no use */ | 
 | 405 | #define B2_E_0			0x011c	/*  8 bit	EPROM Byte 0 (ext. SRAM size */ | 
 | 406 | #define B2_E_1			0x011d	/*  8 bit	EPROM Byte 1 (PHY type) */ | 
 | 407 | #define B2_E_2			0x011e	/*  8 bit	EPROM Byte 2 */ | 
 | 408 | #define B2_E_3			0x011f	/*  8 bit	EPROM Byte 3 */ | 
 | 409 | #define B2_FAR			0x0120	/* 32 bit	Flash-Prom Addr Reg/Cnt */ | 
 | 410 | #define B2_FDP			0x0124	/*  8 bit	Flash-Prom Data Port */ | 
 | 411 | 	/* 0x0125 - 0x0127:	reserved */ | 
 | 412 | #define B2_LD_CTRL		0x0128	/*  8 bit	EPROM loader control register */ | 
 | 413 | #define B2_LD_TEST		0x0129	/*  8 bit	EPROM loader test register */ | 
 | 414 | 	/* 0x012a - 0x012f:	reserved */ | 
 | 415 | #define B2_TI_INI		0x0130	/* 32 bit	Timer Init Value */ | 
 | 416 | #define B2_TI_VAL		0x0134	/* 32 bit	Timer Value */ | 
 | 417 | #define B2_TI_CTRL		0x0138	/*  8 bit	Timer Control */ | 
 | 418 | #define B2_TI_TEST		0x0139	/*  8 Bit	Timer Test */ | 
 | 419 | 	/* 0x013a - 0x013f:	reserved */ | 
 | 420 | #define B2_IRQM_INI		0x0140	/* 32 bit	IRQ Moderation Timer Init Reg.*/ | 
 | 421 | #define B2_IRQM_VAL		0x0144	/* 32 bit	IRQ Moderation Timer Value */ | 
 | 422 | #define B2_IRQM_CTRL	0x0148	/*  8 bit	IRQ Moderation Timer Control */ | 
 | 423 | #define B2_IRQM_TEST	0x0149	/*  8 bit	IRQ Moderation Timer Test */ | 
 | 424 | #define B2_IRQM_MSK 	0x014c	/* 32 bit	IRQ Moderation Mask */ | 
 | 425 | #define B2_IRQM_HWE_MSK 0x0150	/* 32 bit	IRQ Moderation HW Error Mask */ | 
 | 426 | 	/* 0x0154 - 0x0157:	reserved */ | 
 | 427 | #define B2_TST_CTRL1	0x0158	/*  8 bit	Test Control Register 1 */ | 
 | 428 | #define B2_TST_CTRL2	0x0159	/*  8 bit	Test Control Register 2 */ | 
 | 429 | 	/* 0x015a - 0x015b:	reserved */ | 
 | 430 | #define B2_GP_IO		0x015c	/* 32 bit	General Purpose I/O Register */ | 
 | 431 | #define B2_I2C_CTRL		0x0160	/* 32 bit	I2C HW Control Register */ | 
 | 432 | #define B2_I2C_DATA		0x0164	/* 32 bit	I2C HW Data Register */ | 
 | 433 | #define B2_I2C_IRQ		0x0168	/* 32 bit	I2C HW IRQ Register */ | 
 | 434 | #define B2_I2C_SW		0x016c	/* 32 bit	I2C SW Port Register */ | 
 | 435 |  | 
 | 436 | /* Blink Source Counter (GENESIS only) */ | 
 | 437 | #define B2_BSC_INI		0x0170	/* 32 bit	Blink Source Counter Init Val */ | 
 | 438 | #define B2_BSC_VAL		0x0174	/* 32 bit	Blink Source Counter Value */ | 
 | 439 | #define B2_BSC_CTRL		0x0178	/*  8 bit	Blink Source Counter Control */ | 
 | 440 | #define B2_BSC_STAT		0x0179	/*  8 bit	Blink Source Counter Status */ | 
 | 441 | #define B2_BSC_TST		0x017a	/* 16 bit	Blink Source Counter Test Reg */ | 
 | 442 | 	/* 0x017c - 0x017f:	reserved */ | 
 | 443 |  | 
 | 444 | /* | 
 | 445 |  *	Bank 3 | 
 | 446 |  */ | 
 | 447 | /* RAM Random Registers */ | 
 | 448 | #define B3_RAM_ADDR		0x0180	/* 32 bit	RAM Address, to read or write */ | 
 | 449 | #define B3_RAM_DATA_LO	0x0184	/* 32 bit	RAM Data Word (low dWord) */ | 
 | 450 | #define B3_RAM_DATA_HI	0x0188	/* 32 bit	RAM Data Word (high dWord) */ | 
 | 451 | 	/* 0x018c - 0x018f:	reserved */ | 
 | 452 |  | 
 | 453 | /* RAM Interface Registers */ | 
 | 454 | /* | 
 | 455 |  * The HW-Spec. calls this registers Timeout Value 0..11. But this names are | 
 | 456 |  * not usable in SW. Please notice these are NOT real timeouts, these are | 
 | 457 |  * the number of qWords transferred continuously. | 
 | 458 |  */ | 
 | 459 | #define B3_RI_WTO_R1	0x0190	/*  8 bit	WR Timeout Queue R1		(TO0) */ | 
 | 460 | #define B3_RI_WTO_XA1	0x0191	/*  8 bit	WR Timeout Queue XA1	(TO1) */ | 
 | 461 | #define B3_RI_WTO_XS1	0x0192	/*  8 bit	WR Timeout Queue XS1	(TO2) */ | 
 | 462 | #define B3_RI_RTO_R1	0x0193	/*  8 bit	RD Timeout Queue R1		(TO3) */ | 
 | 463 | #define B3_RI_RTO_XA1	0x0194	/*  8 bit	RD Timeout Queue XA1	(TO4) */ | 
 | 464 | #define B3_RI_RTO_XS1	0x0195	/*  8 bit	RD Timeout Queue XS1	(TO5) */ | 
 | 465 | #define B3_RI_WTO_R2	0x0196	/*  8 bit	WR Timeout Queue R2		(TO6) */ | 
 | 466 | #define B3_RI_WTO_XA2	0x0197	/*  8 bit	WR Timeout Queue XA2	(TO7) */ | 
 | 467 | #define B3_RI_WTO_XS2	0x0198	/*  8 bit	WR Timeout Queue XS2	(TO8) */ | 
 | 468 | #define B3_RI_RTO_R2	0x0199	/*  8 bit	RD Timeout Queue R2		(TO9) */ | 
 | 469 | #define B3_RI_RTO_XA2	0x019a	/*  8 bit	RD Timeout Queue XA2	(TO10)*/ | 
 | 470 | #define B3_RI_RTO_XS2	0x019b	/*  8 bit	RD Timeout Queue XS2	(TO11)*/ | 
 | 471 | #define B3_RI_TO_VAL	0x019c	/*  8 bit	Current Timeout Count Val */ | 
 | 472 | 	/* 0x019d - 0x019f:	reserved */ | 
 | 473 | #define B3_RI_CTRL		0x01a0	/* 16 bit	RAM Interface Control Register */ | 
 | 474 | #define B3_RI_TEST		0x01a2	/*  8 bit	RAM Interface Test Register */ | 
 | 475 | 	/* 0x01a3 - 0x01af:	reserved */ | 
 | 476 |  | 
 | 477 | /* MAC Arbiter Registers (GENESIS only) */ | 
 | 478 | /* these are the no. of qWord transferred continuously and NOT real timeouts */ | 
 | 479 | #define B3_MA_TOINI_RX1	0x01b0	/*  8 bit	Timeout Init Val Rx Path MAC 1 */ | 
 | 480 | #define B3_MA_TOINI_RX2	0x01b1	/*  8 bit	Timeout Init Val Rx Path MAC 2 */ | 
 | 481 | #define B3_MA_TOINI_TX1	0x01b2	/*  8 bit	Timeout Init Val Tx Path MAC 1 */ | 
 | 482 | #define B3_MA_TOINI_TX2	0x01b3	/*  8 bit	Timeout Init Val Tx Path MAC 2 */ | 
 | 483 | #define B3_MA_TOVAL_RX1	0x01b4	/*  8 bit	Timeout Value Rx Path MAC 1 */ | 
 | 484 | #define B3_MA_TOVAL_RX2	0x01b5	/*  8 bit	Timeout Value Rx Path MAC 1 */ | 
 | 485 | #define B3_MA_TOVAL_TX1	0x01b6	/*  8 bit	Timeout Value Tx Path MAC 2 */ | 
 | 486 | #define B3_MA_TOVAL_TX2	0x01b7	/*  8 bit	Timeout Value Tx Path MAC 2 */ | 
 | 487 | #define B3_MA_TO_CTRL	0x01b8	/* 16 bit	MAC Arbiter Timeout Ctrl Reg */ | 
 | 488 | #define B3_MA_TO_TEST	0x01ba	/* 16 bit	MAC Arbiter Timeout Test Reg */ | 
 | 489 | 	/* 0x01bc - 0x01bf:	reserved */ | 
 | 490 | #define B3_MA_RCINI_RX1	0x01c0	/*  8 bit	Recovery Init Val Rx Path MAC 1 */ | 
 | 491 | #define B3_MA_RCINI_RX2	0x01c1	/*  8 bit	Recovery Init Val Rx Path MAC 2 */ | 
 | 492 | #define B3_MA_RCINI_TX1	0x01c2	/*  8 bit	Recovery Init Val Tx Path MAC 1 */ | 
 | 493 | #define B3_MA_RCINI_TX2	0x01c3	/*  8 bit	Recovery Init Val Tx Path MAC 2 */ | 
 | 494 | #define B3_MA_RCVAL_RX1	0x01c4	/*  8 bit	Recovery Value Rx Path MAC 1 */ | 
 | 495 | #define B3_MA_RCVAL_RX2	0x01c5	/*  8 bit	Recovery Value Rx Path MAC 1 */ | 
 | 496 | #define B3_MA_RCVAL_TX1	0x01c6	/*  8 bit	Recovery Value Tx Path MAC 2 */ | 
 | 497 | #define B3_MA_RCVAL_TX2	0x01c7	/*  8 bit	Recovery Value Tx Path MAC 2 */ | 
 | 498 | #define B3_MA_RC_CTRL	0x01c8	/* 16 bit	MAC Arbiter Recovery Ctrl Reg */ | 
 | 499 | #define B3_MA_RC_TEST	0x01ca	/* 16 bit	MAC Arbiter Recovery Test Reg */ | 
 | 500 | 	/* 0x01cc - 0x01cf:	reserved */ | 
 | 501 |  | 
 | 502 | /* Packet Arbiter Registers (GENESIS only) */ | 
 | 503 | /* these are real timeouts */ | 
 | 504 | #define B3_PA_TOINI_RX1	0x01d0	/* 16 bit	Timeout Init Val Rx Path MAC 1 */ | 
 | 505 | 	/* 0x01d2 - 0x01d3:	reserved */ | 
 | 506 | #define B3_PA_TOINI_RX2	0x01d4	/* 16 bit	Timeout Init Val Rx Path MAC 2 */ | 
 | 507 | 	/* 0x01d6 - 0x01d7:	reserved */ | 
 | 508 | #define B3_PA_TOINI_TX1	0x01d8	/* 16 bit	Timeout Init Val Tx Path MAC 1 */ | 
 | 509 | 	/* 0x01da - 0x01db:	reserved */ | 
 | 510 | #define B3_PA_TOINI_TX2	0x01dc	/* 16 bit	Timeout Init Val Tx Path MAC 2 */ | 
 | 511 | 	/* 0x01de - 0x01df:	reserved */ | 
 | 512 | #define B3_PA_TOVAL_RX1	0x01e0	/* 16 bit	Timeout Val Rx Path MAC 1 */ | 
 | 513 | 	/* 0x01e2 - 0x01e3:	reserved */ | 
 | 514 | #define B3_PA_TOVAL_RX2	0x01e4	/* 16 bit	Timeout Val Rx Path MAC 2 */ | 
 | 515 | 	/* 0x01e6 - 0x01e7:	reserved */ | 
 | 516 | #define B3_PA_TOVAL_TX1	0x01e8	/* 16 bit	Timeout Val Tx Path MAC 1 */ | 
 | 517 | 	/* 0x01ea - 0x01eb:	reserved */ | 
 | 518 | #define B3_PA_TOVAL_TX2	0x01ec	/* 16 bit	Timeout Val Tx Path MAC 2 */ | 
 | 519 | 	/* 0x01ee - 0x01ef:	reserved */ | 
 | 520 | #define B3_PA_CTRL	0x01f0	/* 16 bit	Packet Arbiter Ctrl Register */ | 
 | 521 | #define B3_PA_TEST	0x01f2	/* 16 bit	Packet Arbiter Test Register */ | 
 | 522 | 	/* 0x01f4 - 0x01ff:	reserved */ | 
 | 523 |  | 
 | 524 | /* | 
 | 525 |  *	Bank 4 - 5 | 
 | 526 |  */ | 
 | 527 | /* Transmit Arbiter Registers MAC 1 and 2, use MR_ADDR() to access */ | 
 | 528 | #define TXA_ITI_INI		0x0200	/* 32 bit	Tx Arb Interval Timer Init Val*/ | 
 | 529 | #define TXA_ITI_VAL		0x0204	/* 32 bit	Tx Arb Interval Timer Value */ | 
 | 530 | #define TXA_LIM_INI		0x0208	/* 32 bit	Tx Arb Limit Counter Init Val */ | 
 | 531 | #define TXA_LIM_VAL		0x020c	/* 32 bit	Tx Arb Limit Counter Value */ | 
 | 532 | #define TXA_CTRL		0x0210	/*  8 bit	Tx Arbiter Control Register */ | 
 | 533 | #define TXA_TEST		0x0211	/*  8 bit	Tx Arbiter Test Register */ | 
 | 534 | #define TXA_STAT		0x0212	/*  8 bit	Tx Arbiter Status Register */ | 
 | 535 | 	/* 0x0213 - 0x027f:	reserved */ | 
 | 536 | 	/* 0x0280 - 0x0292:	MAC 2 */ | 
 | 537 | 	/* 0x0213 - 0x027f:	reserved */ | 
 | 538 |  | 
 | 539 | /* | 
 | 540 |  *	Bank 6 | 
 | 541 |  */ | 
 | 542 | /* External registers (GENESIS only) */ | 
 | 543 | #define B6_EXT_REG		0x0300 | 
 | 544 |  | 
 | 545 | /* | 
 | 546 |  *	Bank 7 | 
 | 547 |  */ | 
 | 548 | /* This is a copy of the Configuration register file (lower half) */ | 
 | 549 | #define B7_CFG_SPC		0x0380 | 
 | 550 |  | 
 | 551 | /* | 
 | 552 |  *	Bank 8 - 15 | 
 | 553 |  */ | 
 | 554 | /* Receive and Transmit Queue Registers, use Q_ADDR() to access */ | 
 | 555 | #define B8_Q_REGS		0x0400 | 
 | 556 |  | 
 | 557 | /* Queue Register Offsets, use Q_ADDR() to access */ | 
 | 558 | #define Q_D		0x00	/* 8*32	bit	Current Descriptor */ | 
 | 559 | #define Q_DA_L	0x20	/* 32 bit	Current Descriptor Address Low dWord */ | 
 | 560 | #define Q_DA_H	0x24	/* 32 bit	Current Descriptor Address High dWord */ | 
 | 561 | #define Q_AC_L	0x28	/* 32 bit	Current Address Counter Low dWord */ | 
 | 562 | #define Q_AC_H	0x2c	/* 32 bit	Current Address Counter High dWord */ | 
 | 563 | #define Q_BC	0x30	/* 32 bit	Current Byte Counter */ | 
 | 564 | #define Q_CSR	0x34	/* 32 bit	BMU Control/Status Register */ | 
 | 565 | #define Q_F		0x38	/* 32 bit	Flag Register */ | 
 | 566 | #define Q_T1	0x3c	/* 32 bit	Test Register 1 */ | 
 | 567 | #define Q_T1_TR	0x3c	/*  8 bit	Test Register 1 Transfer SM */ | 
 | 568 | #define Q_T1_WR	0x3d	/*  8 bit	Test Register 1 Write Descriptor SM */ | 
 | 569 | #define Q_T1_RD	0x3e	/*  8 bit	Test Register 1 Read Descriptor SM */ | 
 | 570 | #define Q_T1_SV	0x3f	/*  8 bit	Test Register 1 Supervisor SM */ | 
 | 571 | #define Q_T2	0x40	/* 32 bit	Test Register 2	*/ | 
 | 572 | #define Q_T3	0x44	/* 32 bit	Test Register 3	*/ | 
 | 573 | 	/* 0x48 - 0x7f:	reserved */ | 
 | 574 |  | 
 | 575 | /* | 
 | 576 |  *	Bank 16 - 23 | 
 | 577 |  */ | 
 | 578 | /* RAM Buffer Registers */ | 
 | 579 | #define B16_RAM_REGS	0x0800 | 
 | 580 |  | 
 | 581 | /* RAM Buffer Register Offsets, use RB_ADDR() to access */ | 
 | 582 | #define RB_START		0x00	/* 32 bit	RAM Buffer Start Address */ | 
 | 583 | #define RB_END			0x04	/* 32 bit	RAM Buffer End Address */ | 
 | 584 | #define RB_WP			0x08	/* 32 bit	RAM Buffer Write Pointer */ | 
 | 585 | #define RB_RP			0x0c	/* 32 bit	RAM Buffer Read Pointer */ | 
 | 586 | #define RB_RX_UTPP		0x10	/* 32 bit	Rx Upper Threshold, Pause Pack */ | 
 | 587 | #define RB_RX_LTPP		0x14	/* 32 bit	Rx Lower Threshold, Pause Pack */ | 
 | 588 | #define RB_RX_UTHP		0x18	/* 32 bit	Rx Upper Threshold, High Prio */ | 
 | 589 | #define RB_RX_LTHP		0x1c	/* 32 bit	Rx Lower Threshold, High Prio */ | 
 | 590 | 	/* 0x10 - 0x1f:	reserved at Tx RAM Buffer Registers */ | 
 | 591 | #define RB_PC			0x20	/* 32 bit	RAM Buffer Packet Counter */ | 
 | 592 | #define RB_LEV			0x24	/* 32 bit	RAM Buffer Level Register */ | 
 | 593 | #define RB_CTRL			0x28	/*  8 bit	RAM Buffer Control Register */ | 
 | 594 | #define RB_TST1			0x29	/*  8 bit	RAM Buffer Test Register 1 */ | 
 | 595 | #define RB_TST2			0x2A	/*  8 bit	RAM Buffer Test Register 2 */ | 
 | 596 | 	/* 0x2c - 0x7f:	reserved */ | 
 | 597 |  | 
 | 598 | /* | 
 | 599 |  *	Bank 24 | 
 | 600 |  */ | 
 | 601 | /* | 
 | 602 |  * Receive MAC FIFO, Receive LED, and Link_Sync regs (GENESIS only) | 
 | 603 |  * use MR_ADDR() to access | 
 | 604 |  */ | 
 | 605 | #define RX_MFF_EA		0x0c00	/* 32 bit	Receive MAC FIFO End Address */ | 
 | 606 | #define RX_MFF_WP		0x0c04	/* 32 bit 	Receive MAC FIFO Write Pointer */ | 
 | 607 | 	/* 0x0c08 - 0x0c0b:	reserved */ | 
 | 608 | #define RX_MFF_RP		0x0c0c	/* 32 bit	Receive MAC FIFO Read Pointer */ | 
 | 609 | #define RX_MFF_PC		0x0c10	/* 32 bit	Receive MAC FIFO Packet Cnt */ | 
 | 610 | #define RX_MFF_LEV		0x0c14	/* 32 bit	Receive MAC FIFO Level */ | 
 | 611 | #define RX_MFF_CTRL1	0x0c18	/* 16 bit	Receive MAC FIFO Control Reg 1*/ | 
 | 612 | #define RX_MFF_STAT_TO	0x0c1a	/*  8 bit	Receive MAC Status Timeout */ | 
 | 613 | #define RX_MFF_TIST_TO	0x0c1b	/*  8 bit	Receive MAC Time Stamp Timeout */ | 
 | 614 | #define RX_MFF_CTRL2	0x0c1c	/*  8 bit	Receive MAC FIFO Control Reg 2*/ | 
 | 615 | #define RX_MFF_TST1		0x0c1d	/*  8 bit	Receive MAC FIFO Test Reg 1 */ | 
 | 616 | #define RX_MFF_TST2		0x0c1e	/*  8 bit	Receive MAC FIFO Test Reg 2 */ | 
 | 617 | 	/* 0x0c1f:	reserved */ | 
 | 618 | #define RX_LED_INI		0x0c20	/* 32 bit	Receive LED Cnt Init Value */ | 
 | 619 | #define RX_LED_VAL		0x0c24	/* 32 bit	Receive LED Cnt Current Value */ | 
 | 620 | #define RX_LED_CTRL		0x0c28	/*  8 bit	Receive LED Cnt Control Reg */ | 
 | 621 | #define RX_LED_TST		0x0c29	/*  8 bit	Receive LED Cnt Test Register */ | 
 | 622 | 	/* 0x0c2a - 0x0c2f:	reserved */ | 
 | 623 | #define LNK_SYNC_INI	0x0c30	/* 32 bit	Link Sync Cnt Init Value */ | 
 | 624 | #define LNK_SYNC_VAL	0x0c34	/* 32 bit	Link Sync Cnt Current Value */ | 
 | 625 | #define LNK_SYNC_CTRL	0x0c38	/*  8 bit	Link Sync Cnt Control Register */ | 
 | 626 | #define LNK_SYNC_TST	0x0c39	/*  8 bit	Link Sync Cnt Test Register */ | 
 | 627 | 	/* 0x0c3a - 0x0c3b:	reserved */ | 
 | 628 | #define LNK_LED_REG		0x0c3c	/*  8 bit	Link LED Register */ | 
 | 629 | 	/* 0x0c3d - 0x0c3f:	reserved */ | 
 | 630 |  | 
 | 631 | /* Receive GMAC FIFO (YUKON only), use MR_ADDR() to access */ | 
 | 632 | #define RX_GMF_EA		0x0c40	/* 32 bit	Rx GMAC FIFO End Address */ | 
 | 633 | #define RX_GMF_AF_THR	0x0c44	/* 32 bit	Rx GMAC FIFO Almost Full Thresh. */ | 
 | 634 | #define RX_GMF_CTRL_T	0x0c48	/* 32 bit	Rx GMAC FIFO Control/Test */ | 
 | 635 | #define RX_GMF_FL_MSK	0x0c4c	/* 32 bit	Rx GMAC FIFO Flush Mask */ | 
 | 636 | #define RX_GMF_FL_THR	0x0c50	/* 32 bit	Rx GMAC FIFO Flush Threshold */ | 
 | 637 | 	/* 0x0c54 - 0x0c5f:	reserved */ | 
 | 638 | #define RX_GMF_WP		0x0c60	/* 32 bit 	Rx GMAC FIFO Write Pointer */ | 
 | 639 | 	/* 0x0c64 - 0x0c67:	reserved */ | 
 | 640 | #define RX_GMF_WLEV		0x0c68	/* 32 bit 	Rx GMAC FIFO Write Level */ | 
 | 641 | 	/* 0x0c6c - 0x0c6f:	reserved */ | 
 | 642 | #define RX_GMF_RP		0x0c70	/* 32 bit 	Rx GMAC FIFO Read Pointer */ | 
 | 643 | 	/* 0x0c74 - 0x0c77:	reserved */ | 
 | 644 | #define RX_GMF_RLEV		0x0c78	/* 32 bit 	Rx GMAC FIFO Read Level */ | 
 | 645 | 	/* 0x0c7c - 0x0c7f:	reserved */ | 
 | 646 |  | 
 | 647 | /* | 
 | 648 |  *	Bank 25 | 
 | 649 |  */ | 
 | 650 | 	/* 0x0c80 - 0x0cbf:	MAC 2 */ | 
 | 651 | 	/* 0x0cc0 - 0x0cff:	reserved */ | 
 | 652 |  | 
 | 653 | /* | 
 | 654 |  *	Bank 26 | 
 | 655 |  */ | 
 | 656 | /* | 
 | 657 |  * Transmit MAC FIFO and Transmit LED Registers (GENESIS only), | 
 | 658 |  * use MR_ADDR() to access | 
 | 659 |  */ | 
 | 660 | #define TX_MFF_EA		0x0d00	/* 32 bit	Transmit MAC FIFO End Address */ | 
 | 661 | #define TX_MFF_WP		0x0d04	/* 32 bit 	Transmit MAC FIFO WR Pointer */ | 
 | 662 | #define TX_MFF_WSP		0x0d08	/* 32 bit	Transmit MAC FIFO WR Shadow Ptr */ | 
 | 663 | #define TX_MFF_RP		0x0d0c	/* 32 bit	Transmit MAC FIFO RD Pointer */ | 
 | 664 | #define TX_MFF_PC		0x0d10	/* 32 bit	Transmit MAC FIFO Packet Cnt */ | 
 | 665 | #define TX_MFF_LEV		0x0d14	/* 32 bit	Transmit MAC FIFO Level */ | 
 | 666 | #define TX_MFF_CTRL1	0x0d18	/* 16 bit	Transmit MAC FIFO Ctrl Reg 1 */ | 
 | 667 | #define TX_MFF_WAF		0x0d1a	/*  8 bit	Transmit MAC Wait after flush */ | 
 | 668 | 	/* 0x0c1b:	reserved */ | 
 | 669 | #define TX_MFF_CTRL2	0x0d1c	/*  8 bit	Transmit MAC FIFO Ctrl Reg 2 */ | 
 | 670 | #define TX_MFF_TST1		0x0d1d	/*  8 bit	Transmit MAC FIFO Test Reg 1 */ | 
 | 671 | #define TX_MFF_TST2		0x0d1e	/*  8 bit	Transmit MAC FIFO Test Reg 2 */ | 
 | 672 | 	/* 0x0d1f:	reserved */ | 
 | 673 | #define TX_LED_INI		0x0d20	/* 32 bit	Transmit LED Cnt Init Value */ | 
 | 674 | #define TX_LED_VAL		0x0d24	/* 32 bit	Transmit LED Cnt Current Val */ | 
 | 675 | #define TX_LED_CTRL		0x0d28	/*  8 bit	Transmit LED Cnt Control Reg */ | 
 | 676 | #define TX_LED_TST		0x0d29	/*  8 bit	Transmit LED Cnt Test Reg */ | 
 | 677 | 	/* 0x0d2a - 0x0d3f:	reserved */ | 
 | 678 |  | 
 | 679 | /* Transmit GMAC FIFO (YUKON only), use MR_ADDR() to access */ | 
 | 680 | #define TX_GMF_EA		0x0d40	/* 32 bit	Tx GMAC FIFO End Address */ | 
 | 681 | #define TX_GMF_AE_THR	0x0d44	/* 32 bit	Tx GMAC FIFO Almost Empty Thresh.*/ | 
 | 682 | #define TX_GMF_CTRL_T	0x0d48	/* 32 bit	Tx GMAC FIFO Control/Test */ | 
 | 683 | 	/* 0x0d4c - 0x0d5f:	reserved */ | 
 | 684 | #define TX_GMF_WP		0x0d60	/* 32 bit 	Tx GMAC FIFO Write Pointer */ | 
 | 685 | #define TX_GMF_WSP		0x0d64	/* 32 bit 	Tx GMAC FIFO Write Shadow Ptr. */ | 
 | 686 | #define TX_GMF_WLEV		0x0d68	/* 32 bit 	Tx GMAC FIFO Write Level */ | 
 | 687 | 	/* 0x0d6c - 0x0d6f:	reserved */ | 
 | 688 | #define TX_GMF_RP		0x0d70	/* 32 bit 	Tx GMAC FIFO Read Pointer */ | 
 | 689 | #define TX_GMF_RSTP		0x0d74	/* 32 bit 	Tx GMAC FIFO Restart Pointer */ | 
 | 690 | #define TX_GMF_RLEV		0x0d78	/* 32 bit 	Tx GMAC FIFO Read Level */ | 
 | 691 | 	/* 0x0d7c - 0x0d7f:	reserved */ | 
 | 692 |  | 
 | 693 | /* | 
 | 694 |  *	Bank 27 | 
 | 695 |  */ | 
 | 696 | 	/* 0x0d80 - 0x0dbf:	MAC 2 */ | 
 | 697 | 	/* 0x0daa - 0x0dff:	reserved */ | 
 | 698 |  | 
 | 699 | /* | 
 | 700 |  *	Bank 28 | 
 | 701 |  */ | 
 | 702 | /* Descriptor Poll Timer Registers */ | 
 | 703 | #define B28_DPT_INI		0x0e00	/* 24 bit	Descriptor Poll Timer Init Val */ | 
 | 704 | #define B28_DPT_VAL		0x0e04	/* 24 bit	Descriptor Poll Timer Curr Val */ | 
 | 705 | #define B28_DPT_CTRL	0x0e08	/*  8 bit	Descriptor Poll Timer Ctrl Reg */ | 
 | 706 | 	/* 0x0e09:	reserved */ | 
 | 707 | #define B28_DPT_TST		0x0e0a	/*  8 bit	Descriptor Poll Timer Test Reg */ | 
 | 708 | 	/* 0x0e0b:	reserved */ | 
 | 709 |  | 
 | 710 | /* Time Stamp Timer Registers (YUKON only) */ | 
 | 711 | 	/* 0x0e10:	reserved */ | 
 | 712 | #define GMAC_TI_ST_VAL	0x0e14	/* 32 bit	Time Stamp Timer Curr Val */ | 
 | 713 | #define GMAC_TI_ST_CTRL	0x0e18	/*  8 bit	Time Stamp Timer Ctrl Reg */ | 
 | 714 | 	/* 0x0e19:	reserved */ | 
 | 715 | #define GMAC_TI_ST_TST	0x0e1a	/*  8 bit	Time Stamp Timer Test Reg */ | 
 | 716 | 	/* 0x0e1b - 0x0e7f:	reserved */ | 
 | 717 |  | 
 | 718 | /* | 
 | 719 |  *	Bank 29 | 
 | 720 |  */ | 
 | 721 | 	/* 0x0e80 - 0x0efc:	reserved */ | 
 | 722 |  | 
 | 723 | /* | 
 | 724 |  *	Bank 30 | 
 | 725 |  */ | 
 | 726 | /* GMAC and GPHY Control Registers (YUKON only) */ | 
 | 727 | #define GMAC_CTRL		0x0f00	/* 32 bit	GMAC Control Reg */ | 
 | 728 | #define GPHY_CTRL		0x0f04	/* 32 bit	GPHY Control Reg */ | 
 | 729 | #define GMAC_IRQ_SRC	0x0f08	/*  8 bit	GMAC Interrupt Source Reg */ | 
 | 730 | 	/* 0x0f09 - 0x0f0b:	reserved */ | 
 | 731 | #define GMAC_IRQ_MSK	0x0f0c	/*  8 bit	GMAC Interrupt Mask Reg */ | 
 | 732 | 	/* 0x0f0d - 0x0f0f:	reserved */ | 
 | 733 | #define GMAC_LINK_CTRL	0x0f10	/* 16 bit	Link Control Reg */ | 
 | 734 | 	/* 0x0f14 - 0x0f1f:	reserved */ | 
 | 735 |  | 
 | 736 | /* Wake-up Frame Pattern Match Control Registers (YUKON only) */ | 
 | 737 |  | 
 | 738 | #define WOL_REG_OFFS	0x20	/* HW-Bug: Address is + 0x20 against spec. */ | 
 | 739 |  | 
 | 740 | #define WOL_CTRL_STAT	0x0f20	/* 16 bit	WOL Control/Status Reg */ | 
 | 741 | #define WOL_MATCH_CTL	0x0f22	/*  8 bit	WOL Match Control Reg */ | 
 | 742 | #define WOL_MATCH_RES	0x0f23	/*  8 bit	WOL Match Result Reg */ | 
 | 743 | #define WOL_MAC_ADDR_LO	0x0f24	/* 32 bit	WOL MAC Address Low */ | 
 | 744 | #define WOL_MAC_ADDR_HI	0x0f28	/* 16 bit	WOL MAC Address High */ | 
 | 745 | #define WOL_PATT_RPTR	0x0f2c	/*  8 bit	WOL Pattern Read Ptr */ | 
 | 746 |  | 
 | 747 | /* use this macro to access above registers */ | 
 | 748 | #define WOL_REG(Reg)	((Reg) + (pAC->GIni.GIWolOffs)) | 
 | 749 |  | 
 | 750 |  | 
 | 751 | /* WOL Pattern Length Registers (YUKON only) */ | 
 | 752 |  | 
 | 753 | #define WOL_PATT_LEN_LO	0x0f30		/* 32 bit	WOL Pattern Length 3..0 */ | 
 | 754 | #define WOL_PATT_LEN_HI	0x0f34		/* 24 bit	WOL Pattern Length 6..4 */ | 
 | 755 |  | 
 | 756 | /* WOL Pattern Counter Registers (YUKON only) */ | 
 | 757 |  | 
 | 758 | #define WOL_PATT_CNT_0	0x0f38		/* 32 bit	WOL Pattern Counter 3..0 */ | 
 | 759 | #define WOL_PATT_CNT_4	0x0f3c		/* 24 bit	WOL Pattern Counter 6..4 */ | 
 | 760 | 	/* 0x0f40 - 0x0f7f:	reserved */ | 
 | 761 |  | 
 | 762 | /* | 
 | 763 |  *	Bank 31 | 
 | 764 |  */ | 
 | 765 | /* 0x0f80 - 0x0fff:	reserved */ | 
 | 766 |  | 
 | 767 | /* | 
 | 768 |  *	Bank 32	- 33 | 
 | 769 |  */ | 
 | 770 | #define WOL_PATT_RAM_1	0x1000	/*  WOL Pattern RAM Link 1 */ | 
 | 771 |  | 
 | 772 | /* | 
 | 773 |  *	Bank 0x22 - 0x3f | 
 | 774 |  */ | 
 | 775 | /* 0x1100 - 0x1fff:	reserved */ | 
 | 776 |  | 
 | 777 | /* | 
 | 778 |  *	Bank 0x40 - 0x4f | 
 | 779 |  */ | 
 | 780 | #define BASE_XMAC_1		0x2000	/* XMAC 1 registers */ | 
 | 781 |  | 
 | 782 | /* | 
 | 783 |  *	Bank 0x50 - 0x5f | 
 | 784 |  */ | 
 | 785 |  | 
 | 786 | #define BASE_GMAC_1		0x2800	/* GMAC 1 registers */ | 
 | 787 |  | 
 | 788 | /* | 
 | 789 |  *	Bank 0x60 - 0x6f | 
 | 790 |  */ | 
 | 791 | #define BASE_XMAC_2		0x3000	/* XMAC 2 registers */ | 
 | 792 |  | 
 | 793 | /* | 
 | 794 |  *	Bank 0x70 - 0x7f | 
 | 795 |  */ | 
 | 796 | #define BASE_GMAC_2		0x3800	/* GMAC 2 registers */ | 
 | 797 |  | 
 | 798 | /* | 
 | 799 |  *	Control Register Bit Definitions: | 
 | 800 |  */ | 
 | 801 | /*	B0_RAP		8 bit	Register Address Port */ | 
 | 802 | 								/* Bit 7:	reserved */ | 
 | 803 | #define RAP_RAP			0x3f	/* Bit 6..0:	0 = block 0,..,6f = block 6f */ | 
 | 804 |  | 
 | 805 | /*	B0_CTST			16 bit	Control/Status register */ | 
 | 806 | 								/* Bit 15..14:	reserved */ | 
 | 807 | #define CS_CLK_RUN_HOT	BIT_13S		/* CLK_RUN hot m. (YUKON-Lite only) */ | 
 | 808 | #define CS_CLK_RUN_RST	BIT_12S		/* CLK_RUN reset  (YUKON-Lite only) */ | 
 | 809 | #define CS_CLK_RUN_ENA	BIT_11S		/* CLK_RUN enable (YUKON-Lite only) */ | 
 | 810 | #define CS_VAUX_AVAIL	BIT_10S		/* VAUX available (YUKON only) */ | 
 | 811 | #define CS_BUS_CLOCK	BIT_9S		/* Bus Clock 0/1 = 33/66 MHz */ | 
 | 812 | #define CS_BUS_SLOT_SZ	BIT_8S		/* Slot Size 0/1 = 32/64 bit slot */ | 
 | 813 | #define CS_ST_SW_IRQ	BIT_7S		/* Set IRQ SW Request */ | 
 | 814 | #define CS_CL_SW_IRQ	BIT_6S		/* Clear IRQ SW Request */ | 
 | 815 | #define CS_STOP_DONE	BIT_5S		/* Stop Master is finished */ | 
 | 816 | #define CS_STOP_MAST	BIT_4S		/* Command Bit to stop the master */ | 
 | 817 | #define CS_MRST_CLR		BIT_3S		/* Clear Master reset	*/ | 
 | 818 | #define CS_MRST_SET		BIT_2S		/* Set Master reset	*/ | 
 | 819 | #define CS_RST_CLR		BIT_1S		/* Clear Software reset	*/ | 
 | 820 | #define CS_RST_SET		BIT_0S		/* Set   Software reset	*/ | 
 | 821 |  | 
 | 822 | /*	B0_LED			 8 Bit	LED register */ | 
 | 823 | 								/* Bit  7.. 2:	reserved */ | 
 | 824 | #define LED_STAT_ON		BIT_1S		/* Status LED on	*/ | 
 | 825 | #define LED_STAT_OFF	BIT_0S		/* Status LED off	*/ | 
 | 826 |  | 
 | 827 | /*	B0_POWER_CTRL	 8 Bit	Power Control reg (YUKON only) */ | 
 | 828 | #define PC_VAUX_ENA		BIT_7		/* Switch VAUX Enable  */ | 
 | 829 | #define PC_VAUX_DIS		BIT_6       /* Switch VAUX Disable */ | 
 | 830 | #define PC_VCC_ENA		BIT_5       /* Switch VCC Enable  */ | 
 | 831 | #define PC_VCC_DIS		BIT_4       /* Switch VCC Disable */ | 
 | 832 | #define PC_VAUX_ON		BIT_3       /* Switch VAUX On  */ | 
 | 833 | #define PC_VAUX_OFF		BIT_2       /* Switch VAUX Off */ | 
 | 834 | #define PC_VCC_ON		BIT_1       /* Switch VCC On  */ | 
 | 835 | #define PC_VCC_OFF		BIT_0       /* Switch VCC Off */ | 
 | 836 |  | 
 | 837 | /*	B0_ISRC			32 bit	Interrupt Source Register */ | 
 | 838 | /*	B0_IMSK			32 bit	Interrupt Mask Register */ | 
 | 839 | /*	B0_SP_ISRC		32 bit	Special Interrupt Source Reg */ | 
 | 840 | /*	B2_IRQM_MSK 	32 bit	IRQ Moderation Mask */ | 
 | 841 | #define IS_ALL_MSK		0xbfffffffUL	/* All Interrupt bits */ | 
 | 842 | #define IS_HW_ERR		BIT_31		/* Interrupt HW Error */ | 
 | 843 | 								/* Bit 30:	reserved */ | 
 | 844 | #define IS_PA_TO_RX1	BIT_29		/* Packet Arb Timeout Rx1 */ | 
 | 845 | #define IS_PA_TO_RX2	BIT_28		/* Packet Arb Timeout Rx2 */ | 
 | 846 | #define IS_PA_TO_TX1	BIT_27		/* Packet Arb Timeout Tx1 */ | 
 | 847 | #define IS_PA_TO_TX2	BIT_26		/* Packet Arb Timeout Tx2 */ | 
 | 848 | #define IS_I2C_READY	BIT_25		/* IRQ on end of I2C Tx */ | 
 | 849 | #define IS_IRQ_SW		BIT_24		/* SW forced IRQ	*/ | 
 | 850 | #define IS_EXT_REG		BIT_23		/* IRQ from LM80 or PHY (GENESIS only) */ | 
 | 851 | 									/* IRQ from PHY (YUKON only) */ | 
 | 852 | #define IS_TIMINT		BIT_22		/* IRQ from Timer	*/ | 
 | 853 | #define IS_MAC1			BIT_21		/* IRQ from MAC 1	*/ | 
 | 854 | #define IS_LNK_SYNC_M1	BIT_20		/* Link Sync Cnt wrap MAC 1 */ | 
 | 855 | #define IS_MAC2			BIT_19		/* IRQ from MAC 2	*/ | 
 | 856 | #define IS_LNK_SYNC_M2	BIT_18		/* Link Sync Cnt wrap MAC 2 */ | 
 | 857 | /* Receive Queue 1 */ | 
 | 858 | #define IS_R1_B			BIT_17		/* Q_R1 End of Buffer */ | 
 | 859 | #define IS_R1_F			BIT_16		/* Q_R1 End of Frame */ | 
 | 860 | #define IS_R1_C			BIT_15		/* Q_R1 Encoding Error */ | 
 | 861 | /* Receive Queue 2 */ | 
 | 862 | #define IS_R2_B			BIT_14		/* Q_R2 End of Buffer */ | 
 | 863 | #define IS_R2_F			BIT_13		/* Q_R2 End of Frame */ | 
 | 864 | #define IS_R2_C			BIT_12		/* Q_R2 Encoding Error */ | 
 | 865 | /* Synchronous Transmit Queue 1 */ | 
 | 866 | #define IS_XS1_B		BIT_11		/* Q_XS1 End of Buffer */ | 
 | 867 | #define IS_XS1_F		BIT_10		/* Q_XS1 End of Frame */ | 
 | 868 | #define IS_XS1_C		BIT_9		/* Q_XS1 Encoding Error */ | 
 | 869 | /* Asynchronous Transmit Queue 1 */ | 
 | 870 | #define IS_XA1_B		BIT_8		/* Q_XA1 End of Buffer */ | 
 | 871 | #define IS_XA1_F		BIT_7		/* Q_XA1 End of Frame */ | 
 | 872 | #define IS_XA1_C		BIT_6		/* Q_XA1 Encoding Error */ | 
 | 873 | /* Synchronous Transmit Queue 2 */ | 
 | 874 | #define IS_XS2_B		BIT_5		/* Q_XS2 End of Buffer */ | 
 | 875 | #define IS_XS2_F		BIT_4		/* Q_XS2 End of Frame */ | 
 | 876 | #define IS_XS2_C		BIT_3		/* Q_XS2 Encoding Error */ | 
 | 877 | /* Asynchronous Transmit Queue 2 */ | 
 | 878 | #define IS_XA2_B		BIT_2		/* Q_XA2 End of Buffer */ | 
 | 879 | #define IS_XA2_F		BIT_1		/* Q_XA2 End of Frame */ | 
 | 880 | #define IS_XA2_C		BIT_0		/* Q_XA2 Encoding Error */ | 
 | 881 |  | 
 | 882 |  | 
 | 883 | /*	B0_HWE_ISRC		32 bit	HW Error Interrupt Src Reg */ | 
 | 884 | /*	B0_HWE_IMSK		32 bit	HW Error Interrupt Mask Reg */ | 
 | 885 | /*	B2_IRQM_HWE_MSK	32 bit	IRQ Moderation HW Error Mask */ | 
 | 886 | #define IS_ERR_MSK		0x00000fffL	/* 		All Error bits */ | 
 | 887 | 								/* Bit 31..14:	reserved */ | 
 | 888 | #define IS_IRQ_TIST_OV	BIT_13	/* Time Stamp Timer Overflow (YUKON only) */ | 
 | 889 | #define IS_IRQ_SENSOR	BIT_12	/* IRQ from Sensor (YUKON only) */ | 
 | 890 | #define IS_IRQ_MST_ERR	BIT_11	/* IRQ master error detected */ | 
 | 891 | #define IS_IRQ_STAT		BIT_10	/* IRQ status exception */ | 
 | 892 | #define IS_NO_STAT_M1	BIT_9	/* No Rx Status from MAC 1 */ | 
 | 893 | #define IS_NO_STAT_M2	BIT_8	/* No Rx Status from MAC 2 */ | 
 | 894 | #define IS_NO_TIST_M1	BIT_7	/* No Time Stamp from MAC 1 */ | 
 | 895 | #define IS_NO_TIST_M2	BIT_6	/* No Time Stamp from MAC 2 */ | 
 | 896 | #define IS_RAM_RD_PAR	BIT_5	/* RAM Read  Parity Error */ | 
 | 897 | #define IS_RAM_WR_PAR	BIT_4	/* RAM Write Parity Error */ | 
 | 898 | #define IS_M1_PAR_ERR	BIT_3	/* MAC 1 Parity Error */ | 
 | 899 | #define IS_M2_PAR_ERR	BIT_2	/* MAC 2 Parity Error */ | 
 | 900 | #define IS_R1_PAR_ERR	BIT_1	/* Queue R1 Parity Error */ | 
 | 901 | #define IS_R2_PAR_ERR	BIT_0	/* Queue R2 Parity Error */ | 
 | 902 |  | 
 | 903 | /*	B2_CONN_TYP		 8 bit	Connector type */ | 
 | 904 | /*	B2_PMD_TYP		 8 bit	PMD type */ | 
 | 905 | /*	Values of connector and PMD type comply to SysKonnect internal std */ | 
 | 906 |  | 
 | 907 | /*	B2_MAC_CFG		 8 bit	MAC Configuration / Chip Revision */ | 
 | 908 | #define CFG_CHIP_R_MSK	(0xf<<4)	/* Bit 7.. 4: Chip Revision */ | 
 | 909 | 									/* Bit 3.. 2:	reserved */ | 
 | 910 | #define CFG_DIS_M2_CLK	BIT_1S		/* Disable Clock for 2nd MAC */ | 
 | 911 | #define CFG_SNG_MAC		BIT_0S		/* MAC Config: 0=2 MACs / 1=1 MAC*/ | 
 | 912 |  | 
 | 913 | /*	B2_CHIP_ID		 8 bit 	Chip Identification Number */ | 
 | 914 | #define CHIP_ID_GENESIS		0x0a	/* Chip ID for GENESIS */ | 
 | 915 | #define CHIP_ID_YUKON		0xb0	/* Chip ID for YUKON */ | 
 | 916 | #define CHIP_ID_YUKON_LITE	0xb1	/* Chip ID for YUKON-Lite (Rev. A1-A3) */ | 
 | 917 | #define CHIP_ID_YUKON_LP	0xb2	/* Chip ID for YUKON-LP */ | 
 | 918 |  | 
 | 919 | #define CHIP_REV_YU_LITE_A1	3		/* Chip Rev. for YUKON-Lite A1,A2 */ | 
 | 920 | #define CHIP_REV_YU_LITE_A3	7		/* Chip Rev. for YUKON-Lite A3 */ | 
 | 921 |  | 
 | 922 | /*	B2_FAR			32 bit	Flash-Prom Addr Reg/Cnt */ | 
 | 923 | #define FAR_ADDR		0x1ffffL	/* Bit 16.. 0:	FPROM Address mask */ | 
 | 924 |  | 
 | 925 | /*	B2_LD_CTRL		 8 bit	EPROM loader control register */ | 
 | 926 | /*	Bits are currently reserved */ | 
 | 927 |  | 
 | 928 | /*	B2_LD_TEST		 8 bit	EPROM loader test register */ | 
 | 929 | 								/* Bit 7.. 4:	reserved */ | 
 | 930 | #define LD_T_ON			BIT_3S	/* Loader Test mode on */ | 
 | 931 | #define LD_T_OFF		BIT_2S	/* Loader Test mode off */ | 
 | 932 | #define LD_T_STEP		BIT_1S	/* Decrement FPROM addr. Counter */ | 
 | 933 | #define LD_START		BIT_0S	/* Start loading FPROM */ | 
 | 934 |  | 
 | 935 | /* | 
 | 936 |  *	Timer Section | 
 | 937 |  */ | 
 | 938 | /*	B2_TI_CTRL		 8 bit	Timer control */ | 
 | 939 | /*	B2_IRQM_CTRL	 8 bit	IRQ Moderation Timer Control */ | 
 | 940 | 								/* Bit 7.. 3:	reserved */ | 
 | 941 | #define TIM_START		BIT_2S	/* Start Timer */ | 
 | 942 | #define TIM_STOP		BIT_1S	/* Stop  Timer */ | 
 | 943 | #define TIM_CLR_IRQ		BIT_0S	/* Clear Timer IRQ (!IRQM) */ | 
 | 944 |  | 
 | 945 | /*	B2_TI_TEST		 8 Bit	Timer Test */ | 
 | 946 | /*	B2_IRQM_TEST	 8 bit	IRQ Moderation Timer Test */ | 
 | 947 | /*	B28_DPT_TST		 8 bit	Descriptor Poll Timer Test Reg */ | 
 | 948 | 								/* Bit 7.. 3:	reserved */ | 
 | 949 | #define TIM_T_ON		BIT_2S	/* Test mode on */ | 
 | 950 | #define TIM_T_OFF		BIT_1S	/* Test mode off */ | 
 | 951 | #define TIM_T_STEP		BIT_0S	/* Test step */ | 
 | 952 |  | 
 | 953 | /*	B28_DPT_INI	32 bit	Descriptor Poll Timer Init Val */ | 
 | 954 | /*	B28_DPT_VAL	32 bit	Descriptor Poll Timer Curr Val */ | 
 | 955 | 								/* Bit 31..24:	reserved */ | 
 | 956 | #define DPT_MSK		0x00ffffffL	/* Bit 23.. 0:	Desc Poll Timer Bits */ | 
 | 957 |  | 
 | 958 | /*	B28_DPT_CTRL	 8 bit	Descriptor Poll Timer Ctrl Reg */ | 
 | 959 | 								/* Bit  7.. 2:	reserved */ | 
 | 960 | #define DPT_START		BIT_1S	/* Start Descriptor Poll Timer */ | 
 | 961 | #define DPT_STOP		BIT_0S	/* Stop  Descriptor Poll Timer */ | 
 | 962 |  | 
 | 963 | /*	B2_E_3			 8 bit 	lower 4 bits used for HW self test result */ | 
 | 964 | #define B2_E3_RES_MASK	0x0f | 
 | 965 |  | 
 | 966 | /*	B2_TST_CTRL1	 8 bit	Test Control Register 1 */ | 
 | 967 | #define TST_FRC_DPERR_MR	BIT_7S	/* force DATAPERR on MST RD */ | 
 | 968 | #define TST_FRC_DPERR_MW	BIT_6S	/* force DATAPERR on MST WR */ | 
 | 969 | #define TST_FRC_DPERR_TR	BIT_5S	/* force DATAPERR on TRG RD */ | 
 | 970 | #define TST_FRC_DPERR_TW	BIT_4S	/* force DATAPERR on TRG WR */ | 
 | 971 | #define TST_FRC_APERR_M		BIT_3S	/* force ADDRPERR on MST */ | 
 | 972 | #define TST_FRC_APERR_T		BIT_2S	/* force ADDRPERR on TRG */ | 
 | 973 | #define TST_CFG_WRITE_ON	BIT_1S	/* Enable  Config Reg WR */ | 
 | 974 | #define TST_CFG_WRITE_OFF	BIT_0S	/* Disable Config Reg WR */ | 
 | 975 |  | 
 | 976 | /*	B2_TST_CTRL2	 8 bit	Test Control Register 2 */ | 
 | 977 | 									/* Bit 7.. 4:	reserved */ | 
 | 978 | 			/* force the following error on the next master read/write	*/ | 
 | 979 | #define TST_FRC_DPERR_MR64	BIT_3S	/* DataPERR RD 64	*/ | 
 | 980 | #define TST_FRC_DPERR_MW64	BIT_2S	/* DataPERR WR 64	*/ | 
 | 981 | #define TST_FRC_APERR_1M64	BIT_1S	/* AddrPERR on 1. phase */ | 
 | 982 | #define TST_FRC_APERR_2M64	BIT_0S	/* AddrPERR on 2. phase */ | 
 | 983 |  | 
 | 984 | /*	B2_GP_IO		32 bit	General Purpose I/O Register */ | 
 | 985 | 							/* Bit 31..26:	reserved */ | 
 | 986 | #define GP_DIR_9	BIT_25	/* IO_9 direct, 0=In/1=Out */ | 
 | 987 | #define GP_DIR_8	BIT_24	/* IO_8 direct, 0=In/1=Out */ | 
 | 988 | #define GP_DIR_7	BIT_23	/* IO_7 direct, 0=In/1=Out */ | 
 | 989 | #define GP_DIR_6	BIT_22	/* IO_6 direct, 0=In/1=Out */ | 
 | 990 | #define GP_DIR_5	BIT_21	/* IO_5 direct, 0=In/1=Out */ | 
 | 991 | #define GP_DIR_4	BIT_20	/* IO_4 direct, 0=In/1=Out */ | 
 | 992 | #define GP_DIR_3	BIT_19	/* IO_3 direct, 0=In/1=Out */ | 
 | 993 | #define GP_DIR_2	BIT_18	/* IO_2 direct, 0=In/1=Out */ | 
 | 994 | #define GP_DIR_1	BIT_17	/* IO_1 direct, 0=In/1=Out */ | 
 | 995 | #define GP_DIR_0	BIT_16	/* IO_0 direct, 0=In/1=Out */ | 
 | 996 | 						/* Bit 15..10:	reserved */ | 
 | 997 | #define GP_IO_9		BIT_9	/* IO_9 pin */ | 
 | 998 | #define GP_IO_8		BIT_8	/* IO_8 pin */ | 
 | 999 | #define GP_IO_7		BIT_7	/* IO_7 pin */ | 
 | 1000 | #define GP_IO_6		BIT_6	/* IO_6 pin */ | 
 | 1001 | #define GP_IO_5		BIT_5	/* IO_5 pin */ | 
 | 1002 | #define GP_IO_4		BIT_4	/* IO_4 pin */ | 
 | 1003 | #define GP_IO_3		BIT_3	/* IO_3 pin */ | 
 | 1004 | #define GP_IO_2		BIT_2	/* IO_2 pin */ | 
 | 1005 | #define GP_IO_1		BIT_1	/* IO_1 pin */ | 
 | 1006 | #define GP_IO_0		BIT_0	/* IO_0 pin */ | 
 | 1007 |  | 
 | 1008 | /*	B2_I2C_CTRL		32 bit	I2C HW Control Register */ | 
 | 1009 | #define I2C_FLAG		BIT_31		/* Start read/write if WR */ | 
 | 1010 | #define I2C_ADDR		(0x7fffL<<16)	/* Bit 30..16:	Addr to be RD/WR */ | 
 | 1011 | #define I2C_DEV_SEL		(0x7fL<<9)		/* Bit 15.. 9:	I2C Device Select */ | 
 | 1012 | 								/* Bit	8.. 5:	reserved	*/ | 
 | 1013 | #define I2C_BURST_LEN	BIT_4		/* Burst Len, 1/4 bytes */ | 
 | 1014 | #define I2C_DEV_SIZE	(7<<1)		/* Bit	3.. 1:	I2C Device Size	*/ | 
 | 1015 | #define I2C_025K_DEV	(0<<1)		/*		0: 256 Bytes or smal. */ | 
 | 1016 | #define I2C_05K_DEV		(1<<1)		/* 		1: 512	Bytes	*/ | 
 | 1017 | #define I2C_1K_DEV		(2<<1)		/*		2: 1024 Bytes	*/ | 
 | 1018 | #define I2C_2K_DEV		(3<<1)		/*		3: 2048	Bytes	*/ | 
 | 1019 | #define I2C_4K_DEV		(4<<1)		/*		4: 4096 Bytes	*/ | 
 | 1020 | #define I2C_8K_DEV		(5<<1)		/*		5: 8192 Bytes	*/ | 
 | 1021 | #define I2C_16K_DEV		(6<<1)		/*		6: 16384 Bytes	*/ | 
 | 1022 | #define I2C_32K_DEV		(7<<1)		/*		7: 32768 Bytes	*/ | 
 | 1023 | #define I2C_STOP		BIT_0		/* Interrupt I2C transfer */ | 
 | 1024 |  | 
 | 1025 | /*	B2_I2C_IRQ		32 bit	I2C HW IRQ Register */ | 
 | 1026 | 								/* Bit 31.. 1	reserved */ | 
 | 1027 | #define I2C_CLR_IRQ		BIT_0	/* Clear I2C IRQ */ | 
 | 1028 |  | 
 | 1029 | /*	B2_I2C_SW		32 bit (8 bit access)	I2C HW SW Port Register */ | 
 | 1030 | 								/* Bit  7.. 3:	reserved */ | 
 | 1031 | #define I2C_DATA_DIR	BIT_2S		/* direction of I2C_DATA */ | 
 | 1032 | #define I2C_DATA		BIT_1S		/* I2C Data Port	*/ | 
 | 1033 | #define I2C_CLK			BIT_0S		/* I2C Clock Port	*/ | 
 | 1034 |  | 
 | 1035 | /* | 
 | 1036 |  * I2C Address | 
 | 1037 |  */ | 
 | 1038 | #define I2C_SENS_ADDR	LM80_ADDR	/* I2C Sensor Address, (Volt and Temp)*/ | 
 | 1039 |  | 
 | 1040 |  | 
 | 1041 | /*	B2_BSC_CTRL		 8 bit	Blink Source Counter Control */ | 
 | 1042 | 							/* Bit  7.. 2:	reserved */ | 
 | 1043 | #define BSC_START	BIT_1S		/* Start Blink Source Counter */ | 
 | 1044 | #define BSC_STOP	BIT_0S		/* Stop  Blink Source Counter */ | 
 | 1045 |  | 
 | 1046 | /*	B2_BSC_STAT		 8 bit	Blink Source Counter Status */ | 
 | 1047 | 							/* Bit  7.. 1:	reserved */ | 
 | 1048 | #define BSC_SRC		BIT_0S		/* Blink Source, 0=Off / 1=On */ | 
 | 1049 |  | 
 | 1050 | /*	B2_BSC_TST		16 bit	Blink Source Counter Test Reg */ | 
 | 1051 | #define BSC_T_ON	BIT_2S		/* Test mode on */ | 
 | 1052 | #define BSC_T_OFF	BIT_1S		/* Test mode off */ | 
 | 1053 | #define BSC_T_STEP	BIT_0S		/* Test step */ | 
 | 1054 |  | 
 | 1055 |  | 
 | 1056 | /*	B3_RAM_ADDR		32 bit	RAM Address, to read or write */ | 
 | 1057 | 					/* Bit 31..19:	reserved */ | 
 | 1058 | #define RAM_ADR_RAN	0x0007ffffL	/* Bit 18.. 0:	RAM Address Range */ | 
 | 1059 |  | 
 | 1060 | /* RAM Interface Registers */ | 
 | 1061 | /*	B3_RI_CTRL		16 bit	RAM Iface Control Register */ | 
 | 1062 | 								/* Bit 15..10:	reserved */ | 
 | 1063 | #define RI_CLR_RD_PERR	BIT_9S	/* Clear IRQ RAM Read Parity Err */ | 
 | 1064 | #define RI_CLR_WR_PERR	BIT_8S	/* Clear IRQ RAM Write Parity Err*/ | 
 | 1065 | 								/* Bit	7.. 2:	reserved */ | 
 | 1066 | #define RI_RST_CLR		BIT_1S	/* Clear RAM Interface Reset */ | 
 | 1067 | #define RI_RST_SET		BIT_0S	/* Set   RAM Interface Reset */ | 
 | 1068 |  | 
 | 1069 | /*	B3_RI_TEST		 8 bit	RAM Iface Test Register */ | 
 | 1070 | 								/* Bit 15.. 4:	reserved */ | 
 | 1071 | #define RI_T_EV			BIT_3S	/* Timeout Event occured */ | 
 | 1072 | #define RI_T_ON			BIT_2S	/* Timeout Timer Test On */ | 
 | 1073 | #define RI_T_OFF		BIT_1S	/* Timeout Timer Test Off */ | 
 | 1074 | #define RI_T_STEP		BIT_0S	/* Timeout Timer Step */ | 
 | 1075 |  | 
 | 1076 | /* MAC Arbiter Registers */ | 
 | 1077 | /*	B3_MA_TO_CTRL	16 bit	MAC Arbiter Timeout Ctrl Reg */ | 
 | 1078 | 								/* Bit 15.. 4:	reserved */ | 
 | 1079 | #define MA_FOE_ON		BIT_3S	/* XMAC Fast Output Enable ON */ | 
 | 1080 | #define MA_FOE_OFF		BIT_2S	/* XMAC Fast Output Enable OFF */ | 
 | 1081 | #define MA_RST_CLR		BIT_1S	/* Clear MAC Arbiter Reset */ | 
 | 1082 | #define MA_RST_SET		BIT_0S	/* Set   MAC Arbiter Reset */ | 
 | 1083 |  | 
 | 1084 | /*	B3_MA_RC_CTRL	16 bit	MAC Arbiter Recovery Ctrl Reg */ | 
 | 1085 | 								/* Bit 15.. 8:	reserved */ | 
 | 1086 | #define MA_ENA_REC_TX2	BIT_7S	/* Enable  Recovery Timer TX2 */ | 
 | 1087 | #define MA_DIS_REC_TX2	BIT_6S	/* Disable Recovery Timer TX2 */ | 
 | 1088 | #define MA_ENA_REC_TX1	BIT_5S	/* Enable  Recovery Timer TX1 */ | 
 | 1089 | #define MA_DIS_REC_TX1	BIT_4S	/* Disable Recovery Timer TX1 */ | 
 | 1090 | #define MA_ENA_REC_RX2	BIT_3S	/* Enable  Recovery Timer RX2 */ | 
 | 1091 | #define MA_DIS_REC_RX2	BIT_2S	/* Disable Recovery Timer RX2 */ | 
 | 1092 | #define MA_ENA_REC_RX1	BIT_1S	/* Enable  Recovery Timer RX1 */ | 
 | 1093 | #define MA_DIS_REC_RX1	BIT_0S	/* Disable Recovery Timer RX1 */ | 
 | 1094 |  | 
 | 1095 | /* Packet Arbiter Registers */ | 
 | 1096 | /*	B3_PA_CTRL		16 bit	Packet Arbiter Ctrl Register */ | 
 | 1097 | 								/* Bit 15..14:	reserved */ | 
 | 1098 | #define PA_CLR_TO_TX2	BIT_13S	/* Clear IRQ Packet Timeout TX2 */ | 
 | 1099 | #define PA_CLR_TO_TX1	BIT_12S	/* Clear IRQ Packet Timeout TX1 */ | 
 | 1100 | #define PA_CLR_TO_RX2	BIT_11S	/* Clear IRQ Packet Timeout RX2 */ | 
 | 1101 | #define PA_CLR_TO_RX1	BIT_10S	/* Clear IRQ Packet Timeout RX1 */ | 
 | 1102 | #define PA_ENA_TO_TX2	BIT_9S	/* Enable  Timeout Timer TX2 */ | 
 | 1103 | #define PA_DIS_TO_TX2	BIT_8S	/* Disable Timeout Timer TX2 */ | 
 | 1104 | #define PA_ENA_TO_TX1	BIT_7S	/* Enable  Timeout Timer TX1 */ | 
 | 1105 | #define PA_DIS_TO_TX1	BIT_6S	/* Disable Timeout Timer TX1 */ | 
 | 1106 | #define PA_ENA_TO_RX2	BIT_5S	/* Enable  Timeout Timer RX2 */ | 
 | 1107 | #define PA_DIS_TO_RX2	BIT_4S	/* Disable Timeout Timer RX2 */ | 
 | 1108 | #define PA_ENA_TO_RX1	BIT_3S	/* Enable  Timeout Timer RX1 */ | 
 | 1109 | #define PA_DIS_TO_RX1	BIT_2S	/* Disable Timeout Timer RX1 */ | 
 | 1110 | #define PA_RST_CLR		BIT_1S	/* Clear MAC Arbiter Reset */ | 
 | 1111 | #define PA_RST_SET		BIT_0S	/* Set   MAC Arbiter Reset */ | 
 | 1112 |  | 
 | 1113 | #define PA_ENA_TO_ALL	(PA_ENA_TO_RX1 | PA_ENA_TO_RX2 |\ | 
 | 1114 | 						PA_ENA_TO_TX1 | PA_ENA_TO_TX2) | 
 | 1115 |  | 
 | 1116 | /* Rx/Tx Path related Arbiter Test Registers */ | 
 | 1117 | /*	B3_MA_TO_TEST	16 bit	MAC Arbiter Timeout Test Reg */ | 
 | 1118 | /*	B3_MA_RC_TEST	16 bit	MAC Arbiter Recovery Test Reg */ | 
 | 1119 | /*	B3_PA_TEST		16 bit	Packet Arbiter Test Register */ | 
 | 1120 | /*			Bit 15, 11, 7, and 3 are reserved in B3_PA_TEST */ | 
 | 1121 | #define TX2_T_EV	BIT_15S		/* TX2 Timeout/Recv Event occured */ | 
 | 1122 | #define TX2_T_ON	BIT_14S		/* TX2 Timeout/Recv Timer Test On */ | 
 | 1123 | #define TX2_T_OFF	BIT_13S		/* TX2 Timeout/Recv Timer Tst Off */ | 
 | 1124 | #define TX2_T_STEP	BIT_12S		/* TX2 Timeout/Recv Timer Step */ | 
 | 1125 | #define TX1_T_EV	BIT_11S		/* TX1 Timeout/Recv Event occured */ | 
 | 1126 | #define TX1_T_ON	BIT_10S		/* TX1 Timeout/Recv Timer Test On */ | 
 | 1127 | #define TX1_T_OFF	BIT_9S		/* TX1 Timeout/Recv Timer Tst Off */ | 
 | 1128 | #define TX1_T_STEP	BIT_8S		/* TX1 Timeout/Recv Timer Step */ | 
 | 1129 | #define RX2_T_EV	BIT_7S		/* RX2 Timeout/Recv Event occured */ | 
 | 1130 | #define RX2_T_ON	BIT_6S		/* RX2 Timeout/Recv Timer Test On */ | 
 | 1131 | #define RX2_T_OFF	BIT_5S		/* RX2 Timeout/Recv Timer Tst Off */ | 
 | 1132 | #define RX2_T_STEP	BIT_4S		/* RX2 Timeout/Recv Timer Step */ | 
 | 1133 | #define RX1_T_EV	BIT_3S		/* RX1 Timeout/Recv Event occured */ | 
 | 1134 | #define RX1_T_ON	BIT_2S		/* RX1 Timeout/Recv Timer Test On */ | 
 | 1135 | #define RX1_T_OFF	BIT_1S		/* RX1 Timeout/Recv Timer Tst Off */ | 
 | 1136 | #define RX1_T_STEP	BIT_0S		/* RX1 Timeout/Recv Timer Step */ | 
 | 1137 |  | 
 | 1138 |  | 
 | 1139 | /* Transmit Arbiter Registers MAC 1 and 2, use MR_ADDR() to access */ | 
 | 1140 | /*	TXA_ITI_INI		32 bit	Tx Arb Interval Timer Init Val */ | 
 | 1141 | /*	TXA_ITI_VAL		32 bit	Tx Arb Interval Timer Value */ | 
 | 1142 | /*	TXA_LIM_INI		32 bit	Tx Arb Limit Counter Init Val */ | 
 | 1143 | /*	TXA_LIM_VAL		32 bit	Tx Arb Limit Counter Value */ | 
 | 1144 | 								/* Bit 31..24:	reserved */ | 
 | 1145 | #define TXA_MAX_VAL	0x00ffffffUL/* Bit 23.. 0:	Max TXA Timer/Cnt Val */ | 
 | 1146 |  | 
 | 1147 | /*	TXA_CTRL		 8 bit	Tx Arbiter Control Register */ | 
 | 1148 | #define TXA_ENA_FSYNC	BIT_7S	/* Enable  force of sync Tx queue */ | 
 | 1149 | #define TXA_DIS_FSYNC	BIT_6S	/* Disable force of sync Tx queue */ | 
 | 1150 | #define TXA_ENA_ALLOC	BIT_5S	/* Enable  alloc of free bandwidth */ | 
 | 1151 | #define TXA_DIS_ALLOC	BIT_4S	/* Disable alloc of free bandwidth */ | 
 | 1152 | #define TXA_START_RC	BIT_3S	/* Start sync Rate Control */ | 
 | 1153 | #define TXA_STOP_RC		BIT_2S	/* Stop  sync Rate Control */ | 
 | 1154 | #define TXA_ENA_ARB		BIT_1S	/* Enable  Tx Arbiter */ | 
 | 1155 | #define TXA_DIS_ARB		BIT_0S	/* Disable Tx Arbiter */ | 
 | 1156 |  | 
 | 1157 | /*	TXA_TEST		 8 bit	Tx Arbiter Test Register */ | 
 | 1158 | 								/* Bit 7.. 6:	reserved */ | 
 | 1159 | #define TXA_INT_T_ON	BIT_5S	/* Tx Arb Interval Timer Test On */ | 
 | 1160 | #define TXA_INT_T_OFF	BIT_4S	/* Tx Arb Interval Timer Test Off */ | 
 | 1161 | #define TXA_INT_T_STEP	BIT_3S	/* Tx Arb Interval Timer Step */ | 
 | 1162 | #define TXA_LIM_T_ON	BIT_2S	/* Tx Arb Limit Timer Test On */ | 
 | 1163 | #define TXA_LIM_T_OFF	BIT_1S	/* Tx Arb Limit Timer Test Off */ | 
 | 1164 | #define TXA_LIM_T_STEP	BIT_0S	/* Tx Arb Limit Timer Step */ | 
 | 1165 |  | 
 | 1166 | /*	TXA_STAT		 8 bit	Tx Arbiter Status Register */ | 
 | 1167 | 								/* Bit 7.. 1:	reserved */ | 
 | 1168 | #define TXA_PRIO_XS		BIT_0S	/* sync queue has prio to send */ | 
 | 1169 |  | 
 | 1170 | /*	Q_BC			32 bit	Current Byte Counter */ | 
 | 1171 | 								/* Bit 31..16:	reserved */ | 
 | 1172 | #define BC_MAX			0xffff	/* Bit 15.. 0:	Byte counter */ | 
 | 1173 |  | 
 | 1174 | /* BMU Control Status Registers */ | 
 | 1175 | /*	B0_R1_CSR		32 bit	BMU Ctrl/Stat Rx Queue 1 */ | 
 | 1176 | /*	B0_R2_CSR		32 bit	BMU Ctrl/Stat Rx Queue 2 */ | 
 | 1177 | /*	B0_XA1_CSR		32 bit	BMU Ctrl/Stat Sync Tx Queue 1 */ | 
 | 1178 | /*	B0_XS1_CSR		32 bit	BMU Ctrl/Stat Async Tx Queue 1 */ | 
 | 1179 | /*	B0_XA2_CSR		32 bit	BMU Ctrl/Stat Sync Tx Queue 2 */ | 
 | 1180 | /*	B0_XS2_CSR		32 bit	BMU Ctrl/Stat Async Tx Queue 2 */ | 
 | 1181 | /*	Q_CSR			32 bit	BMU Control/Status Register */ | 
 | 1182 | 								/* Bit 31..25:	reserved */ | 
 | 1183 | #define CSR_SV_IDLE		BIT_24		/* BMU SM Idle */ | 
 | 1184 | 								/* Bit 23..22:	reserved */ | 
 | 1185 | #define CSR_DESC_CLR	BIT_21		/* Clear Reset for Descr */ | 
 | 1186 | #define CSR_DESC_SET	BIT_20		/* Set   Reset for Descr */ | 
 | 1187 | #define CSR_FIFO_CLR	BIT_19		/* Clear Reset for FIFO */ | 
 | 1188 | #define CSR_FIFO_SET	BIT_18		/* Set   Reset for FIFO */ | 
 | 1189 | #define CSR_HPI_RUN		BIT_17		/* Release HPI SM */ | 
 | 1190 | #define CSR_HPI_RST		BIT_16		/* Reset   HPI SM to Idle */ | 
 | 1191 | #define CSR_SV_RUN		BIT_15		/* Release Supervisor SM */ | 
 | 1192 | #define CSR_SV_RST		BIT_14		/* Reset   Supervisor SM */ | 
 | 1193 | #define CSR_DREAD_RUN	BIT_13		/* Release Descr Read SM */ | 
 | 1194 | #define CSR_DREAD_RST	BIT_12		/* Reset   Descr Read SM */ | 
 | 1195 | #define CSR_DWRITE_RUN	BIT_11		/* Release Descr Write SM */ | 
 | 1196 | #define CSR_DWRITE_RST	BIT_10		/* Reset   Descr Write SM */ | 
 | 1197 | #define CSR_TRANS_RUN	BIT_9		/* Release Transfer SM */ | 
 | 1198 | #define CSR_TRANS_RST	BIT_8		/* Reset   Transfer SM */ | 
 | 1199 | #define CSR_ENA_POL		BIT_7		/* Enable  Descr Polling */ | 
 | 1200 | #define CSR_DIS_POL		BIT_6		/* Disable Descr Polling */ | 
 | 1201 | #define CSR_STOP		BIT_5		/* Stop  Rx/Tx Queue */ | 
 | 1202 | #define CSR_START		BIT_4		/* Start Rx/Tx Queue */ | 
 | 1203 | #define CSR_IRQ_CL_P	BIT_3		/* (Rx)	Clear Parity IRQ */ | 
 | 1204 | #define CSR_IRQ_CL_B	BIT_2		/* Clear EOB IRQ */ | 
 | 1205 | #define CSR_IRQ_CL_F	BIT_1		/* Clear EOF IRQ */ | 
 | 1206 | #define CSR_IRQ_CL_C	BIT_0		/* Clear ERR IRQ */ | 
 | 1207 |  | 
 | 1208 | #define CSR_SET_RESET	(CSR_DESC_SET | CSR_FIFO_SET | CSR_HPI_RST |\ | 
 | 1209 | 						CSR_SV_RST | CSR_DREAD_RST | CSR_DWRITE_RST |\ | 
 | 1210 | 						CSR_TRANS_RST) | 
 | 1211 | #define CSR_CLR_RESET	(CSR_DESC_CLR | CSR_FIFO_CLR | CSR_HPI_RUN |\ | 
 | 1212 | 						CSR_SV_RUN | CSR_DREAD_RUN | CSR_DWRITE_RUN |\ | 
 | 1213 | 						CSR_TRANS_RUN) | 
 | 1214 |  | 
 | 1215 | /*	Q_F				32 bit	Flag Register */ | 
 | 1216 | 									/* Bit 31..28:	reserved */ | 
 | 1217 | #define F_ALM_FULL		BIT_27		/* Rx FIFO: almost full */ | 
 | 1218 | #define F_EMPTY			BIT_27		/* Tx FIFO: empty flag */ | 
 | 1219 | #define F_FIFO_EOF		BIT_26		/* Tag (EOF Flag) bit in FIFO */ | 
 | 1220 | #define F_WM_REACHED	BIT_25		/* Watermark reached */ | 
 | 1221 | 									/* reserved */ | 
 | 1222 | #define F_FIFO_LEVEL	(0x1fL<<16)	/* Bit 23..16:	# of Qwords in FIFO */ | 
 | 1223 | 									/* Bit 15..11: 	reserved */ | 
 | 1224 | #define F_WATER_MARK	0x0007ffL	/* Bit 10.. 0:	Watermark */ | 
 | 1225 |  | 
 | 1226 | /*	Q_T1			32 bit	Test Register 1 */ | 
 | 1227 | /*		Holds four State Machine control Bytes */ | 
 | 1228 | #define SM_CTRL_SV_MSK	(0xffL<<24)	/* Bit 31..24:	Control Supervisor SM */ | 
 | 1229 | #define SM_CTRL_RD_MSK	(0xffL<<16)	/* Bit 23..16:	Control Read Desc SM */ | 
 | 1230 | #define SM_CTRL_WR_MSK	(0xffL<<8)	/* Bit 15.. 8:	Control Write Desc SM */ | 
 | 1231 | #define SM_CTRL_TR_MSK	0xffL		/* Bit	7.. 0:	Control Transfer SM */ | 
 | 1232 |  | 
 | 1233 | /*	Q_T1_TR			 8 bit	Test Register 1 Transfer SM */ | 
 | 1234 | /*	Q_T1_WR			 8 bit	Test Register 1 Write Descriptor SM */ | 
 | 1235 | /*	Q_T1_RD			 8 bit	Test Register 1 Read Descriptor SM */ | 
 | 1236 | /*	Q_T1_SV			 8 bit	Test Register 1 Supervisor SM */ | 
 | 1237 |  | 
 | 1238 | /* The control status byte of each machine looks like ... */ | 
 | 1239 | #define SM_STATE		0xf0	/* Bit 7.. 4:	State which shall be loaded */ | 
 | 1240 | #define SM_LOAD			BIT_3S	/* Load the SM with SM_STATE */ | 
 | 1241 | #define SM_TEST_ON		BIT_2S	/* Switch on SM Test Mode */ | 
 | 1242 | #define SM_TEST_OFF		BIT_1S	/* Go off the Test Mode */ | 
 | 1243 | #define SM_STEP			BIT_0S	/* Step the State Machine */ | 
 | 1244 | /* The encoding of the states is not supported by the Diagnostics Tool */ | 
 | 1245 |  | 
 | 1246 | /*	Q_T2			32 bit	Test Register 2	*/ | 
 | 1247 | 								/* Bit 31.. 8:	reserved */ | 
 | 1248 | #define T2_AC_T_ON		BIT_7	/* Address Counter Test Mode on */ | 
 | 1249 | #define T2_AC_T_OFF		BIT_6	/* Address Counter Test Mode off */ | 
 | 1250 | #define T2_BC_T_ON		BIT_5	/* Byte Counter Test Mode on */ | 
 | 1251 | #define T2_BC_T_OFF		BIT_4	/* Byte Counter Test Mode off */ | 
 | 1252 | #define T2_STEP04		BIT_3	/* Inc AC/Dec BC by 4 */ | 
 | 1253 | #define T2_STEP03		BIT_2	/* Inc AC/Dec BC by 3 */ | 
 | 1254 | #define T2_STEP02		BIT_1	/* Inc AC/Dec BC by 2 */ | 
 | 1255 | #define T2_STEP01		BIT_0	/* Inc AC/Dec BC by 1 */ | 
 | 1256 |  | 
 | 1257 | /*	Q_T3			32 bit	Test Register 3	*/ | 
 | 1258 | 								/* Bit 31.. 7:	reserved */ | 
 | 1259 | #define T3_MUX_MSK		(7<<4)	/* Bit  6.. 4:	Mux Position */ | 
 | 1260 | 								/* Bit  3:	reserved */ | 
 | 1261 | #define T3_VRAM_MSK		7		/* Bit  2.. 0:	Virtual RAM Buffer Address */ | 
 | 1262 |  | 
 | 1263 | /* RAM Buffer Register Offsets, use RB_ADDR(Queue, Offs) to access */ | 
 | 1264 | /*	RB_START		32 bit	RAM Buffer Start Address */ | 
 | 1265 | /*	RB_END			32 bit	RAM Buffer End Address */ | 
 | 1266 | /*	RB_WP			32 bit	RAM Buffer Write Pointer */ | 
 | 1267 | /*	RB_RP			32 bit	RAM Buffer Read Pointer */ | 
 | 1268 | /*	RB_RX_UTPP		32 bit	Rx Upper Threshold, Pause Pack */ | 
 | 1269 | /*	RB_RX_LTPP		32 bit	Rx Lower Threshold, Pause Pack */ | 
 | 1270 | /*	RB_RX_UTHP		32 bit	Rx Upper Threshold, High Prio */ | 
 | 1271 | /*	RB_RX_LTHP		32 bit	Rx Lower Threshold, High Prio */ | 
 | 1272 | /*	RB_PC			32 bit	RAM Buffer Packet Counter */ | 
 | 1273 | /*	RB_LEV			32 bit	RAM Buffer Level Register */ | 
 | 1274 | 				/* Bit 31..19:	reserved */ | 
 | 1275 | #define RB_MSK	0x0007ffff	/* Bit 18.. 0:	RAM Buffer Pointer Bits */ | 
 | 1276 |  | 
 | 1277 | /*	RB_TST2			 8 bit	RAM Buffer Test Register 2 */ | 
 | 1278 | 								/* Bit 7.. 4:	reserved */ | 
 | 1279 | #define RB_PC_DEC		BIT_3S	/* Packet Counter Decrem */ | 
 | 1280 | #define RB_PC_T_ON		BIT_2S	/* Packet Counter Test On */ | 
 | 1281 | #define RB_PC_T_OFF		BIT_1S	/* Packet Counter Tst Off */ | 
 | 1282 | #define RB_PC_INC		BIT_0S	/* Packet Counter Increm */ | 
 | 1283 |  | 
 | 1284 | /*	RB_TST1			 8 bit	RAM Buffer Test Register 1 */ | 
 | 1285 | 							/* Bit 7:	reserved */ | 
 | 1286 | #define RB_WP_T_ON		BIT_6S	/* Write Pointer Test On */ | 
 | 1287 | #define RB_WP_T_OFF		BIT_5S	/* Write Pointer Test Off */ | 
 | 1288 | #define RB_WP_INC		BIT_4S	/* Write Pointer Increm */ | 
 | 1289 | 								/* Bit 3:	reserved */ | 
 | 1290 | #define RB_RP_T_ON		BIT_2S	/* Read Pointer Test On */ | 
 | 1291 | #define RB_RP_T_OFF		BIT_1S	/* Read Pointer Test Off */ | 
 | 1292 | #define RB_RP_DEC		BIT_0S	/* Read Pointer Decrement */ | 
 | 1293 |  | 
 | 1294 | /*	RB_CTRL			 8 bit	RAM Buffer Control Register */ | 
 | 1295 | 								/* Bit 7.. 6:	reserved */ | 
 | 1296 | #define RB_ENA_STFWD	BIT_5S	/* Enable  Store & Forward */ | 
 | 1297 | #define RB_DIS_STFWD	BIT_4S	/* Disable Store & Forward */ | 
 | 1298 | #define RB_ENA_OP_MD	BIT_3S	/* Enable  Operation Mode */ | 
 | 1299 | #define RB_DIS_OP_MD	BIT_2S	/* Disable Operation Mode */ | 
 | 1300 | #define RB_RST_CLR		BIT_1S	/* Clear RAM Buf STM Reset */ | 
 | 1301 | #define RB_RST_SET		BIT_0S	/* Set   RAM Buf STM Reset */ | 
 | 1302 |  | 
 | 1303 |  | 
 | 1304 | /* Receive and Transmit MAC FIFO Registers (GENESIS only) */ | 
 | 1305 |  | 
 | 1306 | /*	RX_MFF_EA		32 bit	Receive MAC FIFO End Address */ | 
 | 1307 | /*	RX_MFF_WP		32 bit 	Receive MAC FIFO Write Pointer */ | 
 | 1308 | /*	RX_MFF_RP		32 bit	Receive MAC FIFO Read Pointer */ | 
 | 1309 | /*	RX_MFF_PC		32 bit	Receive MAC FIFO Packet Counter */ | 
 | 1310 | /*	RX_MFF_LEV		32 bit	Receive MAC FIFO Level */ | 
 | 1311 | /*	TX_MFF_EA		32 bit	Transmit MAC FIFO End Address */ | 
 | 1312 | /*	TX_MFF_WP		32 bit 	Transmit MAC FIFO Write Pointer */ | 
 | 1313 | /*	TX_MFF_WSP		32 bit	Transmit MAC FIFO WR Shadow Pointer */ | 
 | 1314 | /*	TX_MFF_RP		32 bit	Transmit MAC FIFO Read Pointer */ | 
 | 1315 | /*	TX_MFF_PC		32 bit	Transmit MAC FIFO Packet Cnt */ | 
 | 1316 | /*	TX_MFF_LEV		32 bit	Transmit MAC FIFO Level */ | 
 | 1317 | 								/* Bit 31.. 6:	reserved */ | 
 | 1318 | #define MFF_MSK			0x007fL	/* Bit	5.. 0:	MAC FIFO Address/Ptr Bits */ | 
 | 1319 |  | 
 | 1320 | /*	RX_MFF_CTRL1	16 bit	Receive MAC FIFO Control Reg 1 */ | 
 | 1321 | 								/* Bit 15..14:	reserved */ | 
 | 1322 | #define MFF_ENA_RDY_PAT	BIT_13S		/* Enable  Ready Patch */ | 
 | 1323 | #define MFF_DIS_RDY_PAT	BIT_12S		/* Disable Ready Patch */ | 
 | 1324 | #define MFF_ENA_TIM_PAT	BIT_11S		/* Enable  Timing Patch */ | 
 | 1325 | #define MFF_DIS_TIM_PAT	BIT_10S		/* Disable Timing Patch */ | 
 | 1326 | #define MFF_ENA_ALM_FUL	BIT_9S		/* Enable  AlmostFull Sign */ | 
 | 1327 | #define MFF_DIS_ALM_FUL	BIT_8S		/* Disable AlmostFull Sign */ | 
 | 1328 | #define MFF_ENA_PAUSE	BIT_7S		/* Enable  Pause Signaling */ | 
 | 1329 | #define MFF_DIS_PAUSE	BIT_6S		/* Disable Pause Signaling */ | 
 | 1330 | #define MFF_ENA_FLUSH	BIT_5S		/* Enable  Frame Flushing */ | 
 | 1331 | #define MFF_DIS_FLUSH	BIT_4S		/* Disable Frame Flushing */ | 
 | 1332 | #define MFF_ENA_TIST	BIT_3S		/* Enable  Time Stamp Gener */ | 
 | 1333 | #define MFF_DIS_TIST	BIT_2S		/* Disable Time Stamp Gener */ | 
 | 1334 | #define MFF_CLR_INTIST	BIT_1S		/* Clear IRQ No Time Stamp */ | 
 | 1335 | #define MFF_CLR_INSTAT	BIT_0S		/* Clear IRQ No Status */ | 
 | 1336 |  | 
 | 1337 | #define MFF_RX_CTRL_DEF MFF_ENA_TIM_PAT | 
 | 1338 |  | 
 | 1339 | /*	TX_MFF_CTRL1	16 bit	Transmit MAC FIFO Control Reg 1 */ | 
 | 1340 | #define MFF_CLR_PERR	BIT_15S		/* Clear Parity Error IRQ */ | 
 | 1341 | 								/* Bit 14:	reserved */ | 
 | 1342 | #define MFF_ENA_PKT_REC	BIT_13S		/* Enable  Packet Recovery */ | 
 | 1343 | #define MFF_DIS_PKT_REC BIT_12S		/* Disable Packet Recovery */ | 
 | 1344 | /*	MFF_ENA_TIM_PAT	 (see RX_MFF_CTRL1) Bit 11:	Enable  Timing Patch */ | 
 | 1345 | /*	MFF_DIS_TIM_PAT	 (see RX_MFF_CTRL1) Bit 10:	Disable Timing Patch */ | 
 | 1346 | /*	MFF_ENA_ALM_FUL	 (see RX_MFF_CTRL1) Bit	 9:	Enable  Almost Full Sign */ | 
 | 1347 | /*	MFF_DIS_ALM_FUL	 (see RX_MFF_CTRL1) Bit	 8:	Disable Almost Full Sign */ | 
 | 1348 | #define MFF_ENA_W4E		BIT_7S		/* Enable  Wait for Empty */ | 
 | 1349 | #define MFF_DIS_W4E		BIT_6S		/* Disable Wait for Empty */ | 
 | 1350 | /*	MFF_ENA_FLUSH	 (see RX_MFF_CTRL1) Bit	 5:	Enable  Frame Flushing */ | 
 | 1351 | /*	MFF_DIS_FLUSH	 (see RX_MFF_CTRL1) Bit	 4:	Disable Frame Flushing */ | 
 | 1352 | #define MFF_ENA_LOOPB	BIT_3S		/* Enable  Loopback */ | 
 | 1353 | #define MFF_DIS_LOOPB	BIT_2S		/* Disable Loopback */ | 
 | 1354 | #define MFF_CLR_MAC_RST	BIT_1S		/* Clear XMAC Reset */ | 
 | 1355 | #define MFF_SET_MAC_RST	BIT_0S		/* Set   XMAC Reset */ | 
 | 1356 |  | 
 | 1357 | #define MFF_TX_CTRL_DEF	(MFF_ENA_PKT_REC | MFF_ENA_TIM_PAT | MFF_ENA_FLUSH) | 
 | 1358 |  | 
 | 1359 | /*	RX_MFF_TST2	 	 8 bit	Receive MAC FIFO Test Register 2 */ | 
 | 1360 | /*	TX_MFF_TST2	 	 8 bit	Transmit MAC FIFO Test Register 2 */ | 
 | 1361 | 								/* Bit 7:	reserved */ | 
 | 1362 | #define MFF_WSP_T_ON	BIT_6S	/* Tx: Write Shadow Ptr TestOn */ | 
 | 1363 | #define MFF_WSP_T_OFF	BIT_5S	/* Tx: Write Shadow Ptr TstOff */ | 
 | 1364 | #define MFF_WSP_INC		BIT_4S	/* Tx: Write Shadow Ptr Increment */ | 
 | 1365 | #define MFF_PC_DEC		BIT_3S	/* Packet Counter Decrement */ | 
 | 1366 | #define MFF_PC_T_ON		BIT_2S	/* Packet Counter Test On */ | 
 | 1367 | #define MFF_PC_T_OFF	BIT_1S	/* Packet Counter Test Off */ | 
 | 1368 | #define MFF_PC_INC		BIT_0S	/* Packet Counter Increment */ | 
 | 1369 |  | 
 | 1370 | /*	RX_MFF_TST1	 	 8 bit	Receive MAC FIFO Test Register 1 */ | 
 | 1371 | /*	TX_MFF_TST1	 	 8 bit	Transmit MAC FIFO Test Register 1 */ | 
 | 1372 | 					/* Bit 7:	reserved */ | 
 | 1373 | #define MFF_WP_T_ON		BIT_6S	/* Write Pointer Test On */ | 
 | 1374 | #define MFF_WP_T_OFF	BIT_5S	/* Write Pointer Test Off */ | 
 | 1375 | #define MFF_WP_INC		BIT_4S	/* Write Pointer Increm */ | 
 | 1376 | 							/* Bit 3:	reserved */ | 
 | 1377 | #define MFF_RP_T_ON		BIT_2S	/* Read Pointer Test On */ | 
 | 1378 | #define MFF_RP_T_OFF	BIT_1S	/* Read Pointer Test Off */ | 
 | 1379 | #define MFF_RP_DEC		BIT_0S	/* Read Pointer Decrement */ | 
 | 1380 |  | 
 | 1381 | /*	RX_MFF_CTRL2	 8 bit	Receive MAC FIFO Control Reg 2 */ | 
 | 1382 | /*	TX_MFF_CTRL2	 8 bit	Transmit MAC FIFO Control Reg 2 */ | 
 | 1383 | 								/* Bit 7..4:	reserved */ | 
 | 1384 | #define MFF_ENA_OP_MD	BIT_3S	/* Enable  Operation Mode */ | 
 | 1385 | #define MFF_DIS_OP_MD	BIT_2S	/* Disable Operation Mode */ | 
 | 1386 | #define MFF_RST_CLR		BIT_1S	/* Clear MAC FIFO Reset */ | 
 | 1387 | #define MFF_RST_SET		BIT_0S	/* Set   MAC FIFO Reset */ | 
 | 1388 |  | 
 | 1389 |  | 
 | 1390 | /*	Link LED Counter Registers (GENESIS only) */ | 
 | 1391 |  | 
 | 1392 | /*	RX_LED_CTRL		 8 bit	Receive LED Cnt Control Reg */ | 
 | 1393 | /*	TX_LED_CTRL		 8 bit	Transmit LED Cnt Control Reg */ | 
 | 1394 | /*	LNK_SYNC_CTRL	 8 bit	Link Sync Cnt Control Register */ | 
 | 1395 | 							/* Bit 7.. 3:	reserved */ | 
 | 1396 | #define LED_START		BIT_2S	/* Start Timer */ | 
 | 1397 | #define LED_STOP		BIT_1S	/* Stop Timer */ | 
 | 1398 | #define LED_STATE		BIT_0S	/* Rx/Tx: LED State, 1=LED on */ | 
 | 1399 | #define LED_CLR_IRQ		BIT_0S	/* Lnk: 	Clear Link IRQ */ | 
 | 1400 |  | 
 | 1401 | /*	RX_LED_TST		 8 bit	Receive LED Cnt Test Register */ | 
 | 1402 | /*	TX_LED_TST		 8 bit	Transmit LED Cnt Test Register */ | 
 | 1403 | /*	LNK_SYNC_TST	 8 bit	Link Sync Cnt Test Register */ | 
 | 1404 | 							/* Bit 7.. 3:	reserved */ | 
 | 1405 | #define LED_T_ON		BIT_2S	/* LED Counter Test mode On */ | 
 | 1406 | #define LED_T_OFF		BIT_1S	/* LED Counter Test mode Off */ | 
 | 1407 | #define LED_T_STEP		BIT_0S	/* LED Counter Step */ | 
 | 1408 |  | 
 | 1409 | /*	LNK_LED_REG	 	 8 bit	Link LED Register */ | 
 | 1410 | 								/* Bit 7.. 6:	reserved */ | 
 | 1411 | #define LED_BLK_ON		BIT_5S	/* Link LED Blinking On */ | 
 | 1412 | #define LED_BLK_OFF		BIT_4S	/* Link LED Blinking Off */ | 
 | 1413 | #define LED_SYNC_ON		BIT_3S	/* Use Sync Wire to switch LED */ | 
 | 1414 | #define LED_SYNC_OFF	BIT_2S	/* Disable Sync Wire Input */ | 
 | 1415 | #define LED_ON			BIT_1S	/* switch LED on */ | 
 | 1416 | #define LED_OFF			BIT_0S	/* switch LED off */ | 
 | 1417 |  | 
 | 1418 | /*	Receive and Transmit GMAC FIFO Registers (YUKON only) */ | 
 | 1419 |  | 
 | 1420 | /*	RX_GMF_EA		32 bit	Rx GMAC FIFO End Address */ | 
 | 1421 | /*	RX_GMF_AF_THR	32 bit	Rx GMAC FIFO Almost Full Thresh. */ | 
 | 1422 | /*	RX_GMF_WP		32 bit 	Rx GMAC FIFO Write Pointer */ | 
 | 1423 | /*	RX_GMF_WLEV		32 bit 	Rx GMAC FIFO Write Level */ | 
 | 1424 | /*	RX_GMF_RP		32 bit 	Rx GMAC FIFO Read Pointer */ | 
 | 1425 | /*	RX_GMF_RLEV		32 bit 	Rx GMAC FIFO Read Level */ | 
 | 1426 | /*	TX_GMF_EA		32 bit	Tx GMAC FIFO End Address */ | 
 | 1427 | /*	TX_GMF_AE_THR	32 bit	Tx GMAC FIFO Almost Empty Thresh.*/ | 
 | 1428 | /*	TX_GMF_WP		32 bit 	Tx GMAC FIFO Write Pointer */ | 
 | 1429 | /*	TX_GMF_WSP		32 bit 	Tx GMAC FIFO Write Shadow Ptr. */ | 
 | 1430 | /*	TX_GMF_WLEV		32 bit 	Tx GMAC FIFO Write Level */ | 
 | 1431 | /*	TX_GMF_RP		32 bit 	Tx GMAC FIFO Read Pointer */ | 
 | 1432 | /*	TX_GMF_RSTP		32 bit 	Tx GMAC FIFO Restart Pointer */ | 
 | 1433 | /*	TX_GMF_RLEV		32 bit 	Tx GMAC FIFO Read Level */ | 
 | 1434 |  | 
 | 1435 | /*	RX_GMF_CTRL_T	32 bit	Rx GMAC FIFO Control/Test */ | 
 | 1436 | 						/* Bits 31..15:	reserved */ | 
 | 1437 | #define GMF_WP_TST_ON	BIT_14		/* Write Pointer Test On */ | 
 | 1438 | #define GMF_WP_TST_OFF	BIT_13		/* Write Pointer Test Off */ | 
 | 1439 | #define GMF_WP_STEP		BIT_12		/* Write Pointer Step/Increment */ | 
 | 1440 | 						/* Bit 11:	reserved */ | 
 | 1441 | #define GMF_RP_TST_ON	BIT_10		/* Read Pointer Test On */ | 
 | 1442 | #define GMF_RP_TST_OFF	BIT_9		/* Read Pointer Test Off */ | 
 | 1443 | #define GMF_RP_STEP		BIT_8		/* Read Pointer Step/Increment */ | 
 | 1444 | #define GMF_RX_F_FL_ON	BIT_7		/* Rx FIFO Flush Mode On */ | 
 | 1445 | #define GMF_RX_F_FL_OFF	BIT_6		/* Rx FIFO Flush Mode Off */ | 
 | 1446 | #define GMF_CLI_RX_FO	BIT_5		/* Clear IRQ Rx FIFO Overrun */ | 
 | 1447 | #define GMF_CLI_RX_FC	BIT_4		/* Clear IRQ Rx Frame Complete */ | 
 | 1448 | #define GMF_OPER_ON		BIT_3		/* Operational Mode On */ | 
 | 1449 | #define GMF_OPER_OFF	BIT_2		/* Operational Mode Off */ | 
 | 1450 | #define GMF_RST_CLR		BIT_1		/* Clear GMAC FIFO Reset */ | 
 | 1451 | #define GMF_RST_SET		BIT_0		/* Set   GMAC FIFO Reset */ | 
 | 1452 |  | 
 | 1453 | /*	TX_GMF_CTRL_T	32 bit	Tx GMAC FIFO Control/Test */ | 
 | 1454 | 						/* Bits 31..19:	reserved */ | 
 | 1455 | #define GMF_WSP_TST_ON	BIT_18		/* Write Shadow Pointer Test On */ | 
 | 1456 | #define GMF_WSP_TST_OFF	BIT_17		/* Write Shadow Pointer Test Off */ | 
 | 1457 | #define GMF_WSP_STEP	BIT_16		/* Write Shadow Pointer Step/Increment */ | 
 | 1458 | 						/* Bits 15..7: same as for RX_GMF_CTRL_T */ | 
 | 1459 | #define GMF_CLI_TX_FU	BIT_6		/* Clear IRQ Tx FIFO Underrun */ | 
 | 1460 | #define GMF_CLI_TX_FC	BIT_5		/* Clear IRQ Tx Frame Complete */ | 
 | 1461 | #define GMF_CLI_TX_PE	BIT_4		/* Clear IRQ Tx Parity Error */ | 
 | 1462 | 						/* Bits 3..0: same as for RX_GMF_CTRL_T */ | 
 | 1463 |  | 
 | 1464 | #define GMF_RX_CTRL_DEF		(GMF_OPER_ON | GMF_RX_F_FL_ON) | 
 | 1465 | #define GMF_TX_CTRL_DEF		GMF_OPER_ON | 
 | 1466 |  | 
 | 1467 | #define RX_GMF_FL_THR_DEF	0x0a	/* Rx GMAC FIFO Flush Threshold default */ | 
 | 1468 |  | 
 | 1469 | /*	GMAC_TI_ST_CTRL	 8 bit	Time Stamp Timer Ctrl Reg (YUKON only) */ | 
 | 1470 | 								/* Bit 7.. 3:	reserved */ | 
 | 1471 | #define GMT_ST_START	BIT_2S		/* Start Time Stamp Timer */ | 
 | 1472 | #define GMT_ST_STOP		BIT_1S		/* Stop  Time Stamp Timer */ | 
 | 1473 | #define GMT_ST_CLR_IRQ	BIT_0S		/* Clear Time Stamp Timer IRQ */ | 
 | 1474 |  | 
 | 1475 | /*	GMAC_CTRL		32 bit	GMAC Control Reg (YUKON only) */ | 
 | 1476 | 						/* Bits 31.. 8:	reserved */ | 
 | 1477 | #define GMC_H_BURST_ON	BIT_7		/* Half Duplex Burst Mode On */ | 
 | 1478 | #define GMC_H_BURST_OFF	BIT_6		/* Half Duplex Burst Mode Off */ | 
 | 1479 | #define GMC_F_LOOPB_ON	BIT_5		/* FIFO Loopback On */ | 
 | 1480 | #define GMC_F_LOOPB_OFF	BIT_4		/* FIFO Loopback Off */ | 
 | 1481 | #define GMC_PAUSE_ON	BIT_3		/* Pause On */ | 
 | 1482 | #define GMC_PAUSE_OFF	BIT_2		/* Pause Off */ | 
 | 1483 | #define GMC_RST_CLR		BIT_1		/* Clear GMAC Reset */ | 
 | 1484 | #define GMC_RST_SET		BIT_0		/* Set   GMAC Reset */ | 
 | 1485 |  | 
 | 1486 | /*	GPHY_CTRL		32 bit	GPHY Control Reg (YUKON only) */ | 
 | 1487 | 						/* Bits 31..29:	reserved */ | 
 | 1488 | #define GPC_SEL_BDT		BIT_28	/* Select Bi-Dir. Transfer for MDC/MDIO */ | 
 | 1489 | #define GPC_INT_POL_HI	BIT_27	/* IRQ Polarity is Active HIGH */ | 
 | 1490 | #define GPC_75_OHM		BIT_26	/* Use 75 Ohm Termination instead of 50 */ | 
 | 1491 | #define GPC_DIS_FC		BIT_25	/* Disable Automatic Fiber/Copper Detection */ | 
 | 1492 | #define GPC_DIS_SLEEP	BIT_24	/* Disable Energy Detect */ | 
 | 1493 | #define GPC_HWCFG_M_3	BIT_23	/* HWCFG_MODE[3] */ | 
 | 1494 | #define GPC_HWCFG_M_2	BIT_22	/* HWCFG_MODE[2] */ | 
 | 1495 | #define GPC_HWCFG_M_1	BIT_21	/* HWCFG_MODE[1] */ | 
 | 1496 | #define GPC_HWCFG_M_0	BIT_20	/* HWCFG_MODE[0] */ | 
 | 1497 | #define GPC_ANEG_0		BIT_19	/* ANEG[0] */ | 
 | 1498 | #define GPC_ENA_XC		BIT_18	/* Enable MDI crossover */ | 
 | 1499 | #define GPC_DIS_125		BIT_17	/* Disable 125 MHz clock */ | 
 | 1500 | #define GPC_ANEG_3		BIT_16	/* ANEG[3] */ | 
 | 1501 | #define GPC_ANEG_2		BIT_15	/* ANEG[2] */ | 
 | 1502 | #define GPC_ANEG_1		BIT_14	/* ANEG[1] */ | 
 | 1503 | #define GPC_ENA_PAUSE	BIT_13	/* Enable Pause (SYM_OR_REM) */ | 
 | 1504 | #define GPC_PHYADDR_4	BIT_12	/* Bit 4 of Phy Addr */ | 
 | 1505 | #define GPC_PHYADDR_3	BIT_11	/* Bit 3 of Phy Addr */ | 
 | 1506 | #define GPC_PHYADDR_2	BIT_10	/* Bit 2 of Phy Addr */ | 
 | 1507 | #define GPC_PHYADDR_1	BIT_9	/* Bit 1 of Phy Addr */ | 
 | 1508 | #define GPC_PHYADDR_0	BIT_8	/* Bit 0 of Phy Addr */ | 
 | 1509 | 						/* Bits  7..2:	reserved */ | 
 | 1510 | #define GPC_RST_CLR		BIT_1	/* Clear GPHY Reset */ | 
 | 1511 | #define GPC_RST_SET		BIT_0	/* Set   GPHY Reset */ | 
 | 1512 |  | 
 | 1513 | #define GPC_HWCFG_GMII_COP	(GPC_HWCFG_M_3 | GPC_HWCFG_M_2 | \ | 
 | 1514 | 							 GPC_HWCFG_M_1 | GPC_HWCFG_M_0) | 
 | 1515 |  | 
 | 1516 | #define GPC_HWCFG_GMII_FIB	(				 GPC_HWCFG_M_2 | \ | 
 | 1517 | 							 GPC_HWCFG_M_1 | GPC_HWCFG_M_0) | 
 | 1518 |  | 
 | 1519 | #define GPC_ANEG_ADV_ALL_M	(GPC_ANEG_3 | GPC_ANEG_2 | \ | 
 | 1520 | 							 GPC_ANEG_1 | GPC_ANEG_0) | 
 | 1521 |  | 
 | 1522 | /* forced speed and duplex mode (don't mix with other ANEG bits) */ | 
 | 1523 | #define GPC_FRC10MBIT_HALF	0 | 
 | 1524 | #define GPC_FRC10MBIT_FULL	GPC_ANEG_0 | 
 | 1525 | #define GPC_FRC100MBIT_HALF	GPC_ANEG_1 | 
 | 1526 | #define GPC_FRC100MBIT_FULL	(GPC_ANEG_0 | GPC_ANEG_1) | 
 | 1527 |  | 
 | 1528 | /* auto-negotiation with limited advertised speeds */ | 
 | 1529 | /* mix only with master/slave settings (for copper) */ | 
 | 1530 | #define GPC_ADV_1000_HALF	GPC_ANEG_2 | 
 | 1531 | #define GPC_ADV_1000_FULL	GPC_ANEG_3 | 
 | 1532 | #define GPC_ADV_ALL			(GPC_ANEG_2 | GPC_ANEG_3) | 
 | 1533 |  | 
 | 1534 | /* master/slave settings */ | 
 | 1535 | /* only for copper with 1000 Mbps */ | 
 | 1536 | #define GPC_FORCE_MASTER	0 | 
 | 1537 | #define GPC_FORCE_SLAVE		GPC_ANEG_0 | 
 | 1538 | #define GPC_PREF_MASTER		GPC_ANEG_1 | 
 | 1539 | #define GPC_PREF_SLAVE		(GPC_ANEG_1 | GPC_ANEG_0) | 
 | 1540 |  | 
 | 1541 | /*	GMAC_IRQ_SRC	 8 bit	GMAC Interrupt Source Reg (YUKON only) */ | 
 | 1542 | /*	GMAC_IRQ_MSK	 8 bit	GMAC Interrupt Mask   Reg (YUKON only) */ | 
 | 1543 | #define GM_IS_TX_CO_OV	BIT_5		/* Transmit Counter Overflow IRQ */ | 
 | 1544 | #define GM_IS_RX_CO_OV	BIT_4		/* Receive Counter Overflow IRQ */ | 
 | 1545 | #define GM_IS_TX_FF_UR	BIT_3		/* Transmit FIFO Underrun */ | 
 | 1546 | #define GM_IS_TX_COMPL	BIT_2		/* Frame Transmission Complete */ | 
 | 1547 | #define GM_IS_RX_FF_OR	BIT_1		/* Receive FIFO Overrun */ | 
 | 1548 | #define GM_IS_RX_COMPL	BIT_0		/* Frame Reception Complete */ | 
 | 1549 |  | 
 | 1550 | #define GMAC_DEF_MSK	(GM_IS_TX_CO_OV | GM_IS_RX_CO_OV | \ | 
 | 1551 | 						GM_IS_TX_FF_UR) | 
 | 1552 |  | 
 | 1553 | /*	GMAC_LINK_CTRL	16 bit	GMAC Link Control Reg (YUKON only) */ | 
 | 1554 | 						/* Bits 15.. 2:	reserved */ | 
 | 1555 | #define GMLC_RST_CLR	BIT_1S		/* Clear GMAC Link Reset */ | 
 | 1556 | #define GMLC_RST_SET	BIT_0S		/* Set   GMAC Link Reset */ | 
 | 1557 |  | 
 | 1558 |  | 
 | 1559 | /*	WOL_CTRL_STAT	16 bit	WOL Control/Status Reg */ | 
 | 1560 | #define WOL_CTL_LINK_CHG_OCC			BIT_15S | 
 | 1561 | #define WOL_CTL_MAGIC_PKT_OCC			BIT_14S | 
 | 1562 | #define WOL_CTL_PATTERN_OCC				BIT_13S | 
 | 1563 |  | 
 | 1564 | #define WOL_CTL_CLEAR_RESULT			BIT_12S | 
 | 1565 |  | 
 | 1566 | #define WOL_CTL_ENA_PME_ON_LINK_CHG		BIT_11S | 
 | 1567 | #define WOL_CTL_DIS_PME_ON_LINK_CHG		BIT_10S | 
 | 1568 | #define WOL_CTL_ENA_PME_ON_MAGIC_PKT	BIT_9S | 
 | 1569 | #define WOL_CTL_DIS_PME_ON_MAGIC_PKT	BIT_8S | 
 | 1570 | #define WOL_CTL_ENA_PME_ON_PATTERN		BIT_7S | 
 | 1571 | #define WOL_CTL_DIS_PME_ON_PATTERN		BIT_6S | 
 | 1572 |  | 
 | 1573 | #define WOL_CTL_ENA_LINK_CHG_UNIT		BIT_5S | 
 | 1574 | #define WOL_CTL_DIS_LINK_CHG_UNIT		BIT_4S | 
 | 1575 | #define WOL_CTL_ENA_MAGIC_PKT_UNIT		BIT_3S | 
 | 1576 | #define WOL_CTL_DIS_MAGIC_PKT_UNIT		BIT_2S | 
 | 1577 | #define WOL_CTL_ENA_PATTERN_UNIT		BIT_1S | 
 | 1578 | #define WOL_CTL_DIS_PATTERN_UNIT		BIT_0S | 
 | 1579 |  | 
 | 1580 | #define WOL_CTL_DEFAULT				\ | 
 | 1581 | 	(WOL_CTL_DIS_PME_ON_LINK_CHG |	\ | 
 | 1582 | 	WOL_CTL_DIS_PME_ON_PATTERN |	\ | 
 | 1583 | 	WOL_CTL_DIS_PME_ON_MAGIC_PKT |	\ | 
 | 1584 | 	WOL_CTL_DIS_LINK_CHG_UNIT |		\ | 
 | 1585 | 	WOL_CTL_DIS_PATTERN_UNIT |		\ | 
 | 1586 | 	WOL_CTL_DIS_MAGIC_PKT_UNIT) | 
 | 1587 |  | 
 | 1588 | /*	WOL_MATCH_CTL	 8 bit	WOL Match Control Reg */ | 
 | 1589 | #define WOL_CTL_PATT_ENA(x)				(BIT_0 << (x)) | 
 | 1590 |  | 
 | 1591 | #define SK_NUM_WOL_PATTERN		7 | 
 | 1592 | #define SK_PATTERN_PER_WORD		4 | 
 | 1593 | #define SK_BITMASK_PATTERN		7 | 
 | 1594 | #define SK_POW_PATTERN_LENGTH	128 | 
 | 1595 |  | 
 | 1596 | #define WOL_LENGTH_MSK		0x7f | 
 | 1597 | #define WOL_LENGTH_SHIFT	8 | 
 | 1598 |  | 
 | 1599 |  | 
 | 1600 | /* Receive and Transmit Descriptors ******************************************/ | 
 | 1601 |  | 
 | 1602 | /* Transmit Descriptor struct */ | 
 | 1603 | typedef	struct s_HwTxd { | 
 | 1604 | 	SK_U32 volatile	TxCtrl;	/* Transmit Buffer Control Field */ | 
 | 1605 | 	SK_U32	TxNext;			/* Physical Address Pointer to the next TxD */ | 
 | 1606 | 	SK_U32	TxAdrLo;		/* Physical Tx Buffer Address lower dword */ | 
 | 1607 | 	SK_U32	TxAdrHi;		/* Physical Tx Buffer Address upper dword */ | 
 | 1608 | 	SK_U32	TxStat;			/* Transmit Frame Status Word */ | 
 | 1609 | #ifndef	SK_USE_REV_DESC | 
 | 1610 | 	SK_U16	TxTcpOffs;		/* TCP Checksum Calculation Start Value */ | 
 | 1611 | 	SK_U16	TxRes1;			/* 16 bit reserved field */ | 
 | 1612 | 	SK_U16	TxTcpWp;		/* TCP Checksum Write Position */ | 
 | 1613 | 	SK_U16	TxTcpSp;		/* TCP Checksum Calculation Start Position */ | 
 | 1614 | #else	/* SK_USE_REV_DESC */ | 
 | 1615 | 	SK_U16	TxRes1;			/* 16 bit reserved field */ | 
 | 1616 | 	SK_U16	TxTcpOffs;		/* TCP Checksum Calculation Start Value */ | 
 | 1617 | 	SK_U16	TxTcpSp;		/* TCP Checksum Calculation Start Position */ | 
 | 1618 | 	SK_U16	TxTcpWp;		/* TCP Checksum Write Position */ | 
 | 1619 | #endif	/* SK_USE_REV_DESC */ | 
 | 1620 | 	SK_U32  TxRes2;			/* 32 bit reserved field */ | 
 | 1621 | } SK_HWTXD; | 
 | 1622 |  | 
 | 1623 | /* Receive Descriptor struct */ | 
 | 1624 | typedef	struct s_HwRxd { | 
 | 1625 | 	SK_U32 volatile RxCtrl;	/* Receive Buffer Control Field */ | 
 | 1626 | 	SK_U32	RxNext;			/* Physical Address Pointer to the next RxD */ | 
 | 1627 | 	SK_U32	RxAdrLo;		/* Physical Rx Buffer Address lower dword */ | 
 | 1628 | 	SK_U32	RxAdrHi;		/* Physical Rx Buffer Address upper dword */ | 
 | 1629 | 	SK_U32	RxStat;			/* Receive Frame Status Word */ | 
 | 1630 | 	SK_U32	RxTiSt;			/* Receive Time Stamp (from XMAC on GENESIS) */ | 
 | 1631 | #ifndef	SK_USE_REV_DESC | 
 | 1632 | 	SK_U16	RxTcpSum1;		/* TCP Checksum 1 */ | 
 | 1633 | 	SK_U16	RxTcpSum2;		/* TCP Checksum 2 */ | 
 | 1634 | 	SK_U16	RxTcpSp1;		/* TCP Checksum Calculation Start Position 1 */ | 
 | 1635 | 	SK_U16	RxTcpSp2;		/* TCP Checksum Calculation Start Position 2 */ | 
 | 1636 | #else	/* SK_USE_REV_DESC */ | 
 | 1637 | 	SK_U16	RxTcpSum2;		/* TCP Checksum 2 */ | 
 | 1638 | 	SK_U16	RxTcpSum1;		/* TCP Checksum 1 */ | 
 | 1639 | 	SK_U16	RxTcpSp2;		/* TCP Checksum Calculation Start Position 2 */ | 
 | 1640 | 	SK_U16	RxTcpSp1;		/* TCP Checksum Calculation Start Position 1 */ | 
 | 1641 | #endif	/* SK_USE_REV_DESC */ | 
 | 1642 | } SK_HWRXD; | 
 | 1643 |  | 
 | 1644 | /* | 
 | 1645 |  * Drivers which use the reverse descriptor feature (PCI_OUR_REG_2) | 
 | 1646 |  * should set the define SK_USE_REV_DESC. | 
 | 1647 |  * Structures are 'normaly' not endianess dependent. But in | 
 | 1648 |  * this case the SK_U16 fields are bound to bit positions inside the | 
 | 1649 |  * descriptor. RxTcpSum1 e.g. must start at bit 0 within the 6.th DWord. | 
 | 1650 |  * The bit positions inside a DWord are of course endianess dependent and | 
 | 1651 |  * swaps if the DWord is swapped by the hardware. | 
 | 1652 |  */ | 
 | 1653 |  | 
 | 1654 |  | 
 | 1655 | /* Descriptor Bit Definition */ | 
 | 1656 | /*	TxCtrl		Transmit Buffer Control Field */ | 
 | 1657 | /*	RxCtrl		Receive  Buffer Control Field */ | 
 | 1658 | #define BMU_OWN			BIT_31	/* OWN bit: 0=host/1=BMU */ | 
 | 1659 | #define BMU_STF			BIT_30	/* Start of Frame */ | 
 | 1660 | #define BMU_EOF			BIT_29	/* End of Frame */ | 
 | 1661 | #define BMU_IRQ_EOB		BIT_28	/* Req "End of Buffer" IRQ */ | 
 | 1662 | #define BMU_IRQ_EOF		BIT_27	/* Req "End of Frame" IRQ */ | 
 | 1663 | /* TxCtrl specific bits */ | 
 | 1664 | #define BMU_STFWD		BIT_26	/* (Tx)	Store & Forward Frame */ | 
 | 1665 | #define BMU_NO_FCS		BIT_25	/* (Tx) Disable MAC FCS (CRC) generation */ | 
 | 1666 | #define BMU_SW			BIT_24	/* (Tx)	1 bit res. for SW use */ | 
 | 1667 | /* RxCtrl specific bits */ | 
 | 1668 | #define BMU_DEV_0		BIT_26	/* (Rx)	Transfer data to Dev0 */ | 
 | 1669 | #define BMU_STAT_VAL	BIT_25	/* (Rx)	Rx Status Valid */ | 
 | 1670 | #define BMU_TIST_VAL	BIT_24	/* (Rx)	Rx TimeStamp Valid */ | 
 | 1671 | 								/* Bit 23..16:	BMU Check Opcodes */ | 
 | 1672 | #define BMU_CHECK		(0x55L<<16)	/* Default BMU check */ | 
 | 1673 | #define BMU_TCP_CHECK	(0x56L<<16)	/* Descr with TCP ext */ | 
 | 1674 | #define BMU_UDP_CHECK	(0x57L<<16)	/* Descr with UDP ext (YUKON only) */ | 
 | 1675 | #define BMU_BBC			0xffffL	/* Bit 15.. 0:	Buffer Byte Counter */ | 
 | 1676 |  | 
 | 1677 | /*	TxStat		Transmit Frame Status Word */ | 
 | 1678 | /*	RxStat		Receive Frame Status Word */ | 
 | 1679 | /* | 
 | 1680 |  *Note: TxStat is reserved for ASIC loopback mode only | 
 | 1681 |  * | 
 | 1682 |  *	The Bits of the Status words are defined in xmac_ii.h | 
 | 1683 |  *	(see XMR_FS bits) | 
 | 1684 |  */ | 
 | 1685 |  | 
 | 1686 | /* macros ********************************************************************/ | 
 | 1687 |  | 
 | 1688 | /* Receive and Transmit Queues */ | 
 | 1689 | #define Q_R1	0x0000		/* Receive Queue 1 */ | 
 | 1690 | #define Q_R2	0x0080		/* Receive Queue 2 */ | 
 | 1691 | #define Q_XS1	0x0200		/* Synchronous Transmit Queue 1 */ | 
 | 1692 | #define Q_XA1	0x0280		/* Asynchronous Transmit Queue 1 */ | 
 | 1693 | #define Q_XS2	0x0300		/* Synchronous Transmit Queue 2 */ | 
 | 1694 | #define Q_XA2	0x0380		/* Asynchronous Transmit Queue 2 */ | 
 | 1695 |  | 
 | 1696 | /* | 
 | 1697 |  *	Macro Q_ADDR() | 
 | 1698 |  * | 
 | 1699 |  *	Use this macro to access the Receive and Transmit Queue Registers. | 
 | 1700 |  * | 
 | 1701 |  * para: | 
 | 1702 |  *	Queue	Queue to access. | 
 | 1703 |  *				Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, and Q_XA2 | 
 | 1704 |  *	Offs	Queue register offset. | 
 | 1705 |  *				Values: Q_D, Q_DA_L ... Q_T2, Q_T3 | 
 | 1706 |  * | 
 | 1707 |  * usage	SK_IN32(pAC, Q_ADDR(Q_R2, Q_BC), pVal) | 
 | 1708 |  */ | 
 | 1709 | #define Q_ADDR(Queue, Offs)	(B8_Q_REGS + (Queue) + (Offs)) | 
 | 1710 |  | 
 | 1711 | /* | 
 | 1712 |  *	Macro RB_ADDR() | 
 | 1713 |  * | 
 | 1714 |  *	Use this macro to access the RAM Buffer Registers. | 
 | 1715 |  * | 
 | 1716 |  * para: | 
 | 1717 |  *	Queue	Queue to access. | 
 | 1718 |  *				Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, and Q_XA2 | 
 | 1719 |  *	Offs	Queue register offset. | 
 | 1720 |  *				Values: RB_START, RB_END ... RB_LEV, RB_CTRL | 
 | 1721 |  * | 
 | 1722 |  * usage	SK_IN32(pAC, RB_ADDR(Q_R2, RB_RP), pVal) | 
 | 1723 |  */ | 
 | 1724 | #define RB_ADDR(Queue, Offs)	(B16_RAM_REGS + (Queue) + (Offs)) | 
 | 1725 |  | 
 | 1726 |  | 
 | 1727 | /* MAC Related Registers */ | 
 | 1728 | #define MAC_1		0	/* belongs to the port near the slot */ | 
 | 1729 | #define MAC_2		1	/* belongs to the port far away from the slot */ | 
 | 1730 |  | 
 | 1731 | /* | 
 | 1732 |  *	Macro MR_ADDR() | 
 | 1733 |  * | 
 | 1734 |  *	Use this macro to access a MAC Related Registers inside the ASIC. | 
 | 1735 |  * | 
 | 1736 |  * para: | 
 | 1737 |  *	Mac		MAC to access. | 
 | 1738 |  *				Values: MAC_1, MAC_2 | 
 | 1739 |  *	Offs	MAC register offset. | 
 | 1740 |  *				Values: RX_MFF_EA, RX_MFF_WP ... LNK_LED_REG, | 
 | 1741 |  *						TX_MFF_EA, TX_MFF_WP ... TX_LED_TST | 
 | 1742 |  * | 
 | 1743 |  * usage	SK_IN32(pAC, MR_ADDR(MAC_1, TX_MFF_EA), pVal) | 
 | 1744 |  */ | 
 | 1745 | #define MR_ADDR(Mac, Offs)	(((Mac) << 7) + (Offs)) | 
 | 1746 |  | 
 | 1747 | #ifdef	SK_LITTLE_ENDIAN | 
 | 1748 | #define XM_WORD_LO	0 | 
 | 1749 | #define XM_WORD_HI	1 | 
 | 1750 | #else	/* !SK_LITTLE_ENDIAN */ | 
 | 1751 | #define XM_WORD_LO	1 | 
 | 1752 | #define XM_WORD_HI	0 | 
 | 1753 | #endif	/* !SK_LITTLE_ENDIAN */ | 
 | 1754 |  | 
 | 1755 |  | 
 | 1756 | /* | 
 | 1757 |  * macros to access the XMAC (GENESIS only) | 
 | 1758 |  * | 
 | 1759 |  * XM_IN16(),		to read a 16 bit register (e.g. XM_MMU_CMD) | 
 | 1760 |  * XM_OUT16(),		to write a 16 bit register (e.g. XM_MMU_CMD) | 
 | 1761 |  * XM_IN32(),		to read a 32 bit register (e.g. XM_TX_EV_CNT) | 
 | 1762 |  * XM_OUT32(),		to write a 32 bit register (e.g. XM_TX_EV_CNT) | 
 | 1763 |  * XM_INADDR(),		to read a network address register (e.g. XM_SRC_CHK) | 
 | 1764 |  * XM_OUTADDR(),	to write a network address register (e.g. XM_SRC_CHK) | 
 | 1765 |  * XM_INHASH(),		to read the XM_HSM_CHK register | 
 | 1766 |  * XM_OUTHASH()		to write the XM_HSM_CHK register | 
 | 1767 |  * | 
 | 1768 |  * para: | 
 | 1769 |  *	Mac		XMAC to access		values: MAC_1 or MAC_2 | 
 | 1770 |  *	IoC		I/O context needed for SK I/O macros | 
 | 1771 |  *	Reg		XMAC Register to read or write | 
 | 1772 |  *	(p)Val	Value or pointer to the value which should be read or written | 
 | 1773 |  * | 
 | 1774 |  * usage:	XM_OUT16(IoC, MAC_1, XM_MMU_CMD, Value); | 
 | 1775 |  */ | 
 | 1776 |  | 
 | 1777 | #define XMA(Mac, Reg)									\ | 
 | 1778 | 	((BASE_XMAC_1 + (Mac) * (BASE_XMAC_2 - BASE_XMAC_1)) | ((Reg) << 1)) | 
 | 1779 |  | 
 | 1780 | #define XM_IN16(IoC, Mac, Reg, pVal)					\ | 
 | 1781 | 	SK_IN16((IoC), XMA((Mac), (Reg)), (pVal)) | 
 | 1782 |  | 
 | 1783 | #define XM_OUT16(IoC, Mac, Reg, Val)					\ | 
 | 1784 | 	SK_OUT16((IoC), XMA((Mac), (Reg)), (Val)) | 
 | 1785 |  | 
 | 1786 | #define XM_IN32(IoC, Mac, Reg, pVal) {					\ | 
 | 1787 | 	SK_IN16((IoC), XMA((Mac), (Reg)),					\ | 
 | 1788 | 		(SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_LO]);		\ | 
 | 1789 | 	SK_IN16((IoC), XMA((Mac), (Reg+2)),					\ | 
 | 1790 | 		(SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_HI]);		\ | 
 | 1791 | } | 
 | 1792 |  | 
 | 1793 | #define XM_OUT32(IoC, Mac, Reg, Val) {										\ | 
 | 1794 | 	SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL));			\ | 
 | 1795 | 	SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)(((Val) >> 16) & 0xffffL));\ | 
 | 1796 | } | 
 | 1797 |  | 
 | 1798 | /* Remember: we are always writing to / reading from LITTLE ENDIAN memory */ | 
 | 1799 |  | 
 | 1800 | #define XM_INADDR(IoC, Mac, Reg, pVal) {				\ | 
 | 1801 | 	SK_U16	Word;										\ | 
 | 1802 | 	SK_U8	*pByte;										\ | 
 | 1803 | 	pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];				\ | 
 | 1804 | 	SK_IN16((IoC), XMA((Mac), (Reg)), &Word);			\ | 
 | 1805 | 	pByte[0] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1806 | 	pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1807 | 	SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word);			\ | 
 | 1808 | 	pByte[2] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1809 | 	pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1810 | 	SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word);			\ | 
 | 1811 | 	pByte[4] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1812 | 	pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1813 | } | 
 | 1814 |  | 
 | 1815 | #define XM_OUTADDR(IoC, Mac, Reg, pVal) {				\ | 
 | 1816 | 	SK_U8	SK_FAR *pByte;								\ | 
 | 1817 | 	pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0];	\ | 
 | 1818 | 	SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)			\ | 
 | 1819 | 		(((SK_U16)(pByte[0]) & 0x00ff) |				\ | 
 | 1820 | 		(((SK_U16)(pByte[1]) << 8) & 0xff00)));			\ | 
 | 1821 | 	SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)		\ | 
 | 1822 | 		(((SK_U16)(pByte[2]) & 0x00ff) |				\ | 
 | 1823 | 		(((SK_U16)(pByte[3]) << 8) & 0xff00)));			\ | 
 | 1824 | 	SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16)		\ | 
 | 1825 | 		(((SK_U16)(pByte[4]) & 0x00ff) |				\ | 
 | 1826 | 		(((SK_U16)(pByte[5]) << 8) & 0xff00)));			\ | 
 | 1827 | } | 
 | 1828 |  | 
 | 1829 | #define XM_INHASH(IoC, Mac, Reg, pVal) {				\ | 
 | 1830 | 	SK_U16	Word;										\ | 
 | 1831 | 	SK_U8	SK_FAR *pByte;								\ | 
 | 1832 | 	pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0];	\ | 
 | 1833 | 	SK_IN16((IoC), XMA((Mac), (Reg)), &Word);			\ | 
 | 1834 | 	pByte[0] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1835 | 	pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1836 | 	SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word);			\ | 
 | 1837 | 	pByte[2] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1838 | 	pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1839 | 	SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word);			\ | 
 | 1840 | 	pByte[4] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1841 | 	pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1842 | 	SK_IN16((IoC), XMA((Mac), (Reg+6)), &Word);			\ | 
 | 1843 | 	pByte[6] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1844 | 	pByte[7] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1845 | } | 
 | 1846 |  | 
 | 1847 | #define XM_OUTHASH(IoC, Mac, Reg, pVal) {				\ | 
 | 1848 | 	SK_U8	SK_FAR *pByte;								\ | 
 | 1849 | 	pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0];	\ | 
 | 1850 | 	SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)			\ | 
 | 1851 | 		(((SK_U16)(pByte[0]) & 0x00ff)|					\ | 
 | 1852 | 		(((SK_U16)(pByte[1]) << 8) & 0xff00)));			\ | 
 | 1853 | 	SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)		\ | 
 | 1854 | 		(((SK_U16)(pByte[2]) & 0x00ff)|					\ | 
 | 1855 | 		(((SK_U16)(pByte[3]) << 8) & 0xff00)));			\ | 
 | 1856 | 	SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16)		\ | 
 | 1857 | 		(((SK_U16)(pByte[4]) & 0x00ff)|					\ | 
 | 1858 | 		(((SK_U16)(pByte[5]) << 8) & 0xff00)));			\ | 
 | 1859 | 	SK_OUT16((IoC), XMA((Mac), (Reg+6)), (SK_U16)		\ | 
 | 1860 | 		(((SK_U16)(pByte[6]) & 0x00ff)|					\ | 
 | 1861 | 		(((SK_U16)(pByte[7]) << 8) & 0xff00)));			\ | 
 | 1862 | } | 
 | 1863 |  | 
 | 1864 | /* | 
 | 1865 |  * macros to access the GMAC (YUKON only) | 
 | 1866 |  * | 
 | 1867 |  * GM_IN16(),		to read  a 16 bit register (e.g. GM_GP_STAT) | 
 | 1868 |  * GM_OUT16(),		to write a 16 bit register (e.g. GM_GP_CTRL) | 
 | 1869 |  * GM_IN32(),		to read  a 32 bit register (e.g. GM_) | 
 | 1870 |  * GM_OUT32(),		to write a 32 bit register (e.g. GM_) | 
 | 1871 |  * GM_INADDR(),		to read  a network address register (e.g. GM_SRC_ADDR_1L) | 
 | 1872 |  * GM_OUTADDR(),	to write a network address register (e.g. GM_SRC_ADDR_2L) | 
 | 1873 |  * GM_INHASH(),		to read  the GM_MC_ADDR_H1 register | 
 | 1874 |  * GM_OUTHASH()		to write the GM_MC_ADDR_H1 register | 
 | 1875 |  * | 
 | 1876 |  * para: | 
 | 1877 |  *	Mac		GMAC to access		values: MAC_1 or MAC_2 | 
 | 1878 |  *	IoC		I/O context needed for SK I/O macros | 
 | 1879 |  *	Reg		GMAC Register to read or write | 
 | 1880 |  *	(p)Val	Value or pointer to the value which should be read or written | 
 | 1881 |  * | 
 | 1882 |  * usage:	GM_OUT16(IoC, MAC_1, GM_GP_CTRL, Value); | 
 | 1883 |  */ | 
 | 1884 |  | 
 | 1885 | #define GMA(Mac, Reg)									\ | 
 | 1886 | 	((BASE_GMAC_1 + (Mac) * (BASE_GMAC_2 - BASE_GMAC_1)) | (Reg)) | 
 | 1887 |  | 
 | 1888 | #define GM_IN16(IoC, Mac, Reg, pVal)					\ | 
 | 1889 | 	SK_IN16((IoC), GMA((Mac), (Reg)), (pVal)) | 
 | 1890 |  | 
 | 1891 | #define GM_OUT16(IoC, Mac, Reg, Val)					\ | 
 | 1892 | 	SK_OUT16((IoC), GMA((Mac), (Reg)), (Val)) | 
 | 1893 |  | 
 | 1894 | #define GM_IN32(IoC, Mac, Reg, pVal) {					\ | 
 | 1895 | 	SK_IN16((IoC), GMA((Mac), (Reg)),					\ | 
 | 1896 | 		(SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_LO]);		\ | 
 | 1897 | 	SK_IN16((IoC), GMA((Mac), (Reg+4)),					\ | 
 | 1898 | 		(SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_HI]);		\ | 
 | 1899 | } | 
 | 1900 |  | 
 | 1901 | #define GM_OUT32(IoC, Mac, Reg, Val) {										\ | 
 | 1902 | 	SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL));			\ | 
 | 1903 | 	SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)(((Val) >> 16) & 0xffffL));\ | 
 | 1904 | } | 
 | 1905 |  | 
 | 1906 | #define GM_INADDR(IoC, Mac, Reg, pVal) {				\ | 
 | 1907 | 	SK_U16	Word;										\ | 
 | 1908 | 	SK_U8	*pByte;										\ | 
 | 1909 | 	pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];				\ | 
 | 1910 | 	SK_IN16((IoC), GMA((Mac), (Reg)), &Word);			\ | 
 | 1911 | 	pByte[0] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1912 | 	pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1913 | 	SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word);			\ | 
 | 1914 | 	pByte[2] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1915 | 	pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1916 | 	SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word);			\ | 
 | 1917 | 	pByte[4] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1918 | 	pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1919 | } | 
 | 1920 |  | 
 | 1921 | #define GM_OUTADDR(IoC, Mac, Reg, pVal) {				\ | 
 | 1922 | 	SK_U8	SK_FAR *pByte;								\ | 
 | 1923 | 	pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0];	\ | 
 | 1924 | 	SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)			\ | 
 | 1925 | 		(((SK_U16)(pByte[0]) & 0x00ff) |				\ | 
 | 1926 | 		(((SK_U16)(pByte[1]) << 8) & 0xff00)));			\ | 
 | 1927 | 	SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)		\ | 
 | 1928 | 		(((SK_U16)(pByte[2]) & 0x00ff) |				\ | 
 | 1929 | 		(((SK_U16)(pByte[3]) << 8) & 0xff00)));			\ | 
 | 1930 | 	SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16)		\ | 
 | 1931 | 		(((SK_U16)(pByte[4]) & 0x00ff) |				\ | 
 | 1932 | 		(((SK_U16)(pByte[5]) << 8) & 0xff00)));			\ | 
 | 1933 | } | 
 | 1934 |  | 
 | 1935 | #define GM_INHASH(IoC, Mac, Reg, pVal) {				\ | 
 | 1936 | 	SK_U16	Word;										\ | 
 | 1937 | 	SK_U8	*pByte;										\ | 
 | 1938 | 	pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];				\ | 
 | 1939 | 	SK_IN16((IoC), GMA((Mac), (Reg)), &Word);			\ | 
 | 1940 | 	pByte[0] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1941 | 	pByte[1] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1942 | 	SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word);			\ | 
 | 1943 | 	pByte[2] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1944 | 	pByte[3] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1945 | 	SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word);			\ | 
 | 1946 | 	pByte[4] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1947 | 	pByte[5] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1948 | 	SK_IN16((IoC), GMA((Mac), (Reg+12)), &Word);		\ | 
 | 1949 | 	pByte[6] = (SK_U8)(Word  & 0x00ff);					\ | 
 | 1950 | 	pByte[7] = (SK_U8)((Word >> 8) & 0x00ff);			\ | 
 | 1951 | } | 
 | 1952 |  | 
 | 1953 | #define GM_OUTHASH(IoC, Mac, Reg, pVal) {				\ | 
 | 1954 | 	SK_U8	*pByte;										\ | 
 | 1955 | 	pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0];				\ | 
 | 1956 | 	SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)			\ | 
 | 1957 | 		(((SK_U16)(pByte[0]) & 0x00ff)|					\ | 
 | 1958 | 		(((SK_U16)(pByte[1]) << 8) & 0xff00)));			\ | 
 | 1959 | 	SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)		\ | 
 | 1960 | 		(((SK_U16)(pByte[2]) & 0x00ff)|					\ | 
 | 1961 | 		(((SK_U16)(pByte[3]) << 8) & 0xff00)));			\ | 
 | 1962 | 	SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16)		\ | 
 | 1963 | 		(((SK_U16)(pByte[4]) & 0x00ff)|					\ | 
 | 1964 | 		(((SK_U16)(pByte[5]) << 8) & 0xff00)));			\ | 
 | 1965 | 	SK_OUT16((IoC), GMA((Mac), (Reg+12)), (SK_U16)		\ | 
 | 1966 | 		(((SK_U16)(pByte[6]) & 0x00ff)|					\ | 
 | 1967 | 		(((SK_U16)(pByte[7]) << 8) & 0xff00)));			\ | 
 | 1968 | } | 
 | 1969 |  | 
 | 1970 | /* | 
 | 1971 |  * Different MAC Types | 
 | 1972 |  */ | 
 | 1973 | #define SK_MAC_XMAC		0	/* Xaqti XMAC II */ | 
 | 1974 | #define SK_MAC_GMAC		1	/* Marvell GMAC */ | 
 | 1975 |  | 
 | 1976 | /* | 
 | 1977 |  * Different PHY Types | 
 | 1978 |  */ | 
 | 1979 | #define SK_PHY_XMAC			0	/* integrated in XMAC II */ | 
 | 1980 | #define SK_PHY_BCOM			1	/* Broadcom BCM5400 */ | 
 | 1981 | #define SK_PHY_LONE			2	/* Level One LXT1000 */ | 
 | 1982 | #define SK_PHY_NAT			3	/* National DP83891 */ | 
 | 1983 | #define SK_PHY_MARV_COPPER	4	/* Marvell 88E1011S */ | 
 | 1984 | #define SK_PHY_MARV_FIBER	5	/* Marvell 88E1011S working on fiber */ | 
 | 1985 |  | 
 | 1986 | /* | 
 | 1987 |  * PHY addresses (bits 12..8 of PHY address reg) | 
 | 1988 |  */ | 
 | 1989 | #define PHY_ADDR_XMAC	(0<<8) | 
 | 1990 | #define PHY_ADDR_BCOM	(1<<8) | 
 | 1991 | #define PHY_ADDR_LONE	(3<<8) | 
 | 1992 | #define PHY_ADDR_NAT	(0<<8) | 
 | 1993 |  | 
 | 1994 | /* GPHY address (bits 15..11 of SMI control reg) */ | 
 | 1995 | #define PHY_ADDR_MARV	0 | 
 | 1996 |  | 
 | 1997 | /* | 
 | 1998 |  * macros to access the PHY | 
 | 1999 |  * | 
 | 2000 |  * PHY_READ()		read a 16 bit value from the PHY | 
 | 2001 |  * PHY_WRITE()		write a 16 bit value to the PHY | 
 | 2002 |  * | 
 | 2003 |  * para: | 
 | 2004 |  * 	IoC		I/O context needed for SK I/O macros | 
 | 2005 |  * 	pPort	Pointer to port struct for PhyAddr | 
 | 2006 |  * 	Mac		XMAC to access		values: MAC_1 or MAC_2 | 
 | 2007 |  * 	PhyReg	PHY Register to read or write | 
 | 2008 |  * 	(p)Val	Value or pointer to the value which should be read or | 
 | 2009 |  *			written. | 
 | 2010 |  * | 
 | 2011 |  * usage:	PHY_READ(IoC, pPort, MAC_1, PHY_CTRL, Value); | 
 | 2012 |  * Warning: a PHY_READ on an uninitialized PHY (PHY still in reset) never | 
 | 2013 |  *          comes back. This is checked in DEBUG mode. | 
 | 2014 |  */ | 
 | 2015 | #ifndef DEBUG | 
 | 2016 | #define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) {						\ | 
 | 2017 | 	SK_U16 Mmu;  														\ | 
 | 2018 | 																		\ | 
 | 2019 | 	XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);	\ | 
 | 2020 | 	XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));							\ | 
 | 2021 | 	if ((pPort)->PhyType != SK_PHY_XMAC) {								\ | 
 | 2022 | 		do {  															\ | 
 | 2023 | 			XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);					\ | 
 | 2024 | 		} while ((Mmu & XM_MMU_PHY_RDY) == 0);							\ | 
 | 2025 | 		XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));						\ | 
 | 2026 | 	}  																	\ | 
 | 2027 | } | 
 | 2028 | #else | 
 | 2029 | #define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) {						\ | 
 | 2030 | 	SK_U16 Mmu;  														\ | 
 | 2031 | 	int __i = 0;														\ | 
 | 2032 | 																		\ | 
 | 2033 | 	XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);	\ | 
 | 2034 | 	XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));							\ | 
 | 2035 | 	if ((pPort)->PhyType != SK_PHY_XMAC) {								\ | 
 | 2036 | 		do {  															\ | 
 | 2037 | 			XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);					\ | 
 | 2038 | 			__i++;														\ | 
 | 2039 | 			if (__i > 100000) {											\ | 
 | 2040 | 				SK_DBG_PRINTF("*****************************\n");		\ | 
 | 2041 | 				SK_DBG_PRINTF("PHY_READ on uninitialized PHY\n");		\ | 
 | 2042 | 				SK_DBG_PRINTF("*****************************\n");		\ | 
 | 2043 | 				break;													\ | 
 | 2044 | 			}															\ | 
 | 2045 | 		} while ((Mmu & XM_MMU_PHY_RDY) == 0);							\ | 
 | 2046 | 		XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal));						\ | 
 | 2047 | 	}  																	\ | 
 | 2048 | } | 
 | 2049 | #endif /* DEBUG */ | 
 | 2050 |  | 
 | 2051 | #define PHY_WRITE(IoC, pPort, Mac, PhyReg, Val) {						\ | 
 | 2052 | 	SK_U16 Mmu;															\ | 
 | 2053 | 																		\ | 
 | 2054 | 	if ((pPort)->PhyType != SK_PHY_XMAC) {								\ | 
 | 2055 | 		do {  															\ | 
 | 2056 | 			XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);					\ | 
 | 2057 | 		} while ((Mmu & XM_MMU_PHY_BUSY) != 0);							\ | 
 | 2058 | 	}  																	\ | 
 | 2059 | 	XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr);	\ | 
 | 2060 | 	XM_OUT16((IoC), (Mac), XM_PHY_DATA, (Val));							\ | 
 | 2061 | 	if ((pPort)->PhyType != SK_PHY_XMAC) {								\ | 
 | 2062 | 		do {  															\ | 
 | 2063 | 			XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu);					\ | 
 | 2064 | 		} while ((Mmu & XM_MMU_PHY_BUSY) != 0);							\ | 
 | 2065 | 	}  																	\ | 
 | 2066 | } | 
 | 2067 |  | 
 | 2068 | /* | 
 | 2069 |  *	Macro PCI_C() | 
 | 2070 |  * | 
 | 2071 |  *	Use this macro to access PCI config register from the I/O space. | 
 | 2072 |  * | 
 | 2073 |  * para: | 
 | 2074 |  *	Addr	PCI configuration register to access. | 
 | 2075 |  *			Values:	PCI_VENDOR_ID ... PCI_VPD_ADR_REG, | 
 | 2076 |  * | 
 | 2077 |  * usage	SK_IN16(pAC, PCI_C(PCI_VENDOR_ID), pVal); | 
 | 2078 |  */ | 
 | 2079 | #define PCI_C(Addr)	(B7_CFG_SPC + (Addr))	/* PCI Config Space */ | 
 | 2080 |  | 
 | 2081 | /* | 
 | 2082 |  *	Macro SK_HW_ADDR(Base, Addr) | 
 | 2083 |  * | 
 | 2084 |  *	Calculates the effective HW address | 
 | 2085 |  * | 
 | 2086 |  * para: | 
 | 2087 |  *	Base	I/O or memory base address | 
 | 2088 |  *	Addr	Address offset | 
 | 2089 |  * | 
 | 2090 |  * usage:	May be used in SK_INxx and SK_OUTxx macros | 
 | 2091 |  *		#define SK_IN8(pAC, Addr, pVal) ...\ | 
 | 2092 |  *			*pVal = (SK_U8)inp(SK_HW_ADDR(pAC->Hw.Iop, Addr))) | 
 | 2093 |  */ | 
 | 2094 | #ifdef SK_MEM_MAPPED_IO | 
 | 2095 | #define SK_HW_ADDR(Base, Addr)	((Base) + (Addr)) | 
 | 2096 | #else  /* SK_MEM_MAPPED_IO */ | 
 | 2097 | #define SK_HW_ADDR(Base, Addr)	\ | 
 | 2098 | 			((Base) + (((Addr) & 0x7f) | (((Addr) >> 7 > 0) ? 0x80 : 0))) | 
 | 2099 | #endif /* SK_MEM_MAPPED_IO */ | 
 | 2100 |  | 
 | 2101 | #define SZ_LONG	(sizeof(SK_U32)) | 
 | 2102 |  | 
 | 2103 | /* | 
 | 2104 |  *	Macro SK_HWAC_LINK_LED() | 
 | 2105 |  * | 
 | 2106 |  *	Use this macro to set the link LED mode. | 
 | 2107 |  * para: | 
 | 2108 |  *	pAC		Pointer to adapter context struct | 
 | 2109 |  *	IoC		I/O context needed for SK I/O macros | 
 | 2110 |  *  Port	Port number | 
 | 2111 |  *	Mode	Mode to set for this LED | 
 | 2112 |  */ | 
 | 2113 | #define SK_HWAC_LINK_LED(pAC, IoC, Port, Mode) \ | 
 | 2114 | 	SK_OUT8(IoC, MR_ADDR(Port, LNK_LED_REG), Mode); | 
 | 2115 |  | 
 | 2116 |  | 
 | 2117 | /* typedefs *******************************************************************/ | 
 | 2118 |  | 
 | 2119 |  | 
 | 2120 | /* function prototypes ********************************************************/ | 
 | 2121 |  | 
 | 2122 | #ifdef __cplusplus | 
 | 2123 | } | 
 | 2124 | #endif	/* __cplusplus */ | 
 | 2125 |  | 
 | 2126 | #endif	/* __INC_SKGEHW_H */ |