summaryrefslogtreecommitdiff
path: root/drivers/net/dsa/microchip/ksz_common.h
diff options
context:
space:
mode:
authorArun Ramadoss <arun.ramadoss@microchip.com>2022-09-22 12:40:27 +0530
committerJakub Kicinski <kuba@kernel.org>2022-09-26 12:42:01 -0700
commite1add7dd6183b9d4184847c310f8dd9f1a2ba7a4 (patch)
tree80896155ba3db53001dac676357830e23c6a5c6d /drivers/net/dsa/microchip/ksz_common.h
parentff319a644829427ebe599185d05db308389f7d72 (diff)
net: dsa: microchip: use common irq routines for girq and pirq
The global port interrupt routines and individual ports interrupt routines has similar implementation except the mask & status register and number of nested irqs in them. The mask & status register and pointer to ksz_device is added to ksz_irq and uses the ksz_irq as irq_chip_data. Signed-off-by: Arun Ramadoss <arun.ramadoss@microchip.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/dsa/microchip/ksz_common.h')
-rw-r--r--drivers/net/dsa/microchip/ksz_common.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h
index 6edce587bfd2..9cfa179575ce 100644
--- a/drivers/net/dsa/microchip/ksz_common.h
+++ b/drivers/net/dsa/microchip/ksz_common.h
@@ -72,10 +72,13 @@ struct ksz_chip_data {
struct ksz_irq {
u16 masked;
- struct irq_chip chip;
+ u16 reg_mask;
+ u16 reg_status;
struct irq_domain *domain;
int nirqs;
+ int irq_num;
char name[16];
+ struct ksz_device *dev;
};
struct ksz_port {
@@ -574,8 +577,8 @@ static inline int is_lan937x(struct ksz_device *dev)
#define P_MII_SEL_M 0x3
/* Interrupt */
-#define REG_SW_PORT_INT_STATUS__4 0x0018
-#define REG_SW_PORT_INT_MASK__4 0x001C
+#define REG_SW_PORT_INT_STATUS__1 0x001B
+#define REG_SW_PORT_INT_MASK__1 0x001F
#define REG_PORT_INT_STATUS 0x001B
#define REG_PORT_INT_MASK 0x001F