All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] Add I2C and PWM support for T234
@ 2022-01-13 13:30 Akhil R
  2022-01-13 13:30 ` [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C Akhil R
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Akhil R @ 2022-01-13 13:30 UTC (permalink / raw)
  To: robh+dt, thierry.reding, jonathanh, mperttunen, ldewangan,
	digetx, linux-i2c, devicetree, linux-tegra, linux-kernel
  Cc: akhilrajeev

The patchset contains driver and devicetree changes to support I2C and
PWM for Tegra234

Akhil R (6):
  i2c: tegra: Add support for Tegra234 I2C
  dt-bindings: i2c: tegra: Add Tegra234 details
  dt-bindings: Add headers for Tegra234 I2C
  arm64: tegra: Add Tegra234 I2C devicetree nodes
  dt-bindings: Add headers for Tegra234 PWM
  arm64: tegra: Add Tegra234 PWM devicetree nodes

 .../bindings/i2c/nvidia,tegra20-i2c.yaml           |   5 +
 arch/arm64/boot/dts/nvidia/tegra234.dtsi           | 133 +++++++++++++++++++++
 drivers/i2c/busses/i2c-tegra.c                     |  25 ++++
 include/dt-bindings/clock/tegra234-clock.h         |  36 ++++++
 include/dt-bindings/reset/tegra234-reset.h         |  16 +++
 5 files changed, 215 insertions(+)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C
  2022-01-13 13:30 [PATCH 0/6] Add I2C and PWM support for T234 Akhil R
@ 2022-01-13 13:30 ` Akhil R
  2022-01-18 20:54   ` Dmitry Osipenko
  2022-01-13 13:30 ` [PATCH 2/6] dt-bindings: i2c: tegra: Add Tegra234 details Akhil R
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Akhil R @ 2022-01-13 13:30 UTC (permalink / raw)
  To: robh+dt, thierry.reding, jonathanh, mperttunen, ldewangan,
	digetx, linux-i2c, devicetree, linux-tegra, linux-kernel
  Cc: akhilrajeev

Add Tegra234 specific hw struct and compatible in i2c-tegra driver

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
---
 drivers/i2c/busses/i2c-tegra.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index 03cea10..3e8f3f5 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -1614,7 +1614,32 @@ static const struct tegra_i2c_hw_feature tegra194_i2c_hw = {
 	.has_interface_timing_reg = true,
 };
 
+static const struct tegra_i2c_hw_feature tegra234_i2c_hw = {
+	.has_continue_xfer_support = true,
+	.has_per_pkt_xfer_complete_irq = true,
+	.clk_divisor_hs_mode = 0x2,
+	.clk_divisor_std_mode = 0x4f,
+	.clk_divisor_fast_mode = 0x58,
+	.clk_divisor_fast_plus_mode = 0x24,
+	.has_config_load_reg = true,
+	.has_multi_master_mode = true,
+	.has_slcg_override_reg = true,
+	.has_mst_fifo = true,
+	.quirks = &tegra194_i2c_quirks,
+	.supports_bus_clear = true,
+	.has_apb_dma = false,
+	.tlow_std_mode = 0x8,
+	.thigh_std_mode = 0x7,
+	.tlow_fast_fastplus_mode = 0x1,
+	.thigh_fast_fastplus_mode = 0x1,
+	.setup_hold_time_std_mode = 0x08080808,
+	.setup_hold_time_fast_fast_plus_mode = 0x02020202,
+	.setup_hold_time_hs_mode = 0x090909,
+	.has_interface_timing_reg = true,
+};
+
 static const struct of_device_id tegra_i2c_of_match[] = {
+	{ .compatible = "nvidia,tegra234-i2c", .data = &tegra234_i2c_hw, },
 	{ .compatible = "nvidia,tegra194-i2c", .data = &tegra194_i2c_hw, },
 	{ .compatible = "nvidia,tegra186-i2c", .data = &tegra186_i2c_hw, },
 	{ .compatible = "nvidia,tegra210-i2c-vi", .data = &tegra210_i2c_hw, },
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/6] dt-bindings: i2c: tegra: Add Tegra234 details
  2022-01-13 13:30 [PATCH 0/6] Add I2C and PWM support for T234 Akhil R
  2022-01-13 13:30 ` [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C Akhil R
@ 2022-01-13 13:30 ` Akhil R
  2022-02-09  2:17   ` Rob Herring
  2022-01-13 13:30 ` [PATCH 3/6] dt-bindings: Add headers for Tegra234 I2C Akhil R
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Akhil R @ 2022-01-13 13:30 UTC (permalink / raw)
  To: robh+dt, thierry.reding, jonathanh, mperttunen, ldewangan,
	digetx, linux-i2c, devicetree, linux-tegra, linux-kernel
  Cc: akhilrajeev

