diff options
-rw-r--r-- | drivers/net/phy/mdio-gpio.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/drivers/net/phy/mdio-gpio.c b/drivers/net/phy/mdio-gpio.c index e701433bf52f..e853066c805a 100644 --- a/drivers/net/phy/mdio-gpio.c +++ b/drivers/net/phy/mdio-gpio.c | |||
@@ -110,7 +110,7 @@ static struct mii_bus *mdio_gpio_bus_init(struct device *dev, | |||
110 | struct mdio_gpio_info *bitbang; | 110 | struct mdio_gpio_info *bitbang; |
111 | int i; | 111 | int i; |
112 | 112 | ||
113 | bitbang = kzalloc(sizeof(*bitbang), GFP_KERNEL); | 113 | bitbang = devm_kzalloc(dev, sizeof(*bitbang), GFP_KERNEL); |
114 | if (!bitbang) | 114 | if (!bitbang) |
115 | goto out; | 115 | goto out; |
116 | 116 | ||
@@ -121,7 +121,7 @@ static struct mii_bus *mdio_gpio_bus_init(struct device *dev, | |||
121 | 121 | ||
122 | new_bus = alloc_mdio_bitbang(&bitbang->ctrl); | 122 | new_bus = alloc_mdio_bitbang(&bitbang->ctrl); |
123 | if (!new_bus) | 123 | if (!new_bus) |
124 | goto out_free_bitbang; | 124 | goto out; |
125 | 125 | ||
126 | new_bus->name = "GPIO Bitbanged MDIO", | 126 | new_bus->name = "GPIO Bitbanged MDIO", |
127 | 127 | ||
@@ -138,11 +138,11 @@ static struct mii_bus *mdio_gpio_bus_init(struct device *dev, | |||
138 | 138 | ||
139 | snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id); | 139 | snprintf(new_bus->id, MII_BUS_ID_SIZE, "gpio-%x", bus_id); |
140 | 140 | ||
141 | if (gpio_request(bitbang->mdc, "mdc")) | 141 | if (devm_gpio_request(dev, bitbang->mdc, "mdc")) |
142 | goto out_free_bus; | 142 | goto out_free_bus; |
143 | 143 | ||
144 | if (gpio_request(bitbang->mdio, "mdio")) | 144 | if (devm_gpio_request(dev, bitbang->mdio, "mdio")) |
145 | goto out_free_mdc; | 145 | goto out_free_bus; |
146 | 146 | ||
147 | gpio_direction_output(bitbang->mdc, 0); | 147 | gpio_direction_output(bitbang->mdc, 0); |
148 | 148 | ||
@@ -150,12 +150,8 @@ static struct mii_bus *mdio_gpio_bus_init(struct device *dev, | |||
150 | 150 | ||
151 | return new_bus; | 151 | return new_bus; |
152 | 152 | ||
153 | out_free_mdc: | ||
154 | gpio_free(bitbang->mdc); | ||
155 | out_free_bus: | 153 | out_free_bus: |
156 | free_mdio_bitbang(new_bus); | 154 | free_mdio_bitbang(new_bus); |
157 | out_free_bitbang: | ||
158 | kfree(bitbang); | ||
159 | out: | 155 | out: |
160 | return NULL; | 156 | return NULL; |
161 | } | 157 | } |
@@ -163,13 +159,8 @@ out: | |||
163 | static void mdio_gpio_bus_deinit(struct device *dev) | 159 | static void mdio_gpio_bus_deinit(struct device *dev) |
164 | { | 160 | { |
165 | struct mii_bus *bus = dev_get_drvdata(dev); | 161 | struct mii_bus *bus = dev_get_drvdata(dev); |
166 | struct mdio_gpio_info *bitbang = bus->priv; | ||
167 | 162 | ||
168 | dev_set_drvdata(dev, NULL); | ||
169 | gpio_free(bitbang->mdio); | ||
170 | gpio_free(bitbang->mdc); | ||
171 | free_mdio_bitbang(bus); | 163 | free_mdio_bitbang(bus); |
172 | kfree(bitbang); | ||
173 | } | 164 | } |
174 | 165 | ||
175 | static void mdio_gpio_bus_destroy(struct device *dev) | 166 | static void mdio_gpio_bus_destroy(struct device *dev) |