diff options
author | Guenter Roeck <linux@roeck-us.net> | 2015-03-26 21:36:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-29 16:23:51 -0400 |
commit | 8d6d09e7a0149b60a8b504b21cafe5f4b304fd97 (patch) | |
tree | 50e06344eb8769bf34f09351aa2059be1a630bfb | |
parent | 366f0a0f98370d435de64978d623e6abf2630b01 (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.c | 35 |
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 | ||
75 | int mv88e6xxx_reg_read(struct dsa_switch *ds, int addr, int reg) | 75 | /* Must be called with SMI mutex held */ |
76 | static 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 | ||
94 | int 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 | |||
97 | int __mv88e6xxx_reg_write(struct mii_bus *bus, int sw_addr, int addr, | 106 | int __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 | ||
128 | int mv88e6xxx_reg_write(struct dsa_switch *ds, int addr, int reg, u16 val) | 137 | /* Must be called with SMI mutex held */ |
138 | static 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 | |||
152 | int 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; |