Add documentation for Tegra234 I2C compatible.

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
---
 Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
index 424a4fc..c58e256 100644
--- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
+++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
@@ -80,6 +80,11 @@ properties:
           support for 64 KiB transactions whereas earlier chips supported no
           more than 4 KiB per transactions.
         const: nvidia,tegra194-i2c
+      - description: |
+          Tegra234 has 8 generic I2C controllers, two of which are in the AON
+          (always-on) partition of the SoC. All of these controllers are
+          similar to those found on Tegra194.
+        const: nvidia,tegra234-i2c
 
   reg:
     maxItems: 1
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/6] dt-bindings: Add headers for Tegra234 I2C
  2022-01-13 13:30 [PATCH 0/6] Add I2C and PWM support for T234 Akhil R
  2022-01-13 13:30 ` [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C Akhil R
  2022-01-13 13:30 ` [PATCH 2/6] dt-bindings: i2c: tegra: Add Tegra234 details Akhil R
@ 2022-01-13 13:30 ` Akhil R
  2022-01-13 13:30 ` [PATCH 4/6] arm64: tegra: Add Tegra234 I2C devicetree nodes Akhil R
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Akhil R @ 2022-01-13 13:30 UTC (permalink / raw)
  To: robh+dt, thierry.reding, jonathanh, mperttunen, ldewangan,
	digetx, linux-i2c, devicetree, linux-tegra, linux-kernel
  Cc: akhilrajeev

Add dt-bindings header files for I2C controllers for Tegra234

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
---
 include/dt-bindings/clock/tegra234-clock.h | 19 +++++++++++++++++++
 include/dt-bindings/reset/tegra234-reset.h |  8 ++++++++
 2 files changed, 27 insertions(+)

diff --git a/include/dt-bindings/clock/tegra234-clock.h b/include/dt-bindings/clock/tegra234-clock.h
index 8d7e66e..5d05c19 100644
--- a/include/dt-bindings/clock/tegra234-clock.h
+++ b/include/dt-bindings/clock/tegra234-clock.h
@@ -30,5 +30,24 @@
 #define TEGRA234_CLK_PLLC4			237U
 /** @brief 32K input clock provided by PMIC */
 #define TEGRA234_CLK_CLK_32K			289U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2C1 */
+#define TEGRA234_CLK_I2C1			48U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2C2 */
+#define TEGRA234_CLK_I2C2			49U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2C3 */
+#define TEGRA234_CLK_I2C3			50U
+/** output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2C4 */
+#define TEGRA234_CLK_I2C4			51U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2C6 */
+#define TEGRA234_CLK_I2C6			52U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2C7 */
+#define TEGRA234_CLK_I2C7			53U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2C8 */
+#define TEGRA234_CLK_I2C8			54U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2C9 */
+#define TEGRA234_CLK_I2C9			55U
+
+/** @brief PLLP clk output */
+#define TEGRA234_CLK_PLLP_OUT0			102U
 
 #endif
diff --git a/include/dt-bindings/reset/tegra234-reset.h b/include/dt-bindings/reset/tegra234-reset.h
index 50e13bc..e07e898 100644
--- a/include/dt-bindings/reset/tegra234-reset.h
+++ b/include/dt-bindings/reset/tegra234-reset.h
@@ -12,6 +12,14 @@
  */
 #define TEGRA234_RESET_SDMMC4			85U
 #define TEGRA234_RESET_UARTA			100U
