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 |
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 --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)