diff mbox series

[v3,5/7] soc: xilinx: zynqmp: Use zynqmp_pm_get_chipid() to get chip revision

Message ID 20240604142741.425307-6-lukas.funke-oss@weidmueller.com
State Accepted
Delegated to: Michal Simek
Headers show
Series Add eFuse access for ZynqMP | expand

Commit Message

Lukas Funke June 4, 2024, 2:27 p.m. UTC
From: Lukas Funke <lukas.funke@weidmueller.com>

Use common zynqmp_pm_get_chipid() function to get the chip revision

Signed-off-by: Lukas Funke <lukas.funke@weidmueller.com>
---

(no changes since v1)

 drivers/soc/soc_xilinx_zynqmp.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

Comments

Michal Simek June 6, 2024, 2:16 p.m. UTC | #1
On 6/4/24 16:27, lukas.funke-oss@weidmueller.com wrote:
> From: Lukas Funke <lukas.funke@weidmueller.com>
> 
> Use common zynqmp_pm_get_chipid() function to get the chip revision
> 
> Signed-off-by: Lukas Funke <lukas.funke@weidmueller.com>
> ---
> 
> (no changes since v1)
> 
>   drivers/soc/soc_xilinx_zynqmp.c | 21 +++++++++------------
>   1 file changed, 9 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/soc/soc_xilinx_zynqmp.c b/drivers/soc/soc_xilinx_zynqmp.c
> index d8b4f172a39..8a65810b7d7 100644
> --- a/drivers/soc/soc_xilinx_zynqmp.c
> +++ b/drivers/soc/soc_xilinx_zynqmp.c
> @@ -346,22 +346,21 @@ static const struct soc_ops soc_xilinx_zynqmp_ops = {
>   static int soc_xilinx_zynqmp_probe(struct udevice *dev)
>   {
>   	struct soc_xilinx_zynqmp_priv *priv = dev_get_priv(dev);
> -	u32 ret_payload[PAYLOAD_ARG_CNT];
> +	u32 idcode, version;
>   	int ret;
>   
>   	priv->family = zynqmp_family;
>   
> -	if (!IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE))
> -		ret = zynqmp_mmio_read(ZYNQMP_PS_VERSION, &ret_payload[2]);
> +	if (!CONFIG_IS_ENABLED(ZYNQMP_FIRMWARE))
> +		ret = zynqmp_mmio_read(ZYNQMP_PS_VERSION, &version);
>   	else
> -		ret = xilinx_pm_request(PM_GET_CHIPID, 0, 0, 0, 0,
> -					ret_payload);
> +		ret = zynqmp_pm_get_chipid(&idcode, &version);
>   	if (ret < 0)
>   		return ret;
>   
> -	priv->revision = ret_payload[2] & ZYNQMP_PS_VER_MASK;
> +	priv->revision = version & ZYNQMP_PS_VER_MASK;
>   
> -	if (IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE)) {
> +	if (CONFIG_IS_ENABLED(ZYNQMP_FIRMWARE)) {
>   		/*
>   		 * Firmware returns:
>   		 * payload[0][31:0] = status of the operation
> @@ -370,11 +369,9 @@ static int soc_xilinx_zynqmp_probe(struct udevice *dev)
>   		 * payload[2][28:20] = EXTENDED_IDCODE
>   		 * payload[2][29] = PL_INIT
>   		 */
> -		u32 idcode = ret_payload[1];
> -		u32 idcode2 = ret_payload[2] >>
> -				   ZYNQMP_CSU_VERSION_EMPTY_SHIFT;
> -		dev_dbg(dev, "IDCODE: 0x%0x, IDCODE2: 0x%0x\n", idcode,
> -			idcode2);
> +		u32 idcode2 = version >> ZYNQMP_CSU_VERSION_EMPTY_SHIFT;
> +
> +		dev_dbg(dev, "IDCODE: 0x%0x, IDCODE2: 0x%0x\n", idcode, idcode2);
>   
>   		ret = soc_xilinx_zynqmp_detect_machine(dev, idcode, idcode2);
>   		if (ret)

Looks good.
Reviewed-by: Michal Simek <michal.simek@amd.com>

Thanks,
Michal
diff mbox series

Patch

diff --git a/drivers/soc/soc_xilinx_zynqmp.c b/drivers/soc/soc_xilinx_zynqmp.c
index d8b4f172a39..8a65810b7d7 100644
--- a/drivers/soc/soc_xilinx_zynqmp.c
+++ b/drivers/soc/soc_xilinx_zynqmp.c
@@ -346,22 +346,21 @@  static const struct soc_ops soc_xilinx_zynqmp_ops = {
 static int soc_xilinx_zynqmp_probe(struct udevice *dev)
 {
 	struct soc_xilinx_zynqmp_priv *priv = dev_get_priv(dev);
-	u32 ret_payload[PAYLOAD_ARG_CNT];
+	u32 idcode, version;
 	int ret;
 
 	priv->family = zynqmp_family;
 
-	if (!IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE))
-		ret = zynqmp_mmio_read(ZYNQMP_PS_VERSION, &ret_payload[2]);
+	if (!CONFIG_IS_ENABLED(ZYNQMP_FIRMWARE))
+		ret = zynqmp_mmio_read(ZYNQMP_PS_VERSION, &version);
 	else
-		ret = xilinx_pm_request(PM_GET_CHIPID, 0, 0, 0, 0,
-					ret_payload);
+		ret = zynqmp_pm_get_chipid(&idcode, &version);
 	if (ret < 0)
 		return ret;
 
-	priv->revision = ret_payload[2] & ZYNQMP_PS_VER_MASK;
+	priv->revision = version & ZYNQMP_PS_VER_MASK;
 
-	if (IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE)) {
+	if (CONFIG_IS_ENABLED(ZYNQMP_FIRMWARE)) {
 		/*
 		 * Firmware returns:
 		 * payload[0][31:0] = status of the operation
@@ -370,11 +369,9 @@  static int soc_xilinx_zynqmp_probe(struct udevice *dev)
 		 * payload[2][28:20] = EXTENDED_IDCODE
 		 * payload[2][29] = PL_INIT
 		 */
-		u32 idcode = ret_payload[1];
-		u32 idcode2 = ret_payload[2] >>
-				   ZYNQMP_CSU_VERSION_EMPTY_SHIFT;
-		dev_dbg(dev, "IDCODE: 0x%0x, IDCODE2: 0x%0x\n", idcode,
-			idcode2);
+		u32 idcode2 = version >> ZYNQMP_CSU_VERSION_EMPTY_SHIFT;
+
+		dev_dbg(dev, "IDCODE: 0x%0x, IDCODE2: 0x%0x\n", idcode, idcode2);
 
 		ret = soc_xilinx_zynqmp_detect_machine(dev, idcode, idcode2);
 		if (ret)