hc
2024-01-31 f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2
kernel/drivers/net/phy/bcm-phy-lib.h
....@@ -1,14 +1,6 @@
1
+/* SPDX-License-Identifier: GPL-2.0 */
12 /*
23 * Copyright (C) 2015 Broadcom Corporation
3
- *
4
- * This program is free software; you can redistribute it and/or
5
- * modify it under the terms of the GNU General Public License as
6
- * published by the Free Software Foundation version 2.
7
- *
8
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
9
- * kind, whether express or implied; without even the implied warranty
10
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- * GNU General Public License for more details.
124 */
135
146 #ifndef _LINUX_BCM_PHY_LIB_H
....@@ -17,8 +9,30 @@
179 #include <linux/brcmphy.h>
1810 #include <linux/phy.h>
1911
12
+/* 28nm only register definitions */
13
+#define MISC_ADDR(base, channel) base, channel
14
+
15
+#define DSP_TAP10 MISC_ADDR(0x0a, 0)
16
+#define PLL_PLLCTRL_1 MISC_ADDR(0x32, 1)
17
+#define PLL_PLLCTRL_2 MISC_ADDR(0x32, 2)
18
+#define PLL_PLLCTRL_4 MISC_ADDR(0x33, 0)
19
+
20
+#define AFE_RXCONFIG_0 MISC_ADDR(0x38, 0)
21
+#define AFE_RXCONFIG_1 MISC_ADDR(0x38, 1)
22
+#define AFE_RXCONFIG_2 MISC_ADDR(0x38, 2)
23
+#define AFE_RX_LP_COUNTER MISC_ADDR(0x38, 3)
24
+#define AFE_TX_CONFIG MISC_ADDR(0x39, 0)
25
+#define AFE_VDCA_ICTRL_0 MISC_ADDR(0x39, 1)
26
+#define AFE_VDAC_OTHERS_0 MISC_ADDR(0x39, 3)
27
+#define AFE_HPF_TRIM_OTHERS MISC_ADDR(0x3a, 0)
28
+
29
+
30
+int __bcm_phy_write_exp(struct phy_device *phydev, u16 reg, u16 val);
31
+int __bcm_phy_read_exp(struct phy_device *phydev, u16 reg);
32
+int __bcm_phy_modify_exp(struct phy_device *phydev, u16 reg, u16 mask, u16 set);
2033 int bcm_phy_write_exp(struct phy_device *phydev, u16 reg, u16 val);
2134 int bcm_phy_read_exp(struct phy_device *phydev, u16 reg);
35
+int bcm_phy_modify_exp(struct phy_device *phydev, u16 reg, u16 mask, u16 set);
2236
2337 static inline int bcm_phy_write_exp_sel(struct phy_device *phydev,
2438 u16 reg, u16 val)
....@@ -38,6 +52,15 @@
3852 u16 val);
3953 int bcm_phy_read_shadow(struct phy_device *phydev, u16 shadow);
4054
55
+int __bcm_phy_write_rdb(struct phy_device *phydev, u16 rdb, u16 val);
56
+int bcm_phy_write_rdb(struct phy_device *phydev, u16 rdb, u16 val);
57
+int __bcm_phy_read_rdb(struct phy_device *phydev, u16 rdb);
58
+int bcm_phy_read_rdb(struct phy_device *phydev, u16 rdb);
59
+int __bcm_phy_modify_rdb(struct phy_device *phydev, u16 rdb, u16 mask,
60
+ u16 set);
61
+int bcm_phy_modify_rdb(struct phy_device *phydev, u16 rdb, u16 mask,
62
+ u16 set);
63
+
4164 int bcm_phy_ack_intr(struct phy_device *phydev);
4265 int bcm_phy_config_intr(struct phy_device *phydev);
4366
....@@ -53,5 +76,14 @@
5376 void bcm_phy_get_strings(struct phy_device *phydev, u8 *data);
5477 void bcm_phy_get_stats(struct phy_device *phydev, u64 *shadow,
5578 struct ethtool_stats *stats, u64 *data);
79
+void bcm_phy_r_rc_cal_reset(struct phy_device *phydev);
80
+int bcm_phy_28nm_a0b0_afe_config_init(struct phy_device *phydev);
81
+int bcm_phy_enable_jumbo(struct phy_device *phydev);
82
+
83
+int bcm_phy_cable_test_get_status_rdb(struct phy_device *phydev,
84
+ bool *finished);
85
+int bcm_phy_cable_test_start_rdb(struct phy_device *phydev);
86
+int bcm_phy_cable_test_start(struct phy_device *phydev);
87
+int bcm_phy_cable_test_get_status(struct phy_device *phydev, bool *finished);
5688
5789 #endif /* _LINUX_BCM_PHY_LIB_H */