net: dsa: mv88e6xxx: implement .port_set_policy for Amethyst
authorMarek Behún <kabel@kernel.org>
Wed, 17 Mar 2021 13:46:43 +0000 (14:46 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Mar 2021 21:44:19 +0000 (14:44 -0700)
commit6584b26020fc5bb586d6e9f621eb8a7343a6ed33
tree97e37ec40185dc24012abbca06e960f48885fd5d
parentde776d0d316f7230d96ac1aa1df354d880476c1f
net: dsa: mv88e6xxx: implement .port_set_policy for Amethyst

The 16-bit Port Policy CTL register from older chips is on 6393x changed
to Port Policy MGMT CTL, which can access more data, but indirectly and
via 8-bit registers.

The original 16-bit value is divided into first two 8-bit register in
the Port Policy MGMT CTL.

We can therefore use the previous code to compute the mask and shift,
and then
- if 0 <= shift < 8, we access register 0 in Port Policy MGMT CTL
- if 8 <= shift < 16, we access register 1 in Port Policy MGMT CTL

There are in fact other possible policy settings for Amethyst which
could be added here, but this can be done in the future.

Signed-off-by: Marek Behún <kabel@kernel.org>
Reviewed-by: Pavana Sharma <pavana.sharma@digi.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c
drivers/net/dsa/mv88e6xxx/port.c
drivers/net/dsa/mv88e6xxx/port.h