Commit d0aae004 authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab

[media] smiapp: Prepare and unprepare clocks correctly

Prepare clocks before enabling and unprepare after disabling them.
Signed-off-by: default avatarSakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 367da7a3
...@@ -1122,9 +1122,9 @@ static int smiapp_power_on(struct smiapp_sensor *sensor) ...@@ -1122,9 +1122,9 @@ static int smiapp_power_on(struct smiapp_sensor *sensor)
rval = sensor->platform_data->set_xclk( rval = sensor->platform_data->set_xclk(
&sensor->src->sd, sensor->platform_data->ext_clk); &sensor->src->sd, sensor->platform_data->ext_clk);
else else
rval = clk_enable(sensor->ext_clk); rval = clk_prepare_enable(sensor->ext_clk);
if (rval < 0) { 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; goto out_xclk_fail;
} }
usleep_range(1000, 1000); usleep_range(1000, 1000);
...@@ -1244,7 +1244,7 @@ static int smiapp_power_on(struct smiapp_sensor *sensor) ...@@ -1244,7 +1244,7 @@ static int smiapp_power_on(struct smiapp_sensor *sensor)
if (sensor->platform_data->set_xclk) if (sensor->platform_data->set_xclk)
sensor->platform_data->set_xclk(&sensor->src->sd, 0); sensor->platform_data->set_xclk(&sensor->src->sd, 0);
else else
clk_disable(sensor->ext_clk); clk_disable_unprepare(sensor->ext_clk);
out_xclk_fail: out_xclk_fail:
regulator_disable(sensor->vana); regulator_disable(sensor->vana);
...@@ -1270,7 +1270,7 @@ static void smiapp_power_off(struct smiapp_sensor *sensor) ...@@ -1270,7 +1270,7 @@ static void smiapp_power_off(struct smiapp_sensor *sensor)
if (sensor->platform_data->set_xclk) if (sensor->platform_data->set_xclk)
sensor->platform_data->set_xclk(&sensor->src->sd, 0); sensor->platform_data->set_xclk(&sensor->src->sd, 0);
else else
clk_disable(sensor->ext_clk); clk_disable_unprepare(sensor->ext_clk);
usleep_range(5000, 5000); usleep_range(5000, 5000);
regulator_disable(sensor->vana); regulator_disable(sensor->vana);
sensor->streaming = 0; sensor->streaming = 0;
...@@ -2839,7 +2839,7 @@ static int smiapp_remove(struct i2c_client *client) ...@@ -2839,7 +2839,7 @@ static int smiapp_remove(struct i2c_client *client)
if (sensor->platform_data->set_xclk) if (sensor->platform_data->set_xclk)
sensor->platform_data->set_xclk(&sensor->src->sd, 0); sensor->platform_data->set_xclk(&sensor->src->sd, 0);
else else
clk_disable(sensor->ext_clk); clk_disable_unprepare(sensor->ext_clk);
sensor->power_count = 0; sensor->power_count = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment