xref: /aosp_15_r20/external/arm-trusted-firmware/include/drivers/marvell/ccu.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
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