Lines Matching +full:ultra +full:- +full:low

12  *	are provided to you under the BSD-type license terms provided
17 * - Redistributions of source code must retain the above copyright
19 * - Redistributions in binary form must reproduce the above
23 * - Neither the name of Marvell nor the names of its contributors
57 * D-Link PCI vendor ID
91 * D-Link gigabit ethernet device ID
133 #define PCI_Y2_PIG_ENA BIT(31) /* Enable Plug-in-Go (YUKON-2) */
134 #define PCI_Y2_DLL_DIS BIT(30) /* Disable PCI DLL (YUKON-2) */
135 #define PCI_Y2_PHY2_COMA BIT(29) /* Set PHY 2 to Coma Mode (YUKON-2) */
136 #define PCI_Y2_PHY1_COMA BIT(28) /* Set PHY 1 to Coma Mode (YUKON-2) */
137 #define PCI_Y2_PHY2_POWD BIT(27) /* Set PHY 2 to Power Down (YUKON-2) */
138 #define PCI_Y2_PHY1_POWD BIT(26) /* Set PHY 1 to Power Down (YUKON-2) */
150 #define PCI_PEX_LEGNAT BIT(15) /* PEX PM legacy/native (YUKON-2) */
160 #define PCI_CLS_OPT BIT(3) /* Cache Line Size PCI-X (YUKON-2) */
181 /* PCI_OUR_STATUS 32 bit Adapter Status Register (Yukon-2) */
183 #define PCI_OS_PCIX BIT(30) /* PCI-X Bus */
184 #define PCI_OS_MODE_MSK (3<<28) /* Bit 29..28: PCI-X Bus Mode Mask */
186 #define PCI_OS_PCI_X BIT(26) /* PCI/PCI-X Bus (0 = PEX) */
191 #define PCI_OS_SPEED(val) ((val & PCI_OS_MODE_MSK) >> 28) /* PCI-X Spd */
194 #define PCI_OS_SPD_X66 1 /* PCI-X 66MHz Bus */
195 #define PCI_OS_SPD_X100 2 /* PCI-X 100MHz Bus */
196 #define PCI_OS_SPD_X133 3 /* PCI-X 133MHz Bus */
198 /* PCI_OUR_REG_4 32 bit Our Register 4 (Yukon-ECU only) */
211 /* PCI_OUR_REG_5 - 32 bit Our Register 5 (Yukon-ECU only) */
215 /* PEX_DEV_CTRL 16 bit PEX Device Control (Yukon-2) */
225 #define PEX_DC_EN_NFA_ER_RP BIT(1) /* Enable Non-Fatal Error Report */
230 /* PEX_LNK_STAT 16 bit PEX Link Status (Yukon-2) */
237 /* PEX_UNC_ERR_STAT PEX Uncorrectable Errors Status Register (Yukon-2) */
265 /* Special ISR registers (Yukon-2 only) */
274 * - completely empty (this is the RAP Block window)
290 #define B2_Y2_CLK_GATE 0x011d /* 8 bit Clock Gating (Yukon-2) */
291 #define B2_Y2_HW_RES 0x011e /* 8 bit HW Resources (Yukon-2) */
320 #define B3_RAM_DATA_LO 0x0184 /* 32 bit RAM Data Word (low dWord) */
323 #define SELECT_RAM_BUFFER(rb, addr) (addr | (rb << 6)) /* Yukon-2 only */
326 /* Yukon-2: use SELECT_RAM_BUFFER() to access the RAM buffer */
328 * The HW-Spec. calls this registers Timeout Value 0..11. But this names are
349 * Bank 4 - 5
362 /* RSS key registers for Yukon-2 Family */
363 #define B4_RSS_KEY 0x0220 /* 4x32 bit RSS Key register (Yukon-2) */
369 /* 0x0280 - 0x0292: MAC 2 */
374 * Bank 8 - 15
381 #define Q_DA_L 0x20 /* 32 bit Current Descriptor Address Low dWord */
383 #define Q_AC_L 0x28 /* 32 bit Current Address Counter Low dWord */
411 #define PREF_UNIT_ADDR_LOW_REG 0x08 /* 32 bit List start addr, low part */
425 * Bank 16 - 23
448 /* Receive GMAC FIFO (YUKON and Yukon-2), use MR_ADDR() to access */
454 #define RX_GMF_TR_THR 0x0c54 /* 32 bit Rx Truncation Threshold (Yukon-2) */
455 #define RX_GMF_UP_THR 0x0c58 /* 8 bit Rx Upper Pause Thr (Yukon-EC_U) */
456 #define RX_GMF_LP_THR 0x0c5a /* 8 bit Rx Lower Pause Thr (Yukon-EC_U) */
457 #define RX_GMF_VLAN 0x0c5c /* 32 bit Rx VLAN Type Register (Yukon-2) */
466 /* 0x0c80 - 0x0cbf: MAC 2 */
467 /* 0x0cc0 - 0x0cff: reserved */
472 /* Transmit GMAC FIFO (YUKON and Yukon-2), use MR_ADDR() to access */
477 #define TX_GMF_VLAN 0x0d5c /* 32 bit Tx VLAN Type Register (Yukon-2) */
488 /* 0x0d80 - 0x0dbf: MAC 2 */
489 /* 0x0daa - 0x0dff: reserved */
503 /* Polling Unit Registers (Yukon-2 only) */
506 #define POLL_LIST_ADDR_LO 0x0e28 /* 32 bit Poll. List Start Addr (low) */
508 /* ASF Subsystem Registers (Yukon-2 only) */
523 /* Status BMU Registers (Yukon-2 only) */
534 /* FIFO Control/Status Registers (Yukon-2 only) */
542 /* Level and ISR Timer Registers (Yukon-2 only) */
571 /* Wake-up Frame Pattern Match Control Registers (YUKON only) */
573 #define WOL_REG_OFFS 0x20 /* HW-Bug: Address is + 0x20 against spec. */
578 #define WOL_MAC_ADDR_LO 0x0f24 /* 32 bit WOL MAC Address Low */
580 #define WOL_PATT_PME 0x0f2a /* 8 bit WOL PME Match Enable (Yukon-2) */
581 #define WOL_PATT_ASFM 0x0f2b /* 8 bit WOL ASF Match Enable (Yukon-2) */
595 * Bank 32 - 33
600 /* offset to configuration space on Yukon-2 */
611 #define Y2_VMAIN_AVAIL BIT(17) /* VMAIN available (YUKON-2 only) */
612 #define Y2_VAUX_AVAIL BIT(16) /* VAUX available (YUKON-2 only) */
613 #define Y2_HW_WOL_ON BIT(15) /* HW WOL On (Yukon-EC Ultra A1 only) */
614 #define Y2_HW_WOL_OFF BIT(14) /* HW WOL Off (Yukon-EC Ultra A1 only) */
615 #define Y2_ASF_ENABLE BIT(13) /* ASF Unit Enable (YUKON-2 only) */
616 #define Y2_ASF_DISABLE BIT(12) /* ASF Unit Disable (YUKON-2 only) */
617 #define Y2_CLK_RUN_ENA BIT(11) /* CLK_RUN Enable (YUKON-2 only) */
618 #define Y2_CLK_RUN_DIS BIT(10) /* CLK_RUN Disable (YUKON-2 only) */
619 #define Y2_LED_STAT_ON BIT(9) /* Status LED On (YUKON-2 only) */
620 #define Y2_LED_STAT_OFF BIT(8) /* Status LED Off (YUKON-2 only) */
686 #define Y2_IS_PCI_EXP BIT(25) /* PCI-Express interrupt */
687 #define Y2_IS_PCI_NEXP BIT(24) /* PCI-Express error similar to PCI error */
718 * as they are pre-yukon 2 chips
722 #define CHIP_ID_YUKON_LITE 0xb1 /* Chip ID for YUKON-Lite (Rev. A1-A3) */
723 #define CHIP_ID_YUKON_LP 0xb2 /* Chip ID for YUKON-LP */
725 #define CHIP_ID_YUKON_XL 0xb3 /* Chip ID for YUKON-2 XL */
726 #define CHIP_ID_YUKON_EC_U 0xb4 /* Chip ID for YUKON-2 EC Ultra */
727 #define CHIP_ID_YUKON_EX 0xb5 /* Chip ID for YUKON-2 Extreme */
728 #define CHIP_ID_YUKON_EC 0xb6 /* Chip ID for YUKON-2 EC */
729 #define CHIP_ID_YUKON_FE 0xb7 /* Chip ID for YUKON-2 FE */
730 #define CHIP_ID_YUKON_FE_P 0xb8 /* Chip ID for YUKON-2 FE+ */
731 #define CHIP_ID_YUKON_SUPR 0xb9 /* Chip ID for YUKON-2 Supreme */
732 #define CHIP_ID_YUKON_UL_2 0xba /* Chip ID for YUKON-2 Ultra 2 */
735 #define CHIP_REV_YU_LITE_A1 3 /* Chip Rev. for YUKON-Lite A1,A2 */
736 #define CHIP_REV_YU_LITE_A3 7 /* Chip Rev. for YUKON-Lite A3 */
738 #define CHIP_REV_YU_XL_A0 0 /* Chip Rev. for Yukon-2 A0 */
739 #define CHIP_REV_YU_XL_A1 1 /* Chip Rev. for Yukon-2 A1 */
740 #define CHIP_REV_YU_XL_A2 2 /* Chip Rev. for Yukon-2 A2 */
741 #define CHIP_REV_YU_XL_A3 3 /* Chip Rev. for Yukon-2 A3 */
743 #define CHIP_REV_YU_EC_A1 0 /* Chip Rev. for Yukon-EC A1/A0 */
744 #define CHIP_REV_YU_EC_A2 1 /* Chip Rev. for Yukon-EC A2 */
745 #define CHIP_REV_YU_EC_A3 2 /* Chip Rev. for Yukon-EC A3 */
747 #define CHIP_REV_YU_EC_U_A0 1 /* Chip Rev. for Yukon-EC Ultra A0 */
748 #define CHIP_REV_YU_EC_U_A1 2 /* Chip Rev. for Yukon-EC Ultra A1 */
749 #define CHIP_REV_YU_EC_U_B0 3 /* Chip Rev. for Yukon-EC Ultra B0 */
750 #define CHIP_REV_YU_EC_U_B1 5 /* Chip Rev. for Yukon-EC Ultra B1 */
751 #define CHIP_REV_YU_FE_A1 1 /* Chip Rev. for Yukon-FE A1 */
752 #define CHIP_REV_YU_FE_A2 3 /* Chip Rev. for Yukon-FE A2 */
753 #define CHIP_REV_YU_EX_A0 1 /* Chip Rev. for Yukon-Extreme A0 */
754 #define CHIP_REV_YU_EX_B0 2 /* Chip Rev. for Yukon-Extreme B0 */
756 #define CHIP_REV_YU_SU_A0 0 /* Chip Rev. for Yukon-Supreme A0 */
757 #define CHIP_REV_YU_SU_B0 1 /* Chip Rev. for Yukon-Supreme B0 */
758 #define CHIP_REV_YU_SU_B1 3 /* Chip Rev. for Yukon-Supreme B1 */
762 /* B2_Y2_CLK_GATE - 8 bit Clock Gating (Yukon-2 only) */
772 /* B2_Y2_HW_RES 8 bit HW Resources (Yukon-2 only) */
783 /* B2_Y2_CLK_CTRL 32 bit Core Clck Frqncy Control Rgstr (Yukon-2/EC) */
784 /* Yukon-EC/FE */
787 /* Yukon-2 */
883 /* Y2_PEX_PHY_ADDR/DATA PEX PHY address and data reg (Yukon-2 only) */
930 /* Rx BMU Control / Status Registers (Yukon-2) */
956 /* Tx BMU Control / Status Registers (Yukon-2) */
964 #define F_TX_CHK_AUTO_OFF BIT(31) /* Tx csum auto-calc Off (Yukon EX) */
965 #define F_TX_CHK_AUTO_ON BIT(30) /* Tx csum auto-calc On (Yukon EX) */
974 /* Queue Prefetch Unt Offsts, use Y2_PREF_Q_ADDR() to addrss (Yukon-2 only) */
1021 /* Threshold values for Yukon-EC Ultra */
1087 /* WOL_PATT_PME 8 bit WOL PME Match Enable (Yukon-2) */
1093 * Marvell-PHY Registers, indirect addressed over GMAC
1095 /* Marvell-specific registers */
1096 /* 0x0b - 0x0e: reserved */
1123 #define PHY_MARV_ID1_B2 0x0C25 /* Yukon-Plus (PHY 88E1011) */
1124 #define PHY_MARV_ID1_C2 0x0CC2 /* Yukon-EC (PHY 88E1111) */
1125 #define PHY_MARV_ID1_Y2 0x0C91 /* Yukon-2 (PHY 88E1112) */
1126 #define PHY_MARV_ID1_FE 0x0C83 /* Yukon-FE (PHY 88E3082 Rev.A1) */
1127 #define PHY_MARV_ID1_ECU 0x0CB0 /* Yukon-2 (PHY 88E1149 Rev.B2?) */
1153 /* for Yukon-2 Gigabit Ethernet PHY (88E1112 only) */
1202 #define PHY_M_IS_AN_ERROR BIT(15) /* Auto-Negotiation Error */
1206 #define PHY_M_IS_AN_COMPL BIT(11) /* Auto-Negotiation Completed */
1237 #define PHY_M_EC_FIB_AN_ENA BIT(3) /* Fbr Aut-Neg. Enbl (88E1011S only) */
1371 #define PHY_M_FESC_SEL_CL_A BIT(0) /* Select Class A driver (100B-TX) */
1373 /* for Yukon-2 Gigabit Ethernet PHY (88E1112 only) */
1382 #define PHY_M_MAC_MD_AUTO 3 /* Auto Copper/1000Base-X */
1384 #define PHY_M_MAC_MD_1000BX 7 /* 1000Base-X only */
1428 #define GM_TX_FLOW_CTRL 0x0010 /* 16 bit r/w Transmit Flow-Control */
1433 #define GM_SRC_ADDR_1L 0x001c /* 16 bit r/w Source Address 1 (low) */
1436 #define GM_SRC_ADDR_2L 0x0028 /* 16 bit r/w Source Address 2 (low) */
1466 * MIB Counters base address definitions (low word) -
1482 #define GM_RXF_127B (GM_MIB_CNT_BASE + 104) /* 65-127 Byte Rx Frame */
1483 #define GM_RXF_255B (GM_MIB_CNT_BASE + 112) /* 128-255 Byte Rx Frame */
1484 #define GM_RXF_511B (GM_MIB_CNT_BASE + 120) /* 256-511 Byte Rx Frame */
1485 #define GM_RXF_1023B (GM_MIB_CNT_BASE + 128) /* 512-1023 Byte Rx Frame */
1486 #define GM_RXF_1518B (GM_MIB_CNT_BASE + 136) /* 1024-1518 Byte Rx Frame */
1487 #define GM_RXF_MAX_SZ (GM_MIB_CNT_BASE + 144) /* 1519-MaxSize Byte Rx Frame */
1497 #define GM_TXO_OK_LO (GM_MIB_CNT_BASE + 224) /* Octets TX OK Low */
1500 #define GM_TXF_127B (GM_MIB_CNT_BASE + 248) /* 65-127 Byte Tx Frame */
1501 #define GM_TXF_255B (GM_MIB_CNT_BASE + 256) /* 128-255 Byte Tx Frame */
1502 #define GM_TXF_511B (GM_MIB_CNT_BASE + 264) /* 256-511 Byte Tx Frame */
1503 #define GM_TXF_1023B (GM_MIB_CNT_BASE + 272) /* 512-1023 Byte Tx Frame */
1504 #define GM_TXF_1518B (GM_MIB_CNT_BASE + 280) /* 1024-1518 Byte Tx Frame */
1505 #define GM_TXF_MAX_SZ (GM_MIB_CNT_BASE + 288) /* 1519-MaxSize Byte Tx Frame */
1527 #define GM_GPSR_FC_TX_DIS BIT(13) /* Tx Flow-Control Mode Disabled */
1536 #define GM_GPSR_FC_RX_DIS BIT(2) /* Rx Flow-Control Mode Disabled */
1539 #define GM_GPCR_RMII_PH_ENA BIT(15) /* Enbl RMII for PHY (Yukon-FE only) */
1540 #define GM_GPCR_RMII_LB_ENA BIT(14) /* Enable RMII Lpbck (Yukon-FE only) */
1541 #define GM_GPCR_FC_TX_DIS BIT(13) /* Disable Tx Flow-Control Mode */
1549 #define GM_GPCR_FC_RX_DIS BIT(4) /* Disable Rx Flow-Control Mode */
1551 #define GM_GPCR_AU_DUP_DIS BIT(2) /* Disable Auto-Update Duplex */
1552 #define GM_GPCR_AU_FCT_DIS BIT(1) /* Disable Auto-Update Flow-C. */
1553 #define GM_GPCR_AU_SPD_DIS BIT(0) /* Disable Auto-Update Speed */
1560 #define GM_TXCR_FORCE_JAM BIT(15) /* Force Jam / Flow-Control */
1565 /* (Yukon-2 only) */
1573 #define GM_RXCR_CRC_DIS BIT(13) /* Remove 4-byte CRC */
1574 #define GM_RXCR_PASS_FC BIT(12) /* Pass FC pckts FIFO (Yukon-1 only) */
1581 /* (Yukon-2 only) */
1595 /* r/o on Yukon, r/w on Yukon-EC */
1599 #define GM_NEW_FLOW_CTRL BIT(6) /* Enable New Flow-Control */
1600 #define GM_SMOD_IPG_MSK 0x1f /* Bit 4.. 0: Intr-Pckt Gap (IPG) */
1630 #define GMR_FS_GOOD_FC BIT(7) /* Good Flow-Control Packet */
1631 #define GMR_FS_BAD_FC BIT(6) /* Bad Flow-Control Packet */
1693 /* TX_GMF_CTRL_T 32 bit Tx GMAC FIFO Control/Test (YUKON and Yukon-2) */
1694 #define TX_STFW_DIS BIT(31) /* Disable Store & Forward (Yukon-EC Ultra) */
1695 #define TX_STFW_ENA BIT(30) /* Enable Store & Forward (Yukon-EC Ultra) */
1698 #define TX_JUMBO_ENA BIT(23) /* Enable Jumbo Mode (Yukon-EC Ultra) */
1699 #define TX_JUMBO_DIS BIT(22) /* Disable Jumbo Mode (Yukon-EC Ultra) */
1720 /* POLL_CTRL 32 bit Polling Unit control register (Yukon-2 only) */
1747 /* STAT_CTRL 32 bit Status BMU control register (Yukon-2 only) */
1773 #define GPC_SEL_BDT BIT(28) /* Select Bi-Dir. Transfer for MDC/MDIO */
1774 #define GPC_INT_POL BIT(27) /* IRQ Polarity is Active Low */
1817 ddi_put32(d->d_regsh, (uint32_t *)(void *)(d->d_regs + (reg)), (v))
1819 ddi_put16(d->d_regsh, (uint16_t *)(void *)(d->d_regs + (reg)), (v))
1821 ddi_put8(d->d_regsh, (uint8_t *)(void *)(d->d_regs + (reg)), (v))
1824 ddi_get32(d->d_regsh, (uint32_t *)(void *)(d->d_regs + (reg)))
1826 ddi_get16(d->d_regsh, (uint16_t *)(void *)(d->d_regs + (reg)))
1828 ddi_get8(d->d_regsh, (uint8_t *)(void *)(d->d_regs + (reg)))
1839 ((BASE_GMAC_1 + (port) * (BASE_GMAC_2 - BASE_GMAC_1)) | (reg))
1852 (ddi_get32((ring)->r_acch, &(ring)->r_kaddr[i].desc_status))
1855 (ddi_get32((ring)->r_acch, &(ring)->r_kaddr[i].desc_status))
1858 (ddi_get32((ring)->r_acch, &(ring)->r_kaddr[i].desc_control))
1861 (ddi_put32((ring)->r_acch, &(ring)->r_kaddr[i].desc_status, v))
1864 (ddi_put32((ring)->r_acch, &(ring)->r_kaddr[i].desc_status, v))
1867 (ddi_put32((ring)->r_acch, &(ring)->r_kaddr[i].desc_control, v))
1870 (void) ddi_dma_sync((ring)->r_dmah, (i) * sizeof (yge_desc_t), \
1874 bzero((ring)->r_kaddr, (ring)->r_size)
1877 (void) ddi_dma_sync((ring)->r_dmah, 0, 0, (flags))
1880 (void) ddi_dma_sync(b->b_dmah, 0, 0, flags)
1942 /* YUKON-2 bit values */
1948 /* YUKON-2 Control flags */
1965 /* YUKON-2 Rx/Tx opcodes defines */
1984 /* YUKON-2 STATUS opcodes defines */
1994 /* YUKON-2 SPECIAL opcodes defines */
2056 /* Note: We could conceivably change this to support 64-bit */
2068 #define YGE_PROC_MAX (YGE_RX_RING_CNT - 1)
2198 * All of these locks are shaerd between both ports on a multi-port device.
2201 * because they share low level resources (such as the status ring.)
2207 #define RX_LOCK(dev) mutex_enter(&dev->d_rxlock);
2208 #define RX_UNLOCK(dev) mutex_exit(&dev->d_rxlock);
2209 #define TX_LOCK(dev) mutex_enter(&dev->d_txlock);
2210 #define TX_UNLOCK(dev) mutex_exit(&dev->d_txlock);
2211 #define PHY_LOCK(dev) mutex_enter(&dev->d_phylock);
2212 #define PHY_UNLOCK(dev) mutex_exit(&dev->d_phylock);
2224 #define TASK_LOCK(dev) mutex_enter(&(dev)->d_task_mtx)
2225 #define TASK_UNLOCK(dev) mutex_exit(&(dev)->d_task_mtx)
2226 #define TASK_WAIT(dev) cv_wait(&(dev)->d_task_cv, &(dev)->d_task_mtx)
2227 #define TASK_SIGNAL(dev) cv_signal(&(dev)->d_task_cv)
2229 #define YGE_USECS(sc, us) ((sc)->d_clock * (us))
2286 (((dev)->d_Features[((ReqFeature) & 0x30000000UL) >> 28] &\
2295 #define HWF_FORCE_AUTO_NEG 0x04000000UL /* Force Auto-Negotiation */
2303 #define HWF_NEW_FLOW_CONTROL 0x00040000UL /* New Flow-Control support */
2313 #define HWF_WA_DEV_4217 0x10400000UL /* 4.217 (PCI-E blockage) */
2335 #define HWF_WA_DEV_428 0x10000004UL /* 4.28 (Poll-U &BigEndi) */
2337 /* for Yu-L Rev. A0 only */