ipq40xx: ar40xx: add switch led blink support
This commit is contained in:
parent
0f41a89a04
commit
aa2df753cf
@ -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 */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user