diff options
author | Soren Brinkmann <soren.brinkmann@xilinx.com> | 2016-09-16 10:34:47 -0700 |
---|---|---|
committer | Soren Brinkmann <soren.brinkmann@xilinx.com> | 2016-11-16 15:48:48 -0800 |
commit | 466675c23daf37f6f9971b7321910e47c0c0b794 (patch) | |
tree | 161ecd76092d0c90c4c80e9c508e2de3444ba504 /plat/xilinx | |
parent | 90d2956aeaa9f0838400eb40d6c48935ec4c988b (diff) |
zynqmp: Read silicon ID register only once
The silicon ID does not change at runtime. Skip the IO access if the
ID has been read before.
Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'plat/xilinx')
-rw-r--r-- | plat/xilinx/zynqmp/aarch64/zynqmp_common.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/plat/xilinx/zynqmp/aarch64/zynqmp_common.c b/plat/xilinx/zynqmp/aarch64/zynqmp_common.c index 60a16058..562cac83 100644 --- a/plat/xilinx/zynqmp/aarch64/zynqmp_common.c +++ b/plat/xilinx/zynqmp/aarch64/zynqmp_common.c @@ -49,11 +49,14 @@ const mmap_region_t plat_arm_mmap[] = { static unsigned int zynqmp_get_silicon_ver(void) { - unsigned int ver; + static unsigned int ver; - ver = mmio_read_32(ZYNQMP_CSU_BASEADDR + ZYNQMP_CSU_VERSION_OFFSET); - ver &= ZYNQMP_SILICON_VER_MASK; - ver >>= ZYNQMP_SILICON_VER_SHIFT; + if (!ver) { + ver = mmio_read_32(ZYNQMP_CSU_BASEADDR + + ZYNQMP_CSU_VERSION_OFFSET); + ver &= ZYNQMP_SILICON_VER_MASK; + ver >>= ZYNQMP_SILICON_VER_SHIFT; + } return ver; } |