[PATCH v4 0/7] Add AVS support for J721S2

This series adds support for AVS on J721S2.
AVS Test for J721S2: https://gist.github.com/manorit2001/b2fd9f6764a863294d4aa0755c83c84f Boot Test results: https://gist.github.com/manorit2001/15e45f6c421aeeb93effde023a537762
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- Changes in v4:
* Udit - Use the compatible for finding the node rather than alias. - Remove debug print - Add ret value in error prints
- Link to v3: https://lore.kernel.org/r/20240813-b4-upstream-j721s2-avs-v3-0-5115d93cdeb2@...
--- Manorit Chawdhry (7): power: pmic: tps65941: Add DM_PMIC dependency drivers: misc: k3_avs: Check return code while programming AVS arm: dts: k3-j7*-r5: Add MPU clock in clocks property drivers: misc: k3_avs: Extract MPU clk and dev ID from DT arm: mach-k3: j721s2_init: Initialize AVS Class 0 arm: dts: j721s2: Add VTM node in R5 configs: j721s2_evm_r5_defconfig: Add AVS Configs
arch/arm/dts/k3-am69-r5-sk.dts | 3 +- arch/arm/dts/k3-j7200-r5-common-proc-board.dts | 3 +- arch/arm/dts/k3-j721e-r5.dtsi | 3 +- arch/arm/dts/k3-j721s2-r5-common-proc-board.dts | 9 ++++++ arch/arm/dts/k3-j721s2-r5.dtsi | 3 +- arch/arm/dts/k3-j784s4-r5-evm.dts | 3 +- arch/arm/mach-k3/j721s2/j721s2_init.c | 10 +++++++ configs/am68_sk_r5_defconfig | 4 +++ configs/j721s2_evm_r5_defconfig | 6 ++++ drivers/misc/k3_avs.c | 40 ++++++++++++++++++++++++- drivers/power/pmic/Kconfig | 1 + 11 files changed, 79 insertions(+), 6 deletions(-) --- base-commit: 3a0b829efc35227b1079a444f00e0729502197ad change-id: 20240130-b4-upstream-j721s2-avs-8c187d3fe26a
Best regards,

This Kconfig depends on DM_PMIC but hadn't be explicitly stated which could cause config related issues.
Adds the dependency in Kconfig for tps65941.
Fixes: 6b86dd0c1ead ("power: pmic: tps65941: Add support for tps65941 family of PMICs") Reviewed-by: Neha Malcom Francis n-francis@ti.com Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- drivers/power/pmic/Kconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/power/pmic/Kconfig b/drivers/power/pmic/Kconfig index 562c1a3b122a..bbcbcee4c355 100644 --- a/drivers/power/pmic/Kconfig +++ b/drivers/power/pmic/Kconfig @@ -394,6 +394,7 @@ config SPL_PMIC_LP87565
config PMIC_TPS65941 bool "Enable driver for Texas Instruments TPS65941 PMIC" + depends on DM_PMIC help The TPS65941 is a PMIC containing a bunch of SMPS & LDOs. This driver binds the pmic children.

Check if AVS could not be programmed and print a warning.
Fixes: 9d233b4e3ed6 ("misc: k3_avs: add driver for K3 Adaptive Voltage Scaling Class 0") Reviewed-by: Udit Kumar u-kumar1@ti.com Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com ---
Notes: v4: Pick the following change from v2, had gotten missed. https://lore.kernel.org/all/fa14fd9c-2b6f-4a09-ab2f-01d90106cd2b@ti.com/
drivers/misc/k3_avs.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/k3_avs.c b/drivers/misc/k3_avs.c index 87471cc3b16a..66ad747f2dd8 100644 --- a/drivers/misc/k3_avs.c +++ b/drivers/misc/k3_avs.c @@ -391,7 +391,10 @@ static int k3_avs_probe(struct udevice *dev) if (vd->flags & VD_FLAG_INIT_DONE) continue;
- k3_avs_program_voltage(priv, vd, vd->opp); + ret = k3_avs_program_voltage(priv, vd, vd->opp); + if (ret) + dev_warn(dev, "Could not program AVS voltage for VD%d, vd->opp=%d, ret=%d\n", + vd->id, vd->opp, ret); }
if (!device_is_compatible(priv->dev, "ti,am654-avs"))

