1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (C) 2021 Sartura Ltd. 3*91f16700Schasinglulu * Copyright (C) 2021 Globalscale technologies, Inc. 4*91f16700Schasinglulu * Copyright (C) 2021 Marvell International Ltd. 5*91f16700Schasinglulu * 6*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 7*91f16700Schasinglulu * https://spdx.org/licenses 8*91f16700Schasinglulu */ 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <armada_common.h> 11*91f16700Schasinglulu 12*91f16700Schasinglulu /* 13*91f16700Schasinglulu * If bootrom is currently at BLE there's no need to include the memory 14*91f16700Schasinglulu * maps structure at this point 15*91f16700Schasinglulu */ 16*91f16700Schasinglulu #include <mvebu_def.h> 17*91f16700Schasinglulu #ifndef IMAGE_BLE 18*91f16700Schasinglulu 19*91f16700Schasinglulu /***************************************************************************** 20*91f16700Schasinglulu * AMB Configuration 21*91f16700Schasinglulu ***************************************************************************** 22*91f16700Schasinglulu */ 23*91f16700Schasinglulu struct addr_map_win amb_memory_map[] = { 24*91f16700Schasinglulu /* CP0 SPI1 CS0 Direct Mode access */ 25*91f16700Schasinglulu {0xf900, 0x1000000, AMB_SPI1_CS0_ID}, 26*91f16700Schasinglulu }; 27*91f16700Schasinglulu 28*91f16700Schasinglulu int marvell_get_amb_memory_map(struct addr_map_win **win, 29*91f16700Schasinglulu uint32_t *size, uintptr_t base) 30*91f16700Schasinglulu { 31*91f16700Schasinglulu *win = amb_memory_map; 32*91f16700Schasinglulu if (*win == NULL) 33*91f16700Schasinglulu *size = 0; 34*91f16700Schasinglulu else 35*91f16700Schasinglulu *size = ARRAY_SIZE(amb_memory_map); 36*91f16700Schasinglulu 37*91f16700Schasinglulu return 0; 38*91f16700Schasinglulu } 39*91f16700Schasinglulu #endif 40*91f16700Schasinglulu 41*91f16700Schasinglulu /***************************************************************************** 42*91f16700Schasinglulu * IO_WIN Configuration 43*91f16700Schasinglulu ***************************************************************************** 44*91f16700Schasinglulu */ 45*91f16700Schasinglulu struct addr_map_win io_win_memory_map[] = { 46*91f16700Schasinglulu #ifndef IMAGE_BLE 47*91f16700Schasinglulu /* MCI 0 indirect window */ 48*91f16700Schasinglulu {MVEBU_MCI_REG_BASE_REMAP(0), 0x100000, MCI_0_TID}, 49*91f16700Schasinglulu /* MCI 1 indirect window */ 50*91f16700Schasinglulu {MVEBU_MCI_REG_BASE_REMAP(1), 0x100000, MCI_1_TID}, 51*91f16700Schasinglulu #endif 52*91f16700Schasinglulu }; 53*91f16700Schasinglulu 54*91f16700Schasinglulu uint32_t marvell_get_io_win_gcr_target(int ap_index) 55*91f16700Schasinglulu { 56*91f16700Schasinglulu return PIDI_TID; 57*91f16700Schasinglulu } 58*91f16700Schasinglulu 59*91f16700Schasinglulu int marvell_get_io_win_memory_map(int ap_index, struct addr_map_win **win, 60*91f16700Schasinglulu uint32_t *size) 61*91f16700Schasinglulu { 62*91f16700Schasinglulu *win = io_win_memory_map; 63*91f16700Schasinglulu if (*win == NULL) 64*91f16700Schasinglulu *size = 0; 65*91f16700Schasinglulu else 66*91f16700Schasinglulu *size = ARRAY_SIZE(io_win_memory_map); 67*91f16700Schasinglulu 68*91f16700Schasinglulu return 0; 69*91f16700Schasinglulu } 70*91f16700Schasinglulu 71*91f16700Schasinglulu #ifndef IMAGE_BLE 72*91f16700Schasinglulu /***************************************************************************** 73*91f16700Schasinglulu * IOB Configuration 74*91f16700Schasinglulu ***************************************************************************** 75*91f16700Schasinglulu */ 76*91f16700Schasinglulu struct addr_map_win iob_memory_map[] = { 77*91f16700Schasinglulu /* PEX1_X1 window */ 78*91f16700Schasinglulu {0x00000000f7000000, 0x1000000, PEX1_TID}, 79*91f16700Schasinglulu /* PEX2_X1 window */ 80*91f16700Schasinglulu {0x00000000f8000000, 0x1000000, PEX2_TID}, 81*91f16700Schasinglulu {0x00000000c0000000, 0x30000000, PEX2_TID}, 82*91f16700Schasinglulu {0x0000000800000000, 0x100000000, PEX2_TID}, 83*91f16700Schasinglulu /* PEX0_X4 window */ 84*91f16700Schasinglulu {0x00000000f6000000, 0x1000000, PEX0_TID}, 85*91f16700Schasinglulu /* SPI1_CS0 (RUNIT) window */ 86*91f16700Schasinglulu {0x00000000f9000000, 0x1000000, RUNIT_TID}, 87*91f16700Schasinglulu }; 88*91f16700Schasinglulu 89*91f16700Schasinglulu int marvell_get_iob_memory_map(struct addr_map_win **win, uint32_t *size, 90*91f16700Schasinglulu uintptr_t base) 91*91f16700Schasinglulu { 92*91f16700Schasinglulu *win = iob_memory_map; 93*91f16700Schasinglulu *size = ARRAY_SIZE(iob_memory_map); 94*91f16700Schasinglulu 95*91f16700Schasinglulu return 0; 96*91f16700Schasinglulu } 97*91f16700Schasinglulu #endif 98*91f16700Schasinglulu 99*91f16700Schasinglulu /***************************************************************************** 100*91f16700Schasinglulu * CCU Configuration 101*91f16700Schasinglulu ***************************************************************************** 102*91f16700Schasinglulu */ 103*91f16700Schasinglulu struct addr_map_win ccu_memory_map[] = { /* IO window */ 104*91f16700Schasinglulu #ifdef IMAGE_BLE 105*91f16700Schasinglulu {0x00000000f2000000, 0x4000000, IO_0_TID}, /* IO window */ 106*91f16700Schasinglulu #else 107*91f16700Schasinglulu #if LLC_SRAM 108*91f16700Schasinglulu /* This entry is prepared for OP-TEE OS that enables the LLC SRAM 109*91f16700Schasinglulu * and changes the window target to SRAM_TID. 110*91f16700Schasinglulu */ 111*91f16700Schasinglulu {PLAT_MARVELL_LLC_SRAM_BASE, PLAT_MARVELL_LLC_SRAM_SIZE, DRAM_0_TID}, 112*91f16700Schasinglulu #endif 113*91f16700Schasinglulu {0x00000000f2000000, 0xe000000, IO_0_TID}, 114*91f16700Schasinglulu {0x00000000c0000000, 0x30000000, IO_0_TID}, /* IO window */ 115*91f16700Schasinglulu {0x0000000800000000, 0x100000000, IO_0_TID}, /* IO window */ 116*91f16700Schasinglulu #endif 117*91f16700Schasinglulu }; 118*91f16700Schasinglulu 119*91f16700Schasinglulu uint32_t marvell_get_ccu_gcr_target(int ap) 120*91f16700Schasinglulu { 121*91f16700Schasinglulu return DRAM_0_TID; 122*91f16700Schasinglulu } 123*91f16700Schasinglulu 124*91f16700Schasinglulu int marvell_get_ccu_memory_map(int ap_index, struct addr_map_win **win, 125*91f16700Schasinglulu uint32_t *size) 126*91f16700Schasinglulu { 127*91f16700Schasinglulu *win = ccu_memory_map; 128*91f16700Schasinglulu *size = ARRAY_SIZE(ccu_memory_map); 129*91f16700Schasinglulu 130*91f16700Schasinglulu return 0; 131*91f16700Schasinglulu } 132*91f16700Schasinglulu 133*91f16700Schasinglulu #ifdef IMAGE_BLE 134*91f16700Schasinglulu /***************************************************************************** 135*91f16700Schasinglulu * SKIP IMAGE Configuration 136*91f16700Schasinglulu ***************************************************************************** 137*91f16700Schasinglulu */ 138*91f16700Schasinglulu #if PLAT_RECOVERY_IMAGE_ENABLE 139*91f16700Schasinglulu void *plat_marvell_get_skip_image_data(void) 140*91f16700Schasinglulu { 141*91f16700Schasinglulu /* No recovery button on a70x0_mochabin board */ 142*91f16700Schasinglulu return NULL; 143*91f16700Schasinglulu } 144*91f16700Schasinglulu #endif 145*91f16700Schasinglulu #endif 146