aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/fsp_baytrail/chip.h
blob: 65377a62c58320f6468a18afdeeb9ba366b7b1b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
/*
 * This file is part of the coreboot project.
 *
 * Copyright (C) 2013 Google Inc.
 * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
 * Copyright (C) 2014 Intel Corporation
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 */

#ifndef _FSP_BAYTRAIL_CHIP_H_
#define _FSP_BAYTRAIL_CHIP_H_

#include <arch/acpi.h>

/* The devicetree parser expects chip.h to reside directly in the path
 * specified by the devicetree. */

struct soc_intel_fsp_baytrail_config {

/* ***** UPD Configuration ***** */

	/* Spd addresses */
	uint8_t  PcdMrcInitSPDAddr1;
	uint8_t  PcdMrcInitSPDAddr2;
	#define SPD_ADDR_DEFAULT	0x00
	#define SPD_ADDR_DISABLED	0xFF

	/* SataMode
	 *  NOTE: These are offset by 1 to set 0 as "use default".  This is so that
	 *  if the register value is not set in the devicetree.cb file, the default
	 *  value gets used.  This is fixed up in the chipset_fsp_util.c code.
	 *
	 *  0x0 "IDE"
	 *  0x1 "AHCI"
	 */
	uint8_t  PcdSataMode;
	#define SATA_MODE_DEFAULT	0x00
	#define SATA_MODE_IDE		0x01
	#define SATA_MODE_AHCI		0x02

	/*
	 * MrcInitTsegSize
	 *  0x01, "1 MB"
	 *  0x02, "2 MB"
	 *  0x04, "4 MB"
	 *  0x08, "8 MB"
	 */
	uint16_t PcdMrcInitTsegSize;
	#define TSEG_SIZE_DEFAULT	0
	#define TSEG_SIZE_1_MB		1
	#define TSEG_SIZE_2_MB		2
	#define TSEG_SIZE_4_MB		4
	#define TSEG_SIZE_8_MB		8

	/*
	 * MrcInitMmioSize
	 *  0x400, "1.0 GB"s
	 *  0x600, "1.5 GB"
	 *  0x800, "2.0 GB"
	 */
	uint16_t PcdMrcInitMmioSize;
	#define MMIO_SIZE_DEFAULT	0x00
	#define MMIO_SIZE_1_0_GB	0x400
	#define MMIO_SIZE_1_5_GB	0x600
	#define MMIO_SIZE_2_0_GB	0x800

	/*
	 * eMMCBootMode
	 *   NOTE: These are offset by 1 to set 0 as "use default".  This is so that
	 *   if the register value is not set in the devicetree.cb file, the default
	 *   value gets used.  This is fixed up in the chipset_fsp_util.c code
	 *
	 *   0x0 "Disabled"
	 *   0x1 "Auto"
	 *   0x2 "eMMC 4.1"
	 *   0x3 "eMMC 4.5"
	 */
	uint8_t PcdeMMCBootMode;
	#define EMMC_USE_DEFAULT		0
	#define EMMC_DISABLED			1
	#define EMMC_AUTO				2
	#define EMMC_4_1				3
	#define EMMC_4_5				4
	#define EMMC_FOLLOWS_DEVICETREE	5

	/*
	 * IgdDvmt50PreAlloc
	 *  0x01, "32 MB"
	 *  0x02, "64 MB"
	 *  0x03, "96 MB"
	 *  0x04, "128 MB"
	 *  0x05, "160 MB"
	 *  0x06, "192 MB"
	 *  0x07, "224 MB"
	 *  0x08, "256 MB"
	 *  0x09, "288 MB"
	 *  0x0A, "320 MB"
	 *  0x0B, "352 MB"
	 *  0x0C, "384 MB"
	 *  0x0D, "416 MB"
	 *  0x0E, "448 MB"
	 *  0x0F, "480 MB"
	 *  0x10, "512 MB"
	 */
	uint8_t PcdIgdDvmt50PreAlloc;
	#define IGD_MEMSIZE_DEFAULT	0x00
	#define IGD_MEMSIZE_32MB	0x01
	#define IGD_MEMSIZE_64MB	0x02
	#define IGD_MEMSIZE_96MB	0x03
	#define IGD_MEMSIZE_128MB	0x04
	#define IGD_MEMSIZE_160MB	0x05
	#define IGD_MEMSIZE_192MB	0x06
	#define IGD_MEMSIZE_224MB	0x07
	#define IGD_MEMSIZE_256MB	0x08
	#define IGD_MEMSIZE_288MB	0x09
	#define IGD_MEMSIZE_320MB	0x0A
	#define IGD_MEMSIZE_352MB	0x0B
	#define IGD_MEMSIZE_384MB	0x0C
	#define IGD_MEMSIZE_416MB	0x0D
	#define IGD_MEMSIZE_448MB	0x0E
	#define IGD_MEMSIZE_480MB	0x0F
	#define IGD_MEMSIZE_512MB	0x10
	#define IGD_MEMSIZE_MULTIPLIER	32

	/*
	 * Selection 0x1 , "128 MB"
	 * Selection 0x2 , "256 MB"
	 * Selection 0x3 , "512 MB"
	 */
	uint8_t PcdApertureSize;
	#define APERTURE_SIZE_DEFAULT	0
	#define APERTURE_SIZE_128MB		1
	#define APERTURE_SIZE_256MB		2
	#define APERTURE_SIZE_512MB		3
	#define APERTURE_SIZE_BASE		64

	/*
	 * Selection 0x1 , "1 MB"
	 * Selection 0x2 , "2 MB"
	 */
	uint8_t PcdGttSize;
	#define GTT_SIZE_DEFAULT	0
	#define GTT_SIZE_1MB		1
	#define GTT_SIZE_2MB		2

