diff options
author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2012-09-24 05:00:37 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-01-06 06:33:34 -0500 |
commit | cf48f56c27ecfe94fbea363db6e8e0bacbd525ed (patch) | |
tree | c6d2aab837332b754915907082c30fc7a4ac6aed /drivers/media/platform | |
parent | 740ad921f8a72ed76d20c88225a2fa71e8290904 (diff) |
[media] s5p-tv: Fix return value in sdo_probe() on error paths
Use proper return value test for clk_get() and devm_regulator_get()
functions and propagate any errors from the clock and the regulator
subsystem to the driver core. In two cases a proper error code is
now returned rather than 0.
Reported-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/platform')
-rw-r--r-- | drivers/media/platform/s5p-tv/sdo_drv.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/drivers/media/platform/s5p-tv/sdo_drv.c b/drivers/media/platform/s5p-tv/sdo_drv.c index ad68bbed014e..2d1a65488f2d 100644 --- a/drivers/media/platform/s5p-tv/sdo_drv.c +++ b/drivers/media/platform/s5p-tv/sdo_drv.c | |||
@@ -341,47 +341,50 @@ static int __devinit sdo_probe(struct platform_device *pdev) | |||
341 | 341 | ||
342 | /* acquire clocks */ | 342 | /* acquire clocks */ |
343 | sdev->sclk_dac = clk_get(dev, "sclk_dac"); | 343 | sdev->sclk_dac = clk_get(dev, "sclk_dac"); |
344 | if (IS_ERR_OR_NULL(sdev->sclk_dac)) { | 344 | if (IS_ERR(sdev->sclk_dac)) { |
345 | dev_err(dev, "failed to get clock 'sclk_dac'\n"); | 345 | dev_err(dev, "failed to get clock 'sclk_dac'\n"); |
346 | ret = -ENXIO; | 346 | ret = PTR_ERR(sdev->sclk_dac); |
347 | goto fail; | 347 | goto fail; |
348 | } | 348 | } |
349 | sdev->dac = clk_get(dev, "dac"); | 349 | sdev->dac = clk_get(dev, "dac"); |
350 | if (IS_ERR_OR_NULL(sdev->dac)) { | 350 | if (IS_ERR(sdev->dac)) { |
351 | dev_err(dev, "failed to get clock 'dac'\n"); | 351 | dev_err(dev, "failed to get clock 'dac'\n"); |
352 | ret = -ENXIO; | 352 | ret = PTR_ERR(sdev->dac); |
353 | goto fail_sclk_dac; | 353 | goto fail_sclk_dac; |
354 | } | 354 | } |
355 | sdev->dacphy = clk_get(dev, "dacphy"); | 355 | sdev->dacphy = clk_get(dev, "dacphy"); |
356 | if (IS_ERR_OR_NULL(sdev->dacphy)) { | 356 | if (IS_ERR(sdev->dacphy)) { |
357 | dev_err(dev, "failed to get clock 'dacphy'\n"); | 357 | dev_err(dev, "failed to get clock 'dacphy'\n"); |
358 | ret = -ENXIO; | 358 | ret = PTR_ERR(sdev->dacphy); |
359 | goto fail_dac; | 359 | goto fail_dac; |
360 | } | 360 | } |
361 | sclk_vpll = clk_get(dev, "sclk_vpll"); | 361 | sclk_vpll = clk_get(dev, "sclk_vpll"); |
362 | if (IS_ERR_OR_NULL(sclk_vpll)) { | 362 | if (IS_ERR(sclk_vpll)) { |
363 | dev_err(dev, "failed to get clock 'sclk_vpll'\n"); | 363 | dev_err(dev, "failed to get clock 'sclk_vpll'\n"); |
364 | ret = -ENXIO; | 364 | ret = PTR_ERR(sclk_vpll); |
365 | goto fail_dacphy; | 365 | goto fail_dacphy; |
366 | } | 366 | } |
367 | clk_set_parent(sdev->sclk_dac, sclk_vpll); | 367 | clk_set_parent(sdev->sclk_dac, sclk_vpll); |
368 | clk_put(sclk_vpll); | 368 | clk_put(sclk_vpll); |
369 | sdev->fout_vpll = clk_get(dev, "fout_vpll"); | 369 | sdev->fout_vpll = clk_get(dev, "fout_vpll"); |
370 | if (IS_ERR_OR_NULL(sdev->fout_vpll)) { | 370 | if (IS_ERR(sdev->fout_vpll)) { |
371 | dev_err(dev, "failed to get clock 'fout_vpll'\n"); | 371 | dev_err(dev, "failed to get clock 'fout_vpll'\n"); |
372 | ret = PTR_ERR(sdev->fout_vpll); | ||
372 | goto fail_dacphy; | 373 | goto fail_dacphy; |
373 | } | 374 | } |
374 | dev_info(dev, "fout_vpll.rate = %lu\n", clk_get_rate(sclk_vpll)); | 375 | dev_info(dev, "fout_vpll.rate = %lu\n", clk_get_rate(sclk_vpll)); |
375 | 376 | ||
376 | /* acquire regulator */ | 377 | /* acquire regulator */ |
377 | sdev->vdac = devm_regulator_get(dev, "vdd33a_dac"); | 378 | sdev->vdac = devm_regulator_get(dev, "vdd33a_dac"); |
378 | if (IS_ERR_OR_NULL(sdev->vdac)) { | 379 | if (IS_ERR(sdev->vdac)) { |
379 | dev_err(dev, "failed to get regulator 'vdac'\n"); | 380 | dev_err(dev, "failed to get regulator 'vdac'\n"); |
381 | ret = PTR_ERR(sdev->vdac); | ||
380 | goto fail_fout_vpll; | 382 | goto fail_fout_vpll; |
381 | } | 383 | } |
382 | sdev->vdet = devm_regulator_get(dev, "vdet"); | 384 | sdev->vdet = devm_regulator_get(dev, "vdet"); |
383 | if (IS_ERR_OR_NULL(sdev->vdet)) { | 385 | if (IS_ERR(sdev->vdet)) { |
384 | dev_err(dev, "failed to get regulator 'vdet'\n"); | 386 | dev_err(dev, "failed to get regulator 'vdet'\n"); |
387 | ret = PTR_ERR(sdev->vdet); | ||
385 | goto fail_fout_vpll; | 388 | goto fail_fout_vpll; |
386 | } | 389 | } |
387 | 390 | ||