xref: /arm-trusted-firmware/include/drivers/brcm/chimp.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2016 - 2020, Broadcom
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef SR_CHIMP_H
8*91f16700Schasinglulu #define SR_CHIMP_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include <common/bl_common.h>
11*91f16700Schasinglulu #include <common/debug.h>
12*91f16700Schasinglulu #include <lib/mmio.h>
13*91f16700Schasinglulu 
14*91f16700Schasinglulu #include <platform_def.h>
15*91f16700Schasinglulu 
16*91f16700Schasinglulu #define CHIMP_WINDOW_SIZE 0x400000
17*91f16700Schasinglulu #define CHIMP_ERROR_OFFSET 28
18*91f16700Schasinglulu #define CHIMP_ERROR_MASK 0xf0000000
19*91f16700Schasinglulu 
20*91f16700Schasinglulu #ifndef EMULATION_SETUP
21*91f16700Schasinglulu #define CHIMP_HANDSHAKE_TIMEOUT_MS 10000
22*91f16700Schasinglulu #else
23*91f16700Schasinglulu /*
24*91f16700Schasinglulu  * 1hr timeout for test in emulator
25*91f16700Schasinglulu  * By doing this ChiMP is given a chance to boot
26*91f16700Schasinglulu  * fully from the QSPI
27*91f16700Schasinglulu  * (on Palladium this takes upto 50 min depending on QSPI clk)
28*91f16700Schasinglulu  */
29*91f16700Schasinglulu 
30*91f16700Schasinglulu #define CHIMP_HANDSHAKE_TIMEOUT_MS 3600000
31*91f16700Schasinglulu #endif
32*91f16700Schasinglulu 
33*91f16700Schasinglulu #define CHIMP_BPE_MODE_ID_PATTERN				(0x25000000)
34*91f16700Schasinglulu #define CHIMP_BPE_MODE_ID_MASK					(0x7f000000)
35*91f16700Schasinglulu #define NIC_RESET_RELEASE_TIMEOUT_US		(10)
36*91f16700Schasinglulu 
37*91f16700Schasinglulu /* written by M0, used by ChiMP ROM */
38*91f16700Schasinglulu #define SR_IN_SMARTNIC_MODE_BIT					0
39*91f16700Schasinglulu /* written by M0, used by ChiMP ROM */
40*91f16700Schasinglulu #define SR_CHIMP_SECURE_BOOT_BIT				1
41*91f16700Schasinglulu /* cleared by AP, set by ChiMP BC2 code */
42*91f16700Schasinglulu #define SR_FLASH_ACCESS_DONE_BIT				2
43*91f16700Schasinglulu 
44*91f16700Schasinglulu #ifdef USE_CHIMP
45*91f16700Schasinglulu void bcm_chimp_write(uintptr_t addr, uint32_t value);
46*91f16700Schasinglulu uint32_t bcm_chimp_read(uintptr_t addr);
47*91f16700Schasinglulu uint32_t bcm_chimp_read_ctrl(uint32_t offset);
48*91f16700Schasinglulu void bcm_chimp_clrbits(uintptr_t addr, uint32_t bits);
49*91f16700Schasinglulu void bcm_chimp_setbits(uintptr_t addr, uint32_t bits);
50*91f16700Schasinglulu int bcm_chimp_is_nic_mode(void);
51*91f16700Schasinglulu void bcm_chimp_fru_prog_done(bool status);
52*91f16700Schasinglulu int bcm_chimp_handshake_done(void);
53*91f16700Schasinglulu int bcm_chimp_wait_handshake(void);
54*91f16700Schasinglulu /* Fastboot-related*/
55*91f16700Schasinglulu int bcm_chimp_initiate_fastboot(int fastboot_type);
56*91f16700Schasinglulu #else
57*91f16700Schasinglulu static inline void bcm_chimp_write(uintptr_t addr, uint32_t value)
58*91f16700Schasinglulu {
59*91f16700Schasinglulu }
60*91f16700Schasinglulu static inline uint32_t bcm_chimp_read(uintptr_t addr)
61*91f16700Schasinglulu {
62*91f16700Schasinglulu 	return 0;
63*91f16700Schasinglulu }
64*91f16700Schasinglulu static inline uint32_t bcm_chimp_read_ctrl(uint32_t offset)
65*91f16700Schasinglulu {
66*91f16700Schasinglulu 	return 0;
67*91f16700Schasinglulu }
68*91f16700Schasinglulu static inline void bcm_chimp_clrbits(uintptr_t addr, uint32_t bits)
69*91f16700Schasinglulu {
70*91f16700Schasinglulu }
71*91f16700Schasinglulu static inline void bcm_chimp_setbits(uintptr_t addr, uint32_t bits)
72*91f16700Schasinglulu {
73*91f16700Schasinglulu }
74*91f16700Schasinglulu static inline int bcm_chimp_is_nic_mode(void)
75*91f16700Schasinglulu {
76*91f16700Schasinglulu 	return 0;
77*91f16700Schasinglulu }
78*91f16700Schasinglulu static inline void bcm_chimp_fru_prog_done(bool status)
79*91f16700Schasinglulu {
80*91f16700Schasinglulu }
81*91f16700Schasinglulu static inline int bcm_chimp_handshake_done(void)
82*91f16700Schasinglulu {
83*91f16700Schasinglulu 	return 0;
84*91f16700Schasinglulu }
85*91f16700Schasinglulu static inline int bcm_chimp_wait_handshake(void)
86*91f16700Schasinglulu {
87*91f16700Schasinglulu 	return 0;
88*91f16700Schasinglulu }
89*91f16700Schasinglulu static inline int bcm_chimp_initiate_fastboot(int fastboot_type)
90*91f16700Schasinglulu {
91*91f16700Schasinglulu 	return 0;
92*91f16700Schasinglulu }
93*91f16700Schasinglulu #endif /* USE_CHIMP */
94*91f16700Schasinglulu #endif
95