net: dsa: microchip: add reference to ksz_device inside the ksz_port
authorArun Ramadoss <arun.ramadoss@microchip.com>
Fri, 2 Sep 2022 10:32:08 +0000 (16:02 +0530)
committerDavid S. Miller <davem@davemloft.net>
Mon, 5 Sep 2022 12:06:39 +0000 (13:06 +0100)
struct ksz_port doesn't have reference to ksz_device as of now. In order
to find out from which port interrupt has triggered, we need to pass the
struct ksz_port as a host data. When the interrupt is triggered, we can
get the port from which interrupt triggered, but to identify it is phy
interrupt we have to read status register. The regmap structure for
accessing the device register is present in the ksz_device struct. To
access the ksz_device from the ksz_port, the reference is added to it
with port number as well.

Signed-off-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/microchip/ksz_common.c
drivers/net/dsa/microchip/ksz_common.h

index 37fb5ba2cd7adaa0ff2fd0262667c0ac001ab7d2..63b9faa893933ec391c094d3f5d8c24abdeba2dc 100644 (file)
@@ -2357,6 +2357,9 @@ int ksz_switch_register(struct ksz_device *dev)
                                     GFP_KERNEL);
                if (!dev->ports[i].mib.counters)
                        return -ENOMEM;
+
+               dev->ports[i].ksz_dev = dev;
+               dev->ports[i].num = i;
        }
 
        /* set the real number of ports */
index c01989c04d4e3b569e419acbe2766aaeea372fb3..3fa3e4731d5809be577fe9122e19a65a7e67c56c 100644 (file)
@@ -16,6 +16,8 @@
 
 #define KSZ_MAX_NUM_PORTS 8
 
+struct ksz_device;
+
 struct vlan_table {
        u32 table[3];
 };
@@ -83,6 +85,8 @@ struct ksz_port {
        u16 max_frame;
        u32 rgmii_tx_val;
        u32 rgmii_rx_val;
+       struct ksz_device *ksz_dev;
+       u8 num;
 };
 
 struct ksz_device {