1*54fd6939SJiyong Park /* 2*54fd6939SJiyong Park * Copyright (C) 2018 Marvell International Ltd. 3*54fd6939SJiyong Park * 4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park * https://spdx.org/licenses 6*54fd6939SJiyong Park */ 7*54fd6939SJiyong Park 8*54fd6939SJiyong Park /* CCU unit device driver for Marvell AP807, AP807 and AP810 SoCs */ 9*54fd6939SJiyong Park 10*54fd6939SJiyong Park #ifndef CCU_H 11*54fd6939SJiyong Park #define CCU_H 12*54fd6939SJiyong Park 13*54fd6939SJiyong Park #ifndef __ASSEMBLER__ 14*54fd6939SJiyong Park #include <drivers/marvell/addr_map.h> 15*54fd6939SJiyong Park #endif 16*54fd6939SJiyong Park 17*54fd6939SJiyong Park /* CCU registers definitions */ 18*54fd6939SJiyong Park #define CCU_WIN_CR_OFFSET(ap, win) (MVEBU_CCU_BASE(ap) + 0x0 + \ 19*54fd6939SJiyong Park (0x10 * win)) 20*54fd6939SJiyong Park #define CCU_TARGET_ID_OFFSET (8) 21*54fd6939SJiyong Park #define CCU_TARGET_ID_MASK (0x7F) 22*54fd6939SJiyong Park 23*54fd6939SJiyong Park #define CCU_WIN_SCR_OFFSET(ap, win) (MVEBU_CCU_BASE(ap) + 0x4 + \ 24*54fd6939SJiyong Park (0x10 * win)) 25*54fd6939SJiyong Park #define CCU_WIN_ENA_WRITE_SECURE (0x1) 26*54fd6939SJiyong Park #define CCU_WIN_ENA_READ_SECURE (0x2) 27*54fd6939SJiyong Park 28*54fd6939SJiyong Park #define CCU_WIN_ALR_OFFSET(ap, win) (MVEBU_CCU_BASE(ap) + 0x8 + \ 29*54fd6939SJiyong Park (0x10 * win)) 30*54fd6939SJiyong Park #define CCU_WIN_AHR_OFFSET(ap, win) (MVEBU_CCU_BASE(ap) + 0xC + \ 31*54fd6939SJiyong Park (0x10 * win)) 32*54fd6939SJiyong Park 33*54fd6939SJiyong Park #define CCU_WIN_GCR_OFFSET(ap) (MVEBU_CCU_BASE(ap) + 0xD0) 34*54fd6939SJiyong Park #define CCU_GCR_TARGET_OFFSET (8) 35*54fd6939SJiyong Park #define CCU_GCR_TARGET_MASK (0xFF) 36*54fd6939SJiyong Park 37*54fd6939SJiyong Park #define CCU_SRAM_WIN_CR CCU_WIN_CR_OFFSET(MVEBU_AP0, 1) 38*54fd6939SJiyong Park 39*54fd6939SJiyong Park #ifndef __ASSEMBLER__ 40*54fd6939SJiyong Park int init_ccu(int); 41*54fd6939SJiyong Park void ccu_win_check(struct addr_map_win *win); 42*54fd6939SJiyong Park void ccu_enable_win(int ap_index, struct addr_map_win *win, uint32_t win_id); 43*54fd6939SJiyong Park void ccu_temp_win_insert(int ap_index, struct addr_map_win *win, int size); 44*54fd6939SJiyong Park void ccu_temp_win_remove(int ap_index, struct addr_map_win *win, int size); 45*54fd6939SJiyong Park void ccu_dram_win_config(int ap_index, struct addr_map_win *win); 46*54fd6939SJiyong Park void ccu_dram_target_set(int ap_index, uint32_t target); 47*54fd6939SJiyong Park void ccu_save_win_all(int ap_id); 48*54fd6939SJiyong Park void ccu_restore_win_all(int ap_id); 49*54fd6939SJiyong Park int ccu_is_win_enabled(int ap_index, uint32_t win_id); 50*54fd6939SJiyong Park void errata_wa_init(void); 51*54fd6939SJiyong Park #endif 52*54fd6939SJiyong Park 53*54fd6939SJiyong Park #endif /* CCU_H */ 54