blob: c1bd4a606d942aea7403bc99bb57acfa0825d7f6 [file] [log] [blame]
Valentine Barshakf2184142018-10-30 02:06:17 +03001/*
Marek Vasut92f4b352019-06-14 02:05:43 +02002 * Copyright (c) 2015-2019, Renesas Electronics Corporation
Valentine Barshakf2184142018-10-30 02:06:17 +03003 * All rights reserved.
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#include <stdint.h>
Marek Vasut92f4b352019-06-14 02:05:43 +02009
Valentine Barshakf2184142018-10-30 02:06:17 +030010#include <common/debug.h>
Marek Vasut92f4b352019-06-14 02:05:43 +020011
12#include "../qos_common.h"
13#include "../qos_reg.h"
Valentine Barshakf2184142018-10-30 02:06:17 +030014#include "qos_init_v3m.h"
15
16#define RCAR_QOS_VERSION "rev.0.01"
17
Marek Vasutd4340e32019-06-14 02:07:18 +020018#include "qos_init_v3m_mstat.h"
Valentine Barshakf2184142018-10-30 02:06:17 +030019
20static void dbsc_setting(void)
21{
22
23 /* BUFCAM settings */
24 //DBSC_DBCAM0CNF0 not set
25 io_write_32(DBSC_DBCAM0CNF1, 0x00044218); //dbcam0cnf1
26 io_write_32(DBSC_DBCAM0CNF2, 0x000000F4); //dbcam0cnf2
27 //io_write_32(DBSC_DBCAM0CNF3, 0x00000007); //dbcam0cnf3
28 io_write_32(DBSC_DBSCHCNT0, 0x080F003F); //dbschcnt0
29 io_write_32(DBSC_DBSCHCNT1, 0x00001010); //dbschcnt0
30
31 io_write_32(DBSC_DBSCHSZ0, 0x00000001); //dbschsz0
32 io_write_32(DBSC_DBSCHRW0, 0x22421111); //dbschrw0
33 io_write_32(DBSC_DBSCHRW1, 0x00180034); //dbschrw1
34 io_write_32(DBSC_SCFCTST0,0x180B1708);
35 io_write_32(DBSC_SCFCTST1,0x0808070C);
36 io_write_32(DBSC_SCFCTST2,0x012F1123);
37
38 /* QoS Settings */
Marek Vasut92f4b352019-06-14 02:05:43 +020039 io_write_32(DBSC_DBSCHQOS00, 0x0000F000);
40 io_write_32(DBSC_DBSCHQOS01, 0x0000E000);
41 io_write_32(DBSC_DBSCHQOS02, 0x00007000);
42 io_write_32(DBSC_DBSCHQOS03, 0x00000000);
43 //DBSC_DBSCHQOS10 not set
44 //DBSC_DBSCHQOS11 not set
45 //DBSC_DBSCHQOS12 not set
46 //DBSC_DBSCHQOS13 not set
47 //DBSC_DBSCHQOS20 not set
48 //DBSC_DBSCHQOS21 not set
49 //DBSC_DBSCHQOS22 not set
50 //DBSC_DBSCHQOS23 not set
51 //DBSC_DBSCHQOS30 not set
52 //DBSC_DBSCHQOS31 not set
53 //DBSC_DBSCHQOS32 not set
54 //DBSC_DBSCHQOS33 not set
55 io_write_32(DBSC_DBSCHQOS40, 0x0000F000);
56 io_write_32(DBSC_DBSCHQOS41, 0x0000EFFF);
57 io_write_32(DBSC_DBSCHQOS42, 0x0000B000);
58 io_write_32(DBSC_DBSCHQOS43, 0x00000000);
59 //DBSC_DBSCHQOS50 not set
60 //DBSC_DBSCHQOS51 not set
61 //DBSC_DBSCHQOS52 not set
62 //DBSC_DBSCHQOS53 not set
63 //DBSC_DBSCHQOS60 not set
64 //DBSC_DBSCHQOS61 not set
65 //DBSC_DBSCHQOS62 not set
66 //DBSC_DBSCHQOS63 not set
67 //DBSC_DBSCHQOS70 not set
68 //DBSC_DBSCHQOS71 not set
69 //DBSC_DBSCHQOS72 not set
70 //DBSC_DBSCHQOS73 not set
71 //DBSC_DBSCHQOS80 not set
72 //DBSC_DBSCHQOS81 not set
73 //DBSC_DBSCHQOS82 not set
74 //DBSC_DBSCHQOS83 not set
75 io_write_32(DBSC_DBSCHQOS90, 0x0000F000);
76 io_write_32(DBSC_DBSCHQOS91, 0x0000EFFF);
77 io_write_32(DBSC_DBSCHQOS92, 0x0000D000);
78 io_write_32(DBSC_DBSCHQOS93, 0x00000000);
79 //DBSC_DBSCHQOS100 not set
80 //DBSC_DBSCHQOS101 not set
81 //DBSC_DBSCHQOS102 not set
82 //DBSC_DBSCHQOS103 not set
83 //DBSC_DBSCHQOS110 not set
84 //DBSC_DBSCHQOS111 not set
85 //DBSC_DBSCHQOS112 not set
86 //DBSC_DBSCHQOS113 not set
87 //DBSC_DBSCHQOS120 not set
88 //DBSC_DBSCHQOS121 not set
89 //DBSC_DBSCHQOS122 not set
90 //DBSC_DBSCHQOS123 not set
91 io_write_32(DBSC_DBSCHQOS130, 0x0000F000);
92 io_write_32(DBSC_DBSCHQOS131, 0x0000EFFF);
93 io_write_32(DBSC_DBSCHQOS132, 0x0000E800);
94 io_write_32(DBSC_DBSCHQOS133, 0x00007000);
95 io_write_32(DBSC_DBSCHQOS140, 0x0000F000);
96 io_write_32(DBSC_DBSCHQOS141, 0x0000EFFF);
97 io_write_32(DBSC_DBSCHQOS142, 0x0000E800);
98 io_write_32(DBSC_DBSCHQOS143, 0x0000B000);
99 io_write_32(DBSC_DBSCHQOS150, 0x000007D0);
100 io_write_32(DBSC_DBSCHQOS151, 0x000007CF);
101 io_write_32(DBSC_DBSCHQOS152, 0x000005D0);
102 io_write_32(DBSC_DBSCHQOS153, 0x000003D0);
Valentine Barshakf2184142018-10-30 02:06:17 +0300103}
104
105void qos_init_v3m(void)
106{
107return;
108
109 dbsc_setting();
110
111#if !(RCAR_QOS_TYPE == RCAR_QOS_NONE)
112#if RCAR_QOS_TYPE == RCAR_QOS_TYPE_DEFAULT
113 NOTICE("BL2: QoS is default setting(%s)\n", RCAR_QOS_VERSION);
114#endif
115
116 /* Resource Alloc setting */
Marek Vasut92f4b352019-06-14 02:05:43 +0200117 io_write_32(QOSCTRL_RAS, 0x00000020U);
118 io_write_32(QOSCTRL_FIXTH, 0x000F0005U);
119 io_write_32(QOSCTRL_REGGD, 0x00000004U);
120 io_write_64(QOSCTRL_DANN, 0x0202020104040200U);
121 io_write_32(QOSCTRL_DANT, 0x00201008U);
122 io_write_32(QOSCTRL_EC, 0x00080001U); /* need for H3 ES1 */
123 io_write_64(QOSCTRL_EMS, 0x0000000000000000U);
124 io_write_32(QOSCTRL_INSFC, 0x63C20001U);
125 io_write_32(QOSCTRL_BERR, 0x00000000U);
Valentine Barshakf2184142018-10-30 02:06:17 +0300126
Marek Vasut92f4b352019-06-14 02:05:43 +0200127 /* QOSBW setting */
128 io_write_32(QOSCTRL_SL_INIT, 0x0305007DU);
129 io_write_32(QOSCTRL_REF_ARS, 0x00330000U);
Valentine Barshakf2184142018-10-30 02:06:17 +0300130
Marek Vasut92f4b352019-06-14 02:05:43 +0200131 /* QOSBW SRAM setting */
Valentine Barshakf2184142018-10-30 02:06:17 +0300132 uint32_t i;
133
134 for (i = 0U; i < ARRAY_SIZE(mstat_fix); i++) {
Marek Vasut04f6e1c2019-06-14 02:08:45 +0200135 io_write_64(QOSBW_FIX_QOS_BANK0 + i * 8, mstat_fix[i]);
136 io_write_64(QOSBW_FIX_QOS_BANK1 + i * 8, mstat_fix[i]);
Valentine Barshakf2184142018-10-30 02:06:17 +0300137 }
138 for (i = 0U; i < ARRAY_SIZE(mstat_be); i++) {
Marek Vasut04f6e1c2019-06-14 02:08:45 +0200139 io_write_64(QOSBW_BE_QOS_BANK0 + i * 8, mstat_be[i]);
140 io_write_64(QOSBW_BE_QOS_BANK1 + i * 8, mstat_be[i]);
Valentine Barshakf2184142018-10-30 02:06:17 +0300141 }
142
143 /* AXI-IF arbitration setting */
144 io_write_32(DBSC_AXARB, 0x18010000U);
145
146 /* Resource Alloc start */
Marek Vasut92f4b352019-06-14 02:05:43 +0200147 io_write_32(QOSCTRL_RAEN, 0x00000001U);
Valentine Barshakf2184142018-10-30 02:06:17 +0300148
Marek Vasut92f4b352019-06-14 02:05:43 +0200149 /* QOSBW start */
150 io_write_32(QOSCTRL_STATQC, 0x00000001U);
Valentine Barshakf2184142018-10-30 02:06:17 +0300151
152#else
153 NOTICE("BL2: QoS is None\n");
154#endif /* !(RCAR_QOS_TYPE == RCAR_QOS_NONE) */
155}