Skip to content

Commit 15d7d7d

Browse files
viviendavem330
authored andcommitted
net: dsa: mv88e6xxx: abstract VTU/STU data access
Both VTU and STU operations use the same routine to access their (common) data registers, with a different offset. Add VTU and STU specific read and write functions to the data registers to abstract the required offset. Signed-off-by: Vivien Didelot <[email protected]> Reviewed-by: Andrew Lunn <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c3f1010 commit 15d7d7d

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

drivers/net/dsa/mv88e6xxx.c

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1498,6 +1498,18 @@ static int _mv88e6xxx_vtu_stu_data_read(struct mv88e6xxx_priv_state *ps,
14981498
return 0;
14991499
}
15001500

1501+
static int mv88e6xxx_vtu_data_read(struct mv88e6xxx_priv_state *ps,
1502+
struct mv88e6xxx_vtu_stu_entry *entry)
1503+
{
1504+
return _mv88e6xxx_vtu_stu_data_read(ps, entry, 0);
1505+
}
1506+
1507+
static int mv88e6xxx_stu_data_read(struct mv88e6xxx_priv_state *ps,
1508+
struct mv88e6xxx_vtu_stu_entry *entry)
1509+
{
1510+
return _mv88e6xxx_vtu_stu_data_read(ps, entry, 2);
1511+
}
1512+
15011513
static int _mv88e6xxx_vtu_stu_data_write(struct mv88e6xxx_priv_state *ps,
15021514
struct mv88e6xxx_vtu_stu_entry *entry,
15031515
unsigned int nibble_offset)
@@ -1523,6 +1535,18 @@ static int _mv88e6xxx_vtu_stu_data_write(struct mv88e6xxx_priv_state *ps,
15231535
return 0;
15241536
}
15251537

1538+
static int mv88e6xxx_vtu_data_write(struct mv88e6xxx_priv_state *ps,
1539+
struct mv88e6xxx_vtu_stu_entry *entry)
1540+
{
1541+
return _mv88e6xxx_vtu_stu_data_write(ps, entry, 0);
1542+
}
1543+
1544+
static int mv88e6xxx_stu_data_write(struct mv88e6xxx_priv_state *ps,
1545+
struct mv88e6xxx_vtu_stu_entry *entry)
1546+
{
1547+
return _mv88e6xxx_vtu_stu_data_write(ps, entry, 2);
1548+
}
1549+
15261550
static int _mv88e6xxx_vtu_vid_write(struct mv88e6xxx_priv_state *ps, u16 vid)
15271551
{
15281552
return _mv88e6xxx_reg_write(ps, REG_GLOBAL, GLOBAL_VTU_VID,
@@ -1551,7 +1575,7 @@ static int _mv88e6xxx_vtu_getnext(struct mv88e6xxx_priv_state *ps,
15511575
next.valid = !!(ret & GLOBAL_VTU_VID_VALID);
15521576

15531577
if (next.valid) {
1554-
ret = _mv88e6xxx_vtu_stu_data_read(ps, &next, 0);
1578+
ret = mv88e6xxx_vtu_data_read(ps, &next);
15551579
if (ret < 0)
15561580
return ret;
15571581

@@ -1658,7 +1682,7 @@ static int _mv88e6xxx_vtu_loadpurge(struct mv88e6xxx_priv_state *ps,
16581682
goto loadpurge;
16591683

16601684
/* Write port member tags */
1661-
ret = _mv88e6xxx_vtu_stu_data_write(ps, entry, 0);
1685+
ret = mv88e6xxx_vtu_data_write(ps, entry);
16621686
if (ret < 0)
16631687
return ret;
16641688

@@ -1724,7 +1748,7 @@ static int _mv88e6xxx_stu_getnext(struct mv88e6xxx_priv_state *ps, u8 sid,
17241748
next.valid = !!(ret & GLOBAL_VTU_VID_VALID);
17251749

17261750
if (next.valid) {
1727-
ret = _mv88e6xxx_vtu_stu_data_read(ps, &next, 2);
1751+
ret = mv88e6xxx_stu_data_read(ps, &next);
17281752
if (ret < 0)
17291753
return ret;
17301754
}
@@ -1747,7 +1771,7 @@ static int _mv88e6xxx_stu_loadpurge(struct mv88e6xxx_priv_state *ps,
17471771
goto loadpurge;
17481772

17491773
/* Write port states */
1750-
ret = _mv88e6xxx_vtu_stu_data_write(ps, entry, 2);
1774+
ret = mv88e6xxx_stu_data_write(ps, entry);
17511775
if (ret < 0)
17521776
return ret;
17531777

0 commit comments

Comments
 (0)