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

This series adds support for AVS on J721S2.
AVS Test for J721S2: https://gist.github.com/manorit2001/c64cf396281806102cae2b45ba84781e Boot Test results: https://gist.github.com/manorit2001/6775d721b3df5a690497d94d012b93c4
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- Changes in v3: * Udit - Change the method of soc_match_device
* Tom - That code part changed so that error wouldn't exist anymore
- Link to v2: https://lore.kernel.org/r/20240528-b4-upstream-j721s2-avs-v2-0-df940f2309d0@...
--- 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 | 42 ++++++++++++++++++++++++- drivers/power/pmic/Kconfig | 1 + 11 files changed, 81 insertions(+), 6 deletions(-) --- base-commit: b4cbd1a257d4027038b4f997d73bdb0a066db045 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") Signed-off-by: Manorit Chawdhry m-chawdhry@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..568cf5b20d51 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\n", + vd->id); }
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 f177f563527f..9bbf76d8bf35 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 fb7e2e502392..e6da86f3cd10 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 bef4573d3d20..306d2007f89e 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 8/13/2024 11:40 AM, 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
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 f177f563527f..9bbf76d8bf35 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>;
Thanks for catching this
Could we think of having SOC specific R5 dt , So that we don't need to update such SOC information at each board level
Similar to what is done (k3-j721e-r5.dtsi)
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 fb7e2e502392..e6da86f3cd10 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 bef4573d3d20..306d2007f89e 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";

Hi Udit,
On 08:32-20240815, Kumar, Udit wrote:
On 8/13/2024 11:40 AM, 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
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 f177f563527f..9bbf76d8bf35 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>;
Thanks for catching this
Could we think of having SOC specific R5 dt , So that we don't need to update such SOC information at each board level
Similar to what is done (k3-j721e-r5.dtsi)
Seems like a good idea but I believe that it could be a separate activity regardless of this series, it can be taken up later. Current series is putting it in the respective files so should be a non blocker.
Regards, Manorit

On 10/1/2024 2:15 PM, Manorit Chawdhry wrote:
Hi Udit,
On 08:32-20240815, Kumar, Udit wrote:
On 8/13/2024 11:40 AM, 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
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 f177f563527f..9bbf76d8bf35 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>;
Thanks for catching this
Could we think of having SOC specific R5 dt , So that we don't need to update such SOC information at each board level
Similar to what is done (k3-j721e-r5.dtsi)
Seems like a good idea but I believe that it could be a separate activity regardless of this series, it can be taken up later. Current series is putting it in the respective files so should be a non blocker.
another series is ok for this change
Regards, Manorit

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 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)
diff --git a/drivers/misc/k3_avs.c b/drivers/misc/k3_avs.c index 568cf5b20d51..f94eee5b1c64 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,34 @@ 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_get_aliases_node("remoteproc1"); + if (!ofnode_valid(node)) + return -ENODEV; + + i = ofnode_stringlist_search(node, "clock-names", "core"); + if (i < 0) + return -ENODEV; + + debug("%s: i: %d\n", __func__, i); + + ret = ofnode_parse_phandle_with_args(node, "clocks", + "#clock-cells", + 0, i, + &phandle_args); + if (ret) { + printf("Couldn't get the clock node\n"); + 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 +494,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 = {

On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
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 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)
diff --git a/drivers/misc/k3_avs.c b/drivers/misc/k3_avs.c index 568cf5b20d51..f94eee5b1c64 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,34 @@ 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_get_aliases_node("remoteproc1");
My suggestion will be to search node based upon compatible name am654-rproc
if (!ofnode_valid(node))
return -ENODEV;
i = ofnode_stringlist_search(node, "clock-names", "core");
if (i < 0)
return -ENODEV;
debug("%s: i: %d\n", __func__, i);
I assume this was for your debug only, Please see if you can remove this
ret = ofnode_parse_phandle_with_args(node, "clocks",
"#clock-cells",
0, i,
&phandle_args);
if (ret) {
printf("Couldn't get the clock node\n");
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 +494,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 = {*/

Hi Udit,
On 08:44-20240815, Kumar, Udit wrote:
On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
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 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)
diff --git a/drivers/misc/k3_avs.c b/drivers/misc/k3_avs.c index 568cf5b20d51..f94eee5b1c64 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,34 @@ 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_get_aliases_node("remoteproc1");
My suggestion will be to search node based upon compatible name am654-rproc
Yes, that seems like a good idea, let me try that.
if (!ofnode_valid(node))
return -ENODEV;
i = ofnode_stringlist_search(node, "clock-names", "core");
if (i < 0)
return -ENODEV;
debug("%s: i: %d\n", __func__, i);
I assume this was for your debug only, Please see if you can remove this
Ack.
Regards, Manorit

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

On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
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);
Can we remove this ret, Something like
if (uclass_get_device_by_driver....)
printf();
if you think, ok to change
if (ret)
printf("AVS init failed: %d\n", ret);
- } } #endif

