OSDN Git Service

net: dsa: mv88e6xxx: better IEEE Prio Mapping Table description
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Sun, 18 Jun 2017 03:07:14 +0000 (23:07 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Jun 2017 17:27:01 +0000 (13:27 -0400)
Kill the remaining shift macro in favor of calculating at compile time
its value from the more descriptive mask, which gives us a better
representation of the register layout.

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/port.c
drivers/net/dsa/mv88e6xxx/port.h

index 73d825e..a7801f6 100644 (file)
@@ -12,6 +12,7 @@
  * (at your option) any later version.
  */
 
+#include <linux/bitfield.h>
 #include <linux/if_bridge.h>
 #include <linux/phy.h>
 
@@ -912,15 +913,13 @@ int mv88e6095_port_tag_remap(struct mv88e6xxx_chip *chip, int port)
 }
 
 static int mv88e6xxx_port_ieeepmt_write(struct mv88e6xxx_chip *chip,
-                                       int port, u16 table,
-                                       u8 pointer, u16 data)
+                                       int port, u16 table, u8 ptr, u16 data)
 {
        u16 reg;
 
-       reg = MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_UPDATE |
-               table |
-               (pointer << MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_POINTER_SHIFT) |
-               data;
+       reg = MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_UPDATE | table |
+               (ptr << __bf_shf(MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_PTR_MASK)) |
+               (data & MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_DATA_MASK);
 
        return mv88e6xxx_port_write(chip, port,
                                    MV88E6390_PORT_IEEE_PRIO_MAP_TABLE, reg);
index 8a34ea7..8f3991b 100644 (file)
 /* Offset 0x18: IEEE Priority Mapping Table */
 #define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE                     0x18
 #define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_UPDATE              0x8000
+#define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_MASK                        0x7000
 #define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_INGRESS_PCP         0x0000
 #define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_EGRESS_GREEN_PCP    0x1000
 #define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_EGRESS_YELLOW_PCP   0x2000
 #define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_EGRESS_GREEN_DSCP   0x5000
 #define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_EGRESS_YELLOW_DSCP  0x6000
 #define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_EGRESS_AVB_DSCP     0x7000
-#define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_POINTER_SHIFT       9
+#define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_PTR_MASK            0x0e00
+#define MV88E6390_PORT_IEEE_PRIO_MAP_TABLE_DATA_MASK           0x01ff
 
 /* Offset 0x18: Port IEEE Priority Remapping Registers (0-3) */
 #define MV88E6095_PORT_IEEE_PRIO_REMAP_0123    0x18