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 |
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 --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",
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(-)