]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
plat: zynqmp: Disable ITAPDLYENA bit for zero ITAP delay
authorSai Krishna Potthuri <lakshmi.sai.krishna.potthuri@xilinx.com>
Fri, 30 Oct 2020 06:09:43 +0000 (00:09 -0600)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 10 Dec 2020 14:36:58 +0000 (15:36 +0100)
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 <lakshmi.sai.krishna.potthuri@xilinx.com>
Acked-by: Srinivas Goud <srinivas.goud@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Change-Id: Icf035cb63510ac7bec4e9d523a622f145eaf0989

plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c

index 9b1ffbc7a09ddc7dfd8a6e9c4daa42f0f44b6a8f..9f3acaa1920f9eb170bb7d30e0ba42521255b897 100644 (file)
@@ -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,