diff options
author | Marek Vasut <marex@denx.de> | 2015-07-13 00:30:09 +0200 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2015-08-08 14:14:12 +0200 |
commit | 5e837896344a6810b003442c4fbfd5cb5692745a (patch) | |
tree | 868589d497699f1ac20150f192c1c86d309a9e64 /drivers/ddr/altera | |
parent | 0b69b807d841ae39d41f27b96542219211bcec4e (diff) |
ddr: altera: Clean up scc_mgr_load_dqs_for_write_group()
Make this function more readable, no functional change. Also, zap the
forward declaration, which is no longer needed.
Signed-off-by: Marek Vasut <marex@denx.de>
Diffstat (limited to 'drivers/ddr/altera')
-rw-r--r-- | drivers/ddr/altera/sequencer.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/drivers/ddr/altera/sequencer.c b/drivers/ddr/altera/sequencer.c index df78146241..1122cfa71d 100644 --- a/drivers/ddr/altera/sequencer.c +++ b/drivers/ddr/altera/sequencer.c @@ -13,8 +13,6 @@ #include "sequencer_auto_inst_init.h" #include "sequencer_defines.h" -static void scc_mgr_load_dqs_for_write_group(uint32_t write_group); - static struct socfpga_sdr_rw_load_manager *sdr_rw_load_mgr_regs = (struct socfpga_sdr_rw_load_manager *)(SDR_PHYGRP_RWMGRGRP_ADDRESS | 0x800); @@ -532,21 +530,27 @@ static void scc_set_bypass_mode(uint32_t write_group, uint32_t mode) writel(0, &sdr_scc_mgr->update); } -static void scc_mgr_load_dqs_for_write_group(uint32_t write_group) +/** + * scc_mgr_load_dqs_for_write_group() - Load DQS settings for Write Group + * @write_group: Write group + * + * Load DQS settings for Write Group, do not trigger SCC update. + */ +static void scc_mgr_load_dqs_for_write_group(const u32 write_group) { - uint32_t read_group; - uint32_t addr = (u32)&sdr_scc_mgr->dqs_ena; + const int ratio = RW_MGR_MEM_IF_READ_DQS_WIDTH / + RW_MGR_MEM_IF_WRITE_DQS_WIDTH; + const int base = write_group * ratio; + int i; /* + * Load the setting in the SCC manager * Although OCT affects only write data, the OCT delay is controlled * by the DQS logic block which is instantiated once per read group. * For protocols where a write group consists of multiple read groups, - * the setting must be scanned multiple times. + * the setting must be set multiple times. */ - for (read_group = write_group * RW_MGR_MEM_IF_READ_DQS_WIDTH / - RW_MGR_MEM_IF_WRITE_DQS_WIDTH; - read_group < (write_group + 1) * RW_MGR_MEM_IF_READ_DQS_WIDTH / - RW_MGR_MEM_IF_WRITE_DQS_WIDTH; ++read_group) - writel(read_group, addr); + for (i = 0; i < ratio; i++) + writel(base + i, &sdr_scc_mgr->dqs_ena); } static void scc_mgr_zero_group(uint32_t write_group, uint32_t test_begin, |