mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
1e674f1d20
Also updated KSZ8851SNL per internal code review: * Removed Link status change interrupt as it's handled with polling * Added auto negotiation timeout * Updated typedefs, moved types to appropriate source, updated components/esp_eth/src/ksz8851.h to use only inherent device types * Applied IDF code formatting * Updated header file order to include first the most generic to more specific
363 lines
24 KiB
C
363 lines
24 KiB
C
// Copyright (c) 2021 Vladimir Chistyakov
|
||
//
|
||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
// of this software and associated documentation files (the "Software"), to deal
|
||
// in the Software without restriction, including without limitation the rights
|
||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
// copies of the Software, and to permit persons to whom the Software is
|
||
// furnished to do so, subject to the following conditions:
|
||
//
|
||
// The above copyright notice and this permission notice shall be included in
|
||
// all copies or substantial portions of the Software.
|
||
//
|
||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||
// SOFTWARE.
|
||
#pragma once
|
||
|
||
|
||
typedef enum {
|
||
KSZ8851_CCR = 0x08, ///< Chip Configuration Register
|
||
KSZ8851_MARL = 0x10, ///< Host MAC Address Register Low
|
||
KSZ8851_MARM = 0x12, ///< Host MAC Address Register Middle
|
||
KSZ8851_MARH = 0x14, ///< Host MAC Address Register High
|
||
KSZ8851_OBCR = 0x20, ///< On-Chip Bus Control Register
|
||
KSZ8851_EEPCR = 0x22, ///< EEPROM Control Register
|
||
KSZ8851_MBIR = 0x24, ///< Memory Built-In Self-Test (BIST) Info Register
|
||
KSZ8851_GRR = 0x26, ///< Global Reset Register
|
||
KSZ8851_WFCR = 0x2A, ///< Wakeup Frame Control Register
|
||
KSZ8851_WF0CRC0 = 0x30, ///< Wakeup Frame 0 CRC0 Register (lower 16 bits)
|
||
KSZ8851_WF0CRC1 = 0x32, ///< Wakeup Frame 0 CRC1 Register (upper 16 bits)
|
||
KSZ8851_WF0BM0 = 0x34, ///< Wakeup Frame 0 Byte Mask 0 Register (0-15)
|
||
KSZ8851_WF0BM1 = 0x36, ///< Wakeup Frame 0 Byte Mask 1 Register (16-31)
|
||
KSZ8851_WF0BM2 = 0x38, ///< Wakeup Frame 0 Byte Mask 2 Register (32-47)
|
||
KSZ8851_WF0BM3 = 0x3A, ///< Wakeup Frame 0 Byte Mask 3 Register (48-63)
|
||
KSZ8851_WF1CRC0 = 0x40, ///< Wakeup Frame 1 CRC0 Register (lower 16 bits)
|
||
KSZ8851_WF1CRC1 = 0x42, ///< Wakeup Frame 1 CRC1 Register (upper 16 bits)
|
||
KSZ8851_WF1BM0 = 0x44, ///< Wakeup Frame 1 Byte Mask 0 Register (0-15)
|
||
KSZ8851_WF1BM1 = 0x46, ///< Wakeup Frame 1 Byte Mask 1 Register (16-31)
|
||
KSZ8851_WF1BM2 = 0x48, ///< Wakeup Frame 1 Byte Mask 2 Register (32-47)
|
||
KSZ8851_WF1BM3 = 0x4A, ///< Wakeup Frame 1 Byte Mask 3 Register (48-63)
|
||
KSZ8851_WF2CRC0 = 0x50, ///< Wakeup Frame 2 CRC0 Register (lower 16 bits)
|
||
KSZ8851_WF2CRC1 = 0x52, ///< Wakeup Frame 2 CRC1 Register (upper 16 bits)
|
||
KSZ8851_WF2BM0 = 0x54, ///< Wakeup Frame 2 Byte Mask 0 Register (0-15)
|
||
KSZ8851_WF2BM1 = 0x56, ///< Wakeup Frame 2 Byte Mask 1 Register (16-31)
|
||
KSZ8851_WF2BM2 = 0x58, ///< Wakeup Frame 2 Byte Mask 2 Register (32-47)
|
||
KSZ8851_WF2BM3 = 0x5A, ///< Wakeup Frame 2 Byte Mask 3 Register (48-63)
|
||
KSZ8851_WF3CRC0 = 0x60, ///< Wakeup Frame 3 CRC0 Register (lower 16 bits)
|
||
KSZ8851_WF3CRC1 = 0x62, ///< Wakeup Frame 3 CRC1 Register (upper 16 bits)
|
||
KSZ8851_WF3BM0 = 0x64, ///< Wakeup Frame 3 Byte Mask 0 Register (0-15)
|
||
KSZ8851_WF3BM1 = 0x66, ///< Wakeup Frame 3 Byte Mask 1 Register (16-31)
|
||
KSZ8851_WF3BM2 = 0x68, ///< Wakeup Frame 3 Byte Mask 2 Register (32-47)
|
||
KSZ8851_WF3BM3 = 0x6A, ///< Wakeup Frame 3 Byte Mask 3 Register (48-63)
|
||
KSZ8851_TXCR = 0x70, ///< Transmit Control Register
|
||
KSZ8851_TXSR = 0x72, ///< Transmit Status Register
|
||
KSZ8851_RXCR1 = 0x74, ///< Receive Control Register 1
|
||
KSZ8851_RXCR2 = 0x76, ///< Receive Control Register 2
|
||
KSZ8851_TXMIR = 0x78, ///< TXQ Memory Information Register
|
||
KSZ8851_RXFHSR = 0x7C, ///< Receive Frame Header Status Register
|
||
KSZ8851_RXFHBCR = 0x7E, ///< Receive Frame Header Byte Count Register
|
||
KSZ8851_TXQCR = 0x80, ///< TXQ Command Register
|
||
KSZ8851_RXQCR = 0x82, ///< RXQ Command Register
|
||
KSZ8851_TXFDPR = 0x84, ///< TX Frame Data Pointer Register
|
||
KSZ8851_RXFDPR = 0x86, ///< RX Frame Data Pointer Register
|
||
KSZ8851_RXDTTR = 0x8C, ///< RX Duration Timer Threshold Register
|
||
KSZ8851_RXDBCTR = 0x8E, ///< RX Data Byte Count Threshold Register
|
||
KSZ8851_IER = 0x90, ///< Interrupt Enable Register
|
||
KSZ8851_ISR = 0x92, ///< Interrupt Status Register
|
||
KSZ8851_RXFCTR = 0x9C, ///< RX Frame Count & Threshold Register
|
||
KSZ8851_TXNTFSR = 0x9E, ///< TX Next Total Frames Size Register
|
||
KSZ8851_MAHTR0 = 0xA0, ///< MAC Address Hash Table Register 0
|
||
KSZ8851_MAHTR1 = 0xA2, ///< MAC Address Hash Table Register 1
|
||
KSZ8851_MAHTR2 = 0xA4, ///< MAC Address Hash Table Register 2
|
||
KSZ8851_MAHTR3 = 0xA6, ///< MAC Address Hash Table Register 3
|
||
KSZ8851_FCLWR = 0xB0, ///< Flow Control Low Watermark Register
|
||
KSZ8851_FCHWR = 0xB2, ///< Flow Control High Watermark Register
|
||
KSZ8851_FCOWR = 0xB4, ///< Flow Control Overrun Watermark Register
|
||
KSZ8851_CIDER = 0xC0, ///< Chip ID and Enable Register
|
||
KSZ8851_CGCR = 0xC6, ///< Chip Global Control Register
|
||
KSZ8851_IACR = 0xC8, ///< Indirect Access Control Register
|
||
KSZ8851_IADLR = 0xD0, ///< Indirect Access Data Low Register
|
||
KSZ8851_IADHR = 0xD2, ///< Indirect Access Data High Register
|
||
KSZ8851_PMECR = 0xD4, ///< Power Management Event Control Register
|
||
KSZ8851_GSWUTR = 0xD6, ///< Go-Sleep & Wake-Up Time Register
|
||
KSZ8851_PHYRR = 0xD8, ///< PHY Reset Register
|
||
KSZ8851_P1MBCR = 0xE4, ///< PHY 1 MII-Register Basic Control Register
|
||
KSZ8851_P1MBSR = 0xE6, ///< PHY 1 MII-Register Basic Status Register
|
||
KSZ8851_PHY1ILR = 0xE8, ///< PHY 1 PHY ID Low Register
|
||
KSZ8851_PHY1IHR = 0xEA, ///< PHY 1 PHY ID High Register
|
||
KSZ8851_P1ANAR = 0xEC, ///< PHY 1 Auto-Negotiation Advertisement Register
|
||
KSZ8851_P1ANLPR = 0xEE, ///< PHY 1 Auto-Negotiation Link Partner Ability Register
|
||
KSZ8851_P1SCLMD = 0xF4, ///< Port 1 PHY Special Control/Status, LinkMD
|
||
KSZ8851_P1CR = 0xF6, ///< Port 1 Control Register
|
||
KSZ8851_P1SR = 0xF8, ///< Port 1 Status Register
|
||
KSZ8851_VALID_ADDRESS_MASK = 0xFE, ///< All register addresses are under this mask
|
||
} ksz8851_registers_t;
|
||
|
||
typedef enum {
|
||
CCR_EEPROM_PRESENCE = 0x0200U, ///< RO EEPROM presence
|
||
CCR_SPI_BUS_MODE = 0x0100U, ///< RO SPI bus mode
|
||
CCR_32PIN_CHIP_PACKAGE = 0x0001U, ///< RO 32-Pin Chip Package
|
||
|
||
OBCR_OUTPUT_PIN_DRIVE_STRENGTH = 0x0040U, ///< RW Output Pin Drive Strength: 8mA (0) or 16mA (1)
|
||
OBCR_ONCHIP_BUS_CLOCK_SELECTION = 0X0004U, ///< RW On-Chip Bus Clock Selection: 125MHz (0)
|
||
OBCR_ONCHIP_BUS_CLOCK_DIVIDE_BY_1 = 0x0000U, ///< RW On-Chip Bus Clock Divider Selection
|
||
OBCR_ONCHIP_BUS_CLCOK_DIVIDE_BY_2 = 0x0001U, ///< Rw On-Chip Bus Clock Divider Selection
|
||
OBCR_ONCHIP_BUS_CLCOK_DIVIDE_BY_3 = 0x0002U, ///< RW On-Chip Bus Clock Divider Selection
|
||
|
||
EEPCR_EESRWA = 0x0020U, ///< RW EEPROM Software Read (0) or Write (1) Access
|
||
EEPCR_EESA = 0x0010U, ///< RW EEPROM Software Access
|
||
EEPCR_EESB = 0x0008U, ///< RO EEPROM Data receive
|
||
EEPCR_EECB2 = 0x0004U, ///< RW EEPROM Data transmit
|
||
EEPCR_EECB1 = 0x0002U, ///< RW EEPROM Serial clock
|
||
EEPCR_EECB0 = 0x0001U, ///< RW EEPROM Chip select
|
||
|
||
MBIR_TXMBF = 0x1000U, ///< RO TX Memory BIST Test Finish
|
||
MBIR_TXMBFA = 0x0800U, ///< RO TX Memory BIST Test Fail
|
||
MBIR_TXMBFC_SHIFT = 8U, ///< RO TX Memory BIST Test Fail Count Shift
|
||
MBIR_TXMBFC_MASK = 0x7 << MBIR_TXMBFC_SHIFT, ///< RO TX Memory BIST Test Fail Count Mask
|
||
MBIR_RXMBF = 0x0010U, ///< RO RX Memory Bist Finish
|
||
MBIR_RXMBFA = 0x0008U, ///< RO RX Memory Bist Fail
|
||
MBIR_RXMBFC = 0x7U, ///< RO RX Memory BIST Test Fail Count
|
||
|
||
GRR_QMU_MODULE_SOFT_RESET = 0x0002U, ///< RW QMU Module Soft Reset
|
||
GRR_GLOBAL_SOFT_RESET = 0x0001U, ///< Rw Global Soft Reset
|
||
|
||
WFCR_MPRXE = 0x0080U, ///< RW Magic Packet RX Enable
|
||
WFCR_WF3E = 0x0008U, ///< RW Wake up Frame 3 Enable
|
||
WFCR_WF2E = 0x0004U, ///< RW Wake up Frame 2 Enable
|
||
WFCR_WF1E = 0x0002U, ///< RW Wake up Frame 1 Enable
|
||
WFCR_WF0E = 0x0001U, ///< RW Wake up Frame 0 Enable
|
||
|
||
TXCR_TCGICMP = 0x0100U, ///< RW Transmit Checksum Generation for ICMP
|
||
TXCR_TCGTCP = 0x0040U, ///< RW Transmit Checksum Generation for TCP
|
||
TXCR_TCGIP = 0x0020U, ///< RW Transmit Checksum Generation for IP
|
||
TXCR_FTXQ = 0x0010U, ///< RW Flush Transmit Queue
|
||
TXCR_TXFCE = 0x0008U, ///< RW Transmit Flow Control Enable
|
||
TXCR_TXPE = 0x0004U, ///< RW Transmit Padding Enable
|
||
TXCR_TXCE = 0x0002U, ///< RW Transmit CRC Enable
|
||
TXCR_TXE = 0x0001U, ///< RW Transmit Enable
|
||
|
||
TXSR_TXLC = 0x2000U, ///< RO Transmit Late Collision
|
||
TXSR_TXMC = 0x1000U, ///< RO Transmit Maximum Collision
|
||
TXSR_TXFID_MASK = 0x003FU, ///< RO Transmit Frame ID Mask
|
||
|
||
RXCR1_FRXQ = 0x8000U, ///< RW Flush Receive Queue
|
||
RXCR1_RXUDPFCC = 0x4000U, ///< RW Receive UDP Frame Checksum Check Enable
|
||
RXCR1_RXTCPFCC = 0x2000U, ///< RW Receive TCP Frame Checksum Check Enable
|
||
RXCR1_RXIPFCC = 0x1000U, ///< RW Receive IP Frame Checksum Check Enable
|
||
RXCR1_RXPAFMA = 0x0800U, ///< RW Receive Physical Address Filtering with MAC Address Enable
|
||
RXCR1_RXFCE = 0x0400U, ///< RW Receive Flow Control Enable
|
||
RXCR1_RXEFE = 0x0200U, ///< RW Receive Error Frame Enable
|
||
RXCR1_RXMAFMA = 0x0100U, ///< RW Receive Multicast Address Filtering with MAC Address Enable
|
||
RXCR1_RXBE = 0x0080U, ///< RW Receive Broadcast Enable
|
||
RXCR1_RXME = 0x0040U, ///< RW Receive Multicast Enable
|
||
RXCR1_RXUE = 0x0020U, ///< RW Receive Unicast Enable
|
||
RXCR1_RXAE = 0x0010U, ///< RW Receive All Enable
|
||
RXCR1_RXINVF = 0x0002U, ///< RW Receive Inverse Filtering
|
||
RXCR1_RXE = 0x0001U, ///< RW Receive Enable
|
||
|
||
RXCR2_SRDBL_SHIFT = 5U, ///< WO SPI Receive Data Burst Length: 4/8/16/32/frame (0-4)
|
||
RXCR2_IUFFP = 0x0010U, ///< RW IPv4/IPv6/UDP Fragment Frame Pass
|
||
RXCR2_RXIUFCEZ = 0x0008U, ///< RW Receive IPv4/IPv6/UDP Frame Checksum Equal Zero
|
||
RXCR2_UDPLFE = 0x0004U, ///< RW Lite Frame Enable
|
||
RXCR2_RXICMPFCC = 0x0002U, ///< RW Receive ICMP Frame Checksum Check Enable
|
||
RXCR2_RXSAF = 0x0001U, ///< RW Receive Source Address Filtering
|
||
|
||
TXMIR_TXMA_MASK = 0x1FFFU, ///< RO Transmit Memory Available Mask
|
||
|
||
RXFHSR_RXFV = 0x8000U, ///< RO Receive Frame Valid
|
||
RXFHSR_RXICMPFCS = 0x2000U, ///< RO Receive ICMP Frame Checksum Status
|
||
RXFHSR_RXIPFCS = 0x1000U, ///< RO Receive IP Frame Checksum Status
|
||
RXFHSR_RXTCPFCS = 0x0800U, ///< RO Receive TCP Frame Checksum Status
|
||
RXFHSR_RXUDPFCS = 0x0400U, ///< RO Receive UDP Frame Checksum Status
|
||
RXFHSR_RXBF = 0x0080U, ///< RO Receive Broadcast Frame
|
||
RXFHSR_RXMF = 0x0040U, ///< RO Receive Multicast Frame
|
||
RXFHSR_RXUF = 0x0020U, ///< RO Receive Unicast Frame
|
||
RXFHSR_RXMR = 0x0010U, ///< RO Receive MII Error
|
||
RXFHSR_RXFT = 0x0008U, ///< RO Receive Frame Type
|
||
RXFHSR_RXFTL = 0x0004U, ///< RO Receive Frame Too Long
|
||
RXFHSR_RXRF = 0x0002U, ///< RO Receive Runt Frame
|
||
RXFHSR_RXCE = 0x0001U, ///< RO Receive CRC Error
|
||
|
||
RXFHBCR_RXBC_MASK = 0x0FFFU, ///< RO Receive Byte Count Mask
|
||
|
||
TXQCR_AETFE = 0x0004U, ///< RW Auto-Enqueue TXQ Frame Enable
|
||
TXQCR_TXQMAM = 0x0002U, ///< RW TXQ Memory Available Monitor
|
||
TXQCR_METFE = 0x0001U, ///< RW (SC) Manual Enqueue TXQ Frame Enable
|
||
|
||
RXQCR_RXDTTS = 0x1000U, ///< RO RX Duration Timer Threshold Status
|
||
RXQCR_RXDBCTS = 0x0800U, ///< RO RX Data Byte Count Threshold Status
|
||
RXQCR_RXFCTS = 0x0400U, ///< RO RX Frame Count Threshold Status
|
||
RXQCR_RXIPHTOE = 0x0200U, ///< RW RX IP Header Two-Byte Offset Enable
|
||
RXQCR_RXDTTE = 0x0080U, ///< RW RX Duration Timer Threshold Enable
|
||
RXQCR_RXDBCTE = 0x0040U, ///< RW RX Data Byte Count Threshold Enable
|
||
RXQCR_RXFCTE = 0x0020U, ///< RW RX Frame Count Threshold Enable
|
||
RXQCR_ADRFE = 0x0010U, ///< RW Auto-Dequeue RXQ Frame Enable
|
||
RXQCR_SDA = 0x0008U, ///< WO Start DMA Access
|
||
RXQCR_RRXEF = 0x0001U, ///< RW Release RX Error Frame
|
||
|
||
TXFDPR_TXFPAI = 0x4000U, ///< RW TX Frame Data Pointer Auto Increment
|
||
TXFDPR_TXFP_MASK = 0x07FFU, ///< RO TX Frame Pointer Mask
|
||
|
||
RXFDPR_RXFPAI = 0x4000U, ///< RW RX Frame Pointer Auto Increment
|
||
RXFDPR_RXFP_MASK = 0x07FFU, ///< WO RX Frame Pointer Mask
|
||
|
||
IER_LCIE = 0x8000U, ///< RW Link Change Interrupt Enable
|
||
IER_TXIE = 0x4000U, ///< RW Transmit Interrupt Enable
|
||
IER_RXIE = 0x2000U, ///< RW Receive Interrupt Enable
|
||
IER_RXOIE = 0x0800U, ///< RW Receive Overrun Interrupt Enable
|
||
IER_TXPSIE = 0x0200U, ///< RW Transmit Process Stopped Interrupt Enable
|
||
IER_RXPSIE = 0x0100U, ///< RW Receive Process Stopped Interrupt Enable
|
||
IER_TXSAIE = 0x0040U, ///< RW Transmit Space Available Interrupt Enable
|
||
IER_RXWFDIE = 0x0020U, ///< RW Receive Wake-up Frame Detect Interrupt Enable
|
||
IER_RXMPDIE = 0x0010U, ///< RW Receive Magic Packet Detect Interrupt Enable
|
||
IER_LDIE = 0x0008U, ///< RW Linkup Detect Interrupt Enable
|
||
IER_EDIE = 0x0004U, ///< RW Energy Detect Interrupt Enable
|
||
IER_SPIBEIE = 0x0002U, ///< RW SPI Bus Error Interrupt Enable
|
||
IER_DEDIE = 0x0001U, ///< RW Delay Energy Detect Interrupt Enable
|
||
|
||
ISR_LCIS = 0x8000U, ///< RO (W1C) Link Change Interrupt Status
|
||
ISR_TXIS = 0x4000U, ///< RO (W1C) Transmit Interrupt Status
|
||
ISR_RXIS = 0x2000U, ///< RO (W1C) Receive Interrupt Status
|
||
ISR_RXOIS = 0x0800U, ///< RO (W1C) Receive Overrun Interrupt Status
|
||
ISR_TXPSIS = 0x0200U, ///< RO (W1C) Transmit Process Stopped Interrupt Status
|
||
ISR_RXPSIS = 0x0100U, ///< RO (W1C) Receive Process Stopped Interrupt Status
|
||
ISR_TXSAIS = 0x0040U, ///< RO (W1C) Transmit Space Available Interrupt Status
|
||
ISR_RXWFDIS = 0x0020U, ///< RO (W1C) Receive Wakeup Frame Detect Interrupt Status
|
||
ISR_RXMPDIS = 0x0010U, ///< RO (W1C) Receive Magic Packet Detect Interrupt Status
|
||
ISR_LDIS = 0x0008U, ///< RO (W1C) Linkup Detect Interrupt Status
|
||
ISR_EDIS = 0x0004U, ///< RO (W1C) Energy Detect Interrupt Status
|
||
ISR_SPIBEIS = 0x0002U, ///< RO (W1C) SPI Bus Error Interrupt Status
|
||
ISR_ALL = 0xFFFFU, ///< WO Clear register value
|
||
|
||
RXFCTR_RXFC_SHIFT = 8U, ///< RO RX Frame Count Shift
|
||
RXFCTR_RXFC_MASK = 0xFF << RXFCTR_RXFC_SHIFT, ///< RO RX Frame Count Mask
|
||
RXFCTR_RXFCT_MASK = 0xFFU, ///< RW Receive Frame Count Threshold
|
||
|
||
FCLWR_MASK = 0x0FFFU, ///< RW Flow Control Low Watermark Configuration Mask
|
||
FCHWR_MASK = 0x0FFFU, ///< RW Flow Control High Watermark Configuration Mask
|
||
FCOWR_MASK = 0x0FFFU, ///< RW Flow Control Overrun Watermark Configuration Mask
|
||
|
||
CIDER_KSZ8851SNL_FAMILY_ID = 0x88U, ///< KSZ8851SNL Family ID
|
||
CIDER_KSZ8851SNL_CHIP_ID = 0x7U, ///< KSZ8851SNL Chip ID
|
||
CIDER_FAMILY_ID_SHIFT = 8U, ///< RO Family ID Shift
|
||
CIDER_FAMILY_ID_MASK = 0xFF << CIDER_FAMILY_ID_SHIFT, ///< RO Family ID Mask
|
||
CIDER_CHIP_ID_SHIFT = 4U, ///< RO Chip ID Shift
|
||
CIDER_CHIP_ID_MASK = 0xF << CIDER_CHIP_ID_SHIFT, ///< RO Chip ID Mask
|
||
CIDER_REVISION_ID_SHIFT = 1U, ///< RO Revision ID Shift
|
||
CIDER_REVISION_ID_MASK = 0x7 << CIDER_REVISION_ID_SHIFT, ///< RO Revision ID Mask
|
||
|
||
CGCR_LEDSEL0 = 0x0200U, ///< RW PHY LED Mode: 0 - 100BT + LINK/ACTU, 1 - ACT + LINK
|
||
|
||
IACR_READ_ENABLE = 0x1000U, ///< RW Read Enable
|
||
IACR_MIB_COUNTER_SELECT = 0x0C00U, ///< RW Table Select
|
||
IACR_INDIRECT_ADDRESS_MASK = 0x001FU, ///< RW Indirect Address Mask
|
||
|
||
PMECR_PME_DELAY_ENABLE = 0x4000U, ///< RW PME Delay Enable
|
||
PMECR_PME_OUTPUT_POLARITY = 0x1000U, ///< RW PME Output Polarity
|
||
PMECR_WUP_FRAME_EN = 0x0800U, ///< RW Wake-on-LAN to PME Output Enable receive wake-up frame
|
||
PMECR_MAGIC_PACKET = 0x0400U, ///< RW Wake-on-LAN to PME Output Enable receive magic packet
|
||
PMECR_LINK_CHANGE_TO_UP = 0x0200U, ///< RW Wake-on-LAN to PME Output Enable link change to up
|
||
PMECR_SIGNAL_ENERGY_DETECTED = 0x0100U, ///< RW Wake-on-LAN to PME Output Enable energy detected
|
||
PMECR_AUTO_WAKEUP_ENABLE = 0x0080U, ///< RW Auto Wake-Up Enable
|
||
PMECR_WAKEUP_TO_NORMAL = 0x0040U, ///< RW Wake-Up to Normal Operation Mode
|
||
PMECR_WAKEUP_FRAME_EVENT = 0x0020U, ///< RO (W1C) Wake-Up Event Indication wakeup frame event detected
|
||
PMECR_WAKEUP_MAGIC_PACKET = 0x0010U, ///< RO (W1C) Wake-Up Event Indication magic packet event detected
|
||
PMECR_WAKEUP_LINK = 0x0008U, ///< RO (W1C) Wake-Up Event Indication link up event detected
|
||
PMECR_WAKEUP_ENERGY = 0x0004U, ///< RO (W1C) Wake-Up Event Indication energy event detected
|
||
PMECR_PME_MODE_MASK = 0x0003U, ///< RW Power Management Mode Mask
|
||
PMECR_PME_MODE_NORMAL = 0x0000U, ///< RW Normal Operation Mode
|
||
PMECR_PME_MODE_ENERGY_DETECT = 0x0001U, ///< RW Energy Detect Mode
|
||
PMECR_PME_MODE_SOFT_POWER_DOWN = 0x0002U, ///< RW Soft Power Down Mode
|
||
PMECR_PME_MODE_POWER_SAVING = 0x0003U, ///< RW Power Saving Mode
|
||
|
||
GSWUTR_WAKE_UP_TIME_SHIFT = 8U, ///< RW Wake-up Time Shift
|
||
GSWUTR_WAKE_UP_TIME_MASK = 0xFF << GSWUTR_WAKE_UP_TIME_SHIFT, ///< RW Wake-up Time Mask
|
||
GSWUTR_GO_SLEEP_TIME_MASK = 0x0003U, ///< RW Go-sleep Time Mask
|
||
|
||
PHYRR_PHY_RESET = 0x0001U, ///< WO (SC) PHY Reset Bit
|
||
|
||
P1MBCR_LOCAL_LOOPBACK = 0x4000U, ///< RW Local (far-end) loopback (llb)
|
||
P1MBCR_FORCE100 = 0x2000U, ///< RW Force 100
|
||
P1MBCR_AN_ENABLE = 0x1000U, ///< RW AN Enable
|
||
P1MBCR_RESTART_AN = 0x0200U, ///< RW Restart AN
|
||
P1MBCR_FORCE_FULL_DUPLEX = 0x0100U, ///< RW Force Full-Duplex
|
||
P1MBCR_HP_MDIX = 0x0020U, ///< RW HP Auto MDI-X mode
|
||
P1MBCR_FORCE_MDIX = 0x0010U, ///< RWForce MDI-X
|
||
P1MBCR_DISABLE_MDIX = 0x0008U, ///< RW Disable MDI-X
|
||
P1MBCR_DISABLE_TRANSMIT = 0x0002U, ///< RW Disable Transmit
|
||
P1MBCR_DISABLE_LED = 0x0001U, ///< RW Disable LED
|
||
|
||
P1MBSR_T4_CAPABLE = 0x8000U, ///< RO T4 Capable
|
||
P1MBSR_100_FULL_CAPABLE = 0x4000U, ///< RO 100 Full Capable
|
||
P1MBSR_100_HALF_CAPABLE = 0x2000U, ///< RO 100 Half Capable
|
||
P1MBSR_10_FULL_CAPABLE = 0x1000U, ///< RO 10 Full Capable
|
||
P1MBSR_10_HALF_CAPABLE = 0x0800U, ///< RO 10 Half Capable
|
||
P1MBSR_PREAMBLE_SUPPRESSED = 0x0040U, ///< RO Preamble suppressed (not supported)
|
||
P1MBSR_AN_COMPLETE = 0x0020U, ///< RO AN Complete
|
||
P1MBSR_AN_CAPABLE = 0x0008U, ///< RO AN Capable
|
||
P1MBSR_LINK_STATUS = 0x0004U, ///< RO Link Status
|
||
P1MBSR_JABBER_TEST = 0x0002U, ///< RO Jabber test (not supported)
|
||
P1MBSR_EXTENDED_CAPABLE = 0x0001U, ///< RO Extended Capable
|
||
|
||
P1ANAR_NEXT_PAGE = 0x8000U, ///< RO Next page (not supported)
|
||
P1ANAR_REMOTE_FAULT = 0x2000U, ///< RO Remote fault (not supported)
|
||
P1ANAR_PAUSE = 0x0400U, ///< RW Pause (flow control capability)
|
||
P1ANAR_ADV_100_FULL = 0x0100U, ///< RW Adv 100 Full
|
||
P1ANAR_ADV_100_HALF = 0x0080U, ///< RW Adv 100 Half
|
||
P1ANAR_ADV_10_FULL = 0x0040U, ///< RW Adv 10 Full
|
||
P1ANAR_ADV_10_HALF = 0x0020U, ///< RW Adv 10 Half
|
||
|
||
P1ANLPR_NEXT_PAGE = 0x8000U, ///< RO Next page (not supported)
|
||
P1ANLPR_LP_ACK = 0x4000U, ///< RO LP ACK (not suppported)
|
||
P1ANLPR_REMOTE_FAULT = 0x2000U, ///< RO Remote fault (not supported)
|
||
P1ANLPR_PAUSE = 0x0400U, ///< RO Pause
|
||
P1ANLPR_ADV_100_FULL = 0x0100U, ///< RO Adv 100 Full
|
||
P1ANLPR_ADV_100_HALF = 0x0080U, ///< RO Adv 100 Half
|
||
P1ANLPR_ADV_10_FULL = 0x0040U, ///< RO Adv 10 Full
|
||
P1ANLPR_ADV_10_HALF = 0x0020U, ///< RO Adv 10 Half
|
||
|
||
P1SCLMD_VCT_RESULT_SHIFT = 13U, ///< RO VCT result Shift
|
||
P1SCLMD_VCT_RESULT_MASK = 0x3 << P1SCLMD_VCT_RESULT_SHIFT, ///< RO VCT result Mask
|
||
P1SCLMD_VCT_RESULT_NORMAL = 0x0U, ///< RO VCT result normal condition
|
||
P1SCLMD_VCT_RESULT_OPEN = 0x1U, ///< RO VCT result open cable condition
|
||
P1SCLMD_VCT_RESULT_SHORT = 0x2U, ///< RO VCT result short cable condition
|
||
P1SCLMD_VCT_RESULT_TEST_FAILED = 0x3U, ///< RO VCT result test failed
|
||
P1SCLMD_VCT_ENABLE = 0x1000U, ///< RW (SC) VCT Enable
|
||
P1SCLMD_FORCE_LINK = 0x0800U, ///< RW Force link
|
||
P1SCLMD_REMOTE_LOOPBACK = 0x0200U, ///< RW Remote (Near-end) loopback (rlb)
|
||
P1SCLMD_VCT_FAULT_COUNT_MASK = 0x1FU, ///< RO Distance to the fault * 0.4m
|
||
|
||
P1CR_LED_OFF = 0x8000U, ///< RW Turn off all of the port 1 LEDs
|
||
P1CR_TXIDS = 0x4000U, ///< RW Disable the port’s transmitter.
|
||
P1CR_RESTART_AN = 0x2000U, ///< RW Restart AN
|
||
P1CR_DISABLE_AUTO_MDI_MDIX = 0x0400U, ///< RW Disable auto MDI/MDI-X
|
||
P1CR_FORCE_MDIX = 0x0200U, ///< RW Force MDI-X
|
||
P1CR_AUTO_NEGOTIATION_ENABLE = 0x0080U, ///< RW Auto Negotiation Enable
|
||
P1CR_FORCE_SPEED = 0x0040U, ///< RW Force Speed 100
|
||
P1CR_FORCE_DUPLEX = 0x0020U, ///< RW Force Full Duplex
|
||
P1CR_ADVERTISED_FLOW_CONTROL_CAPABILITY = 0x0010U, ///< RW Advertise flow control capability
|
||
P1CR_ADVERTISED_100BT_FULL_DUPLEX_CAPABILITY = 0x0008U, ///< RW Advertise 100BT full-duplex capability
|
||
P1CR_ADVERTISED_100BT_HALF_DUPLEX_CAPABILITY = 0x0004U, ///< RW Advertise 100BT half-duplex capability
|
||
P1CR_ADVERTISED_10BT_FULL_DUPLEX_CAPABILITY = 0x0002U, ///< RW Advertise 10BT full-duplex capability
|
||
P1CR_ADVERTISED_10BT_HALF_DUPLEX_CAPABILITY = 0x0001U, ///< RW Advertise 10BT half-duplex capability
|
||
|
||
P1SR_HP_MDIX = 0x8000U, ///< RW HP Auto MDI-X mode
|
||
P1SR_POLARITY_REVERSE = 0x2000U, ///< RO Polarity Reverse
|
||
P1SR_OPERATION_SPEED = 0x0400U, ///< RO Operation Speed 100
|
||
P1SR_OPERATION_DUPLEX = 0x0200U, ///< RO Operation Duplex Full
|
||
P1SR_MDIX_STATUS = 0x0080U, ///< RO MDI status
|
||
P1SR_AN_DONE = 0x0040U, ///< RO AN Done
|
||
P1SR_LINK_GOOD = 0x0020U, ///< RO Link Good
|
||
P1SR_PARTNER_FLOW_CONTROL_CAPABILITY = 0x0010U, ///< RO Partner flow control capability
|
||
P1SR_PARTNER_100BT_FULL_DUPLEX_CAPABILITY = 0x0008U, ///< RO Partner 100BT full-duplex capability
|
||
P1SR_PARTNER_100BT_HALF_DUPLEX_CAPABILITY = 0x0004U, ///< RO Partner 100BT half-duplex capability
|
||
P1SR_PARTNER_10BT_FULL_DUPLEX_CAPABILITY = 0x0002U, ///< RO Partner 10BT full-duplex capability
|
||
P1SR_PARTNER_10BT_HALF_DUPLEX_CAPABILITY = 0x0001U, ///< RO Partner 10BT half-duplex capability
|
||
} ksz8851_register_bits_t;
|