diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2012-07-29 15:46:05 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-08-10 15:01:32 -0400 |
commit | 979834313271203d1e6e84241cc3aca4503a3dbb (patch) | |
tree | a7551fff08086b9102e378b7af4113a8d3ceb882 /drivers/usb/host/ehci-atmel.c | |
parent | a816e3113b63753c330ca4751ea1d208e93e3015 (diff) |
drivers/usb/host/ehci-atmel.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver
detaches. This patch uses these functions for data that is allocated in
the probe function of a platform device and is only freed in the remove
function.
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/ehci-atmel.c')
-rw-r--r-- | drivers/usb/host/ehci-atmel.c | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c index a47e2cffaaf8..411bb74152eb 100644 --- a/drivers/usb/host/ehci-atmel.c +++ b/drivers/usb/host/ehci-atmel.c | |||
@@ -150,31 +150,24 @@ static int __devinit ehci_atmel_drv_probe(struct platform_device *pdev) | |||
150 | hcd->rsrc_start = res->start; | 150 | hcd->rsrc_start = res->start; |
151 | hcd->rsrc_len = resource_size(res); | 151 | hcd->rsrc_len = resource_size(res); |
152 | 152 | ||
153 | if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, | 153 | hcd->regs = devm_request_and_ioremap(&pdev->dev, res); |
154 | driver->description)) { | ||
155 | dev_dbg(&pdev->dev, "controller already in use\n"); | ||
156 | retval = -EBUSY; | ||
157 | goto fail_request_resource; | ||
158 | } | ||
159 | |||
160 | hcd->regs = ioremap_nocache(hcd->rsrc_start, hcd->rsrc_len); | ||
161 | if (hcd->regs == NULL) { | 154 | if (hcd->regs == NULL) { |
162 | dev_dbg(&pdev->dev, "error mapping memory\n"); | 155 | dev_dbg(&pdev->dev, "error mapping memory\n"); |
163 | retval = -EFAULT; | 156 | retval = -EFAULT; |
164 | goto fail_ioremap; | 157 | goto fail_request_resource; |
165 | } | 158 | } |
166 | 159 | ||
167 | iclk = clk_get(&pdev->dev, "ehci_clk"); | 160 | iclk = devm_clk_get(&pdev->dev, "ehci_clk"); |
168 | if (IS_ERR(iclk)) { | 161 | if (IS_ERR(iclk)) { |
169 | dev_err(&pdev->dev, "Error getting interface clock\n"); | 162 | dev_err(&pdev->dev, "Error getting interface clock\n"); |
170 | retval = -ENOENT; | 163 | retval = -ENOENT; |
171 | goto fail_get_iclk; | 164 | goto fail_request_resource; |
172 | } | 165 | } |
173 | fclk = clk_get(&pdev->dev, "uhpck"); | 166 | fclk = devm_clk_get(&pdev->dev, "uhpck"); |
174 | if (IS_ERR(fclk)) { | 167 | if (IS_ERR(fclk)) { |
175 | dev_err(&pdev->dev, "Error getting function clock\n"); | 168 | dev_err(&pdev->dev, "Error getting function clock\n"); |
176 | retval = -ENOENT; | 169 | retval = -ENOENT; |
177 | goto fail_get_fclk; | 170 | goto fail_request_resource; |
178 | } | 171 | } |
179 | 172 | ||
180 | atmel_start_ehci(pdev); | 173 | atmel_start_ehci(pdev); |
@@ -187,13 +180,6 @@ static int __devinit ehci_atmel_drv_probe(struct platform_device *pdev) | |||
187 | 180 | ||
188 | fail_add_hcd: | 181 | fail_add_hcd: |
189 | atmel_stop_ehci(pdev); | 182 | atmel_stop_ehci(pdev); |
190 | clk_put(fclk); | ||
191 | fail_get_fclk: | ||
192 | clk_put(iclk); | ||
193 | fail_get_iclk: | ||
194 | iounmap(hcd->regs); | ||
195 | fail_ioremap: | ||
196 | release_mem_region(hcd->rsrc_start, hcd->rsrc_len); | ||
197 | fail_request_resource: | 183 | fail_request_resource: |
198 | usb_put_hcd(hcd); | 184 | usb_put_hcd(hcd); |
199 | fail_create_hcd: | 185 | fail_create_hcd: |
@@ -209,13 +195,9 @@ static int __devexit ehci_atmel_drv_remove(struct platform_device *pdev) | |||
209 | 195 | ||
210 | ehci_shutdown(hcd); | 196 | ehci_shutdown(hcd); |
211 | usb_remove_hcd(hcd); | 197 | usb_remove_hcd(hcd); |
212 | iounmap(hcd->regs); | ||
213 | release_mem_region(hcd->rsrc_start, hcd->rsrc_len); | ||
214 | usb_put_hcd(hcd); | 198 | usb_put_hcd(hcd); |
215 | 199 | ||
216 | atmel_stop_ehci(pdev); | 200 | atmel_stop_ehci(pdev); |
217 | clk_put(fclk); | ||
218 | clk_put(iclk); | ||
219 | fclk = iclk = NULL; | 201 | fclk = iclk = NULL; |
220 | 202 | ||
221 | return 0; | 203 | return 0; |