1233545Sjchandra/*- 2233545Sjchandra * Copyright (c) 2003-2012 Broadcom Corporation 3233545Sjchandra * All Rights Reserved 4233545Sjchandra * 5233545Sjchandra * Redistribution and use in source and binary forms, with or without 6233545Sjchandra * modification, are permitted provided that the following conditions 7233545Sjchandra * are met: 8233545Sjchandra * 9233545Sjchandra * 1. Redistributions of source code must retain the above copyright 10233545Sjchandra * notice, this list of conditions and the following disclaimer. 11233545Sjchandra * 2. Redistributions in binary form must reproduce the above copyright 12233545Sjchandra * notice, this list of conditions and the following disclaimer in 13233545Sjchandra * the documentation and/or other materials provided with the 14233545Sjchandra * distribution. 15233545Sjchandra * 16233545Sjchandra * THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR 17233545Sjchandra * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18233545Sjchandra * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19233545Sjchandra * ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE 20233545Sjchandra * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21233545Sjchandra * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22233545Sjchandra * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23233545Sjchandra * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24233545Sjchandra * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25233545Sjchandra * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26233545Sjchandra * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27233545Sjchandra * 28233545Sjchandra * $FreeBSD: releng/10.2/sys/mips/nlm/hal/sgmii.h 233545 2012-03-27 14:05:12Z jchandra $ 29233545Sjchandra */ 30233545Sjchandra 31233545Sjchandra#ifndef __NLM_SGMII_H__ 32233545Sjchandra#define __NLM_SGMII_H__ 33233545Sjchandra 34233545Sjchandra/** 35233545Sjchandra* @file_name sgmii.h 36233545Sjchandra* @author Netlogic Microsystems 37233545Sjchandra* @brief Basic definitions of XLP SGMII ports 38233545Sjchandra*/ 39233545Sjchandra 40233545Sjchandra#define SGMII_MAC_CONF1(block, i) NAE_REG(block, i, 0x00) 41233545Sjchandra#define SGMII_MAC_CONF2(block, i) NAE_REG(block, i, 0x01) 42233545Sjchandra#define SGMII_IPG_IFG(block, i) NAE_REG(block, i, 0x02) 43233545Sjchandra#define SGMII_HLF_DUP(block, i) NAE_REG(block, i, 0x03) 44233545Sjchandra#define SGMII_MAX_FRAME(block, i) NAE_REG(block, i, 0x04) 45233545Sjchandra#define SGMII_TEST(block, i) NAE_REG(block, i, 0x07) 46233545Sjchandra#define SGMII_MIIM_CONF(block, i) NAE_REG(block, i, 0x08) 47233545Sjchandra#define SGMII_MIIM_CMD(block, i) NAE_REG(block, i, 0x09) 48233545Sjchandra#define SGMII_MIIM_ADDR(block, i) NAE_REG(block, i, 0x0a) 49233545Sjchandra#define SGMII_MIIM_CTRL(block, i) NAE_REG(block, i, 0x0b) 50233545Sjchandra#define SGMII_MIIM_STAT(block, i) NAE_REG(block, i, 0x0c) 51233545Sjchandra#define SGMII_MIIM_IND(block, i) NAE_REG(block, i, 0x0d) 52233545Sjchandra#define SGMII_IO_CTRL(block, i) NAE_REG(block, i, 0x0e) 53233545Sjchandra#define SGMII_IO_STAT(block, i) NAE_REG(block, i, 0x0f) 54233545Sjchandra#define SGMII_STATS_MLR(block, i) NAE_REG(block, i, 0x1f) 55233545Sjchandra#define SGMII_STATS_TR64(block, i) NAE_REG(block, i, 0x20) 56233545Sjchandra#define SGMII_STATS_TR127(block, i) NAE_REG(block, i, 0x21) 57233545Sjchandra#define SGMII_STATS_TR255(block, i) NAE_REG(block, i, 0x22) 58233545Sjchandra#define SGMII_STATS_TR511(block, i) NAE_REG(block, i, 0x23) 59233545Sjchandra#define SGMII_STATS_TR1K(block, i) NAE_REG(block, i, 0x24) 60233545Sjchandra#define SGMII_STATS_TRMAX(block, i) NAE_REG(block, i, 0x25) 61233545Sjchandra#define SGMII_STATS_TRMGV(block, i) NAE_REG(block, i, 0x26) 62233545Sjchandra#define SGMII_STATS_RBYT(block, i) NAE_REG(block, i, 0x27) 63233545Sjchandra#define SGMII_STATS_RPKT(block, i) NAE_REG(block, i, 0x28) 64233545Sjchandra#define SGMII_STATS_RFCS(block, i) NAE_REG(block, i, 0x29) 65233545Sjchandra#define SGMII_STATS_RMCA(block, i) NAE_REG(block, i, 0x2a) 66233545Sjchandra#define SGMII_STATS_RBCA(block, i) NAE_REG(block, i, 0x2b) 67233545Sjchandra#define SGMII_STATS_RXCF(block, i) NAE_REG(block, i, 0x2c) 68233545Sjchandra#define SGMII_STATS_RXPF(block, i) NAE_REG(block, i, 0x2d) 69233545Sjchandra#define SGMII_STATS_RXUO(block, i) NAE_REG(block, i, 0x2e) 70233545Sjchandra#define SGMII_STATS_RALN(block, i) NAE_REG(block, i, 0x2f) 71233545Sjchandra#define SGMII_STATS_RFLR(block, i) NAE_REG(block, i, 0x30) 72233545Sjchandra#define SGMII_STATS_RCDE(block, i) NAE_REG(block, i, 0x31) 73233545Sjchandra#define SGMII_STATS_RCSE(block, i) NAE_REG(block, i, 0x32) 74233545Sjchandra#define SGMII_STATS_RUND(block, i) NAE_REG(block, i, 0x33) 75233545Sjchandra#define SGMII_STATS_ROVR(block, i) NAE_REG(block, i, 0x34) 76233545Sjchandra#define SGMII_STATS_RFRG(block, i) NAE_REG(block, i, 0x35) 77233545Sjchandra#define SGMII_STATS_RJBR(block, i) NAE_REG(block, i, 0x36) 78233545Sjchandra#define SGMII_STATS_TBYT(block, i) NAE_REG(block, i, 0x38) 79233545Sjchandra#define SGMII_STATS_TPKT(block, i) NAE_REG(block, i, 0x39) 80233545Sjchandra#define SGMII_STATS_TMCA(block, i) NAE_REG(block, i, 0x3a) 81233545Sjchandra#define SGMII_STATS_TBCA(block, i) NAE_REG(block, i, 0x3b) 82233545Sjchandra#define SGMII_STATS_TXPF(block, i) NAE_REG(block, i, 0x3c) 83233545Sjchandra#define SGMII_STATS_TDFR(block, i) NAE_REG(block, i, 0x3d) 84233545Sjchandra#define SGMII_STATS_TEDF(block, i) NAE_REG(block, i, 0x3e) 85233545Sjchandra#define SGMII_STATS_TSCL(block, i) NAE_REG(block, i, 0x3f) 86233545Sjchandra#define SGMII_STATS_TMCL(block, i) NAE_REG(block, i, 0x40) 87233545Sjchandra#define SGMII_STATS_TLCL(block, i) NAE_REG(block, i, 0x41) 88233545Sjchandra#define SGMII_STATS_TXCL(block, i) NAE_REG(block, i, 0x42) 89233545Sjchandra#define SGMII_STATS_TNCL(block, i) NAE_REG(block, i, 0x43) 90233545Sjchandra#define SGMII_STATS_TJBR(block, i) NAE_REG(block, i, 0x46) 91233545Sjchandra#define SGMII_STATS_TFCS(block, i) NAE_REG(block, i, 0x47) 92233545Sjchandra#define SGMII_STATS_TXCF(block, i) NAE_REG(block, i, 0x48) 93233545Sjchandra#define SGMII_STATS_TOVR(block, i) NAE_REG(block, i, 0x49) 94233545Sjchandra#define SGMII_STATS_TUND(block, i) NAE_REG(block, i, 0x4a) 95233545Sjchandra#define SGMII_STATS_TFRG(block, i) NAE_REG(block, i, 0x4b) 96233545Sjchandra#define SGMII_STATS_CAR1(block, i) NAE_REG(block, i, 0x4c) 97233545Sjchandra#define SGMII_STATS_CAR2(block, i) NAE_REG(block, i, 0x4d) 98233545Sjchandra#define SGMII_STATS_CAM1(block, i) NAE_REG(block, i, 0x4e) 99233545Sjchandra#define SGMII_STATS_CAM2(block, i) NAE_REG(block, i, 0x4f) 100233545Sjchandra#define SGMII_MAC_ADDR0_LO(block, i) NAE_REG(block, i, 0x50) 101233545Sjchandra#define SGMII_MAC_ADDR0_HI(block, i) NAE_REG(block, i, 0x51) 102233545Sjchandra#define SGMII_MAC_ADDR1_LO(block, i) NAE_REG(block, i, 0x52) 103233545Sjchandra#define SGMII_MAC_ADDR1_HI(block, i) NAE_REG(block, i, 0x53) 104233545Sjchandra#define SGMII_MAC_ADDR2_LO(block, i) NAE_REG(block, i, 0x54) 105233545Sjchandra#define SGMII_MAC_ADDR2_HI(block, i) NAE_REG(block, i, 0x55) 106233545Sjchandra#define SGMII_MAC_ADDR3_LO(block, i) NAE_REG(block, i, 0x56) 107233545Sjchandra#define SGMII_MAC_ADDR3_HI(block, i) NAE_REG(block, i, 0x57) 108233545Sjchandra#define SGMII_MAC_ADDR_MASK0_LO(block, i) NAE_REG(block, i, 0x58) 109233545Sjchandra#define SGMII_MAC_ADDR_MASK0_HI(block, i) NAE_REG(block, i, 0x59) 110233545Sjchandra#define SGMII_MAC_ADDR_MASK1_LO(block, i) NAE_REG(block, i, 0x5a) 111233545Sjchandra#define SGMII_MAC_ADDR_MASK1_HI(block, i) NAE_REG(block, i, 0x5b) 112233545Sjchandra#define SGMII_MAC_FILTER_CONFIG(block, i) NAE_REG(block, i, 0x5c) 113233545Sjchandra#define SGMII_HASHTBL_VEC_B31_0(block, i) NAE_REG(block, i, 0x60) 114233545Sjchandra#define SGMII_HASHTBL_VEC_B63_32(block, i) NAE_REG(block, i, 0x61) 115233545Sjchandra#define SGMII_HASHTBL_VEC_B95_64(block, i) NAE_REG(block, i, 0x62) 116233545Sjchandra#define SGMII_HASHTBL_VEC_B127_96(block, i) NAE_REG(block, i, 0x63) 117233545Sjchandra#define SGMII_HASHTBL_VEC_B159_128(block, i) NAE_REG(block, i, 0x64) 118233545Sjchandra#define SGMII_HASHTBL_VEC_B191_160(block, i) NAE_REG(block, i, 0x65) 119233545Sjchandra#define SGMII_HASHTBL_VEC_B223_192(block, i) NAE_REG(block, i, 0x66) 120233545Sjchandra#define SGMII_HASHTBL_VEC_B255_224(block, i) NAE_REG(block, i, 0x67) 121233545Sjchandra#define SGMII_HASHTBL_VEC_B287_256(block, i) NAE_REG(block, i, 0x68) 122233545Sjchandra#define SGMII_HASHTBL_VEC_B319_288(block, i) NAE_REG(block, i, 0x69) 123233545Sjchandra#define SGMII_HASHTBL_VEC_B351_320(block, i) NAE_REG(block, i, 0x6a) 124233545Sjchandra#define SGMII_HASHTBL_VEC_B383_352(block, i) NAE_REG(block, i, 0x6b) 125233545Sjchandra#define SGMII_HASHTBL_VEC_B415_384(block, i) NAE_REG(block, i, 0x6c) 126233545Sjchandra#define SGMII_HASHTBL_VEC_B447_416(block, i) NAE_REG(block, i, 0x6d) 127233545Sjchandra#define SGMII_HASHTBL_VEC_B479_448(block, i) NAE_REG(block, i, 0x6e) 128233545Sjchandra#define SGMII_HASHTBL_VEC_B511_480(block, i) NAE_REG(block, i, 0x6f) 129233545Sjchandra 130233545Sjchandra#define SGMII_NETIOR_VLANTYPE_FILTER(block, i) NAE_REG(block, i, 0x76) 131233545Sjchandra#define SGMII_NETIOR_RXDROP_CNTR(block, i) NAE_REG(block, i, 0x77) 132233545Sjchandra#define SGMII_NETIOR_PAUSE_QUANTAMULT(block, i) NAE_REG(block, i, 0x78) 133233545Sjchandra#define SGMII_NETIOR_MAC_CTRL_OPCODE(block, i) NAE_REG(block, i, 0x79) 134233545Sjchandra#define SGMII_NETIOR_MAC_DA_H(block, i) NAE_REG(block, i, 0x7a) 135233545Sjchandra#define SGMII_NETIOR_MAC_DA_L(block, i) NAE_REG(block, i, 0x7b) 136233545Sjchandra#define SGMII_NET_IFACE_CTRL3(block, i) NAE_REG(block, i, 0x7c) 137233545Sjchandra#define SGMII_NETIOR_GMAC_STAT(block, i) NAE_REG(block, i, 0x7d) 138233545Sjchandra#define SGMII_NET_IFACE_CTRL2(block, i) NAE_REG(block, i, 0x7e) 139233545Sjchandra#define SGMII_NET_IFACE_CTRL(block, i) NAE_REG(block, i, 0x7f) 140233545Sjchandra 141233545Sjchandra#if !defined(LOCORE) && !defined(__ASSEMBLY__) 142233545Sjchandra/* speed */ 143233545Sjchandraenum nlm_sgmii_speed { 144233545Sjchandra NLM_SGMII_SPEED_10, 145233545Sjchandra NLM_SGMII_SPEED_100, 146233545Sjchandra NLM_SGMII_SPEED_1000, 147233545Sjchandra NLM_SGMII_SPEED_RSVD 148233545Sjchandra}; 149233545Sjchandra 150233545Sjchandra/* duplexity */ 151233545Sjchandraenum nlm_sgmii_duplex_mode { 152233545Sjchandra NLM_SGMII_DUPLEX_AUTO, 153233545Sjchandra NLM_SGMII_DUPLEX_HALF, 154233545Sjchandra NLM_SGMII_DUPLEX_FULL 155233545Sjchandra}; 156233545Sjchandra 157233545Sjchandra/* stats */ 158233545Sjchandraenum { 159233545Sjchandra nlm_sgmii_stats_mlr, 160233545Sjchandra nlm_sgmii_stats_tr64, 161233545Sjchandra nlm_sgmii_stats_tr127, 162233545Sjchandra nlm_sgmii_stats_tr255, 163233545Sjchandra nlm_sgmii_stats_tr511, 164233545Sjchandra nlm_sgmii_stats_tr1k, 165233545Sjchandra nlm_sgmii_stats_trmax, 166233545Sjchandra nlm_sgmii_stats_trmgv, 167233545Sjchandra nlm_sgmii_stats_rbyt, 168233545Sjchandra nlm_sgmii_stats_rpkt, 169233545Sjchandra nlm_sgmii_stats_rfcs, 170233545Sjchandra nlm_sgmii_stats_rmca, 171233545Sjchandra nlm_sgmii_stats_rbca, 172233545Sjchandra nlm_sgmii_stats_rxcf, 173233545Sjchandra nlm_sgmii_stats_rxpf, 174233545Sjchandra nlm_sgmii_stats_rxuo, 175233545Sjchandra nlm_sgmii_stats_raln, 176233545Sjchandra nlm_sgmii_stats_rflr, 177233545Sjchandra nlm_sgmii_stats_rcde, 178233545Sjchandra nlm_sgmii_stats_rcse, 179233545Sjchandra nlm_sgmii_stats_rund, 180233545Sjchandra nlm_sgmii_stats_rovr, 181233545Sjchandra nlm_sgmii_stats_rfrg, 182233545Sjchandra nlm_sgmii_stats_rjbr, 183233545Sjchandra nlm_sgmii_stats_rdummy, /* not used */ 184233545Sjchandra nlm_sgmii_stats_tbyt, 185233545Sjchandra nlm_sgmii_stats_tpkt, 186233545Sjchandra nlm_sgmii_stats_tmca, 187233545Sjchandra nlm_sgmii_stats_tbca, 188233545Sjchandra nlm_sgmii_stats_txpf, 189233545Sjchandra nlm_sgmii_stats_tdfr, 190233545Sjchandra nlm_sgmii_stats_tedf, 191233545Sjchandra nlm_sgmii_stats_tscl, 192233545Sjchandra nlm_sgmii_stats_tmcl, 193233545Sjchandra nlm_sgmii_stats_tlcl, 194233545Sjchandra nlm_sgmii_stats_txcl, 195233545Sjchandra nlm_sgmii_stats_tncl, 196233545Sjchandra nlm_sgmii_stats_tjbr, 197233545Sjchandra nlm_sgmii_stats_tfcs, 198233545Sjchandra nlm_sgmii_stats_txcf, 199233545Sjchandra nlm_sgmii_stats_tovr, 200233545Sjchandra nlm_sgmii_stats_tund, 201233545Sjchandra nlm_sgmii_stats_tfrg, 202233545Sjchandra nlm_sgmii_stats_car1, 203233545Sjchandra nlm_sgmii_stats_car2, 204233545Sjchandra nlm_sgmii_stats_cam1, 205233545Sjchandra nlm_sgmii_stats_cam2 206233545Sjchandra}; 207233545Sjchandra 208233545Sjchandravoid nlm_configure_sgmii_interface(uint64_t, int, int, int, int); 209233545Sjchandravoid nlm_sgmii_pcs_init(uint64_t, uint32_t); 210233545Sjchandravoid nlm_nae_setup_mac(uint64_t, int, int, int, int, int, int, int); 211233545Sjchandravoid nlm_nae_setup_rx_mode_sgmii(uint64_t, int, int, int, int, int, 212233545Sjchandra int, int); 213233545Sjchandravoid nlm_nae_setup_mac_addr_sgmii(uint64_t, int, int, int, uint8_t *); 214233545Sjchandra 215233545Sjchandra#endif /* !(LOCORE) && !(__ASSEMBLY__) */ 216233545Sjchandra 217233545Sjchandra#endif 218