]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: dsa: microchip: move ksz8->shifts to ksz_common
authorArun Ramadoss <arun.ramadoss@microchip.com>
Tue, 28 Jun 2022 17:13:25 +0000 (22:43 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Jun 2022 12:47:59 +0000 (13:47 +0100)
This patch moves ksz8->shifts from ksz8795.c to ksz_common.c. The shifts
are dereferenced using dev->info->shifts.

Signed-off-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/microchip/ksz8.h
drivers/net/dsa/microchip/ksz8795.c
drivers/net/dsa/microchip/ksz_common.c
drivers/net/dsa/microchip/ksz_common.h

index 22a047761aa5491cdbe91a14e55d1e7eae3ab75d..a4a2dc889b304a5509322ee6c8dbf67f3d1bc36a 100644 (file)
 #include <net/dsa.h>
 #include "ksz_common.h"
 
-enum ksz_shifts {
-       VLAN_TABLE_MEMBERSHIP_S,
-       VLAN_TABLE,
-       STATIC_MAC_FWD_PORTS,
-       STATIC_MAC_FID,
-       DYNAMIC_MAC_ENTRIES_H,
-       DYNAMIC_MAC_ENTRIES,
-       DYNAMIC_MAC_FID,
-       DYNAMIC_MAC_TIMESTAMP,
-       DYNAMIC_MAC_SRC_PORT,
-};
-
 struct ksz8 {
-       const u8 *shifts;
        void *priv;
 };
 
index 0c72ec50c04d7ec87f3b734b3f559af3056c7282..2b3db33c32ce0d6cfc113e1dbac6b22afa501e4c 100644 (file)
 #include "ksz8795_reg.h"
 #include "ksz8.h"
 
-static const u8 ksz8795_shifts[] = {
-       [VLAN_TABLE_MEMBERSHIP_S]       = 7,
-       [VLAN_TABLE]                    = 16,
-       [STATIC_MAC_FWD_PORTS]          = 16,
-       [STATIC_MAC_FID]                = 24,
-       [DYNAMIC_MAC_ENTRIES_H]         = 3,
-       [DYNAMIC_MAC_ENTRIES]           = 29,
-       [DYNAMIC_MAC_FID]               = 16,
-       [DYNAMIC_MAC_TIMESTAMP]         = 27,
-       [DYNAMIC_MAC_SRC_PORT]          = 24,
-};
-
-static u8 ksz8863_shifts[] = {
-       [VLAN_TABLE_MEMBERSHIP_S]       = 16,
-       [STATIC_MAC_FWD_PORTS]          = 16,
-       [STATIC_MAC_FID]                = 22,
-       [DYNAMIC_MAC_ENTRIES_H]         = 3,
-       [DYNAMIC_MAC_ENTRIES]           = 24,
-       [DYNAMIC_MAC_FID]               = 16,
-       [DYNAMIC_MAC_TIMESTAMP]         = 24,
-       [DYNAMIC_MAC_SRC_PORT]          = 20,
-};
-
 static bool ksz_is_ksz88x3(struct ksz_device *dev)
 {
        return dev->chip_id == 0x8830;
@@ -374,7 +351,6 @@ static int ksz8_valid_dyn_entry(struct ksz_device *dev, u8 *data)
 int ksz8_r_dyn_mac_table(struct ksz_device *dev, u16 addr, u8 *mac_addr,
                         u8 *fid, u8 *src_port, u8 *timestamp, u16 *entries)
 {
-       struct ksz8 *ksz8 = dev->priv;
        u32 data_hi, data_lo;
        const u8 *shifts;
        const u32 *masks;
@@ -383,7 +359,7 @@ int ksz8_r_dyn_mac_table(struct ksz_device *dev, u16 addr, u8 *mac_addr,
        u8 data;
        int rc;
 
-       shifts = ksz8->shifts;
+       shifts = dev->info->shifts;
        masks = dev->info->masks;
        regs = dev->info->regs;
 
@@ -438,13 +414,12 @@ int ksz8_r_dyn_mac_table(struct ksz_device *dev, u16 addr, u8 *mac_addr,
 int ksz8_r_sta_mac_table(struct ksz_device *dev, u16 addr,
                         struct alu_struct *alu)
 {
-       struct ksz8 *ksz8 = dev->priv;
        u32 data_hi, data_lo;
        const u8 *shifts;
        const u32 *masks;
        u64 data;
 
-       shifts = ksz8->shifts;
+       shifts = dev->info->shifts;
        masks = dev->info->masks;
 
        ksz8_r_table(dev, TABLE_STATIC_MAC, addr, &data);
@@ -477,13 +452,12 @@ int ksz8_r_sta_mac_table(struct ksz_device *dev, u16 addr,
 void ksz8_w_sta_mac_table(struct ksz_device *dev, u16 addr,
                          struct alu_struct *alu)
 {
-       struct ksz8 *ksz8 = dev->priv;
        u32 data_hi, data_lo;
        const u8 *shifts;
        const u32 *masks;
        u64 data;
 
-       shifts = ksz8->shifts;
+       shifts = dev->info->shifts;
        masks = dev->info->masks;
 
        data_lo = ((u32)alu->mac[2] << 24) |
@@ -510,11 +484,10 @@ void ksz8_w_sta_mac_table(struct ksz_device *dev, u16 addr,
 static void ksz8_from_vlan(struct ksz_device *dev, u32 vlan, u8 *fid,
                           u8 *member, u8 *valid)
 {
-       struct ksz8 *ksz8 = dev->priv;
        const u8 *shifts;
        const u32 *masks;
 
-       shifts = ksz8->shifts;
+       shifts = dev->info->shifts;
        masks = dev->info->masks;
 
        *fid = vlan & masks[VLAN_TABLE_FID];
@@ -526,11 +499,10 @@ static void ksz8_from_vlan(struct ksz_device *dev, u32 vlan, u8 *fid,
 static void ksz8_to_vlan(struct ksz_device *dev, u8 fid, u8 member, u8 valid,
                         u16 *vlan)
 {
-       struct ksz8 *ksz8 = dev->priv;
        const u8 *shifts;
        const u32 *masks;
 
-       shifts = ksz8->shifts;
+       shifts = dev->info->shifts;
        masks = dev->info->masks;
 
        *vlan = fid;
@@ -541,12 +513,11 @@ static void ksz8_to_vlan(struct ksz_device *dev, u8 fid, u8 member, u8 valid,
 
 static void ksz8_r_vlan_entries(struct ksz_device *dev, u16 addr)
 {
-       struct ksz8 *ksz8 = dev->priv;
        const u8 *shifts;
        u64 data;
        int i;
 
-       shifts = ksz8->shifts;
+       shifts = dev->info->shifts;
 
        ksz8_r_table(dev, TABLE_VLAN, addr, &data);
        addr *= 4;
@@ -1366,18 +1337,10 @@ u32 ksz8_get_port_addr(int port, int offset)
 
 int ksz8_switch_init(struct ksz_device *dev)
 {
-       struct ksz8 *ksz8 = dev->priv;
-
        dev->cpu_port = fls(dev->info->cpu_ports) - 1;
        dev->phy_port_cnt = dev->info->port_cnt - 1;
        dev->port_mask = (BIT(dev->phy_port_cnt) - 1) | dev->info->cpu_ports;
 
-       if (ksz_is_ksz88x3(dev)) {
-               ksz8->shifts = ksz8863_shifts;
-       } else {
-               ksz8->shifts = ksz8795_shifts;
-       }
-
        /* We rely on software untagging on the CPU port, so that we
         * can support both tagged and untagged VLANs
         */
index fc1ef0e50bff89ee3cfe0523f85bd5cf9ece4427..fa66bd14f66ab91c680f18642dfc26fcd14b22a3 100644 (file)
@@ -240,6 +240,18 @@ static const u32 ksz8795_masks[] = {
        [DYNAMIC_MAC_TABLE_TIMESTAMP]   = GENMASK(28, 27),
 };
 
+static const u8 ksz8795_shifts[] = {
+       [VLAN_TABLE_MEMBERSHIP_S]       = 7,
+       [VLAN_TABLE]                    = 16,
+       [STATIC_MAC_FWD_PORTS]          = 16,
+       [STATIC_MAC_FID]                = 24,
+       [DYNAMIC_MAC_ENTRIES_H]         = 3,
+       [DYNAMIC_MAC_ENTRIES]           = 29,
+       [DYNAMIC_MAC_FID]               = 16,
+       [DYNAMIC_MAC_TIMESTAMP]         = 27,
+       [DYNAMIC_MAC_SRC_PORT]          = 24,
+};
+
 static const u8 ksz8863_regs[] = {
        [REG_IND_CTRL_0]                = 0x79,
        [REG_IND_DATA_8]                = 0x7B,
@@ -278,6 +290,17 @@ static const u32 ksz8863_masks[] = {
        [DYNAMIC_MAC_TABLE_TIMESTAMP]   = GENMASK(23, 22),
 };
 
+static u8 ksz8863_shifts[] = {
+       [VLAN_TABLE_MEMBERSHIP_S]       = 16,
+       [STATIC_MAC_FWD_PORTS]          = 16,
+       [STATIC_MAC_FID]                = 22,
+       [DYNAMIC_MAC_ENTRIES_H]         = 3,
+       [DYNAMIC_MAC_ENTRIES]           = 24,
+       [DYNAMIC_MAC_FID]               = 16,
+       [DYNAMIC_MAC_TIMESTAMP]         = 24,
+       [DYNAMIC_MAC_SRC_PORT]          = 20,
+};
+
 const struct ksz_chip_data ksz_switch_chips[] = {
        [KSZ8795] = {
                .chip_id = KSZ8795_CHIP_ID,
@@ -294,6 +317,7 @@ const struct ksz_chip_data ksz_switch_chips[] = {
                .reg_mib_cnt = MIB_COUNTER_NUM,
                .regs = ksz8795_regs,
                .masks = ksz8795_masks,
+               .shifts = ksz8795_shifts,
                .stp_ctrl_reg = 0x02,
                .broadcast_ctrl_reg =  0x06,
                .multicast_ctrl_reg = 0x04,
@@ -333,6 +357,7 @@ const struct ksz_chip_data ksz_switch_chips[] = {
                .reg_mib_cnt = MIB_COUNTER_NUM,
                .regs = ksz8795_regs,
                .masks = ksz8795_masks,
+               .shifts = ksz8795_shifts,
                .stp_ctrl_reg = 0x02,
                .broadcast_ctrl_reg =  0x06,
                .multicast_ctrl_reg = 0x04,
@@ -358,6 +383,7 @@ const struct ksz_chip_data ksz_switch_chips[] = {
                .reg_mib_cnt = MIB_COUNTER_NUM,
                .regs = ksz8795_regs,
                .masks = ksz8795_masks,
+               .shifts = ksz8795_shifts,
                .stp_ctrl_reg = 0x02,
                .broadcast_ctrl_reg =  0x06,
                .multicast_ctrl_reg = 0x04,
@@ -382,6 +408,7 @@ const struct ksz_chip_data ksz_switch_chips[] = {
                .reg_mib_cnt = MIB_COUNTER_NUM,
                .regs = ksz8863_regs,
                .masks = ksz8863_masks,
+               .shifts = ksz8863_shifts,
                .stp_ctrl_reg = 0x02,
                .broadcast_ctrl_reg =  0x06,
                .multicast_ctrl_reg = 0x04,
index b1e4732357a1fc8c3d7ecb9f25090a39b84bf382..c11adf67757dd08e5205a08fd71e0fe58676bece 100644 (file)
@@ -49,6 +49,7 @@ struct ksz_chip_data {
        u8 reg_mib_cnt;
        const u8 *regs;
        const u32 *masks;
+       const u8 *shifts;
        int stp_ctrl_reg;
        int broadcast_ctrl_reg;
        int multicast_ctrl_reg;
@@ -187,6 +188,18 @@ enum ksz_masks {
        DYNAMIC_MAC_TABLE_TIMESTAMP,
 };
 
+enum ksz_shifts {
+       VLAN_TABLE_MEMBERSHIP_S,
+       VLAN_TABLE,
+       STATIC_MAC_FWD_PORTS,
+       STATIC_MAC_FID,
+       DYNAMIC_MAC_ENTRIES_H,
+       DYNAMIC_MAC_ENTRIES,
+       DYNAMIC_MAC_FID,
+       DYNAMIC_MAC_TIMESTAMP,
+       DYNAMIC_MAC_SRC_PORT,
+};
+
 struct alu_struct {
        /* entry 1 */
        u8      is_static:1;