mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 19:26:38 +07:00
[media] media: marvell-ccic: use devm to release clk
This patch uses devm to release the clks instead of releasing manually. And it adds enable/disable mipi_clk when getting its rate. Signed-off-by: Libin Yang <lbyang@marvell.com> Acked-by: Jonathan Corbet <corbet@lwn.net> Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
fe4a0f1c7d
commit
fa507e4d32
@ -142,12 +142,6 @@ static int mmpcam_power_up(struct mcam_camera *mcam)
|
|||||||
struct mmp_camera *cam = mcam_to_cam(mcam);
|
struct mmp_camera *cam = mcam_to_cam(mcam);
|
||||||
struct mmp_camera_platform_data *pdata;
|
struct mmp_camera_platform_data *pdata;
|
||||||
|
|
||||||
if (mcam->bus_type == V4L2_MBUS_CSI2) {
|
|
||||||
cam->mipi_clk = devm_clk_get(mcam->dev, "mipi");
|
|
||||||
if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0))
|
|
||||||
return PTR_ERR(cam->mipi_clk);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Turn on power and clocks to the controller.
|
* Turn on power and clocks to the controller.
|
||||||
*/
|
*/
|
||||||
@ -186,12 +180,6 @@ static void mmpcam_power_down(struct mcam_camera *mcam)
|
|||||||
gpio_set_value(pdata->sensor_power_gpio, 0);
|
gpio_set_value(pdata->sensor_power_gpio, 0);
|
||||||
gpio_set_value(pdata->sensor_reset_gpio, 0);
|
gpio_set_value(pdata->sensor_reset_gpio, 0);
|
||||||
|
|
||||||
if (mcam->bus_type == V4L2_MBUS_CSI2 && !IS_ERR(cam->mipi_clk)) {
|
|
||||||
if (cam->mipi_clk)
|
|
||||||
devm_clk_put(mcam->dev, cam->mipi_clk);
|
|
||||||
cam->mipi_clk = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcam_clk_disable(mcam);
|
mcam_clk_disable(mcam);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -292,8 +280,9 @@ void mmpcam_calc_dphy(struct mcam_camera *mcam)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* get the escape clk, this is hard coded */
|
/* get the escape clk, this is hard coded */
|
||||||
|
clk_prepare_enable(cam->mipi_clk);
|
||||||
tx_clk_esc = (clk_get_rate(cam->mipi_clk) / 1000000) / 12;
|
tx_clk_esc = (clk_get_rate(cam->mipi_clk) / 1000000) / 12;
|
||||||
|
clk_disable_unprepare(cam->mipi_clk);
|
||||||
/*
|
/*
|
||||||
* dphy[2] - CSI2_DPHY6:
|
* dphy[2] - CSI2_DPHY6:
|
||||||
* bit 0 ~ bit 7: CK Term Enable
|
* bit 0 ~ bit 7: CK Term Enable
|
||||||
@ -325,19 +314,6 @@ static irqreturn_t mmpcam_irq(int irq, void *data)
|
|||||||
return IRQ_RETVAL(handled);
|
return IRQ_RETVAL(handled);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mcam_deinit_clk(struct mcam_camera *mcam)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
for (i = 0; i < NR_MCAM_CLK; i++) {
|
|
||||||
if (!IS_ERR(mcam->clk[i])) {
|
|
||||||
if (mcam->clk[i])
|
|
||||||
devm_clk_put(mcam->dev, mcam->clk[i]);
|
|
||||||
}
|
|
||||||
mcam->clk[i] = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mcam_init_clk(struct mcam_camera *mcam)
|
static void mcam_init_clk(struct mcam_camera *mcam)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@ -371,7 +347,6 @@ static int mmpcam_probe(struct platform_device *pdev)
|
|||||||
if (cam == NULL)
|
if (cam == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
cam->pdev = pdev;
|
cam->pdev = pdev;
|
||||||
cam->mipi_clk = NULL;
|
|
||||||
INIT_LIST_HEAD(&cam->devlist);
|
INIT_LIST_HEAD(&cam->devlist);
|
||||||
|
|
||||||
mcam = &cam->mcam;
|
mcam = &cam->mcam;
|
||||||
@ -387,6 +362,11 @@ static int mmpcam_probe(struct platform_device *pdev)
|
|||||||
mcam->mclk_div = pdata->mclk_div;
|
mcam->mclk_div = pdata->mclk_div;
|
||||||
mcam->bus_type = pdata->bus_type;
|
mcam->bus_type = pdata->bus_type;
|
||||||
mcam->dphy = pdata->dphy;
|
mcam->dphy = pdata->dphy;
|
||||||
|
if (mcam->bus_type == V4L2_MBUS_CSI2) {
|
||||||
|
cam->mipi_clk = devm_clk_get(mcam->dev, "mipi");
|
||||||
|
if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0))
|
||||||
|
return PTR_ERR(cam->mipi_clk);
|
||||||
|
}
|
||||||
mcam->mipi_enabled = false;
|
mcam->mipi_enabled = false;
|
||||||
mcam->lane = pdata->lane;
|
mcam->lane = pdata->lane;
|
||||||
mcam->chip_id = MCAM_ARMADA610;
|
mcam->chip_id = MCAM_ARMADA610;
|
||||||
@ -444,7 +424,7 @@ static int mmpcam_probe(struct platform_device *pdev)
|
|||||||
*/
|
*/
|
||||||
ret = mmpcam_power_up(mcam);
|
ret = mmpcam_power_up(mcam);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_deinit_clk;
|
return ret;
|
||||||
ret = mccic_register(mcam);
|
ret = mccic_register(mcam);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out_power_down;
|
goto out_power_down;
|
||||||
@ -469,8 +449,6 @@ static int mmpcam_probe(struct platform_device *pdev)
|
|||||||
mccic_shutdown(mcam);
|
mccic_shutdown(mcam);
|
||||||
out_power_down:
|
out_power_down:
|
||||||
mmpcam_power_down(mcam);
|
mmpcam_power_down(mcam);
|
||||||
out_deinit_clk:
|
|
||||||
mcam_deinit_clk(mcam);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,7 +460,6 @@ static int mmpcam_remove(struct mmp_camera *cam)
|
|||||||
mmpcam_remove_device(cam);
|
mmpcam_remove_device(cam);
|
||||||
mccic_shutdown(mcam);
|
mccic_shutdown(mcam);
|
||||||
mmpcam_power_down(mcam);
|
mmpcam_power_down(mcam);
|
||||||
mcam_deinit_clk(mcam);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user