* [PATCH v4 0/4] clk: tegra: add DFLL support for Tegra114
@ 2025-08-28 5:43 Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header Svyatoslav Ryhel
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Svyatoslav Ryhel @ 2025-08-28 5:43 UTC (permalink / raw)
To: Thierry Reding, Thierry Reding, Jonathan Hunter, Prashant Gaikwad,
Michael Turquette, Stephen Boyd, Philipp Zabel, Svyatoslav Ryhel,
Mikko Perttunen, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: devicetree, linux-tegra, linux-kernel, linux-clk
DFLL is a dedicated clock source for the Fast CPU. The DFLL is based on
a ring oscillator and translates voltage changes into frequency
compensation changes needed to prevent the CPU from failing and is
essential for correct CPU frequency scaling.
---
Changes in v2:
- dropped 'drivers:' from commit title
- aligned naming to Tegra114
Changes in v3:
- add DFLL support for Tegra 114 was split into dt header addition,
DFLL reset configuration and CVB tables implementation.
- added cleaner commit message to dt header commit
- added T210_ prefixes to Tegra210 CVB table macros
Changes in v4:
- expanded commit message of car header adding commit
---
Svyatoslav Ryhel (4):
dt-bindings: reset: add Tegra114 car header
clk: tegra: add DFLL DVCO reset control for Tegra114
clk: tegra: dfll: add CVB tables for Tegra114
ARM: tegra: Add DFLL clock support for Tegra114
arch/arm/boot/dts/nvidia/tegra114.dtsi | 33 +++++
drivers/clk/tegra/Kconfig | 2 +-
drivers/clk/tegra/clk-tegra114.c | 30 +++-
drivers/clk/tegra/clk-tegra124-dfll-fcpu.c | 158 +++++++++++++++++----
drivers/clk/tegra/clk.h | 2 -
include/dt-bindings/reset/tegra114-car.h | 13 ++
6 files changed, 204 insertions(+), 34 deletions(-)
create mode 100644 include/dt-bindings/reset/tegra114-car.h
--
2.48.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header
2025-08-28 5:43 [PATCH v4 0/4] clk: tegra: add DFLL support for Tegra114 Svyatoslav Ryhel
@ 2025-08-28 5:44 ` Svyatoslav Ryhel
2025-08-28 7:19 ` Krzysztof Kozlowski
2025-08-28 5:44 ` [PATCH v4 2/4] clk: tegra: add DFLL DVCO reset control for Tegra114 Svyatoslav Ryhel
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Svyatoslav Ryhel @ 2025-08-28 5:44 UTC (permalink / raw)
To: Thierry Reding, Thierry Reding, Jonathan Hunter, Prashant Gaikwad,
Michael Turquette, Stephen Boyd, Philipp Zabel, Svyatoslav Ryhel,
Mikko Perttunen, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: devicetree, linux-tegra, linux-kernel, linux-clk
The way that resets are handled on these Tegra devices is that there is a
set of peripheral clocks & resets which are paired up. This is because they
are laid out in banks within the CAR (clock and reset) controller. In most
cases we're referring to those resets, so you'll often see a clock ID used
in conjection with the same reset ID for a given IP block.
In addition to those peripheral resets, there are a number of extra resets
that don't have a corresponding clock and which are exposed in registers
outside of the peripheral banks, but still part of the CAR. To support
those "special" registers, the TEGRA*_RESET() is used to denote resets
outside of the regular peripheral resets. Essentially it defines the offset
within the CAR at which special resets start. In the above case, Tegra114
has 5 banks with 32 peripheral resets each. The first special reset,
TEGRA114_RESET(0), therefore gets ID 5 * 32 + 0 = 160.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
---
include/dt-bindings/reset/tegra114-car.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 include/dt-bindings/reset/tegra114-car.h
diff --git a/include/dt-bindings/reset/tegra114-car.h b/include/dt-bindings/reset/tegra114-car.h
new file mode 100644
index 000000000000..d7908d810ddf
--- /dev/null
+++ b/include/dt-bindings/reset/tegra114-car.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * This header provides Tegra114-specific constants for binding
+ * nvidia,tegra114-car.
+ */
+
+#ifndef _DT_BINDINGS_RESET_TEGRA114_CAR_H
+#define _DT_BINDINGS_RESET_TEGRA114_CAR_H
+
+#define TEGRA114_RESET(x) (5 * 32 + (x))
+#define TEGRA114_RST_DFLL_DVCO TEGRA114_RESET(0)
+
+#endif /* _DT_BINDINGS_RESET_TEGRA114_CAR_H */
--
2.48.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 2/4] clk: tegra: add DFLL DVCO reset control for Tegra114
2025-08-28 5:43 [PATCH v4 0/4] clk: tegra: add DFLL support for Tegra114 Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header Svyatoslav Ryhel
@ 2025-08-28 5:44 ` Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 3/4] clk: tegra: dfll: add CVB tables " Svyatoslav Ryhel
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Svyatoslav Ryhel @ 2025-08-28 5:44 UTC (permalink / raw)
To: Thierry Reding, Thierry Reding, Jonathan Hunter, Prashant Gaikwad,
Michael Turquette, Stephen Boyd, Philipp Zabel, Svyatoslav Ryhel,
Mikko Perttunen, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: devicetree, linux-tegra, linux-kernel, linux-clk
The DVCO present in the DFLL IP block has a separate reset line, exposed
via the CAR IP block. This reset line is asserted upon SoC reset. Unless
something (such as the DFLL driver) deasserts this line, the DVCO will not
oscillate, although reads and writes to the DFLL IP block will complete.
Based on a3c83ff2 ("clk: tegra: Add DFLL DVCO reset control for Tegra124")
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
---
drivers/clk/tegra/clk-tegra114.c | 30 ++++++++++++++++++++++++++----
drivers/clk/tegra/clk.h | 2 --
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/drivers/clk/tegra/clk-tegra114.c b/drivers/clk/tegra/clk-tegra114.c
index 186b0b81c1ec..3eaa97c7d79e 100644
--- a/drivers/clk/tegra/clk-tegra114.c
+++ b/drivers/clk/tegra/clk-tegra114.c
@@ -11,6 +11,7 @@
#include <linux/export.h>
#include <linux/clk/tegra.h>
#include <dt-bindings/clock/tegra114-car.h>
+#include <dt-bindings/reset/tegra114-car.h>
#include "clk.h"
#include "clk-id.h"
@@ -1274,7 +1275,7 @@ EXPORT_SYMBOL(tegra114_clock_tune_cpu_trimmers_init);
*
* Assert the reset line of the DFLL's DVCO. No return value.
*/
-void tegra114_clock_assert_dfll_dvco_reset(void)
+static void tegra114_clock_assert_dfll_dvco_reset(void)
{
u32 v;
@@ -1283,7 +1284,6 @@ void tegra114_clock_assert_dfll_dvco_reset(void)
writel_relaxed(v, clk_base + RST_DFLL_DVCO);
tegra114_car_barrier();
}
-EXPORT_SYMBOL(tegra114_clock_assert_dfll_dvco_reset);
/**
* tegra114_clock_deassert_dfll_dvco_reset - deassert the DFLL's DVCO reset
@@ -1291,7 +1291,7 @@ EXPORT_SYMBOL(tegra114_clock_assert_dfll_dvco_reset);
* Deassert the reset line of the DFLL's DVCO, allowing the DVCO to
* operate. No return value.
*/
-void tegra114_clock_deassert_dfll_dvco_reset(void)
+static void tegra114_clock_deassert_dfll_dvco_reset(void)
{
u32 v;
@@ -1300,7 +1300,26 @@ void tegra114_clock_deassert_dfll_dvco_reset(void)
writel_relaxed(v, clk_base + RST_DFLL_DVCO);
tegra114_car_barrier();
}
-EXPORT_SYMBOL(tegra114_clock_deassert_dfll_dvco_reset);
+
+static int tegra114_reset_assert(unsigned long id)
+{
+ if (id == TEGRA114_RST_DFLL_DVCO)
+ tegra114_clock_assert_dfll_dvco_reset();
+ else
+ return -EINVAL;
+
+ return 0;
+}
+
+static int tegra114_reset_deassert(unsigned long id)
+{
+ if (id == TEGRA114_RST_DFLL_DVCO)
+ tegra114_clock_deassert_dfll_dvco_reset();
+ else
+ return -EINVAL;
+
+ return 0;
+}
static void __init tegra114_clock_init(struct device_node *np)
{
@@ -1346,6 +1365,9 @@ static void __init tegra114_clock_init(struct device_node *np)
tegra_super_clk_gen4_init(clk_base, pmc_base, tegra114_clks,
&pll_x_params);
+ tegra_init_special_resets(1, tegra114_reset_assert,
+ tegra114_reset_deassert);
+
tegra_add_of_provider(np, of_clk_src_onecell_get);
tegra_register_devclks(devclks, ARRAY_SIZE(devclks));
diff --git a/drivers/clk/tegra/clk.h b/drivers/clk/tegra/clk.h
index 5d80d8b79b8e..58e860b18e5e 100644
--- a/drivers/clk/tegra/clk.h
+++ b/drivers/clk/tegra/clk.h
@@ -898,8 +898,6 @@ static inline bool tegra124_clk_emc_driver_available(struct clk_hw *emc_hw)
void tegra114_clock_tune_cpu_trimmers_high(void);
void tegra114_clock_tune_cpu_trimmers_low(void);
void tegra114_clock_tune_cpu_trimmers_init(void);
-void tegra114_clock_assert_dfll_dvco_reset(void);
-void tegra114_clock_deassert_dfll_dvco_reset(void);
typedef void (*tegra_clk_apply_init_table_func)(void);
extern tegra_clk_apply_init_table_func tegra_clk_apply_init_table;
--
2.48.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 3/4] clk: tegra: dfll: add CVB tables for Tegra114
2025-08-28 5:43 [PATCH v4 0/4] clk: tegra: add DFLL support for Tegra114 Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 2/4] clk: tegra: add DFLL DVCO reset control for Tegra114 Svyatoslav Ryhel
@ 2025-08-28 5:44 ` Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 4/4] ARM: tegra: Add DFLL clock support " Svyatoslav Ryhel
2025-08-28 14:26 ` [PATCH v4 0/4] clk: tegra: add DFLL " Rob Herring (Arm)
4 siblings, 0 replies; 9+ messages in thread
From: Svyatoslav Ryhel @ 2025-08-28 5:44 UTC (permalink / raw)
To: Thierry Reding, Thierry Reding, Jonathan Hunter, Prashant Gaikwad,
Michael Turquette, Stephen Boyd, Philipp Zabel, Svyatoslav Ryhel,
Mikko Perttunen, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: devicetree, linux-tegra, linux-kernel, linux-clk
Extend the Tegra124 DFLL driver to include configuration settings required
for Tegra114 compatibility.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
---
drivers/clk/tegra/Kconfig | 2 +-
drivers/clk/tegra/clk-tegra124-dfll-fcpu.c | 158 +++++++++++++++++----
2 files changed, 132 insertions(+), 28 deletions(-)
diff --git a/drivers/clk/tegra/Kconfig b/drivers/clk/tegra/Kconfig
index 90df619dc087..62147a069606 100644
--- a/drivers/clk/tegra/Kconfig
+++ b/drivers/clk/tegra/Kconfig
@@ -4,7 +4,7 @@ config CLK_TEGRA_BPMP
depends on TEGRA_BPMP
config TEGRA_CLK_DFLL
- depends on ARCH_TEGRA_124_SOC || ARCH_TEGRA_210_SOC
+ depends on ARCH_TEGRA_114_SOC || ARCH_TEGRA_124_SOC || ARCH_TEGRA_210_SOC
select PM_OPP
def_bool y
diff --git a/drivers/clk/tegra/clk-tegra124-dfll-fcpu.c b/drivers/clk/tegra/clk-tegra124-dfll-fcpu.c
index 0251618b82c8..1405217fed5d 100644
--- a/drivers/clk/tegra/clk-tegra124-dfll-fcpu.c
+++ b/drivers/clk/tegra/clk-tegra124-dfll-fcpu.c
@@ -28,6 +28,99 @@ struct dfll_fcpu_data {
unsigned int cpu_cvb_tables_size;
};
+/* Maximum CPU frequency, indexed by CPU speedo id */
+static const unsigned long tegra114_cpu_max_freq_table[] = {
+ [0] = 2040000000UL,
+ [1] = 1810500000UL,
+ [2] = 1912500000UL,
+ [3] = 1810500000UL,
+};
+
+#define T114_CPU_CVB_TABLE \
+ .min_millivolts = 1000, \
+ .max_millivolts = 1320, \
+ .speedo_scale = 100, \
+ .voltage_scale = 1000, \
+ .entries = { \
+ { 306000000UL, { 2190643, -141851, 3576 } }, \
+ { 408000000UL, { 2250968, -144331, 3576 } }, \
+ { 510000000UL, { 2313333, -146811, 3576 } }, \
+ { 612000000UL, { 2377738, -149291, 3576 } }, \
+ { 714000000UL, { 2444183, -151771, 3576 } }, \
+ { 816000000UL, { 2512669, -154251, 3576 } }, \
+ { 918000000UL, { 2583194, -156731, 3576 } }, \
+ { 1020000000UL, { 2655759, -159211, 3576 } }, \
+ { 1122000000UL, { 2730365, -161691, 3576 } }, \
+ { 1224000000UL, { 2807010, -164171, 3576 } }, \
+ { 1326000000UL, { 2885696, -166651, 3576 } }, \
+ { 1428000000UL, { 2966422, -169131, 3576 } }, \
+ { 1530000000UL, { 3049183, -171601, 3576 } }, \
+ { 1606500000UL, { 3112179, -173451, 3576 } }, \
+ { 1708500000UL, { 3198504, -175931, 3576 } }, \
+ { 1810500000UL, { 3304747, -179126, 3576 } }, \
+ { 1912500000UL, { 3395401, -181606, 3576 } }, \
+ { 0UL, { 0, 0, 0 } }, \
+ }, \
+ .cpu_dfll_data = { \
+ .tune0_low = 0x00b0039d, \
+ .tune0_high = 0x00b0009d, \
+ .tune1 = 0x0000001f, \
+ .tune_high_min_millivolts = 1050, \
+ }
+
+static const struct cvb_table tegra114_cpu_cvb_tables[] = {
+ {
+ .speedo_id = 0,
+ .process_id = -1,
+ .min_millivolts = 1000,
+ .max_millivolts = 1250,
+ .speedo_scale = 100,
+ .voltage_scale = 100,
+ .entries = {
+ { 306000000UL, { 107330, -1569, 0 } },
+ { 408000000UL, { 111250, -1666, 0 } },
+ { 510000000UL, { 110000, -1460, 0 } },
+ { 612000000UL, { 117290, -1745, 0 } },
+ { 714000000UL, { 122700, -1910, 0 } },
+ { 816000000UL, { 125620, -1945, 0 } },
+ { 918000000UL, { 130560, -2076, 0 } },
+ { 1020000000UL, { 137280, -2303, 0 } },
+ { 1122000000UL, { 146440, -2660, 0 } },
+ { 1224000000UL, { 152190, -2825, 0 } },
+ { 1326000000UL, { 157520, -2953, 0 } },
+ { 1428000000UL, { 166100, -3261, 0 } },
+ { 1530000000UL, { 176410, -3647, 0 } },
+ { 1632000000UL, { 189620, -4186, 0 } },
+ { 1734000000UL, { 203190, -4725, 0 } },
+ { 1836000000UL, { 222670, -5573, 0 } },
+ { 1938000000UL, { 256210, -7165, 0 } },
+ { 2040000000UL, { 250050, -6544, 0 } },
+ { 0UL, { 0, 0, 0 } },
+ },
+ .cpu_dfll_data = {
+ .tune0_low = 0x00b0019d,
+ .tune0_high = 0x00b0019d,
+ .tune1 = 0x0000001f,
+ .tune_high_min_millivolts = 1000,
+ }
+ },
+ {
+ .speedo_id = 1,
+ .process_id = -1,
+ T114_CPU_CVB_TABLE
+ },
+ {
+ .speedo_id = 2,
+ .process_id = -1,
+ T114_CPU_CVB_TABLE
+ },
+ {
+ .speedo_id = 3,
+ .process_id = -1,
+ T114_CPU_CVB_TABLE
+ },
+};
+
/* Maximum CPU frequency, indexed by CPU speedo id */
static const unsigned long tegra124_cpu_max_freq_table[] = {
[0] = 2014500000UL,
@@ -93,7 +186,7 @@ static const unsigned long tegra210_cpu_max_freq_table[] = {
[10] = 1504500000UL,
};
-#define CPU_CVB_TABLE \
+#define T210_CPU_CVB_TABLE \
.speedo_scale = 100, \
.voltage_scale = 1000, \
.entries = { \
@@ -120,7 +213,7 @@ static const unsigned long tegra210_cpu_max_freq_table[] = {
{ 0UL, { 0, 0, 0 } }, \
}
-#define CPU_CVB_TABLE_XA \
+#define T210_CPU_CVB_TABLE_XA \
.speedo_scale = 100, \
.voltage_scale = 1000, \
.entries = { \
@@ -143,7 +236,7 @@ static const unsigned long tegra210_cpu_max_freq_table[] = {
{ 0UL, { 0, 0, 0 } }, \
}
-#define CPU_CVB_TABLE_EUCM1 \
+#define T210_CPU_CVB_TABLE_EUCM1 \
.speedo_scale = 100, \
.voltage_scale = 1000, \
.entries = { \
@@ -166,7 +259,7 @@ static const unsigned long tegra210_cpu_max_freq_table[] = {
{ 0UL, { 0, 0, 0 } }, \
}
-#define CPU_CVB_TABLE_EUCM2 \
+#define T210_CPU_CVB_TABLE_EUCM2 \
.speedo_scale = 100, \
.voltage_scale = 1000, \
.entries = { \
@@ -188,7 +281,7 @@ static const unsigned long tegra210_cpu_max_freq_table[] = {
{ 0UL, { 0, 0, 0 } }, \
}
-#define CPU_CVB_TABLE_EUCM2_JOINT_RAIL \
+#define T210_CPU_CVB_TABLE_EUCM2_JOINT_RAIL \
.speedo_scale = 100, \
.voltage_scale = 1000, \
.entries = { \
@@ -209,7 +302,7 @@ static const unsigned long tegra210_cpu_max_freq_table[] = {
{ 0UL, { 0, 0, 0 } }, \
}
-#define CPU_CVB_TABLE_ODN \
+#define T210_CPU_CVB_TABLE_ODN \
.speedo_scale = 100, \
.voltage_scale = 1000, \
.entries = { \
@@ -238,7 +331,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 840,
.max_millivolts = 1120,
- CPU_CVB_TABLE_EUCM2_JOINT_RAIL,
+ T210_CPU_CVB_TABLE_EUCM2_JOINT_RAIL,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -251,7 +344,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 840,
.max_millivolts = 1120,
- CPU_CVB_TABLE_EUCM2_JOINT_RAIL,
+ T210_CPU_CVB_TABLE_EUCM2_JOINT_RAIL,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -264,7 +357,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 900,
.max_millivolts = 1162,
- CPU_CVB_TABLE_EUCM2,
+ T210_CPU_CVB_TABLE_EUCM2,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -276,7 +369,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 900,
.max_millivolts = 1162,
- CPU_CVB_TABLE_EUCM2,
+ T210_CPU_CVB_TABLE_EUCM2,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -288,7 +381,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 900,
.max_millivolts = 1195,
- CPU_CVB_TABLE_EUCM2,
+ T210_CPU_CVB_TABLE_EUCM2,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -300,7 +393,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 900,
.max_millivolts = 1195,
- CPU_CVB_TABLE_EUCM2,
+ T210_CPU_CVB_TABLE_EUCM2,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -312,7 +405,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 841,
.max_millivolts = 1227,
- CPU_CVB_TABLE_EUCM1,
+ T210_CPU_CVB_TABLE_EUCM1,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -325,7 +418,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 841,
.max_millivolts = 1227,
- CPU_CVB_TABLE_EUCM1,
+ T210_CPU_CVB_TABLE_EUCM1,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -338,7 +431,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 870,
.max_millivolts = 1150,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune1 = 0x20091d9,
@@ -349,7 +442,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 870,
.max_millivolts = 1150,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune1 = 0x25501d0,
@@ -360,7 +453,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 818,
.max_millivolts = 1227,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -373,7 +466,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 818,
.max_millivolts = 1227,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -386,7 +479,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = -1,
.min_millivolts = 918,
.max_millivolts = 1113,
- CPU_CVB_TABLE_XA,
+ T210_CPU_CVB_TABLE_XA,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune1 = 0x17711BD,
@@ -397,7 +490,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 825,
.max_millivolts = 1227,
- CPU_CVB_TABLE_ODN,
+ T210_CPU_CVB_TABLE_ODN,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -410,7 +503,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 825,
.max_millivolts = 1227,
- CPU_CVB_TABLE_ODN,
+ T210_CPU_CVB_TABLE_ODN,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -423,7 +516,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 870,
.max_millivolts = 1227,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune1 = 0x20091d9,
@@ -434,7 +527,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 870,
.max_millivolts = 1227,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune1 = 0x25501d0,
@@ -445,7 +538,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 837,
.max_millivolts = 1227,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -458,7 +551,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 837,
.max_millivolts = 1227,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -471,7 +564,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 0,
.min_millivolts = 850,
.max_millivolts = 1170,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -484,7 +577,7 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
.process_id = 1,
.min_millivolts = 850,
.max_millivolts = 1170,
- CPU_CVB_TABLE,
+ T210_CPU_CVB_TABLE,
.cpu_dfll_data = {
.tune0_low = 0xffead0ff,
.tune0_high = 0xffead0ff,
@@ -494,6 +587,13 @@ static struct cvb_table tegra210_cpu_cvb_tables[] = {
},
};
+static const struct dfll_fcpu_data tegra114_dfll_fcpu_data = {
+ .cpu_max_freq_table = tegra114_cpu_max_freq_table,
+ .cpu_max_freq_table_size = ARRAY_SIZE(tegra114_cpu_max_freq_table),
+ .cpu_cvb_tables = tegra114_cpu_cvb_tables,
+ .cpu_cvb_tables_size = ARRAY_SIZE(tegra114_cpu_cvb_tables)
+};
+
static const struct dfll_fcpu_data tegra124_dfll_fcpu_data = {
.cpu_max_freq_table = tegra124_cpu_max_freq_table,
.cpu_max_freq_table_size = ARRAY_SIZE(tegra124_cpu_max_freq_table),
@@ -509,6 +609,10 @@ static const struct dfll_fcpu_data tegra210_dfll_fcpu_data = {
};
static const struct of_device_id tegra124_dfll_fcpu_of_match[] = {
+ {
+ .compatible = "nvidia,tegra114-dfll",
+ .data = &tegra114_dfll_fcpu_data,
+ },
{
.compatible = "nvidia,tegra124-dfll",
.data = &tegra124_dfll_fcpu_data,
--
2.48.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 4/4] ARM: tegra: Add DFLL clock support for Tegra114
2025-08-28 5:43 [PATCH v4 0/4] clk: tegra: add DFLL support for Tegra114 Svyatoslav Ryhel
` (2 preceding siblings ...)
2025-08-28 5:44 ` [PATCH v4 3/4] clk: tegra: dfll: add CVB tables " Svyatoslav Ryhel
@ 2025-08-28 5:44 ` Svyatoslav Ryhel
2025-08-28 14:26 ` [PATCH v4 0/4] clk: tegra: add DFLL " Rob Herring (Arm)
4 siblings, 0 replies; 9+ messages in thread
From: Svyatoslav Ryhel @ 2025-08-28 5:44 UTC (permalink / raw)
To: Thierry Reding, Thierry Reding, Jonathan Hunter, Prashant Gaikwad,
Michael Turquette, Stephen Boyd, Philipp Zabel, Svyatoslav Ryhel,
Mikko Perttunen, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: devicetree, linux-tegra, linux-kernel, linux-clk
Add DFLL clock node to common Tegra114 device tree along with clocks
property to cpu node.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
---
arch/arm/boot/dts/nvidia/tegra114.dtsi | 33 ++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/arch/arm/boot/dts/nvidia/tegra114.dtsi b/arch/arm/boot/dts/nvidia/tegra114.dtsi
index 4caf2073c556..c429478eb122 100644
--- a/arch/arm/boot/dts/nvidia/tegra114.dtsi
+++ b/arch/arm/boot/dts/nvidia/tegra114.dtsi
@@ -4,6 +4,7 @@
#include <dt-bindings/memory/tegra114-mc.h>
#include <dt-bindings/pinctrl/pinctrl-tegra.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/reset/tegra114-car.h>
#include <dt-bindings/soc/tegra-pmc.h>
/ {
@@ -693,6 +694,29 @@ mipi: mipi@700e3000 {
#nvidia,mipi-calibrate-cells = <1>;
};
+ dfll: clock@70110000 {
+ compatible = "nvidia,tegra114-dfll";
+ reg = <0x70110000 0x100>, /* DFLL control */
+ <0x70110000 0x100>, /* I2C output control */
+ <0x70110100 0x100>, /* Integrated I2C controller */
+ <0x70110200 0x100>; /* Look-up table RAM */
+ interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&tegra_car TEGRA114_CLK_DFLL_SOC>,
+ <&tegra_car TEGRA114_CLK_DFLL_REF>,
+ <&tegra_car TEGRA114_CLK_I2C5>;
+ clock-names = "soc", "ref", "i2c";
+ resets = <&tegra_car TEGRA114_RST_DFLL_DVCO>;
+ reset-names = "dvco";
+ #clock-cells = <0>;
+ clock-output-names = "dfllCPU_out";
+ nvidia,droop-ctrl = <0x00000f00>;
+ nvidia,force-mode = <1>;
+ nvidia,cf = <10>;
+ nvidia,ci = <0>;
+ nvidia,cg = <2>;
+ status = "disabled";
+ };
+
mmc@78000000 {
compatible = "nvidia,tegra114-sdhci";
reg = <0x78000000 0x200>;
@@ -824,6 +848,15 @@ cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a15";
reg = <0>;
+
+ clocks = <&tegra_car TEGRA114_CLK_CCLK_G>,
+ <&tegra_car TEGRA114_CLK_CCLK_LP>,
+ <&tegra_car TEGRA114_CLK_PLL_X>,
+ <&tegra_car TEGRA114_CLK_PLL_P>,
+ <&dfll>;
+ clock-names = "cpu_g", "cpu_lp", "pll_x", "pll_p", "dfll";
+ /* FIXME: what's the actual transition time? */
+ clock-latency = <300000>;
};
cpu1: cpu@1 {
--
2.48.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header
2025-08-28 5:44 ` [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header Svyatoslav Ryhel
@ 2025-08-28 7:19 ` Krzysztof Kozlowski
2025-08-28 7:50 ` Mikko Perttunen
0 siblings, 1 reply; 9+ messages in thread
From: Krzysztof Kozlowski @ 2025-08-28 7:19 UTC (permalink / raw)
To: Svyatoslav Ryhel, Thierry Reding, Thierry Reding, Jonathan Hunter,
Prashant Gaikwad, Michael Turquette, Stephen Boyd, Philipp Zabel,
Mikko Perttunen, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: devicetree, linux-tegra, linux-kernel, linux-clk
On 28/08/2025 07:44, Svyatoslav Ryhel wrote:
> The way that resets are handled on these Tegra devices is that there is a
> set of peripheral clocks & resets which are paired up. This is because they
> are laid out in banks within the CAR (clock and reset) controller. In most
> cases we're referring to those resets, so you'll often see a clock ID used
> in conjection with the same reset ID for a given IP block.
>
> In addition to those peripheral resets, there are a number of extra resets
> that don't have a corresponding clock and which are exposed in registers
> outside of the peripheral banks, but still part of the CAR. To support
> those "special" registers, the TEGRA*_RESET() is used to denote resets
> outside of the regular peripheral resets. Essentially it defines the offset
> within the CAR at which special resets start. In the above case, Tegra114
> has 5 banks with 32 peripheral resets each. The first special reset,
> TEGRA114_RESET(0), therefore gets ID 5 * 32 + 0 = 160.
>
> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
> ---
> include/dt-bindings/reset/tegra114-car.h | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
> create mode 100644 include/dt-bindings/reset/tegra114-car.h
>
> diff --git a/include/dt-bindings/reset/tegra114-car.h b/include/dt-bindings/reset/tegra114-car.h
> new file mode 100644
> index 000000000000..d7908d810ddf
> --- /dev/null
> +++ b/include/dt-bindings/reset/tegra114-car.h
Still incorrectly named. Use full compatible, just like the other file
where we already switched to recommended format (see also writing bindings).
I asked for this at v1 and then reminded about unresolved comments at v3.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header
2025-08-28 7:19 ` Krzysztof Kozlowski
@ 2025-08-28 7:50 ` Mikko Perttunen
2025-08-29 7:29 ` Krzysztof Kozlowski
0 siblings, 1 reply; 9+ messages in thread
From: Mikko Perttunen @ 2025-08-28 7:50 UTC (permalink / raw)
To: Svyatoslav Ryhel, Thierry Reding, Thierry Reding, Jonathan Hunter,
Prashant Gaikwad, Michael Turquette, Stephen Boyd, Philipp Zabel,
Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Krzysztof Kozlowski
Cc: devicetree, linux-tegra, linux-kernel, linux-clk
On Thursday, August 28, 2025 4:19 PM Krzysztof Kozlowski wrote:
> On 28/08/2025 07:44, Svyatoslav Ryhel wrote:
> > The way that resets are handled on these Tegra devices is that there is a
> > set of peripheral clocks & resets which are paired up. This is because
> > they
> > are laid out in banks within the CAR (clock and reset) controller. In most
> > cases we're referring to those resets, so you'll often see a clock ID used
> > in conjection with the same reset ID for a given IP block.
> >
> > In addition to those peripheral resets, there are a number of extra resets
> > that don't have a corresponding clock and which are exposed in registers
> > outside of the peripheral banks, but still part of the CAR. To support
> > those "special" registers, the TEGRA*_RESET() is used to denote resets
> > outside of the regular peripheral resets. Essentially it defines the
> > offset
> > within the CAR at which special resets start. In the above case, Tegra114
> > has 5 banks with 32 peripheral resets each. The first special reset,
> > TEGRA114_RESET(0), therefore gets ID 5 * 32 + 0 = 160.
> >
> > Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> > Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
> > ---
> >
> > include/dt-bindings/reset/tegra114-car.h | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
> > create mode 100644 include/dt-bindings/reset/tegra114-car.h
> >
> > diff --git a/include/dt-bindings/reset/tegra114-car.h
> > b/include/dt-bindings/reset/tegra114-car.h new file mode 100644
> > index 000000000000..d7908d810ddf
> > --- /dev/null
> > +++ b/include/dt-bindings/reset/tegra114-car.h
>
> Still incorrectly named. Use full compatible, just like the other file
> where we already switched to recommended format (see also writing bindings).
>
> I asked for this at v1 and then reminded about unresolved comments at v3.
>
Ah, I guess you mean using 'nvidia,tegra114-car.h'? At least I hadn't realized
practice had changed to include the vendor prefix.
It can be said that 'tegra114-car.h' is also based on the compatible, so I
hadn't quite understood the original comment.
Mikko
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 0/4] clk: tegra: add DFLL support for Tegra114
2025-08-28 5:43 [PATCH v4 0/4] clk: tegra: add DFLL support for Tegra114 Svyatoslav Ryhel
` (3 preceding siblings ...)
2025-08-28 5:44 ` [PATCH v4 4/4] ARM: tegra: Add DFLL clock support " Svyatoslav Ryhel
@ 2025-08-28 14:26 ` Rob Herring (Arm)
4 siblings, 0 replies; 9+ messages in thread
From: Rob Herring (Arm) @ 2025-08-28 14:26 UTC (permalink / raw)
To: Svyatoslav Ryhel
Cc: Conor Dooley, linux-clk, Michael Turquette, Philipp Zabel,
Krzysztof Kozlowski, linux-tegra, Jonathan Hunter, Thierry Reding,
Stephen Boyd, Mikko Perttunen, devicetree, linux-kernel,
Prashant Gaikwad, Thierry Reding
On Thu, 28 Aug 2025 08:43:59 +0300, Svyatoslav Ryhel wrote:
> DFLL is a dedicated clock source for the Fast CPU. The DFLL is based on
> a ring oscillator and translates voltage changes into frequency
> compensation changes needed to prevent the CPU from failing and is
> essential for correct CPU frequency scaling.
>
> ---
> Changes in v2:
> - dropped 'drivers:' from commit title
> - aligned naming to Tegra114
>
> Changes in v3:
> - add DFLL support for Tegra 114 was split into dt header addition,
> DFLL reset configuration and CVB tables implementation.
> - added cleaner commit message to dt header commit
> - added T210_ prefixes to Tegra210 CVB table macros
>
> Changes in v4:
> - expanded commit message of car header adding commit
> ---
>
> Svyatoslav Ryhel (4):
> dt-bindings: reset: add Tegra114 car header
> clk: tegra: add DFLL DVCO reset control for Tegra114
> clk: tegra: dfll: add CVB tables for Tegra114
> ARM: tegra: Add DFLL clock support for Tegra114
>
> arch/arm/boot/dts/nvidia/tegra114.dtsi | 33 +++++
> drivers/clk/tegra/Kconfig | 2 +-
> drivers/clk/tegra/clk-tegra114.c | 30 +++-
> drivers/clk/tegra/clk-tegra124-dfll-fcpu.c | 158 +++++++++++++++++----
> drivers/clk/tegra/clk.h | 2 -
> include/dt-bindings/reset/tegra114-car.h | 13 ++
> 6 files changed, 204 insertions(+), 34 deletions(-)
> create mode 100644 include/dt-bindings/reset/tegra114-car.h
>
> --
> 2.48.1
>
>
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
This patch series was applied (using b4) to base:
Base: attempting to guess base-commit...
Base: tags/next-20250825 (best guess, 3/5 blobs matched)
If this is not the correct base, please add 'base-commit' tag
(or use b4 which does this automatically)
New warnings running 'make CHECK_DTBS=y for arch/arm/boot/dts/nvidia/' for 20250828054403.7112-1-clamor95@gmail.com:
arch/arm/boot/dts/nvidia/tegra114-tn7.dtb: /clock@70110000: failed to match any schema with compatible: ['nvidia,tegra114-dfll']
arch/arm/boot/dts/nvidia/tegra114-tn7.dtb: cpu@0 (arm,cortex-a15): 'operating-points' is a dependency of 'clock-latency'
from schema $id: http://devicetree.org/schemas/arm/cpus.yaml#
arch/arm/boot/dts/nvidia/tegra114-tn7.dtb: cpu@0 (arm,cortex-a15): Unevaluated properties are not allowed ('clock-latency' was unexpected)
from schema $id: http://devicetree.org/schemas/arm/cpus.yaml#
arch/arm/boot/dts/nvidia/tegra114-roth.dtb: /clock@70110000: failed to match any schema with compatible: ['nvidia,tegra114-dfll']
arch/arm/boot/dts/nvidia/tegra114-roth.dtb: cpu@0 (arm,cortex-a15): 'operating-points' is a dependency of 'clock-latency'
from schema $id: http://devicetree.org/schemas/arm/cpus.yaml#
arch/arm/boot/dts/nvidia/tegra114-roth.dtb: cpu@0 (arm,cortex-a15): Unevaluated properties are not allowed ('clock-latency' was unexpected)
from schema $id: http://devicetree.org/schemas/arm/cpus.yaml#
arch/arm/boot/dts/nvidia/tegra114-dalmore.dtb: /clock@70110000: failed to match any schema with compatible: ['nvidia,tegra114-dfll']
arch/arm/boot/dts/nvidia/tegra114-dalmore.dtb: cpu@0 (arm,cortex-a15): 'operating-points' is a dependency of 'clock-latency'
from schema $id: http://devicetree.org/schemas/arm/cpus.yaml#
arch/arm/boot/dts/nvidia/tegra114-dalmore.dtb: cpu@0 (arm,cortex-a15): Unevaluated properties are not allowed ('clock-latency' was unexpected)
from schema $id: http://devicetree.org/schemas/arm/cpus.yaml#
arch/arm/boot/dts/nvidia/tegra114-asus-tf701t.dtb: /clock@70110000: failed to match any schema with compatible: ['nvidia,tegra114-dfll']
arch/arm/boot/dts/nvidia/tegra114-asus-tf701t.dtb: cpu@0 (arm,cortex-a15): 'operating-points' is a dependency of 'clock-latency'
from schema $id: http://devicetree.org/schemas/arm/cpus.yaml#
arch/arm/boot/dts/nvidia/tegra114-asus-tf701t.dtb: cpu@0 (arm,cortex-a15): Unevaluated properties are not allowed ('clock-latency' was unexpected)
from schema $id: http://devicetree.org/schemas/arm/cpus.yaml#
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header
2025-08-28 7:50 ` Mikko Perttunen
@ 2025-08-29 7:29 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2025-08-29 7:29 UTC (permalink / raw)
To: Mikko Perttunen
Cc: Svyatoslav Ryhel, Thierry Reding, Thierry Reding, Jonathan Hunter,
Prashant Gaikwad, Michael Turquette, Stephen Boyd, Philipp Zabel,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
linux-tegra, linux-kernel, linux-clk
On Thu, Aug 28, 2025 at 04:50:03PM +0900, Mikko Perttunen wrote:
> > >
> > > include/dt-bindings/reset/tegra114-car.h | 13 +++++++++++++
> > > 1 file changed, 13 insertions(+)
> > > create mode 100644 include/dt-bindings/reset/tegra114-car.h
> > >
> > > diff --git a/include/dt-bindings/reset/tegra114-car.h
> > > b/include/dt-bindings/reset/tegra114-car.h new file mode 100644
> > > index 000000000000..d7908d810ddf
> > > --- /dev/null
> > > +++ b/include/dt-bindings/reset/tegra114-car.h
> >
> > Still incorrectly named. Use full compatible, just like the other file
> > where we already switched to recommended format (see also writing bindings).
> >
> > I asked for this at v1 and then reminded about unresolved comments at v3.
> >
>
> Ah, I guess you mean using 'nvidia,tegra114-car.h'? At least I hadn't realized
> practice had changed to include the vendor prefix.
That practice is VERY old. For example first patches from my subsystem
are around 2015. It is true, though, that we ask for this since 3-4
years. In the upstream Linux kernel 3-4 years is also very long time,
though...
>
> It can be said that 'tegra114-car.h' is also based on the compatible, so I
> hadn't quite understood the original comment.
With that approach "tegra114.h" or "t.h" is also based on the compatible.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-08-29 7:29 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-28 5:43 [PATCH v4 0/4] clk: tegra: add DFLL support for Tegra114 Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 1/4] dt-bindings: reset: add Tegra114 car header Svyatoslav Ryhel
2025-08-28 7:19 ` Krzysztof Kozlowski
2025-08-28 7:50 ` Mikko Perttunen
2025-08-29 7:29 ` Krzysztof Kozlowski
2025-08-28 5:44 ` [PATCH v4 2/4] clk: tegra: add DFLL DVCO reset control for Tegra114 Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 3/4] clk: tegra: dfll: add CVB tables " Svyatoslav Ryhel
2025-08-28 5:44 ` [PATCH v4 4/4] ARM: tegra: Add DFLL clock support " Svyatoslav Ryhel
2025-08-28 14:26 ` [PATCH v4 0/4] clk: tegra: add DFLL " Rob Herring (Arm)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).