|
@@ -503,12 +503,15 @@ static void scc_mgr_zero_all(void)
|
|
|
writel(0, &sdr_scc_mgr->update);
|
|
|
}
|
|
|
|
|
|
-static void scc_set_bypass_mode(uint32_t write_group, uint32_t mode)
|
|
|
+/**
|
|
|
+ * scc_set_bypass_mode() - Set bypass mode and trigger SCC update
|
|
|
+ * @write_group: Write group
|
|
|
+ *
|
|
|
+ * Set bypass mode and trigger SCC update.
|
|
|
+ */
|
|
|
+static void scc_set_bypass_mode(const u32 write_group)
|
|
|
{
|
|
|
- /* mode = 0 : Do NOT bypass - Half Rate Mode */
|
|
|
- /* mode = 1 : Bypass - Full Rate Mode */
|
|
|
-
|
|
|
- /* only need to set once for all groups, pins, dq, dqs, dm */
|
|
|
+ /* Only needed once to set all groups, pins, DQ, DQS, DM. */
|
|
|
if (write_group == 0) {
|
|
|
debug_cond(DLEVEL == 1, "%s:%d Setting HHP Extras\n", __func__,
|
|
|
__LINE__);
|
|
@@ -516,17 +519,18 @@ static void scc_set_bypass_mode(uint32_t write_group, uint32_t mode)
|
|
|
debug_cond(DLEVEL == 1, "%s:%d Done Setting HHP Extras\n",
|
|
|
__func__, __LINE__);
|
|
|
}
|
|
|
- /* multicast to all DQ enables */
|
|
|
+
|
|
|
+ /* Multicast to all DQ enables. */
|
|
|
writel(0xff, &sdr_scc_mgr->dq_ena);
|
|
|
writel(0xff, &sdr_scc_mgr->dm_ena);
|
|
|
|
|
|
- /* update current DQS IO enable */
|
|
|
+ /* Update current DQS IO enable. */
|
|
|
writel(0, &sdr_scc_mgr->dqs_io_ena);
|
|
|
|
|
|
- /* update the DQS logic */
|
|
|
+ /* Update the DQS logic. */
|
|
|
writel(write_group, &sdr_scc_mgr->dqs_ena);
|
|
|
|
|
|
- /* hit update */
|
|
|
+ /* Hit update. */
|
|
|
writel(0, &sdr_scc_mgr->update);
|
|
|
}
|
|
|
|
|
@@ -3314,11 +3318,10 @@ static uint32_t mem_calibrate(void)
|
|
|
|
|
|
mem_config();
|
|
|
|
|
|
- uint32_t bypass_mode = 0x1;
|
|
|
for (i = 0; i < RW_MGR_MEM_IF_READ_DQS_WIDTH; i++) {
|
|
|
writel(i, SDR_PHYGRP_SCCGRP_ADDRESS |
|
|
|
SCC_MGR_GROUP_COUNTER_OFFSET);
|
|
|
- scc_set_bypass_mode(i, bypass_mode);
|
|
|
+ scc_set_bypass_mode(i);
|
|
|
}
|
|
|
|
|
|
if ((dyn_calib_steps & CALIB_SKIP_ALL) == CALIB_SKIP_ALL) {
|