xref: /optee_os/core/arch/arm/plat-bcm/bcm_elog.h (revision 9348a85a6425b2b88c6d5c200dc1b1a65eedcb80)
1*9348a85aSSheetal Tigadoli /* SPDX-License-Identifier: BSD-2-Clause */
2*9348a85aSSheetal Tigadoli /*
3*9348a85aSSheetal Tigadoli  * Copyright 2019 Broadcom.
4*9348a85aSSheetal Tigadoli  */
5*9348a85aSSheetal Tigadoli 
6*9348a85aSSheetal Tigadoli #ifndef BCM_ELOG_H
7*9348a85aSSheetal Tigadoli #define BCM_ELOG_H
8*9348a85aSSheetal Tigadoli 
9*9348a85aSSheetal Tigadoli #include <mm/core_memprot.h>
10*9348a85aSSheetal Tigadoli 
11*9348a85aSSheetal Tigadoli /* Error logging signature offset and value */
12*9348a85aSSheetal Tigadoli #define BCM_ELOG_SIG_OFFSET	0x0000
13*9348a85aSSheetal Tigadoli #define BCM_ELOG_SIG_VAL	0x75767971
14*9348a85aSSheetal Tigadoli 
15*9348a85aSSheetal Tigadoli /* Current logging offset that points to where new logs should be added */
16*9348a85aSSheetal Tigadoli #define BCM_ELOG_OFF_OFFSET	0x0004
17*9348a85aSSheetal Tigadoli 
18*9348a85aSSheetal Tigadoli /* Current logging length (excluding header) */
19*9348a85aSSheetal Tigadoli #define BCM_ELOG_LEN_OFFSET	0x0008
20*9348a85aSSheetal Tigadoli 
21*9348a85aSSheetal Tigadoli #define BCM_ELOG_HEADER_LEN	12
22*9348a85aSSheetal Tigadoli 
23*9348a85aSSheetal Tigadoli /*
24*9348a85aSSheetal Tigadoli  * @base: base address of memory where log is saved
25*9348a85aSSheetal Tigadoli  * @max_size: max size of memory reserved for logging
26*9348a85aSSheetal Tigadoli  */
27*9348a85aSSheetal Tigadoli struct bcm_elog {
28*9348a85aSSheetal Tigadoli 	struct io_pa_va base;
29*9348a85aSSheetal Tigadoli 	uint32_t max_size;
30*9348a85aSSheetal Tigadoli };
31*9348a85aSSheetal Tigadoli 
32*9348a85aSSheetal Tigadoli void bcm_elog_init(uintptr_t pa_base, uint32_t size);
33*9348a85aSSheetal Tigadoli void bcm_elog_putchar(char ch);
34*9348a85aSSheetal Tigadoli 
35*9348a85aSSheetal Tigadoli #endif /* BCM_ELOG_H */
36