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