|
10 | 10 | #include <linux/phy.h>
|
11 | 11 |
|
12 | 12 | /* Vendor specific 1, MDIO_MMD_VEND1 */
|
| 13 | +#define VEND1_GLOBAL_SC 0x0 |
| 14 | +#define VEND1_GLOBAL_SC_SOFT_RESET BIT(15) |
| 15 | +#define VEND1_GLOBAL_SC_LOW_POWER BIT(11) |
| 16 | + |
13 | 17 | #define VEND1_GLOBAL_FW_ID 0x0020
|
14 | 18 | #define VEND1_GLOBAL_FW_ID_MAJOR GENMASK(15, 8)
|
15 | 19 | #define VEND1_GLOBAL_FW_ID_MINOR GENMASK(7, 0)
|
16 | 20 |
|
| 21 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE1 0x0200 |
| 22 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE1_EXECUTE BIT(15) |
| 23 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE1_WRITE BIT(14) |
| 24 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE1_CRC_RESET BIT(12) |
| 25 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE1_BUSY BIT(8) |
| 26 | + |
| 27 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE2 0x0201 |
| 28 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE3 0x0202 |
| 29 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE3_MSW_ADDR_MASK GENMASK(15, 0) |
| 30 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE3_MSW_ADDR(x) FIELD_PREP(VEND1_GLOBAL_MAILBOX_INTERFACE3_MSW_ADDR_MASK, (u16)((x) >> 16)) |
| 31 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE4 0x0203 |
| 32 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE4_LSW_ADDR_MASK GENMASK(15, 2) |
| 33 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE4_LSW_ADDR(x) FIELD_PREP(VEND1_GLOBAL_MAILBOX_INTERFACE4_LSW_ADDR_MASK, (u16)(x)) |
| 34 | + |
| 35 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE5 0x0204 |
| 36 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE5_MSW_DATA_MASK GENMASK(15, 0) |
| 37 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE5_MSW_DATA(x) FIELD_PREP(VEND1_GLOBAL_MAILBOX_INTERFACE5_MSW_DATA_MASK, (u16)((x) >> 16)) |
| 38 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE6 0x0205 |
| 39 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE6_LSW_DATA_MASK GENMASK(15, 0) |
| 40 | +#define VEND1_GLOBAL_MAILBOX_INTERFACE6_LSW_DATA(x) FIELD_PREP(VEND1_GLOBAL_MAILBOX_INTERFACE6_LSW_DATA_MASK, (u16)(x)) |
| 41 | + |
17 | 42 | /* The following registers all have similar layouts; first the registers... */
|
18 | 43 | #define VEND1_GLOBAL_CFG_10M 0x0310
|
19 | 44 | #define VEND1_GLOBAL_CFG_100M 0x031b
|
|
28 | 53 | #define VEND1_GLOBAL_CFG_RATE_ADAPT_PAUSE 2
|
29 | 54 |
|
30 | 55 | /* Vendor specific 1, MDIO_MMD_VEND2 */
|
| 56 | +#define VEND1_GLOBAL_CONTROL2 0xc001 |
| 57 | +#define VEND1_GLOBAL_CONTROL2_UP_RUN_STALL_RST BIT(15) |
| 58 | +#define VEND1_GLOBAL_CONTROL2_UP_RUN_STALL_OVD BIT(6) |
| 59 | +#define VEND1_GLOBAL_CONTROL2_UP_RUN_STALL BIT(0) |
| 60 | + |
31 | 61 | #define VEND1_THERMAL_PROV_HIGH_TEMP_FAIL 0xc421
|
32 | 62 | #define VEND1_THERMAL_PROV_LOW_TEMP_FAIL 0xc422
|
33 | 63 | #define VEND1_THERMAL_PROV_HIGH_TEMP_WARN 0xc423
|
@@ -83,3 +113,5 @@ int aqr_hwmon_probe(struct phy_device *phydev);
|
83 | 113 | #else
|
84 | 114 | static inline int aqr_hwmon_probe(struct phy_device *phydev) { return 0; }
|
85 | 115 | #endif
|
| 116 | + |
| 117 | +int aqr_firmware_load(struct phy_device *phydev); |
0 commit comments