diff mbox series

[v3,4/7] drivers: misc: k3_avs: Extract MPU clk and dev ID from DT

Message ID 20240813-b4-upstream-j721s2-avs-v3-4-5115d93cdeb2@ti.com
State Changes Requested
Delegated to: Tom Rini
Headers show
Series Add AVS support for J721S2 | expand

Commit Message

Manorit Chawdhry Aug. 13, 2024, 6:10 a.m. UTC
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(+)

Comments

Kumar, Udit Aug. 15, 2024, 3:14 a.m. UTC | #1
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 = {
>
diff mbox series

Patch

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 = {