ipq40xx: ar40xx: add switch led blink support

This commit is contained in:
LGA1150 2020-10-10 04:36:30 +08:00 committed by AmadeusGhost
parent 0f41a89a04
commit aa2df753cf

View File

@ -770,6 +770,37 @@ ar40xx_sw_get_port_link(struct switch_dev *dev, int port,
return 0;
}
static int
ar40xx_sw_get_port_stats(struct switch_dev *dev, int port,
struct switch_port_stats *stats)
{
struct ar40xx_priv *priv = swdev_to_ar40xx(dev);
u32 num_mibs = ARRAY_SIZE(ar40xx_mibs);
u64 *mib_stats;
int ret = 0;
static int last_port = AR40XX_NUM_PORTS - 1;
mutex_lock(&priv->mib_lock);
/* Avoid unnecessary capture */
if (last_port >= port) {
ret = ar40xx_mib_capture(priv);
if (ret)
goto unlock;
}
last_port = port;
ar40xx_mib_fetch_port_stat(priv, port, false);
mib_stats = &priv->mib_stats[port * num_mibs];
/* 15: TXBYTE, 31: RXGOODBYTE */
stats->tx_bytes = mib_stats[15];
stats->rx_bytes = mib_stats[31];
unlock:
mutex_unlock(&priv->mib_lock);
return ret;
}
static const struct switch_attr ar40xx_sw_attr_globals[] = {
{
.type = SWITCH_TYPE_INT,
@ -1148,6 +1179,7 @@ ar40xx_psgmii_self_test_clean(struct ar40xx_priv *priv)
/* disable phy internal loopback */
mdiobus_write(bus, 0x1f, 0x10, 0x6860);
mdiobus_write(bus, 0x1f, 0x0, 0x9040);
ar40xx_phy_mmd_write(priv, 0x1f, 7, 0x8076, 0x0670);
for (phy = 0; phy < AR40XX_NUM_PORTS - 1; phy++) {
/* disable mac loop back */
@ -1761,6 +1793,7 @@ static const struct switch_dev_ops ar40xx_sw_ops = {
.apply_config = ar40xx_sw_hw_apply,
.reset_switch = ar40xx_sw_reset_switch,
.get_port_link = ar40xx_sw_get_port_link,
.get_port_stats = ar40xx_sw_get_port_stats,
};
/* Start of phy driver support */