diff mbox series

arm64: zynqmp: Add support for SVD devices

Message ID 606cc8f52ac42b3030cc3675ec75f9374ca74932.1621413896.git.michal.simek@xilinx.com
State Accepted
Commit ddf8deabc39db86c95d6d85afeb8689bf6fe1f90
Delegated to: Michal Simek
Headers show
Series arm64: zynqmp: Add support for SVD devices | expand

Commit Message

Michal Simek May 19, 2021, 8:44 a.m. UTC
SVD (Software Virtual Devices) are using different name which can't be
handled via zynqmp_devices structure. That's why introduce
zynqmp_detect_svd_name() which checks ID code for these devices and show
proper name for them.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---

 board/xilinx/zynqmp/zynqmp.c | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

Comments

Michal Simek May 31, 2021, 8:26 a.m. UTC | #1
st 19. 5. 2021 v 10:45 odesílatel Michal Simek <michal.simek@xilinx.com> napsal:
>
> SVD (Software Virtual Devices) are using different name which can't be
> handled via zynqmp_devices structure. That's why introduce
> zynqmp_detect_svd_name() which checks ID code for these devices and show
> proper name for them.
>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
>  board/xilinx/zynqmp/zynqmp.c | 28 +++++++++++++++++++++++++++-
>  1 file changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
> index d05f0b2e1202..6e353e3b0a57 100644
> --- a/board/xilinx/zynqmp/zynqmp.c
> +++ b/board/xilinx/zynqmp/zynqmp.c
> @@ -185,6 +185,32 @@ static const struct {
>         },
>  };
>
> +static const struct {
> +       u32 id;
> +       char *name;
> +} zynqmp_svd_devices[] = {
> +       {
> +               .id = 0x04714093,
> +               .name = "xck24"
> +       },
> +       {
> +               .id = 0x04724093,
> +               .name = "xck26",
> +       },
> +};
> +
> +static char *zynqmp_detect_svd_name(u32 idcode)
> +{
> +       u32 i;
> +
> +       for (i = 0; i < ARRAY_SIZE(zynqmp_svd_devices); i++) {
> +               if (zynqmp_svd_devices[i].id == (idcode & 0x0FFFFFFF))
> +                       return zynqmp_svd_devices[i].name;
> +       }
> +
> +       return "unknown";
> +}
> +
>  static char *zynqmp_get_silicon_idcode_name(void)
>  {
>         u32 i;
> @@ -219,7 +245,7 @@ static char *zynqmp_get_silicon_idcode_name(void)
>         }
>
>         if (i >= ARRAY_SIZE(zynqmp_devices))
> -               return "unknown";
> +               return zynqmp_detect_svd_name(idcode);
>
>         /* Add device prefix to the name */
>         ret = snprintf(name, ZYNQMP_VERSION_SIZE, "zu%d",
> --
> 2.31.1
>

Applied.
M
diff mbox series

Patch

diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index d05f0b2e1202..6e353e3b0a57 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -185,6 +185,32 @@  static const struct {
 	},
 };
 
+static const struct {
+	u32 id;
+	char *name;
+} zynqmp_svd_devices[] = {
+	{
+		.id = 0x04714093,
+		.name = "xck24"
+	},
+	{
+		.id = 0x04724093,
+		.name = "xck26",
+	},
+};
+
+static char *zynqmp_detect_svd_name(u32 idcode)
+{
+	u32 i;
+
+	for (i = 0; i < ARRAY_SIZE(zynqmp_svd_devices); i++) {
+		if (zynqmp_svd_devices[i].id == (idcode & 0x0FFFFFFF))
+			return zynqmp_svd_devices[i].name;
+	}
+
+	return "unknown";
+}
+
 static char *zynqmp_get_silicon_idcode_name(void)
 {
 	u32 i;
@@ -219,7 +245,7 @@  static char *zynqmp_get_silicon_idcode_name(void)
 	}
 
 	if (i >= ARRAY_SIZE(zynqmp_devices))
-		return "unknown";
+		return zynqmp_detect_svd_name(idcode);
 
 	/* Add device prefix to the name */
 	ret = snprintf(name, ZYNQMP_VERSION_SIZE, "zu%d",