mirror of
https://github.com/torvalds/linux.git
synced 2026-07-30 19:21:28 +02:00
staging: media: tegra-video: csi: move avdd-dsi-csi-supply from VI to CSI
The avdd-dsi-csi-supply is CSI power supply not VI, hence move it to proper place. Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com> Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # Tegra20 VIP Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
6017e97f50
commit
3bcd5a2403
|
|
@ -710,6 +710,8 @@ static int __maybe_unused csi_runtime_suspend(struct device *dev)
|
|||
|
||||
clk_bulk_disable_unprepare(csi->soc->num_clks, csi->clks);
|
||||
|
||||
regulator_disable(csi->vdd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -718,13 +720,23 @@ static int __maybe_unused csi_runtime_resume(struct device *dev)
|
|||
struct tegra_csi *csi = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
ret = clk_bulk_prepare_enable(csi->soc->num_clks, csi->clks);
|
||||
if (ret < 0) {
|
||||
dev_err(csi->dev, "failed to enable clocks: %d\n", ret);
|
||||
ret = regulator_enable(csi->vdd);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to enable VDD supply: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = clk_bulk_prepare_enable(csi->soc->num_clks, csi->clks);
|
||||
if (ret < 0) {
|
||||
dev_err(csi->dev, "failed to enable clocks: %d\n", ret);
|
||||
goto disable_vdd;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
disable_vdd:
|
||||
regulator_disable(csi->vdd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int tegra_csi_init(struct host1x_client *client)
|
||||
|
|
@ -802,6 +814,11 @@ static int tegra_csi_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
csi->vdd = devm_regulator_get(&pdev->dev, "avdd-dsi-csi");
|
||||
if (IS_ERR(csi->vdd))
|
||||
return dev_err_probe(&pdev->dev, PTR_ERR(csi->vdd),
|
||||
"failed to get VDD supply");
|
||||
|
||||
if (!pdev->dev.pm_domain) {
|
||||
ret = -ENOENT;
|
||||
dev_warn(&pdev->dev, "PM domain is not attached: %d\n", ret);
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ extern const struct tegra_csi_soc tegra210_csi_soc;
|
|||
* @client: host1x_client struct
|
||||
* @iomem: register base
|
||||
* @clks: clock for CSI and CIL
|
||||
* @vdd: vdd regulator for CSI hardware, usually avdd_dsi_csi
|
||||
* @soc: pointer to SoC data structure
|
||||
* @ops: csi operations
|
||||
* @csi_chans: list head for CSI channels
|
||||
|
|
@ -150,6 +151,7 @@ struct tegra_csi {
|
|||
struct host1x_client client;
|
||||
void __iomem *iomem;
|
||||
struct clk_bulk_data *clks;
|
||||
struct regulator *vdd;
|
||||
const struct tegra_csi_soc *soc;
|
||||
const struct tegra_csi_ops *ops;
|
||||
struct list_head csi_chans;
|
||||
|
|
|
|||
|
|
@ -1418,29 +1418,19 @@ static int __maybe_unused vi_runtime_resume(struct device *dev)
|
|||
struct tegra_vi *vi = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
ret = regulator_enable(vi->vdd);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to enable VDD supply: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = clk_set_rate(vi->clk, vi->soc->vi_max_clk_hz);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to set vi clock rate: %d\n", ret);
|
||||
goto disable_vdd;
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = clk_prepare_enable(vi->clk);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to enable vi clock: %d\n", ret);
|
||||
goto disable_vdd;
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
disable_vdd:
|
||||
regulator_disable(vi->vdd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __maybe_unused vi_runtime_suspend(struct device *dev)
|
||||
|
|
@ -1449,8 +1439,6 @@ static int __maybe_unused vi_runtime_suspend(struct device *dev)
|
|||
|
||||
clk_disable_unprepare(vi->clk);
|
||||
|
||||
regulator_disable(vi->vdd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1895,13 +1883,6 @@ static int tegra_vi_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
vi->vdd = devm_regulator_get(&pdev->dev, "avdd-dsi-csi");
|
||||
if (IS_ERR(vi->vdd)) {
|
||||
ret = PTR_ERR(vi->vdd);
|
||||
dev_err(&pdev->dev, "failed to get VDD supply: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!pdev->dev.pm_domain) {
|
||||
ret = -ENOENT;
|
||||
dev_warn(&pdev->dev, "PM domain is not attached: %d\n", ret);
|
||||
|
|
|
|||
|
|
@ -94,7 +94,6 @@ struct tegra_vi_soc {
|
|||
* @client: host1x_client struct
|
||||
* @iomem: register base
|
||||
* @clk: main clock for VI block
|
||||
* @vdd: vdd regulator for VI hardware, normally it is avdd_dsi_csi
|
||||
* @soc: pointer to SoC data structure
|
||||
* @ops: vi operations
|
||||
* @vi_chans: list head for VI channels
|
||||
|
|
@ -104,7 +103,6 @@ struct tegra_vi {
|
|||
struct host1x_client client;
|
||||
void __iomem *iomem;
|
||||
struct clk *clk;
|
||||
struct regulator *vdd;
|
||||
const struct tegra_vi_soc *soc;
|
||||
const struct tegra_vi_ops *ops;
|
||||
struct list_head vi_chans;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user