MPU clock had been missing. Distinguish multiple clocks with clock-names and add MPU clock as well.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- arch/arm/dts/k3-am69-r5-sk.dts | 3 ++- arch/arm/dts/k3-j7200-r5-common-proc-board.dts | 3 ++- arch/arm/dts/k3-j721e-r5.dtsi | 3 ++- arch/arm/dts/k3-j721s2-r5.dtsi | 3 ++- arch/arm/dts/k3-j784s4-r5-evm.dts | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/arch/arm/dts/k3-am69-r5-sk.dts b/arch/arm/dts/k3-am69-r5-sk.dts index 4d6aab5ccc38..13809f82d99a 100644 --- a/arch/arm/dts/k3-am69-r5-sk.dts +++ b/arch/arm/dts/k3-am69-r5-sk.dts @@ -26,7 +26,8 @@ power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>; - clocks = <&k3_clks 61 0>; + clocks = <&k3_clks 61 0>, <&k3_clks 202 0>; + clock-names = "gtc", "core"; assigned-clocks = <&k3_clks 61 0>, <&k3_clks 202 0>; assigned-clock-parents = <&k3_clks 61 2>; assigned-clock-rates = <200000000>, <2000000000>; diff --git a/arch/arm/dts/k3-j7200-r5-common-proc-board.dts b/arch/arm/dts/k3-j7200-r5-common-proc-board.dts index 94760c78dd35..f8df14935dbc 100644 --- a/arch/arm/dts/k3-j7200-r5-common-proc-board.dts +++ b/arch/arm/dts/k3-j7200-r5-common-proc-board.dts @@ -23,7 +23,8 @@ <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 4 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>; - clocks = <&k3_clks 61 1>; + clocks = <&k3_clks 61 1>, <&k3_clks 202 2>; + clock-names = "gtc", "core"; assigned-clocks = <&k3_clks 202 2>, <&k3_clks 61 1>, <&k3_clks 323 0>; assigned-clock-parents= <0>, <0>, <&k3_clks 323 2>; assigned-clock-rates = <2000000000>, <200000000>; diff --git a/arch/arm/dts/k3-j721e-r5.dtsi b/arch/arm/dts/k3-j721e-r5.dtsi index fd0d921272c5..688a6cf40892 100644 --- a/arch/arm/dts/k3-j721e-r5.dtsi +++ b/arch/arm/dts/k3-j721e-r5.dtsi @@ -20,7 +20,8 @@ <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 4 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>; - clocks = <&k3_clks 61 1>; + clocks = <&k3_clks 61 1>, <&k3_clks 202 2>; + clock-names = "gtc", "core"; assigned-clocks = <&k3_clks 202 2>, <&k3_clks 61 1>; assigned-clock-rates = <2000000000>, <200000000>; ti,sci = <&dmsc>; diff --git a/arch/arm/dts/k3-j721s2-r5.dtsi b/arch/arm/dts/k3-j721s2-r5.dtsi index caf696c2d960..634676c8491e 100644 --- a/arch/arm/dts/k3-j721s2-r5.dtsi +++ b/arch/arm/dts/k3-j721s2-r5.dtsi @@ -20,7 +20,8 @@ <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 4 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>; - clocks = <&k3_clks 61 1>; + clocks = <&k3_clks 61 1>, <&k3_clks 202 0>; + clock-names = "gtc", "core"; assigned-clocks = <&k3_clks 61 1>, <&k3_clks 202 0>; assigned-clock-parents = <&k3_clks 61 3>; assigned-clock-rates = <200000000>, <2000000000>; diff --git a/arch/arm/dts/k3-j784s4-r5-evm.dts b/arch/arm/dts/k3-j784s4-r5-evm.dts index d2c752293630..8b8b0e70047e 100644 --- a/arch/arm/dts/k3-j784s4-r5-evm.dts +++ b/arch/arm/dts/k3-j784s4-r5-evm.dts @@ -26,7 +26,8 @@ power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>; - clocks = <&k3_clks 61 0>; + clocks = <&k3_clks 61 0>, <&k3_clks 202 0>; + clock-names = "gtc", "core"; assigned-clocks = <&k3_clks 61 0>, <&k3_clks 202 0>; assigned-clock-parents = <&k3_clks 61 2>; assigned-clock-rates = <200000000>, <2000000000>;

