[media] smiapp: Prepare and unprepare clocks correctly
authorSakari Ailus <sakari.ailus@iki.fi>
Sat, 10 Aug 2013 17:49:47 +0000 (14:49 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 22 Aug 2013 14:38:45 +0000 (11:38 -0300)
Prepare clocks before enabling and unprepare after disabling them.

Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/i2c/smiapp/smiapp-core.c

index 4d7ba548b93950939dfecabef788c33106e136a6..7de9892fb6c9f65a53b2a24e5b563dc0b9ce5481 100644 (file)
@@ -1122,9 +1122,9 @@ static int smiapp_power_on(struct smiapp_sensor *sensor)
                rval = sensor->platform_data->set_xclk(
                        &sensor->src->sd, sensor->platform_data->ext_clk);
        else
-               rval = clk_enable(sensor->ext_clk);
+               rval = clk_prepare_enable(sensor->ext_clk);
        if (rval < 0) {
-               dev_dbg(&client->dev, "failed to set xclk\n");
+               dev_dbg(&client->dev, "failed to enable xclk\n");
                goto out_xclk_fail;
        }
        usleep_range(1000, 1000);
@@ -1244,7 +1244,7 @@ out_cci_addr_fail:
        if (sensor->platform_data->set_xclk)
                sensor->platform_data->set_xclk(&sensor->src->sd, 0);
        else
-               clk_disable(sensor->ext_clk);
+               clk_disable_unprepare(sensor->ext_clk);
 
 out_xclk_fail:
        regulator_disable(sensor->vana);
@@ -1270,7 +1270,7 @@ static void smiapp_power_off(struct smiapp_sensor *sensor)
        if (sensor->platform_data->set_xclk)
                sensor->platform_data->set_xclk(&sensor->src->sd, 0);
        else
-               clk_disable(sensor->ext_clk);
+               clk_disable_unprepare(sensor->ext_clk);
        usleep_range(5000, 5000);
        regulator_disable(sensor->vana);
        sensor->streaming = 0;
@@ -2839,7 +2839,7 @@ static int smiapp_remove(struct i2c_client *client)
                if (sensor->platform_data->set_xclk)
                        sensor->platform_data->set_xclk(&sensor->src->sd, 0);
                else
-                       clk_disable(sensor->ext_clk);
+                       clk_disable_unprepare(sensor->ext_clk);
                sensor->power_count = 0;
        }