From 03296abad8034aacbcea5f0150c19ff7f9f9790b Mon Sep 17 00:00:00 2001 From: Sylwester Nawrocki Date: Tue, 29 Jan 2013 06:52:29 -0300 Subject: [PATCH] --- yaml --- r: 357431 b: refs/heads/master c: 44e2b09ca468c7c91fa4bb8058fcda38f344974a h: refs/heads/master i: 357429: 52c5fb167dc714202fd26345cb1a21ba836c10e1 357427: 2aae012134701bfc9fa41b383dddcd8cc01a8267 357423: 096928a4b44fb9e1e78811df4151117f45d78068 v: v3 --- [refs] | 2 +- .../media/platform/s5p-fimc/mipi-csis.c | 29 +++++++++++++------ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 2e98b328e4a2..3ba1a27eb0f4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b71b56b264ae27f32784973d15bfdfbc7df6d579 +refs/heads/master: 44e2b09ca468c7c91fa4bb8058fcda38f344974a diff --git a/trunk/drivers/media/platform/s5p-fimc/mipi-csis.c b/trunk/drivers/media/platform/s5p-fimc/mipi-csis.c index 7e36ad92dd94..613482fd74a9 100644 --- a/trunk/drivers/media/platform/s5p-fimc/mipi-csis.c +++ b/trunk/drivers/media/platform/s5p-fimc/mipi-csis.c @@ -352,11 +352,11 @@ static void s5pcsis_clk_put(struct csis_state *state) int i; for (i = 0; i < NUM_CSIS_CLOCKS; i++) { - if (IS_ERR_OR_NULL(state->clock[i])) + if (IS_ERR(state->clock[i])) continue; clk_unprepare(state->clock[i]); clk_put(state->clock[i]); - state->clock[i] = NULL; + state->clock[i] = ERR_PTR(-EINVAL); } } @@ -365,14 +365,19 @@ static int s5pcsis_clk_get(struct csis_state *state) struct device *dev = &state->pdev->dev; int i, ret; + for (i = 0; i < NUM_CSIS_CLOCKS; i++) + state->clock[i] = ERR_PTR(-EINVAL); + for (i = 0; i < NUM_CSIS_CLOCKS; i++) { state->clock[i] = clk_get(dev, csi_clock_name[i]); - if (IS_ERR(state->clock[i])) + if (IS_ERR(state->clock[i])) { + ret = PTR_ERR(state->clock[i]); goto err; + } ret = clk_prepare(state->clock[i]); if (ret < 0) { clk_put(state->clock[i]); - state->clock[i] = NULL; + state->clock[i] = ERR_PTR(-EINVAL); goto err; } } @@ -380,7 +385,7 @@ static int s5pcsis_clk_get(struct csis_state *state) err: s5pcsis_clk_put(state); dev_err(dev, "failed to get clock: %s\n", csi_clock_name[i]); - return -ENXIO; + return ret; } static void dump_regs(struct csis_state *state, const char *label) @@ -749,14 +754,20 @@ static int s5pcsis_probe(struct platform_device *pdev) return ret; ret = s5pcsis_clk_get(state); - if (ret) - goto e_clkput; + if (ret < 0) + return ret; - clk_enable(state->clock[CSIS_CLK_MUX]); if (pdata->clk_rate) - clk_set_rate(state->clock[CSIS_CLK_MUX], pdata->clk_rate); + ret = clk_set_rate(state->clock[CSIS_CLK_MUX], + pdata->clk_rate); else dev_WARN(&pdev->dev, "No clock frequency specified!\n"); + if (ret < 0) + goto e_clkput; + + ret = clk_enable(state->clock[CSIS_CLK_MUX]); + if (ret < 0) + goto e_clkput; ret = devm_request_irq(&pdev->dev, state->irq, s5pcsis_irq_handler, 0, dev_name(&pdev->dev), state);