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 57*f29d1e0cSSheetal Tigadoli static inline void bcm_chimp_write(uintptr_t addr, uint32_t value) 58*f29d1e0cSSheetal Tigadoli { 59*f29d1e0cSSheetal Tigadoli } 60*f29d1e0cSSheetal Tigadoli static inline uint32_t bcm_chimp_read(uintptr_t addr) 61*f29d1e0cSSheetal Tigadoli { 62*f29d1e0cSSheetal Tigadoli return 0; 63*f29d1e0cSSheetal Tigadoli } 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 } 68*f29d1e0cSSheetal Tigadoli static inline void bcm_chimp_clrbits(uintptr_t addr, uint32_t bits) 69*f29d1e0cSSheetal Tigadoli { 70*f29d1e0cSSheetal Tigadoli } 71*f29d1e0cSSheetal Tigadoli static inline void bcm_chimp_setbits(uintptr_t addr, uint32_t bits) 72*f29d1e0cSSheetal Tigadoli { 73*f29d1e0cSSheetal Tigadoli } 74*f29d1e0cSSheetal Tigadoli static inline int bcm_chimp_is_nic_mode(void) 75*f29d1e0cSSheetal Tigadoli { 76*f29d1e0cSSheetal Tigadoli return 0; 77*f29d1e0cSSheetal Tigadoli } 78*f29d1e0cSSheetal Tigadoli static inline void bcm_chimp_fru_prog_done(bool status) 79*f29d1e0cSSheetal Tigadoli { 80*f29d1e0cSSheetal Tigadoli } 81*f29d1e0cSSheetal Tigadoli static inline int bcm_chimp_handshake_done(void) 82*f29d1e0cSSheetal Tigadoli { 83*f29d1e0cSSheetal Tigadoli return 0; 84*f29d1e0cSSheetal Tigadoli } 85*f29d1e0cSSheetal Tigadoli static inline int bcm_chimp_wait_handshake(void) 86*f29d1e0cSSheetal Tigadoli { 87*f29d1e0cSSheetal Tigadoli return 0; 88*f29d1e0cSSheetal Tigadoli } 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