| .. | .. |
|---|
| 1 | | -// SPDX-License-Identifier: GPL-2.0 |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0 */ |
|---|
| 2 | 2 | /* |
|---|
| 3 | 3 | * mtu3_hw_regs.h - MediaTek USB3 DRD register and field definitions |
|---|
| 4 | 4 | * |
|---|
| .. | .. |
|---|
| 49 | 49 | #define U3D_QCR1 (SSUSB_DEV_BASE + 0x0404) |
|---|
| 50 | 50 | #define U3D_QCR2 (SSUSB_DEV_BASE + 0x0408) |
|---|
| 51 | 51 | #define U3D_QCR3 (SSUSB_DEV_BASE + 0x040C) |
|---|
| 52 | +#define U3D_QFCR (SSUSB_DEV_BASE + 0x0428) |
|---|
| 52 | 53 | #define U3D_TXQHIAR1 (SSUSB_DEV_BASE + 0x0484) |
|---|
| 53 | 54 | #define U3D_RXQHIAR1 (SSUSB_DEV_BASE + 0x04C4) |
|---|
| 54 | 55 | |
|---|
| .. | .. |
|---|
| 104 | 105 | |
|---|
| 105 | 106 | /* U3D_EPISR */ |
|---|
| 106 | 107 | #define EPRISR(x) (BIT(16) << (x)) |
|---|
| 108 | +#define SETUPENDISR BIT(16) |
|---|
| 107 | 109 | #define EPTISR(x) (BIT(0) << (x)) |
|---|
| 108 | 110 | #define EP0ISR BIT(0) |
|---|
| 109 | 111 | |
|---|
| .. | .. |
|---|
| 132 | 134 | #define TX_W1C_BITS (~(TX_SENTSTALL)) |
|---|
| 133 | 135 | |
|---|
| 134 | 136 | /* U3D_TX1CSR1 */ |
|---|
| 135 | | -#define TX_MULT(x) (((x) & 0x3) << 22) |
|---|
| 136 | | -#define TX_MAX_PKT(x) (((x) & 0x3f) << 16) |
|---|
| 137 | +#define TX_MAX_PKT_G2(x) (((x) & 0xff) << 24) |
|---|
| 138 | +#define TX_MULT_G2(x) (((x) & 0x7) << 21) |
|---|
| 139 | +#define TX_MULT_OG(x) (((x) & 0x3) << 22) |
|---|
| 140 | +#define TX_MAX_PKT_OG(x) (((x) & 0x3f) << 16) |
|---|
| 137 | 141 | #define TX_SLOT(x) (((x) & 0x3f) << 8) |
|---|
| 138 | 142 | #define TX_TYPE(x) (((x) & 0x3) << 4) |
|---|
| 139 | 143 | #define TX_SS_BURST(x) (((x) & 0xf) << 0) |
|---|
| 144 | +#define TX_MULT(g2c, x) \ |
|---|
| 145 | +({ \ |
|---|
| 146 | + typeof(x) x_ = (x); \ |
|---|
| 147 | + (g2c) ? TX_MULT_G2(x_) : TX_MULT_OG(x_); \ |
|---|
| 148 | +}) |
|---|
| 149 | +#define TX_MAX_PKT(g2c, x) \ |
|---|
| 150 | +({ \ |
|---|
| 151 | + typeof(x) x_ = (x); \ |
|---|
| 152 | + (g2c) ? TX_MAX_PKT_G2(x_) : TX_MAX_PKT_OG(x_); \ |
|---|
| 153 | +}) |
|---|
| 140 | 154 | |
|---|
| 141 | 155 | /* for TX_TYPE & RX_TYPE */ |
|---|
| 142 | 156 | #define TYPE_BULK (0x0) |
|---|
| .. | .. |
|---|
| 159 | 173 | #define RX_W1C_BITS (~(RX_SENTSTALL | RX_RXPKTRDY)) |
|---|
| 160 | 174 | |
|---|
| 161 | 175 | /* U3D_RX1CSR1 */ |
|---|
| 162 | | -#define RX_MULT(x) (((x) & 0x3) << 22) |
|---|
| 163 | | -#define RX_MAX_PKT(x) (((x) & 0x3f) << 16) |
|---|
| 176 | +#define RX_MAX_PKT_G2(x) (((x) & 0xff) << 24) |
|---|
| 177 | +#define RX_MULT_G2(x) (((x) & 0x7) << 21) |
|---|
| 178 | +#define RX_MULT_OG(x) (((x) & 0x3) << 22) |
|---|
| 179 | +#define RX_MAX_PKT_OG(x) (((x) & 0x3f) << 16) |
|---|
| 164 | 180 | #define RX_SLOT(x) (((x) & 0x3f) << 8) |
|---|
| 165 | 181 | #define RX_TYPE(x) (((x) & 0x3) << 4) |
|---|
| 166 | 182 | #define RX_SS_BURST(x) (((x) & 0xf) << 0) |
|---|
| 183 | +#define RX_MULT(g2c, x) \ |
|---|
| 184 | +({ \ |
|---|
| 185 | + typeof(x) x_ = (x); \ |
|---|
| 186 | + (g2c) ? RX_MULT_G2(x_) : RX_MULT_OG(x_); \ |
|---|
| 187 | +}) |
|---|
| 188 | +#define RX_MAX_PKT(g2c, x) \ |
|---|
| 189 | +({ \ |
|---|
| 190 | + typeof(x) x_ = (x); \ |
|---|
| 191 | + (g2c) ? RX_MAX_PKT_G2(x_) : RX_MAX_PKT_OG(x_); \ |
|---|
| 192 | +}) |
|---|
| 167 | 193 | |
|---|
| 168 | 194 | /* U3D_RX1CSR2 */ |
|---|
| 169 | 195 | #define RX_BINTERVAL(x) (((x) & 0xff) << 24) |
|---|
| .. | .. |
|---|
| 264 | 290 | #define U3D_LTSSM_CTRL (SSUSB_USB3_MAC_CSR_BASE + 0x0010) |
|---|
| 265 | 291 | #define U3D_USB3_CONFIG (SSUSB_USB3_MAC_CSR_BASE + 0x001C) |
|---|
| 266 | 292 | |
|---|
| 293 | +#define U3D_LINK_STATE_MACHINE (SSUSB_USB3_MAC_CSR_BASE + 0x0134) |
|---|
| 267 | 294 | #define U3D_LTSSM_INTR_ENABLE (SSUSB_USB3_MAC_CSR_BASE + 0x013C) |
|---|
| 268 | 295 | #define U3D_LTSSM_INTR (SSUSB_USB3_MAC_CSR_BASE + 0x0140) |
|---|
| 296 | + |
|---|
| 297 | +#define U3D_U3U2_SWITCH_CTRL (SSUSB_USB3_MAC_CSR_BASE + 0x0170) |
|---|
| 269 | 298 | |
|---|
| 270 | 299 | /*---------------- SSUSB_USB3_MAC_CSR FIELD DEFINITION ----------------*/ |
|---|
| 271 | 300 | |
|---|
| .. | .. |
|---|
| 278 | 307 | |
|---|
| 279 | 308 | /* U3D_USB3_CONFIG */ |
|---|
| 280 | 309 | #define USB3_EN BIT(0) |
|---|
| 310 | + |
|---|
| 311 | +/* U3D_LINK_STATE_MACHINE */ |
|---|
| 312 | +#define LTSSM_STATE(x) ((x) & 0x1f) |
|---|
| 281 | 313 | |
|---|
| 282 | 314 | /* U3D_LTSSM_INTR_ENABLE */ |
|---|
| 283 | 315 | /* U3D_LTSSM_INTR */ |
|---|
| .. | .. |
|---|
| 300 | 332 | #define COMPLIANCE_INTR BIT(2) |
|---|
| 301 | 333 | #define SS_DISABLE_INTR BIT(1) |
|---|
| 302 | 334 | #define SS_INACTIVE_INTR BIT(0) |
|---|
| 335 | + |
|---|
| 336 | +/* U3D_U3U2_SWITCH_CTRL */ |
|---|
| 337 | +#define SOFTCON_CLR_AUTO_EN BIT(0) |
|---|
| 303 | 338 | |
|---|
| 304 | 339 | /*---------------- SSUSB_USB3_SYS_CSR REGISTER DEFINITION ----------------*/ |
|---|
| 305 | 340 | |
|---|
| .. | .. |
|---|
| 341 | 376 | #define U3D_USB20_FRAME_NUM (SSUSB_USB2_CSR_BASE + 0x003C) |
|---|
| 342 | 377 | #define U3D_USB20_LPM_PARAMETER (SSUSB_USB2_CSR_BASE + 0x0044) |
|---|
| 343 | 378 | #define U3D_USB20_MISC_CONTROL (SSUSB_USB2_CSR_BASE + 0x004C) |
|---|
| 379 | +#define U3D_USB20_OPSTATE (SSUSB_USB2_CSR_BASE + 0x0060) |
|---|
| 344 | 380 | |
|---|
| 345 | 381 | /*---------------- SSUSB_USB2_CSR FIELD DEFINITION ----------------*/ |
|---|
| 346 | 382 | |
|---|
| .. | .. |
|---|
| 413 | 449 | #define U3D_SSUSB_DEV_RST_CTRL (SSUSB_SIFSLV_IPPC_BASE + 0x0098) |
|---|
| 414 | 450 | #define U3D_SSUSB_HW_ID (SSUSB_SIFSLV_IPPC_BASE + 0x00A0) |
|---|
| 415 | 451 | #define U3D_SSUSB_HW_SUB_ID (SSUSB_SIFSLV_IPPC_BASE + 0x00A4) |
|---|
| 452 | +#define U3D_SSUSB_IP_TRUNK_VERS (U3D_SSUSB_HW_SUB_ID) |
|---|
| 453 | +#define U3D_SSUSB_PRB_CTRL0 (SSUSB_SIFSLV_IPPC_BASE + 0x00B0) |
|---|
| 454 | +#define U3D_SSUSB_PRB_CTRL1 (SSUSB_SIFSLV_IPPC_BASE + 0x00B4) |
|---|
| 455 | +#define U3D_SSUSB_PRB_CTRL2 (SSUSB_SIFSLV_IPPC_BASE + 0x00B8) |
|---|
| 456 | +#define U3D_SSUSB_PRB_CTRL3 (SSUSB_SIFSLV_IPPC_BASE + 0x00BC) |
|---|
| 457 | +#define U3D_SSUSB_PRB_CTRL4 (SSUSB_SIFSLV_IPPC_BASE + 0x00C0) |
|---|
| 458 | +#define U3D_SSUSB_PRB_CTRL5 (SSUSB_SIFSLV_IPPC_BASE + 0x00C4) |
|---|
| 416 | 459 | #define U3D_SSUSB_IP_SPARE0 (SSUSB_SIFSLV_IPPC_BASE + 0x00C8) |
|---|
| 417 | 460 | |
|---|
| 418 | 461 | /*---------------- SSUSB_SIFSLV_IPPC FIELD DEFINITION ----------------*/ |
|---|
| .. | .. |
|---|
| 477 | 520 | /* U3D_SSUSB_DEV_RST_CTRL */ |
|---|
| 478 | 521 | #define SSUSB_DEV_SW_RST BIT(0) |
|---|
| 479 | 522 | |
|---|
| 523 | +/* U3D_SSUSB_IP_TRUNK_VERS */ |
|---|
| 524 | +#define IP_TRUNK_VERS(x) (((x) >> 16) & 0xffff) |
|---|
| 525 | + |
|---|
| 480 | 526 | #endif /* _SSUSB_HW_REGS_H_ */ |
|---|