xref: /rk3399_ARM-atf/drivers/renesas/common/common.c (revision c87f2c1dd38ac7b87aae30c82e66ee2d7741621a)
1011a4c2fSBiju Das /*
2*0dae56bbSToshiyuki Ogasahara  * Copyright (c) 2018-2021, Renesas Electronics Corporation. All rights reserved.
3011a4c2fSBiju Das  *
4011a4c2fSBiju Das  * SPDX-License-Identifier: BSD-3-Clause
5011a4c2fSBiju Das  */
6011a4c2fSBiju Das 
7011a4c2fSBiju Das #include <lib/mmio.h>
8011a4c2fSBiju Das 
9*0dae56bbSToshiyuki Ogasahara #include "cpg_registers.h"
10011a4c2fSBiju Das #include "rcar_private.h"
11011a4c2fSBiju Das 
12011a4c2fSBiju Das #if IMAGE_BL31
cpg_write(uintptr_t regadr,uint32_t regval)13011a4c2fSBiju Das void __attribute__ ((section(".system_ram"))) cpg_write(uintptr_t regadr, uint32_t regval)
14011a4c2fSBiju Das #else
15011a4c2fSBiju Das void cpg_write(uintptr_t regadr, uint32_t regval)
16011a4c2fSBiju Das #endif
17011a4c2fSBiju Das {
18011a4c2fSBiju Das 	uint32_t value = regval;
19011a4c2fSBiju Das 
20*0dae56bbSToshiyuki Ogasahara 	mmio_write_32(CPG_CPGWPR, ~value);
21011a4c2fSBiju Das 	mmio_write_32(regadr, value);
22011a4c2fSBiju Das }
23011a4c2fSBiju Das 
24011a4c2fSBiju Das #if IMAGE_BL31
mstpcr_write(uint32_t mstpcr,uint32_t mstpsr,uint32_t target_bit)25011a4c2fSBiju Das void __attribute__ ((section(".system_ram"))) mstpcr_write(uint32_t mstpcr, uint32_t mstpsr,
26011a4c2fSBiju Das 							   uint32_t target_bit)
27011a4c2fSBiju Das #else
28011a4c2fSBiju Das void mstpcr_write(uint32_t mstpcr, uint32_t mstpsr, uint32_t target_bit)
29011a4c2fSBiju Das #endif
30011a4c2fSBiju Das {
31011a4c2fSBiju Das 	uint32_t reg;
32011a4c2fSBiju Das 
33011a4c2fSBiju Das 	reg = mmio_read_32(mstpcr);
34011a4c2fSBiju Das 	reg &= ~target_bit;
35011a4c2fSBiju Das 	cpg_write(mstpcr, reg);
36011a4c2fSBiju Das 	while ((mmio_read_32(mstpsr) & target_bit) != 0U) {
37011a4c2fSBiju Das 	}
38011a4c2fSBiju Das }
39