1 /* 2 * DDR3 3 * 4 * (C) Copyright 2014 5 * Texas Instruments Incorporated, <www.ti.com> 6 * 7 * SPDX-License-Identifier: GPL-2.0+ 8 */ 9 10 #ifndef _DDR3_H_ 11 #define _DDR3_H_ 12 13 #include <asm/arch/hardware.h> 14 15 struct ddr3_phy_config { 16 unsigned int pllcr; 17 unsigned int pgcr1_mask; 18 unsigned int pgcr1_val; 19 unsigned int ptr0; 20 unsigned int ptr1; 21 unsigned int ptr2; 22 unsigned int ptr3; 23 unsigned int ptr4; 24 unsigned int dcr_mask; 25 unsigned int dcr_val; 26 unsigned int dtpr0; 27 unsigned int dtpr1; 28 unsigned int dtpr2; 29 unsigned int mr0; 30 unsigned int mr1; 31 unsigned int mr2; 32 unsigned int dtcr; 33 unsigned int pgcr2; 34 unsigned int zq0cr1; 35 unsigned int zq1cr1; 36 unsigned int zq2cr1; 37 unsigned int pir_v1; 38 unsigned int datx8_2_mask; 39 unsigned int datx8_2_val; 40 unsigned int datx8_3_mask; 41 unsigned int datx8_3_val; 42 unsigned int datx8_4_mask; 43 unsigned int datx8_4_val; 44 unsigned int datx8_5_mask; 45 unsigned int datx8_5_val; 46 unsigned int datx8_6_mask; 47 unsigned int datx8_6_val; 48 unsigned int datx8_7_mask; 49 unsigned int datx8_7_val; 50 unsigned int datx8_8_mask; 51 unsigned int datx8_8_val; 52 unsigned int pir_v2; 53 }; 54 55 struct ddr3_emif_config { 56 unsigned int sdcfg; 57 unsigned int sdtim1; 58 unsigned int sdtim2; 59 unsigned int sdtim3; 60 unsigned int sdtim4; 61 unsigned int zqcfg; 62 unsigned int sdrfc; 63 }; 64 65 struct ddr3_spd_cb { 66 char dimm_name[32]; 67 struct ddr3_phy_config phy_cfg; 68 struct ddr3_emif_config emif_cfg; 69 unsigned int ddrspdclock; 70 int ddr_size_gbyte; 71 }; 72 73 u32 ddr3_init(void); 74 void ddr3_reset_ddrphy(void); 75 void ddr3_init_ecc(u32 base, u32 ddr3_size); 76 void ddr3_disable_ecc(u32 base); 77 void ddr3_check_ecc_int(u32 base); 78 int ddr3_ecc_support_rmw(u32 base); 79 void ddr3_err_reset_workaround(void); 80 void ddr3_enable_ecc(u32 base, int test); 81 void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg); 82 void ddr3_init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg); 83 int ddr3_get_size(void); 84 85 #endif 86