diff options
author | Vivien Didelot <vivien.didelot@savoirfairelinux.com> | 2017-05-01 14:05:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-05-01 15:03:10 -0400 |
commit | 3afb4bde6fe8f2d43b2153cc2672d07477729cca (patch) | |
tree | f757585c4a4d710d50cf232aa53f885114088b51 /drivers/net/dsa/mv88e6xxx/global1_vtu.c | |
parent | net: dsa: mv88e6xxx: move VTU SID accessors (diff) | |
download | linux-dev-3afb4bde6fe8f2d43b2153cc2672d07477729cca.tar.xz linux-dev-3afb4bde6fe8f2d43b2153cc2672d07477729cca.zip |
net: dsa: mv88e6xxx: move VTU VID accessors
Add helpers to access the VTU VID register in the global1_vtu.c file.
At the same time, move mv88e6xxx_g1_vtu_vid_write at the beginning of
_mv88e6xxx_vtu_loadpurge, which adds no functional changes but makes
future patches simpler.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r-- | drivers/net/dsa/mv88e6xxx/global1_vtu.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/net/dsa/mv88e6xxx/global1_vtu.c b/drivers/net/dsa/mv88e6xxx/global1_vtu.c index 201c063d15f2..6ac3d0eeae6b 100644 --- a/drivers/net/dsa/mv88e6xxx/global1_vtu.c +++ b/drivers/net/dsa/mv88e6xxx/global1_vtu.c @@ -82,6 +82,35 @@ int mv88e6xxx_g1_vtu_op(struct mv88e6xxx_chip *chip, u16 op) return mv88e6xxx_g1_vtu_op_wait(chip); } +/* Offset 0x06: VTU VID Register */ + +int mv88e6xxx_g1_vtu_vid_read(struct mv88e6xxx_chip *chip, + struct mv88e6xxx_vtu_entry *entry) +{ + u16 val; + int err; + + err = mv88e6xxx_g1_read(chip, GLOBAL_VTU_VID, &val); + if (err) + return err; + + entry->vid = val & 0xfff; + entry->valid = !!(val & GLOBAL_VTU_VID_VALID); + + return 0; +} + +int mv88e6xxx_g1_vtu_vid_write(struct mv88e6xxx_chip *chip, + struct mv88e6xxx_vtu_entry *entry) +{ + u16 val = entry->vid & 0xfff; + + if (entry->valid) + val |= GLOBAL_VTU_VID_VALID; + + return mv88e6xxx_g1_write(chip, GLOBAL_VTU_VID, val); +} + /* VLAN Translation Unit Operations */ int mv88e6xxx_g1_vtu_flush(struct mv88e6xxx_chip *chip) |