Commit 6239a386 authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller
Browse files

net: dsa: mv88e6xxx: global2: Expose ATU stats register



Add helpers to set/get the ATU statistics register.

Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d9ea5620
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -280,6 +280,26 @@ int mv88e6xxx_g2_set_switch_mac(struct mv88e6xxx_chip *chip, u8 *addr)
	return err;
}

/* Offset 0x0E: ATU Statistics */

int mv88e6xxx_g2_atu_stats_set(struct mv88e6xxx_chip *chip, u16 kind, u16 bin)
{
	return mv88e6xxx_g2_write(chip, MV88E6XXX_G2_ATU_STATS,
				  kind | bin);
}

int mv88e6xxx_g2_atu_stats_get(struct mv88e6xxx_chip *chip)
{
	int err;
	u16 val;

	err = mv88e6xxx_g2_read(chip, MV88E6XXX_G2_ATU_STATS, &val);
	if (err)
		return err;

	return val & MV88E6XXX_G2_ATU_STATS_MASK;
}

/* Offset 0x0F: Priority Override Table */

static int mv88e6xxx_g2_pot_write(struct mv88e6xxx_chip *chip, int pointer,
+23 −1
Original line number Diff line number Diff line
@@ -114,6 +114,15 @@

/* Offset 0x0E: ATU Stats Register */
#define MV88E6XXX_G2_ATU_STATS				0x0e
#define MV88E6XXX_G2_ATU_STATS_BIN_0			(0x0 << 14)
#define MV88E6XXX_G2_ATU_STATS_BIN_1			(0x1 << 14)
#define MV88E6XXX_G2_ATU_STATS_BIN_2			(0x2 << 14)
#define MV88E6XXX_G2_ATU_STATS_BIN_3			(0x3 << 14)
#define MV88E6XXX_G2_ATU_STATS_MODE_ALL			(0x0 << 12)
#define MV88E6XXX_G2_ATU_STATS_MODE_ALL_DYNAMIC		(0x1 << 12)
#define MV88E6XXX_G2_ATU_STATS_MODE_FID_ALL		(0x2 << 12)
#define MV88E6XXX_G2_ATU_STATS_MODE_FID_ALL_DYNAMIC	(0x3 << 12)
#define MV88E6XXX_G2_ATU_STATS_MASK			0x0fff

/* Offset 0x0F: Priority Override Table */
#define MV88E6XXX_G2_PRIO_OVERRIDE		0x0f
@@ -353,6 +362,8 @@ extern const struct mv88e6xxx_gpio_ops mv88e6352_gpio_ops;

int mv88e6xxx_g2_scratch_gpio_set_smi(struct mv88e6xxx_chip *chip,
				      bool external);
int mv88e6xxx_g2_atu_stats_set(struct mv88e6xxx_chip *chip, u16 kind, u16 bin);
int mv88e6xxx_g2_atu_stats_get(struct mv88e6xxx_chip *chip);

#else /* !CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */

@@ -515,6 +526,17 @@ static inline int mv88e6xxx_g2_device_mapping_write(struct mv88e6xxx_chip *chip,
	return -EOPNOTSUPP;
}

static inline int mv88e6xxx_g2_atu_stats_set(struct mv88e6xxx_chip *chip,
					     u16 kind, u16 bin)
{
	return -EOPNOTSUPP;
}

static inline int mv88e6xxx_g2_atu_stats_get(struct mv88e6xxx_chip *chip)
{
	return -EOPNOTSUPP;
}

#endif /* CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 */

#endif /* _MV88E6XXX_GLOBAL2_H */