1*44937214SPrabhakar Kushwaha /* 2*44937214SPrabhakar Kushwaha * Copyright 2014 Freescale Semiconductor, Inc. 3*44937214SPrabhakar Kushwaha * 4*44937214SPrabhakar Kushwaha * SPDX-License-Identifier: GPL-2.0+ 5*44937214SPrabhakar Kushwaha */ 6*44937214SPrabhakar Kushwaha 7*44937214SPrabhakar Kushwaha #ifndef __DDR_H__ 8*44937214SPrabhakar Kushwaha #define __DDR_H__ 9*44937214SPrabhakar Kushwaha struct board_specific_parameters { 10*44937214SPrabhakar Kushwaha u32 n_ranks; 11*44937214SPrabhakar Kushwaha u32 datarate_mhz_high; 12*44937214SPrabhakar Kushwaha u32 rank_gb; 13*44937214SPrabhakar Kushwaha u32 clk_adjust; 14*44937214SPrabhakar Kushwaha u32 wrlvl_start; 15*44937214SPrabhakar Kushwaha u32 wrlvl_ctl_2; 16*44937214SPrabhakar Kushwaha u32 wrlvl_ctl_3; 17*44937214SPrabhakar Kushwaha }; 18*44937214SPrabhakar Kushwaha 19*44937214SPrabhakar Kushwaha /* 20*44937214SPrabhakar Kushwaha * These tables contain all valid speeds we want to override with board 21*44937214SPrabhakar Kushwaha * specific parameters. datarate_mhz_high values need to be in ascending order 22*44937214SPrabhakar Kushwaha * for each n_ranks group. 23*44937214SPrabhakar Kushwaha */ 24*44937214SPrabhakar Kushwaha 25*44937214SPrabhakar Kushwaha static const struct board_specific_parameters udimm0[] = { 26*44937214SPrabhakar Kushwaha /* 27*44937214SPrabhakar Kushwaha * memory controller 0 28*44937214SPrabhakar Kushwaha * num| hi| rank| clk| wrlvl | wrlvl | wrlvl 29*44937214SPrabhakar Kushwaha * ranks| mhz| GB |adjst| start | ctl2 | ctl3 30*44937214SPrabhakar Kushwaha */ 31*44937214SPrabhakar Kushwaha {2, 2140, 0, 4, 4, 0x0, 0x0}, 32*44937214SPrabhakar Kushwaha {1, 2140, 0, 4, 4, 0x0, 0x0}, 33*44937214SPrabhakar Kushwaha {} 34*44937214SPrabhakar Kushwaha }; 35*44937214SPrabhakar Kushwaha 36*44937214SPrabhakar Kushwaha /* DP-DDR DIMM */ 37*44937214SPrabhakar Kushwaha static const struct board_specific_parameters udimm2[] = { 38*44937214SPrabhakar Kushwaha /* 39*44937214SPrabhakar Kushwaha * memory controller 2 40*44937214SPrabhakar Kushwaha * num| hi| rank| clk| wrlvl | wrlvl | wrlvl 41*44937214SPrabhakar Kushwaha * ranks| mhz| GB |adjst| start | ctl2 | ctl3 42*44937214SPrabhakar Kushwaha */ 43*44937214SPrabhakar Kushwaha {2, 2140, 0, 4, 4, 0x0, 0x0}, 44*44937214SPrabhakar Kushwaha {1, 2140, 0, 4, 4, 0x0, 0x0}, 45*44937214SPrabhakar Kushwaha {} 46*44937214SPrabhakar Kushwaha }; 47*44937214SPrabhakar Kushwaha 48*44937214SPrabhakar Kushwaha static const struct board_specific_parameters rdimm0[] = { 49*44937214SPrabhakar Kushwaha /* 50*44937214SPrabhakar Kushwaha * memory controller 0 51*44937214SPrabhakar Kushwaha * num| hi| rank| clk| wrlvl | wrlvl | wrlvl 52*44937214SPrabhakar Kushwaha * ranks| mhz| GB |adjst| start | ctl2 | ctl3 53*44937214SPrabhakar Kushwaha */ 54*44937214SPrabhakar Kushwaha {4, 2140, 0, 5, 4, 0x0, 0x0}, 55*44937214SPrabhakar Kushwaha {2, 2140, 0, 5, 4, 0x0, 0x0}, 56*44937214SPrabhakar Kushwaha {1, 2140, 0, 4, 4, 0x0, 0x0}, 57*44937214SPrabhakar Kushwaha {} 58*44937214SPrabhakar Kushwaha }; 59*44937214SPrabhakar Kushwaha 60*44937214SPrabhakar Kushwaha /* DP-DDR DIMM */ 61*44937214SPrabhakar Kushwaha static const struct board_specific_parameters rdimm2[] = { 62*44937214SPrabhakar Kushwaha /* 63*44937214SPrabhakar Kushwaha * memory controller 2 64*44937214SPrabhakar Kushwaha * num| hi| rank| clk| wrlvl | wrlvl | wrlvl 65*44937214SPrabhakar Kushwaha * ranks| mhz| GB |adjst| start | ctl2 | ctl3 66*44937214SPrabhakar Kushwaha */ 67*44937214SPrabhakar Kushwaha {4, 2140, 0, 5, 4, 0x0, 0x0}, 68*44937214SPrabhakar Kushwaha {2, 2140, 0, 5, 4, 0x0, 0x0}, 69*44937214SPrabhakar Kushwaha {1, 2140, 0, 4, 4, 0x0, 0x0}, 70*44937214SPrabhakar Kushwaha {} 71*44937214SPrabhakar Kushwaha }; 72*44937214SPrabhakar Kushwaha 73*44937214SPrabhakar Kushwaha static const struct board_specific_parameters *udimms[] = { 74*44937214SPrabhakar Kushwaha udimm0, 75*44937214SPrabhakar Kushwaha udimm0, 76*44937214SPrabhakar Kushwaha udimm2, 77*44937214SPrabhakar Kushwaha }; 78*44937214SPrabhakar Kushwaha 79*44937214SPrabhakar Kushwaha static const struct board_specific_parameters *rdimms[] = { 80*44937214SPrabhakar Kushwaha rdimm0, 81*44937214SPrabhakar Kushwaha rdimm0, 82*44937214SPrabhakar Kushwaha rdimm2, 83*44937214SPrabhakar Kushwaha }; 84*44937214SPrabhakar Kushwaha 85*44937214SPrabhakar Kushwaha 86*44937214SPrabhakar Kushwaha #endif 87