1717448d6SSheetal Tigadoli /* 2717448d6SSheetal Tigadoli * Copyright (c) 2015 - 2020, Broadcom 3717448d6SSheetal Tigadoli * 4717448d6SSheetal Tigadoli * SPDX-License-Identifier: BSD-3-Clause 5717448d6SSheetal Tigadoli */ 6717448d6SSheetal Tigadoli 7717448d6SSheetal Tigadoli #ifndef CMN_PLAT_DEF_H 8717448d6SSheetal Tigadoli #define CMN_PLAT_DEF_H 9717448d6SSheetal Tigadoli 10f29d1e0cSSheetal Tigadoli #include <bcm_elog.h> 11*885e2683SClaus Pedersen #include <platform_def.h> 12f29d1e0cSSheetal Tigadoli 13f29d1e0cSSheetal Tigadoli #ifndef GET_LOG_LEVEL 14f29d1e0cSSheetal Tigadoli #define GET_LOG_LEVEL() LOG_LEVEL 15f29d1e0cSSheetal Tigadoli #endif 16f29d1e0cSSheetal Tigadoli 17f29d1e0cSSheetal Tigadoli #ifndef SET_LOG_LEVEL 18f29d1e0cSSheetal Tigadoli #define SET_LOG_LEVEL(x) ((void)(x)) 19f29d1e0cSSheetal Tigadoli #endif 20f29d1e0cSSheetal Tigadoli 21f29d1e0cSSheetal Tigadoli #define PLAT_LOG_NOTICE(...) \ 22f29d1e0cSSheetal Tigadoli do { \ 23f29d1e0cSSheetal Tigadoli if (GET_LOG_LEVEL() >= LOG_LEVEL_NOTICE) { \ 24f29d1e0cSSheetal Tigadoli bcm_elog(LOG_MARKER_NOTICE __VA_ARGS__); \ 25f29d1e0cSSheetal Tigadoli tf_log(LOG_MARKER_NOTICE __VA_ARGS__); \ 26f29d1e0cSSheetal Tigadoli } \ 27f29d1e0cSSheetal Tigadoli } while (0) 28f29d1e0cSSheetal Tigadoli 29f29d1e0cSSheetal Tigadoli #define PLAT_LOG_ERROR(...) \ 30f29d1e0cSSheetal Tigadoli do { \ 31f29d1e0cSSheetal Tigadoli if (GET_LOG_LEVEL() >= LOG_LEVEL_ERROR) { \ 32f29d1e0cSSheetal Tigadoli bcm_elog(LOG_MARKER_ERROR, __VA_ARGS__); \ 33f29d1e0cSSheetal Tigadoli tf_log(LOG_MARKER_ERROR __VA_ARGS__); \ 34f29d1e0cSSheetal Tigadoli } \ 35f29d1e0cSSheetal Tigadoli } while (0) 36f29d1e0cSSheetal Tigadoli 37f29d1e0cSSheetal Tigadoli #define PLAT_LOG_WARN(...) \ 38f29d1e0cSSheetal Tigadoli do { \ 39f29d1e0cSSheetal Tigadoli if (GET_LOG_LEVEL() >= LOG_LEVEL_WARNING) { \ 40f29d1e0cSSheetal Tigadoli bcm_elog(LOG_MARKER_WARNING, __VA_ARGS__);\ 41f29d1e0cSSheetal Tigadoli tf_log(LOG_MARKER_WARNING __VA_ARGS__); \ 42f29d1e0cSSheetal Tigadoli } \ 43f29d1e0cSSheetal Tigadoli } while (0) 44f29d1e0cSSheetal Tigadoli 45f29d1e0cSSheetal Tigadoli #define PLAT_LOG_INFO(...) \ 46f29d1e0cSSheetal Tigadoli do { \ 47f29d1e0cSSheetal Tigadoli if (GET_LOG_LEVEL() >= LOG_LEVEL_INFO) { \ 48f29d1e0cSSheetal Tigadoli bcm_elog(LOG_MARKER_INFO __VA_ARGS__); \ 49f29d1e0cSSheetal Tigadoli tf_log(LOG_MARKER_INFO __VA_ARGS__); \ 50f29d1e0cSSheetal Tigadoli } \ 51f29d1e0cSSheetal Tigadoli } while (0) 52f29d1e0cSSheetal Tigadoli 53f29d1e0cSSheetal Tigadoli #define PLAT_LOG_VERBOSE(...) \ 54f29d1e0cSSheetal Tigadoli do { \ 55f29d1e0cSSheetal Tigadoli if (GET_LOG_LEVEL() >= LOG_LEVEL_VERBOSE) { \ 56f29d1e0cSSheetal Tigadoli bcm_elog(LOG_MARKER_VERBOSE __VA_ARGS__);\ 57f29d1e0cSSheetal Tigadoli tf_log(LOG_MARKER_VERBOSE __VA_ARGS__); \ 58f29d1e0cSSheetal Tigadoli } \ 59f29d1e0cSSheetal Tigadoli } while (0) 60f29d1e0cSSheetal Tigadoli 61717448d6SSheetal Tigadoli /* 62717448d6SSheetal Tigadoli * The number of regions like RO(code), coherent and data required by 63717448d6SSheetal Tigadoli * different BL stages which need to be mapped in the MMU. 64717448d6SSheetal Tigadoli */ 65717448d6SSheetal Tigadoli #if USE_COHERENT_MEM 66717448d6SSheetal Tigadoli #define CMN_BL_REGIONS 3 67717448d6SSheetal Tigadoli #else 68717448d6SSheetal Tigadoli #define CMN_BL_REGIONS 2 69717448d6SSheetal Tigadoli #endif 70717448d6SSheetal Tigadoli 71717448d6SSheetal Tigadoli /* 72717448d6SSheetal Tigadoli * FIP definitions 73717448d6SSheetal Tigadoli */ 74717448d6SSheetal Tigadoli #define PLAT_FIP_ATTEMPT_OFFSET 0x20000 75717448d6SSheetal Tigadoli #define PLAT_FIP_NUM_ATTEMPTS 128 76717448d6SSheetal Tigadoli 77717448d6SSheetal Tigadoli #define PLAT_BRCM_FIP_QSPI_BASE QSPI_BASE_ADDR 78717448d6SSheetal Tigadoli #define PLAT_BRCM_FIP_NAND_BASE NAND_BASE_ADDR 79717448d6SSheetal Tigadoli #define PLAT_BRCM_FIP_MAX_SIZE 0x01000000 80717448d6SSheetal Tigadoli 81717448d6SSheetal Tigadoli #define PLAT_BRCM_FIP_BASE PLAT_BRCM_FIP_QSPI_BASE 82717448d6SSheetal Tigadoli #endif 83