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