On 11:54-20241004, Manorit Chawdhry wrote:
MPU clock had been missing. Distinguish multiple clocks with clock-names and add MPU clock as well.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
We have been a bit hacky with GTC - do we want to pull it out as a separate IP?
arch/arm/dts/k3-am69-r5-sk.dts | 3 ++- arch/arm/dts/k3-j7200-r5-common-proc-board.dts | 3 ++- arch/arm/dts/k3-j721e-r5.dtsi | 3 ++- arch/arm/dts/k3-j721s2-r5.dtsi | 3 ++- arch/arm/dts/k3-j784s4-r5-evm.dts | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-)
What about other boards? I think it might be time we refactor r5 view as a include file?
diff --git a/arch/arm/dts/k3-am69-r5-sk.dts b/arch/arm/dts/k3-am69-r5-sk.dts index 4d6aab5ccc38..13809f82d99a 100644 --- a/arch/arm/dts/k3-am69-r5-sk.dts +++ b/arch/arm/dts/k3-am69-r5-sk.dts @@ -26,7 +26,8 @@ power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>;
clocks = <&k3_clks 61 0>;
clocks = <&k3_clks 61 0>, <&k3_clks 202 0>;
assigned-clocks = <&k3_clks 61 0>, <&k3_clks 202 0>; assigned-clock-parents = <&k3_clks 61 2>; assigned-clock-rates = <200000000>, <2000000000>;clock-names = "gtc", "core";
diff --git a/arch/arm/dts/k3-j7200-r5-common-proc-board.dts b/arch/arm/dts/k3-j7200-r5-common-proc-board.dts index 94760c78dd35..f8df14935dbc 100644 --- a/arch/arm/dts/k3-j7200-r5-common-proc-board.dts +++ b/arch/arm/dts/k3-j7200-r5-common-proc-board.dts @@ -23,7 +23,8 @@ <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 4 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>;
clocks = <&k3_clks 61 1>;
clocks = <&k3_clks 61 1>, <&k3_clks 202 2>;
assigned-clocks = <&k3_clks 202 2>, <&k3_clks 61 1>, <&k3_clks 323 0>; assigned-clock-parents= <0>, <0>, <&k3_clks 323 2>; assigned-clock-rates = <2000000000>, <200000000>;clock-names = "gtc", "core";
diff --git a/arch/arm/dts/k3-j721e-r5.dtsi b/arch/arm/dts/k3-j721e-r5.dtsi index fd0d921272c5..688a6cf40892 100644 --- a/arch/arm/dts/k3-j721e-r5.dtsi +++ b/arch/arm/dts/k3-j721e-r5.dtsi @@ -20,7 +20,8 @@ <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 4 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>;
clocks = <&k3_clks 61 1>;
clocks = <&k3_clks 61 1>, <&k3_clks 202 2>;
assigned-clocks = <&k3_clks 202 2>, <&k3_clks 61 1>; assigned-clock-rates = <2000000000>, <200000000>; ti,sci = <&dmsc>;clock-names = "gtc", "core";
diff --git a/arch/arm/dts/k3-j721s2-r5.dtsi b/arch/arm/dts/k3-j721s2-r5.dtsi index caf696c2d960..634676c8491e 100644 --- a/arch/arm/dts/k3-j721s2-r5.dtsi +++ b/arch/arm/dts/k3-j721s2-r5.dtsi @@ -20,7 +20,8 @@ <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 4 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>;
clocks = <&k3_clks 61 1>;
clocks = <&k3_clks 61 1>, <&k3_clks 202 0>;
assigned-clocks = <&k3_clks 61 1>, <&k3_clks 202 0>; assigned-clock-parents = <&k3_clks 61 3>; assigned-clock-rates = <200000000>, <2000000000>;clock-names = "gtc", "core";
diff --git a/arch/arm/dts/k3-j784s4-r5-evm.dts b/arch/arm/dts/k3-j784s4-r5-evm.dts index d2c752293630..8b8b0e70047e 100644 --- a/arch/arm/dts/k3-j784s4-r5-evm.dts +++ b/arch/arm/dts/k3-j784s4-r5-evm.dts @@ -26,7 +26,8 @@ power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>, <&k3_pds 202 TI_SCI_PD_EXCLUSIVE>; resets = <&k3_reset 202 0>;
clocks = <&k3_clks 61 0>;
clocks = <&k3_clks 61 0>, <&k3_clks 202 0>;
assigned-clocks = <&k3_clks 61 0>, <&k3_clks 202 0>; assigned-clock-parents = <&k3_clks 61 2>; assigned-clock-rates = <200000000>, <2000000000>;clock-names = "gtc", "core";
-- 2.46.0

Hi Nishanth,
On 06:30-20241004, Nishanth Menon wrote:
On 11:54-20241004, Manorit Chawdhry wrote:
MPU clock had been missing. Distinguish multiple clocks with clock-names and add MPU clock as well.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
We have been a bit hacky with GTC - do we want to pull it out as a separate IP?
Could you explain it a bit more..
arch/arm/dts/k3-am69-r5-sk.dts | 3 ++- arch/arm/dts/k3-j7200-r5-common-proc-board.dts | 3 ++- arch/arm/dts/k3-j721e-r5.dtsi | 3 ++- arch/arm/dts/k3-j721s2-r5.dtsi | 3 ++- arch/arm/dts/k3-j784s4-r5-evm.dts | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-)
What about other boards? I think it might be time we refactor r5 view as a include file?
Yeah, that makes sense. Will update the other boards with the following.
R5 is already include file for j721e and j721s2, other boards do require that refactor but that can be taken up as a separate series ig.
Regards, Manorit

On 11:18-20241007, Manorit Chawdhry wrote:
Hi Nishanth,
On 06:30-20241004, Nishanth Menon wrote:
On 11:54-20241004, Manorit Chawdhry wrote:
MPU clock had been missing. Distinguish multiple clocks with clock-names and add MPU clock as well.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
We have been a bit hacky with GTC - do we want to pull it out as a separate IP?
Could you explain it a bit more..
I was thinking more like GTC as a device node by itself. I am a bit split about the actual benefit of doing so, though..

