162306a36Sopenharmony_ci/* Copyright © 2005 Agere Systems Inc. 262306a36Sopenharmony_ci * All rights reserved. 362306a36Sopenharmony_ci * http://www.agere.com 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * SOFTWARE LICENSE 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * This software is provided subject to the following terms and conditions, 862306a36Sopenharmony_ci * which you should read carefully before using the software. Using this 962306a36Sopenharmony_ci * software indicates your acceptance of these terms and conditions. If you do 1062306a36Sopenharmony_ci * not agree with these terms and conditions, do not use the software. 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * Copyright © 2005 Agere Systems Inc. 1362306a36Sopenharmony_ci * All rights reserved. 1462306a36Sopenharmony_ci * 1562306a36Sopenharmony_ci * Redistribution and use in source or binary forms, with or without 1662306a36Sopenharmony_ci * modifications, are permitted provided that the following conditions are met: 1762306a36Sopenharmony_ci * 1862306a36Sopenharmony_ci * . Redistributions of source code must retain the above copyright notice, this 1962306a36Sopenharmony_ci * list of conditions and the following Disclaimer as comments in the code as 2062306a36Sopenharmony_ci * well as in the documentation and/or other materials provided with the 2162306a36Sopenharmony_ci * distribution. 2262306a36Sopenharmony_ci * 2362306a36Sopenharmony_ci * . Redistributions in binary form must reproduce the above copyright notice, 2462306a36Sopenharmony_ci * this list of conditions and the following Disclaimer in the documentation 2562306a36Sopenharmony_ci * and/or other materials provided with the distribution. 2662306a36Sopenharmony_ci * 2762306a36Sopenharmony_ci * . Neither the name of Agere Systems Inc. nor the names of the contributors 2862306a36Sopenharmony_ci * may be used to endorse or promote products derived from this software 2962306a36Sopenharmony_ci * without specific prior written permission. 3062306a36Sopenharmony_ci * 3162306a36Sopenharmony_ci * Disclaimer 3262306a36Sopenharmony_ci * 3362306a36Sopenharmony_ci * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 3462306a36Sopenharmony_ci * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF 3562306a36Sopenharmony_ci * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY 3662306a36Sopenharmony_ci * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN 3762306a36Sopenharmony_ci * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY 3862306a36Sopenharmony_ci * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 3962306a36Sopenharmony_ci * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 4062306a36Sopenharmony_ci * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 4162306a36Sopenharmony_ci * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT 4262306a36Sopenharmony_ci * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 4362306a36Sopenharmony_ci * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 4462306a36Sopenharmony_ci * DAMAGE. 4562306a36Sopenharmony_ci * 4662306a36Sopenharmony_ci */ 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci#define DRIVER_NAME "et131x" 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci/* EEPROM registers */ 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci/* LBCIF Register Groups (addressed via 32-bit offsets) */ 5362306a36Sopenharmony_ci#define LBCIF_DWORD0_GROUP 0xAC 5462306a36Sopenharmony_ci#define LBCIF_DWORD1_GROUP 0xB0 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci/* LBCIF Registers (addressed via 8-bit offsets) */ 5762306a36Sopenharmony_ci#define LBCIF_ADDRESS_REGISTER 0xAC 5862306a36Sopenharmony_ci#define LBCIF_DATA_REGISTER 0xB0 5962306a36Sopenharmony_ci#define LBCIF_CONTROL_REGISTER 0xB1 6062306a36Sopenharmony_ci#define LBCIF_STATUS_REGISTER 0xB2 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci/* LBCIF Control Register Bits */ 6362306a36Sopenharmony_ci#define LBCIF_CONTROL_SEQUENTIAL_READ 0x01 6462306a36Sopenharmony_ci#define LBCIF_CONTROL_PAGE_WRITE 0x02 6562306a36Sopenharmony_ci#define LBCIF_CONTROL_EEPROM_RELOAD 0x08 6662306a36Sopenharmony_ci#define LBCIF_CONTROL_TWO_BYTE_ADDR 0x20 6762306a36Sopenharmony_ci#define LBCIF_CONTROL_I2C_WRITE 0x40 6862306a36Sopenharmony_ci#define LBCIF_CONTROL_LBCIF_ENABLE 0x80 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci/* LBCIF Status Register Bits */ 7162306a36Sopenharmony_ci#define LBCIF_STATUS_PHY_QUEUE_AVAIL 0x01 7262306a36Sopenharmony_ci#define LBCIF_STATUS_I2C_IDLE 0x02 7362306a36Sopenharmony_ci#define LBCIF_STATUS_ACK_ERROR 0x04 7462306a36Sopenharmony_ci#define LBCIF_STATUS_GENERAL_ERROR 0x08 7562306a36Sopenharmony_ci#define LBCIF_STATUS_CHECKSUM_ERROR 0x40 7662306a36Sopenharmony_ci#define LBCIF_STATUS_EEPROM_PRESENT 0x80 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci/* START OF GLOBAL REGISTER ADDRESS MAP */ 7962306a36Sopenharmony_ci/* 10bit registers 8062306a36Sopenharmony_ci * 8162306a36Sopenharmony_ci * Tx queue start address reg in global address map at address 0x0000 8262306a36Sopenharmony_ci * tx queue end address reg in global address map at address 0x0004 8362306a36Sopenharmony_ci * rx queue start address reg in global address map at address 0x0008 8462306a36Sopenharmony_ci * rx queue end address reg in global address map at address 0x000C 8562306a36Sopenharmony_ci */ 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci/* structure for power management control status reg in global address map 8862306a36Sopenharmony_ci * located at address 0x0010 8962306a36Sopenharmony_ci * jagcore_rx_rdy bit 9 9062306a36Sopenharmony_ci * jagcore_tx_rdy bit 8 9162306a36Sopenharmony_ci * phy_lped_en bit 7 9262306a36Sopenharmony_ci * phy_sw_coma bit 6 9362306a36Sopenharmony_ci * rxclk_gate bit 5 9462306a36Sopenharmony_ci * txclk_gate bit 4 9562306a36Sopenharmony_ci * sysclk_gate bit 3 9662306a36Sopenharmony_ci * jagcore_rx_en bit 2 9762306a36Sopenharmony_ci * jagcore_tx_en bit 1 9862306a36Sopenharmony_ci * gigephy_en bit 0 9962306a36Sopenharmony_ci */ 10062306a36Sopenharmony_ci#define ET_PM_PHY_SW_COMA 0x40 10162306a36Sopenharmony_ci#define ET_PMCSR_INIT 0x38 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci/* Interrupt status reg at address 0x0018 10462306a36Sopenharmony_ci */ 10562306a36Sopenharmony_ci#define ET_INTR_TXDMA_ISR 0x00000008 10662306a36Sopenharmony_ci#define ET_INTR_TXDMA_ERR 0x00000010 10762306a36Sopenharmony_ci#define ET_INTR_RXDMA_XFR_DONE 0x00000020 10862306a36Sopenharmony_ci#define ET_INTR_RXDMA_FB_R0_LOW 0x00000040 10962306a36Sopenharmony_ci#define ET_INTR_RXDMA_FB_R1_LOW 0x00000080 11062306a36Sopenharmony_ci#define ET_INTR_RXDMA_STAT_LOW 0x00000100 11162306a36Sopenharmony_ci#define ET_INTR_RXDMA_ERR 0x00000200 11262306a36Sopenharmony_ci#define ET_INTR_WATCHDOG 0x00004000 11362306a36Sopenharmony_ci#define ET_INTR_WOL 0x00008000 11462306a36Sopenharmony_ci#define ET_INTR_PHY 0x00010000 11562306a36Sopenharmony_ci#define ET_INTR_TXMAC 0x00020000 11662306a36Sopenharmony_ci#define ET_INTR_RXMAC 0x00040000 11762306a36Sopenharmony_ci#define ET_INTR_MAC_STAT 0x00080000 11862306a36Sopenharmony_ci#define ET_INTR_SLV_TIMEOUT 0x00100000 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci/* Interrupt mask register at address 0x001C 12162306a36Sopenharmony_ci * Interrupt alias clear mask reg at address 0x0020 12262306a36Sopenharmony_ci * Interrupt status alias reg at address 0x0024 12362306a36Sopenharmony_ci * 12462306a36Sopenharmony_ci * Same masks as above 12562306a36Sopenharmony_ci */ 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci/* Software reset reg at address 0x0028 12862306a36Sopenharmony_ci * 0: txdma_sw_reset 12962306a36Sopenharmony_ci * 1: rxdma_sw_reset 13062306a36Sopenharmony_ci * 2: txmac_sw_reset 13162306a36Sopenharmony_ci * 3: rxmac_sw_reset 13262306a36Sopenharmony_ci * 4: mac_sw_reset 13362306a36Sopenharmony_ci * 5: mac_stat_sw_reset 13462306a36Sopenharmony_ci * 6: mmc_sw_reset 13562306a36Sopenharmony_ci *31: selfclr_disable 13662306a36Sopenharmony_ci */ 13762306a36Sopenharmony_ci#define ET_RESET_ALL 0x007F 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci/* SLV Timer reg at address 0x002C (low 24 bits) 14062306a36Sopenharmony_ci */ 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci/* MSI Configuration reg at address 0x0030 14362306a36Sopenharmony_ci */ 14462306a36Sopenharmony_ci#define ET_MSI_VECTOR 0x0000001F 14562306a36Sopenharmony_ci#define ET_MSI_TC 0x00070000 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci/* Loopback reg located at address 0x0034 14862306a36Sopenharmony_ci */ 14962306a36Sopenharmony_ci#define ET_LOOP_MAC 0x00000001 15062306a36Sopenharmony_ci#define ET_LOOP_DMA 0x00000002 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci/* GLOBAL Module of JAGCore Address Mapping 15362306a36Sopenharmony_ci * Located at address 0x0000 15462306a36Sopenharmony_ci */ 15562306a36Sopenharmony_cistruct global_regs { /* Location: */ 15662306a36Sopenharmony_ci u32 txq_start_addr; /* 0x0000 */ 15762306a36Sopenharmony_ci u32 txq_end_addr; /* 0x0004 */ 15862306a36Sopenharmony_ci u32 rxq_start_addr; /* 0x0008 */ 15962306a36Sopenharmony_ci u32 rxq_end_addr; /* 0x000C */ 16062306a36Sopenharmony_ci u32 pm_csr; /* 0x0010 */ 16162306a36Sopenharmony_ci u32 unused; /* 0x0014 */ 16262306a36Sopenharmony_ci u32 int_status; /* 0x0018 */ 16362306a36Sopenharmony_ci u32 int_mask; /* 0x001C */ 16462306a36Sopenharmony_ci u32 int_alias_clr_en; /* 0x0020 */ 16562306a36Sopenharmony_ci u32 int_status_alias; /* 0x0024 */ 16662306a36Sopenharmony_ci u32 sw_reset; /* 0x0028 */ 16762306a36Sopenharmony_ci u32 slv_timer; /* 0x002C */ 16862306a36Sopenharmony_ci u32 msi_config; /* 0x0030 */ 16962306a36Sopenharmony_ci u32 loopback; /* 0x0034 */ 17062306a36Sopenharmony_ci u32 watchdog_timer; /* 0x0038 */ 17162306a36Sopenharmony_ci}; 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci/* START OF TXDMA REGISTER ADDRESS MAP */ 17462306a36Sopenharmony_ci/* txdma control status reg at address 0x1000 17562306a36Sopenharmony_ci */ 17662306a36Sopenharmony_ci#define ET_TXDMA_CSR_HALT 0x00000001 17762306a36Sopenharmony_ci#define ET_TXDMA_DROP_TLP 0x00000002 17862306a36Sopenharmony_ci#define ET_TXDMA_CACHE_THRS 0x000000F0 17962306a36Sopenharmony_ci#define ET_TXDMA_CACHE_SHIFT 4 18062306a36Sopenharmony_ci#define ET_TXDMA_SNGL_EPKT 0x00000100 18162306a36Sopenharmony_ci#define ET_TXDMA_CLASS 0x00001E00 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci/* structure for txdma packet ring base address hi reg in txdma address map 18462306a36Sopenharmony_ci * located at address 0x1004 18562306a36Sopenharmony_ci * Defined earlier (u32) 18662306a36Sopenharmony_ci */ 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ci/* structure for txdma packet ring base address low reg in txdma address map 18962306a36Sopenharmony_ci * located at address 0x1008 19062306a36Sopenharmony_ci * Defined earlier (u32) 19162306a36Sopenharmony_ci */ 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ci/* structure for txdma packet ring number of descriptor reg in txdma address 19462306a36Sopenharmony_ci * map. Located at address 0x100C 19562306a36Sopenharmony_ci * 19662306a36Sopenharmony_ci * 31-10: unused 19762306a36Sopenharmony_ci * 9-0: pr ndes 19862306a36Sopenharmony_ci */ 19962306a36Sopenharmony_ci#define ET_DMA12_MASK 0x0FFF /* 12 bit mask for DMA12W types */ 20062306a36Sopenharmony_ci#define ET_DMA12_WRAP 0x1000 20162306a36Sopenharmony_ci#define ET_DMA10_MASK 0x03FF /* 10 bit mask for DMA10W types */ 20262306a36Sopenharmony_ci#define ET_DMA10_WRAP 0x0400 20362306a36Sopenharmony_ci#define ET_DMA4_MASK 0x000F /* 4 bit mask for DMA4W types */ 20462306a36Sopenharmony_ci#define ET_DMA4_WRAP 0x0010 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci#define INDEX12(x) ((x) & ET_DMA12_MASK) 20762306a36Sopenharmony_ci#define INDEX10(x) ((x) & ET_DMA10_MASK) 20862306a36Sopenharmony_ci#define INDEX4(x) ((x) & ET_DMA4_MASK) 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci/* 10bit DMA with wrap 21162306a36Sopenharmony_ci * txdma tx queue write address reg in txdma address map at 0x1010 21262306a36Sopenharmony_ci * txdma tx queue write address external reg in txdma address map at 0x1014 21362306a36Sopenharmony_ci * txdma tx queue read address reg in txdma address map at 0x1018 21462306a36Sopenharmony_ci * 21562306a36Sopenharmony_ci * u32 21662306a36Sopenharmony_ci * txdma status writeback address hi reg in txdma address map at0x101C 21762306a36Sopenharmony_ci * txdma status writeback address lo reg in txdma address map at 0x1020 21862306a36Sopenharmony_ci * 21962306a36Sopenharmony_ci * 10bit DMA with wrap 22062306a36Sopenharmony_ci * txdma service request reg in txdma address map at 0x1024 22162306a36Sopenharmony_ci * structure for txdma service complete reg in txdma address map at 0x1028 22262306a36Sopenharmony_ci * 22362306a36Sopenharmony_ci * 4bit DMA with wrap 22462306a36Sopenharmony_ci * txdma tx descriptor cache read index reg in txdma address map at 0x102C 22562306a36Sopenharmony_ci * txdma tx descriptor cache write index reg in txdma address map at 0x1030 22662306a36Sopenharmony_ci * 22762306a36Sopenharmony_ci * txdma error reg in txdma address map at address 0x1034 22862306a36Sopenharmony_ci * 0: PyldResend 22962306a36Sopenharmony_ci * 1: PyldRewind 23062306a36Sopenharmony_ci * 4: DescrResend 23162306a36Sopenharmony_ci * 5: DescrRewind 23262306a36Sopenharmony_ci * 8: WrbkResend 23362306a36Sopenharmony_ci * 9: WrbkRewind 23462306a36Sopenharmony_ci */ 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci/* Tx DMA Module of JAGCore Address Mapping 23762306a36Sopenharmony_ci * Located at address 0x1000 23862306a36Sopenharmony_ci */ 23962306a36Sopenharmony_cistruct txdma_regs { /* Location: */ 24062306a36Sopenharmony_ci u32 csr; /* 0x1000 */ 24162306a36Sopenharmony_ci u32 pr_base_hi; /* 0x1004 */ 24262306a36Sopenharmony_ci u32 pr_base_lo; /* 0x1008 */ 24362306a36Sopenharmony_ci u32 pr_num_des; /* 0x100C */ 24462306a36Sopenharmony_ci u32 txq_wr_addr; /* 0x1010 */ 24562306a36Sopenharmony_ci u32 txq_wr_addr_ext; /* 0x1014 */ 24662306a36Sopenharmony_ci u32 txq_rd_addr; /* 0x1018 */ 24762306a36Sopenharmony_ci u32 dma_wb_base_hi; /* 0x101C */ 24862306a36Sopenharmony_ci u32 dma_wb_base_lo; /* 0x1020 */ 24962306a36Sopenharmony_ci u32 service_request; /* 0x1024 */ 25062306a36Sopenharmony_ci u32 service_complete; /* 0x1028 */ 25162306a36Sopenharmony_ci u32 cache_rd_index; /* 0x102C */ 25262306a36Sopenharmony_ci u32 cache_wr_index; /* 0x1030 */ 25362306a36Sopenharmony_ci u32 tx_dma_error; /* 0x1034 */ 25462306a36Sopenharmony_ci u32 desc_abort_cnt; /* 0x1038 */ 25562306a36Sopenharmony_ci u32 payload_abort_cnt; /* 0x103c */ 25662306a36Sopenharmony_ci u32 writeback_abort_cnt; /* 0x1040 */ 25762306a36Sopenharmony_ci u32 desc_timeout_cnt; /* 0x1044 */ 25862306a36Sopenharmony_ci u32 payload_timeout_cnt; /* 0x1048 */ 25962306a36Sopenharmony_ci u32 writeback_timeout_cnt; /* 0x104c */ 26062306a36Sopenharmony_ci u32 desc_error_cnt; /* 0x1050 */ 26162306a36Sopenharmony_ci u32 payload_error_cnt; /* 0x1054 */ 26262306a36Sopenharmony_ci u32 writeback_error_cnt; /* 0x1058 */ 26362306a36Sopenharmony_ci u32 dropped_tlp_cnt; /* 0x105c */ 26462306a36Sopenharmony_ci u32 new_service_complete; /* 0x1060 */ 26562306a36Sopenharmony_ci u32 ethernet_packet_cnt; /* 0x1064 */ 26662306a36Sopenharmony_ci}; 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci/* END OF TXDMA REGISTER ADDRESS MAP */ 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci/* START OF RXDMA REGISTER ADDRESS MAP */ 27162306a36Sopenharmony_ci/* structure for control status reg in rxdma address map 27262306a36Sopenharmony_ci * Located at address 0x2000 27362306a36Sopenharmony_ci * 27462306a36Sopenharmony_ci * CSR 27562306a36Sopenharmony_ci * 0: halt 27662306a36Sopenharmony_ci * 1-3: tc 27762306a36Sopenharmony_ci * 4: fbr_big_endian 27862306a36Sopenharmony_ci * 5: psr_big_endian 27962306a36Sopenharmony_ci * 6: pkt_big_endian 28062306a36Sopenharmony_ci * 7: dma_big_endian 28162306a36Sopenharmony_ci * 8-9: fbr0_size 28262306a36Sopenharmony_ci * 10: fbr0_enable 28362306a36Sopenharmony_ci * 11-12: fbr1_size 28462306a36Sopenharmony_ci * 13: fbr1_enable 28562306a36Sopenharmony_ci * 14: unused 28662306a36Sopenharmony_ci * 15: pkt_drop_disable 28762306a36Sopenharmony_ci * 16: pkt_done_flush 28862306a36Sopenharmony_ci * 17: halt_status 28962306a36Sopenharmony_ci * 18-31: unused 29062306a36Sopenharmony_ci */ 29162306a36Sopenharmony_ci#define ET_RXDMA_CSR_HALT 0x0001 29262306a36Sopenharmony_ci#define ET_RXDMA_CSR_FBR0_SIZE_LO 0x0100 29362306a36Sopenharmony_ci#define ET_RXDMA_CSR_FBR0_SIZE_HI 0x0200 29462306a36Sopenharmony_ci#define ET_RXDMA_CSR_FBR0_ENABLE 0x0400 29562306a36Sopenharmony_ci#define ET_RXDMA_CSR_FBR1_SIZE_LO 0x0800 29662306a36Sopenharmony_ci#define ET_RXDMA_CSR_FBR1_SIZE_HI 0x1000 29762306a36Sopenharmony_ci#define ET_RXDMA_CSR_FBR1_ENABLE 0x2000 29862306a36Sopenharmony_ci#define ET_RXDMA_CSR_HALT_STATUS 0x00020000 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci/* structure for dma writeback lo reg in rxdma address map 30162306a36Sopenharmony_ci * located at address 0x2004 30262306a36Sopenharmony_ci * Defined earlier (u32) 30362306a36Sopenharmony_ci */ 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci/* structure for dma writeback hi reg in rxdma address map 30662306a36Sopenharmony_ci * located at address 0x2008 30762306a36Sopenharmony_ci * Defined earlier (u32) 30862306a36Sopenharmony_ci */ 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci/* structure for number of packets done reg in rxdma address map 31162306a36Sopenharmony_ci * located at address 0x200C 31262306a36Sopenharmony_ci * 31362306a36Sopenharmony_ci * 31-8: unused 31462306a36Sopenharmony_ci * 7-0: num done 31562306a36Sopenharmony_ci */ 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci/* structure for max packet time reg in rxdma address map 31862306a36Sopenharmony_ci * located at address 0x2010 31962306a36Sopenharmony_ci * 32062306a36Sopenharmony_ci * 31-18: unused 32162306a36Sopenharmony_ci * 17-0: time done 32262306a36Sopenharmony_ci */ 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ci/* structure for rx queue read address reg in rxdma address map 32562306a36Sopenharmony_ci * located at address 0x2014 32662306a36Sopenharmony_ci * Defined earlier (u32) 32762306a36Sopenharmony_ci */ 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci/* structure for rx queue read address external reg in rxdma address map 33062306a36Sopenharmony_ci * located at address 0x2018 33162306a36Sopenharmony_ci * Defined earlier (u32) 33262306a36Sopenharmony_ci */ 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_ci/* structure for rx queue write address reg in rxdma address map 33562306a36Sopenharmony_ci * located at address 0x201C 33662306a36Sopenharmony_ci * Defined earlier (u32) 33762306a36Sopenharmony_ci */ 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_ci/* structure for packet status ring base address lo reg in rxdma address map 34062306a36Sopenharmony_ci * located at address 0x2020 34162306a36Sopenharmony_ci * Defined earlier (u32) 34262306a36Sopenharmony_ci */ 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_ci/* structure for packet status ring base address hi reg in rxdma address map 34562306a36Sopenharmony_ci * located at address 0x2024 34662306a36Sopenharmony_ci * Defined earlier (u32) 34762306a36Sopenharmony_ci */ 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci/* structure for packet status ring number of descriptors reg in rxdma address 35062306a36Sopenharmony_ci * map. Located at address 0x2028 35162306a36Sopenharmony_ci * 35262306a36Sopenharmony_ci * 31-12: unused 35362306a36Sopenharmony_ci * 11-0: psr ndes 35462306a36Sopenharmony_ci */ 35562306a36Sopenharmony_ci#define ET_RXDMA_PSR_NUM_DES_MASK 0xFFF 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ci/* structure for packet status ring available offset reg in rxdma address map 35862306a36Sopenharmony_ci * located at address 0x202C 35962306a36Sopenharmony_ci * 36062306a36Sopenharmony_ci * 31-13: unused 36162306a36Sopenharmony_ci * 12: psr avail wrap 36262306a36Sopenharmony_ci * 11-0: psr avail 36362306a36Sopenharmony_ci */ 36462306a36Sopenharmony_ci 36562306a36Sopenharmony_ci/* structure for packet status ring full offset reg in rxdma address map 36662306a36Sopenharmony_ci * located at address 0x2030 36762306a36Sopenharmony_ci * 36862306a36Sopenharmony_ci * 31-13: unused 36962306a36Sopenharmony_ci * 12: psr full wrap 37062306a36Sopenharmony_ci * 11-0: psr full 37162306a36Sopenharmony_ci */ 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_ci/* structure for packet status ring access index reg in rxdma address map 37462306a36Sopenharmony_ci * located at address 0x2034 37562306a36Sopenharmony_ci * 37662306a36Sopenharmony_ci * 31-5: unused 37762306a36Sopenharmony_ci * 4-0: psr_ai 37862306a36Sopenharmony_ci */ 37962306a36Sopenharmony_ci 38062306a36Sopenharmony_ci/* structure for packet status ring minimum descriptors reg in rxdma address 38162306a36Sopenharmony_ci * map. Located at address 0x2038 38262306a36Sopenharmony_ci * 38362306a36Sopenharmony_ci * 31-12: unused 38462306a36Sopenharmony_ci * 11-0: psr_min 38562306a36Sopenharmony_ci */ 38662306a36Sopenharmony_ci 38762306a36Sopenharmony_ci/* structure for free buffer ring base lo address reg in rxdma address map 38862306a36Sopenharmony_ci * located at address 0x203C 38962306a36Sopenharmony_ci * Defined earlier (u32) 39062306a36Sopenharmony_ci */ 39162306a36Sopenharmony_ci 39262306a36Sopenharmony_ci/* structure for free buffer ring base hi address reg in rxdma address map 39362306a36Sopenharmony_ci * located at address 0x2040 39462306a36Sopenharmony_ci * Defined earlier (u32) 39562306a36Sopenharmony_ci */ 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ci/* structure for free buffer ring number of descriptors reg in rxdma address 39862306a36Sopenharmony_ci * map. Located at address 0x2044 39962306a36Sopenharmony_ci * 40062306a36Sopenharmony_ci * 31-10: unused 40162306a36Sopenharmony_ci * 9-0: fbr ndesc 40262306a36Sopenharmony_ci */ 40362306a36Sopenharmony_ci 40462306a36Sopenharmony_ci/* structure for free buffer ring 0 available offset reg in rxdma address map 40562306a36Sopenharmony_ci * located at address 0x2048 40662306a36Sopenharmony_ci * Defined earlier (u32) 40762306a36Sopenharmony_ci */ 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ci/* structure for free buffer ring 0 full offset reg in rxdma address map 41062306a36Sopenharmony_ci * located at address 0x204C 41162306a36Sopenharmony_ci * Defined earlier (u32) 41262306a36Sopenharmony_ci */ 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ci/* structure for free buffer cache 0 full offset reg in rxdma address map 41562306a36Sopenharmony_ci * located at address 0x2050 41662306a36Sopenharmony_ci * 41762306a36Sopenharmony_ci * 31-5: unused 41862306a36Sopenharmony_ci * 4-0: fbc rdi 41962306a36Sopenharmony_ci */ 42062306a36Sopenharmony_ci 42162306a36Sopenharmony_ci/* structure for free buffer ring 0 minimum descriptor reg in rxdma address map 42262306a36Sopenharmony_ci * located at address 0x2054 42362306a36Sopenharmony_ci * 42462306a36Sopenharmony_ci * 31-10: unused 42562306a36Sopenharmony_ci * 9-0: fbr min 42662306a36Sopenharmony_ci */ 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci/* structure for free buffer ring 1 base address lo reg in rxdma address map 42962306a36Sopenharmony_ci * located at address 0x2058 - 0x205C 43062306a36Sopenharmony_ci * Defined earlier (RXDMA_FBR_BASE_LO_t and RXDMA_FBR_BASE_HI_t) 43162306a36Sopenharmony_ci */ 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_ci/* structure for free buffer ring 1 number of descriptors reg in rxdma address 43462306a36Sopenharmony_ci * map. Located at address 0x2060 43562306a36Sopenharmony_ci * Defined earlier (RXDMA_FBR_NUM_DES_t) 43662306a36Sopenharmony_ci */ 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_ci/* structure for free buffer ring 1 available offset reg in rxdma address map 43962306a36Sopenharmony_ci * located at address 0x2064 44062306a36Sopenharmony_ci * Defined Earlier (RXDMA_FBR_AVAIL_OFFSET_t) 44162306a36Sopenharmony_ci */ 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_ci/* structure for free buffer ring 1 full offset reg in rxdma address map 44462306a36Sopenharmony_ci * located at address 0x2068 44562306a36Sopenharmony_ci * Defined Earlier (RXDMA_FBR_FULL_OFFSET_t) 44662306a36Sopenharmony_ci */ 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_ci/* structure for free buffer cache 1 read index reg in rxdma address map 44962306a36Sopenharmony_ci * located at address 0x206C 45062306a36Sopenharmony_ci * Defined Earlier (RXDMA_FBC_RD_INDEX_t) 45162306a36Sopenharmony_ci */ 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_ci/* structure for free buffer ring 1 minimum descriptor reg in rxdma address map 45462306a36Sopenharmony_ci * located at address 0x2070 45562306a36Sopenharmony_ci * Defined Earlier (RXDMA_FBR_MIN_DES_t) 45662306a36Sopenharmony_ci */ 45762306a36Sopenharmony_ci 45862306a36Sopenharmony_ci/* Rx DMA Module of JAGCore Address Mapping 45962306a36Sopenharmony_ci * Located at address 0x2000 46062306a36Sopenharmony_ci */ 46162306a36Sopenharmony_cistruct rxdma_regs { /* Location: */ 46262306a36Sopenharmony_ci u32 csr; /* 0x2000 */ 46362306a36Sopenharmony_ci u32 dma_wb_base_lo; /* 0x2004 */ 46462306a36Sopenharmony_ci u32 dma_wb_base_hi; /* 0x2008 */ 46562306a36Sopenharmony_ci u32 num_pkt_done; /* 0x200C */ 46662306a36Sopenharmony_ci u32 max_pkt_time; /* 0x2010 */ 46762306a36Sopenharmony_ci u32 rxq_rd_addr; /* 0x2014 */ 46862306a36Sopenharmony_ci u32 rxq_rd_addr_ext; /* 0x2018 */ 46962306a36Sopenharmony_ci u32 rxq_wr_addr; /* 0x201C */ 47062306a36Sopenharmony_ci u32 psr_base_lo; /* 0x2020 */ 47162306a36Sopenharmony_ci u32 psr_base_hi; /* 0x2024 */ 47262306a36Sopenharmony_ci u32 psr_num_des; /* 0x2028 */ 47362306a36Sopenharmony_ci u32 psr_avail_offset; /* 0x202C */ 47462306a36Sopenharmony_ci u32 psr_full_offset; /* 0x2030 */ 47562306a36Sopenharmony_ci u32 psr_access_index; /* 0x2034 */ 47662306a36Sopenharmony_ci u32 psr_min_des; /* 0x2038 */ 47762306a36Sopenharmony_ci u32 fbr0_base_lo; /* 0x203C */ 47862306a36Sopenharmony_ci u32 fbr0_base_hi; /* 0x2040 */ 47962306a36Sopenharmony_ci u32 fbr0_num_des; /* 0x2044 */ 48062306a36Sopenharmony_ci u32 fbr0_avail_offset; /* 0x2048 */ 48162306a36Sopenharmony_ci u32 fbr0_full_offset; /* 0x204C */ 48262306a36Sopenharmony_ci u32 fbr0_rd_index; /* 0x2050 */ 48362306a36Sopenharmony_ci u32 fbr0_min_des; /* 0x2054 */ 48462306a36Sopenharmony_ci u32 fbr1_base_lo; /* 0x2058 */ 48562306a36Sopenharmony_ci u32 fbr1_base_hi; /* 0x205C */ 48662306a36Sopenharmony_ci u32 fbr1_num_des; /* 0x2060 */ 48762306a36Sopenharmony_ci u32 fbr1_avail_offset; /* 0x2064 */ 48862306a36Sopenharmony_ci u32 fbr1_full_offset; /* 0x2068 */ 48962306a36Sopenharmony_ci u32 fbr1_rd_index; /* 0x206C */ 49062306a36Sopenharmony_ci u32 fbr1_min_des; /* 0x2070 */ 49162306a36Sopenharmony_ci}; 49262306a36Sopenharmony_ci 49362306a36Sopenharmony_ci/* END OF RXDMA REGISTER ADDRESS MAP */ 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_ci/* START OF TXMAC REGISTER ADDRESS MAP */ 49662306a36Sopenharmony_ci/* structure for control reg in txmac address map 49762306a36Sopenharmony_ci * located at address 0x3000 49862306a36Sopenharmony_ci * 49962306a36Sopenharmony_ci * bits 50062306a36Sopenharmony_ci * 31-8: unused 50162306a36Sopenharmony_ci * 7: cklseg_disable 50262306a36Sopenharmony_ci * 6: ckbcnt_disable 50362306a36Sopenharmony_ci * 5: cksegnum 50462306a36Sopenharmony_ci * 4: async_disable 50562306a36Sopenharmony_ci * 3: fc_disable 50662306a36Sopenharmony_ci * 2: mcif_disable 50762306a36Sopenharmony_ci * 1: mif_disable 50862306a36Sopenharmony_ci * 0: txmac_en 50962306a36Sopenharmony_ci */ 51062306a36Sopenharmony_ci#define ET_TX_CTRL_FC_DISABLE 0x0008 51162306a36Sopenharmony_ci#define ET_TX_CTRL_TXMAC_ENABLE 0x0001 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_ci/* structure for shadow pointer reg in txmac address map 51462306a36Sopenharmony_ci * located at address 0x3004 51562306a36Sopenharmony_ci * 31-27: reserved 51662306a36Sopenharmony_ci * 26-16: txq rd ptr 51762306a36Sopenharmony_ci * 15-11: reserved 51862306a36Sopenharmony_ci * 10-0: txq wr ptr 51962306a36Sopenharmony_ci */ 52062306a36Sopenharmony_ci 52162306a36Sopenharmony_ci/* structure for error count reg in txmac address map 52262306a36Sopenharmony_ci * located at address 0x3008 52362306a36Sopenharmony_ci * 52462306a36Sopenharmony_ci * 31-12: unused 52562306a36Sopenharmony_ci * 11-8: reserved 52662306a36Sopenharmony_ci * 7-4: txq_underrun 52762306a36Sopenharmony_ci * 3-0: fifo_underrun 52862306a36Sopenharmony_ci */ 52962306a36Sopenharmony_ci 53062306a36Sopenharmony_ci/* structure for max fill reg in txmac address map 53162306a36Sopenharmony_ci * located at address 0x300C 53262306a36Sopenharmony_ci * 31-12: unused 53362306a36Sopenharmony_ci * 11-0: max fill 53462306a36Sopenharmony_ci */ 53562306a36Sopenharmony_ci 53662306a36Sopenharmony_ci/* structure for cf parameter reg in txmac address map 53762306a36Sopenharmony_ci * located at address 0x3010 53862306a36Sopenharmony_ci * 31-16: cfep 53962306a36Sopenharmony_ci * 15-0: cfpt 54062306a36Sopenharmony_ci */ 54162306a36Sopenharmony_ci 54262306a36Sopenharmony_ci/* structure for tx test reg in txmac address map 54362306a36Sopenharmony_ci * located at address 0x3014 54462306a36Sopenharmony_ci * 31-17: unused 54562306a36Sopenharmony_ci * 16: reserved 54662306a36Sopenharmony_ci * 15: txtest_en 54762306a36Sopenharmony_ci * 14-11: unused 54862306a36Sopenharmony_ci * 10-0: txq test pointer 54962306a36Sopenharmony_ci */ 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ci/* structure for error reg in txmac address map 55262306a36Sopenharmony_ci * located at address 0x3018 55362306a36Sopenharmony_ci * 55462306a36Sopenharmony_ci * 31-9: unused 55562306a36Sopenharmony_ci * 8: fifo_underrun 55662306a36Sopenharmony_ci * 7-6: unused 55762306a36Sopenharmony_ci * 5: ctrl2_err 55862306a36Sopenharmony_ci * 4: txq_underrun 55962306a36Sopenharmony_ci * 3: bcnt_err 56062306a36Sopenharmony_ci * 2: lseg_err 56162306a36Sopenharmony_ci * 1: segnum_err 56262306a36Sopenharmony_ci * 0: seg0_err 56362306a36Sopenharmony_ci */ 56462306a36Sopenharmony_ci 56562306a36Sopenharmony_ci/* structure for error interrupt reg in txmac address map 56662306a36Sopenharmony_ci * located at address 0x301C 56762306a36Sopenharmony_ci * 56862306a36Sopenharmony_ci * 31-9: unused 56962306a36Sopenharmony_ci * 8: fifo_underrun 57062306a36Sopenharmony_ci * 7-6: unused 57162306a36Sopenharmony_ci * 5: ctrl2_err 57262306a36Sopenharmony_ci * 4: txq_underrun 57362306a36Sopenharmony_ci * 3: bcnt_err 57462306a36Sopenharmony_ci * 2: lseg_err 57562306a36Sopenharmony_ci * 1: segnum_err 57662306a36Sopenharmony_ci * 0: seg0_err 57762306a36Sopenharmony_ci */ 57862306a36Sopenharmony_ci 57962306a36Sopenharmony_ci/* structure for error interrupt reg in txmac address map 58062306a36Sopenharmony_ci * located at address 0x3020 58162306a36Sopenharmony_ci * 58262306a36Sopenharmony_ci * 31-2: unused 58362306a36Sopenharmony_ci * 1: bp_req 58462306a36Sopenharmony_ci * 0: bp_xonxoff 58562306a36Sopenharmony_ci */ 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ci/* Tx MAC Module of JAGCore Address Mapping 58862306a36Sopenharmony_ci */ 58962306a36Sopenharmony_cistruct txmac_regs { /* Location: */ 59062306a36Sopenharmony_ci u32 ctl; /* 0x3000 */ 59162306a36Sopenharmony_ci u32 shadow_ptr; /* 0x3004 */ 59262306a36Sopenharmony_ci u32 err_cnt; /* 0x3008 */ 59362306a36Sopenharmony_ci u32 max_fill; /* 0x300C */ 59462306a36Sopenharmony_ci u32 cf_param; /* 0x3010 */ 59562306a36Sopenharmony_ci u32 tx_test; /* 0x3014 */ 59662306a36Sopenharmony_ci u32 err; /* 0x3018 */ 59762306a36Sopenharmony_ci u32 err_int; /* 0x301C */ 59862306a36Sopenharmony_ci u32 bp_ctrl; /* 0x3020 */ 59962306a36Sopenharmony_ci}; 60062306a36Sopenharmony_ci 60162306a36Sopenharmony_ci/* END OF TXMAC REGISTER ADDRESS MAP */ 60262306a36Sopenharmony_ci 60362306a36Sopenharmony_ci/* START OF RXMAC REGISTER ADDRESS MAP */ 60462306a36Sopenharmony_ci 60562306a36Sopenharmony_ci/* structure for rxmac control reg in rxmac address map 60662306a36Sopenharmony_ci * located at address 0x4000 60762306a36Sopenharmony_ci * 60862306a36Sopenharmony_ci * 31-7: reserved 60962306a36Sopenharmony_ci * 6: rxmac_int_disable 61062306a36Sopenharmony_ci * 5: async_disable 61162306a36Sopenharmony_ci * 4: mif_disable 61262306a36Sopenharmony_ci * 3: wol_disable 61362306a36Sopenharmony_ci * 2: pkt_filter_disable 61462306a36Sopenharmony_ci * 1: mcif_disable 61562306a36Sopenharmony_ci * 0: rxmac_en 61662306a36Sopenharmony_ci */ 61762306a36Sopenharmony_ci#define ET_RX_CTRL_WOL_DISABLE 0x0008 61862306a36Sopenharmony_ci#define ET_RX_CTRL_RXMAC_ENABLE 0x0001 61962306a36Sopenharmony_ci 62062306a36Sopenharmony_ci/* structure for Wake On Lan Control and CRC 0 reg in rxmac address map 62162306a36Sopenharmony_ci * located at address 0x4004 62262306a36Sopenharmony_ci * 31-16: crc 62362306a36Sopenharmony_ci * 15-12: reserved 62462306a36Sopenharmony_ci * 11: ignore_pp 62562306a36Sopenharmony_ci * 10: ignore_mp 62662306a36Sopenharmony_ci * 9: clr_intr 62762306a36Sopenharmony_ci * 8: ignore_link_chg 62862306a36Sopenharmony_ci * 7: ignore_uni 62962306a36Sopenharmony_ci * 6: ignore_multi 63062306a36Sopenharmony_ci * 5: ignore_broad 63162306a36Sopenharmony_ci * 4-0: valid_crc 4-0 63262306a36Sopenharmony_ci */ 63362306a36Sopenharmony_ci 63462306a36Sopenharmony_ci/* structure for CRC 1 and CRC 2 reg in rxmac address map 63562306a36Sopenharmony_ci * located at address 0x4008 63662306a36Sopenharmony_ci * 63762306a36Sopenharmony_ci * 31-16: crc2 63862306a36Sopenharmony_ci * 15-0: crc1 63962306a36Sopenharmony_ci */ 64062306a36Sopenharmony_ci 64162306a36Sopenharmony_ci/* structure for CRC 3 and CRC 4 reg in rxmac address map 64262306a36Sopenharmony_ci * located at address 0x400C 64362306a36Sopenharmony_ci * 64462306a36Sopenharmony_ci * 31-16: crc4 64562306a36Sopenharmony_ci * 15-0: crc3 64662306a36Sopenharmony_ci */ 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_ci/* structure for Wake On Lan Source Address Lo reg in rxmac address map 64962306a36Sopenharmony_ci * located at address 0x4010 65062306a36Sopenharmony_ci * 65162306a36Sopenharmony_ci * 31-24: sa3 65262306a36Sopenharmony_ci * 23-16: sa4 65362306a36Sopenharmony_ci * 15-8: sa5 65462306a36Sopenharmony_ci * 7-0: sa6 65562306a36Sopenharmony_ci */ 65662306a36Sopenharmony_ci#define ET_RX_WOL_LO_SA3_SHIFT 24 65762306a36Sopenharmony_ci#define ET_RX_WOL_LO_SA4_SHIFT 16 65862306a36Sopenharmony_ci#define ET_RX_WOL_LO_SA5_SHIFT 8 65962306a36Sopenharmony_ci 66062306a36Sopenharmony_ci/* structure for Wake On Lan Source Address Hi reg in rxmac address map 66162306a36Sopenharmony_ci * located at address 0x4014 66262306a36Sopenharmony_ci * 66362306a36Sopenharmony_ci * 31-16: reserved 66462306a36Sopenharmony_ci * 15-8: sa1 66562306a36Sopenharmony_ci * 7-0: sa2 66662306a36Sopenharmony_ci */ 66762306a36Sopenharmony_ci#define ET_RX_WOL_HI_SA1_SHIFT 8 66862306a36Sopenharmony_ci 66962306a36Sopenharmony_ci/* structure for Wake On Lan mask reg in rxmac address map 67062306a36Sopenharmony_ci * located at address 0x4018 - 0x4064 67162306a36Sopenharmony_ci * Defined earlier (u32) 67262306a36Sopenharmony_ci */ 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ci/* structure for Unicast Packet Filter Address 1 reg in rxmac address map 67562306a36Sopenharmony_ci * located at address 0x4068 67662306a36Sopenharmony_ci * 67762306a36Sopenharmony_ci * 31-24: addr1_3 67862306a36Sopenharmony_ci * 23-16: addr1_4 67962306a36Sopenharmony_ci * 15-8: addr1_5 68062306a36Sopenharmony_ci * 7-0: addr1_6 68162306a36Sopenharmony_ci */ 68262306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR1_3_SHIFT 24 68362306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR1_4_SHIFT 16 68462306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR1_5_SHIFT 8 68562306a36Sopenharmony_ci 68662306a36Sopenharmony_ci/* structure for Unicast Packet Filter Address 2 reg in rxmac address map 68762306a36Sopenharmony_ci * located at address 0x406C 68862306a36Sopenharmony_ci * 68962306a36Sopenharmony_ci * 31-24: addr2_3 69062306a36Sopenharmony_ci * 23-16: addr2_4 69162306a36Sopenharmony_ci * 15-8: addr2_5 69262306a36Sopenharmony_ci * 7-0: addr2_6 69362306a36Sopenharmony_ci */ 69462306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR2_3_SHIFT 24 69562306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR2_4_SHIFT 16 69662306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR2_5_SHIFT 8 69762306a36Sopenharmony_ci 69862306a36Sopenharmony_ci/* structure for Unicast Packet Filter Address 1 & 2 reg in rxmac address map 69962306a36Sopenharmony_ci * located at address 0x4070 70062306a36Sopenharmony_ci * 70162306a36Sopenharmony_ci * 31-24: addr2_1 70262306a36Sopenharmony_ci * 23-16: addr2_2 70362306a36Sopenharmony_ci * 15-8: addr1_1 70462306a36Sopenharmony_ci * 7-0: addr1_2 70562306a36Sopenharmony_ci */ 70662306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR2_1_SHIFT 24 70762306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR2_2_SHIFT 16 70862306a36Sopenharmony_ci#define ET_RX_UNI_PF_ADDR1_1_SHIFT 8 70962306a36Sopenharmony_ci 71062306a36Sopenharmony_ci/* structure for Multicast Hash reg in rxmac address map 71162306a36Sopenharmony_ci * located at address 0x4074 - 0x4080 71262306a36Sopenharmony_ci * Defined earlier (u32) 71362306a36Sopenharmony_ci */ 71462306a36Sopenharmony_ci 71562306a36Sopenharmony_ci/* structure for Packet Filter Control reg in rxmac address map 71662306a36Sopenharmony_ci * located at address 0x4084 71762306a36Sopenharmony_ci * 71862306a36Sopenharmony_ci * 31-23: unused 71962306a36Sopenharmony_ci * 22-16: min_pkt_size 72062306a36Sopenharmony_ci * 15-4: unused 72162306a36Sopenharmony_ci * 3: filter_frag_en 72262306a36Sopenharmony_ci * 2: filter_uni_en 72362306a36Sopenharmony_ci * 1: filter_multi_en 72462306a36Sopenharmony_ci * 0: filter_broad_en 72562306a36Sopenharmony_ci */ 72662306a36Sopenharmony_ci#define ET_RX_PFCTRL_MIN_PKT_SZ_SHIFT 16 72762306a36Sopenharmony_ci#define ET_RX_PFCTRL_FRAG_FILTER_ENABLE 0x0008 72862306a36Sopenharmony_ci#define ET_RX_PFCTRL_UNICST_FILTER_ENABLE 0x0004 72962306a36Sopenharmony_ci#define ET_RX_PFCTRL_MLTCST_FILTER_ENABLE 0x0002 73062306a36Sopenharmony_ci#define ET_RX_PFCTRL_BRDCST_FILTER_ENABLE 0x0001 73162306a36Sopenharmony_ci 73262306a36Sopenharmony_ci/* structure for Memory Controller Interface Control Max Segment reg in rxmac 73362306a36Sopenharmony_ci * address map. Located at address 0x4088 73462306a36Sopenharmony_ci * 73562306a36Sopenharmony_ci * 31-10: reserved 73662306a36Sopenharmony_ci * 9-2: max_size 73762306a36Sopenharmony_ci * 1: fc_en 73862306a36Sopenharmony_ci * 0: seg_en 73962306a36Sopenharmony_ci */ 74062306a36Sopenharmony_ci#define ET_RX_MCIF_CTRL_MAX_SEG_SIZE_SHIFT 2 74162306a36Sopenharmony_ci#define ET_RX_MCIF_CTRL_MAX_SEG_FC_ENABLE 0x0002 74262306a36Sopenharmony_ci#define ET_RX_MCIF_CTRL_MAX_SEG_ENABLE 0x0001 74362306a36Sopenharmony_ci 74462306a36Sopenharmony_ci/* structure for Memory Controller Interface Water Mark reg in rxmac address 74562306a36Sopenharmony_ci * map. Located at address 0x408C 74662306a36Sopenharmony_ci * 74762306a36Sopenharmony_ci * 31-26: unused 74862306a36Sopenharmony_ci * 25-16: mark_hi 74962306a36Sopenharmony_ci * 15-10: unused 75062306a36Sopenharmony_ci * 9-0: mark_lo 75162306a36Sopenharmony_ci */ 75262306a36Sopenharmony_ci 75362306a36Sopenharmony_ci/* structure for Rx Queue Dialog reg in rxmac address map. 75462306a36Sopenharmony_ci * located at address 0x4090 75562306a36Sopenharmony_ci * 75662306a36Sopenharmony_ci * 31-26: reserved 75762306a36Sopenharmony_ci * 25-16: rd_ptr 75862306a36Sopenharmony_ci * 15-10: reserved 75962306a36Sopenharmony_ci * 9-0: wr_ptr 76062306a36Sopenharmony_ci */ 76162306a36Sopenharmony_ci 76262306a36Sopenharmony_ci/* structure for space available reg in rxmac address map. 76362306a36Sopenharmony_ci * located at address 0x4094 76462306a36Sopenharmony_ci * 76562306a36Sopenharmony_ci * 31-17: reserved 76662306a36Sopenharmony_ci * 16: space_avail_en 76762306a36Sopenharmony_ci * 15-10: reserved 76862306a36Sopenharmony_ci * 9-0: space_avail 76962306a36Sopenharmony_ci */ 77062306a36Sopenharmony_ci 77162306a36Sopenharmony_ci/* structure for management interface reg in rxmac address map. 77262306a36Sopenharmony_ci * located at address 0x4098 77362306a36Sopenharmony_ci * 77462306a36Sopenharmony_ci * 31-18: reserved 77562306a36Sopenharmony_ci * 17: drop_pkt_en 77662306a36Sopenharmony_ci * 16-0: drop_pkt_mask 77762306a36Sopenharmony_ci */ 77862306a36Sopenharmony_ci 77962306a36Sopenharmony_ci/* structure for Error reg in rxmac address map. 78062306a36Sopenharmony_ci * located at address 0x409C 78162306a36Sopenharmony_ci * 78262306a36Sopenharmony_ci * 31-4: unused 78362306a36Sopenharmony_ci * 3: mif 78462306a36Sopenharmony_ci * 2: async 78562306a36Sopenharmony_ci * 1: pkt_filter 78662306a36Sopenharmony_ci * 0: mcif 78762306a36Sopenharmony_ci */ 78862306a36Sopenharmony_ci 78962306a36Sopenharmony_ci/* Rx MAC Module of JAGCore Address Mapping 79062306a36Sopenharmony_ci */ 79162306a36Sopenharmony_cistruct rxmac_regs { /* Location: */ 79262306a36Sopenharmony_ci u32 ctrl; /* 0x4000 */ 79362306a36Sopenharmony_ci u32 crc0; /* 0x4004 */ 79462306a36Sopenharmony_ci u32 crc12; /* 0x4008 */ 79562306a36Sopenharmony_ci u32 crc34; /* 0x400C */ 79662306a36Sopenharmony_ci u32 sa_lo; /* 0x4010 */ 79762306a36Sopenharmony_ci u32 sa_hi; /* 0x4014 */ 79862306a36Sopenharmony_ci u32 mask0_word0; /* 0x4018 */ 79962306a36Sopenharmony_ci u32 mask0_word1; /* 0x401C */ 80062306a36Sopenharmony_ci u32 mask0_word2; /* 0x4020 */ 80162306a36Sopenharmony_ci u32 mask0_word3; /* 0x4024 */ 80262306a36Sopenharmony_ci u32 mask1_word0; /* 0x4028 */ 80362306a36Sopenharmony_ci u32 mask1_word1; /* 0x402C */ 80462306a36Sopenharmony_ci u32 mask1_word2; /* 0x4030 */ 80562306a36Sopenharmony_ci u32 mask1_word3; /* 0x4034 */ 80662306a36Sopenharmony_ci u32 mask2_word0; /* 0x4038 */ 80762306a36Sopenharmony_ci u32 mask2_word1; /* 0x403C */ 80862306a36Sopenharmony_ci u32 mask2_word2; /* 0x4040 */ 80962306a36Sopenharmony_ci u32 mask2_word3; /* 0x4044 */ 81062306a36Sopenharmony_ci u32 mask3_word0; /* 0x4048 */ 81162306a36Sopenharmony_ci u32 mask3_word1; /* 0x404C */ 81262306a36Sopenharmony_ci u32 mask3_word2; /* 0x4050 */ 81362306a36Sopenharmony_ci u32 mask3_word3; /* 0x4054 */ 81462306a36Sopenharmony_ci u32 mask4_word0; /* 0x4058 */ 81562306a36Sopenharmony_ci u32 mask4_word1; /* 0x405C */ 81662306a36Sopenharmony_ci u32 mask4_word2; /* 0x4060 */ 81762306a36Sopenharmony_ci u32 mask4_word3; /* 0x4064 */ 81862306a36Sopenharmony_ci u32 uni_pf_addr1; /* 0x4068 */ 81962306a36Sopenharmony_ci u32 uni_pf_addr2; /* 0x406C */ 82062306a36Sopenharmony_ci u32 uni_pf_addr3; /* 0x4070 */ 82162306a36Sopenharmony_ci u32 multi_hash1; /* 0x4074 */ 82262306a36Sopenharmony_ci u32 multi_hash2; /* 0x4078 */ 82362306a36Sopenharmony_ci u32 multi_hash3; /* 0x407C */ 82462306a36Sopenharmony_ci u32 multi_hash4; /* 0x4080 */ 82562306a36Sopenharmony_ci u32 pf_ctrl; /* 0x4084 */ 82662306a36Sopenharmony_ci u32 mcif_ctrl_max_seg; /* 0x4088 */ 82762306a36Sopenharmony_ci u32 mcif_water_mark; /* 0x408C */ 82862306a36Sopenharmony_ci u32 rxq_diag; /* 0x4090 */ 82962306a36Sopenharmony_ci u32 space_avail; /* 0x4094 */ 83062306a36Sopenharmony_ci 83162306a36Sopenharmony_ci u32 mif_ctrl; /* 0x4098 */ 83262306a36Sopenharmony_ci u32 err_reg; /* 0x409C */ 83362306a36Sopenharmony_ci}; 83462306a36Sopenharmony_ci 83562306a36Sopenharmony_ci/* END OF RXMAC REGISTER ADDRESS MAP */ 83662306a36Sopenharmony_ci 83762306a36Sopenharmony_ci/* START OF MAC REGISTER ADDRESS MAP */ 83862306a36Sopenharmony_ci/* structure for configuration #1 reg in mac address map. 83962306a36Sopenharmony_ci * located at address 0x5000 84062306a36Sopenharmony_ci * 84162306a36Sopenharmony_ci * 31: soft reset 84262306a36Sopenharmony_ci * 30: sim reset 84362306a36Sopenharmony_ci * 29-20: reserved 84462306a36Sopenharmony_ci * 19: reset rx mc 84562306a36Sopenharmony_ci * 18: reset tx mc 84662306a36Sopenharmony_ci * 17: reset rx func 84762306a36Sopenharmony_ci * 16: reset tx fnc 84862306a36Sopenharmony_ci * 15-9: reserved 84962306a36Sopenharmony_ci * 8: loopback 85062306a36Sopenharmony_ci * 7-6: reserved 85162306a36Sopenharmony_ci * 5: rx flow 85262306a36Sopenharmony_ci * 4: tx flow 85362306a36Sopenharmony_ci * 3: syncd rx en 85462306a36Sopenharmony_ci * 2: rx enable 85562306a36Sopenharmony_ci * 1: syncd tx en 85662306a36Sopenharmony_ci * 0: tx enable 85762306a36Sopenharmony_ci */ 85862306a36Sopenharmony_ci#define ET_MAC_CFG1_SOFT_RESET 0x80000000 85962306a36Sopenharmony_ci#define ET_MAC_CFG1_SIM_RESET 0x40000000 86062306a36Sopenharmony_ci#define ET_MAC_CFG1_RESET_RXMC 0x00080000 86162306a36Sopenharmony_ci#define ET_MAC_CFG1_RESET_TXMC 0x00040000 86262306a36Sopenharmony_ci#define ET_MAC_CFG1_RESET_RXFUNC 0x00020000 86362306a36Sopenharmony_ci#define ET_MAC_CFG1_RESET_TXFUNC 0x00010000 86462306a36Sopenharmony_ci#define ET_MAC_CFG1_LOOPBACK 0x00000100 86562306a36Sopenharmony_ci#define ET_MAC_CFG1_RX_FLOW 0x00000020 86662306a36Sopenharmony_ci#define ET_MAC_CFG1_TX_FLOW 0x00000010 86762306a36Sopenharmony_ci#define ET_MAC_CFG1_RX_ENABLE 0x00000004 86862306a36Sopenharmony_ci#define ET_MAC_CFG1_TX_ENABLE 0x00000001 86962306a36Sopenharmony_ci#define ET_MAC_CFG1_WAIT 0x0000000A /* RX & TX syncd */ 87062306a36Sopenharmony_ci 87162306a36Sopenharmony_ci/* structure for configuration #2 reg in mac address map. 87262306a36Sopenharmony_ci * located at address 0x5004 87362306a36Sopenharmony_ci * 31-16: reserved 87462306a36Sopenharmony_ci * 15-12: preamble 87562306a36Sopenharmony_ci * 11-10: reserved 87662306a36Sopenharmony_ci * 9-8: if mode 87762306a36Sopenharmony_ci * 7-6: reserved 87862306a36Sopenharmony_ci * 5: huge frame 87962306a36Sopenharmony_ci * 4: length check 88062306a36Sopenharmony_ci * 3: undefined 88162306a36Sopenharmony_ci * 2: pad crc 88262306a36Sopenharmony_ci * 1: crc enable 88362306a36Sopenharmony_ci * 0: full duplex 88462306a36Sopenharmony_ci */ 88562306a36Sopenharmony_ci#define ET_MAC_CFG2_PREAMBLE_SHIFT 12 88662306a36Sopenharmony_ci#define ET_MAC_CFG2_IFMODE_MASK 0x0300 88762306a36Sopenharmony_ci#define ET_MAC_CFG2_IFMODE_1000 0x0200 88862306a36Sopenharmony_ci#define ET_MAC_CFG2_IFMODE_100 0x0100 88962306a36Sopenharmony_ci#define ET_MAC_CFG2_IFMODE_HUGE_FRAME 0x0020 89062306a36Sopenharmony_ci#define ET_MAC_CFG2_IFMODE_LEN_CHECK 0x0010 89162306a36Sopenharmony_ci#define ET_MAC_CFG2_IFMODE_PAD_CRC 0x0004 89262306a36Sopenharmony_ci#define ET_MAC_CFG2_IFMODE_CRC_ENABLE 0x0002 89362306a36Sopenharmony_ci#define ET_MAC_CFG2_IFMODE_FULL_DPLX 0x0001 89462306a36Sopenharmony_ci 89562306a36Sopenharmony_ci/* structure for Interpacket gap reg in mac address map. 89662306a36Sopenharmony_ci * located at address 0x5008 89762306a36Sopenharmony_ci * 89862306a36Sopenharmony_ci * 31: reserved 89962306a36Sopenharmony_ci * 30-24: non B2B ipg 1 90062306a36Sopenharmony_ci * 23: undefined 90162306a36Sopenharmony_ci * 22-16: non B2B ipg 2 90262306a36Sopenharmony_ci * 15-8: Min ifg enforce 90362306a36Sopenharmony_ci * 7-0: B2B ipg 90462306a36Sopenharmony_ci * 90562306a36Sopenharmony_ci * structure for half duplex reg in mac address map. 90662306a36Sopenharmony_ci * located at address 0x500C 90762306a36Sopenharmony_ci * 31-24: reserved 90862306a36Sopenharmony_ci * 23-20: Alt BEB trunc 90962306a36Sopenharmony_ci * 19: Alt BEB enable 91062306a36Sopenharmony_ci * 18: BP no backoff 91162306a36Sopenharmony_ci * 17: no backoff 91262306a36Sopenharmony_ci * 16: excess defer 91362306a36Sopenharmony_ci * 15-12: re-xmit max 91462306a36Sopenharmony_ci * 11-10: reserved 91562306a36Sopenharmony_ci * 9-0: collision window 91662306a36Sopenharmony_ci */ 91762306a36Sopenharmony_ci 91862306a36Sopenharmony_ci/* structure for Maximum Frame Length reg in mac address map. 91962306a36Sopenharmony_ci * located at address 0x5010: bits 0-15 hold the length. 92062306a36Sopenharmony_ci */ 92162306a36Sopenharmony_ci 92262306a36Sopenharmony_ci/* structure for Reserve 1 reg in mac address map. 92362306a36Sopenharmony_ci * located at address 0x5014 - 0x5018 92462306a36Sopenharmony_ci * Defined earlier (u32) 92562306a36Sopenharmony_ci */ 92662306a36Sopenharmony_ci 92762306a36Sopenharmony_ci/* structure for Test reg in mac address map. 92862306a36Sopenharmony_ci * located at address 0x501C 92962306a36Sopenharmony_ci * test: bits 0-2, rest unused 93062306a36Sopenharmony_ci */ 93162306a36Sopenharmony_ci 93262306a36Sopenharmony_ci/* structure for MII Management Configuration reg in mac address map. 93362306a36Sopenharmony_ci * located at address 0x5020 93462306a36Sopenharmony_ci * 93562306a36Sopenharmony_ci * 31: reset MII mgmt 93662306a36Sopenharmony_ci * 30-6: unused 93762306a36Sopenharmony_ci * 5: scan auto increment 93862306a36Sopenharmony_ci * 4: preamble suppress 93962306a36Sopenharmony_ci * 3: undefined 94062306a36Sopenharmony_ci * 2-0: mgmt clock reset 94162306a36Sopenharmony_ci */ 94262306a36Sopenharmony_ci#define ET_MAC_MIIMGMT_CLK_RST 0x0007 94362306a36Sopenharmony_ci 94462306a36Sopenharmony_ci/* structure for MII Management Command reg in mac address map. 94562306a36Sopenharmony_ci * located at address 0x5024 94662306a36Sopenharmony_ci * bit 1: scan cycle 94762306a36Sopenharmony_ci * bit 0: read cycle 94862306a36Sopenharmony_ci */ 94962306a36Sopenharmony_ci 95062306a36Sopenharmony_ci/* structure for MII Management Address reg in mac address map. 95162306a36Sopenharmony_ci * located at address 0x5028 95262306a36Sopenharmony_ci * 31-13: reserved 95362306a36Sopenharmony_ci * 12-8: phy addr 95462306a36Sopenharmony_ci * 7-5: reserved 95562306a36Sopenharmony_ci * 4-0: register 95662306a36Sopenharmony_ci */ 95762306a36Sopenharmony_ci#define ET_MAC_MII_ADDR(phy, reg) ((phy) << 8 | (reg)) 95862306a36Sopenharmony_ci 95962306a36Sopenharmony_ci/* structure for MII Management Control reg in mac address map. 96062306a36Sopenharmony_ci * located at address 0x502C 96162306a36Sopenharmony_ci * 31-16: reserved 96262306a36Sopenharmony_ci * 15-0: phy control 96362306a36Sopenharmony_ci */ 96462306a36Sopenharmony_ci 96562306a36Sopenharmony_ci/* structure for MII Management Status reg in mac address map. 96662306a36Sopenharmony_ci * located at address 0x5030 96762306a36Sopenharmony_ci * 31-16: reserved 96862306a36Sopenharmony_ci * 15-0: phy control 96962306a36Sopenharmony_ci */ 97062306a36Sopenharmony_ci#define ET_MAC_MIIMGMT_STAT_PHYCRTL_MASK 0xFFFF 97162306a36Sopenharmony_ci 97262306a36Sopenharmony_ci/* structure for MII Management Indicators reg in mac address map. 97362306a36Sopenharmony_ci * located at address 0x5034 97462306a36Sopenharmony_ci * 31-3: reserved 97562306a36Sopenharmony_ci * 2: not valid 97662306a36Sopenharmony_ci * 1: scanning 97762306a36Sopenharmony_ci * 0: busy 97862306a36Sopenharmony_ci */ 97962306a36Sopenharmony_ci#define ET_MAC_MGMT_BUSY 0x00000001 /* busy */ 98062306a36Sopenharmony_ci#define ET_MAC_MGMT_WAIT 0x00000005 /* busy | not valid */ 98162306a36Sopenharmony_ci 98262306a36Sopenharmony_ci/* structure for Interface Control reg in mac address map. 98362306a36Sopenharmony_ci * located at address 0x5038 98462306a36Sopenharmony_ci * 98562306a36Sopenharmony_ci * 31: reset if module 98662306a36Sopenharmony_ci * 30-28: reserved 98762306a36Sopenharmony_ci * 27: tbi mode 98862306a36Sopenharmony_ci * 26: ghd mode 98962306a36Sopenharmony_ci * 25: lhd mode 99062306a36Sopenharmony_ci * 24: phy mode 99162306a36Sopenharmony_ci * 23: reset per mii 99262306a36Sopenharmony_ci * 22-17: reserved 99362306a36Sopenharmony_ci * 16: speed 99462306a36Sopenharmony_ci * 15: reset pe100x 99562306a36Sopenharmony_ci * 14-11: reserved 99662306a36Sopenharmony_ci * 10: force quiet 99762306a36Sopenharmony_ci * 9: no cipher 99862306a36Sopenharmony_ci * 8: disable link fail 99962306a36Sopenharmony_ci * 7: reset gpsi 100062306a36Sopenharmony_ci * 6-1: reserved 100162306a36Sopenharmony_ci * 0: enable jabber protection 100262306a36Sopenharmony_ci */ 100362306a36Sopenharmony_ci#define ET_MAC_IFCTRL_GHDMODE (1 << 26) 100462306a36Sopenharmony_ci#define ET_MAC_IFCTRL_PHYMODE (1 << 24) 100562306a36Sopenharmony_ci 100662306a36Sopenharmony_ci/* structure for Interface Status reg in mac address map. 100762306a36Sopenharmony_ci * located at address 0x503C 100862306a36Sopenharmony_ci * 100962306a36Sopenharmony_ci * 31-10: reserved 101062306a36Sopenharmony_ci * 9: excess_defer 101162306a36Sopenharmony_ci * 8: clash 101262306a36Sopenharmony_ci * 7: phy_jabber 101362306a36Sopenharmony_ci * 6: phy_link_ok 101462306a36Sopenharmony_ci * 5: phy_full_duplex 101562306a36Sopenharmony_ci * 4: phy_speed 101662306a36Sopenharmony_ci * 3: pe100x_link_fail 101762306a36Sopenharmony_ci * 2: pe10t_loss_carrier 101862306a36Sopenharmony_ci * 1: pe10t_sqe_error 101962306a36Sopenharmony_ci * 0: pe10t_jabber 102062306a36Sopenharmony_ci */ 102162306a36Sopenharmony_ci 102262306a36Sopenharmony_ci/* structure for Mac Station Address, Part 1 reg in mac address map. 102362306a36Sopenharmony_ci * located at address 0x5040 102462306a36Sopenharmony_ci * 102562306a36Sopenharmony_ci * 31-24: Octet6 102662306a36Sopenharmony_ci * 23-16: Octet5 102762306a36Sopenharmony_ci * 15-8: Octet4 102862306a36Sopenharmony_ci * 7-0: Octet3 102962306a36Sopenharmony_ci */ 103062306a36Sopenharmony_ci#define ET_MAC_STATION_ADDR1_OC6_SHIFT 24 103162306a36Sopenharmony_ci#define ET_MAC_STATION_ADDR1_OC5_SHIFT 16 103262306a36Sopenharmony_ci#define ET_MAC_STATION_ADDR1_OC4_SHIFT 8 103362306a36Sopenharmony_ci 103462306a36Sopenharmony_ci/* structure for Mac Station Address, Part 2 reg in mac address map. 103562306a36Sopenharmony_ci * located at address 0x5044 103662306a36Sopenharmony_ci * 103762306a36Sopenharmony_ci * 31-24: Octet2 103862306a36Sopenharmony_ci * 23-16: Octet1 103962306a36Sopenharmony_ci * 15-0: reserved 104062306a36Sopenharmony_ci */ 104162306a36Sopenharmony_ci#define ET_MAC_STATION_ADDR2_OC2_SHIFT 24 104262306a36Sopenharmony_ci#define ET_MAC_STATION_ADDR2_OC1_SHIFT 16 104362306a36Sopenharmony_ci 104462306a36Sopenharmony_ci/* MAC Module of JAGCore Address Mapping 104562306a36Sopenharmony_ci */ 104662306a36Sopenharmony_cistruct mac_regs { /* Location: */ 104762306a36Sopenharmony_ci u32 cfg1; /* 0x5000 */ 104862306a36Sopenharmony_ci u32 cfg2; /* 0x5004 */ 104962306a36Sopenharmony_ci u32 ipg; /* 0x5008 */ 105062306a36Sopenharmony_ci u32 hfdp; /* 0x500C */ 105162306a36Sopenharmony_ci u32 max_fm_len; /* 0x5010 */ 105262306a36Sopenharmony_ci u32 rsv1; /* 0x5014 */ 105362306a36Sopenharmony_ci u32 rsv2; /* 0x5018 */ 105462306a36Sopenharmony_ci u32 mac_test; /* 0x501C */ 105562306a36Sopenharmony_ci u32 mii_mgmt_cfg; /* 0x5020 */ 105662306a36Sopenharmony_ci u32 mii_mgmt_cmd; /* 0x5024 */ 105762306a36Sopenharmony_ci u32 mii_mgmt_addr; /* 0x5028 */ 105862306a36Sopenharmony_ci u32 mii_mgmt_ctrl; /* 0x502C */ 105962306a36Sopenharmony_ci u32 mii_mgmt_stat; /* 0x5030 */ 106062306a36Sopenharmony_ci u32 mii_mgmt_indicator; /* 0x5034 */ 106162306a36Sopenharmony_ci u32 if_ctrl; /* 0x5038 */ 106262306a36Sopenharmony_ci u32 if_stat; /* 0x503C */ 106362306a36Sopenharmony_ci u32 station_addr_1; /* 0x5040 */ 106462306a36Sopenharmony_ci u32 station_addr_2; /* 0x5044 */ 106562306a36Sopenharmony_ci}; 106662306a36Sopenharmony_ci 106762306a36Sopenharmony_ci/* END OF MAC REGISTER ADDRESS MAP */ 106862306a36Sopenharmony_ci 106962306a36Sopenharmony_ci/* START OF MAC STAT REGISTER ADDRESS MAP */ 107062306a36Sopenharmony_ci/* structure for Carry Register One and it's Mask Register reg located in mac 107162306a36Sopenharmony_ci * stat address map address 0x6130 and 0x6138. 107262306a36Sopenharmony_ci * 107362306a36Sopenharmony_ci * 31: tr64 107462306a36Sopenharmony_ci * 30: tr127 107562306a36Sopenharmony_ci * 29: tr255 107662306a36Sopenharmony_ci * 28: tr511 107762306a36Sopenharmony_ci * 27: tr1k 107862306a36Sopenharmony_ci * 26: trmax 107962306a36Sopenharmony_ci * 25: trmgv 108062306a36Sopenharmony_ci * 24-17: unused 108162306a36Sopenharmony_ci * 16: rbyt 108262306a36Sopenharmony_ci * 15: rpkt 108362306a36Sopenharmony_ci * 14: rfcs 108462306a36Sopenharmony_ci * 13: rmca 108562306a36Sopenharmony_ci * 12: rbca 108662306a36Sopenharmony_ci * 11: rxcf 108762306a36Sopenharmony_ci * 10: rxpf 108862306a36Sopenharmony_ci * 9: rxuo 108962306a36Sopenharmony_ci * 8: raln 109062306a36Sopenharmony_ci * 7: rflr 109162306a36Sopenharmony_ci * 6: rcde 109262306a36Sopenharmony_ci * 5: rcse 109362306a36Sopenharmony_ci * 4: rund 109462306a36Sopenharmony_ci * 3: rovr 109562306a36Sopenharmony_ci * 2: rfrg 109662306a36Sopenharmony_ci * 1: rjbr 109762306a36Sopenharmony_ci * 0: rdrp 109862306a36Sopenharmony_ci */ 109962306a36Sopenharmony_ci 110062306a36Sopenharmony_ci/* structure for Carry Register Two Mask Register reg in mac stat address map. 110162306a36Sopenharmony_ci * located at address 0x613C 110262306a36Sopenharmony_ci * 110362306a36Sopenharmony_ci * 31-20: unused 110462306a36Sopenharmony_ci * 19: tjbr 110562306a36Sopenharmony_ci * 18: tfcs 110662306a36Sopenharmony_ci * 17: txcf 110762306a36Sopenharmony_ci * 16: tovr 110862306a36Sopenharmony_ci * 15: tund 110962306a36Sopenharmony_ci * 14: trfg 111062306a36Sopenharmony_ci * 13: tbyt 111162306a36Sopenharmony_ci * 12: tpkt 111262306a36Sopenharmony_ci * 11: tmca 111362306a36Sopenharmony_ci * 10: tbca 111462306a36Sopenharmony_ci * 9: txpf 111562306a36Sopenharmony_ci * 8: tdfr 111662306a36Sopenharmony_ci * 7: tedf 111762306a36Sopenharmony_ci * 6: tscl 111862306a36Sopenharmony_ci * 5: tmcl 111962306a36Sopenharmony_ci * 4: tlcl 112062306a36Sopenharmony_ci * 3: txcl 112162306a36Sopenharmony_ci * 2: tncl 112262306a36Sopenharmony_ci * 1: tpfh 112362306a36Sopenharmony_ci * 0: tdrp 112462306a36Sopenharmony_ci */ 112562306a36Sopenharmony_ci 112662306a36Sopenharmony_ci/* MAC STATS Module of JAGCore Address Mapping 112762306a36Sopenharmony_ci */ 112862306a36Sopenharmony_cistruct macstat_regs { /* Location: */ 112962306a36Sopenharmony_ci u32 pad[32]; /* 0x6000 - 607C */ 113062306a36Sopenharmony_ci 113162306a36Sopenharmony_ci /* counters */ 113262306a36Sopenharmony_ci u32 txrx_0_64_byte_frames; /* 0x6080 */ 113362306a36Sopenharmony_ci u32 txrx_65_127_byte_frames; /* 0x6084 */ 113462306a36Sopenharmony_ci u32 txrx_128_255_byte_frames; /* 0x6088 */ 113562306a36Sopenharmony_ci u32 txrx_256_511_byte_frames; /* 0x608C */ 113662306a36Sopenharmony_ci u32 txrx_512_1023_byte_frames; /* 0x6090 */ 113762306a36Sopenharmony_ci u32 txrx_1024_1518_byte_frames; /* 0x6094 */ 113862306a36Sopenharmony_ci u32 txrx_1519_1522_gvln_frames; /* 0x6098 */ 113962306a36Sopenharmony_ci u32 rx_bytes; /* 0x609C */ 114062306a36Sopenharmony_ci u32 rx_packets; /* 0x60A0 */ 114162306a36Sopenharmony_ci u32 rx_fcs_errs; /* 0x60A4 */ 114262306a36Sopenharmony_ci u32 rx_multicast_packets; /* 0x60A8 */ 114362306a36Sopenharmony_ci u32 rx_broadcast_packets; /* 0x60AC */ 114462306a36Sopenharmony_ci u32 rx_control_frames; /* 0x60B0 */ 114562306a36Sopenharmony_ci u32 rx_pause_frames; /* 0x60B4 */ 114662306a36Sopenharmony_ci u32 rx_unknown_opcodes; /* 0x60B8 */ 114762306a36Sopenharmony_ci u32 rx_align_errs; /* 0x60BC */ 114862306a36Sopenharmony_ci u32 rx_frame_len_errs; /* 0x60C0 */ 114962306a36Sopenharmony_ci u32 rx_code_errs; /* 0x60C4 */ 115062306a36Sopenharmony_ci u32 rx_carrier_sense_errs; /* 0x60C8 */ 115162306a36Sopenharmony_ci u32 rx_undersize_packets; /* 0x60CC */ 115262306a36Sopenharmony_ci u32 rx_oversize_packets; /* 0x60D0 */ 115362306a36Sopenharmony_ci u32 rx_fragment_packets; /* 0x60D4 */ 115462306a36Sopenharmony_ci u32 rx_jabbers; /* 0x60D8 */ 115562306a36Sopenharmony_ci u32 rx_drops; /* 0x60DC */ 115662306a36Sopenharmony_ci u32 tx_bytes; /* 0x60E0 */ 115762306a36Sopenharmony_ci u32 tx_packets; /* 0x60E4 */ 115862306a36Sopenharmony_ci u32 tx_multicast_packets; /* 0x60E8 */ 115962306a36Sopenharmony_ci u32 tx_broadcast_packets; /* 0x60EC */ 116062306a36Sopenharmony_ci u32 tx_pause_frames; /* 0x60F0 */ 116162306a36Sopenharmony_ci u32 tx_deferred; /* 0x60F4 */ 116262306a36Sopenharmony_ci u32 tx_excessive_deferred; /* 0x60F8 */ 116362306a36Sopenharmony_ci u32 tx_single_collisions; /* 0x60FC */ 116462306a36Sopenharmony_ci u32 tx_multiple_collisions; /* 0x6100 */ 116562306a36Sopenharmony_ci u32 tx_late_collisions; /* 0x6104 */ 116662306a36Sopenharmony_ci u32 tx_excessive_collisions; /* 0x6108 */ 116762306a36Sopenharmony_ci u32 tx_total_collisions; /* 0x610C */ 116862306a36Sopenharmony_ci u32 tx_pause_honored_frames; /* 0x6110 */ 116962306a36Sopenharmony_ci u32 tx_drops; /* 0x6114 */ 117062306a36Sopenharmony_ci u32 tx_jabbers; /* 0x6118 */ 117162306a36Sopenharmony_ci u32 tx_fcs_errs; /* 0x611C */ 117262306a36Sopenharmony_ci u32 tx_control_frames; /* 0x6120 */ 117362306a36Sopenharmony_ci u32 tx_oversize_frames; /* 0x6124 */ 117462306a36Sopenharmony_ci u32 tx_undersize_frames; /* 0x6128 */ 117562306a36Sopenharmony_ci u32 tx_fragments; /* 0x612C */ 117662306a36Sopenharmony_ci u32 carry_reg1; /* 0x6130 */ 117762306a36Sopenharmony_ci u32 carry_reg2; /* 0x6134 */ 117862306a36Sopenharmony_ci u32 carry_reg1_mask; /* 0x6138 */ 117962306a36Sopenharmony_ci u32 carry_reg2_mask; /* 0x613C */ 118062306a36Sopenharmony_ci}; 118162306a36Sopenharmony_ci 118262306a36Sopenharmony_ci/* END OF MAC STAT REGISTER ADDRESS MAP */ 118362306a36Sopenharmony_ci 118462306a36Sopenharmony_ci/* START OF MMC REGISTER ADDRESS MAP */ 118562306a36Sopenharmony_ci/* Main Memory Controller Control reg in mmc address map. 118662306a36Sopenharmony_ci * located at address 0x7000 118762306a36Sopenharmony_ci */ 118862306a36Sopenharmony_ci#define ET_MMC_ENABLE 1 118962306a36Sopenharmony_ci#define ET_MMC_ARB_DISABLE 2 119062306a36Sopenharmony_ci#define ET_MMC_RXMAC_DISABLE 4 119162306a36Sopenharmony_ci#define ET_MMC_TXMAC_DISABLE 8 119262306a36Sopenharmony_ci#define ET_MMC_TXDMA_DISABLE 16 119362306a36Sopenharmony_ci#define ET_MMC_RXDMA_DISABLE 32 119462306a36Sopenharmony_ci#define ET_MMC_FORCE_CE 64 119562306a36Sopenharmony_ci 119662306a36Sopenharmony_ci/* Main Memory Controller Host Memory Access Address reg in mmc 119762306a36Sopenharmony_ci * address map. Located at address 0x7004. Top 16 bits hold the address bits 119862306a36Sopenharmony_ci */ 119962306a36Sopenharmony_ci#define ET_SRAM_REQ_ACCESS 1 120062306a36Sopenharmony_ci#define ET_SRAM_WR_ACCESS 2 120162306a36Sopenharmony_ci#define ET_SRAM_IS_CTRL 4 120262306a36Sopenharmony_ci 120362306a36Sopenharmony_ci/* structure for Main Memory Controller Host Memory Access Data reg in mmc 120462306a36Sopenharmony_ci * address map. Located at address 0x7008 - 0x7014 120562306a36Sopenharmony_ci * Defined earlier (u32) 120662306a36Sopenharmony_ci */ 120762306a36Sopenharmony_ci 120862306a36Sopenharmony_ci/* Memory Control Module of JAGCore Address Mapping 120962306a36Sopenharmony_ci */ 121062306a36Sopenharmony_cistruct mmc_regs { /* Location: */ 121162306a36Sopenharmony_ci u32 mmc_ctrl; /* 0x7000 */ 121262306a36Sopenharmony_ci u32 sram_access; /* 0x7004 */ 121362306a36Sopenharmony_ci u32 sram_word1; /* 0x7008 */ 121462306a36Sopenharmony_ci u32 sram_word2; /* 0x700C */ 121562306a36Sopenharmony_ci u32 sram_word3; /* 0x7010 */ 121662306a36Sopenharmony_ci u32 sram_word4; /* 0x7014 */ 121762306a36Sopenharmony_ci}; 121862306a36Sopenharmony_ci 121962306a36Sopenharmony_ci/* END OF MMC REGISTER ADDRESS MAP */ 122062306a36Sopenharmony_ci 122162306a36Sopenharmony_ci/* JAGCore Address Mapping 122262306a36Sopenharmony_ci */ 122362306a36Sopenharmony_cistruct address_map { 122462306a36Sopenharmony_ci struct global_regs global; 122562306a36Sopenharmony_ci /* unused section of global address map */ 122662306a36Sopenharmony_ci u8 unused_global[4096 - sizeof(struct global_regs)]; 122762306a36Sopenharmony_ci struct txdma_regs txdma; 122862306a36Sopenharmony_ci /* unused section of txdma address map */ 122962306a36Sopenharmony_ci u8 unused_txdma[4096 - sizeof(struct txdma_regs)]; 123062306a36Sopenharmony_ci struct rxdma_regs rxdma; 123162306a36Sopenharmony_ci /* unused section of rxdma address map */ 123262306a36Sopenharmony_ci u8 unused_rxdma[4096 - sizeof(struct rxdma_regs)]; 123362306a36Sopenharmony_ci struct txmac_regs txmac; 123462306a36Sopenharmony_ci /* unused section of txmac address map */ 123562306a36Sopenharmony_ci u8 unused_txmac[4096 - sizeof(struct txmac_regs)]; 123662306a36Sopenharmony_ci struct rxmac_regs rxmac; 123762306a36Sopenharmony_ci /* unused section of rxmac address map */ 123862306a36Sopenharmony_ci u8 unused_rxmac[4096 - sizeof(struct rxmac_regs)]; 123962306a36Sopenharmony_ci struct mac_regs mac; 124062306a36Sopenharmony_ci /* unused section of mac address map */ 124162306a36Sopenharmony_ci u8 unused_mac[4096 - sizeof(struct mac_regs)]; 124262306a36Sopenharmony_ci struct macstat_regs macstat; 124362306a36Sopenharmony_ci /* unused section of mac stat address map */ 124462306a36Sopenharmony_ci u8 unused_mac_stat[4096 - sizeof(struct macstat_regs)]; 124562306a36Sopenharmony_ci struct mmc_regs mmc; 124662306a36Sopenharmony_ci /* unused section of mmc address map */ 124762306a36Sopenharmony_ci u8 unused_mmc[4096 - sizeof(struct mmc_regs)]; 124862306a36Sopenharmony_ci /* unused section of address map */ 124962306a36Sopenharmony_ci u8 unused_[1015808]; 125062306a36Sopenharmony_ci u8 unused_exp_rom[4096]; /* MGS-size TBD */ 125162306a36Sopenharmony_ci u8 unused__[524288]; /* unused section of address map */ 125262306a36Sopenharmony_ci}; 125362306a36Sopenharmony_ci 125462306a36Sopenharmony_ci/* Defines for generic MII registers 0x00 -> 0x0F can be found in 125562306a36Sopenharmony_ci * include/linux/mii.h 125662306a36Sopenharmony_ci */ 125762306a36Sopenharmony_ci/* some defines for modem registers that seem to be 'reserved' */ 125862306a36Sopenharmony_ci#define PHY_INDEX_REG 0x10 125962306a36Sopenharmony_ci#define PHY_DATA_REG 0x11 126062306a36Sopenharmony_ci#define PHY_MPHY_CONTROL_REG 0x12 126162306a36Sopenharmony_ci 126262306a36Sopenharmony_ci/* defines for specified registers */ 126362306a36Sopenharmony_ci#define PHY_LOOPBACK_CONTROL 0x13 /* TRU_VMI_LOOPBACK_CONTROL_1_REG 19 */ 126462306a36Sopenharmony_ci /* TRU_VMI_LOOPBACK_CONTROL_2_REG 20 */ 126562306a36Sopenharmony_ci#define PHY_REGISTER_MGMT_CONTROL 0x15 /* TRU_VMI_MI_SEQ_CONTROL_REG 21 */ 126662306a36Sopenharmony_ci#define PHY_CONFIG 0x16 /* TRU_VMI_CONFIGURATION_REG 22 */ 126762306a36Sopenharmony_ci#define PHY_PHY_CONTROL 0x17 /* TRU_VMI_PHY_CONTROL_REG 23 */ 126862306a36Sopenharmony_ci#define PHY_INTERRUPT_MASK 0x18 /* TRU_VMI_INTERRUPT_MASK_REG 24 */ 126962306a36Sopenharmony_ci#define PHY_INTERRUPT_STATUS 0x19 /* TRU_VMI_INTERRUPT_STATUS_REG 25 */ 127062306a36Sopenharmony_ci#define PHY_PHY_STATUS 0x1A /* TRU_VMI_PHY_STATUS_REG 26 */ 127162306a36Sopenharmony_ci#define PHY_LED_1 0x1B /* TRU_VMI_LED_CONTROL_1_REG 27 */ 127262306a36Sopenharmony_ci#define PHY_LED_2 0x1C /* TRU_VMI_LED_CONTROL_2_REG 28 */ 127362306a36Sopenharmony_ci /* TRU_VMI_LINK_CONTROL_REG 29 */ 127462306a36Sopenharmony_ci /* TRU_VMI_TIMING_CONTROL_REG */ 127562306a36Sopenharmony_ci 127662306a36Sopenharmony_ci/* MI Register 10: Gigabit basic mode status reg(Reg 0x0A) */ 127762306a36Sopenharmony_ci#define ET_1000BT_MSTR_SLV 0x4000 127862306a36Sopenharmony_ci 127962306a36Sopenharmony_ci/* MI Register 16 - 18: Reserved Reg(0x10-0x12) */ 128062306a36Sopenharmony_ci 128162306a36Sopenharmony_ci/* MI Register 19: Loopback Control Reg(0x13) 128262306a36Sopenharmony_ci * 15: mii_en 128362306a36Sopenharmony_ci * 14: pcs_en 128462306a36Sopenharmony_ci * 13: pmd_en 128562306a36Sopenharmony_ci * 12: all_digital_en 128662306a36Sopenharmony_ci * 11: replica_en 128762306a36Sopenharmony_ci * 10: line_driver_en 128862306a36Sopenharmony_ci * 9-0: reserved 128962306a36Sopenharmony_ci */ 129062306a36Sopenharmony_ci 129162306a36Sopenharmony_ci/* MI Register 20: Reserved Reg(0x14) */ 129262306a36Sopenharmony_ci 129362306a36Sopenharmony_ci/* MI Register 21: Management Interface Control Reg(0x15) 129462306a36Sopenharmony_ci * 15-11: reserved 129562306a36Sopenharmony_ci * 10-4: mi_error_count 129662306a36Sopenharmony_ci * 3: reserved 129762306a36Sopenharmony_ci * 2: ignore_10g_fr 129862306a36Sopenharmony_ci * 1: reserved 129962306a36Sopenharmony_ci * 0: preamble_suppress_en 130062306a36Sopenharmony_ci */ 130162306a36Sopenharmony_ci 130262306a36Sopenharmony_ci/* MI Register 22: PHY Configuration Reg(0x16) 130362306a36Sopenharmony_ci * 15: crs_tx_en 130462306a36Sopenharmony_ci * 14: reserved 130562306a36Sopenharmony_ci * 13-12: tx_fifo_depth 130662306a36Sopenharmony_ci * 11-10: speed_downshift 130762306a36Sopenharmony_ci * 9: pbi_detect 130862306a36Sopenharmony_ci * 8: tbi_rate 130962306a36Sopenharmony_ci * 7: alternate_np 131062306a36Sopenharmony_ci * 6: group_mdio_en 131162306a36Sopenharmony_ci * 5: tx_clock_en 131262306a36Sopenharmony_ci * 4: sys_clock_en 131362306a36Sopenharmony_ci * 3: reserved 131462306a36Sopenharmony_ci * 2-0: mac_if_mode 131562306a36Sopenharmony_ci */ 131662306a36Sopenharmony_ci#define ET_PHY_CONFIG_TX_FIFO_DEPTH 0x3000 131762306a36Sopenharmony_ci 131862306a36Sopenharmony_ci#define ET_PHY_CONFIG_FIFO_DEPTH_8 0x0000 131962306a36Sopenharmony_ci#define ET_PHY_CONFIG_FIFO_DEPTH_16 0x1000 132062306a36Sopenharmony_ci#define ET_PHY_CONFIG_FIFO_DEPTH_32 0x2000 132162306a36Sopenharmony_ci#define ET_PHY_CONFIG_FIFO_DEPTH_64 0x3000 132262306a36Sopenharmony_ci 132362306a36Sopenharmony_ci/* MI Register 23: PHY CONTROL Reg(0x17) 132462306a36Sopenharmony_ci * 15: reserved 132562306a36Sopenharmony_ci * 14: tdr_en 132662306a36Sopenharmony_ci * 13: reserved 132762306a36Sopenharmony_ci * 12-11: downshift_attempts 132862306a36Sopenharmony_ci * 10-6: reserved 132962306a36Sopenharmony_ci * 5: jabber_10baseT 133062306a36Sopenharmony_ci * 4: sqe_10baseT 133162306a36Sopenharmony_ci * 3: tp_loopback_10baseT 133262306a36Sopenharmony_ci * 2: preamble_gen_en 133362306a36Sopenharmony_ci * 1: reserved 133462306a36Sopenharmony_ci * 0: force_int 133562306a36Sopenharmony_ci */ 133662306a36Sopenharmony_ci 133762306a36Sopenharmony_ci/* MI Register 24: Interrupt Mask Reg(0x18) 133862306a36Sopenharmony_ci * 15-10: reserved 133962306a36Sopenharmony_ci * 9: mdio_sync_lost 134062306a36Sopenharmony_ci * 8: autoneg_status 134162306a36Sopenharmony_ci * 7: hi_bit_err 134262306a36Sopenharmony_ci * 6: np_rx 134362306a36Sopenharmony_ci * 5: err_counter_full 134462306a36Sopenharmony_ci * 4: fifo_over_underflow 134562306a36Sopenharmony_ci * 3: rx_status 134662306a36Sopenharmony_ci * 2: link_status 134762306a36Sopenharmony_ci * 1: automatic_speed 134862306a36Sopenharmony_ci * 0: int_en 134962306a36Sopenharmony_ci */ 135062306a36Sopenharmony_ci 135162306a36Sopenharmony_ci/* MI Register 25: Interrupt Status Reg(0x19) 135262306a36Sopenharmony_ci * 15-10: reserved 135362306a36Sopenharmony_ci * 9: mdio_sync_lost 135462306a36Sopenharmony_ci * 8: autoneg_status 135562306a36Sopenharmony_ci * 7: hi_bit_err 135662306a36Sopenharmony_ci * 6: np_rx 135762306a36Sopenharmony_ci * 5: err_counter_full 135862306a36Sopenharmony_ci * 4: fifo_over_underflow 135962306a36Sopenharmony_ci * 3: rx_status 136062306a36Sopenharmony_ci * 2: link_status 136162306a36Sopenharmony_ci * 1: automatic_speed 136262306a36Sopenharmony_ci * 0: int_en 136362306a36Sopenharmony_ci */ 136462306a36Sopenharmony_ci 136562306a36Sopenharmony_ci/* MI Register 26: PHY Status Reg(0x1A) 136662306a36Sopenharmony_ci * 15: reserved 136762306a36Sopenharmony_ci * 14-13: autoneg_fault 136862306a36Sopenharmony_ci * 12: autoneg_status 136962306a36Sopenharmony_ci * 11: mdi_x_status 137062306a36Sopenharmony_ci * 10: polarity_status 137162306a36Sopenharmony_ci * 9-8: speed_status 137262306a36Sopenharmony_ci * 7: duplex_status 137362306a36Sopenharmony_ci * 6: link_status 137462306a36Sopenharmony_ci * 5: tx_status 137562306a36Sopenharmony_ci * 4: rx_status 137662306a36Sopenharmony_ci * 3: collision_status 137762306a36Sopenharmony_ci * 2: autoneg_en 137862306a36Sopenharmony_ci * 1: pause_en 137962306a36Sopenharmony_ci * 0: asymmetric_dir 138062306a36Sopenharmony_ci */ 138162306a36Sopenharmony_ci#define ET_PHY_AUTONEG_STATUS 0x1000 138262306a36Sopenharmony_ci#define ET_PHY_POLARITY_STATUS 0x0400 138362306a36Sopenharmony_ci#define ET_PHY_SPEED_STATUS 0x0300 138462306a36Sopenharmony_ci#define ET_PHY_DUPLEX_STATUS 0x0080 138562306a36Sopenharmony_ci#define ET_PHY_LSTATUS 0x0040 138662306a36Sopenharmony_ci#define ET_PHY_AUTONEG_ENABLE 0x0020 138762306a36Sopenharmony_ci 138862306a36Sopenharmony_ci/* MI Register 27: LED Control Reg 1(0x1B) 138962306a36Sopenharmony_ci * 15-14: reserved 139062306a36Sopenharmony_ci * 13-12: led_dup_indicate 139162306a36Sopenharmony_ci * 11-10: led_10baseT 139262306a36Sopenharmony_ci * 9-8: led_collision 139362306a36Sopenharmony_ci * 7-4: reserved 139462306a36Sopenharmony_ci * 3-2: pulse_dur 139562306a36Sopenharmony_ci * 1: pulse_stretch1 139662306a36Sopenharmony_ci * 0: pulse_stretch0 139762306a36Sopenharmony_ci */ 139862306a36Sopenharmony_ci 139962306a36Sopenharmony_ci/* MI Register 28: LED Control Reg 2(0x1C) 140062306a36Sopenharmony_ci * 15-12: led_link 140162306a36Sopenharmony_ci * 11-8: led_tx_rx 140262306a36Sopenharmony_ci * 7-4: led_100BaseTX 140362306a36Sopenharmony_ci * 3-0: led_1000BaseT 140462306a36Sopenharmony_ci */ 140562306a36Sopenharmony_ci#define ET_LED2_LED_LINK 0xF000 140662306a36Sopenharmony_ci#define ET_LED2_LED_TXRX 0x0F00 140762306a36Sopenharmony_ci#define ET_LED2_LED_100TX 0x00F0 140862306a36Sopenharmony_ci#define ET_LED2_LED_1000T 0x000F 140962306a36Sopenharmony_ci 141062306a36Sopenharmony_ci/* defines for LED control reg 2 values */ 141162306a36Sopenharmony_ci#define LED_VAL_1000BT 0x0 141262306a36Sopenharmony_ci#define LED_VAL_100BTX 0x1 141362306a36Sopenharmony_ci#define LED_VAL_10BT 0x2 141462306a36Sopenharmony_ci#define LED_VAL_1000BT_100BTX 0x3 /* 1000BT on, 100BTX blink */ 141562306a36Sopenharmony_ci#define LED_VAL_LINKON 0x4 141662306a36Sopenharmony_ci#define LED_VAL_TX 0x5 141762306a36Sopenharmony_ci#define LED_VAL_RX 0x6 141862306a36Sopenharmony_ci#define LED_VAL_TXRX 0x7 /* TX or RX */ 141962306a36Sopenharmony_ci#define LED_VAL_DUPLEXFULL 0x8 142062306a36Sopenharmony_ci#define LED_VAL_COLLISION 0x9 142162306a36Sopenharmony_ci#define LED_VAL_LINKON_ACTIVE 0xA /* Link on, activity blink */ 142262306a36Sopenharmony_ci#define LED_VAL_LINKON_RECV 0xB /* Link on, receive blink */ 142362306a36Sopenharmony_ci#define LED_VAL_DUPLEXFULL_COLLISION 0xC /* Duplex on, collision blink */ 142462306a36Sopenharmony_ci#define LED_VAL_BLINK 0xD 142562306a36Sopenharmony_ci#define LED_VAL_ON 0xE 142662306a36Sopenharmony_ci#define LED_VAL_OFF 0xF 142762306a36Sopenharmony_ci 142862306a36Sopenharmony_ci#define LED_LINK_SHIFT 12 142962306a36Sopenharmony_ci#define LED_TXRX_SHIFT 8 143062306a36Sopenharmony_ci#define LED_100TX_SHIFT 4 143162306a36Sopenharmony_ci 143262306a36Sopenharmony_ci/* MI Register 29 - 31: Reserved Reg(0x1D - 0x1E) */ 1433