xref: /rk3399_rockchip-uboot/board/renesas/rcar-common/common.c (revision c98b171e1098f94b2ff7720c45a25a602882f876)
1a7da6f8cSNobuhiro Iwamatsu /*
2a7da6f8cSNobuhiro Iwamatsu  * board/renesas/rcar-common/common.c
3a7da6f8cSNobuhiro Iwamatsu  *
4a7da6f8cSNobuhiro Iwamatsu  * Copyright (C) 2013 Renesas Electronics Corporation
5a7da6f8cSNobuhiro Iwamatsu  * Copyright (C) 2013 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
6581183deSNobuhiro Iwamatsu  * Copyright (C) 2015 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
7a7da6f8cSNobuhiro Iwamatsu  *
8a7da6f8cSNobuhiro Iwamatsu  * SPDX-License-Identifier: GPL-2.0
9a7da6f8cSNobuhiro Iwamatsu  */
10a7da6f8cSNobuhiro Iwamatsu 
11a7da6f8cSNobuhiro Iwamatsu #include <common.h>
12a7da6f8cSNobuhiro Iwamatsu #include <asm/io.h>
13a7da6f8cSNobuhiro Iwamatsu #include <asm/arch/sys_proto.h>
14a7da6f8cSNobuhiro Iwamatsu #include <asm/arch/rmobile.h>
15a7da6f8cSNobuhiro Iwamatsu #include <asm/arch/rcar-mstp.h>
16a7da6f8cSNobuhiro Iwamatsu 
17a7da6f8cSNobuhiro Iwamatsu #define TSTR0		0x04
18a7da6f8cSNobuhiro Iwamatsu #define TSTR0_STR0	0x01
19a7da6f8cSNobuhiro Iwamatsu 
20a7da6f8cSNobuhiro Iwamatsu static struct mstp_ctl mstptbl[] = {
21a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR0, MSTP0_BITS, CONFIG_SMSTP0_ENA,
22a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR0, MSTP0_BITS, CONFIG_RMSTP0_ENA },
23a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR1, MSTP1_BITS, CONFIG_SMSTP1_ENA,
24a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR1, MSTP1_BITS, CONFIG_RMSTP1_ENA },
25a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR2, MSTP2_BITS, CONFIG_SMSTP2_ENA,
26a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR2, MSTP2_BITS, CONFIG_RMSTP2_ENA },
27a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR3, MSTP3_BITS, CONFIG_SMSTP3_ENA,
28a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR3, MSTP3_BITS, CONFIG_RMSTP3_ENA },
29a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR4, MSTP4_BITS, CONFIG_SMSTP4_ENA,
30a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR4, MSTP4_BITS, CONFIG_RMSTP4_ENA },
31a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR5, MSTP5_BITS, CONFIG_SMSTP5_ENA,
32a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR5, MSTP5_BITS, CONFIG_RMSTP5_ENA },
33581183deSNobuhiro Iwamatsu #ifdef CONFIG_RCAR_GEN3
34581183deSNobuhiro Iwamatsu 	{ SMSTPCR6, MSTP6_BITS, CONFIG_SMSTP6_ENA,
35581183deSNobuhiro Iwamatsu 		RMSTPCR6, MSTP6_BITS, CONFIG_RMSTP6_ENA },
36581183deSNobuhiro Iwamatsu #endif
37a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR7, MSTP7_BITS, CONFIG_SMSTP7_ENA,
38a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR7, MSTP7_BITS, CONFIG_RMSTP7_ENA },
39a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR8, MSTP8_BITS, CONFIG_SMSTP8_ENA,
40a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR8, MSTP8_BITS, CONFIG_RMSTP8_ENA },
41a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR9, MSTP9_BITS, CONFIG_SMSTP9_ENA,
42a7da6f8cSNobuhiro Iwamatsu 		RMSTPCR9, MSTP9_BITS, CONFIG_RMSTP9_ENA },
43a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR10, MSTP10_BITS, CONFIG_SMSTP10_ENA,
44a7da6f8cSNobuhiro Iwamatsu 		 RMSTPCR10, MSTP10_BITS, CONFIG_RMSTP10_ENA },
45a7da6f8cSNobuhiro Iwamatsu 	{ SMSTPCR11, MSTP11_BITS, CONFIG_SMSTP1_ENA,
46a7da6f8cSNobuhiro Iwamatsu 		 RMSTPCR11, MSTP11_BITS, CONFIG_RMSTP11_ENA },
47a7da6f8cSNobuhiro Iwamatsu };
48a7da6f8cSNobuhiro Iwamatsu 
arch_preboot_os(void)49a7da6f8cSNobuhiro Iwamatsu void arch_preboot_os(void)
50a7da6f8cSNobuhiro Iwamatsu {
51a7da6f8cSNobuhiro Iwamatsu 	int i;
52a7da6f8cSNobuhiro Iwamatsu 
53a7da6f8cSNobuhiro Iwamatsu 	/* stop TMU0 */
54a7da6f8cSNobuhiro Iwamatsu 	mstp_clrbits_le32(TMU_BASE + TSTR0, TMU_BASE + TSTR0, TSTR0_STR0);
55a7da6f8cSNobuhiro Iwamatsu 
56a7da6f8cSNobuhiro Iwamatsu 	/* Stop module clock */
57a7da6f8cSNobuhiro Iwamatsu 	for (i = 0; i < ARRAY_SIZE(mstptbl); i++) {
58*4ebaba55SNobuhiro Iwamatsu 		mstp_setclrbits_le32((uintptr_t)mstptbl[i].s_addr,
59*4ebaba55SNobuhiro Iwamatsu 				     mstptbl[i].s_dis,
60a7da6f8cSNobuhiro Iwamatsu 				     mstptbl[i].s_ena);
61*4ebaba55SNobuhiro Iwamatsu 		mstp_setclrbits_le32((uintptr_t)mstptbl[i].r_addr,
62*4ebaba55SNobuhiro Iwamatsu 				     mstptbl[i].r_dis,
63a7da6f8cSNobuhiro Iwamatsu 				     mstptbl[i].r_ena);
64a7da6f8cSNobuhiro Iwamatsu 	}
65a7da6f8cSNobuhiro Iwamatsu }
66