Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * CoreChip-sz SR9700 one chip USB 1.1 Ethernet Devices
0004  *
0005  * Author : Liu Junliang <liujunliang_ljl@163.com>
0006  */
0007 
0008 #ifndef _SR9700_H
0009 #define _SR9700_H
0010 
0011 /* sr9700 spec. register table on Linux platform */
0012 
0013 /* Network Control Reg */
0014 #define SR_NCR          0x00
0015 #define     NCR_RST         (1 << 0)
0016 #define     NCR_LBK         (3 << 1)
0017 #define     NCR_FDX         (1 << 3)
0018 #define     NCR_WAKEEN      (1 << 6)
0019 /* Network Status Reg */
0020 #define SR_NSR          0x01
0021 #define     NSR_RXRDY       (1 << 0)
0022 #define     NSR_RXOV        (1 << 1)
0023 #define     NSR_TX1END      (1 << 2)
0024 #define     NSR_TX2END      (1 << 3)
0025 #define     NSR_TXFULL      (1 << 4)
0026 #define     NSR_WAKEST      (1 << 5)
0027 #define     NSR_LINKST      (1 << 6)
0028 #define     NSR_SPEED       (1 << 7)
0029 /* Tx Control Reg */
0030 #define SR_TCR          0x02
0031 #define     TCR_CRC_DIS     (1 << 1)
0032 #define     TCR_PAD_DIS     (1 << 2)
0033 #define     TCR_LC_CARE     (1 << 3)
0034 #define     TCR_CRS_CARE    (1 << 4)
0035 #define     TCR_EXCECM      (1 << 5)
0036 #define     TCR_LF_EN       (1 << 6)
0037 /* Tx Status Reg for Packet Index 1 */
0038 #define SR_TSR1     0x03
0039 #define     TSR1_EC         (1 << 2)
0040 #define     TSR1_COL        (1 << 3)
0041 #define     TSR1_LC         (1 << 4)
0042 #define     TSR1_NC         (1 << 5)
0043 #define     TSR1_LOC        (1 << 6)
0044 #define     TSR1_TLF        (1 << 7)
0045 /* Tx Status Reg for Packet Index 2 */
0046 #define SR_TSR2     0x04
0047 #define     TSR2_EC         (1 << 2)
0048 #define     TSR2_COL        (1 << 3)
0049 #define     TSR2_LC         (1 << 4)
0050 #define     TSR2_NC         (1 << 5)
0051 #define     TSR2_LOC        (1 << 6)
0052 #define     TSR2_TLF        (1 << 7)
0053 /* Rx Control Reg*/
0054 #define SR_RCR          0x05
0055 #define     RCR_RXEN        (1 << 0)
0056 #define     RCR_PRMSC       (1 << 1)
0057 #define     RCR_RUNT        (1 << 2)
0058 #define     RCR_ALL         (1 << 3)
0059 #define     RCR_DIS_CRC     (1 << 4)
0060 #define     RCR_DIS_LONG    (1 << 5)
0061 /* Rx Status Reg */
0062 #define SR_RSR          0x06
0063 #define     RSR_AE          (1 << 2)
0064 #define     RSR_MF          (1 << 6)
0065 #define     RSR_RF          (1 << 7)
0066 /* Rx Overflow Counter Reg */
0067 #define SR_ROCR     0x07
0068 #define     ROCR_ROC        (0x7F << 0)
0069 #define     ROCR_RXFU       (1 << 7)
0070 /* Back Pressure Threshold Reg */
0071 #define SR_BPTR     0x08
0072 #define     BPTR_JPT        (0x0F << 0)
0073 #define     BPTR_BPHW       (0x0F << 4)
0074 /* Flow Control Threshold Reg */
0075 #define SR_FCTR     0x09
0076 #define     FCTR_LWOT       (0x0F << 0)
0077 #define     FCTR_HWOT       (0x0F << 4)
0078 /* rx/tx Flow Control Reg */
0079 #define SR_FCR          0x0A
0080 #define     FCR_FLCE        (1 << 0)
0081 #define     FCR_BKPA        (1 << 4)
0082 #define     FCR_TXPEN       (1 << 5)
0083 #define     FCR_TXPF        (1 << 6)
0084 #define     FCR_TXP0        (1 << 7)
0085 /* Eeprom & Phy Control Reg */
0086 #define SR_EPCR     0x0B
0087 #define     EPCR_ERRE       (1 << 0)
0088 #define     EPCR_ERPRW      (1 << 1)
0089 #define     EPCR_ERPRR      (1 << 2)
0090 #define     EPCR_EPOS       (1 << 3)
0091 #define     EPCR_WEP        (1 << 4)
0092 /* Eeprom & Phy Address Reg */
0093 #define SR_EPAR     0x0C
0094 #define     EPAR_EROA       (0x3F << 0)
0095 #define     EPAR_PHY_ADR_MASK   (0x03 << 6)
0096 #define     EPAR_PHY_ADR        (0x01 << 6)
0097 /* Eeprom & Phy Data Reg */
0098 #define SR_EPDR     0x0D    /* 0x0D ~ 0x0E for Data Reg Low & High */
0099 /* Wakeup Control Reg */
0100 #define SR_WCR          0x0F
0101 #define     WCR_MAGICST     (1 << 0)
0102 #define     WCR_LINKST      (1 << 2)
0103 #define     WCR_MAGICEN     (1 << 3)
0104 #define     WCR_LINKEN      (1 << 5)
0105 /* Physical Address Reg */
0106 #define SR_PAR          0x10    /* 0x10 ~ 0x15 6 bytes for PAR */
0107 /* Multicast Address Reg */
0108 #define SR_MAR          0x16    /* 0x16 ~ 0x1D 8 bytes for MAR */
0109 /* 0x1e unused */
0110 /* Phy Reset Reg */
0111 #define SR_PRR          0x1F
0112 #define     PRR_PHY_RST     (1 << 0)
0113 /* Tx sdram Write Pointer Address Low */
0114 #define SR_TWPAL        0x20
0115 /* Tx sdram Write Pointer Address High */
0116 #define SR_TWPAH        0x21
0117 /* Tx sdram Read Pointer Address Low */
0118 #define SR_TRPAL        0x22
0119 /* Tx sdram Read Pointer Address High */
0120 #define SR_TRPAH        0x23
0121 /* Rx sdram Write Pointer Address Low */
0122 #define SR_RWPAL        0x24
0123 /* Rx sdram Write Pointer Address High */
0124 #define SR_RWPAH        0x25
0125 /* Rx sdram Read Pointer Address Low */
0126 #define SR_RRPAL        0x26
0127 /* Rx sdram Read Pointer Address High */
0128 #define SR_RRPAH        0x27
0129 /* Vendor ID register */
0130 #define SR_VID          0x28    /* 0x28 ~ 0x29 2 bytes for VID */
0131 /* Product ID register */
0132 #define SR_PID          0x2A    /* 0x2A ~ 0x2B 2 bytes for PID */
0133 /* CHIP Revision register */
0134 #define SR_CHIPR        0x2C
0135 /* 0x2D --> 0xEF unused */
0136 /* USB Device Address */
0137 #define SR_USBDA        0xF0
0138 #define     USBDA_USBFA     (0x7F << 0)
0139 /* RX packet Counter Reg */
0140 #define SR_RXC          0xF1
0141 /* Tx packet Counter & USB Status Reg */
0142 #define SR_TXC_USBS     0xF2
0143 #define     TXC_USBS_TXC0       (1 << 0)
0144 #define     TXC_USBS_TXC1       (1 << 1)
0145 #define     TXC_USBS_TXC2       (1 << 2)
0146 #define     TXC_USBS_EP1RDY     (1 << 5)
0147 #define     TXC_USBS_SUSFLAG    (1 << 6)
0148 #define     TXC_USBS_RXFAULT    (1 << 7)
0149 /* USB Control register */
0150 #define SR_USBC         0xF4
0151 #define     USBC_EP3NAK     (1 << 4)
0152 #define     USBC_EP3ACK     (1 << 5)
0153 
0154 /* Register access commands and flags */
0155 #define SR_RD_REGS      0x00
0156 #define SR_WR_REGS      0x01
0157 #define SR_WR_REG       0x03
0158 #define SR_REQ_RD_REG   (USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE)
0159 #define SR_REQ_WR_REG   (USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE)
0160 
0161 /* parameters */
0162 #define SR_SHARE_TIMEOUT    1000
0163 #define SR_EEPROM_LEN       256
0164 #define SR_MCAST_SIZE       8
0165 #define SR_MCAST_ADDR_FLAG  0x80
0166 #define SR_MCAST_MAX        64
0167 #define SR_TX_OVERHEAD      2   /* 2bytes header */
0168 #define SR_RX_OVERHEAD      7   /* 3bytes header + 4crc tail */
0169 
0170 #endif  /* _SR9700_H */