aboutsummaryrefslogtreecommitdiff
path: root/board/xilinx/zynqmp/zynqmp.c
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2020-10-05 09:35:40 +0200
committerMichal Simek <michal.simek@xilinx.com>2021-06-23 09:48:35 +0200
commitddf8deabc39db86c95d6d85afeb8689bf6fe1f90 (patch)
tree3b7469e887cfc04b10275ee73b20f6114229db7f /board/xilinx/zynqmp/zynqmp.c
parentab09e16d5a4afb958d668554b56c5f717a92e9cd (diff)
downloadu-boot-ddf8deabc39db86c95d6d85afeb8689bf6fe1f90.zip
u-boot-ddf8deabc39db86c95d6d85afeb8689bf6fe1f90.tar.gz
u-boot-ddf8deabc39db86c95d6d85afeb8689bf6fe1f90.tar.bz2
arm64: zynqmp: Add support for SVD devices
SVDs 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>
Diffstat (limited to 'board/xilinx/zynqmp/zynqmp.c')
-rw-r--r--board/xilinx/zynqmp/zynqmp.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index ee4d0c8..d3c6826 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",