xref: /aosp_15_r20/external/gsc-utils/board/cr50/board.h (revision 4f2df630800bdcf1d4f0decf95d8a1cb87344f5f)
1*4f2df630SAndroid Build Coastguard Worker /* Copyright 2014 The ChromiumOS Authors
2*4f2df630SAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
3*4f2df630SAndroid Build Coastguard Worker  * found in the LICENSE file.
4*4f2df630SAndroid Build Coastguard Worker  */
5*4f2df630SAndroid Build Coastguard Worker 
6*4f2df630SAndroid Build Coastguard Worker #ifndef __CROS_EC_BOARD_H
7*4f2df630SAndroid Build Coastguard Worker #define __CROS_EC_BOARD_H
8*4f2df630SAndroid Build Coastguard Worker 
9*4f2df630SAndroid Build Coastguard Worker #define CONFIG_LTO
10*4f2df630SAndroid Build Coastguard Worker 
11*4f2df630SAndroid Build Coastguard Worker /*
12*4f2df630SAndroid Build Coastguard Worker  * The default watchdog timeout is 1.6 seconds, but there are some legitimate
13*4f2df630SAndroid Build Coastguard Worker  * flash-intensive TPM operations that actually take close to that long to
14*4f2df630SAndroid Build Coastguard Worker  * complete. Make sure we don't trigger the watchdog accidentally if the timing
15*4f2df630SAndroid Build Coastguard Worker  * is just a little off.
16*4f2df630SAndroid Build Coastguard Worker  */
17*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_WATCHDOG_PERIOD_MS
18*4f2df630SAndroid Build Coastguard Worker #define CONFIG_WATCHDOG_PERIOD_MS 5000
19*4f2df630SAndroid Build Coastguard Worker 
20*4f2df630SAndroid Build Coastguard Worker /* Features that we don't want */
21*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_LID_ANGLE
22*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_POWERINDEBUG
23*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_DMA_DEFAULT_HANDLERS
24*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_FMAP
25*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_HIBERNATE
26*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_LID_SWITCH
27*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_SYSINFO
28*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_SYSJUMP
29*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_SYSLOCK
30*4f2df630SAndroid Build Coastguard Worker 
31*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CUSTOMIZED_RO
32*4f2df630SAndroid Build Coastguard Worker /* TODO: find a way to drop RO build. */
33*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FW_INCLUDE_RO
34*4f2df630SAndroid Build Coastguard Worker 
35*4f2df630SAndroid Build Coastguard Worker #ifndef CR50_DEV
36*4f2df630SAndroid Build Coastguard Worker /* Disable stuff that should only be in debug builds */
37*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_CRASH
38*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_MD
39*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_RW
40*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_SLEEPMASK_SET
41*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_WAITMS
42*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_FLASH
43*4f2df630SAndroid Build Coastguard Worker #else
44*4f2df630SAndroid Build Coastguard Worker /*
45*4f2df630SAndroid Build Coastguard Worker  * Add chargen to standard TOT images. The DBG image doesn't have enough room
46*4f2df630SAndroid Build Coastguard Worker  * for it.
47*4f2df630SAndroid Build Coastguard Worker  */
48*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CMD_CHARGEN
49*4f2df630SAndroid Build Coastguard Worker #endif
50*4f2df630SAndroid Build Coastguard Worker 
51*4f2df630SAndroid Build Coastguard Worker #if defined(H1_RED_BOARD) || defined(CR50_DEV)
52*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_SELECT_PHY
53*4f2df630SAndroid Build Coastguard Worker #endif
54*4f2df630SAndroid Build Coastguard Worker 
55*4f2df630SAndroid Build Coastguard Worker /* Enable getting gpio flags to tell if open drain pins are asserted */
56*4f2df630SAndroid Build Coastguard Worker #define CONFIG_GPIO_GET_EXTENDED
57*4f2df630SAndroid Build Coastguard Worker /* Disable sleep when gpios with GPIO_SLEEP_DIS flags are asserted. */
58*4f2df630SAndroid Build Coastguard Worker #define CONFIG_GPIO_DISABLE_SLEEP
59*4f2df630SAndroid Build Coastguard Worker 
60*4f2df630SAndroid Build Coastguard Worker /* Flash configuration */
61*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_FLASH_PSTATE
62*4f2df630SAndroid Build Coastguard Worker #define CONFIG_WP_ALWAYS
63*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CMD_FLASH
64*4f2df630SAndroid Build Coastguard Worker 
65*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CRC8
66*4f2df630SAndroid Build Coastguard Worker 
67*4f2df630SAndroid Build Coastguard Worker /* We're using TOP_A for partition 0, TOP_B for partition 1 */
68*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM
69*4f2df630SAndroid Build Coastguard Worker /* Offset to start of NvMem area from base of flash */
70*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM_OFFSET_A (CFG_TOP_A_OFF)
71*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM_OFFSET_B (CFG_TOP_B_OFF)
72*4f2df630SAndroid Build Coastguard Worker /* Address of start of Nvmem area */
73*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM_BASE_A \
74*4f2df630SAndroid Build Coastguard Worker 	(CONFIG_PROGRAM_MEMORY_BASE + CONFIG_FLASH_NVMEM_OFFSET_A)
75*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM_BASE_B \
76*4f2df630SAndroid Build Coastguard Worker 	(CONFIG_PROGRAM_MEMORY_BASE + CONFIG_FLASH_NVMEM_OFFSET_B)
77*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NEW_NVMEM_BASE_A \
78*4f2df630SAndroid Build Coastguard Worker 	(CONFIG_FLASH_NVMEM_BASE_A + CONFIG_FLASH_BANK_SIZE)
79*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NEW_NVMEM_BASE_B \
80*4f2df630SAndroid Build Coastguard Worker 	(CONFIG_FLASH_NVMEM_BASE_B + CONFIG_FLASH_BANK_SIZE)
81*4f2df630SAndroid Build Coastguard Worker 
82*4f2df630SAndroid Build Coastguard Worker /* Size partition in NvMem */
83*4f2df630SAndroid Build Coastguard Worker #define NVMEM_PARTITION_SIZE	 (CFG_TOP_SIZE)
84*4f2df630SAndroid Build Coastguard Worker #define NEW_NVMEM_PARTITION_SIZE (NVMEM_PARTITION_SIZE - CONFIG_FLASH_BANK_SIZE)
85*4f2df630SAndroid Build Coastguard Worker #define NEW_NVMEM_TOTAL_PAGES \
86*4f2df630SAndroid Build Coastguard Worker 	(2 * NEW_NVMEM_PARTITION_SIZE / CONFIG_FLASH_BANK_SIZE)
87*4f2df630SAndroid Build Coastguard Worker /* Size in bytes of NvMem area */
88*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_LOG
89*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM_SIZE (NVMEM_PARTITION_SIZE * NVMEM_NUM_PARTITIONS)
90*4f2df630SAndroid Build Coastguard Worker /* Enable <key, value> variable support. */
91*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM_VARS
92*4f2df630SAndroid Build Coastguard Worker #define NVMEM_CR50_SIZE			  272
93*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM_VARS_USER_SIZE NVMEM_CR50_SIZE
94*4f2df630SAndroid Build Coastguard Worker 
95*4f2df630SAndroid Build Coastguard Worker /* Go to sleep when nothing else is happening */
96*4f2df630SAndroid Build Coastguard Worker #define CONFIG_LOW_POWER_IDLE
97*4f2df630SAndroid Build Coastguard Worker 
98*4f2df630SAndroid Build Coastguard Worker /* Allow multiple concurrent memory allocations. */
99*4f2df630SAndroid Build Coastguard Worker #define CONFIG_MALLOC
100*4f2df630SAndroid Build Coastguard Worker 
101*4f2df630SAndroid Build Coastguard Worker /* Enable debug cable detection */
102*4f2df630SAndroid Build Coastguard Worker #define CONFIG_RDD
103*4f2df630SAndroid Build Coastguard Worker 
104*4f2df630SAndroid Build Coastguard Worker /* Also use the cr50 as a second factor authentication */
105*4f2df630SAndroid Build Coastguard Worker #define CONFIG_U2F
106*4f2df630SAndroid Build Coastguard Worker 
107*4f2df630SAndroid Build Coastguard Worker /* Additional FIPS KAT tests. */
108*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FIPS_RSA2048
109*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FIPS_SW_HMAC_DRBG
110*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FIPS_AES_CBC_256
111*4f2df630SAndroid Build Coastguard Worker 
112*4f2df630SAndroid Build Coastguard Worker /* USB configuration */
113*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB
114*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_CONSOLE_STREAM
115*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_USB_CONSOLE_TX_BUF_SIZE
116*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_CONSOLE_TX_BUF_SIZE 4096
117*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_I2C
118*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_INHIBIT_INIT
119*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_SPI_V2
120*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_SERIALNO
121*4f2df630SAndroid Build Coastguard Worker #define DEFAULT_SERIALNO "0"
122*4f2df630SAndroid Build Coastguard Worker 
123*4f2df630SAndroid Build Coastguard Worker #define CONFIG_STREAM_USART
124*4f2df630SAndroid Build Coastguard Worker #define CONFIG_STREAM_USB
125*4f2df630SAndroid Build Coastguard Worker #define CONFIG_STREAM_USART1
126*4f2df630SAndroid Build Coastguard Worker #define CONFIG_STREAM_USART2
127*4f2df630SAndroid Build Coastguard Worker 
128*4f2df630SAndroid Build Coastguard Worker /* Enable Case Closed Debugging */
129*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CASE_CLOSED_DEBUG_V1
130*4f2df630SAndroid Build Coastguard Worker #define CONFIG_PHYSICAL_PRESENCE
131*4f2df630SAndroid Build Coastguard Worker /* Loosen CCD open requirements. Only allowed in prePVT images */
132*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CCD_OPEN_PREPVT
133*4f2df630SAndroid Build Coastguard Worker 
134*4f2df630SAndroid Build Coastguard Worker #ifdef CR50_DEV
135*4f2df630SAndroid Build Coastguard Worker /* Remove console commands to save space. */
136*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_SLEEPMASK
137*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_TIMERINFO
138*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CONSOLE_HISTORY
139*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_I2C_SCAN
140*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_I2C_XFER
141*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_FLASH
142*4f2df630SAndroid Build Coastguard Worker /* Enable unsafe dev features for CCD in dev builds */
143*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CASE_CLOSED_DEBUG_V1_UNSAFE
144*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CMD_FLASH_LOG
145*4f2df630SAndroid Build Coastguard Worker #define CONFIG_PHYSICAL_PRESENCE_DEBUG_UNSAFE
146*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CMD_ROLLBACK
147*4f2df630SAndroid Build Coastguard Worker #endif
148*4f2df630SAndroid Build Coastguard Worker 
149*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_PID 0x5014
150*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_SELF_POWERED
151*4f2df630SAndroid Build Coastguard Worker 
152*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_USB_MAXPOWER_MA
153*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_MAXPOWER_MA 0
154*4f2df630SAndroid Build Coastguard Worker 
155*4f2df630SAndroid Build Coastguard Worker /* Need to be able to bitbang the EC UART for updates through CCD. */
156*4f2df630SAndroid Build Coastguard Worker #define CONFIG_UART_BITBANG
157*4f2df630SAndroid Build Coastguard Worker 
158*4f2df630SAndroid Build Coastguard Worker /* Enable SPI controller (SPI) module */
159*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SPI_CONTROLLER
160*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SPI_CONTROLLER_CONFIGURE_GPIOS
161*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SPI_FLASH_PORT 0
162*4f2df630SAndroid Build Coastguard Worker 
163*4f2df630SAndroid Build Coastguard Worker /* Enable SPI peripheral (SPP) module */
164*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SPP
165*4f2df630SAndroid Build Coastguard Worker #define CONFIG_TPM_SPP
166*4f2df630SAndroid Build Coastguard Worker 
167*4f2df630SAndroid Build Coastguard Worker #define CONFIG_RBOX
168*4f2df630SAndroid Build Coastguard Worker #define CONFIG_RBOX_WAKEUP
169*4f2df630SAndroid Build Coastguard Worker 
170*4f2df630SAndroid Build Coastguard Worker /* We don't need to send events to the AP */
171*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_HOSTCMD_EVENTS
172*4f2df630SAndroid Build Coastguard Worker 
173*4f2df630SAndroid Build Coastguard Worker /* Make most commands restricted */
174*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CONSOLE_COMMAND_FLAGS
175*4f2df630SAndroid Build Coastguard Worker #define CONFIG_RESTRICTED_CONSOLE_COMMANDS
176*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CONSOLE_COMMAND_FLAGS_DEFAULT CMD_FLAG_RESTRICTED
177*4f2df630SAndroid Build Coastguard Worker 
178*4f2df630SAndroid Build Coastguard Worker /* Inject the fips checksum into the image. */
179*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FIPS_CHECKSUM
180*4f2df630SAndroid Build Coastguard Worker /* Include crypto stuff, both software and hardware. Enable optimizations. */
181*4f2df630SAndroid Build Coastguard Worker /* Use board specific version of dcrypto */
182*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FIPS_UTIL
183*4f2df630SAndroid Build Coastguard Worker #define CONFIG_DCRYPTO_BOARD
184*4f2df630SAndroid Build Coastguard Worker #define CONFIG_UPTO_SHA512
185*4f2df630SAndroid Build Coastguard Worker #define CONFIG_DCRYPTO_RSA_SPEEDUP
186*4f2df630SAndroid Build Coastguard Worker 
187*4f2df630SAndroid Build Coastguard Worker /**
188*4f2df630SAndroid Build Coastguard Worker  * Make sw version equal to hw. Unlike SHA2-256, dcrypto implementation
189*4f2df630SAndroid Build Coastguard Worker  * of SHA2-512/384 allows to save context, so can fully replace software
190*4f2df630SAndroid Build Coastguard Worker  * implementation.
191*4f2df630SAndroid Build Coastguard Worker  */
192*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SHA512_HW_EQ_SW
193*4f2df630SAndroid Build Coastguard Worker 
194*4f2df630SAndroid Build Coastguard Worker /* Don't link with third_party/cryptoc. */
195*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_LIBCRYPTOC
196*4f2df630SAndroid Build Coastguard Worker 
197*4f2df630SAndroid Build Coastguard Worker /* Don't use DCRYPTO code from chip/g. */
198*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_DCRYPTO
199*4f2df630SAndroid Build Coastguard Worker 
200*4f2df630SAndroid Build Coastguard Worker /*
201*4f2df630SAndroid Build Coastguard Worker  * This is pretty arbitrary, a rough estimate of what's required for smooth
202*4f2df630SAndroid Build Coastguard Worker  * Cr50 operation.
203*4f2df630SAndroid Build Coastguard Worker  */
204*4f2df630SAndroid Build Coastguard Worker #ifndef CRYPTO_TEST_SETUP
205*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SHAREDMEM_MINIMUM_SIZE 5500
206*4f2df630SAndroid Build Coastguard Worker #else
207*4f2df630SAndroid Build Coastguard Worker /* Crypto tests require more statically allocated memory. */
208*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SHAREDMEM_MINIMUM_SIZE 5000
209*4f2df630SAndroid Build Coastguard Worker #endif
210*4f2df630SAndroid Build Coastguard Worker 
211*4f2df630SAndroid Build Coastguard Worker /* Implement custom udelay, due to usec hwtimer imprecision. */
212*4f2df630SAndroid Build Coastguard Worker #define CONFIG_HW_SPECIFIC_UDELAY
213*4f2df630SAndroid Build Coastguard Worker 
214*4f2df630SAndroid Build Coastguard Worker #ifndef __ASSEMBLER__
215*4f2df630SAndroid Build Coastguard Worker #include "common.h"
216*4f2df630SAndroid Build Coastguard Worker #include "gpio_signal.h"
217*4f2df630SAndroid Build Coastguard Worker 
218*4f2df630SAndroid Build Coastguard Worker /* USB string indexes */
219*4f2df630SAndroid Build Coastguard Worker enum usb_strings {
220*4f2df630SAndroid Build Coastguard Worker 	USB_STR_DESC = 0,
221*4f2df630SAndroid Build Coastguard Worker 	USB_STR_VENDOR,
222*4f2df630SAndroid Build Coastguard Worker 	USB_STR_PRODUCT,
223*4f2df630SAndroid Build Coastguard Worker 	USB_STR_VERSION,
224*4f2df630SAndroid Build Coastguard Worker 	USB_STR_CONSOLE_NAME,
225*4f2df630SAndroid Build Coastguard Worker 	USB_STR_BLOB_NAME,
226*4f2df630SAndroid Build Coastguard Worker 	USB_STR_HID_KEYBOARD_NAME,
227*4f2df630SAndroid Build Coastguard Worker 	USB_STR_AP_NAME,
228*4f2df630SAndroid Build Coastguard Worker 	USB_STR_EC_NAME,
229*4f2df630SAndroid Build Coastguard Worker 	USB_STR_UPGRADE_NAME,
230*4f2df630SAndroid Build Coastguard Worker 	USB_STR_SPI_NAME,
231*4f2df630SAndroid Build Coastguard Worker 	USB_STR_SERIALNO,
232*4f2df630SAndroid Build Coastguard Worker 	USB_STR_I2C_NAME,
233*4f2df630SAndroid Build Coastguard Worker 
234*4f2df630SAndroid Build Coastguard Worker 	USB_STR_COUNT
235*4f2df630SAndroid Build Coastguard Worker };
236*4f2df630SAndroid Build Coastguard Worker 
237*4f2df630SAndroid Build Coastguard Worker /*
238*4f2df630SAndroid Build Coastguard Worker  * Device states
239*4f2df630SAndroid Build Coastguard Worker  *
240*4f2df630SAndroid Build Coastguard Worker  * Note that not all states are used by all devices.
241*4f2df630SAndroid Build Coastguard Worker  */
242*4f2df630SAndroid Build Coastguard Worker enum device_state {
243*4f2df630SAndroid Build Coastguard Worker 	/* Initial state at boot */
244*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_INIT = 0,
245*4f2df630SAndroid Build Coastguard Worker 
246*4f2df630SAndroid Build Coastguard Worker 	/*
247*4f2df630SAndroid Build Coastguard Worker 	 * Detect was not asserted at boot, but we're not willing to give up on
248*4f2df630SAndroid Build Coastguard Worker 	 * the device right away so we're debouncing to see if it shows up.
249*4f2df630SAndroid Build Coastguard Worker 	 */
250*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_INIT_DEBOUNCING,
251*4f2df630SAndroid Build Coastguard Worker 
252*4f2df630SAndroid Build Coastguard Worker 	/*
253*4f2df630SAndroid Build Coastguard Worker 	 * Device was detected at boot, but we can't enable transmit yet
254*4f2df630SAndroid Build Coastguard Worker 	 * because that would interfere with detection of another device.
255*4f2df630SAndroid Build Coastguard Worker 	 */
256*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_INIT_RX_ONLY,
257*4f2df630SAndroid Build Coastguard Worker 
258*4f2df630SAndroid Build Coastguard Worker 	/* Disconnected or off, because detect is deasserted */
259*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_DISCONNECTED,
260*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_OFF,
261*4f2df630SAndroid Build Coastguard Worker 
262*4f2df630SAndroid Build Coastguard Worker 	/* Device state is not knowable because we're driving detect */
263*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_UNDETECTABLE,
264*4f2df630SAndroid Build Coastguard Worker 
265*4f2df630SAndroid Build Coastguard Worker 	/* Connected or on, because detect is asserted */
266*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_CONNECTED,
267*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_ON,
268*4f2df630SAndroid Build Coastguard Worker 
269*4f2df630SAndroid Build Coastguard Worker 	/*
270*4f2df630SAndroid Build Coastguard Worker 	 * Device was connected, but we saw detect deasserted and are
271*4f2df630SAndroid Build Coastguard Worker 	 * debouncing to see if it stays deasserted - at which point we'll
272*4f2df630SAndroid Build Coastguard Worker 	 * decide that it's disconnected.
273*4f2df630SAndroid Build Coastguard Worker 	 */
274*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_DEBOUNCING,
275*4f2df630SAndroid Build Coastguard Worker 
276*4f2df630SAndroid Build Coastguard Worker 	/* Device state is unknown.  Used only by legacy device_state code. */
277*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_UNKNOWN,
278*4f2df630SAndroid Build Coastguard Worker 
279*4f2df630SAndroid Build Coastguard Worker 	/* The state is being ignored. */
280*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_IGNORED,
281*4f2df630SAndroid Build Coastguard Worker 
282*4f2df630SAndroid Build Coastguard Worker 	/* Number of device states */
283*4f2df630SAndroid Build Coastguard Worker 	DEVICE_STATE_COUNT
284*4f2df630SAndroid Build Coastguard Worker };
285*4f2df630SAndroid Build Coastguard Worker 
286*4f2df630SAndroid Build Coastguard Worker /**
287*4f2df630SAndroid Build Coastguard Worker  * Return the name of the device state as as string.
288*4f2df630SAndroid Build Coastguard Worker  *
289*4f2df630SAndroid Build Coastguard Worker  * @param state		State to look up
290*4f2df630SAndroid Build Coastguard Worker  * @return Name of the state, or "?" if no match.
291*4f2df630SAndroid Build Coastguard Worker  */
292*4f2df630SAndroid Build Coastguard Worker const char *device_state_name(enum device_state state);
293*4f2df630SAndroid Build Coastguard Worker 
294*4f2df630SAndroid Build Coastguard Worker /* NVMem variables. */
295*4f2df630SAndroid Build Coastguard Worker enum nvmem_vars {
296*4f2df630SAndroid Build Coastguard Worker 	NVMEM_VAR_CONSOLE_LOCKED = 0,
297*4f2df630SAndroid Build Coastguard Worker 	NVMEM_VAR_TEST_VAR,
298*4f2df630SAndroid Build Coastguard Worker 	NVMEM_VAR_U2F_SALT,
299*4f2df630SAndroid Build Coastguard Worker 	NVMEM_VAR_CCD_CONFIG,
300*4f2df630SAndroid Build Coastguard Worker 	NVMEM_VAR_G2F_SALT,
301*4f2df630SAndroid Build Coastguard Worker 
302*4f2df630SAndroid Build Coastguard Worker 	NVMEM_VARS_COUNT
303*4f2df630SAndroid Build Coastguard Worker };
304*4f2df630SAndroid Build Coastguard Worker 
305*4f2df630SAndroid Build Coastguard Worker void board_configure_deep_sleep_wakepins(void);
306*4f2df630SAndroid Build Coastguard Worker void ap_detect_asserted(enum gpio_signal signal);
307*4f2df630SAndroid Build Coastguard Worker void ec_detect_asserted(enum gpio_signal signal);
308*4f2df630SAndroid Build Coastguard Worker void servo_detect_asserted(enum gpio_signal signal);
309*4f2df630SAndroid Build Coastguard Worker void tpm_rst_deasserted(enum gpio_signal signal);
310*4f2df630SAndroid Build Coastguard Worker void tpm_rst_asserted(enum gpio_signal signal);
311*4f2df630SAndroid Build Coastguard Worker void diom4_deasserted(enum gpio_signal signal);
312*4f2df630SAndroid Build Coastguard Worker 
313*4f2df630SAndroid Build Coastguard Worker void post_reboot_request(void);
314*4f2df630SAndroid Build Coastguard Worker 
315*4f2df630SAndroid Build Coastguard Worker /* Special controls over EC and AP */
316*4f2df630SAndroid Build Coastguard Worker void assert_sys_rst(void);
317*4f2df630SAndroid Build Coastguard Worker void deassert_sys_rst(void);
318*4f2df630SAndroid Build Coastguard Worker void assert_ec_rst(void);
319*4f2df630SAndroid Build Coastguard Worker void deassert_ec_rst(void);
320*4f2df630SAndroid Build Coastguard Worker int is_ec_rst_asserted(void);
321*4f2df630SAndroid Build Coastguard Worker /* Ignore the servo state. */
322*4f2df630SAndroid Build Coastguard Worker void servo_ignore(int enable);
323*4f2df630SAndroid Build Coastguard Worker 
324*4f2df630SAndroid Build Coastguard Worker /**
325*4f2df630SAndroid Build Coastguard Worker  * Set up a deferred call to update CCD state.
326*4f2df630SAndroid Build Coastguard Worker  *
327*4f2df630SAndroid Build Coastguard Worker  * This will enable/disable UARTs, SPI, I2C, etc. as needed.
328*4f2df630SAndroid Build Coastguard Worker  */
329*4f2df630SAndroid Build Coastguard Worker void ccd_update_state(void);
330*4f2df630SAndroid Build Coastguard Worker 
331*4f2df630SAndroid Build Coastguard Worker /**
332*4f2df630SAndroid Build Coastguard Worker  * Return the state of the BOARD_USE_PLT_RST board strap option.
333*4f2df630SAndroid Build Coastguard Worker  *
334*4f2df630SAndroid Build Coastguard Worker  * @return 0 if option is not set, !=0 if option set.
335*4f2df630SAndroid Build Coastguard Worker  */
336*4f2df630SAndroid Build Coastguard Worker int board_use_plt_rst(void);
337*4f2df630SAndroid Build Coastguard Worker /**
338*4f2df630SAndroid Build Coastguard Worker  * Return the state of the BOARD_NEEDS_SYS_RST_PULL_UP board strap option.
339*4f2df630SAndroid Build Coastguard Worker  *
340*4f2df630SAndroid Build Coastguard Worker  * @return 0 if option is not set, !=0 if option set.
341*4f2df630SAndroid Build Coastguard Worker  */
342*4f2df630SAndroid Build Coastguard Worker int board_rst_pullup_needed(void);
343*4f2df630SAndroid Build Coastguard Worker /**
344*4f2df630SAndroid Build Coastguard Worker  * Return the state of the BOARD_PERIPH_CONFIG_I2C board strap option.
345*4f2df630SAndroid Build Coastguard Worker  *
346*4f2df630SAndroid Build Coastguard Worker  * @return 0 if option is not set, !=0 if option set.
347*4f2df630SAndroid Build Coastguard Worker  */
348*4f2df630SAndroid Build Coastguard Worker int board_tpm_uses_i2c(void);
349*4f2df630SAndroid Build Coastguard Worker /**
350*4f2df630SAndroid Build Coastguard Worker  * Return the state of the BOARD_PERIPH_CONFIG_SPI board strap option.
351*4f2df630SAndroid Build Coastguard Worker  *
352*4f2df630SAndroid Build Coastguard Worker  * @return 0 if option is not set, !=0 if option set.
353*4f2df630SAndroid Build Coastguard Worker  */
354*4f2df630SAndroid Build Coastguard Worker int board_tpm_uses_spi(void);
355*4f2df630SAndroid Build Coastguard Worker /**
356*4f2df630SAndroid Build Coastguard Worker  * Return the state of the BOARD_CLOSED_SOURCE_SET1 board strap option.
357*4f2df630SAndroid Build Coastguard Worker  *
358*4f2df630SAndroid Build Coastguard Worker  * @return 0 if option is not set, !=0 if option set.
359*4f2df630SAndroid Build Coastguard Worker  */
360*4f2df630SAndroid Build Coastguard Worker int board_uses_closed_source_set1(void);
361*4f2df630SAndroid Build Coastguard Worker /**
362*4f2df630SAndroid Build Coastguard Worker  * The board needs to wait until TPM_RST_L is asserted before deasserting
363*4f2df630SAndroid Build Coastguard Worker  * system reset signals.
364*4f2df630SAndroid Build Coastguard Worker  *
365*4f2df630SAndroid Build Coastguard Worker  * @return 0 if option is not set, !=0 if option set.
366*4f2df630SAndroid Build Coastguard Worker  */
367*4f2df630SAndroid Build Coastguard Worker int board_uses_closed_loop_reset(void);
368*4f2df630SAndroid Build Coastguard Worker /**
369*4f2df630SAndroid Build Coastguard Worker  * The board has all necessary I2C pins connected for INA support.
370*4f2df630SAndroid Build Coastguard Worker  *
371*4f2df630SAndroid Build Coastguard Worker  * @return 0 if option is not set, !=0 if option set.
372*4f2df630SAndroid Build Coastguard Worker  */
373*4f2df630SAndroid Build Coastguard Worker int board_has_ina_support(void);
374*4f2df630SAndroid Build Coastguard Worker /* The board supports EC-CR50 communication. */
375*4f2df630SAndroid Build Coastguard Worker int board_has_ec_cr50_comm_support(void);
376*4f2df630SAndroid Build Coastguard Worker int board_id_is_mismatched(void);
377*4f2df630SAndroid Build Coastguard Worker /* Allow for deep sleep to be enabled on AP shutdown */
378*4f2df630SAndroid Build Coastguard Worker int board_deep_sleep_allowed(void);
379*4f2df630SAndroid Build Coastguard Worker /* The board uses DIOM4 for user_pres_l */
380*4f2df630SAndroid Build Coastguard Worker int board_use_diom4(void);
381*4f2df630SAndroid Build Coastguard Worker 
382*4f2df630SAndroid Build Coastguard Worker /* Set or clear a board property flag in long life scratch. */
383*4f2df630SAndroid Build Coastguard Worker void board_write_prop(uint32_t flag, uint8_t enable);
384*4f2df630SAndroid Build Coastguard Worker 
385*4f2df630SAndroid Build Coastguard Worker void power_button_record(void);
386*4f2df630SAndroid Build Coastguard Worker 
387*4f2df630SAndroid Build Coastguard Worker /**
388*4f2df630SAndroid Build Coastguard Worker  * Enable/disable power button release interrupt.
389*4f2df630SAndroid Build Coastguard Worker  *
390*4f2df630SAndroid Build Coastguard Worker  * @param enable	Enable (!=0) or disable (==0)
391*4f2df630SAndroid Build Coastguard Worker  */
392*4f2df630SAndroid Build Coastguard Worker void power_button_release_enable_interrupt(int enable);
393*4f2df630SAndroid Build Coastguard Worker 
394*4f2df630SAndroid Build Coastguard Worker /* Functions needed by CCD config */
395*4f2df630SAndroid Build Coastguard Worker int board_battery_is_present(void);
396*4f2df630SAndroid Build Coastguard Worker int board_fwmp_allows_boot_policy_update(void);
397*4f2df630SAndroid Build Coastguard Worker int board_fwmp_allows_unlock(void);
398*4f2df630SAndroid Build Coastguard Worker void board_fwmp_update_policies(void);
399*4f2df630SAndroid Build Coastguard Worker int board_vboot_dev_mode_enabled(void);
400*4f2df630SAndroid Build Coastguard Worker void board_reboot_ap(void);
401*4f2df630SAndroid Build Coastguard Worker void board_reboot_ec(void);
402*4f2df630SAndroid Build Coastguard Worker /**
403*4f2df630SAndroid Build Coastguard Worker  * Reboot the EC
404*4f2df630SAndroid Build Coastguard Worker  * @param usec_delay  microseconds to delay in rebooting EC.
405*4f2df630SAndroid Build Coastguard Worker  *                    negative input shall be disregarded.
406*4f2df630SAndroid Build Coastguard Worker  */
407*4f2df630SAndroid Build Coastguard Worker void board_reboot_ec_deferred(int usec_delay);
408*4f2df630SAndroid Build Coastguard Worker void board_closed_loop_reset(void);
409*4f2df630SAndroid Build Coastguard Worker int board_wipe_tpm(int reset_required);
410*4f2df630SAndroid Build Coastguard Worker int board_is_first_factory_boot(void);
411*4f2df630SAndroid Build Coastguard Worker 
412*4f2df630SAndroid Build Coastguard Worker int usb_i2c_board_enable(void);
413*4f2df630SAndroid Build Coastguard Worker void usb_i2c_board_disable(void);
414*4f2df630SAndroid Build Coastguard Worker 
415*4f2df630SAndroid Build Coastguard Worker void print_ap_state(void);
416*4f2df630SAndroid Build Coastguard Worker void print_ap_uart_state(void);
417*4f2df630SAndroid Build Coastguard Worker void print_ec_state(void);
418*4f2df630SAndroid Build Coastguard Worker void print_servo_state(void);
419*4f2df630SAndroid Build Coastguard Worker 
420*4f2df630SAndroid Build Coastguard Worker void pmu_check_tpm_rst(void);
421*4f2df630SAndroid Build Coastguard Worker int ap_is_on(void);
422*4f2df630SAndroid Build Coastguard Worker int ap_uart_is_on(void);
423*4f2df630SAndroid Build Coastguard Worker int ec_is_on(void);
424*4f2df630SAndroid Build Coastguard Worker int ec_is_rx_allowed(void);
425*4f2df630SAndroid Build Coastguard Worker int servo_is_connected(void);
426*4f2df630SAndroid Build Coastguard Worker 
427*4f2df630SAndroid Build Coastguard Worker /*
428*4f2df630SAndroid Build Coastguard Worker  * Returns nonzero value if EC reset line is taken over and should not be
429*4f2df630SAndroid Build Coastguard Worker  * touched by the 'standard' EC reset functions.
430*4f2df630SAndroid Build Coastguard Worker  */
431*4f2df630SAndroid Build Coastguard Worker int ec_rst_override(void);
432*4f2df630SAndroid Build Coastguard Worker 
433*4f2df630SAndroid Build Coastguard Worker /*
434*4f2df630SAndroid Build Coastguard Worker  * Assert INT_AP_L to acknowledge AP that cr50 is ready for next TPM command.
435*4f2df630SAndroid Build Coastguard Worker  * NOTE: must be called by ISR only.
436*4f2df630SAndroid Build Coastguard Worker  *
437*4f2df630SAndroid Build Coastguard Worker  * Returns 1 if it successfully asserted (or scheduled to assert), or
438*4f2df630SAndroid Build Coastguard Worker  *         0 if the extended long pulse was disabled.
439*4f2df630SAndroid Build Coastguard Worker  */
440*4f2df630SAndroid Build Coastguard Worker int assert_int_ap(void);
441*4f2df630SAndroid Build Coastguard Worker 
442*4f2df630SAndroid Build Coastguard Worker /*
443*4f2df630SAndroid Build Coastguard Worker  * Deassert INT_AP_L immediately.
444*4f2df630SAndroid Build Coastguard Worker  * NOTE: must be called by ISR only.
445*4f2df630SAndroid Build Coastguard Worker  */
446*4f2df630SAndroid Build Coastguard Worker void deassert_int_ap(void);
447*4f2df630SAndroid Build Coastguard Worker 
448*4f2df630SAndroid Build Coastguard Worker /* Register a function that should be called when INT_AP_L extension starts. */
449*4f2df630SAndroid Build Coastguard Worker void int_ap_register(void (*func_enable)(void));
450*4f2df630SAndroid Build Coastguard Worker 
451*4f2df630SAndroid Build Coastguard Worker void int_ap_extension_enable(void);
452*4f2df630SAndroid Build Coastguard Worker void int_ap_extension_stop_pulse(void);
453*4f2df630SAndroid Build Coastguard Worker 
454*4f2df630SAndroid Build Coastguard Worker /* Moving from legacy versions might require NVMEM transition. */
455*4f2df630SAndroid Build Coastguard Worker int board_nvmem_legacy_check_needed(void);
456*4f2df630SAndroid Build Coastguard Worker 
457*4f2df630SAndroid Build Coastguard Worker void set_ap_on(void);
458*4f2df630SAndroid Build Coastguard Worker 
459*4f2df630SAndroid Build Coastguard Worker /*
460*4f2df630SAndroid Build Coastguard Worker  * Trigger generation of the ITE SYNC sequence on the way up after next
461*4f2df630SAndroid Build Coastguard Worker  * reboot.
462*4f2df630SAndroid Build Coastguard Worker  */
463*4f2df630SAndroid Build Coastguard Worker void board_start_ite_sync(void);
464*4f2df630SAndroid Build Coastguard Worker 
465*4f2df630SAndroid Build Coastguard Worker /*
466*4f2df630SAndroid Build Coastguard Worker  * Board specific function (needs information about pinmux settings) which
467*4f2df630SAndroid Build Coastguard Worker  * allows to take the i2cp driver out of the 'wedged' state where the controller
468*4f2df630SAndroid Build Coastguard Worker  * stopped i2c access mid transaction and the periph is holding SDA low.
469*4f2df630SAndroid Build Coastguard Worker  */
470*4f2df630SAndroid Build Coastguard Worker void board_unwedge_i2cp(void);
471*4f2df630SAndroid Build Coastguard Worker 
472*4f2df630SAndroid Build Coastguard Worker int board_in_prod_mode(void);
473*4f2df630SAndroid Build Coastguard Worker 
474*4f2df630SAndroid Build Coastguard Worker /* Bit masks for each bit in TPM_BOARD_CFG register */
475*4f2df630SAndroid Build Coastguard Worker enum board_cfg_reg_bitmask {
476*4f2df630SAndroid Build Coastguard Worker 	BOARD_CFG_LONG_INT_AP_BIT = BIT(0),
477*4f2df630SAndroid Build Coastguard Worker 
478*4f2df630SAndroid Build Coastguard Worker 	BOARD_CFG_LOCKED_BIT = BIT(31),
479*4f2df630SAndroid Build Coastguard Worker };
480*4f2df630SAndroid Build Coastguard Worker 
481*4f2df630SAndroid Build Coastguard Worker /* Disable write on TPM_BOARD_CFG register. */
482*4f2df630SAndroid Build Coastguard Worker void board_cfg_reg_write_disable(void);
483*4f2df630SAndroid Build Coastguard Worker 
484*4f2df630SAndroid Build Coastguard Worker /*
485*4f2df630SAndroid Build Coastguard Worker  * Write on TPM_BOARD_CFG register if BOARD_CFG_LOCKED_BIT is clear.
486*4f2df630SAndroid Build Coastguard Worker  *
487*4f2df630SAndroid Build Coastguard Worker  * @param value: value to write on TPM_BOARD_CFG
488*4f2df630SAndroid Build Coastguard Worker  */
489*4f2df630SAndroid Build Coastguard Worker void board_cfg_reg_write(unsigned int value);
490*4f2df630SAndroid Build Coastguard Worker 
491*4f2df630SAndroid Build Coastguard Worker /*
492*4f2df630SAndroid Build Coastguard Worker  * Read TPM_BOARD_CFG register.
493*4f2df630SAndroid Build Coastguard Worker  *
494*4f2df630SAndroid Build Coastguard Worker  * @param TPM_BOARD_CFG register value in uint32_t type.
495*4f2df630SAndroid Build Coastguard Worker  */
496*4f2df630SAndroid Build Coastguard Worker unsigned int board_cfg_reg_read(void);
497*4f2df630SAndroid Build Coastguard Worker 
498*4f2df630SAndroid Build Coastguard Worker #endif /* !__ASSEMBLER__ */
499*4f2df630SAndroid Build Coastguard Worker 
500*4f2df630SAndroid Build Coastguard Worker /* USB interface indexes (use define rather than enum to expand them) */
501*4f2df630SAndroid Build Coastguard Worker #define USB_IFACE_CONSOLE 0
502*4f2df630SAndroid Build Coastguard Worker #define USB_IFACE_AP	  1
503*4f2df630SAndroid Build Coastguard Worker #define USB_IFACE_EC	  2
504*4f2df630SAndroid Build Coastguard Worker #define USB_IFACE_UPGRADE 3
505*4f2df630SAndroid Build Coastguard Worker #define USB_IFACE_SPI	  4
506*4f2df630SAndroid Build Coastguard Worker #define USB_IFACE_I2C	  5
507*4f2df630SAndroid Build Coastguard Worker #define USB_IFACE_COUNT	  6
508*4f2df630SAndroid Build Coastguard Worker 
509*4f2df630SAndroid Build Coastguard Worker /* USB endpoint indexes (use define rather than enum to expand them) */
510*4f2df630SAndroid Build Coastguard Worker #define USB_EP_CONTROL 0
511*4f2df630SAndroid Build Coastguard Worker #define USB_EP_CONSOLE 1
512*4f2df630SAndroid Build Coastguard Worker #define USB_EP_AP      2
513*4f2df630SAndroid Build Coastguard Worker #define USB_EP_EC      3
514*4f2df630SAndroid Build Coastguard Worker #define USB_EP_UPGRADE 4
515*4f2df630SAndroid Build Coastguard Worker #define USB_EP_SPI     5
516*4f2df630SAndroid Build Coastguard Worker #define USB_EP_I2C     6
517*4f2df630SAndroid Build Coastguard Worker #define USB_EP_COUNT   7
518*4f2df630SAndroid Build Coastguard Worker 
519*4f2df630SAndroid Build Coastguard Worker /* UART indexes (use define rather than enum to expand them) */
520*4f2df630SAndroid Build Coastguard Worker #define UART_CR50 0
521*4f2df630SAndroid Build Coastguard Worker #define UART_AP	  1
522*4f2df630SAndroid Build Coastguard Worker #define UART_EC	  2
523*4f2df630SAndroid Build Coastguard Worker #define UART_NULL 0xff
524*4f2df630SAndroid Build Coastguard Worker 
525*4f2df630SAndroid Build Coastguard Worker #define UARTN UART_CR50
526*4f2df630SAndroid Build Coastguard Worker 
527*4f2df630SAndroid Build Coastguard Worker #define CC_DEFAULT (CC_ALL & ~CC_MASK(CC_TPM))
528*4f2df630SAndroid Build Coastguard Worker 
529*4f2df630SAndroid Build Coastguard Worker /* Nv Memory users */
530*4f2df630SAndroid Build Coastguard Worker #ifndef __ASSEMBLER__
531*4f2df630SAndroid Build Coastguard Worker enum nvmem_users { NVMEM_TPM = 0, NVMEM_CR50, NVMEM_NUM_USERS };
532*4f2df630SAndroid Build Coastguard Worker #endif
533*4f2df630SAndroid Build Coastguard Worker 
534*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FLASH_NVMEM_VARS_USER_NUM NVMEM_CR50
535*4f2df630SAndroid Build Coastguard Worker #define CONFIG_RW_B
536*4f2df630SAndroid Build Coastguard Worker 
537*4f2df630SAndroid Build Coastguard Worker #define CONFIG_AP_RO_VERIFICATION
538*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SPI_HASH
539*4f2df630SAndroid Build Coastguard Worker 
540*4f2df630SAndroid Build Coastguard Worker /* Firmware upgrade options. */
541*4f2df630SAndroid Build Coastguard Worker #define CONFIG_NON_HC_FW_UPDATE
542*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_FW_UPDATE
543*4f2df630SAndroid Build Coastguard Worker 
544*4f2df630SAndroid Build Coastguard Worker #define CONFIG_I2C
545*4f2df630SAndroid Build Coastguard Worker #define CONFIG_I2C_CONTROLLER
546*4f2df630SAndroid Build Coastguard Worker #define CONFIG_I2C_PERIPH
547*4f2df630SAndroid Build Coastguard Worker #define CONFIG_TPM_I2CP
548*4f2df630SAndroid Build Coastguard Worker 
549*4f2df630SAndroid Build Coastguard Worker #define CONFIG_BOARD_ID_SUPPORT
550*4f2df630SAndroid Build Coastguard Worker #define CONFIG_SN_BITS_SUPPORT
551*4f2df630SAndroid Build Coastguard Worker #define CONFIG_EXTENDED_VERSION_INFO
552*4f2df630SAndroid Build Coastguard Worker 
553*4f2df630SAndroid Build Coastguard Worker #define I2C_PORT_CONTROLLER 0
554*4f2df630SAndroid Build Coastguard Worker 
555*4f2df630SAndroid Build Coastguard Worker #define CONFIG_BASE32
556*4f2df630SAndroid Build Coastguard Worker #define CONFIG_RMA_AUTH
557*4f2df630SAndroid Build Coastguard Worker #define CONFIG_FACTORY_MODE
558*4f2df630SAndroid Build Coastguard Worker #define CONFIG_RNG
559*4f2df630SAndroid Build Coastguard Worker 
560*4f2df630SAndroid Build Coastguard Worker #define CONFIG_EC_EFS_SUPPORT
561*4f2df630SAndroid Build Coastguard Worker #define CONFIG_EC_EFS2_VERSION 0
562*4f2df630SAndroid Build Coastguard Worker 
563*4f2df630SAndroid Build Coastguard Worker #define CONFIG_ENABLE_H1_ALERTS
564*4f2df630SAndroid Build Coastguard Worker 
565*4f2df630SAndroid Build Coastguard Worker /* Enable hardware backed brute force resistance feature */
566*4f2df630SAndroid Build Coastguard Worker #define CONFIG_PLATFORM_PINWEAVER
567*4f2df630SAndroid Build Coastguard Worker 
568*4f2df630SAndroid Build Coastguard Worker /*
569*4f2df630SAndroid Build Coastguard Worker  * Disabling p256 will result in RMA Auth falling back to the x25519 curve
570*4f2df630SAndroid Build Coastguard Worker  * which in turn would require extra 5328 bytes of flash space.
571*4f2df630SAndroid Build Coastguard Worker  */
572*4f2df630SAndroid Build Coastguard Worker #define CONFIG_RMA_AUTH_USE_P256
573*4f2df630SAndroid Build Coastguard Worker #ifndef CONFIG_RMA_AUTH_USE_P256
574*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CURVE25519
575*4f2df630SAndroid Build Coastguard Worker #endif
576*4f2df630SAndroid Build Coastguard Worker 
577*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CCD_ITE_PROGRAMMING
578*4f2df630SAndroid Build Coastguard Worker 
579*4f2df630SAndroid Build Coastguard Worker /*
580*4f2df630SAndroid Build Coastguard Worker  * Increase sizes of USB over I2C read and write queues. Sizes are are such
581*4f2df630SAndroid Build Coastguard Worker  * that when appropriate overheads are included, total buffer sizes are powers
582*4f2df630SAndroid Build Coastguard Worker  * of 2 (2^9 in both cases below).
583*4f2df630SAndroid Build Coastguard Worker  */
584*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_USB_I2C_MAX_WRITE_COUNT
585*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_USB_I2C_MAX_READ_COUNT
586*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_I2C_MAX_WRITE_COUNT 508
587*4f2df630SAndroid Build Coastguard Worker #define CONFIG_USB_I2C_MAX_READ_COUNT  506
588*4f2df630SAndroid Build Coastguard Worker 
589*4f2df630SAndroid Build Coastguard Worker /* The below time constants are way longer than should be required in practice:
590*4f2df630SAndroid Build Coastguard Worker  *
591*4f2df630SAndroid Build Coastguard Worker  * Time it takes to finish processing TPM command
592*4f2df630SAndroid Build Coastguard Worker  */
593*4f2df630SAndroid Build Coastguard Worker #define TPM_PROCESSING_TIME (1 * SECOND)
594*4f2df630SAndroid Build Coastguard Worker 
595*4f2df630SAndroid Build Coastguard Worker /*
596*4f2df630SAndroid Build Coastguard Worker  * Time it takse TPM reset function to wipe out the NVMEM and reboot the
597*4f2df630SAndroid Build Coastguard Worker  * device.
598*4f2df630SAndroid Build Coastguard Worker  */
599*4f2df630SAndroid Build Coastguard Worker #define TPM_RESET_TIME (10 * SECOND)
600*4f2df630SAndroid Build Coastguard Worker 
601*4f2df630SAndroid Build Coastguard Worker /* Total time deep sleep should not be allowed while wiping the TPM. */
602*4f2df630SAndroid Build Coastguard Worker #define DISABLE_SLEEP_TIME_TPM_WIPE (TPM_PROCESSING_TIME + TPM_RESET_TIME)
603*4f2df630SAndroid Build Coastguard Worker 
604*4f2df630SAndroid Build Coastguard Worker /*****************************************************************************/
605*4f2df630SAndroid Build Coastguard Worker /*
606*4f2df630SAndroid Build Coastguard Worker  * Options for CRYPTO_TEST=1 images. Crypto test support takes up more space
607*4f2df630SAndroid Build Coastguard Worker  * than the standard image has available. Use this section to add crypto test
608*4f2df630SAndroid Build Coastguard Worker  * features and remove things to free up enough space to build them.
609*4f2df630SAndroid Build Coastguard Worker  */
610*4f2df630SAndroid Build Coastguard Worker #ifdef CRYPTO_TEST_SETUP
611*4f2df630SAndroid Build Coastguard Worker /* Enable unsafe dev features for CCD in crypto test builds */
612*4f2df630SAndroid Build Coastguard Worker #define CONFIG_CMD_ROLLBACK
613*4f2df630SAndroid Build Coastguard Worker 
614*4f2df630SAndroid Build Coastguard Worker /* Remove console commands to save space */
615*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_ECRST
616*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_SYSRST
617*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_WP
618*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_DUMP_NVMEM
619*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_PINMUX
620*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_GPIOCFG
621*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_SLEEPMASK
622*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CMD_TIMERINFO
623*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CONSOLE_HISTORY
624*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_I2C_XFER
625*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_I2C_SCAN
626*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_CONSOLE_CMDHELP
627*4f2df630SAndroid Build Coastguard Worker 
628*4f2df630SAndroid Build Coastguard Worker /* Remove features crypto test doesn't use to save space */
629*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_AP_RO_VERIFICATION
630*4f2df630SAndroid Build Coastguard Worker #undef CONFIG_SPI_HASH
631*4f2df630SAndroid Build Coastguard Worker #endif /* CRYPTO_TEST_SETUP */
632*4f2df630SAndroid Build Coastguard Worker #endif /* __CROS_EC_BOARD_H */
633