+#define TEGRA234_RESET_I2C1			24U
+#define TEGRA234_RESET_I2C2			29U
+#define TEGRA234_RESET_I2C3			30U
+#define TEGRA234_RESET_I2C4			31U
+#define TEGRA234_RESET_I2C6			32U
+#define TEGRA234_RESET_I2C7			33U
+#define TEGRA234_RESET_I2C8			34U
+#define TEGRA234_RESET_I2C9			35U
 
 /** @} */
 
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 4/6] arm64: tegra: Add Tegra234 I2C devicetree nodes
  2022-01-13 13:30 [PATCH 0/6] Add I2C and PWM support for T234 Akhil R
                   ` (2 preceding siblings ...)
  2022-01-13 13:30 ` [PATCH 3/6] dt-bindings: Add headers for Tegra234 I2C Akhil R
@ 2022-01-13 13:30 ` Akhil R
  2022-01-13 13:30 ` [PATCH 5/6] dt-bindings: Add headers for Tegra234 PWM Akhil R
  2022-01-13 13:30 ` [PATCH 6/6] arm64: tegra: Add Tegra234 PWM devicetree nodes Akhil R
  5 siblings, 0 replies; 13+ messages in thread
From: Akhil R @ 2022-01-13 13:30 UTC (permalink / raw)
  To: robh+dt, thierry.reding, jonathanh, mperttunen, ldewangan,
	digetx, linux-i2c, devicetree, linux-tegra, linux-kernel
  Cc: akhilrajeev

Add device tree nodes for Tegra234 I2C controllers

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
---
 arch/arm64/boot/dts/nvidia/tegra234.dtsi | 121 +++++++++++++++++++++++++++++++
 1 file changed, 121 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra234.dtsi b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
index 6b6f1580..51aff7d 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
@@ -144,6 +144,96 @@
 			status = "disabled";
 		};
 
+		gen1_i2c: i2c@3160000 {
+			compatible = "nvidia,tegra234-i2c";
+			reg = <0x3160000 0x100>;
+			status = "disabled";
+			interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
+			clock-frequency = <400000>;
+			clocks = <&bpmp TEGRA234_CLK_I2C1
+				  &bpmp TEGRA234_CLK_PLLP_OUT0>;
+			assigned-clocks = <&bpmp TEGRA234_CLK_I2C1>;
+			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			clock-names = "div-clk", "parent";
+			resets = <&bpmp TEGRA234_RESET_I2C1>;
+			reset-names = "i2c";
+		};
+
+		cam_i2c: i2c@3180000 {
+			compatible = "nvidia,tegra234-i2c";
+			reg = <0x3180000 0x100>;
+			interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+			clock-frequency = <400000>;
+			clocks = <&bpmp TEGRA234_CLK_I2C3
+				&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			assigned-clocks = <&bpmp TEGRA234_CLK_I2C3>;
+			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			clock-names = "div-clk", "parent";
+			resets = <&bpmp TEGRA234_RESET_I2C3>;
+			reset-names = "i2c";
+		};
+
+		dp_aux_ch1_i2c: i2c@3190000 {
+			compatible = "nvidia,tegra234-i2c";
+			reg = <0x3190000 0x100>;
+			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+			clock-frequency = <100000>;
+			clocks = <&bpmp TEGRA234_CLK_I2C4
+				&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			assigned-clocks = <&bpmp TEGRA234_CLK_I2C4>;
+			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			clock-names = "div-clk", "parent";
+			resets = <&bpmp TEGRA234_RESET_I2C4>;
+			reset-names = "i2c";
+		};
+
+		dp_aux_ch0_i2c: i2c@31b0000 {
+			compatible = "nvidia,tegra234-i2c";
+			reg = <0x31b0000 0x100>;
+			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+			clock-frequency = <100000>;
+			clocks = <&bpmp TEGRA234_CLK_I2C6
+				&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			assigned-clocks = <&bpmp TEGRA234_CLK_I2C6>;
+			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			clock-names = "div-clk", "parent";
+			resets = <&bpmp TEGRA234_RESET_I2C6>;
+			reset-names = "i2c";
+		};
+
+		dp_aux_ch2_i2c: i2c@31c0000 {
+			compatible = "nvidia,tegra234-i2c";
+			reg = <0x31c0000 0x100>;
+			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+			clock-frequency = <100000>;
+			clocks = <&bpmp TEGRA234_CLK_I2C7
+				&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			assigned-clocks = <&bpmp TEGRA234_CLK_I2C7>;
+			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			clock-names = "div-clk", "parent";
+			resets = <&bpmp TEGRA234_RESET_I2C7>;
+			reset-names = "i2c";
+		};
+
+		dp_aux_ch3_i2c: i2c@31e0000 {
+			compatible = "nvidia,tegra234-i2c";
+			reg = <0x31e0000 0x100>;
+			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+			clock-frequency = <100000>;
+			clocks = <&bpmp TEGRA234_CLK_I2C9
+				&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			assigned-clocks = <&bpmp TEGRA234_CLK_I2C9>;
+			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			clock-names = "div-clk", "parent";
+			resets = <&bpmp TEGRA234_RESET_I2C9>;
+			reset-names = "i2c";
+		};
+
 		mmc@3460000 {
 			compatible = "nvidia,tegra234-sdhci", "nvidia,tegra186-sdhci";
 			reg = <0x03460000 0x20000>;
@@ -212,6 +302,37 @@
 			#mbox-cells = <2>;
 		};
 
+		gen2_i2c: i2c@c240000 {
+			compatible = "nvidia,tegra234-i2c";
+			reg = <0xc240000 0x100>;
+			interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+			clock-frequency = <100000>;
+			clocks = <&bpmp TEGRA234_CLK_I2C2
+				&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			clock-names = "div-clk", "parent";
+			assigned-clocks = <&bpmp TEGRA234_CLK_I2C2>;
+			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			resets = <&bpmp TEGRA234_RESET_I2C2>;
+			reset-names = "i2c";
+		};
+
+		gen8_i2c: i2c@c250000 {
+			compatible = "nvidia,tegra234-i2c";
+			reg = <0xc250000 0x100>;
+			nvidia,hw-instance-id = <0x7>;
+			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+			clock-frequency = <400000>;
+			clocks = <&bpmp TEGRA234_CLK_I2C8
+				&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			clock-names = "div-clk", "parent";
+			assigned-clocks = <&bpmp TEGRA234_CLK_I2C8>;
+			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
+			resets = <&bpmp TEGRA234_RESET_I2C8>;
+			reset-names = "i2c";
+		};
+
 		rtc@c2a0000 {
 			compatible = "nvidia,tegra234-rtc", "nvidia,tegra20-rtc";
 			reg = <0x0c2a0000 0x10000>;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 5/6] dt-bindings: Add headers for Tegra234 PWM
  2022-01-13 13:30 [PATCH 0/6] Add I2C and PWM support for T234 Akhil R
                   ` (3 preceding siblings ...)
  2022-01-13 13:30 ` [PATCH 4/6] arm64: tegra: Add Tegra234 I2C devicetree nodes Akhil R
@ 2022-01-13 13:30 ` Akhil R
  2022-01-13 13:30 ` [PATCH 6/6] arm64: tegra: Add Tegra234 PWM devicetree nodes Akhil R
  5 siblings, 0 replies; 13+ messages in thread
From: Akhil R @ 2022-01-13 13:30 UTC (permalink / raw)
  To: robh+dt, thierry.reding, jonathanh, mperttunen, ldewangan,
	digetx, linux-i2c, devicetree, linux-tegra, linux-kernel
  Cc: akhilrajeev

Add dt-bindings header files for PWM of Tegra234

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
---
 include/dt-bindings/clock/tegra234-clock.h | 17 +++++++++++++++++
 include/dt-bindings/reset/tegra234-reset.h |  8 ++++++++
 2 files changed, 25 insertions(+)

diff --git a/include/dt-bindings/clock/tegra234-clock.h b/include/dt-bindings/clock/tegra234-clock.h
index 5d05c19..9d17309 100644
--- a/include/dt-bindings/clock/tegra234-clock.h
+++ b/include/dt-bindings/clock/tegra234-clock.h
@@ -50,4 +50,21 @@
 /** @brief PLLP clk output */
 #define TEGRA234_CLK_PLLP_OUT0			102U
 
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_PWM1 */
+#define TEGRA234_CLK_PWM1			105U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_PWM2 */
+#define TEGRA234_CLK_PWM2			106U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_PWM3 */
+#define TEGRA234_CLK_PWM3			107U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_PWM4 */
+#define TEGRA234_CLK_PWM4			108U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_PWM5 */
+#define TEGRA234_CLK_PWM5			109U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_PWM6 */
+#define TEGRA234_CLK_PWM6			110U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_PWM7 */
+#define TEGRA234_CLK_PWM7			111U
+/** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_PWM8 */
+#define TEGRA234_CLK_PWM8			112U
+
 #endif
diff --git a/include/dt-bindings/reset/tegra234-reset.h b/include/dt-bindings/reset/tegra234-reset.h
index e07e898..288524f 100644
--- a/include/dt-bindings/reset/tegra234-reset.h
+++ b/include/dt-bindings/reset/tegra234-reset.h
@@ -20,6 +20,14 @@
 #define TEGRA234_RESET_I2C7			33U
 #define TEGRA234_RESET_I2C8			34U
 #define TEGRA234_RESET_I2C9			35U
+#define TEGRA234_RESET_PWM1			68U
+#define TEGRA234_RESET_PWM2			69U
+#define TEGRA234_RESET_PWM3			70U
+#define TEGRA234_RESET_PWM4			71U
+#define TEGRA234_RESET_PWM5			72U
+#define TEGRA234_RESET_PWM6			73U
+#define TEGRA234_RESET_PWM7			74U
+#define TEGRA234_RESET_PWM8			75U
 
 /** @} */
 
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 6/6] arm64: tegra: Add Tegra234 PWM devicetree nodes
  2022-01-13 13:30 [PATCH 0/6] Add I2C and PWM support for T234 Akhil R
                   ` (4 preceding siblings ...)
  2022-01-13 13:30 ` [PATCH 5/6] dt-bindings: Add headers for Tegra234 PWM Akhil R
@ 2022-01-13 13:30 ` Akhil R
  5 siblings, 0 replies; 13+ messages in thread
