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.si...@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

Reply via email to