phy5421S.h (16029B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: phy5421S.h 8 */ 9 10 #ifndef _PHY5421S_H_ 11 #define _PHY5421S_H_ 12 13 #include <soc/phy.h> 14 15 /* PHY register access */ 16 #define PHY5421_REG_READ(_unit, _phy_ctrl, _flags, _reg_bank, _reg_addr, _val) \ 17 phy_reg_ge_read((_unit), (_phy_ctrl), (_flags), (_reg_bank), \ 18 (_reg_addr), (_val)) 19 #define PHY5421_REG_WRITE(_unit, _phy_ctrl, _flags, \ 20 _reg_bank, _reg_addr, _val) \ 21 phy_reg_ge_write((_unit), (_phy_ctrl), (_flags), (_reg_bank), \ 22 (_reg_addr), (_val)) 23 #define PHY5421_REG_MODIFY(_unit, _phy_ctrl, _flags, _reg_bank, \ 24 _reg_addr, _val, _mask) \ 25 phy_reg_ge_modify((_unit), (_phy_ctrl), (_flags), (_reg_bank), \ 26 (_reg_addr), (_val), (_mask)) 27 28 /* 1000BASE-T/100BASE-TX/10BASE-T MII Control Register (Addr 00h) */ 29 #define READ_PHY5421_MII_CTRLr(_unit, _phy_ctrl, _val) \ 30 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x00, (_val)) 31 #define WRITE_PHY5421_MII_CTRLr(_unit, _phy_ctrl, _val) \ 32 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x00, (_val)) 33 #define MODIFY_PHY5421_MII_CTRLr(_unit, _phy_ctrl, _val, _mask) \ 34 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x00, \ 35 (_val), (_mask)) 36 37 /* 1000BASE-T/100BASE-TX/10BASE-T MII Status Register (ADDR 01h) */ 38 #define READ_PHY5421_MII_STATr(_unit, _phy_ctrl, _val) \ 39 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x01, (_val)) 40 #define WRITE_PHY5421_MII_STATr(_unit, _phy_ctrl, _val) \ 41 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x01, (_val)) 42 #define MODIFY_PHY5421_MII_STATr(_unit, _phy_ctrl, _val, _mask) \ 43 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x01, \ 44 (_val), (_mask)) 45 46 /* 1000BASE-T/100BASE-TX/10BASE-T PHY Identifier Register (ADDR 02h) */ 47 #define READ_PHY5421_MII_PHY_ID0r(_unit, _phy_ctrl, _val) \ 48 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x02, (_val)) 49 #define WRITE_PHY5421_MII_PHY_ID0r(_unit, _phy_ctrl, _val) \ 50 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x02, (_val)) 51 #define MODIFY_PHY5421_MII_PHY_ID0r(_unit, _phy_ctrl, _val, _mask) \ 52 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x02, \ 53 (_val), (_mask)) 54 55 /* 1000BASE-T/100BASE-TX/10BASE-T PHY Identifier Register (ADDR 03h) */ 56 #define READ_PHY5421_MII_PHY_ID1r(_unit, _phy_ctrl, _val) \ 57 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x03, (_val)) 58 #define WRITE_PHY5421_MII_PHY_ID1r(_unit, _phy_ctrl, _val) \ 59 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x03, (_val)) 60 #define MODIFY_PHY5421_MII_PHY_ID1r(_unit, _phy_ctrl, _val, _mask) \ 61 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x03, \ 62 (_val), (_mask)) 63 64 /* 1000BASE-T/100BASE-TX/10BASE-T Auto-neg Advertisment Register (ADDR 04h) */ 65 #define READ_PHY5421_MII_ANAr(_unit, _phy_ctrl, _val) \ 66 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x04, (_val)) 67 #define WRITE_PHY5421_MII_ANAr(_unit, _phy_ctrl, _val) \ 68 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x04, (_val)) 69 #define MODIFY_PHY5421_MII_ANAr(_unit, _phy_ctrl, _val, _mask) \ 70 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x04, \ 71 (_val), (_mask)) 72 73 /* 1000BASE-T/100BASE-TX/10BASE-T Auto-neg Link Partner Ability (ADDR 05h) */ 74 #define READ_PHY5421_MII_ANPr(_unit, _phy_ctrl, _val) \ 75 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x05, (_val)) 76 #define WRITE_PHY5421_MII_ANPr(_unit, _phy_ctrl, _val) \ 77 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x05, (_val)) 78 #define MODIFY_PHY5421_MII_ANPr(_unit, _phy_ctrl, _val, _mask) \ 79 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x05, \ 80 (_val), (_mask)) 81 82 /* 1000BASE-T/100BASE-TX/10BASE-T Auto-neg Expansion Register (ADDR 06h) */ 83 #define READ_PHY5421_MII_AN_EXPr(_unit, _phy_ctrl, _val) \ 84 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x06, (_val)) 85 #define WRITE_PHY5421_MII_AN_EXPr(_unit, _phy_ctrl, _val) \ 86 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x06, (_val)) 87 #define MODIFY_PHY5421_MII_AN_EXPr(_unit, _phy_ctrl, _val, _mask) \ 88 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x06, \ 89 (_val), (_mask)) 90 91 /* 1000BASE-T/100BASE-TX/10BASE-T Next Page Transmit Register (ADDR 07h) */ 92 /* 1000BASE-T/100BASE-TX/10BASE-T Link Partner Received Next Page (ADDR 08h) */ 93 94 /* 1000BASE-T Control Register (ADDR 09h) */ 95 #define READ_PHY5421_MII_GB_CTRLr(_unit, _phy_ctrl, _val) \ 96 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x09, (_val)) 97 #define WRITE_PHY5421_MII_GB_CTRLr(_unit, _phy_ctrl, _val) \ 98 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x09, (_val)) 99 #define MODIFY_PHY5421_MII_GB_CTRLr(_unit, _phy_ctrl, _val, _mask) \ 100 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x09, \ 101 (_val), (_mask)) 102 103 /* 1000BASE-T Status Register (ADDR 0ah) */ 104 #define READ_PHY5421_MII_GB_STATr(_unit, _phy_ctrl, _val) \ 105 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0a, (_val)) 106 #define WRITE_PHY5421_MII_GB_STATr(_unit, _phy_ctrl, _val) \ 107 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0a, (_val)) 108 #define MODIFY_PHY5421_MII_GB_STATr(_unit, _phy_ctrl, _val, _mask) \ 109 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0a, \ 110 (_val), (_mask)) 111 112 /* SGMII/1000X Control Register (Addr 0bh) */ 113 #define READ_PHY5421_SGMII_1000X_CTRLr(_unit, _phy_ctrl, _val) \ 114 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0b, (_val)) 115 #define WRITE_PHY5421_SGMII_1000X_CTRLr(_unit, _phy_ctrl, _val) \ 116 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0b, (_val)) 117 #define MODIFY_PHY5421_SGMII_1000X_CTRLr(_unit, _phy_ctrl, _val, _mask) \ 118 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0b, \ 119 (_val), (_mask)) 120 121 /* SGMII/1000X Status Register (Addr 0ch) */ 122 #define READ_PHY5421_SGMII_1000X_STATr(_unit, _phy_ctrl, _val) \ 123 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0c, (_val)) 124 #define WRITE_PHY5421_SGMII_1000X_STATr(_unit, _phy_ctrl, _val) \ 125 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0c, (_val)) 126 #define MODIFY_PHY5421_SGMII_1000X_STATr(_unit, _phy_ctrl, _val, _mask) \ 127 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0c, \ 128 (_val), (_mask)) 129 130 /* 1000-X Link Partner Capabilities Register (Addr 0dh) */ 131 #define READ_PHY5421_1000X_ANPr(_unit, _phy_ctrl, _val) \ 132 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0d, (_val)) 133 #define WRITE_PHY5421_1000X_ANPr(_unit, _phy_ctrl, _val) \ 134 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0d, (_val)) 135 #define MODIFY_PHY5421_1000X_ANPr(_unit, _phy_ctrl, _val, _mask) \ 136 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0d, \ 137 (_val), (_mask)) 138 139 /* SGMII/1000-X Misc Register (Addr 0eh) */ 140 #define READ_PHY5421_SGMII_1000X_MISCr(_unit, _phy_ctrl, _val) \ 141 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0e, (_val)) 142 #define WRITE_PHY5421_SGMII_1000X_MISCr(_unit, _phy_ctrl, _val) \ 143 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0e, (_val)) 144 #define MODIFY_PHY5421_SGMII_1000X_MISCr(_unit, _phy_ctrl, _val, _mask) \ 145 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x0e, \ 146 (_val), (_mask)) 147 148 /* 1000BASE-T/100BASE-TX/10BASE-T IEEE Extended Status Register (ADDR 0fh) */ 149 150 /* 1000BASE-T/100BASE-TX/10BASE-T PHY Extended Control Register (ADDR 10h) */ 151 #define READ_PHY5421_MII_ECRr(_unit, _phy_ctrl, _val) \ 152 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x10, (_val)) 153 #define WRITE_PHY5421_MII_ECRr(_unit, _phy_ctrl, _val) \ 154 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x10, (_val)) 155 #define MODIFY_PHY5421_MII_ECRr(_unit, _phy_ctrl, _val, _mask) \ 156 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x10, \ 157 (_val), (_mask)) 158 159 /* 1000BASE-T/100BASE-TX/10BASE-T PHY Extended Status Register (ADDR 11h) */ 160 #define READ_PHY5421_MII_ESRr(_unit, _phy_ctrl, _val) \ 161 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x11, (_val)) 162 #define WRITE_PHY5421_MII_ESRr(_unit, _phy_ctrl, _val) \ 163 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x11, (_val)) 164 #define MODIFY_PHY5421_MII_ESRr(_unit, _phy_ctrl, _val, _mask) \ 165 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x11, \ 166 (_val), (_mask)) 167 168 /* 1000BASE-T/100BASE-TX/10BASE-T Receive Error Counter Register (ADDR 12h) */ 169 /* 1000BASE-T/100BASE-TX/10BASE-T False Carrier Sense Counter (ADDR 13h) */ 170 /* 1000BASE-T/100BASE-TX/10BASE-T Receive NOT_OK Counter Register (ADDR 14h) */ 171 172 /* Auxiliary Control Register for Normal Operation (Addr 18h Shadow 000) */ 173 #define READ_PHY5421_AUX_CTRLr(_unit, _phy_ctrl, _val) \ 174 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x18, (_val)) 175 #define WRITE_PHY5421_AUX_CTRLr(_unit, _phy_ctrl, _val) \ 176 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x18, (_val)) 177 #define MODIFY_PHY5421_AUX_CTRLr(_unit, _phy_ctrl, _val, _mask) \ 178 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x18, \ 179 (_val), (_mask)) 180 181 /* 10BASE-T Register (ADDR 18h Shadow 001) */ 182 #define READ_PHY5421_10BASE_Tr(_unit, _phy_ctrl, _val) \ 183 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0001, 0x18, (_val)) 184 #define WRITE_PHY5421_10BASE_Tr(_unit, _phy_ctrl, _val) \ 185 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0001, 0x18, (_val)) 186 #define MODIFY_PHY5421_10BASE_Tr(_unit, _phy_ctrl, _val, _mask) \ 187 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0001, 0x18 \ 188 (_val), (_mask)) 189 190 /* Power Control Reg (ADDR 18h Shadow 010)*/ 191 #define READ_PHY5421_POWER_CTRLr(_unit, _phy_ctrl, _val) \ 192 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0002, 0x18, (_val)) 193 #define WRITE_PHY5421_POWER_CTRLr(_unit, _phy_ctrl, _val) \ 194 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0002, 0x18, (_val)) 195 #define MODIFY_PHY5421_POWER_CTRLr(_unit, _phy_ctrl, _val, _mask) \ 196 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0002, 0x18, \ 197 (_val), (_mask)) 198 199 /* 1000BASE-T/100BASE-TX/10BASE-T Misc Test Register (ADDR 18h Shadow 100) */ 200 #define READ_PHY5421_MISC_TESTr(_unit, _phy_ctrl, _val) \ 201 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0004, 0x18, (_val)) 202 #define WRITE_PHY5421_MISC_TESTr(_unit, _phy_ctrl, _val) \ 203 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0004, 0x18, (_val)) 204 #define MODIFY_PHY5421_MISC_TESTr(_unit, _phy_ctrl, _val, _mask) \ 205 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0004, 0x18, \ 206 (_val), (_mask)) 207 208 /* 1000BASE-T/100BASE-TX/10BASE-T Misc Control Register (ADDR 18h Shadow 111)*/ 209 #define READ_PHY5421_MISC_CTRLr(_unit, _phy_ctrl, _val) \ 210 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0007, 0x18, (_val)) 211 #define WRITE_PHY5421_MISC_CTRLr(_unit, _phy_ctrl, _val) \ 212 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0007, 0x18, (_val)) 213 #define MODIFY_PHY5421_MISC_CTRLr(_unit, _phy_ctrl, _val, _mask) \ 214 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0007, 0x18, \ 215 (_val), (_mask)) 216 217 /* Auxiliary Status Summary Register (ADDR 19h) */ 218 /* Interrupt Status Register (ADDR 1ah) */ 219 /* Interrupt Mask Register (ADDR 1bh) */ 220 221 /* Spare Ctrl 1 Reg (ADDR 1ch shadow 00010) */ 222 #define READ_PHY5421_SPARE_CTRL1r(_unit, _phy_ctrl, _val) \ 223 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x02, 0x1C, (_val)) 224 #define WRITE_PHY5421_SPARE_CTRL1r(_unit, _phy_ctrl, _val) \ 225 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x02, 0x1C, (_val)) 226 #define MODIFY_PHY5421_SPARE_CTRL1r(_unit, _phy_ctrl, _val, _mask) \ 227 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x02, 0x1C, \ 228 (_val), (_mask)) 229 230 /* Spare Control 2 Reg (Addr 1ch shadow 00100) */ 231 #define READ_PHY5421_SPARE_CTRL2r(_unit, _phy_ctrl, _val) \ 232 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x04, 0x1C, (_val)) 233 #define WRITE_PHY5421_SPARE_CTRL2r(_unit, _phy_ctrl, _val) \ 234 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x04, 0x1C, (_val)) 235 #define MODIFY_PHY5421_SPARE_CTRL2r(_unit, _phy_ctrl, _val, _mask) \ 236 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x04, 0x1C, \ 237 (_val), (_mask)) 238 239 /* Spare Control 3 Reg (Addr 1ch shadow 00101) */ 240 #define READ_PHY5421_SPARE_CTRL3r(_unit, _phy_ctrl, _val) \ 241 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x05, 0x1C, (_val)) 242 #define WRITE_PHY5421_SPARE_CTRL3r(_unit, _phy_ctrl, _val) \ 243 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x05, 0x1C, (_val)) 244 #define MODIFY_PHY5421_SPARE_CTRL3r(_unit, _phy_ctrl, _val, _mask) \ 245 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x05, 0x1C, \ 246 (_val), (_mask)) 247 248 /* LED Status Register (Addr 1ch shadow 01000) */ 249 #define READ_PHY5421_LED_STATr(_unit, _phy_ctrl, _val) \ 250 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x08, 0x1C, (_val)) 251 #define WRITE_PHY5421_LED_STATr(_unit, _phy_ctrl, _val) \ 252 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x08, 0x1C, (_val)) 253 #define MODIFY_PHY5421_LED_STATr(_unit, _phy_ctrl, _val, _mask) \ 254 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x08, 0x1C, \ 255 (_val), (_mask)) 256 257 /* LED Control Register (Addr 1ch shadow 01001) */ 258 #define READ_PHY5421_LED_CTRLr(_unit, _phy_ctrl, _val) \ 259 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x09, 0x1C, (_val)) 260 #define WRITE_PHY5421_LED_CTRL3r(_unit, _phy_ctrl, _val) \ 261 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x09, 0x1C, (_val)) 262 #define MODIFY_PHY5421_LED_CTRL3r(_unit, _phy_ctrl, _val, _mask) \ 263 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x09, 0x1C, \ 264 (_val), (_mask)) 265 266 /* Auto Power-Down Register (Addr 1ch shadow 01010) */ 267 268 /* SGMII Register Enable Register (Addr 1ch shadow 11111) */ 269 #define READ_PHY5421_SGMII_REG_ENABLEr(_unit, _phy_ctrl, _val) \ 270 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x001F, 0x1C, (_val)) 271 #define WRITE_PHY5421_SGMII_REG_ENBLEr(_unit, _phy_ctrl, _val) \ 272 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x001F, 0x1C, (_val)) 273 #define MODIFY_PHY5421_SGMII_REG_ENABLEr(_unit, _phy_ctrl, _val, _mask) \ 274 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x001F, 0x1C, \ 275 (_val), (_mask)) 276 277 /* Master/Slave Seed Register (Addr 1dh) */ 278 279 /* HCD Status Register (Addr 1dh) */ 280 281 /* Test Register 1 (Addr 1eh) */ 282 #define READ_PHY5421_TEST1r(_unit, _phy_ctrl, _val) \ 283 PHY5421_REG_READ((_unit), (_phy_ctrl), 0x00, 0x0000, 0x1e, (_val)) 284 #define WRITE_PHY5421_TEST1r(_unit, _phy_ctrl, _val) \ 285 PHY5421_REG_WRITE((_unit), (_phy_ctrl), 0x00, 0x0000, 0x1e, (_val)) 286 #define MODIFY_PHY5421_TEST1r(_unit, _phy_ctrl, _val, _mask) \ 287 PHY5421_REG_MODIFY((_unit), (_phy_ctrl), 0x00, 0x0000, 0x1e, \ 288 (_val), (_mask)) 289 290 #endif /* _PHY5421S_H_ */