From: Akhil R @ 2022-01-13 13:30 UTC (permalink / raw)
  To: robh+dt, thierry.reding, jonathanh, mperttunen, ldewangan,
	digetx, linux-i2c, devicetree, linux-tegra, linux-kernel
  Cc: akhilrajeev

Add device tree nodes for Tegra234 PWM

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
---
 arch/arm64/boot/dts/nvidia/tegra234.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra234.dtsi b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
index 51aff7d..53a5475 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
@@ -234,6 +234,18 @@
 			reset-names = "i2c";
 		};
 
+		pwm1: pwm@3280000 {
+			compatible = "nvidia,tegra194-pwm",
+				     "nvidia,tegra186-pwm";
+			reg = <0x3280000 0x10000>;
+			clocks = <&bpmp TEGRA234_CLK_PWM1>;
+			clock-names = "pwm";
+			resets = <&bpmp TEGRA234_RESET_PWM1>;
+			reset-names = "pwm";
+			status = "disabled";
+			#pwm-cells = <2>;
+		};
+
 		mmc@3460000 {
 			compatible = "nvidia,tegra234-sdhci", "nvidia,tegra186-sdhci";
 			reg = <0x03460000 0x20000>;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C
  2022-01-13 13:30 ` [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C Akhil R
@ 2022-01-18 20:54   ` Dmitry Osipenko
  2022-01-19  8:20     ` Akhil R
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Osipenko @ 2022-01-18 20:54 UTC (permalink / raw)
  To: Akhil R, robh+dt, thierry.reding, jonathanh, mperttunen,
	ldewangan, linux-i2c, devicetree, linux-tegra, linux-kernel

13.01.2022 16:30, Akhil R пишет:
> +static const struct tegra_i2c_hw_feature tegra234_i2c_hw = {
> +	.has_continue_xfer_support = true,
> +	.has_per_pkt_xfer_complete_irq = true,
> +	.clk_divisor_hs_mode = 0x2,
> +	.clk_divisor_std_mode = 0x4f,
> +	.clk_divisor_fast_mode = 0x58,
> +	.clk_divisor_fast_plus_mode = 0x24,
> +	.has_config_load_reg = true,
> +	.has_multi_master_mode = true,
> +	.has_slcg_override_reg = true,
> +	.has_mst_fifo = true,
> +	.quirks = &tegra194_i2c_quirks,
> +	.supports_bus_clear = true,
> +	.has_apb_dma = false,
> +	.tlow_std_mode = 0x8,
> +	.thigh_std_mode = 0x7,
> +	.tlow_fast_fastplus_mode = 0x1,
> +	.thigh_fast_fastplus_mode = 0x1,
> +	.setup_hold_time_std_mode = 0x08080808,
> +	.setup_hold_time_fast_fast_plus_mode = 0x02020202,
> +	.setup_hold_time_hs_mode = 0x090909,
> +	.has_interface_timing_reg = true,
> +};

Why tegra194_i2c_hw can't be reused by T234? Looks like I2C h/w hasn't
changed and somebody just made a minor tuning of the timing parameters,
does it really matter in practice?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C
  2022-01-18 20:54   ` Dmitry Osipenko
@ 2022-01-19  8:20     ` Akhil R
  2022-01-19 12:20       ` Dmitry Osipenko
  0 siblings, 1 reply; 13+ messages in thread
From: Akhil R @ 2022-01-19  8:20 UTC (permalink / raw)
  To: Dmitry Osipenko, robh+dt, thierry.reding, Jonathan Hunter,
	Mikko Perttunen, Laxman Dewangan, linux-i2c, devicetree,
	linux-tegra, linux-kernel, Petlozu Pravareshwar

> 13.01.2022 16:30, Akhil R пишет:
> > +static const struct tegra_i2c_hw_feature tegra234_i2c_hw = {
> > +     .has_continue_xfer_support = true,
> > +     .has_per_pkt_xfer_complete_irq = true,
> > +     .clk_divisor_hs_mode = 0x2,
> > +     .clk_divisor_std_mode = 0x4f,
> > +     .clk_divisor_fast_mode = 0x58,
> > +     .clk_divisor_fast_plus_mode = 0x24,
> > +     .has_config_load_reg = true,
> > +     .has_multi_master_mode = true,
> > +     .has_slcg_override_reg = true,
> > +     .has_mst_fifo = true,
> > +     .quirks = &tegra194_i2c_quirks,
> > +     .supports_bus_clear = true,
> > +     .has_apb_dma = false,
> > +     .tlow_std_mode = 0x8,
> > +     .thigh_std_mode = 0x7,
> > +     .tlow_fast_fastplus_mode = 0x1,
> > +     .thigh_fast_fastplus_mode = 0x1,
> > +     .setup_hold_time_std_mode = 0x08080808,
> > +     .setup_hold_time_fast_fast_plus_mode = 0x02020202,
> > +     .setup_hold_time_hs_mode = 0x090909,
> > +     .has_interface_timing_reg = true, };
> 
> Why tegra194_i2c_hw can't be reused by T234? Looks like I2C h/w hasn't
> changed and somebody just made a minor tuning of the timing parameters, does
> it really matter in practice?
The timing parameters are important to get the desired data rate for I2C. The values,
unfortunately, cannot be reused from Tegra194.

Thanks,
Akhil

--
nvpublic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C
  2022-01-19  8:20     ` Akhil R
@ 2022-01-19 12:20       ` Dmitry Osipenko
  2022-01-20 14:23         ` Akhil R
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Osipenko @ 2022-01-19 12:20 UTC (permalink / raw)
  To: Akhil R, robh+dt, thierry.reding, Jonathan Hunter,
	Mikko Perttunen, Laxman Dewangan, linux-i2c, devicetree,
	linux-tegra, linux-kernel, Petlozu Pravareshwar

19.01.2022 11:20, Akhil R пишет:
>> 13.01.2022 16:30, Akhil R пишет:
>>> +static const struct tegra_i2c_hw_feature tegra234_i2c_hw = {
>>> +     .has_continue_xfer_support = true,
>>> +     .has_per_pkt_xfer_complete_irq = true,
>>> +     .clk_divisor_hs_mode = 0x2,
>>> +     .clk_divisor_std_mode = 0x4f,
>>> +     .clk_divisor_fast_mode = 0x58,
>>> +     .clk_divisor_fast_plus_mode = 0x24,
>>> +     .has_config_load_reg = true,
>>> +     .has_multi_master_mode = true,
>>> +     .has_slcg_override_reg = true,
>>> +     .has_mst_fifo = true,
>>> +     .quirks = &tegra194_i2c_quirks,
>>> +     .supports_bus_clear = true,
>>> +     .has_apb_dma = false,
>>> +     .tlow_std_mode = 0x8,
>>> +     .thigh_std_mode = 0x7,
>>> +     .tlow_fast_fastplus_mode = 0x1,
>>> +     .thigh_fast_fastplus_mode = 0x1,
>>> +     .setup_hold_time_std_mode = 0x08080808,
>>> +     .setup_hold_time_fast_fast_plus_mode = 0x02020202,
>>> +     .setup_hold_time_hs_mode = 0x090909,
>>> +     .has_interface_timing_reg = true, };
>>
>> Why tegra194_i2c_hw can't be reused by T234? Looks like I2C h/w hasn't
>> changed and somebody just made a minor tuning of the timing parameters, does
>> it really matter in practice?
> The timing parameters are important to get the desired data rate for I2C. The values,
> unfortunately, cannot be reused from Tegra194.

From where those T194 parameters specified in the Tegra I2C driver came
from?

I'm now looking at T194 TRM (Xavier_TRM_DP09253002_v1.3p 10.2.3.1.1
Example Settings for Various I2C Speeds) and see that all the values
should match T234. Please check whether T194 configuration is correct
and fix it if needed.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C
  2022-01-19 12:20       ` Dmitry Osipenko
@ 2022-01-20 14:23         ` Akhil R
  0 siblings, 0 replies; 13+ messages in thread
From: Akhil R @ 2022-01-20 14:23 UTC (permalink / raw)
  To: Dmitry Osipenko, robh+dt, thierry.reding, Jonathan Hunter,
	Mikko Perttunen, Laxman Dewangan, linux-i2c, devicetree,
	linux-tegra, linux-kernel, Petlozu Pravareshwar,
	Krishna Yarlagadda

> >>> +static const struct tegra_i2c_hw_feature tegra234_i2c_hw = {
> >>> +     .has_continue_xfer_support = true,
> >>> +     .has_per_pkt_xfer_complete_irq = true,
> >>> +     .clk_divisor_hs_mode = 0x2,
> >>> +     .clk_divisor_std_mode = 0x4f,
> >>> +     .clk_divisor_fast_mode = 0x58,
> >>> +     .clk_divisor_fast_plus_mode = 0x24,
> >>> +     .has_config_load_reg = true,
> >>> +     .has_multi_master_mode = true,
> >>> +     .has_slcg_override_reg = true,
> >>> +     .has_mst_fifo = true,
> >>> +     .quirks = &tegra194_i2c_quirks,
> >>> +     .supports_bus_clear = true,
> >>> +     .has_apb_dma = false,
> >>> +     .tlow_std_mode = 0x8,
> >>> +     .thigh_std_mode = 0x7,
> >>> +     .tlow_fast_fastplus_mode = 0x1,
> >>> +     .thigh_fast_fastplus_mode = 0x1,
> >>> +     .setup_hold_time_std_mode = 0x08080808,
> >>> +     .setup_hold_time_fast_fast_plus_mode = 0x02020202,
> >>> +     .setup_hold_time_hs_mode = 0x090909,
> >>> +     .has_interface_timing_reg = true, };
> >>
> >> Why tegra194_i2c_hw can't be reused by T234? Looks like I2C h/w hasn't
> >> changed and somebody just made a minor tuning of the timing parameters,
> does
> >> it really matter in practice?
> > The timing parameters are important to get the desired data rate for I2C. The
> values,
> > unfortunately, cannot be reused from Tegra194.
> 
> From where those T194 parameters specified in the Tegra I2C driver came
> from?
> 
> I'm now looking at T194 TRM (Xavier_TRM_DP09253002_v1.3p 10.2.3.1.1
> Example Settings for Various I2C Speeds) and see that all the values
> should match T234. Please check whether T194 configuration is correct
> and fix it if needed.

Thanks for highlighting this. There are adjustments in the default timing values
of T194 from TRM. I am checking if these changes can be used for T234 as well.
Will send an updated patch if the same values apply for T234.

Thanks,
Akhil



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/6] dt-bindings: i2c: tegra: Add Tegra234 details
  2022-01-13 13:30 ` [PATCH 2/6] dt-bindings: i2c: tegra: Add Tegra234 details Akhil R
@ 2022-02-09  2:17   ` Rob Herring
  2022-02-09  3:54     ` Akhil R
  0 siblings, 1 reply; 13+ messages in thread
From: Rob Herring @ 2022-02-09  2:17 UTC (permalink / raw)
  To: Akhil R
  Cc: thierry.reding, jonathanh, mperttunen, ldewangan, digetx,
	linux-i2c, devicetree, linux-tegra, linux-kernel

On Thu, Jan 13, 2022 at 07:00:19PM +0530, Akhil R wrote:
> Add documentation for Tegra234 I2C compatible.
> 
> Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
> ---
>  Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
> index 424a4fc..c58e256 100644
> --- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
> +++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
> @@ -80,6 +80,11 @@ properties:
>            support for 64 KiB transactions whereas earlier chips supported no
>            more than 4 KiB per transactions.
>          const: nvidia,tegra194-i2c
> +      - description: |
> +          Tegra234 has 8 generic I2C controllers, two of which are in the AON
> +          (always-on) partition of the SoC. All of these controllers are
> +          similar to those found on Tegra194.
> +        const: nvidia,tegra234-i2c

Sounds like this needs a fallback to nvidia,tegra194-i2c if it works, 
but without optimal timing.

Rob

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH 2/6] dt-bindings: i2c: tegra: Add Tegra234 details
  2022-02-09  2:17   ` Rob Herring
@ 2022-02-09  3:54     ` Akhil R
  0 siblings, 0 replies; 13+ messages in thread