Different devices have different MPU clk and dev ID. Currently it had been hardcoded. Move it to DT based extraction.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- drivers/misc/k3_avs.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
diff --git a/drivers/misc/k3_avs.c b/drivers/misc/k3_avs.c index 66ad747f2dd8..99a18a109b7c 100644 --- a/drivers/misc/k3_avs.c +++ b/drivers/misc/k3_avs.c @@ -352,6 +352,9 @@ static int k3_avs_probe(struct udevice *dev) struct k3_avs_privdata *priv; struct vd_data *vd; int ret; + ofnode node; + struct ofnode_phandle_args phandle_args; + int i = 0;
priv = dev_get_priv(dev); priv->dev = dev; @@ -367,6 +370,32 @@ static int k3_avs_probe(struct udevice *dev) return -ENODEV;
for (vd = priv->vd_config->vds; vd->id >= 0; vd++) { + /* Get the clock and dev id for Jacinto platforms */ + if (vd->id == J721E_VDD_MPU) { + node = ofnode_by_compatible(ofnode_null(), "ti,am654-rproc"); + if (!ofnode_valid(node)) + return -ENODEV; + + i = ofnode_stringlist_search(node, "clock-names", "core"); + if (i < 0) + return -ENODEV; + + ret = ofnode_parse_phandle_with_args(node, "clocks", + "#clock-cells", + 0, i, + &phandle_args); + if (ret) { + printf("Couldn't get the clock node, ret = %d\n", ret); + return ret; + } + + vd->dev_id = phandle_args.args[0]; + vd->clk_id = phandle_args.args[1]; + + debug("%s: MPU dev_id: %d, clk_id: %d", __func__, + vd->dev_id, vd->clk_id); + } + if (!(readl(AM6_VTM_DEVINFO(vd->id)) & AM6_VTM_AVS0_SUPPORTED)) { dev_warn(dev, "AVS-class 0 not supported for VD%d\n", @@ -463,6 +492,12 @@ static struct vd_data j721e_vd_data[] = { { .id = J721E_VDD_MPU, .opp = AM6_OPP_NOM, + /* + * XXX: DEPRECATION WARNING: Around 2 u-boot versions + * + * These values will be picked up from DT, kept for backward + * compatibility + */ .dev_id = 202, /* J721E_DEV_A72SS0_CORE0 */ .clk_id = 2, /* ARM clock */ .opps = {

Initialize AVS Class 0.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- arch/arm/mach-k3/j721s2/j721s2_init.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/arch/arm/mach-k3/j721s2/j721s2_init.c b/arch/arm/mach-k3/j721s2/j721s2_init.c index 05453fcad41a..5f5961a2c17a 100644 --- a/arch/arm/mach-k3/j721s2/j721s2_init.c +++ b/arch/arm/mach-k3/j721s2/j721s2_init.c @@ -315,6 +315,9 @@ void do_dt_magic(void) #ifdef CONFIG_SPL_BUILD void board_init_f(ulong dummy) { + struct udevice *dev; + int ret; + k3_spl_init(); #if defined(CONFIG_SPL_OF_LIST) && defined(CONFIG_TI_I2C_BOARD_DETECT) do_dt_magic(); @@ -325,6 +328,13 @@ void board_init_f(ulong dummy) setup_navss_nb();
setup_qos(); + + if (IS_ENABLED(CONFIG_CPU_V7R) && IS_ENABLED(CONFIG_K3_AVS0)) { + ret = uclass_get_device_by_driver(UCLASS_MISC, DM_DRIVER_GET(k3_avs), + &dev); + if (ret) + printf("AVS init failed: %d\n", ret); + } } #endif

Add bootph-pre-ram property to VTM node and the pmic node.
Reviewed-by: Udit Kumar u-kumar1@ti.com Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com ---
Notes: Patches are posted to Linux [0]
[0]: https://lore.kernel.org/linux-arm-kernel/20240814-b4-upstream-bootph-all-v4-...
arch/arm/dts/k3-j721s2-r5-common-proc-board.dts | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/arch/arm/dts/k3-j721s2-r5-common-proc-board.dts b/arch/arm/dts/k3-j721s2-r5-common-proc-board.dts index e92b1917df4e..506ad9b7910d 100644 --- a/arch/arm/dts/k3-j721s2-r5-common-proc-board.dts +++ b/arch/arm/dts/k3-j721s2-r5-common-proc-board.dts @@ -10,3 +10,12 @@ #include "k3-j721s2-ddr.dtsi" #include "k3-j721s2-common-proc-board-u-boot.dtsi" #include "k3-j721s2-r5.dtsi" + +&tps659411 { + bootph-pre-ram; +}; + +&wkup_vtm0 { + bootph-pre-ram; + vdd-supply-2 = <&bucka1234>; +};

Add AVS and PMIC regulator configs
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- configs/am68_sk_r5_defconfig | 4 ++++ configs/j721s2_evm_r5_defconfig | 6 ++++++ 2 files changed, 10 insertions(+)
diff --git a/configs/am68_sk_r5_defconfig b/configs/am68_sk_r5_defconfig index e9b6882c1f68..f4800ef1b8ac 100644 --- a/configs/am68_sk_r5_defconfig +++ b/configs/am68_sk_r5_defconfig @@ -5,6 +5,10 @@ CONFIG_ARCH_K3=y CONFIG_SOC_K3_J721S2=y CONFIG_TARGET_J721S2_R5_EVM=y
+CONFIG_K3_AVS0=n +CONFIG_DM_REGULATOR_TPS65941=n +CONFIG_PMIC_TPS65941=n + CONFIG_DEFAULT_DEVICE_TREE="k3-am68-sk-r5-base-board" CONFIG_SPL_OF_LIST="k3-am68-sk-r5-base-board" CONFIG_OF_LIST="k3-am68-sk-r5-base-board" diff --git a/configs/j721s2_evm_r5_defconfig b/configs/j721s2_evm_r5_defconfig index b6adb6a77d7e..ad7653c8f99b 100644 --- a/configs/j721s2_evm_r5_defconfig +++ b/configs/j721s2_evm_r5_defconfig @@ -112,6 +112,7 @@ CONFIG_DM_MAILBOX=y CONFIG_K3_SEC_PROXY=y CONFIG_FS_LOADER=y CONFIG_SPL_FS_LOADER=y +CONFIG_K3_AVS0=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_SPL_MMC_HS400_SUPPORT=y CONFIG_MMC_SDHCI=y @@ -141,6 +142,11 @@ CONFIG_SPL_PINCTRL=y CONFIG_PINCTRL_SINGLE=y CONFIG_POWER_DOMAIN=y CONFIG_TI_POWER_DOMAIN=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_TPS65941=y +CONFIG_DM_REGULATOR=y +CONFIG_SPL_DM_REGULATOR=y +CONFIG_DM_REGULATOR_TPS65941=y CONFIG_K3_SYSTEM_CONTROLLER=y CONFIG_REMOTEPROC_TI_K3_ARM64=y CONFIG_RESET_TI_SCI=y

On 11:54-20241004, Manorit Chawdhry wrote:
Add AVS and PMIC regulator configs
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
configs/am68_sk_r5_defconfig | 4 ++++ configs/j721s2_evm_r5_defconfig | 6 ++++++ 2 files changed, 10 insertions(+)
diff --git a/configs/am68_sk_r5_defconfig b/configs/am68_sk_r5_defconfig index e9b6882c1f68..f4800ef1b8ac 100644 --- a/configs/am68_sk_r5_defconfig +++ b/configs/am68_sk_r5_defconfig @@ -5,6 +5,10 @@ CONFIG_ARCH_K3=y CONFIG_SOC_K3_J721S2=y CONFIG_TARGET_J721S2_R5_EVM=y
+CONFIG_K3_AVS0=n +CONFIG_DM_REGULATOR_TPS65941=n +CONFIG_PMIC_TPS65941=n
CONFIG_DEFAULT_DEVICE_TREE="k3-am68-sk-r5-base-board" CONFIG_SPL_OF_LIST="k3-am68-sk-r5-base-board" CONFIG_OF_LIST="k3-am68-sk-r5-base-board" diff --git a/configs/j721s2_evm_r5_defconfig b/configs/j721s2_evm_r5_defconfig index b6adb6a77d7e..ad7653c8f99b 100644 --- a/configs/j721s2_evm_r5_defconfig +++ b/configs/j721s2_evm_r5_defconfig @@ -112,6 +112,7 @@ CONFIG_DM_MAILBOX=y CONFIG_K3_SEC_PROXY=y CONFIG_FS_LOADER=y CONFIG_SPL_FS_LOADER=y +CONFIG_K3_AVS0=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_SPL_MMC_HS400_SUPPORT=y CONFIG_MMC_SDHCI=y @@ -141,6 +142,11 @@ CONFIG_SPL_PINCTRL=y CONFIG_PINCTRL_SINGLE=y CONFIG_POWER_DOMAIN=y CONFIG_TI_POWER_DOMAIN=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_TPS65941=y +CONFIG_DM_REGULATOR=y +CONFIG_SPL_DM_REGULATOR=y +CONFIG_DM_REGULATOR_TPS65941=y CONFIG_K3_SYSTEM_CONTROLLER=y CONFIG_REMOTEPROC_TI_K3_ARM64=y CONFIG_RESET_TI_SCI=y
Why are we mixing two different boards?

Hi Nishanth,
On 06:30-20241004, Nishanth Menon wrote:
On 11:54-20241004, Manorit Chawdhry wrote:
Add AVS and PMIC regulator configs
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
configs/am68_sk_r5_defconfig | 4 ++++ configs/j721s2_evm_r5_defconfig | 6 ++++++ 2 files changed, 10 insertions(+)
diff --git a/configs/am68_sk_r5_defconfig b/configs/am68_sk_r5_defconfig index e9b6882c1f68..f4800ef1b8ac 100644 --- a/configs/am68_sk_r5_defconfig +++ b/configs/am68_sk_r5_defconfig @@ -5,6 +5,10 @@ CONFIG_ARCH_K3=y CONFIG_SOC_K3_J721S2=y CONFIG_TARGET_J721S2_R5_EVM=y
+CONFIG_K3_AVS0=n +CONFIG_DM_REGULATOR_TPS65941=n +CONFIG_PMIC_TPS65941=n
CONFIG_DEFAULT_DEVICE_TREE="k3-am68-sk-r5-base-board" CONFIG_SPL_OF_LIST="k3-am68-sk-r5-base-board" CONFIG_OF_LIST="k3-am68-sk-r5-base-board" diff --git a/configs/j721s2_evm_r5_defconfig b/configs/j721s2_evm_r5_defconfig index b6adb6a77d7e..ad7653c8f99b 100644 --- a/configs/j721s2_evm_r5_defconfig +++ b/configs/j721s2_evm_r5_defconfig @@ -112,6 +112,7 @@ CONFIG_DM_MAILBOX=y CONFIG_K3_SEC_PROXY=y CONFIG_FS_LOADER=y CONFIG_SPL_FS_LOADER=y +CONFIG_K3_AVS0=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_SPL_MMC_HS400_SUPPORT=y CONFIG_MMC_SDHCI=y @@ -141,6 +142,11 @@ CONFIG_SPL_PINCTRL=y CONFIG_PINCTRL_SINGLE=y CONFIG_POWER_DOMAIN=y CONFIG_TI_POWER_DOMAIN=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_TPS65941=y +CONFIG_DM_REGULATOR=y +CONFIG_SPL_DM_REGULATOR=y +CONFIG_DM_REGULATOR_TPS65941=y CONFIG_K3_SYSTEM_CONTROLLER=y CONFIG_REMOTEPROC_TI_K3_ARM64=y CONFIG_RESET_TI_SCI=y
Why are we mixing two different boards?
AM68 includes J721s2 defconfig for re-usability so if some board related feature is being enabled on J721s2, that needs to be taken care that it doesn't get enabled on AM68 if it doesn't support.
Regards, Manorit
-- Regards, Nishanth Menon Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D

On 11:34-20241007, Manorit Chawdhry wrote:
Hi Nishanth,
On 06:30-20241004, Nishanth Menon wrote:
On 11:54-20241004, Manorit Chawdhry wrote:
Add AVS and PMIC regulator configs
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
configs/am68_sk_r5_defconfig | 4 ++++ configs/j721s2_evm_r5_defconfig | 6 ++++++ 2 files changed, 10 insertions(+)
diff --git a/configs/am68_sk_r5_defconfig b/configs/am68_sk_r5_defconfig index e9b6882c1f68..f4800ef1b8ac 100644 --- a/configs/am68_sk_r5_defconfig +++ b/configs/am68_sk_r5_defconfig @@ -5,6 +5,10 @@ CONFIG_ARCH_K3=y CONFIG_SOC_K3_J721S2=y CONFIG_TARGET_J721S2_R5_EVM=y
+CONFIG_K3_AVS0=n +CONFIG_DM_REGULATOR_TPS65941=n +CONFIG_PMIC_TPS65941=n
CONFIG_DEFAULT_DEVICE_TREE="k3-am68-sk-r5-base-board" CONFIG_SPL_OF_LIST="k3-am68-sk-r5-base-board" CONFIG_OF_LIST="k3-am68-sk-r5-base-board" diff --git a/configs/j721s2_evm_r5_defconfig b/configs/j721s2_evm_r5_defconfig index b6adb6a77d7e..ad7653c8f99b 100644 --- a/configs/j721s2_evm_r5_defconfig +++ b/configs/j721s2_evm_r5_defconfig @@ -112,6 +112,7 @@ CONFIG_DM_MAILBOX=y CONFIG_K3_SEC_PROXY=y CONFIG_FS_LOADER=y CONFIG_SPL_FS_LOADER=y +CONFIG_K3_AVS0=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_SPL_MMC_HS400_SUPPORT=y CONFIG_MMC_SDHCI=y @@ -141,6 +142,11 @@ CONFIG_SPL_PINCTRL=y CONFIG_PINCTRL_SINGLE=y CONFIG_POWER_DOMAIN=y CONFIG_TI_POWER_DOMAIN=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_TPS65941=y +CONFIG_DM_REGULATOR=y +CONFIG_SPL_DM_REGULATOR=y +CONFIG_DM_REGULATOR_TPS65941=y CONFIG_K3_SYSTEM_CONTROLLER=y CONFIG_REMOTEPROC_TI_K3_ARM64=y CONFIG_RESET_TI_SCI=y
Why are we mixing two different boards?
AM68 includes J721s2 defconfig for re-usability so if some board related feature is being enabled on J721s2, that needs to be taken care that it doesn't get enabled on AM68 if it doesn't support.
Board related in the sense that AVS requires PMIC support but that isn't available yet so can't add the support for the same.
Regards, Manorit
Regards, Manorit
-- Regards, Nishanth Menon Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D

On 11:35-20241007, Manorit Chawdhry wrote:
On 11:34-20241007, Manorit Chawdhry wrote:
Hi Nishanth,
On 06:30-20241004, Nishanth Menon wrote:
On 11:54-20241004, Manorit Chawdhry wrote:
Add AVS and PMIC regulator configs
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
configs/am68_sk_r5_defconfig | 4 ++++ configs/j721s2_evm_r5_defconfig | 6 ++++++ 2 files changed, 10 insertions(+)
diff --git a/configs/am68_sk_r5_defconfig b/configs/am68_sk_r5_defconfig index e9b6882c1f68..f4800ef1b8ac 100644 --- a/configs/am68_sk_r5_defconfig +++ b/configs/am68_sk_r5_defconfig @@ -5,6 +5,10 @@ CONFIG_ARCH_K3=y CONFIG_SOC_K3_J721S2=y CONFIG_TARGET_J721S2_R5_EVM=y
+CONFIG_K3_AVS0=n +CONFIG_DM_REGULATOR_TPS65941=n +CONFIG_PMIC_TPS65941=n
CONFIG_DEFAULT_DEVICE_TREE="k3-am68-sk-r5-base-board" CONFIG_SPL_OF_LIST="k3-am68-sk-r5-base-board" CONFIG_OF_LIST="k3-am68-sk-r5-base-board" diff --git a/configs/j721s2_evm_r5_defconfig b/configs/j721s2_evm_r5_defconfig index b6adb6a77d7e..ad7653c8f99b 100644 --- a/configs/j721s2_evm_r5_defconfig +++ b/configs/j721s2_evm_r5_defconfig @@ -112,6 +112,7 @@ CONFIG_DM_MAILBOX=y CONFIG_K3_SEC_PROXY=y CONFIG_FS_LOADER=y CONFIG_SPL_FS_LOADER=y +CONFIG_K3_AVS0=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_SPL_MMC_HS400_SUPPORT=y CONFIG_MMC_SDHCI=y @@ -141,6 +142,11 @@ CONFIG_SPL_PINCTRL=y CONFIG_PINCTRL_SINGLE=y CONFIG_POWER_DOMAIN=y CONFIG_TI_POWER_DOMAIN=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_TPS65941=y +CONFIG_DM_REGULATOR=y +CONFIG_SPL_DM_REGULATOR=y +CONFIG_DM_REGULATOR_TPS65941=y CONFIG_K3_SYSTEM_CONTROLLER=y CONFIG_REMOTEPROC_TI_K3_ARM64=y CONFIG_RESET_TI_SCI=y
Why are we mixing two different boards?
AM68 includes J721s2 defconfig for re-usability so if some board related feature is being enabled on J721s2, that needs to be taken care that it doesn't get enabled on AM68 if it doesn't support.
Board related in the sense that AVS requires PMIC support but that isn't available yet so can't add the support for the same.
The commit message definitely needs to be updated to the effect.

Hi Manorit,
On Fri, 4 Oct 2024 at 00:24, Manorit Chawdhry m-chawdhry@ti.com wrote:
This series adds support for AVS on J721S2.
What is AVS? You should write an abbreviation out in full at least once in the series.
AVS Test for J721S2: https://gist.github.com/manorit2001/b2fd9f6764a863294d4aa0755c83c84f Boot Test results: https://gist.github.com/manorit2001/15e45f6c421aeeb93effde023a537762
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
Changes in v4:
- Udit
Use the compatible for finding the node rather than alias.
Remove debug print
Add ret value in error prints
Link to v3: https://lore.kernel.org/r/20240813-b4-upstream-j721s2-avs-v3-0-5115d93cdeb2@...
Manorit Chawdhry (7): power: pmic: tps65941: Add DM_PMIC dependency drivers: misc: k3_avs: Check return code while programming AVS arm: dts: k3-j7*-r5: Add MPU clock in clocks property drivers: misc: k3_avs: Extract MPU clk and dev ID from DT arm: mach-k3: j721s2_init: Initialize AVS Class 0 arm: dts: j721s2: Add VTM node in R5 configs: j721s2_evm_r5_defconfig: Add AVS Configs
arch/arm/dts/k3-am69-r5-sk.dts | 3 +- arch/arm/dts/k3-j7200-r5-common-proc-board.dts | 3 +- arch/arm/dts/k3-j721e-r5.dtsi | 3 +- arch/arm/dts/k3-j721s2-r5-common-proc-board.dts | 9 ++++++ arch/arm/dts/k3-j721s2-r5.dtsi | 3 +- arch/arm/dts/k3-j784s4-r5-evm.dts | 3 +- arch/arm/mach-k3/j721s2/j721s2_init.c | 10 +++++++ configs/am68_sk_r5_defconfig | 4 +++ configs/j721s2_evm_r5_defconfig | 6 ++++ drivers/misc/k3_avs.c | 40 ++++++++++++++++++++++++- drivers/power/pmic/Kconfig | 1 + 11 files changed, 79 insertions(+), 6 deletions(-)
base-commit: 3a0b829efc35227b1079a444f00e0729502197ad change-id: 20240130-b4-upstream-j721s2-avs-8c187d3fe26a
Best regards,
Manorit Chawdhry m-chawdhry@ti.com
Regards, Simon

Hi Simon,
On 09:23-20241007, Simon Glass wrote:
Hi Manorit,
On Fri, 4 Oct 2024 at 00:24, Manorit Chawdhry m-chawdhry@ti.com wrote:
This series adds support for AVS on J721S2.
What is AVS? You should write an abbreviation out in full at least once in the series.
Totally missed this part, let me take that up in the next revision!
But basically it is Adaptive voltage scaling. This allows us to run our CPU with the optimal voltage for that particular silicon which would have been written in efuse during manufacturing itself. This helps in saving power during runtime [0]
[0]: https://www.ti.com/lit/pdf/spruj28 (Section 5.2.4.1 AVS Support)
Regards, Manorit
AVS Test for J721S2: https://gist.github.com/manorit2001/b2fd9f6764a863294d4aa0755c83c84f Boot Test results: https://gist.github.com/manorit2001/15e45f6c421aeeb93effde023a537762
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
Changes in v4:
- Udit
Use the compatible for finding the node rather than alias.
Remove debug print
Add ret value in error prints
Link to v3: https://lore.kernel.org/r/20240813-b4-upstream-j721s2-avs-v3-0-5115d93cdeb2@...
Manorit Chawdhry (7): power: pmic: tps65941: Add DM_PMIC dependency drivers: misc: k3_avs: Check return code while programming AVS arm: dts: k3-j7*-r5: Add MPU clock in clocks property drivers: misc: k3_avs: Extract MPU clk and dev ID from DT arm: mach-k3: j721s2_init: Initialize AVS Class 0 arm: dts: j721s2: Add VTM node in R5 configs: j721s2_evm_r5_defconfig: Add AVS Configs
arch/arm/dts/k3-am69-r5-sk.dts | 3 +- arch/arm/dts/k3-j7200-r5-common-proc-board.dts | 3 +- arch/arm/dts/k3-j721e-r5.dtsi | 3 +- arch/arm/dts/k3-j721s2-r5-common-proc-board.dts | 9 ++++++ arch/arm/dts/k3-j721s2-r5.dtsi | 3 +- arch/arm/dts/k3-j784s4-r5-evm.dts | 3 +- arch/arm/mach-k3/j721s2/j721s2_init.c | 10 +++++++ configs/am68_sk_r5_defconfig | 4 +++ configs/j721s2_evm_r5_defconfig | 6 ++++ drivers/misc/k3_avs.c | 40 ++++++++++++++++++++++++- drivers/power/pmic/Kconfig | 1 + 11 files changed, 79 insertions(+), 6 deletions(-)
base-commit: 3a0b829efc35227b1079a444f00e0729502197ad change-id: 20240130-b4-upstream-j721s2-avs-8c187d3fe26a
Best regards,
Manorit Chawdhry m-chawdhry@ti.com
Regards, Simon

Hi Manorit,
On Mon, 7 Oct 2024 at 22:48, Manorit Chawdhry m-chawdhry@ti.com wrote:
Hi Simon,
On 09:23-20241007, Simon Glass wrote:
Hi Manorit,
On Fri, 4 Oct 2024 at 00:24, Manorit Chawdhry m-chawdhry@ti.com wrote:
This series adds support for AVS on J721S2.
What is AVS? You should write an abbreviation out in full at least once in the series.
Totally missed this part, let me take that up in the next revision!
But basically it is Adaptive voltage scaling. This allows us to run our CPU with the optimal voltage for that particular silicon which would have been written in efuse during manufacturing itself. This helps in saving power during runtime [0]
OK thank you.
Regards, Simon
Regards, Manorit
AVS Test for J721S2: https://gist.github.com/manorit2001/b2fd9f6764a863294d4aa0755c83c84f Boot Test results: https://gist.github.com/manorit2001/15e45f6c421aeeb93effde023a537762
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
Changes in v4:
- Udit
Use the compatible for finding the node rather than alias.
Remove debug print
Add ret value in error prints
Link to v3: https://lore.kernel.org/r/20240813-b4-upstream-j721s2-avs-v3-0-5115d93cdeb2@...
Manorit Chawdhry (7): power: pmic: tps65941: Add DM_PMIC dependency drivers: misc: k3_avs: Check return code while programming AVS arm: dts: k3-j7*-r5: Add MPU clock in clocks property drivers: misc: k3_avs: Extract MPU clk and dev ID from DT arm: mach-k3: j721s2_init: Initialize AVS Class 0 arm: dts: j721s2: Add VTM node in R5 configs: j721s2_evm_r5_defconfig: Add AVS Configs
arch/arm/dts/k3-am69-r5-sk.dts | 3 +- arch/arm/dts/k3-j7200-r5-common-proc-board.dts | 3 +- arch/arm/dts/k3-j721e-r5.dtsi | 3 +- arch/arm/dts/k3-j721s2-r5-common-proc-board.dts | 9 ++++++ arch/arm/dts/k3-j721s2-r5.dtsi | 3 +- arch/arm/dts/k3-j784s4-r5-evm.dts | 3 +- arch/arm/mach-k3/j721s2/j721s2_init.c | 10 +++++++ configs/am68_sk_r5_defconfig | 4 +++ configs/j721s2_evm_r5_defconfig | 6 ++++ drivers/misc/k3_avs.c | 40 ++++++++++++++++++++++++- drivers/power/pmic/Kconfig | 1 + 11 files changed, 79 insertions(+), 6 deletions(-)
base-commit: 3a0b829efc35227b1079a444f00e0729502197ad change-id: 20240130-b4-upstream-j721s2-avs-8c187d3fe26a
Best regards,
Manorit Chawdhry m-chawdhry@ti.com
Regards, Simon
participants (3)
-
Manorit Chawdhry
-
Nishanth Menon
-
Simon Glass