[PATCH v1 5/5] ARM: tegra: add MIPI calibration binding for Tegra20/Tegra30

Svyatoslav Ryhel posted 5 patches 2 months, 3 weeks ago
There is a newer version of this series
[PATCH v1 5/5] ARM: tegra: add MIPI calibration binding for Tegra20/Tegra30
Posted by Svyatoslav Ryhel 2 months, 3 weeks ago
Add MIPI calibration device node for Tegra20 and Tegra30.

Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
---
 arch/arm/boot/dts/nvidia/tegra20.dtsi | 14 ++++++++++++++
 arch/arm/boot/dts/nvidia/tegra30.dtsi | 18 ++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/arch/arm/boot/dts/nvidia/tegra20.dtsi b/arch/arm/boot/dts/nvidia/tegra20.dtsi
index 92d422f83ea4..521261045cc8 100644
--- a/arch/arm/boot/dts/nvidia/tegra20.dtsi
+++ b/arch/arm/boot/dts/nvidia/tegra20.dtsi
@@ -74,6 +74,16 @@ vi@54080000 {
 			status = "disabled";
 		};
 
+		/* DSI MIPI calibration logic is a part of VI/CSI */
+		mipi: mipi@54080220 {
+			compatible = "nvidia,tegra20-mipi";
+			reg = <0x54080220 0x100>;
+			clocks = <&tegra_car TEGRA20_CLK_VI>,
+				 <&tegra_car TEGRA20_CLK_CSI>;
+			clock-names = "vi", "csi";
+			#nvidia,mipi-calibrate-cells = <1>;
+		};
+
 		epp@540c0000 {
 			compatible = "nvidia,tegra20-epp";
 			reg = <0x540c0000 0x00040000>;
@@ -219,9 +229,13 @@ dsi@54300000 {
 			clock-names = "dsi", "parent";
 			resets = <&tegra_car 48>;
 			reset-names = "dsi";
+			nvidia,mipi-calibrate = <&mipi 0>;
 			power-domains = <&pd_core>;
 			operating-points-v2 = <&dsi_dvfs_opp_table>;
 			status = "disabled";
+
+			#address-cells = <1>;
+			#size-cells = <0>;
 		};
 	};
 
diff --git a/arch/arm/boot/dts/nvidia/tegra30.dtsi b/arch/arm/boot/dts/nvidia/tegra30.dtsi
index 50b0446f43fc..c52ad3715505 100644
--- a/arch/arm/boot/dts/nvidia/tegra30.dtsi
+++ b/arch/arm/boot/dts/nvidia/tegra30.dtsi
@@ -164,6 +164,16 @@ vi@54080000 {
 			status = "disabled";
 		};
 
