aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuenter Roeck <linux@roeck-us.net>2015-03-26 21:36:31 -0400
committerDavid S. Miller <davem@davemloft.net>2015-03-29 16:23:51 -0400
commit8d6d09e7a0149b60a8b504b21cafe5f4b304fd97 (patch)
tree50e06344eb8769bf34f09351aa2059be1a630bfb
parent366f0a0f98370d435de64978d623e6abf2630b01 (diff)
net: dsa: mv88e6xxx: Split mv88e6xxx_reg_read and mv88e6xxx_reg_write
Split mv88e6xxx_reg_read and mv88e6xxx_reg_write into two functions each, one to acquire smi_mutex and one to get struct mii_bus *bus from struct dsa_switch *ds and to call the actual read/write function. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Tested-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/dsa/mv88e6xxx.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/drivers/net/dsa/mv88e6xxx.c b/drivers/net/dsa/mv88e6xxx.c
index 5da50b00fdf6..d8f13327a438 100644
--- a/drivers/net/dsa/mv88e6xxx.c
+++ b/drivers/net/dsa/mv88e6xxx.c
@@ -72,19 +72,16 @@ int __mv88e6xxx_reg_read(struct mii_bus *bus, int sw_addr, int addr, int reg)
72 return ret & 0xffff; 72 return ret & 0xffff;
73} 73}
74 74
75int mv88e6xxx_reg_read(struct dsa_switch *ds, int addr, int reg) 75/* Must be called with SMI mutex held */
76static int _mv88e6xxx_reg_read(struct dsa_switch *ds, int addr, int reg)
76{ 77{
77 struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
78 struct mii_bus *bus = dsa_host_dev_to_mii_bus(ds->master_dev); 78 struct mii_bus *bus = dsa_host_dev_to_mii_bus(ds->master_dev);
79 int ret; 79 int ret;
80 80
81 if (bus == NULL) 81 if (bus == NULL)
82 return -EINVAL; 82 return -EINVAL;
83 83
84 mutex_lock(&ps->smi_mutex);
85 ret = __mv88e6xxx_reg_read(bus, ds->pd->sw_addr, addr, reg); 84 ret = __mv88e6xxx_reg_read(bus, ds->pd->sw_addr, addr, reg);
86 mutex_unlock(&ps->smi_mutex);
87
88 if (ret < 0) 85 if (ret < 0)
89 return ret; 86 return ret;
90 87
@@ -94,6 +91,18 @@ int mv88e6xxx_reg_read(struct dsa_switch *ds, int addr, int reg)
94 return ret; 91 return ret;
95} 92}
96 93
94int mv88e6xxx_reg_read(struct dsa_switch *ds, int addr, int reg)
95{
96 struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
97 int ret;
98
99 mutex_lock(&ps->smi_mutex);
100 ret = _mv88e6xxx_reg_read(ds, addr, reg);
101 mutex_unlock(&ps->smi_mutex);
102
103 return ret;
104}
105
97int __mv88e6xxx_reg_write(struct mii_bus *bus, int sw_addr, int addr, 106int __mv88e6xxx_reg_write(struct mii_bus *bus, int sw_addr, int addr,
98 int reg, u16 val) 107 int reg, u16 val)
99{ 108{
@@ -125,11 +134,11 @@ int __mv88e6xxx_reg_write(struct mii_bus *bus, int sw_addr, int addr,
125 return 0; 134 return 0;
126} 135}
127 136
128int mv88e6xxx_reg_write(struct dsa_switch *ds, int addr, int reg, u16 val) 137/* Must be called with SMI mutex held */
138static int _mv88e6xxx_reg_write(struct dsa_switch *ds, int addr, int reg,
139 u16 val)
129{ 140{
130 struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
131 struct mii_bus *bus = dsa_host_dev_to_mii_bus(ds->master_dev); 141 struct mii_bus *bus = dsa_host_dev_to_mii_bus(ds->master_dev);
132 int ret;
133 142
134 if (bus == NULL) 143 if (bus == NULL)
135 return -EINVAL; 144 return -EINVAL;
@@ -137,8 +146,16 @@ int mv88e6xxx_reg_write(struct dsa_switch *ds, int addr, int reg, u16 val)
137 dev_dbg(ds->master_dev, "-> addr: 0x%.2x reg: 0x%.2x val: 0x%.4x\n", 146 dev_dbg(ds->master_dev, "-> addr: 0x%.2x reg: 0x%.2x val: 0x%.4x\n",
138 addr, reg, val); 147 addr, reg, val);
139 148
149 return __mv88e6xxx_reg_write(bus, ds->pd->sw_addr, addr, reg, val);
150}
151
152int mv88e6xxx_reg_write(struct dsa_switch *ds, int addr, int reg, u16 val)
153{
154 struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
155 int ret;
156
140 mutex_lock(&ps->smi_mutex); 157 mutex_lock(&ps->smi_mutex);
141 ret = __mv88e6xxx_reg_write(bus, ds->pd->sw_addr, addr, reg, val); 158 ret = _mv88e6xxx_reg_write(ds, addr, reg, val);
142 mutex_unlock(&ps->smi_mutex); 159 mutex_unlock(&ps->smi_mutex);
143 160
144 return ret; 161 return ret;