Blame view
board/freescale/p1023rdb/ddr.c
1.92 KB
83d290c56
|
1 |
// SPDX-License-Identifier: GPL-2.0+ |
570723388
|
2 3 |
/* * Copyright 2013 Freescale Semiconductor, Inc. |
570723388
|
4 5 6 7 8 9 |
*/ #include <common.h> #include <asm/mmu.h> #include <asm/immap_85xx.h> #include <asm/processor.h> |
5614e71b4
|
10 11 |
#include <fsl_ddr_sdram.h> #include <fsl_ddr_dimm_params.h> |
570723388
|
12 13 |
#include <asm/io.h> #include <asm/fsl_law.h> |
570723388
|
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/* CONFIG_SYS_DDR_RAW_TIMING */ /* * Hynix H5TQ1G83TFR-H9C */ dimm_params_t ddr_raw_timing = { .n_ranks = 1, .rank_density = 536870912u, .capacity = 536870912u, .primary_sdram_width = 32, .ec_sdram_width = 0, .registered_dimm = 0, .mirrored_dimm = 0, .n_row_addr = 14, .n_col_addr = 10, .n_banks_per_sdram_device = 8, .edc_config = 0, .burst_lengths_bitmask = 0x0c, |
0dd38a35f
|
31 32 33 34 35 36 37 38 39 40 41 42 |
.tckmin_x_ps = 1875, .caslat_x = 0x1e << 4, /* 5,6,7,8 */ .taa_ps = 13125, .twr_ps = 18000, .trcd_ps = 13125, .trrd_ps = 7500, .trp_ps = 13125, .tras_ps = 37500, .trc_ps = 50625, .trfc_ps = 160000, .twtr_ps = 7500, .trtp_ps = 7500, |
570723388
|
43 |
.refresh_rate_ps = 7800000, |
0dd38a35f
|
44 |
.tfaw_ps = 37500, |
570723388
|
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
}; int fsl_ddr_get_dimm_params(dimm_params_t *pdimm, unsigned int controller_number, unsigned int dimm_number) { const char dimm_model[] = "Fixed DDR on board"; if ((controller_number == 0) && (dimm_number == 0)) { memcpy(pdimm, &ddr_raw_timing, sizeof(dimm_params_t)); memset(pdimm->mpart, 0, sizeof(pdimm->mpart)); memcpy(pdimm->mpart, dimm_model, sizeof(dimm_model) - 1); } return 0; } void fsl_ddr_board_options(memctl_options_t *popts, dimm_params_t *pdimm, unsigned int ctrl_num) { int i; popts->clk_adjust = 6; popts->cpo_override = 0x1f; popts->write_data_delay = 2; popts->half_strength_driver_enable = 1; /* Write leveling override */ popts->wrlvl_en = 1; popts->wrlvl_override = 1; popts->wrlvl_sample = 0xf; popts->wrlvl_start = 0x8; popts->trwt_override = 1; popts->trwt = 0; for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) { popts->cs_local_opts[i].odt_rd_cfg = FSL_DDR_ODT_NEVER; popts->cs_local_opts[i].odt_wr_cfg = FSL_DDR_ODT_CS; } } |