From: Akhil R @ 2022-02-09  3:54 UTC (permalink / raw)
  To: Rob Herring
  Cc: thierry.reding, Jonathan Hunter, Mikko Perttunen,
	Laxman Dewangan, digetx, linux-i2c, devicetree, linux-tegra,
	linux-kernel

> On Thu, Jan 13, 2022 at 07:00:19PM +0530, Akhil R wrote:
> > Add documentation for Tegra234 I2C compatible.
> >
> > Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
> > ---
> >  Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml | 5
> > +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git
> > a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
> > b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
> > index 424a4fc..c58e256 100644
> > --- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
> > +++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
> > @@ -80,6 +80,11 @@ properties:
> >            support for 64 KiB transactions whereas earlier chips supported no
> >            more than 4 KiB per transactions.
> >          const: nvidia,tegra194-i2c
> > +      - description: |
> > +          Tegra234 has 8 generic I2C controllers, two of which are in the AON
> > +          (always-on) partition of the SoC. All of these controllers are
> > +          similar to those found on Tegra194.
> > +        const: nvidia,tegra234-i2c
> 
> Sounds like this needs a fallback to nvidia,tegra194-i2c if it works, but without
> optimal timing.
Yes. The timing for tegra194 works for tegra234 as well. So, this change is reverted.
I had sent the patch updated. Latest is here - https://lkml.org/lkml/2022/1/24/335
Only the device tree nodes are required to be added now.

Thanks,
Akhil


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2022-02-09  4:08 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-13 13:30 [PATCH 0/6] Add I2C and PWM support for T234 Akhil R
2022-01-13 13:30 ` [PATCH 1/6] i2c: tegra: Add support for Tegra234 I2C Akhil R
2022-01-18 20:54   ` Dmitry Osipenko
2022-01-19  8:20     ` Akhil R
2022-01-19 12:20       ` Dmitry Osipenko
2022-01-20 14:23         ` Akhil R
2022-01-13 13:30 ` [PATCH 2/6] dt-bindings: i2c: tegra: Add Tegra234 details Akhil R
2022-02-09  2:17   ` Rob Herring
2022-02-09  3:54     ` Akhil R
2022-01-13 13:30 ` [PATCH 3/6] dt-bindings: Add headers for Tegra234 I2C Akhil R
2022-01-13 13:30 ` [PATCH 4/6] arm64: tegra: Add Tegra234 I2C devicetree nodes Akhil R
2022-01-13 13:30 ` [PATCH 5/6] dt-bindings: Add headers for Tegra234 PWM Akhil R
2022-01-13 13:30 ` [PATCH 6/6] arm64: tegra: Add Tegra234 PWM devicetree nodes Akhil R

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.