1 From 8402a58cd1968ce6893b17fa4615349015b333c8 Mon Sep 17 00:00:00 2001
2 From: John Crispin <john@phrozen.org>
3 Date: Tue, 1 Nov 2016 01:53:34 +0100
4 Subject: [PATCH 20/22] net: dsa: qca8k: add offloading hooks
6 Modify the driver to accomodate the requirements of the offloading code.
7 Do so by making the register access functions none static and calling the
10 Signed-off-by: John Crispin <john@phrozen.org>
12 drivers/net/dsa/qca8k.c | 27 ++++++++++++---------------
13 drivers/net/dsa/qca8k.h | 24 ++++++++++++++++++++++++
14 2 files changed, 36 insertions(+), 15 deletions(-)
16 Index: linux-4.9.34/drivers/net/dsa/qca8k.c
17 ===================================================================
18 --- linux-4.9.34.orig/drivers/net/dsa/qca8k.c
19 +++ linux-4.9.34/drivers/net/dsa/qca8k.c
24 +struct qca8k_priv *qca8k_priv = NULL;
25 +EXPORT_SYMBOL_GPL(qca8k_priv);
27 static const struct qca8k_mib_desc ar8327_mib[] = {
28 MIB_DESC(1, 0x00, "RxBroad"),
29 MIB_DESC(1, 0x04, "RxPause"),
30 @@ -146,7 +149,7 @@ qca8k_set_page(struct mii_bus *bus, u16
31 qca8k_current_page = page;
36 qca8k_read(struct qca8k_priv *priv, u32 reg)
39 @@ -163,8 +166,9 @@ qca8k_read(struct qca8k_priv *priv, u32
43 +EXPORT_SYMBOL_GPL(qca8k_read);
47 qca8k_write(struct qca8k_priv *priv, u32 reg, u32 val)
50 @@ -178,8 +182,9 @@ qca8k_write(struct qca8k_priv *priv, u32
52 mutex_unlock(&priv->bus->mdio_lock);
54 +EXPORT_SYMBOL_GPL(qca8k_write);
58 qca8k_rmw(struct qca8k_priv *priv, u32 reg, u32 mask, u32 val)
61 @@ -199,18 +204,7 @@ qca8k_rmw(struct qca8k_priv *priv, u32 r
67 -qca8k_reg_set(struct qca8k_priv *priv, u32 reg, u32 val)
69 - qca8k_rmw(priv, reg, 0, val);
73 -qca8k_reg_clear(struct qca8k_priv *priv, u32 reg, u32 val)
75 - qca8k_rmw(priv, reg, val, 0);
77 +EXPORT_SYMBOL_GPL(qca8k_rmw);
80 qca8k_regmap_read(void *ctx, uint32_t reg, uint32_t *val)
81 @@ -1116,6 +1110,7 @@ qca8k_sw_probe(struct mdio_device *mdiod
83 struct qca8k_priv *priv;
87 /* allocate the private data struct so that we can probe the switches
89 @@ -1143,7 +1138,12 @@ qca8k_sw_probe(struct mdio_device *mdiod
90 mutex_init(&priv->reg_mutex);
91 dev_set_drvdata(&mdiodev->dev, priv);
93 - return dsa_register_switch(priv->ds, priv->ds->dev->of_node);
95 + ret = dsa_register_switch(priv->ds, priv->ds->dev->of_node);
103 Index: linux-4.9.34/drivers/net/dsa/qca8k.h
104 ===================================================================
105 --- linux-4.9.34.orig/drivers/net/dsa/qca8k.h
106 +++ linux-4.9.34/drivers/net/dsa/qca8k.h
107 @@ -178,13 +178,17 @@ struct ar8xxx_port_status {
111 +struct qca8k_offload *offload;
114 struct regmap *regmap;
116 struct ar8xxx_port_status port_sts[QCA8K_NUM_PORTS];
117 struct dsa_switch *ds;
118 struct mutex reg_mutex;
119 + struct qca8k_offload *offload;
121 +extern struct qca8k_priv *qca8k_priv;
123 struct qca8k_mib_desc {
125 @@ -200,4 +204,25 @@ struct qca8k_arl {
130 +qca8k_rmw(struct qca8k_priv *priv, u32 reg, u32 mask, u32 val);
133 +qca8k_read(struct qca8k_priv *priv, u32 reg);
136 +qca8k_write(struct qca8k_priv *priv, u32 reg, u32 val);
139 +qca8k_reg_set(struct qca8k_priv *priv, u32 reg, u32 val)
141 + qca8k_rmw(priv, reg, 0, val);
145 +qca8k_reg_clear(struct qca8k_priv *priv, u32 reg, u32 val)
147 + qca8k_rmw(priv, reg, val, 0);
150 #endif /* __QCA8K_H */