mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
net: mscc: ocelot: expose ocelot wm functions
Expose ocelot_wm functions so they can be shared with other drivers. Signed-off-by: Colin Foster <colin.foster@in-advantage.com> Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com> # regression Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
3c1dc22162
commit
c6a9321b08
@ -487,6 +487,37 @@ static void ocelot_watermark_init(struct ocelot *ocelot)
|
||||
ocelot_setup_sharing_watermarks(ocelot);
|
||||
}
|
||||
|
||||
/* Watermark encode
|
||||
* Bit 8: Unit; 0:1, 1:16
|
||||
* Bit 7-0: Value to be multiplied with unit
|
||||
*/
|
||||
u16 ocelot_wm_enc(u16 value)
|
||||
{
|
||||
WARN_ON(value >= 16 * BIT(8));
|
||||
|
||||
if (value >= BIT(8))
|
||||
return BIT(8) | (value / 16);
|
||||
|
||||
return value;
|
||||
}
|
||||
EXPORT_SYMBOL(ocelot_wm_enc);
|
||||
|
||||
u16 ocelot_wm_dec(u16 wm)
|
||||
{
|
||||
if (wm & BIT(8))
|
||||
return (wm & GENMASK(7, 0)) * 16;
|
||||
|
||||
return wm;
|
||||
}
|
||||
EXPORT_SYMBOL(ocelot_wm_dec);
|
||||
|
||||
void ocelot_wm_stat(u32 val, u32 *inuse, u32 *maxuse)
|
||||
{
|
||||
*inuse = (val & GENMASK(23, 12)) >> 12;
|
||||
*maxuse = val & GENMASK(11, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(ocelot_wm_stat);
|
||||
|
||||
/* Pool size and type are fixed up at runtime. Keeping this structure to
|
||||
* look up the cell size multipliers.
|
||||
*/
|
||||
|
@ -229,34 +229,6 @@ static int ocelot_reset(struct ocelot *ocelot)
|
||||
return regmap_field_write(ocelot->regfields[SYS_RESET_CFG_CORE_ENA], 1);
|
||||
}
|
||||
|
||||
/* Watermark encode
|
||||
* Bit 8: Unit; 0:1, 1:16
|
||||
* Bit 7-0: Value to be multiplied with unit
|
||||
*/
|
||||
static u16 ocelot_wm_enc(u16 value)
|
||||
{
|
||||
WARN_ON(value >= 16 * BIT(8));
|
||||
|
||||
if (value >= BIT(8))
|
||||
return BIT(8) | (value / 16);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static u16 ocelot_wm_dec(u16 wm)
|
||||
{
|
||||
if (wm & BIT(8))
|
||||
return (wm & GENMASK(7, 0)) * 16;
|
||||
|
||||
return wm;
|
||||
}
|
||||
|
||||
static void ocelot_wm_stat(u32 val, u32 *inuse, u32 *maxuse)
|
||||
{
|
||||
*inuse = (val & GENMASK(23, 12)) >> 12;
|
||||
*maxuse = val & GENMASK(11, 0);
|
||||
}
|
||||
|
||||
static const struct ocelot_ops ocelot_ops = {
|
||||
.reset = ocelot_reset,
|
||||
.wm_enc = ocelot_wm_enc,
|
||||
|
@ -978,6 +978,11 @@ void ocelot_port_assign_dsa_8021q_cpu(struct ocelot *ocelot, int port, int cpu);
|
||||
void ocelot_port_unassign_dsa_8021q_cpu(struct ocelot *ocelot, int port);
|
||||
u32 ocelot_port_assigned_dsa_8021q_cpu_mask(struct ocelot *ocelot, int port);
|
||||
|
||||
/* Watermark interface */
|
||||
u16 ocelot_wm_enc(u16 value);
|
||||
u16 ocelot_wm_dec(u16 wm);
|
||||
void ocelot_wm_stat(u32 val, u32 *inuse, u32 *maxuse);
|
||||
|
||||
/* DSA callbacks */
|
||||
void ocelot_get_strings(struct ocelot *ocelot, int port, u32 sset, u8 *data);
|
||||
void ocelot_get_ethtool_stats(struct ocelot *ocelot, int port, u64 *data);
|
||||
|
Loading…
Reference in New Issue
Block a user