summaryrefslogtreecommitdiff
path: root/board/xilinx
diff options
context:
space:
mode:
authorIbai Erkiaga <ibai.erkiaga-elorza@xilinx.com>2020-08-04 23:17:30 +0100
committerMichal Simek <michal.simek@xilinx.com>2020-08-20 09:49:20 +0200
commit050f10f103cdf88704af962262f1131870894367 (patch)
treeab1143f836cc214870b0ba510f808632e84e2d5a /board/xilinx
parent4b2ad7b1111fe05e7e0b68922048210a5dfd04b0 (diff)
xilinx: zynqmp: remove chip_id function
Remove chip_id function and integrate the firmware call in the zynqmp_get_silicon_idcode_name function. The change avoids querying the firmware twice and makes the code bit more clear. Signed-off-by: Ibai Erkiaga <ibai.erkiaga-elorza@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'board/xilinx')
-rw-r--r--board/xilinx/zynqmp/zynqmp.c57
1 files changed, 20 insertions, 37 deletions
diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index 2b95a61dd0..2a430a9e46 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -197,41 +197,6 @@ static const struct {
};
#endif
-int chip_id(unsigned char id)
-{
- int val = -EINVAL;
- u32 ret_payload[PAYLOAD_ARG_CNT];
-
- xilinx_pm_request(PM_GET_CHIPID, 0, 0, 0, 0, ret_payload);
-
- /*
- * Firmware returns:
- * payload[0][31:0] = status of the operation
- * payload[1]] = IDCODE
- * payload[2][19:0] = Version
- * payload[2][28:20] = EXTENDED_IDCODE
- * payload[2][29] = PL_INIT
- */
- switch (id) {
- case IDCODE:
- val = ret_payload[1];
- val &= ZYNQMP_CSU_IDCODE_DEVICE_CODE_MASK |
- ZYNQMP_CSU_IDCODE_SVD_MASK;
- val >>= ZYNQMP_CSU_IDCODE_SVD_SHIFT;
- break;
- case VERSION:
- val = ret_payload[2] & ZYNQMP_CSU_SILICON_VER_MASK;
- break;
- case IDCODE2:
- val = ret_payload[2] >> ZYNQMP_CSU_VERSION_EMPTY_SHIFT;
- break;
- default:
- printf("%s, Invalid Req:0x%x\n", __func__, id);
- }
-
- return val;
-}
-
#define ZYNQMP_VERSION_SIZE 9
#define ZYNQMP_PL_STATUS_BIT 9
#define ZYNQMP_IPDIS_VCU_BIT 8
@@ -248,9 +213,27 @@ static char *zynqmp_get_silicon_idcode_name(void)
u32 i, id, ver, j;
char *buf;
static char name[ZYNQMP_VERSION_SIZE];
+ u32 ret_payload[PAYLOAD_ARG_CNT];
+
+ xilinx_pm_request(PM_GET_CHIPID, 0, 0, 0, 0, ret_payload);
+
+ /*
+ * Firmware returns:
+ * payload[0][31:0] = status of the operation
+ * payload[1]] = IDCODE
+ * payload[2][19:0] = Version
+ * payload[2][28:20] = EXTENDED_IDCODE
+ * payload[2][29] = PL_INIT
+ */
+
+ /* Get IDCODE field */
+ id = ret_payload[1];
+ id &= ZYNQMP_CSU_IDCODE_DEVICE_CODE_MASK | ZYNQMP_CSU_IDCODE_SVD_MASK;
+ id >>= ZYNQMP_CSU_IDCODE_SVD_SHIFT;
+
+ /* Shift silicon version info */
+ ver = ret_payload[2] >> ZYNQMP_CSU_VERSION_EMPTY_SHIFT;
- id = chip_id(IDCODE);
- ver = chip_id(IDCODE2);
debug("%s, ID: 0x%0X, Ver: 0x%0X\r\n", __func__, id, ver);
for (i = 0; i < ARRAY_SIZE(zynqmp_devices); i++) {