	/*
	 *  Enable PCI Mode for LPSS SIO devices.
	 *  If disabled, LPSS SIO devices will run in ACPI mode.
	 */
	uint8_t PcdLpssSioEnablePciMode;
	#define LPSS_PCI_MODE_DEFAULT	0x00
	#define LPSS_PCI_MODE_DISABLE	0x01
	#define LPSS_PCI_MODE_ENABLE	0x02

	/* modifiers for various enables */
	uint8_t  AzaliaAutoEnable;
	#define AZALIA_FOLLOWS_DEVICETREE	0
	#define AZALIA_FSP_AUTO_ENABLE		1

	uint8_t  LpeAcpiModeEnable;
	#define LPE_ACPI_MODE_DISABLED	1
	#define LPE_ACPI_MODE_ENABLED	2

	uint32_t SerialDebugPortAddress;
	#define  SerialDebugPortAddress_DEFAULT 0

	uint8_t  SerialDebugPortType;
	#define  SERIAL_DEBUG_PORT_DEFAULT      0
	#define  SERIAL_DEBUG_PORT_TYPE_NONE    1
	#define  SERIAL_DEBUG_PORT_TYPE_IO      2
	#define  SERIAL_DEBUG_PORT_TYPE_MMIO    3

	uint8_t  PcdMrcDebugMsg;
	#define  MRC_DEBUG_MSG_DEFAULT          0
	#define  MRC_DEBUG_MSG_DISABLE          1
	#define  MRC_DEBUG_MSG_ENABLE           2

	uint8_t  PcdSccEnablePciMode;
	#define  SCC_PCI_MODE_DEFAULT           0
	#define  SCC_PCI_MODE_DISABLE           1
	#define  SCC_PCI_MODE_ENABLE            2

	uint8_t  IgdRenderStandby;
	#define  IGD_RENDER_STANDBY_DEFAULT     0
	#define  IGD_RENDER_STANDBY_DISABLE     1
	#define  IGD_RENDER_STANDBY_ENABLE      2

	uint8_t  TxeUmaEnable;
	#define  TXE_UMA_DEFAULT                0
	#define  TXE_UMA_DISABLE                1
	#define  TXE_UMA_ENABLE                 2

	/* Memory down data */
	uint8_t  EnableMemoryDown;
	#define  MEMORY_DOWN_DEFAULT            0
	#define  MEMORY_DOWN_DISABLE            1
	#define  MEMORY_DOWN_ENABLE             2

	uint8_t  DRAMSpeed;
	#define  DRAM_SPEED_DEFAULT             0
	#define  DRAM_SPEED_800MHZ              1
	#define  DRAM_SPEED_1066MHZ             2
	#define  DRAM_SPEED_1333MHZ             3
	#define  DRAM_SPEED_1600MHZ             4

	uint8_t  DRAMType;
	#define  DRAM_TYPE_DEFAULT              0
	#define  DRAM_TYPE_DDR3                 1
	#define  DRAM_TYPE_DDR3L                2

	uint8_t  DIMM0Enable;
	#define  DIMM0_ENABLE_DEFAULT           0
	#define  DIMM0_DISABLE                  1
	#define  DIMM0_ENABLE                   2

	uint8_t  DIMM1Enable;
	#define  DIMM1_ENABLE_DEFAULT           0
	#define  DIMM1_DISABLE                  1
	#define  DIMM1_ENABLE                   2

	uint8_t  DIMMDWidth;
	#define  DIMM_DWIDTH_DEFAULT            0
	#define  DIMM_DWIDTH_X8                 1
	#define  DIMM_DWIDTH_X16                2
	#define  DIMM_DWIDTH_X32                3

	uint8_t  DIMMDensity;
	#define  DIMM_DENSITY_DEFAULT           0
	#define  DIMM_DENSITY_1G_BIT            1
	#define  DIMM_DENSITY_2G_BIT            2
	#define  DIMM_DENSITY_4G_BIT            3
	#define  DIMM_DENSITY_8G_BIT            4

	uint8_t  DIMMBusWidth;
	#define  DIMM_BUS_WIDTH_DEFAULT         0
	#define  DIMM_BUS_WIDTH_8BIT            1
	#define  DIMM_BUS_WIDTH_16BIT           2
	#define  DIMM_BUS_WIDTH_32BIT           3
	#define  DIMM_BUS_WIDTH_64BIT           4

	uint8_t  DIMMSides;
	#define  DIMM_SIDES_DEFAULT             0
	#define  DIMM_SIDES_1RANK               1
	#define  DIMM_SIDES_2RANK               2

	uint8_t  DIMMtCL;
	#define  DIMM_TCL_DEFAULT               0

	uint8_t  DIMMtRPtRCD;
	#define  DIMM_TRP_TRCD_DEFAULT          0

	uint8_t  DIMMtWR;
	#define  DIMM_TWR_DEFAULT               0

	uint8_t  DIMMtWTR;
	#define  DIMM_TWTR_DEFAULT              0

	uint8_t  DIMMtRRD;
	#define  DIMM_TRRD_DEFAULT              0

	uint8_t  DIMMtRTP;
	#define  DIMM_TRTP_DEFAULT              0

	uint8_t  DIMMtFAW;
	#define  DIMM_TFAW_DEFAULT              0

/* ***** ACPI configuration ***** */
	/* Options for these are in src/arch/x86/include/arch/acpi.h */
	uint8_t  fadt_pm_profile;
	uint16_t fadt_boot_arch;

};

extern struct chip_operations soc_intel_fsp_baytrail_ops;
#endif /* _FSP_BAYTRAIL_CHIP_H_ */