@@ -189,35 +189,43 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
189
189
190
190
res = platform_get_resource_byname (pdev , IORESOURCE_MEM , "vpu" );
191
191
regs = devm_ioremap_resource (dev , res );
192
- if (IS_ERR (regs ))
193
- return PTR_ERR (regs );
192
+ if (IS_ERR (regs )) {
193
+ ret = PTR_ERR (regs );
194
+ goto free_drm ;
195
+ }
194
196
195
197
priv -> io_base = regs ;
196
198
197
199
res = platform_get_resource_byname (pdev , IORESOURCE_MEM , "hhi" );
198
200
/* Simply ioremap since it may be a shared register zone */
199
201
regs = devm_ioremap (dev , res -> start , resource_size (res ));
200
- if (!regs )
201
- return - EADDRNOTAVAIL ;
202
+ if (!regs ) {
203
+ ret = - EADDRNOTAVAIL ;
204
+ goto free_drm ;
205
+ }
202
206
203
207
priv -> hhi = devm_regmap_init_mmio (dev , regs ,
204
208
& meson_regmap_config );
205
209
if (IS_ERR (priv -> hhi )) {
206
210
dev_err (& pdev -> dev , "Couldn't create the HHI regmap\n" );
207
- return PTR_ERR (priv -> hhi );
211
+ ret = PTR_ERR (priv -> hhi );
212
+ goto free_drm ;
208
213
}
209
214
210
215
res = platform_get_resource_byname (pdev , IORESOURCE_MEM , "dmc" );
211
216
/* Simply ioremap since it may be a shared register zone */
212
217
regs = devm_ioremap (dev , res -> start , resource_size (res ));
213
- if (!regs )
214
- return - EADDRNOTAVAIL ;
218
+ if (!regs ) {
219
+ ret = - EADDRNOTAVAIL ;
220
+ goto free_drm ;
221
+ }
215
222
216
223
priv -> dmc = devm_regmap_init_mmio (dev , regs ,
217
224
& meson_regmap_config );
218
225
if (IS_ERR (priv -> dmc )) {
219
226
dev_err (& pdev -> dev , "Couldn't create the DMC regmap\n" );
220
- return PTR_ERR (priv -> dmc );
227
+ ret = PTR_ERR (priv -> dmc );
228
+ goto free_drm ;
221
229
}
222
230
223
231
priv -> vsync_irq = platform_get_irq (pdev , 0 );
0 commit comments