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:
Svyatoslav Ryhel 2026-03-03 10:42:30 +02:00 committed by Hans Verkuil
parent 6017e97f50
commit 3bcd5a2403
4 changed files with 24 additions and 26 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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;