Hi Udit,
On 08:46-20240815, Kumar, Udit wrote:
On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
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);
Can we remove this ret, Something like
I would say we can let this remain, general convention of this file is to have ret itself, I know it's only used in one place as of now but I feel keeping it consistent is better IMO.
Regards, Manorit

On 10/1/2024 2:18 PM, Manorit Chawdhry wrote:
Hi Udit,
On 08:46-20240815, Kumar, Udit wrote:
On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
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);
Can we remove this ret, Something like
I would say we can let this remain, general convention of this file is to have ret itself, I know it's only used in one place as of now but I feel keeping it consistent is better IMO.
I still suggest to remove non needed variable .
To make it consistent , please think to change at other places :)
Regards, Manorit

Hi Udit,
On 06:45-20241002, Kumar, Udit wrote:
On 10/1/2024 2:18 PM, Manorit Chawdhry wrote:
Hi Udit,
On 08:46-20240815, Kumar, Udit wrote:
On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
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);
Can we remove this ret, Something like
I would say we can let this remain, general convention of this file is to have ret itself, I know it's only used in one place as of now but I feel keeping it consistent is better IMO.
I still suggest to remove non needed variable .
To make it consistent , please think to change at other places :)
We are printing the ret value later, there is no point cleaning this up.
Regards, Manorit
Regards, Manorit

Add bootph-pre-ram property to VTM node and the pmic node.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- 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>; +};

On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
Add bootph-pre-ram property to VTM node and the pmic node.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
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;
+};
Ok for now. but do you plan to add this bootph-pre-ram in Linux DT too ?
+&wkup_vtm0 {
- bootph-pre-ram;
- vdd-supply-2 = <&bucka1234>;
+};

Hi Udit,
On 08:47-20240815, Kumar, Udit wrote:
On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
Add bootph-pre-ram property to VTM node and the pmic node.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
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;
+};
Ok for now. but do you plan to add this bootph-pre-ram in Linux DT too ?
Yes, it's taken as a part of the series that's being run parallely in Linux [0]
[0]: https://lore.kernel.org/linux-arm-kernel/20240814-b4-upstream-bootph-all-v4-...
Regards, Manorit

On 10/1/2024 4:27 PM, Manorit Chawdhry wrote:
Hi Udit,
On 08:47-20240815, Kumar, Udit wrote:
On 8/13/2024 11:40 AM, Manorit Chawdhry wrote:
Add bootph-pre-ram property to VTM node and the pmic node.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
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;
+};
Ok for now. but do you plan to add this bootph-pre-ram in Linux DT too ?
Yes, it's taken as a part of the series that's being run parallely in Linux [0]
Thanks for confirmation,
For this patch, Please use
Reviewed-by: Udit Kumar u-kumar1@ti.com
Regards, Manorit

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 6404b1cc3037..288379797432 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 8/13/2024 11:40 AM, 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
you are having additional changes (am68 and j721s2) wrt subject of patch(j721s2) .
Let other reviewer suggest on that,
For Changes LGTM.
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 6404b1cc3037..288379797432 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
participants (2)
-
Kumar, Udit
-
Manorit Chawdhry