xref: /rk3399_ARM-atf/drivers/renesas/rcar/qos/V3M/qos_init_v3m.c (revision 79da34891640e10c71082ea1e8dac3b4198aeca1)
1c67703ebSMarek Vasut /*
2*e366f8cfSDien Pham  * Copyright (c) 2015-2024, Renesas Electronics Corporation
3c67703ebSMarek Vasut  * All rights reserved.
4c67703ebSMarek Vasut  *
5c67703ebSMarek Vasut  * SPDX-License-Identifier: BSD-3-Clause
6c67703ebSMarek Vasut  */
7c67703ebSMarek Vasut 
8c67703ebSMarek Vasut #include <stdint.h>
9c67703ebSMarek Vasut 
10c67703ebSMarek Vasut #include <common/debug.h>
11c67703ebSMarek Vasut 
12c67703ebSMarek Vasut #include "../qos_common.h"
13c67703ebSMarek Vasut #include "../qos_reg.h"
14c67703ebSMarek Vasut #include "qos_init_v3m.h"
15c67703ebSMarek Vasut 
16c67703ebSMarek Vasut #define	RCAR_QOS_VERSION		"rev.0.01"
17c67703ebSMarek Vasut 
18c67703ebSMarek Vasut #include "qos_init_v3m_mstat.h"
19c67703ebSMarek Vasut 
20c67703ebSMarek Vasut struct rcar_gen3_dbsc_qos_settings v3m_qos[] = {
21c67703ebSMarek Vasut 	/* BUFCAM settings */
22*e366f8cfSDien Pham 	{ DBSC_DBCAM0CNF1, 0x00048218U },
23c67703ebSMarek Vasut 	{ DBSC_DBCAM0CNF2, 0x000000F4 },
24c67703ebSMarek Vasut 	{ DBSC_DBSCHCNT0, 0x080F003F },
25c67703ebSMarek Vasut 	{ DBSC_DBSCHCNT1, 0x00001010 },
26c67703ebSMarek Vasut 
27c67703ebSMarek Vasut 	{ DBSC_DBSCHSZ0, 0x00000001 },
28c67703ebSMarek Vasut 	{ DBSC_DBSCHRW0, 0x22421111 },
29c67703ebSMarek Vasut 	{ DBSC_DBSCHRW1, 0x00180034 },
30c67703ebSMarek Vasut 	{ DBSC_SCFCTST0, 0x180B1708 },
31c67703ebSMarek Vasut 	{ DBSC_SCFCTST1, 0x0808070C },
32c67703ebSMarek Vasut 	{ DBSC_SCFCTST2, 0x012F1123 },
33c67703ebSMarek Vasut 
34c67703ebSMarek Vasut 	/* QoS Settings */
35c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS00,  0x0000F000 },
36c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS01,  0x0000E000 },
37c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS02,  0x00007000 },
38c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS03,  0x00000000 },
39c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS40,  0x0000F000 },
40c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS41,  0x0000EFFF },
41c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS42,  0x0000B000 },
42c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS43,  0x00000000 },
43c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS90,  0x0000F000 },
44c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS91,  0x0000EFFF },
45c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS92,  0x0000D000 },
46c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS93,  0x00000000 },
47c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS130, 0x0000F000 },
48c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS131, 0x0000EFFF },
49c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS132, 0x0000E800 },
50c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS133, 0x00007000 },
51c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS140, 0x0000F000 },
52c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS141, 0x0000EFFF },
53c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS142, 0x0000E800 },
54c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS143, 0x0000B000 },
55c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS150, 0x000007D0 },
56c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS151, 0x000007CF },
57c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS152, 0x000005D0 },
58c67703ebSMarek Vasut 	{ DBSC_DBSCHQOS153, 0x000003D0 },
59c67703ebSMarek Vasut };
60c67703ebSMarek Vasut 
qos_init_v3m(void)61c67703ebSMarek Vasut void qos_init_v3m(void)
62c67703ebSMarek Vasut {
63c67703ebSMarek Vasut return;
64c67703ebSMarek Vasut 
65c67703ebSMarek Vasut 	rcar_qos_dbsc_setting(v3m_qos, ARRAY_SIZE(v3m_qos), false);
66c67703ebSMarek Vasut 
67c67703ebSMarek Vasut #if !(RCAR_QOS_TYPE == RCAR_QOS_NONE)
68c67703ebSMarek Vasut #if RCAR_QOS_TYPE  == RCAR_QOS_TYPE_DEFAULT
69c67703ebSMarek Vasut 	NOTICE("BL2: QoS is default setting(%s)\n", RCAR_QOS_VERSION);
70c67703ebSMarek Vasut #endif
71c67703ebSMarek Vasut 
72c67703ebSMarek Vasut 	/* Resource Alloc setting */
73c67703ebSMarek Vasut 	io_write_32(QOSCTRL_RAS,   0x00000020U);
74c67703ebSMarek Vasut 	io_write_32(QOSCTRL_FIXTH, 0x000F0005U);
75c67703ebSMarek Vasut 	io_write_32(QOSCTRL_REGGD, 0x00000004U);
76c67703ebSMarek Vasut 	io_write_64(QOSCTRL_DANN,  0x0202020104040200U);
77c67703ebSMarek Vasut 	io_write_32(QOSCTRL_DANT,  0x00201008U);
78c67703ebSMarek Vasut 	io_write_32(QOSCTRL_EC,    0x00080001U);	/* need for H3 ES1 */
79c67703ebSMarek Vasut 	io_write_64(QOSCTRL_EMS,   0x0000000000000000U);
80c67703ebSMarek Vasut 	io_write_32(QOSCTRL_INSFC, 0x63C20001U);
81c67703ebSMarek Vasut 	io_write_32(QOSCTRL_BERR,  0x00000000U);
82c67703ebSMarek Vasut 
83c67703ebSMarek Vasut 	/* QOSBW setting */
84c67703ebSMarek Vasut 	io_write_32(QOSCTRL_SL_INIT, 0x0305007DU);
85c67703ebSMarek Vasut 	io_write_32(QOSCTRL_REF_ARS, 0x00330000U);
86c67703ebSMarek Vasut 
87c67703ebSMarek Vasut 	/* QOSBW SRAM setting */
88c67703ebSMarek Vasut 	uint32_t i;
89c67703ebSMarek Vasut 
90c67703ebSMarek Vasut 	for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
91c67703ebSMarek Vasut 		io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
92c67703ebSMarek Vasut 		io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
93c67703ebSMarek Vasut 	}
94c67703ebSMarek Vasut 	for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
95c67703ebSMarek Vasut 		io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
96c67703ebSMarek Vasut 		io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
97c67703ebSMarek Vasut 	}
98c67703ebSMarek Vasut 
99c67703ebSMarek Vasut 	/* AXI-IF arbitration setting */
100c67703ebSMarek Vasut 	io_write_32(DBSC_AXARB, 0x18010000U);
101c67703ebSMarek Vasut 
102c67703ebSMarek Vasut 	/* Resource Alloc start */
103c67703ebSMarek Vasut 	io_write_32(QOSCTRL_RAEN,  0x00000001U);
104c67703ebSMarek Vasut 
105c67703ebSMarek Vasut 	/* QOSBW start */
106c67703ebSMarek Vasut 	io_write_32(QOSCTRL_STATQC, 0x00000001U);
107c67703ebSMarek Vasut 
108c67703ebSMarek Vasut #else
109c67703ebSMarek Vasut 	NOTICE("BL2: QoS is None\n");
110c67703ebSMarek Vasut #endif /* !(RCAR_QOS_TYPE == RCAR_QOS_NONE) */
111c67703ebSMarek Vasut }
112