blob: cf2c1b98023b066e30a116c0b28dc00fa4a64bd8 [file] [log] [blame]
Angel Pons60ec3652020-04-03 01:22:13 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Wonkyu Kim7e303582020-03-06 14:36:23 -08002
Wonkyu Kim7e303582020-03-06 14:36:23 -08003#include <baseboard/variants.h>
4#include <intelblocks/mp_init.h>
5
6size_t __weak variant_memory_sku(void)
7{
8 return 0;
9}
10
Furquan Shaikhf06d0462020-12-31 21:15:34 -080011static const struct mb_cfg mem_config = {
12 .type = MEM_TYPE_LP4X,
13
Wonkyu Kim7e303582020-03-06 14:36:23 -080014 /* DQ byte map */
Furquan Shaikhf06d0462020-12-31 21:15:34 -080015 .lp4x_dq_map = {
16 .ddr0 = {
17 .dq0 = { 8, 9, 12, 11, 13, 15, 10, 14, }, /* DDR0_DQ0[7:0] */
18 .dq1 = { 4, 6, 0, 2, 5, 7, 1, 3, }, /* DDR0_DQ1[7:0] */
Furquan Shaikh5b1f3352020-03-26 15:36:19 -070019 },
Furquan Shaikhf06d0462020-12-31 21:15:34 -080020 .ddr1 = {
21 .dq0 = { 2, 3, 0, 6, 1, 7, 5, 4, }, /* DDR1_DQ0[7:0] */
22 .dq1 = { 15, 14, 13, 8, 12, 11, 9, 10, }, /* DDR1_DQ1[7:0] */
Furquan Shaikh5b1f3352020-03-26 15:36:19 -070023 },
Furquan Shaikhf06d0462020-12-31 21:15:34 -080024 .ddr2 = {
25 .dq0 = { 1, 0, 3, 2, 5, 4, 7, 6, }, /* DDR2_DQ0[7:0] */
26 .dq1 = { 14, 15, 12, 13, 8, 10, 9, 11, }, /* DDR2_DQ1[7:0] */
Furquan Shaikh5b1f3352020-03-26 15:36:19 -070027 },
Furquan Shaikhf06d0462020-12-31 21:15:34 -080028 .ddr3 = {
29 .dq0 = { 8, 10, 11, 9, 15, 12, 14, 13, }, /* DDR3_DQ0[7:0] */
30 .dq1 = { 4, 7, 6, 5, 2, 0, 1, 3, }, /* DDR3_DQ1[7:0] */
Furquan Shaikh5b1f3352020-03-26 15:36:19 -070031 },
Furquan Shaikhf06d0462020-12-31 21:15:34 -080032 .ddr4 = {
33 .dq0 = { 8, 9, 10, 11, 13, 12, 15, 14, }, /* DDR4_DQ0[7:0] */
34 .dq1 = { 7, 6, 4, 5, 0, 2, 1, 3, }, /* DDR4_DQ1[7:0] */
Furquan Shaikh5b1f3352020-03-26 15:36:19 -070035 },
Furquan Shaikhf06d0462020-12-31 21:15:34 -080036 .ddr5 = {
37 .dq0 = { 1, 3, 0, 2, 6, 4, 5, 7, }, /* DDR5_DQ0[7:0] */
38 .dq1 = { 14, 15, 10, 12, 8, 13, 11, 9, }, /* DDR5_DQ1[7:0] */
Furquan Shaikh5b1f3352020-03-26 15:36:19 -070039 },
Furquan Shaikhf06d0462020-12-31 21:15:34 -080040 .ddr6 = {
41 .dq0 = { 1, 0, 2, 4, 5, 3, 7, 6, }, /* DDR6_DQ0[7:0] */
42 .dq1 = { 12, 14, 15, 13, 9, 10, 8, 11, }, /* DDR6_DQ1[7:0] */
Furquan Shaikh5b1f3352020-03-26 15:36:19 -070043 },
Furquan Shaikhf06d0462020-12-31 21:15:34 -080044 .ddr7 = {
45 .dq0 = { 11, 9, 8, 13, 12, 14, 15, 10, }, /* DDR7_DQ0[7:0] */
46 .dq1 = { 4, 7, 5, 1, 2, 6, 3, 0, }, /* DDR7_DQ1[7:0] */
Furquan Shaikh5b1f3352020-03-26 15:36:19 -070047 },
Wonkyu Kim7e303582020-03-06 14:36:23 -080048 },
49
50 /* DQS CPU<>DRAM map */
Furquan Shaikhf06d0462020-12-31 21:15:34 -080051 .lp4x_dqs_map = {
52 .ddr0 = { .dqs0 = 1, .dqs1 = 0 }, /* DDR0_DQS[1:0] */
53 .ddr1 = { .dqs0 = 0, .dqs1 = 1 }, /* DDR1_DQS[1:0] */
54 .ddr2 = { .dqs0 = 0, .dqs1 = 1 }, /* DDR2_DQS[1:0] */
55 .ddr3 = { .dqs0 = 1, .dqs1 = 0 }, /* DDR3_DQS[1:0] */
56 .ddr4 = { .dqs0 = 1, .dqs1 = 0 }, /* DDR4_DQS[1:0] */
57 .ddr5 = { .dqs0 = 0, .dqs1 = 1 }, /* DDR5_DQS[1:0] */
58 .ddr6 = { .dqs0 = 0, .dqs1 = 1 }, /* DDR6_DQS[1:0] */
59 .ddr7 = { .dqs0 = 1, .dqs1 = 0 }, /* DDR7_DQS[1:0] */
Wonkyu Kim7e303582020-03-06 14:36:23 -080060 },
61
Furquan Shaikhf06d0462020-12-31 21:15:34 -080062 .ect = true, /* Early Command Training */
Wonkyu Kim7e303582020-03-06 14:36:23 -080063};
64
Furquan Shaikhf06d0462020-12-31 21:15:34 -080065const struct mb_cfg *__weak variant_memory_params(void)
Wonkyu Kim7e303582020-03-06 14:36:23 -080066{
67 return &mem_config;
68}