Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: "This series contains: - Exynos s5p-mfc driver got support for VP8 encoder - Some SoC drivers gained support for asynchronous registration (needed for DT) - The RC subsystem gained support for RC activity LED; - New drivers added: a video decoder(adv7842), a video encoder (adv7511), a new GSPCA driver (stk1135) and support for Renesas R-Car (vsp1) - the first SDR kernel driver: mirics msi3101. Due to some troubles with the driver, and because the API is still under discussion, it will be merged at staging for 3.12. Need to rework on it - usual new boards additions, fixes, cleanups and driver improvements" * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (242 commits) [media] cx88: Fix regression: CX88_AUDIO_WM8775 can't be 0 [media] exynos4-is: Fix entity unregistration on error path [media] exynos-gsc: Register v4l2 device [media] exynos4-is: Fix fimc-lite bayer formats [media] em28xx: fix assignment of the eeprom data [media] hdpvr: fix iteration over uninitialized lists in hdpvr_probe() [media] usbtv: Throw corrupted frames away [media] usbtv: Fix deinterlacing [media] v4l2: added missing mutex.h include to v4l2-ctrls.h [media] DocBook: upgrade media_api DocBook version to 4.2 [media] ml86v7667: fix compile warning: 'ret' set but not used [media] s5p-g2d: Fix registration failure [media] media: coda: Fix DT driver data pointer for i.MX27 [media] s5p-mfc: Fix input/output format reporting [media] v4l: vsp1: Fix mutex double lock at streamon time [media] v4l: vsp1: Add support for RT clock [media] v4l: vsp1: Initialize media device bus_info field [media] davinci: vpif_capture: fix error return code in vpif_probe() [media] davinci: vpif_display: fix error return code in vpif_probe() [media] MAINTAINERS: add entries for adv7511 and adv7842 ...
This commit is contained in:
@@ -1149,7 +1149,6 @@ static void fimc_md_put_clocks(struct fimc_md *fmd)
|
||||
while (--i >= 0) {
|
||||
if (IS_ERR(fmd->camclk[i].clock))
|
||||
continue;
|
||||
clk_unprepare(fmd->camclk[i].clock);
|
||||
clk_put(fmd->camclk[i].clock);
|
||||
fmd->camclk[i].clock = ERR_PTR(-EINVAL);
|
||||
}
|
||||
@@ -1168,7 +1167,7 @@ static int fimc_md_get_clocks(struct fimc_md *fmd)
|
||||
struct device *dev = NULL;
|
||||
char clk_name[32];
|
||||
struct clk *clock;
|
||||
int ret, i;
|
||||
int i, ret = 0;
|
||||
|
||||
for (i = 0; i < FIMC_MAX_CAMCLKS; i++)
|
||||
fmd->camclk[i].clock = ERR_PTR(-EINVAL);
|
||||
@@ -1186,12 +1185,6 @@ static int fimc_md_get_clocks(struct fimc_md *fmd)
|
||||
ret = PTR_ERR(clock);
|
||||
break;
|
||||
}
|
||||
ret = clk_prepare(clock);
|
||||
if (ret < 0) {
|
||||
clk_put(clock);
|
||||
fmd->camclk[i].clock = ERR_PTR(-EINVAL);
|
||||
break;
|
||||
}
|
||||
fmd->camclk[i].clock = clock;
|
||||
}
|
||||
if (ret)
|
||||
@@ -1248,7 +1241,7 @@ static int __fimc_md_set_camclk(struct fimc_md *fmd,
|
||||
ret = pm_runtime_get_sync(fmd->pmf);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = clk_enable(camclk->clock);
|
||||
ret = clk_prepare_enable(camclk->clock);
|
||||
dbg("Enabled camclk %d: f: %lu", si->clk_id,
|
||||
clk_get_rate(camclk->clock));
|
||||
}
|
||||
@@ -1259,7 +1252,7 @@ static int __fimc_md_set_camclk(struct fimc_md *fmd,
|
||||
return 0;
|
||||
|
||||
if (--camclk->use_count == 0) {
|
||||
clk_disable(camclk->clock);
|
||||
clk_disable_unprepare(camclk->clock);
|
||||
pm_runtime_put(fmd->pmf);
|
||||
dbg("Disabled camclk %d", si->clk_id);
|
||||
}
|
||||
@@ -1529,9 +1522,9 @@ static int fimc_md_probe(struct platform_device *pdev)
|
||||
err_unlock:
|
||||
mutex_unlock(&fmd->media_dev.graph_mutex);
|
||||
err_clk:
|
||||
media_device_unregister(&fmd->media_dev);
|
||||
fimc_md_put_clocks(fmd);
|
||||
fimc_md_unregister_entities(fmd);
|
||||
media_device_unregister(&fmd->media_dev);
|
||||
err_md:
|
||||
v4l2_device_unregister(&fmd->v4l2_dev);
|
||||
return ret;
|
||||
@@ -1543,6 +1536,8 @@ static int fimc_md_remove(struct platform_device *pdev)
|
||||
|
||||
if (!fmd)
|
||||
return 0;
|
||||
|
||||
v4l2_device_unregister(&fmd->v4l2_dev);
|
||||
device_remove_file(&pdev->dev, &dev_attr_subdev_conf_mode);
|
||||
fimc_md_unregister_entities(fmd);
|
||||
fimc_md_pipelines_free(fmd);
|
||||
|
Reference in New Issue
Block a user