From: Sai Krishna Potthuri Date: Fri, 30 Oct 2020 06:09:43 +0000 (-0600) Subject: plat: zynqmp: Disable ITAPDLYENA bit for zero ITAP delay X-Git-Tag: baikal/aarch64/sdk5.9~1047^2 X-Git-Url: https://git.baikalelectronics.ru/?a=commitdiff_plain;h=fe1fa205fca4d1dd4a1b1755942956dbca65d573;p=arm-tf.git plat: zynqmp: Disable ITAPDLYENA bit for zero ITAP delay This patch disable the ITAPDLYENA bit for ITAP delay value zero. As per IP design, it is recommended to disable the ITAPDLYENA bit before auto-tuning. Also disable OTAPDLYENA bit always as there is one issue in RTL where SD0_OTAPDLYENA has been wrongly connected to both SD0 and SD1 controllers. Hence it is recommended to disable OTAPDLYENA bit always for both the controllers. Signed-off-by: Sai Krishna Potthuri Acked-by: Srinivas Goud Signed-off-by: Michal Simek Change-Id: Icf035cb63510ac7bec4e9d523a622f145eaf0989 --- diff --git a/plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c b/plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c index 9b1ffbc7a..9f3acaa19 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c +++ b/plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c @@ -312,9 +312,15 @@ static enum pm_ret_status pm_ioctl_sd_set_tapdelay(enum pm_node_id nid, (ZYNQMP_SD_ITAPCHGWIN << shift)); if (ret != PM_RET_SUCCESS) goto reset_release; - ret = pm_mmio_write(ZYNQMP_SD_ITAP_DLY, - (ZYNQMP_SD_ITAPDLYENA_MASK << shift), - (ZYNQMP_SD_ITAPDLYENA << shift)); + if (value == 0) + ret = pm_mmio_write(ZYNQMP_SD_ITAP_DLY, + (ZYNQMP_SD_ITAPDLYENA_MASK << + shift), 0); + else + ret = pm_mmio_write(ZYNQMP_SD_ITAP_DLY, + (ZYNQMP_SD_ITAPDLYENA_MASK << + shift), (ZYNQMP_SD_ITAPDLYENA << + shift)); if (ret != PM_RET_SUCCESS) goto reset_release; ret = pm_mmio_write(ZYNQMP_SD_ITAP_DLY, @@ -326,8 +332,7 @@ static enum pm_ret_status pm_ioctl_sd_set_tapdelay(enum pm_node_id nid, (ZYNQMP_SD_ITAPCHGWIN_MASK << shift), 0); } else if (type == PM_TAPDELAY_OUTPUT) { ret = pm_mmio_write(ZYNQMP_SD_OTAP_DLY, - (ZYNQMP_SD_OTAPDLYENA_MASK << shift), - (ZYNQMP_SD_OTAPDLYENA << shift)); + (ZYNQMP_SD_OTAPDLYENA_MASK << shift), 0); if (ret != PM_RET_SUCCESS) goto reset_release; ret = pm_mmio_write(ZYNQMP_SD_OTAP_DLY,