mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
net: phy: qcom: qca807x: Support PHY counter
Within the QCA807X PHY operation's config_init() function, enable CRC checking for received and transmitted frames and configure counter to clear after being read to support counter recording. Additionally, add support for PHY counter operations. Signed-off-by: Luo Jie <quic_luoj@quicinc.com> Link: https://patch.msgid.link/20250715-qcom_phy_counter-v3-3-8b0e460a527b@quicinc.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
3370e33a1c
commit
d98f43b84a
|
|
@ -124,6 +124,7 @@ struct qca807x_priv {
|
|||
bool dac_full_amplitude;
|
||||
bool dac_full_bias_current;
|
||||
bool dac_disable_bias_current_tweak;
|
||||
struct qcom_phy_hw_stats hw_stats;
|
||||
};
|
||||
|
||||
static int qca807x_cable_test_start(struct phy_device *phydev)
|
||||
|
|
@ -768,6 +769,10 @@ static int qca807x_config_init(struct phy_device *phydev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
ret = qcom_phy_counter_config(phydev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
control_dac = phy_read_mmd(phydev, MDIO_MMD_AN,
|
||||
QCA807X_MMD7_1000BASE_T_POWER_SAVE_PER_CABLE_LENGTH);
|
||||
control_dac &= ~QCA807X_CONTROL_DAC_MASK;
|
||||
|
|
@ -782,6 +787,22 @@ static int qca807x_config_init(struct phy_device *phydev)
|
|||
control_dac);
|
||||
}
|
||||
|
||||
static int qca807x_update_stats(struct phy_device *phydev)
|
||||
{
|
||||
struct qca807x_priv *priv = phydev->priv;
|
||||
|
||||
return qcom_phy_update_stats(phydev, &priv->hw_stats);
|
||||
}
|
||||
|
||||
static void qca807x_get_phy_stats(struct phy_device *phydev,
|
||||
struct ethtool_eth_phy_stats *eth_stats,
|
||||
struct ethtool_phy_stats *stats)
|
||||
{
|
||||
struct qca807x_priv *priv = phydev->priv;
|
||||
|
||||
qcom_phy_get_stats(stats, priv->hw_stats);
|
||||
}
|
||||
|
||||
static struct phy_driver qca807x_drivers[] = {
|
||||
{
|
||||
PHY_ID_MATCH_EXACT(PHY_ID_QCA8072),
|
||||
|
|
@ -800,6 +821,8 @@ static struct phy_driver qca807x_drivers[] = {
|
|||
.suspend = genphy_suspend,
|
||||
.cable_test_start = qca807x_cable_test_start,
|
||||
.cable_test_get_status = qca808x_cable_test_get_status,
|
||||
.update_stats = qca807x_update_stats,
|
||||
.get_phy_stats = qca807x_get_phy_stats,
|
||||
},
|
||||
{
|
||||
PHY_ID_MATCH_EXACT(PHY_ID_QCA8075),
|
||||
|
|
@ -823,6 +846,8 @@ static struct phy_driver qca807x_drivers[] = {
|
|||
.led_hw_is_supported = qca807x_led_hw_is_supported,
|
||||
.led_hw_control_set = qca807x_led_hw_control_set,
|
||||
.led_hw_control_get = qca807x_led_hw_control_get,
|
||||
.update_stats = qca807x_update_stats,
|
||||
.get_phy_stats = qca807x_get_phy_stats,
|
||||
},
|
||||
};
|
||||
module_phy_driver(qca807x_drivers);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user