blob: 5a7fa57832be8e66acc2e38de6a99adaaca596ef [file] [log] [blame]
Subrata Banik16e41062020-10-06 20:13:06 +05301/* SPDX-License-Identifier: GPL-2.0-only */
2
Subrata Banik16e41062020-10-06 20:13:06 +05303#include <baseboard/variants.h>
4#include <soc/romstage.h>
5
Elyes HAOUAS45ce5d82021-01-31 09:15:30 +01006#include "board_id.h"
7
Subrata Banikb544fe42020-10-28 13:25:06 +05308static const struct mb_cfg ddr4_mem_config = {
Furquan Shaikha1c247b2020-12-31 22:50:14 -08009 .type = MEM_TYPE_DDR4,
Subrata Banikb544fe42020-10-28 13:25:06 +053010
11 .ect = true, /* Early Command Training */
12
13 .UserBd = BOARD_TYPE_MOBILE,
Furquan Shaikha1c247b2020-12-31 22:50:14 -080014
15 .ddr_config = {
16
17 /* Baseboard uses only 100ohm Rcomp resistors */
18 .rcomp_resistor = {100, 100, 100},
19
20 /* Baseboard Rcomp target values */
21 .rcomp_targets = {40, 30, 33, 33, 30},
22
23 .dq_pins_interleaved = false,
24 },
Subrata Banikb544fe42020-10-28 13:25:06 +053025};
26
27static const struct mb_cfg lpddr4_mem_config = {
Furquan Shaikha1c247b2020-12-31 22:50:14 -080028 .type = MEM_TYPE_LP4X,
29
Subrata Banik16e41062020-10-06 20:13:06 +053030 /* DQ byte map */
Furquan Shaikha1c247b2020-12-31 22:50:14 -080031 .lpx_dq_map = {
32 .ddr0 = {
33 .dq0 = { 0, 2, 3, 1, 6, 7, 5, 4, },
34 .dq1 = { 10, 8, 11, 9, 14, 12, 13, 15, },
35 },
36 .ddr1 = {
37 .dq0 = { 12, 8, 14, 10, 11, 13, 15, 9, },
38 .dq1 = { 5, 0, 7, 3, 6, 2, 1, 4, },
39 },
40 .ddr2 = {
41 .dq0 = { 3, 0, 2, 1, 6, 5, 4, 7, },
42 .dq1 = { 12, 13, 14, 15, 10, 9, 8, 11, },
43 },
44 .ddr3 = {
45 .dq0 = { 2, 6, 7, 1, 3, 4, 0, 5, },
46 .dq1 = { 9, 13, 8, 15, 14, 11, 12, 10, },
47 },
48 .ddr4 = {
49 .dq0 = { 3, 0, 1, 2, 7, 4, 6, 5, },
50 .dq1 = { 10, 8, 11, 9, 14, 13, 12, 15, },
51 },
52 .ddr5 = {
53 .dq0 = { 10, 12, 14, 8, 9, 13, 15, 11, },
54 .dq1 = { 3, 7, 6, 2, 0, 4, 5, 1, },
55 },
56 .ddr6 = {
57 .dq0 = { 12, 15, 14, 13, 9, 10, 11, 8, },
58 .dq1 = { 7, 4, 6, 5, 0, 1, 3, 2, },
59 },
60 .ddr7 = {
61 .dq0 = { 0, 2, 4, 3, 1, 6, 7, 5, },
62 .dq1 = { 13, 9, 10, 11, 8, 12, 14, 15, },
63 },
Subrata Banik16e41062020-10-06 20:13:06 +053064 },
65
66 /* DQS CPU<>DRAM map */
Furquan Shaikha1c247b2020-12-31 22:50:14 -080067 .lpx_dqs_map = {
68 .ddr0 = { .dqs0 = 0, .dqs1 = 1 },
69 .ddr1 = { .dqs0 = 1, .dqs1 = 0 },
70 .ddr2 = { .dqs0 = 0, .dqs1 = 1 },
71 .ddr3 = { .dqs0 = 0, .dqs1 = 1 },
72 .ddr4 = { .dqs0 = 0, .dqs1 = 1 },
73 .ddr5 = { .dqs0 = 1, .dqs1 = 0 },
74 .ddr6 = { .dqs0 = 1, .dqs1 = 0 },
75 .ddr7 = { .dqs0 = 0, .dqs1 = 1 },
Subrata Banik16e41062020-10-06 20:13:06 +053076 },
77
Subrata Banik16e41062020-10-06 20:13:06 +053078 .ect = true, /* Early Command Training */
79
80 .UserBd = BOARD_TYPE_MOBILE,
81};
82
Sridhar Siricillaae81d592020-10-28 22:28:07 +053083static const struct mb_cfg lp5_mem_config = {
Furquan Shaikha1c247b2020-12-31 22:50:14 -080084 .type = MEM_TYPE_LP5X,
Sridhar Siricillaae81d592020-10-28 22:28:07 +053085
86 /* DQ byte map */
Furquan Shaikha1c247b2020-12-31 22:50:14 -080087 .lpx_dq_map = {
88 .ddr0 = {
89 .dq0 = { 3, 2, 1, 0, 5, 4, 6, 7, },
90 .dq1 = { 15, 14, 12, 13, 8, 9, 10, 11, },
91 },
92 .ddr1 = {
93 .dq0 = { 0, 2, 3, 1, 5, 7, 4, 6, },
94 .dq1 = { 14, 13, 15, 12, 8, 9, 11, 10, },
95 },
96 .ddr2 = {
97 .dq0 = { 1, 2, 0, 3, 4, 6, 5, 7, },
98 .dq1 = { 15, 13, 12, 14, 9, 10, 8, 11, },
99 },
100 .ddr3 = {
101 .dq0 = { 2, 1, 3, 0, 7, 4, 5, 6, },
102 .dq1 = { 13, 12, 15, 14, 9, 11, 8, 10, },
103 },
104 .ddr4 = {
105 .dq0 = { 1, 2, 3, 0, 6, 4, 5, 7, },
106 .dq1 = { 15, 13, 14, 12, 10, 9, 8, 11, },
107 },
108 .ddr5 = {
109 .dq0 = { 1, 0, 3, 2, 6, 7, 4, 5, },
110 .dq1 = { 14, 12, 15, 13, 8, 9, 10, 11, },
111 },
112 .ddr6 = {
113 .dq0 = { 0, 2, 1, 3, 4, 7, 5, 6, },
114 .dq1 = { 12, 13, 15, 14, 9, 11, 10, 8, },
115 },
116 .ddr7 = {
117 .dq0 = { 3, 2, 1, 0, 5, 4, 6, 7, },
118 .dq1 = { 13, 15, 11, 12, 10, 9, 14, 8, },
119 },
Sridhar Siricillaae81d592020-10-28 22:28:07 +0530120 },
121
122 /* DQS CPU<>DRAM map */
Furquan Shaikha1c247b2020-12-31 22:50:14 -0800123 .lpx_dqs_map = {
124 .ddr0 = { .dqs0 = 0, .dqs1 = 1 },
125 .ddr1 = { .dqs0 = 0, .dqs1 = 1 },
126 .ddr2 = { .dqs0 = 0, .dqs1 = 1 },
127 .ddr3 = { .dqs0 = 0, .dqs1 = 1 },
128 .ddr4 = { .dqs0 = 0, .dqs1 = 1 },
129 .ddr5 = { .dqs0 = 0, .dqs1 = 1 },
130 .ddr6 = { .dqs0 = 0, .dqs1 = 1 },
131 .ddr7 = { .dqs0 = 0, .dqs1 = 1 }
Sridhar Siricillaae81d592020-10-28 22:28:07 +0530132 },
133
Sridhar Siricillaae81d592020-10-28 22:28:07 +0530134 .ect = false, /* Early Command Training */
135
Sridhar Siricillaae81d592020-10-28 22:28:07 +0530136 .UserBd = BOARD_TYPE_MOBILE,
Furquan Shaikha1c247b2020-12-31 22:50:14 -0800137
138 .lp5x_config = {
139 .ccc_config = 0xff,
140 },
Sridhar Siricillaae81d592020-10-28 22:28:07 +0530141};
142
Subrata Banik70296652020-10-28 13:50:19 +0530143static const struct mb_cfg ddr5_mem_config = {
Furquan Shaikha1c247b2020-12-31 22:50:14 -0800144 .type = MEM_TYPE_DDR5,
Subrata Banik70296652020-10-28 13:50:19 +0530145
146 .ect = true, /* Early Command Training */
147
148 .UserBd = BOARD_TYPE_MOBILE,
Furquan Shaikha1c247b2020-12-31 22:50:14 -0800149
150 .ddr_config = {
151 /* Baseboard uses only 100ohm Rcomp resistors */
152 .rcomp_resistor = {100, 100, 100},
153
154 /* Baseboard Rcomp target values */
155 .rcomp_targets = {50, 30, 30, 30, 27},
156
157 .dq_pins_interleaved = false,
158 }
Subrata Banik70296652020-10-28 13:50:19 +0530159};
160
Subrata Banik16e41062020-10-06 20:13:06 +0530161const struct mb_cfg *variant_memory_params(void)
162{
Subrata Banikb544fe42020-10-28 13:25:06 +0530163 int board_id = get_board_id();
164
Sridhar Siricillac046dd02020-10-30 11:45:24 +0530165 switch (board_id) {
166 case ADL_P_LP4_1:
167 case ADL_P_LP4_2:
Subrata Banikb544fe42020-10-28 13:25:06 +0530168 return &lpddr4_mem_config;
Sridhar Siricillac046dd02020-10-30 11:45:24 +0530169 case ADL_P_DDR4_1:
170 case ADL_P_DDR4_2:
Subrata Banikb544fe42020-10-28 13:25:06 +0530171 return &ddr4_mem_config;
Sridhar Siricillac046dd02020-10-30 11:45:24 +0530172 case ADL_P_DDR5:
Subrata Banik70296652020-10-28 13:50:19 +0530173 return &ddr5_mem_config;
Sridhar Siricillaae81d592020-10-28 22:28:07 +0530174 case ADL_P_LP5:
175 return &lp5_mem_config;
Sridhar Siricillac046dd02020-10-30 11:45:24 +0530176 default:
177 die("unsupported board id : 0x%x\n", board_id);
178 }
Subrata Banik16e41062020-10-06 20:13:06 +0530179}