Date: | 2013-12-17 09:52:23 (9 years 9 months ago) |
---|---|
Author: | Lars C. |
Commit: | ee7dcbabdd9c5a7933cdae40f26361bd362572c1 |
Message: | usb: musb-jz4740: Don't manually free device managed resources Devices managed resources are freed automatically, no need to do this by hand. Also give a bit more descriptive names to the error labels. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> |
Files: |
drivers/usb/musb/jz4740.c (3 diffs) |
Change Details
drivers/usb/musb/jz4740.c | ||
---|---|---|
123 | 123 | struct platform_device *musb; |
124 | 124 | struct jz4740_glue *glue; |
125 | 125 | struct clk *clk; |
126 | ||
127 | int ret = -ENOMEM; | |
126 | int ret; | |
128 | 127 | |
129 | 128 | if (!pdata) { |
130 | 129 | dev_err(&pdev->dev, "failed to allocate platform data\n"); |
131 | goto err0; | |
130 | return -EINVAL; | |
132 | 131 | } |
133 | 132 | |
134 | 133 | glue = devm_kzalloc(&pdev->dev, sizeof(*glue), GFP_KERNEL); |
135 | if (!glue) { | |
136 | dev_err(&pdev->dev, "failed to allocate glue context\n"); | |
137 | goto err0; | |
138 | } | |
134 | if (!glue) | |
135 | return -ENOMEM; | |
139 | 136 | |
140 | 137 | musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO); |
141 | 138 | if (!musb) { |
142 | 139 | dev_err(&pdev->dev, "failed to allocate musb device\n"); |
143 | goto err1; | |
140 | return -ENOMEM; | |
144 | 141 | } |
145 | 142 | |
146 | 143 | clk = devm_clk_get(&pdev->dev, "udc"); |
147 | 144 | if (IS_ERR(clk)) { |
148 | 145 | dev_err(&pdev->dev, "failed to get clock\n"); |
149 | 146 | ret = PTR_ERR(clk); |
150 | goto err2; | |
147 | goto err_platform_device_put; | |
151 | 148 | } |
152 | 149 | |
153 | 150 | ret = clk_prepare_enable(clk); |
154 | 151 | if (ret) { |
155 | 152 | dev_err(&pdev->dev, "failed to enable clock\n"); |
156 | goto err3; | |
153 | goto err_platform_device_put; | |
157 | 154 | } |
158 | 155 | |
159 | 156 | musb->dev.parent = &pdev->dev; |
... | ... | |
170 | 167 | pdev->num_resources); |
171 | 168 | if (ret) { |
172 | 169 | dev_err(&pdev->dev, "failed to add resources\n"); |
173 | goto err4; | |
170 | goto err_clk_disable; | |
174 | 171 | } |
175 | 172 | |
176 | 173 | ret = platform_device_add_data(musb, pdata, sizeof(*pdata)); |
177 | 174 | if (ret) { |
178 | 175 | dev_err(&pdev->dev, "failed to add platform_data\n"); |
179 | goto err4; | |
176 | goto err_clk_disable; | |
180 | 177 | } |
181 | 178 | |
182 | 179 | ret = platform_device_add(musb); |
183 | 180 | if (ret) { |
184 | 181 | dev_err(&pdev->dev, "failed to register musb device\n"); |
185 | goto err4; | |
182 | goto err_clk_disable; | |
186 | 183 | } |
187 | 184 | |
188 | 185 | return 0; |
189 | 186 | |
190 | err4: | |
187 | err_clk_disable: | |
191 | 188 | clk_disable_unprepare(clk); |
192 | ||
193 | err3: | |
194 | devm_clk_put(&pdev->dev, clk); | |
195 | ||
196 | err2: | |
189 | err_platform_device_put: | |
197 | 190 | platform_device_put(musb); |
198 | ||
199 | err1: | |
200 | devm_kfree(&pdev->dev, glue); | |
201 | ||
202 | err0: | |
203 | 191 | return ret; |
204 | 192 | } |
205 | 193 | |
... | ... | |
209 | 197 | |
210 | 198 | platform_device_unregister(glue->musb); |
211 | 199 | clk_disable_unprepare(glue->clk); |
212 | clk_put(glue->clk); | |
213 | devm_kfree(&pdev->dev, glue); | |
214 | 200 | |
215 | 201 | return 0; |
216 | 202 | } |
Branches:
ben-wpan
ben-wpan-stefan
5396a9238205f20f811ea57898980d3ca82df0b6
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9