Lines Matching refs:ddr

39 int bist(const struct ccsr_ddr *ddr, int timeout)  in bist()  argument
59 uint32_t dec_9 = ddr_in32(&ddr->dec[9]); in bist()
66 cs0_config = ddr_in32(&ddr->csn_cfg[0]); in bist()
70 csn_bnds[i] = ddr_in32(&ddr->bnds[i].a); in bist()
71 ddr_out32(&ddr->bnds[i].a, in bist()
74 ddr_out32(&ddr->csn_cfg[0], cs0_config & ~CTLR_INTLV_MASK); in bist()
81 temp32 = ddr_in32(&ddr->dec[i >> 2U]); in bist()
92 map_save = ddr_in32(&ddr->dec[pos >> 2]); in bist()
98 ddr_out32(&ddr->dec[pos >> 2U], temp32); in bist()
105 ddr_out32(&ddr->mtp[i], test_pattern[i]); in bist()
108 ddr_out32(&ddr->mtcr, mtcr); in bist()
111 mtcr = ddr_in32(&ddr->mtcr); in bist()
119 err_detect = ddr_in32(&ddr->err_detect); in bist()
120 err_sbe = ddr_in32(&ddr->err_sbe); in bist()
128 ddr_out32(&ddr->bnds[i].a, csn_bnds[i]); in bist()
130 ddr_out32(&ddr->csn_cfg[0], cs0_config); in bist()
133 ddr_out32(&ddr->dec[pos >> 2], map_save); in bist()
147 void dump_ddrc(unsigned int *ddr) in dump_ddrc() argument
153 for (i = 0U; i < U(0x400); i++, ddr++) { in dump_ddrc()
154 val = ddr_in32(ddr); in dump_ddrc()
156 debug("*0x%lx = 0x%lx\n", (unsigned long)ddr, val); in dump_ddrc()
190 const struct ccsr_ddr *ddr, in ddrc_set_regs() argument
214 ddr_out32(&ddr->ddr_cdr1, regs->cdr[0]); in ddrc_set_regs()
216 ddr_out32(&ddr->sdram_clk_cntl, regs->clk_cntl); in ddrc_set_regs()
220 ddr_out32(&ddr->bnds[i].a, in ddrc_set_regs()
223 ddr_out32(&ddr->bnds[i].a, regs->cs[i].bnds); in ddrc_set_regs()
225 ddr_out32(&ddr->csn_cfg_2[i], regs->cs[i].config_2); in ddrc_set_regs()
228 ddr_out32(&ddr->timing_cfg_0, regs->timing_cfg[0]); in ddrc_set_regs()
229 ddr_out32(&ddr->timing_cfg_1, regs->timing_cfg[1]); in ddrc_set_regs()
230 ddr_out32(&ddr->timing_cfg_2, regs->timing_cfg[2]); in ddrc_set_regs()
231 ddr_out32(&ddr->timing_cfg_3, regs->timing_cfg[3]); in ddrc_set_regs()
232 ddr_out32(&ddr->timing_cfg_4, regs->timing_cfg[4]); in ddrc_set_regs()
233 ddr_out32(&ddr->timing_cfg_5, regs->timing_cfg[5]); in ddrc_set_regs()
234 ddr_out32(&ddr->timing_cfg_6, regs->timing_cfg[6]); in ddrc_set_regs()
235 ddr_out32(&ddr->timing_cfg_7, regs->timing_cfg[7]); in ddrc_set_regs()
236 ddr_out32(&ddr->timing_cfg_8, regs->timing_cfg[8]); in ddrc_set_regs()
237 ddr_out32(&ddr->timing_cfg_9, regs->timing_cfg[9]); in ddrc_set_regs()
238 ddr_out32(&ddr->zq_cntl, regs->zq_cntl); in ddrc_set_regs()
240 ddr_out32(&ddr->dq_map[i], regs->dq_map[i]); in ddrc_set_regs()
242 ddr_out32(&ddr->sdram_cfg_3, regs->sdram_cfg[2]); in ddrc_set_regs()
243 ddr_out32(&ddr->sdram_mode, regs->sdram_mode[0]); in ddrc_set_regs()
244 ddr_out32(&ddr->sdram_mode_2, regs->sdram_mode[1]); in ddrc_set_regs()
245 ddr_out32(&ddr->sdram_mode_3, regs->sdram_mode[2]); in ddrc_set_regs()
246 ddr_out32(&ddr->sdram_mode_4, regs->sdram_mode[3]); in ddrc_set_regs()
247 ddr_out32(&ddr->sdram_mode_5, regs->sdram_mode[4]); in ddrc_set_regs()
248 ddr_out32(&ddr->sdram_mode_6, regs->sdram_mode[5]); in ddrc_set_regs()
249 ddr_out32(&ddr->sdram_mode_7, regs->sdram_mode[6]); in ddrc_set_regs()
250 ddr_out32(&ddr->sdram_mode_8, regs->sdram_mode[7]); in ddrc_set_regs()
251 ddr_out32(&ddr->sdram_mode_9, regs->sdram_mode[8]); in ddrc_set_regs()
252 ddr_out32(&ddr->sdram_mode_10, regs->sdram_mode[9]); in ddrc_set_regs()
253 ddr_out32(&ddr->sdram_mode_11, regs->sdram_mode[10]); in ddrc_set_regs()
254 ddr_out32(&ddr->sdram_mode_12, regs->sdram_mode[11]); in ddrc_set_regs()
255 ddr_out32(&ddr->sdram_mode_13, regs->sdram_mode[12]); in ddrc_set_regs()
256 ddr_out32(&ddr->sdram_mode_14, regs->sdram_mode[13]); in ddrc_set_regs()
257 ddr_out32(&ddr->sdram_mode_15, regs->sdram_mode[14]); in ddrc_set_regs()
258 ddr_out32(&ddr->sdram_mode_16, regs->sdram_mode[15]); in ddrc_set_regs()
259 ddr_out32(&ddr->sdram_md_cntl, regs->md_cntl); in ddrc_set_regs()
261 ddr_out32(&ddr->sdram_interval, in ddrc_set_regs()
264 ddr_out32(&ddr->sdram_interval, regs->interval); in ddrc_set_regs()
266 ddr_out32(&ddr->sdram_data_init, regs->data_init); in ddrc_set_regs()
268 ddr_out32(&ddr->eor, regs->eor); in ddrc_set_regs()
271 ddr_out32(&ddr->wrlvl_cntl, regs->wrlvl_cntl[0]); in ddrc_set_regs()
279 ddr_out32(&ddr->ddr_wrlvl_cntl_2, regs->wrlvl_cntl[1]); in ddrc_set_regs()
282 ddr_out32(&ddr->ddr_wrlvl_cntl_3, regs->wrlvl_cntl[2]); in ddrc_set_regs()
286 ddr_out32(&ddr->ddr_sr_cntr, regs->ddr_sr_cntr); in ddrc_set_regs()
287 ddr_out32(&ddr->ddr_sdram_rcw_1, regs->sdram_rcw[0]); in ddrc_set_regs()
288 ddr_out32(&ddr->ddr_sdram_rcw_2, regs->sdram_rcw[1]); in ddrc_set_regs()
289 ddr_out32(&ddr->ddr_sdram_rcw_3, regs->sdram_rcw[2]); in ddrc_set_regs()
290 ddr_out32(&ddr->ddr_sdram_rcw_4, regs->sdram_rcw[3]); in ddrc_set_regs()
291 ddr_out32(&ddr->ddr_sdram_rcw_5, regs->sdram_rcw[4]); in ddrc_set_regs()
292 ddr_out32(&ddr->ddr_sdram_rcw_6, regs->sdram_rcw[5]); in ddrc_set_regs()
293 ddr_out32(&ddr->ddr_cdr2, regs->cdr[1]); in ddrc_set_regs()
294 ddr_out32(&ddr->sdram_cfg_2, regs->sdram_cfg[1]); in ddrc_set_regs()
295 ddr_out32(&ddr->init_addr, regs->init_addr); in ddrc_set_regs()
296 ddr_out32(&ddr->init_ext_addr, regs->init_ext_addr); in ddrc_set_regs()
302 ddr_out32(&ddr->ddr_sdram_rcw_2, in ddrc_set_regs()
306 ddr_out32(&ddr->err_disable, in ddrc_set_regs()
310 ddr_out32(&ddr->err_disable, regs->err_disable); in ddrc_set_regs()
312 ddr_out32(&ddr->err_int_en, regs->err_int_en); in ddrc_set_regs()
315 if (get_ddrc_version(ddr) == 0x50500) { in ddrc_set_regs()
316 ddr_out32(&ddr->tx_cfg[1], 0x1f1f1f1f); in ddrc_set_regs()
317 ddr_out32(&ddr->debug[3], 0x124a02c0); in ddrc_set_regs()
322 ddr_out32(&ddr->tx_cfg[i], regs->tx_cfg[i]); in ddrc_set_regs()
332 ddr_out32(&ddr->debug[i], regs->debug[i]); in ddrc_set_regs()
338 ddr_out32(&ddr->dec[i], regs->dec[i]); in ddrc_set_regs()
342 ddr_out32(&ddr->dec[9], 0); in ddrc_set_regs()
350 if (get_ddrc_version(ddr) == 0x50200) { in ddrc_set_regs()
352 } else if (get_ddrc_version(ddr) == 0x50201) { in ddrc_set_regs()
353 ddr_out32(&ddr->debug[37], (U(1) << 31)); in ddrc_set_regs()
354 ddr_out32(&ddr->ddr_cdr2, in ddrc_set_regs()
363 tmp = ddr_in32(&ddr->debug[28]); in ddrc_set_regs()
374 ddr_out32(&ddr->debug[28], tmp); in ddrc_set_regs()
380 tmp = ddr_in32(&ddr->debug[28]); in ddrc_set_regs()
381 ddr_out32(&ddr->debug[28], tmp | 0x000a0000); in ddrc_set_regs()
404 ddr_out32(&ddr->csn_cfg[i], in ddrc_set_regs()
407 ddr_out32(&ddr->csn_cfg[i], regs->cs[i].config); in ddrc_set_regs()
415 ddr_out32(&ddr->sdram_cfg, temp_sdram_cfg); in ddrc_set_regs()
417 if (get_ddrc_version(ddr) < U(0x50500)) { in ddrc_set_regs()
431 while (((ddr_in32(&ddr->ddr_dsr2) & 0x4) != 0) && in ddrc_set_regs()
438 ddr_in32(&ddr->ddr_dsr2)); in ddrc_set_regs()
445 temp_sdram_cfg = ddr_in32(&ddr->sdram_cfg); in ddrc_set_regs()
448 ddr_out32(&ddr->sdram_cfg, temp_sdram_cfg | SDRAM_CFG_MEM_EN); in ddrc_set_regs()
476 bus_width = 3 - ((ddr_in32(&ddr->sdram_cfg) & SDRAM_CFG_DBW_MASK) in ddrc_set_regs()
481 if ((ddr_in32(&ddr->sdram_cfg_2) & SDRAM_CFG2_D_INIT) != 0) { in ddrc_set_regs()
488 ((ddr_in32(&ddr->sdram_cfg_2) & SDRAM_CFG2_D_INIT)) != 0); in ddrc_set_regs()
491 if (ddr_in32(&ddr->debug[1]) & 0x3d00) { in ddrc_set_regs()
493 ddr_in32(&ddr->debug[1])); in ddrc_set_regs()
503 ddr_out32(&ddr->bnds[i].a, regs->cs[i].bnds); in ddrc_set_regs()
505 ddr_out32(&ddr->csn_cfg[0], regs->cs[0].config); in ddrc_set_regs()
509 ddr_out32(&ddr->dec[9], regs->dec[9]); in ddrc_set_regs()
520 } while (timeout-- > 0 && ((ddr_in32(&ddr->debug[1]) & 0x2) == 0)); in ddrc_set_regs()
527 set_wait_for_bits_clear(&ddr->sdram_md_cntl, in ddrc_set_regs()
536 ddr_out32(&ddr->err_disable, in ddrc_set_regs()
542 ddr_out32(&ddr->sdram_interval, regs->interval); in ddrc_set_regs()
549 } while (timeout-- > 0 && ((ddr_in32(&ddr->debug[1]) & 0x2) == 0)); in ddrc_set_regs()
553 tmp = ddr_in32(&ddr->debug[9 + i]); in ddrc_set_regs()
561 tmp = ddr_in32(&ddr->debug[13]); in ddrc_set_regs()
567 tmp = ddr_in32(&ddr->debug[28]); in ddrc_set_regs()
578 if ((ddr_in32(&ddr->debug[1]) & in ddrc_set_regs()
579 ((get_ddrc_version(ddr) == 0x50500) ? 0x3c00 : 0x3d00)) != 0) { in ddrc_set_regs()
581 ddr_in32(&ddr->debug[1])); in ddrc_set_regs()
589 ret = bist(ddr, timeout); in ddrc_set_regs()
591 dump_ddrc((void *)ddr); in ddrc_set_regs()