| .. | .. |
|---|
| 320 | 320 | if (priv->afbcd.ops) { |
|---|
| 321 | 321 | ret = priv->afbcd.ops->init(priv); |
|---|
| 322 | 322 | if (ret) |
|---|
| 323 | | - return ret; |
|---|
| 323 | + goto free_drm; |
|---|
| 324 | 324 | } |
|---|
| 325 | 325 | |
|---|
| 326 | 326 | /* Encoder Initialization */ |
|---|
| 327 | 327 | |
|---|
| 328 | 328 | ret = meson_venc_cvbs_create(priv); |
|---|
| 329 | 329 | if (ret) |
|---|
| 330 | | - goto free_drm; |
|---|
| 330 | + goto exit_afbcd; |
|---|
| 331 | 331 | |
|---|
| 332 | 332 | if (has_components) { |
|---|
| 333 | 333 | ret = component_bind_all(drm->dev, drm); |
|---|
| 334 | 334 | if (ret) { |
|---|
| 335 | 335 | dev_err(drm->dev, "Couldn't bind all components\n"); |
|---|
| 336 | | - goto free_drm; |
|---|
| 336 | + goto exit_afbcd; |
|---|
| 337 | 337 | } |
|---|
| 338 | 338 | } |
|---|
| 339 | 339 | |
|---|
| 340 | 340 | ret = meson_plane_create(priv); |
|---|
| 341 | 341 | if (ret) |
|---|
| 342 | | - goto free_drm; |
|---|
| 342 | + goto unbind_all; |
|---|
| 343 | 343 | |
|---|
| 344 | 344 | ret = meson_overlay_create(priv); |
|---|
| 345 | 345 | if (ret) |
|---|
| 346 | | - goto free_drm; |
|---|
| 346 | + goto unbind_all; |
|---|
| 347 | 347 | |
|---|
| 348 | 348 | ret = meson_crtc_create(priv); |
|---|
| 349 | 349 | if (ret) |
|---|
| 350 | | - goto free_drm; |
|---|
| 350 | + goto unbind_all; |
|---|
| 351 | 351 | |
|---|
| 352 | 352 | ret = drm_irq_install(drm, priv->vsync_irq); |
|---|
| 353 | 353 | if (ret) |
|---|
| 354 | | - goto free_drm; |
|---|
| 354 | + goto unbind_all; |
|---|
| 355 | 355 | |
|---|
| 356 | 356 | drm_mode_config_reset(drm); |
|---|
| 357 | 357 | |
|---|
| .. | .. |
|---|
| 369 | 369 | |
|---|
| 370 | 370 | uninstall_irq: |
|---|
| 371 | 371 | drm_irq_uninstall(drm); |
|---|
| 372 | +unbind_all: |
|---|
| 373 | + if (has_components) |
|---|
| 374 | + component_unbind_all(drm->dev, drm); |
|---|
| 375 | +exit_afbcd: |
|---|
| 376 | + if (priv->afbcd.ops) |
|---|
| 377 | + priv->afbcd.ops->exit(priv); |
|---|
| 372 | 378 | free_drm: |
|---|
| 373 | 379 | drm_dev_put(drm); |
|---|
| 374 | 380 | |
|---|