Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -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)
	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)
	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)
		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;
	}
	}