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
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
пт, 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 > > > >
© 2016 - 2025 Red Hat, Inc.