+		/* DSI MIPI calibration logic is a part of VI/CSI */
+		mipi: mipi@54080220 {
+			compatible = "nvidia,tegra30-mipi";
+			reg = <0x54080220 0x100>;
+			clocks = <&tegra_car TEGRA30_CLK_VI>,
+				 <&tegra_car TEGRA30_CLK_CSI>;
+			clock-names = "vi", "csi";
+			#nvidia,mipi-calibrate-cells = <1>;
+		};
+
 		epp@540c0000 {
 			compatible = "nvidia,tegra30-epp";
 			reg = <0x540c0000 0x00040000>;
@@ -321,9 +331,13 @@ dsi@54300000 {
 			clock-names = "dsi", "parent";
 			resets = <&tegra_car 48>;
 			reset-names = "dsi";
+			nvidia,mipi-calibrate = <&mipi 0>;
 			power-domains = <&pd_core>;
 			operating-points-v2 = <&dsia_dvfs_opp_table>;
 			status = "disabled";
+
+			#address-cells = <1>;
+			#size-cells = <0>;
 		};
 
 		dsi@54400000 {
@@ -334,9 +348,13 @@ dsi@54400000 {
 			clock-names = "dsi", "parent";
 			resets = <&tegra_car 84>;
 			reset-names = "dsi";
+			nvidia,mipi-calibrate = <&mipi 0>;
 			power-domains = <&pd_core>;
 			operating-points-v2 = <&dsib_dvfs_opp_table>;
 			status = "disabled";
+
+			#address-cells = <1>;
+			#size-cells = <0>;
 		};
 	};
 
-- 
2.48.1
Re: [PATCH v1 5/5] ARM: tegra: add MIPI calibration binding for Tegra20/Tegra30
Posted by Mikko Perttunen 2 months, 2 weeks ago
On Thursday, July 17, 2025 11:21 PM Svyatoslav Ryhel wrote:
> Add MIPI calibration device node for Tegra20 and Tegra30.
> 
> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> ---
>  arch/arm/boot/dts/nvidia/tegra20.dtsi | 14 ++++++++++++++
>  arch/arm/boot/dts/nvidia/tegra30.dtsi | 18 ++++++++++++++++++
>  2 files changed, 32 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/nvidia/tegra20.dtsi
> b/arch/arm/boot/dts/nvidia/tegra20.dtsi index 92d422f83ea4..521261045cc8
> 100644
> --- a/arch/arm/boot/dts/nvidia/tegra20.dtsi
> +++ b/arch/arm/boot/dts/nvidia/tegra20.dtsi
> @@ -74,6 +74,16 @@ vi@54080000 {
>  			status = "disabled";
>  		};
> 
> +		/* DSI MIPI calibration logic is a part of VI/CSI */
> +		mipi: mipi@54080220 {
> +			compatible = "nvidia,tegra20-mipi";
> +			reg = <0x54080220 0x100>;
> +			clocks = <&tegra_car TEGRA20_CLK_VI>,
> +				 <&tegra_car TEGRA20_CLK_CSI>;
> +			clock-names = "vi", "csi";
> +			#nvidia,mipi-calibrate-cells = <1>;
> +		};
> +

As you say in the comment, MIPI calibration on Tegra20/30 is part of VI/CSI. 
We can't add a "mipi" device here since such a device doesn't exist in the 
hardware hierarchy. We already have the VI device in the device tree, so we 
need to use that.

A driver for tegra20-vi already exists in staging/drivers/media/tegra-video. 
We should aim not to break it. Perhaps bring it out of staging? (At least 
partially, but then why not the whole thing.)

Thanks,
Mikko
Re: [PATCH v1 5/5] ARM: tegra: add MIPI calibration binding for Tegra20/Tegra30
Posted by Svyatoslav Ryhel 2 months, 2 weeks ago
пт, 18 лип. 2025 р. о 12:01 Mikko Perttunen <mperttunen@nvidia.com> пише:
>
> On Thursday, July 17, 2025 11:21 PM Svyatoslav Ryhel wrote:
> > Add MIPI calibration device node for Tegra20 and Tegra30.
> >
> > Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> > ---
> >  arch/arm/boot/dts/nvidia/tegra20.dtsi | 14 ++++++++++++++
> >  arch/arm/boot/dts/nvidia/tegra30.dtsi | 18 ++++++++++++++++++
> >  2 files changed, 32 insertions(+)
> >
> > diff --git a/arch/arm/boot/dts/nvidia/tegra20.dtsi
> > b/arch/arm/boot/dts/nvidia/tegra20.dtsi index 92d422f83ea4..521261045cc8
> > 100644
> > --- a/arch/arm/boot/dts/nvidia/tegra20.dtsi
> > +++ b/arch/arm/boot/dts/nvidia/tegra20.dtsi
> > @@ -74,6 +74,16 @@ vi@54080000 {
> >                       status = "disabled";
> >               };
> >
> > +             /* DSI MIPI calibration logic is a part of VI/CSI */
> > +             mipi: mipi@54080220 {
> > +                     compatible = "nvidia,tegra20-mipi";
> > +                     reg = <0x54080220 0x100>;
> > +                     clocks = <&tegra_car TEGRA20_CLK_VI>,
> > +                              <&tegra_car TEGRA20_CLK_CSI>;
> > +                     clock-names = "vi", "csi";
> > +                     #nvidia,mipi-calibrate-cells = <1>;
> > +             };
> > +
>
> As you say in the comment, MIPI calibration on Tegra20/30 is part of VI/CSI.
> We can't add a "mipi" device here since such a device doesn't exist in the
> hardware hierarchy. We already have the VI device in the device tree, so we
> need to use that.

I understand your point, but embedding MIPI calibration logic into
VI/CSI driver will bring up another lever of unnecessary complexity
and excessive coding. While approach I have proposed preserves
separation between CSI and DSI and reuses already existing MIPI
calibration framework.

>
> A driver for tegra20-vi already exists in staging/drivers/media/tegra-video.
> We should aim not to break it. Perhaps bring it out of staging? (At least
> partially, but then why not the whole thing.)

It does not break VI/CSI, I have a WIP CSI implementation for
Tegra20/Tegra30 which I hope to submit soon.

>
> Thanks,
> Mikko
>
>
>
>