1b7134422SSumit Gupta // SPDX-License-Identifier: GPL-2.0
2b7134422SSumit Gupta /*
3b7134422SSumit Gupta * Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved
4b7134422SSumit Gupta *
5b7134422SSumit Gupta * The driver handles Error's from Control Backbone(CBB) generated due to
6b7134422SSumit Gupta * illegal accesses. When an error is reported from a NOC within CBB,
7b7134422SSumit Gupta * the driver checks ErrVld status of all three Error Logger's of that NOC.
8b7134422SSumit Gupta * It then prints debug information about failed transaction using ErrLog
9b7134422SSumit Gupta * registers of error logger which has ErrVld set. Currently, SLV, DEC,
10b7134422SSumit Gupta * TMO, SEC, UNS are the codes which are supported by CBB.
11b7134422SSumit Gupta */
12b7134422SSumit Gupta
13b7134422SSumit Gupta #include <linux/clk.h>
14b7134422SSumit Gupta #include <linux/cpufeature.h>
15b7134422SSumit Gupta #include <linux/debugfs.h>
16b7134422SSumit Gupta #include <linux/module.h>
17b7134422SSumit Gupta #include <linux/of.h>
18*8297603cSRob Herring #include <linux/of_address.h>
19b7134422SSumit Gupta #include <linux/platform_device.h>
20b7134422SSumit Gupta #include <linux/device.h>
21b7134422SSumit Gupta #include <linux/io.h>
22b7134422SSumit Gupta #include <linux/interrupt.h>
23b7134422SSumit Gupta #include <linux/ioport.h>
24b7134422SSumit Gupta #include <soc/tegra/fuse.h>
25b7134422SSumit Gupta #include <soc/tegra/tegra-cbb.h>
26b7134422SSumit Gupta
27b7134422SSumit Gupta #define ERRLOGGER_0_ID_COREID_0 0x00000000
28b7134422SSumit Gupta #define ERRLOGGER_0_ID_REVISIONID_0 0x00000004
29b7134422SSumit Gupta #define ERRLOGGER_0_FAULTEN_0 0x00000008
30b7134422SSumit Gupta #define ERRLOGGER_0_ERRVLD_0 0x0000000c
31b7134422SSumit Gupta #define ERRLOGGER_0_ERRCLR_0 0x00000010
32b7134422SSumit Gupta #define ERRLOGGER_0_ERRLOG0_0 0x00000014
33b7134422SSumit Gupta #define ERRLOGGER_0_ERRLOG1_0 0x00000018
34b7134422SSumit Gupta #define ERRLOGGER_0_RSVD_00_0 0x0000001c
35b7134422SSumit Gupta #define ERRLOGGER_0_ERRLOG3_0 0x00000020
36b7134422SSumit Gupta #define ERRLOGGER_0_ERRLOG4_0 0x00000024
37b7134422SSumit Gupta #define ERRLOGGER_0_ERRLOG5_0 0x00000028
38b7134422SSumit Gupta #define ERRLOGGER_0_STALLEN_0 0x00000038
39b7134422SSumit Gupta
40b7134422SSumit Gupta #define ERRLOGGER_1_ID_COREID_0 0x00000080
41b7134422SSumit Gupta #define ERRLOGGER_1_ID_REVISIONID_0 0x00000084
42b7134422SSumit Gupta #define ERRLOGGER_1_FAULTEN_0 0x00000088
43b7134422SSumit Gupta #define ERRLOGGER_1_ERRVLD_0 0x0000008c
44b7134422SSumit Gupta #define ERRLOGGER_1_ERRCLR_0 0x00000090
45b7134422SSumit Gupta #define ERRLOGGER_1_ERRLOG0_0 0x00000094
46b7134422SSumit Gupta #define ERRLOGGER_1_ERRLOG1_0 0x00000098
47b7134422SSumit Gupta #define ERRLOGGER_1_RSVD_00_0 0x0000009c
48b7134422SSumit Gupta #define ERRLOGGER_1_ERRLOG3_0 0x000000a0
49b7134422SSumit Gupta #define ERRLOGGER_1_ERRLOG4_0 0x000000a4
50b7134422SSumit Gupta #define ERRLOGGER_1_ERRLOG5_0 0x000000a8
51b7134422SSumit Gupta #define ERRLOGGER_1_STALLEN_0 0x000000b8
52b7134422SSumit Gupta
53b7134422SSumit Gupta #define ERRLOGGER_2_ID_COREID_0 0x00000100
54b7134422SSumit Gupta #define ERRLOGGER_2_ID_REVISIONID_0 0x00000104
55b7134422SSumit Gupta #define ERRLOGGER_2_FAULTEN_0 0x00000108
56b7134422SSumit Gupta #define ERRLOGGER_2_ERRVLD_0 0x0000010c
57b7134422SSumit Gupta #define ERRLOGGER_2_ERRCLR_0 0x00000110
58b7134422SSumit Gupta #define ERRLOGGER_2_ERRLOG0_0 0x00000114
59b7134422SSumit Gupta #define ERRLOGGER_2_ERRLOG1_0 0x00000118
60b7134422SSumit Gupta #define ERRLOGGER_2_RSVD_00_0 0x0000011c
61b7134422SSumit Gupta #define ERRLOGGER_2_ERRLOG3_0 0x00000120
62b7134422SSumit Gupta #define ERRLOGGER_2_ERRLOG4_0 0x00000124
63b7134422SSumit Gupta #define ERRLOGGER_2_ERRLOG5_0 0x00000128
64b7134422SSumit Gupta #define ERRLOGGER_2_STALLEN_0 0x00000138
65b7134422SSumit Gupta
66b7134422SSumit Gupta #define CBB_NOC_INITFLOW GENMASK(23, 20)
67b7134422SSumit Gupta #define CBB_NOC_TARGFLOW GENMASK(19, 16)
68b7134422SSumit Gupta #define CBB_NOC_TARG_SUBRANGE GENMASK(15, 9)
69b7134422SSumit Gupta #define CBB_NOC_SEQID GENMASK(8, 0)
70b7134422SSumit Gupta
71b7134422SSumit Gupta #define BPMP_NOC_INITFLOW GENMASK(20, 18)
72b7134422SSumit Gupta #define BPMP_NOC_TARGFLOW GENMASK(17, 13)
73b7134422SSumit Gupta #define BPMP_NOC_TARG_SUBRANGE GENMASK(12, 9)
74b7134422SSumit Gupta #define BPMP_NOC_SEQID GENMASK(8, 0)
75b7134422SSumit Gupta
76b7134422SSumit Gupta #define AON_NOC_INITFLOW GENMASK(22, 21)
77b7134422SSumit Gupta #define AON_NOC_TARGFLOW GENMASK(20, 15)
78b7134422SSumit Gupta #define AON_NOC_TARG_SUBRANGE GENMASK(14, 9)
79b7134422SSumit Gupta #define AON_NOC_SEQID GENMASK(8, 0)
80b7134422SSumit Gupta
81b7134422SSumit Gupta #define SCE_NOC_INITFLOW GENMASK(21, 19)
82b7134422SSumit Gupta #define SCE_NOC_TARGFLOW GENMASK(18, 14)
83b7134422SSumit Gupta #define SCE_NOC_TARG_SUBRANGE GENMASK(13, 9)
84b7134422SSumit Gupta #define SCE_NOC_SEQID GENMASK(8, 0)
85b7134422SSumit Gupta
86b7134422SSumit Gupta #define CBB_NOC_AXCACHE GENMASK(3, 0)
87b7134422SSumit Gupta #define CBB_NOC_NON_MOD GENMASK(4, 4)
88b7134422SSumit Gupta #define CBB_NOC_AXPROT GENMASK(7, 5)
89b7134422SSumit Gupta #define CBB_NOC_FALCONSEC GENMASK(9, 8)
90b7134422SSumit Gupta #define CBB_NOC_GRPSEC GENMASK(16, 10)
91b7134422SSumit Gupta #define CBB_NOC_VQC GENMASK(18, 17)
92b7134422SSumit Gupta #define CBB_NOC_MSTR_ID GENMASK(22, 19)
93b7134422SSumit Gupta #define CBB_NOC_AXI_ID GENMASK(30, 23)
94b7134422SSumit Gupta
95b7134422SSumit Gupta #define CLUSTER_NOC_AXCACHE GENMASK(3, 0)
96b7134422SSumit Gupta #define CLUSTER_NOC_AXPROT GENMASK(6, 4)
97b7134422SSumit Gupta #define CLUSTER_NOC_FALCONSEC GENMASK(8, 7)
98b7134422SSumit Gupta #define CLUSTER_NOC_GRPSEC GENMASK(15, 9)
99b7134422SSumit Gupta #define CLUSTER_NOC_VQC GENMASK(17, 16)
100b7134422SSumit Gupta #define CLUSTER_NOC_MSTR_ID GENMASK(21, 18)
101b7134422SSumit Gupta
102b7134422SSumit Gupta #define CBB_ERR_OPC GENMASK(4, 1)
103b7134422SSumit Gupta #define CBB_ERR_ERRCODE GENMASK(10, 8)
104b7134422SSumit Gupta #define CBB_ERR_LEN1 GENMASK(27, 16)
105b7134422SSumit Gupta
106b7134422SSumit Gupta #define DMAAPB_X_RAW_INTERRUPT_STATUS 0x2ec
107b7134422SSumit Gupta
108b7134422SSumit Gupta struct tegra194_cbb_packet_header {
109b7134422SSumit Gupta bool lock; // [0]
110b7134422SSumit Gupta u8 opc; // [4:1]
111b7134422SSumit Gupta u8 errcode; // [10:8]= RD, RDW, RDL, RDX, WR, WRW, WRC, PRE, URG
112b7134422SSumit Gupta u16 len1; // [27:16]
113b7134422SSumit Gupta bool format; // [31] = 1 -> FlexNoC versions 2.7 & above
114b7134422SSumit Gupta };
115b7134422SSumit Gupta
116b7134422SSumit Gupta struct tegra194_cbb_aperture {
117b7134422SSumit Gupta u8 initflow;
118b7134422SSumit Gupta u8 targflow;
119b7134422SSumit Gupta u8 targ_subrange;
120b7134422SSumit Gupta u8 init_mapping;
121b7134422SSumit Gupta u32 init_localaddress;
122b7134422SSumit Gupta u8 targ_mapping;
123b7134422SSumit Gupta u32 targ_localaddress;
124b7134422SSumit Gupta u16 seqid;
125b7134422SSumit Gupta };
126b7134422SSumit Gupta
127b7134422SSumit Gupta struct tegra194_cbb_userbits {
128b7134422SSumit Gupta u8 axcache;
129b7134422SSumit Gupta u8 non_mod;
130b7134422SSumit Gupta u8 axprot;
131b7134422SSumit Gupta u8 falconsec;
132b7134422SSumit Gupta u8 grpsec;
133b7134422SSumit Gupta u8 vqc;
134b7134422SSumit Gupta u8 mstr_id;
135b7134422SSumit Gupta u8 axi_id;
136b7134422SSumit Gupta };
137b7134422SSumit Gupta
138b7134422SSumit Gupta struct tegra194_cbb_noc_data {
139b7134422SSumit Gupta const char *name;
140b7134422SSumit Gupta bool erd_mask_inband_err;
141b7134422SSumit Gupta const char * const *master_id;
142b7134422SSumit Gupta unsigned int max_aperture;
143b7134422SSumit Gupta const struct tegra194_cbb_aperture *noc_aperture;
144b7134422SSumit Gupta const char * const *routeid_initflow;
145b7134422SSumit Gupta const char * const *routeid_targflow;
146b7134422SSumit Gupta void (*parse_routeid)(struct tegra194_cbb_aperture *info, u64 routeid);
147b7134422SSumit Gupta void (*parse_userbits)(struct tegra194_cbb_userbits *usrbits, u32 elog_5);
148b7134422SSumit Gupta };
149b7134422SSumit Gupta
150b7134422SSumit Gupta struct tegra194_axi2apb_bridge {
151b7134422SSumit Gupta struct resource res;
152b7134422SSumit Gupta void __iomem *base;
153b7134422SSumit Gupta };
154b7134422SSumit Gupta
155b7134422SSumit Gupta struct tegra194_cbb {
156b7134422SSumit Gupta struct tegra_cbb base;
157b7134422SSumit Gupta
158b7134422SSumit Gupta const struct tegra194_cbb_noc_data *noc;
159b7134422SSumit Gupta struct resource *res;
160b7134422SSumit Gupta
161b7134422SSumit Gupta void __iomem *regs;
162b7134422SSumit Gupta unsigned int num_intr;
163b7134422SSumit Gupta unsigned int sec_irq;
164b7134422SSumit Gupta unsigned int nonsec_irq;
165b7134422SSumit Gupta u32 errlog0;
166b7134422SSumit Gupta u32 errlog1;
167b7134422SSumit Gupta u32 errlog2;
168b7134422SSumit Gupta u32 errlog3;
169b7134422SSumit Gupta u32 errlog4;
170b7134422SSumit Gupta u32 errlog5;
171b7134422SSumit Gupta
172b7134422SSumit Gupta struct tegra194_axi2apb_bridge *bridges;
173b7134422SSumit Gupta unsigned int num_bridges;
174b7134422SSumit Gupta };
175b7134422SSumit Gupta
to_tegra194_cbb(struct tegra_cbb * cbb)176b7134422SSumit Gupta static inline struct tegra194_cbb *to_tegra194_cbb(struct tegra_cbb *cbb)
177b7134422SSumit Gupta {
178b7134422SSumit Gupta return container_of(cbb, struct tegra194_cbb, base);
179b7134422SSumit Gupta }
180b7134422SSumit Gupta
181b7134422SSumit Gupta static LIST_HEAD(cbb_list);
182b7134422SSumit Gupta static DEFINE_SPINLOCK(cbb_lock);
183b7134422SSumit Gupta
184b7134422SSumit Gupta static const char * const tegra194_cbb_trantype[] = {
185b7134422SSumit Gupta "RD - Read, Incrementing",
186b7134422SSumit Gupta "RDW - Read, Wrap", /* Not Supported */
187b7134422SSumit Gupta "RDX - Exclusive Read", /* Not Supported */
188b7134422SSumit Gupta "RDL - Linked Read", /* Not Supported */
189b7134422SSumit Gupta "WR - Write, Incrementing",
190b7134422SSumit Gupta "WRW - Write, Wrap", /* Not Supported */
191b7134422SSumit Gupta "WRC - Exclusive Write", /* Not Supported */
192b7134422SSumit Gupta "PRE - Preamble Sequence for Fixed Accesses"
193b7134422SSumit Gupta };
194b7134422SSumit Gupta
195b7134422SSumit Gupta static const char * const tegra194_axi2apb_error[] = {
196b7134422SSumit Gupta "SFIFONE - Status FIFO Not Empty interrupt",
197b7134422SSumit Gupta "SFIFOF - Status FIFO Full interrupt",
198b7134422SSumit Gupta "TIM - Timer(Timeout) interrupt",
199b7134422SSumit Gupta "SLV - SLVERR interrupt",
200b7134422SSumit Gupta "NULL",
201b7134422SSumit Gupta "ERBF - Early response buffer Full interrupt",
202b7134422SSumit Gupta "NULL",
203b7134422SSumit Gupta "RDFIFOF - Read Response FIFO Full interrupt",
204b7134422SSumit Gupta "WRFIFOF - Write Response FIFO Full interrupt",
205b7134422SSumit Gupta "CH0DFIFOF - Ch0 Data FIFO Full interrupt",
206b7134422SSumit Gupta "CH1DFIFOF - Ch1 Data FIFO Full interrupt",
207b7134422SSumit Gupta "CH2DFIFOF - Ch2 Data FIFO Full interrupt",
208b7134422SSumit Gupta "UAT - Unsupported alignment type error",
209b7134422SSumit Gupta "UBS - Unsupported burst size error",
210b7134422SSumit Gupta "UBE - Unsupported Byte Enable error",
211b7134422SSumit Gupta "UBT - Unsupported burst type error",
212b7134422SSumit Gupta "BFS - Block Firewall security error",
213b7134422SSumit Gupta "ARFS - Address Range Firewall security error",
214b7134422SSumit Gupta "CH0RFIFOF - Ch0 Request FIFO Full interrupt",
215b7134422SSumit Gupta "CH1RFIFOF - Ch1 Request FIFO Full interrupt",
216b7134422SSumit Gupta "CH2RFIFOF - Ch2 Request FIFO Full interrupt"
217b7134422SSumit Gupta };
218b7134422SSumit Gupta
219b7134422SSumit Gupta static const char * const tegra194_master_id[] = {
220b7134422SSumit Gupta [0x0] = "CCPLEX",
221b7134422SSumit Gupta [0x1] = "CCPLEX_DPMU",
222b7134422SSumit Gupta [0x2] = "BPMP",
223b7134422SSumit Gupta [0x3] = "AON",
224b7134422SSumit Gupta [0x4] = "SCE",
225b7134422SSumit Gupta [0x5] = "GPCDMA_PERIPHERAL",
226b7134422SSumit Gupta [0x6] = "TSECA",
227b7134422SSumit Gupta [0x7] = "TSECB",
228b7134422SSumit Gupta [0x8] = "JTAGM_DFT",
229b7134422SSumit Gupta [0x9] = "CORESIGHT_AXIAP",
230b7134422SSumit Gupta [0xa] = "APE",
231b7134422SSumit Gupta [0xb] = "PEATR",
232b7134422SSumit Gupta [0xc] = "NVDEC",
233b7134422SSumit Gupta [0xd] = "RCE",
234b7134422SSumit Gupta [0xe] = "NVDEC1"
235b7134422SSumit Gupta };
236b7134422SSumit Gupta
237b7134422SSumit Gupta static const struct tegra_cbb_error tegra194_cbb_errors[] = {
238b7134422SSumit Gupta {
239b7134422SSumit Gupta .code = "SLV",
240b7134422SSumit Gupta .source = "Target",
241b7134422SSumit Gupta .desc = "Target error detected by CBB slave"
242b7134422SSumit Gupta }, {
243b7134422SSumit Gupta .code = "DEC",
244b7134422SSumit Gupta .source = "Initiator NIU",
245b7134422SSumit Gupta .desc = "Address decode error"
246b7134422SSumit Gupta }, {
247b7134422SSumit Gupta .code = "UNS",
248b7134422SSumit Gupta .source = "Target NIU",
249b7134422SSumit Gupta .desc = "Unsupported request. Not a valid transaction"
250b7134422SSumit Gupta }, {
251b7134422SSumit Gupta .code = "DISC", /* Not Supported by CBB */
252b7134422SSumit Gupta .source = "Power Disconnect",
253b7134422SSumit Gupta .desc = "Disconnected target or domain"
254b7134422SSumit Gupta }, {
255b7134422SSumit Gupta .code = "SEC",
256b7134422SSumit Gupta .source = "Initiator NIU or Firewall",
257b7134422SSumit Gupta .desc = "Security violation. Firewall error"
258b7134422SSumit Gupta }, {
259b7134422SSumit Gupta .code = "HIDE", /* Not Supported by CBB */
260b7134422SSumit Gupta .source = "Firewall",
261b7134422SSumit Gupta .desc = "Hidden security violation, reported as OK to initiator"
262b7134422SSumit Gupta }, {
263b7134422SSumit Gupta .code = "TMO",
264b7134422SSumit Gupta .source = "Target NIU",
265b7134422SSumit Gupta .desc = "Target time-out error"
266b7134422SSumit Gupta }, {
267b7134422SSumit Gupta .code = "RSV",
268b7134422SSumit Gupta .source = "None",
269b7134422SSumit Gupta .desc = "Reserved"
270b7134422SSumit Gupta }
271b7134422SSumit Gupta };
272b7134422SSumit Gupta
273b7134422SSumit Gupta /*
274b7134422SSumit Gupta * CBB NOC aperture lookup table as per file "cbb_central_noc_Structure.info".
275b7134422SSumit Gupta */
276b7134422SSumit Gupta static const char * const tegra194_cbbcentralnoc_routeid_initflow[] = {
277b7134422SSumit Gupta [0x0] = "aon_p2ps/I/aon",
278b7134422SSumit Gupta [0x1] = "ape_p2ps/I/ape_p2ps",
279b7134422SSumit Gupta [0x2] = "bpmp_p2ps/I/bpmp_p2ps",
280b7134422SSumit Gupta [0x3] = "ccroc_p2ps/I/ccroc_p2ps",
281b7134422SSumit Gupta [0x4] = "csite_p2ps/I/0",
282b7134422SSumit Gupta [0x5] = "gpcdma_mmio_p2ps/I/0",
283b7134422SSumit Gupta [0x6] = "jtag_p2ps/I/0",
284b7134422SSumit Gupta [0x7] = "nvdec1_p2ps/I/0",
285b7134422SSumit Gupta [0x8] = "nvdec_p2ps/I/0",
286b7134422SSumit Gupta [0x9] = "rce_p2ps/I/rce_p2ps",
287b7134422SSumit Gupta [0xa] = "sce_p2ps/I/sce_p2ps",
288b7134422SSumit Gupta [0xb] = "tseca_p2ps/I/0",
289b7134422SSumit Gupta [0xc] = "tsecb_p2ps/I/0",
290b7134422SSumit Gupta [0xd] = "RESERVED",
291b7134422SSumit Gupta [0xe] = "RESERVED",
292b7134422SSumit Gupta [0xf] = "RESERVED"
293b7134422SSumit Gupta };
294b7134422SSumit Gupta
295b7134422SSumit Gupta static const char * const tegra194_cbbcentralnoc_routeid_targflow[] = {
296b7134422SSumit Gupta [0x0] = "SVC/T/intreg",
297b7134422SSumit Gupta [0x1] = "axis_satellite_axi2apb_p2pm/T/axis_satellite_axi2apb_p2pm",
298b7134422SSumit Gupta [0x2] = "axis_satellite_grout/T/axis_satellite_grout",
299b7134422SSumit Gupta [0x3] = "cbb_firewall/T/cbb_firewall",
300b7134422SSumit Gupta [0x4] = "gpu_p2pm/T/gpu_p2pm",
301b7134422SSumit Gupta [0x5] = "host1x_p2pm/T/host1x_p2pm",
302b7134422SSumit Gupta [0x6] = "sapb_3_p2pm/T/sapb_3_p2pm",
303b7134422SSumit Gupta [0x7] = "smmu0_p2pm/T/smmu0_p2pm",
304b7134422SSumit Gupta [0x8] = "smmu1_p2pm/T/smmu1_p2pm",
305b7134422SSumit Gupta [0x9] = "smmu2_p2pm/T/smmu2_p2pm",
306b7134422SSumit Gupta [0xa] = "stm_p2pm/T/stm_p2pm",
307b7134422SSumit Gupta [0xb] = "RESERVED",
308b7134422SSumit Gupta [0xc] = "RESERVED",
309b7134422SSumit Gupta [0xd] = "RESERVED",
310b7134422SSumit Gupta [0xe] = "RESERVED",
311b7134422SSumit Gupta [0xf] = "RESERVED"
312b7134422SSumit Gupta };
313b7134422SSumit Gupta
314b7134422SSumit Gupta /*
315b7134422SSumit Gupta * Fields of CBB NOC lookup table:
316b7134422SSumit Gupta * Init flow, Targ flow, Targ subrange, Init mapping, Init localAddress,
317b7134422SSumit Gupta * Targ mapping, Targ localAddress
318b7134422SSumit Gupta * ----------------------------------------------------------------------------
319b7134422SSumit Gupta */
320b7134422SSumit Gupta static const struct tegra194_cbb_aperture tegra194_cbbcentralnoc_apert_lookup[] = {
321b7134422SSumit Gupta { 0x0, 0x0, 0x00, 0x0, 0x02300000, 0, 0x00000000 },
322b7134422SSumit Gupta { 0x0, 0x1, 0x00, 0x0, 0x02003000, 0, 0x02003000 },
323b7134422SSumit Gupta { 0x0, 0x1, 0x01, 0x0, 0x02006000, 2, 0x02006000 },
324b7134422SSumit Gupta { 0x0, 0x1, 0x02, 0x0, 0x02016000, 3, 0x02016000 },
325b7134422SSumit Gupta { 0x0, 0x1, 0x03, 0x0, 0x0201d000, 4, 0x0201d000 },
326b7134422SSumit Gupta { 0x0, 0x1, 0x04, 0x0, 0x0202b000, 6, 0x0202b000 },
327b7134422SSumit Gupta { 0x0, 0x1, 0x05, 0x0, 0x02434000, 20, 0x02434000 },
328b7134422SSumit Gupta { 0x0, 0x1, 0x06, 0x0, 0x02436000, 21, 0x02436000 },
329b7134422SSumit Gupta { 0x0, 0x1, 0x07, 0x0, 0x02438000, 22, 0x02438000 },
330b7134422SSumit Gupta { 0x0, 0x1, 0x08, 0x0, 0x02445000, 24, 0x02445000 },
331b7134422SSumit Gupta { 0x0, 0x1, 0x09, 0x0, 0x02446000, 25, 0x02446000 },
332b7134422SSumit Gupta { 0x0, 0x1, 0x0a, 0x0, 0x02004000, 1, 0x02004000 },
333b7134422SSumit Gupta { 0x0, 0x1, 0x0b, 0x0, 0x0201e000, 5, 0x0201e000 },
334b7134422SSumit Gupta { 0x0, 0x1, 0x0c, 0x0, 0x0202c000, 7, 0x0202c000 },
335b7134422SSumit Gupta { 0x0, 0x1, 0x0d, 0x0, 0x02204000, 8, 0x02204000 },
336b7134422SSumit Gupta { 0x0, 0x1, 0x0e, 0x0, 0x02214000, 9, 0x02214000 },
337b7134422SSumit Gupta { 0x0, 0x1, 0x0f, 0x0, 0x02224000, 10, 0x02224000 },
338b7134422SSumit Gupta { 0x0, 0x1, 0x10, 0x0, 0x02234000, 11, 0x02234000 },
339b7134422SSumit Gupta { 0x0, 0x1, 0x11, 0x0, 0x02244000, 12, 0x02244000 },
340b7134422SSumit Gupta { 0x0, 0x1, 0x12, 0x0, 0x02254000, 13, 0x02254000 },
341b7134422SSumit Gupta { 0x0, 0x1, 0x13, 0x0, 0x02264000, 14, 0x02264000 },
342b7134422SSumit Gupta { 0x0, 0x1, 0x14, 0x0, 0x02274000, 15, 0x02274000 },
343b7134422SSumit Gupta { 0x0, 0x1, 0x15, 0x0, 0x02284000, 16, 0x02284000 },
344b7134422SSumit Gupta { 0x0, 0x1, 0x16, 0x0, 0x0243a000, 23, 0x0243a000 },
345b7134422SSumit Gupta { 0x0, 0x1, 0x17, 0x0, 0x02370000, 17, 0x02370000 },
346b7134422SSumit Gupta { 0x0, 0x1, 0x18, 0x0, 0x023d0000, 18, 0x023d0000 },
347b7134422SSumit Gupta { 0x0, 0x1, 0x19, 0x0, 0x023e0000, 19, 0x023e0000 },
348b7134422SSumit Gupta { 0x0, 0x1, 0x1a, 0x0, 0x02450000, 26, 0x02450000 },
349b7134422SSumit Gupta { 0x0, 0x1, 0x1b, 0x0, 0x02460000, 27, 0x02460000 },
350b7134422SSumit Gupta { 0x0, 0x1, 0x1c, 0x0, 0x02490000, 28, 0x02490000 },
351b7134422SSumit Gupta { 0x0, 0x1, 0x1d, 0x0, 0x03130000, 31, 0x03130000 },
352b7134422SSumit Gupta { 0x0, 0x1, 0x1e, 0x0, 0x03160000, 32, 0x03160000 },
353b7134422SSumit Gupta { 0x0, 0x1, 0x1f, 0x0, 0x03270000, 33, 0x03270000 },
354b7134422SSumit Gupta { 0x0, 0x1, 0x20, 0x0, 0x032e0000, 35, 0x032e0000 },
355b7134422SSumit Gupta { 0x0, 0x1, 0x21, 0x0, 0x03300000, 36, 0x03300000 },
356b7134422SSumit Gupta { 0x0, 0x1, 0x22, 0x0, 0x13090000, 40, 0x13090000 },
357b7134422SSumit Gupta { 0x0, 0x1, 0x23, 0x0, 0x20120000, 43, 0x20120000 },
358b7134422SSumit Gupta { 0x0, 0x1, 0x24, 0x0, 0x20170000, 44, 0x20170000 },
359b7134422SSumit Gupta { 0x0, 0x1, 0x25, 0x0, 0x20190000, 45, 0x20190000 },
360b7134422SSumit Gupta { 0x0, 0x1, 0x26, 0x0, 0x201b0000, 46, 0x201b0000 },
361b7134422SSumit Gupta { 0x0, 0x1, 0x27, 0x0, 0x20250000, 47, 0x20250000 },
362b7134422SSumit Gupta { 0x0, 0x1, 0x28, 0x0, 0x20260000, 48, 0x20260000 },
363b7134422SSumit Gupta { 0x0, 0x1, 0x29, 0x0, 0x20420000, 49, 0x20420000 },
364b7134422SSumit Gupta { 0x0, 0x1, 0x2a, 0x0, 0x20460000, 50, 0x20460000 },
365b7134422SSumit Gupta { 0x0, 0x1, 0x2b, 0x0, 0x204f0000, 51, 0x204f0000 },
366b7134422SSumit Gupta { 0x0, 0x1, 0x2c, 0x0, 0x20520000, 52, 0x20520000 },
367b7134422SSumit Gupta { 0x0, 0x1, 0x2d, 0x0, 0x20580000, 53, 0x20580000 },
368b7134422SSumit Gupta { 0x0, 0x1, 0x2e, 0x0, 0x205a0000, 54, 0x205a0000 },
369b7134422SSumit Gupta { 0x0, 0x1, 0x2f, 0x0, 0x205c0000, 55, 0x205c0000 },
370b7134422SSumit Gupta { 0x0, 0x1, 0x30, 0x0, 0x20690000, 56, 0x20690000 },
371b7134422SSumit Gupta { 0x0, 0x1, 0x31, 0x0, 0x20770000, 57, 0x20770000 },
372b7134422SSumit Gupta { 0x0, 0x1, 0x32, 0x0, 0x20790000, 58, 0x20790000 },
373b7134422SSumit Gupta { 0x0, 0x1, 0x33, 0x0, 0x20880000, 59, 0x20880000 },
374b7134422SSumit Gupta { 0x0, 0x1, 0x34, 0x0, 0x20990000, 62, 0x20990000 },
375b7134422SSumit Gupta { 0x0, 0x1, 0x35, 0x0, 0x20e10000, 65, 0x20e10000 },
376b7134422SSumit Gupta { 0x0, 0x1, 0x36, 0x0, 0x20e70000, 66, 0x20e70000 },
377b7134422SSumit Gupta { 0x0, 0x1, 0x37, 0x0, 0x20e80000, 67, 0x20e80000 },
378b7134422SSumit Gupta { 0x0, 0x1, 0x38, 0x0, 0x20f30000, 68, 0x20f30000 },
379b7134422SSumit Gupta { 0x0, 0x1, 0x39, 0x0, 0x20f50000, 69, 0x20f50000 },
380b7134422SSumit Gupta { 0x0, 0x1, 0x3a, 0x0, 0x20fc0000, 70, 0x20fc0000 },
381b7134422SSumit Gupta { 0x0, 0x1, 0x3b, 0x0, 0x21110000, 72, 0x21110000 },
382b7134422SSumit Gupta { 0x0, 0x1, 0x3c, 0x0, 0x21270000, 73, 0x21270000 },
383b7134422SSumit Gupta { 0x0, 0x1, 0x3d, 0x0, 0x21290000, 74, 0x21290000 },
384b7134422SSumit Gupta { 0x0, 0x1, 0x3e, 0x0, 0x21840000, 75, 0x21840000 },
385b7134422SSumit Gupta { 0x0, 0x1, 0x3f, 0x0, 0x21880000, 76, 0x21880000 },
386b7134422SSumit Gupta { 0x0, 0x1, 0x40, 0x0, 0x218d0000, 77, 0x218d0000 },
387b7134422SSumit Gupta { 0x0, 0x1, 0x41, 0x0, 0x21950000, 78, 0x21950000 },
388b7134422SSumit Gupta { 0x0, 0x1, 0x42, 0x0, 0x21960000, 79, 0x21960000 },
389b7134422SSumit Gupta { 0x0, 0x1, 0x43, 0x0, 0x21a10000, 80, 0x21a10000 },
390b7134422SSumit Gupta { 0x0, 0x1, 0x44, 0x0, 0x024a0000, 29, 0x024a0000 },
391b7134422SSumit Gupta { 0x0, 0x1, 0x45, 0x0, 0x024c0000, 30, 0x024c0000 },
392b7134422SSumit Gupta { 0x0, 0x1, 0x46, 0x0, 0x032c0000, 34, 0x032c0000 },
393b7134422SSumit Gupta { 0x0, 0x1, 0x47, 0x0, 0x03400000, 37, 0x03400000 },
394b7134422SSumit Gupta { 0x0, 0x1, 0x48, 0x0, 0x130a0000, 41, 0x130a0000 },
395b7134422SSumit Gupta { 0x0, 0x1, 0x49, 0x0, 0x130c0000, 42, 0x130c0000 },
396b7134422SSumit Gupta { 0x0, 0x1, 0x4a, 0x0, 0x208a0000, 60, 0x208a0000 },
397b7134422SSumit Gupta { 0x0, 0x1, 0x4b, 0x0, 0x208c0000, 61, 0x208c0000 },
398b7134422SSumit Gupta { 0x0, 0x1, 0x4c, 0x0, 0x209a0000, 63, 0x209a0000 },
399b7134422SSumit Gupta { 0x0, 0x1, 0x4d, 0x0, 0x21a40000, 81, 0x21a40000 },
400b7134422SSumit Gupta { 0x0, 0x1, 0x4e, 0x0, 0x03440000, 38, 0x03440000 },
401b7134422SSumit Gupta { 0x0, 0x1, 0x4f, 0x0, 0x20d00000, 64, 0x20d00000 },
402b7134422SSumit Gupta { 0x0, 0x1, 0x50, 0x0, 0x21000000, 71, 0x21000000 },
403b7134422SSumit Gupta { 0x0, 0x1, 0x51, 0x0, 0x0b000000, 39, 0x0b000000 },
404b7134422SSumit Gupta { 0x0, 0x2, 0x00, 0x0, 0x00000000, 0, 0x00000000 },
405b7134422SSumit Gupta { 0x0, 0x3, 0x00, 0x0, 0x02340000, 0, 0x00000000 },
406b7134422SSumit Gupta { 0x0, 0x4, 0x00, 0x0, 0x17000000, 0, 0x17000000 },
407b7134422SSumit Gupta { 0x0, 0x4, 0x01, 0x0, 0x18000000, 1, 0x18000000 },
408b7134422SSumit Gupta { 0x0, 0x5, 0x00, 0x0, 0x13e80000, 1, 0x13e80000 },
409b7134422SSumit Gupta { 0x0, 0x5, 0x01, 0x0, 0x15810000, 12, 0x15810000 },
410b7134422SSumit Gupta { 0x0, 0x5, 0x02, 0x0, 0x15840000, 14, 0x15840000 },
411b7134422SSumit Gupta { 0x0, 0x5, 0x03, 0x0, 0x15a40000, 17, 0x15a40000 },
412b7134422SSumit Gupta { 0x0, 0x5, 0x04, 0x0, 0x13f00000, 3, 0x13f00000 },
413b7134422SSumit Gupta { 0x0, 0x5, 0x05, 0x0, 0x15820000, 13, 0x15820000 },
414b7134422SSumit Gupta { 0x0, 0x5, 0x06, 0x0, 0x13ec0000, 2, 0x13ec0000 },
415b7134422SSumit Gupta { 0x0, 0x5, 0x07, 0x0, 0x15200000, 6, 0x15200000 },
416b7134422SSumit Gupta { 0x0, 0x5, 0x08, 0x0, 0x15340000, 7, 0x15340000 },
417b7134422SSumit Gupta { 0x0, 0x5, 0x09, 0x0, 0x15380000, 8, 0x15380000 },
418b7134422SSumit Gupta { 0x0, 0x5, 0x0a, 0x0, 0x15500000, 10, 0x15500000 },
419b7134422SSumit Gupta { 0x0, 0x5, 0x0b, 0x0, 0x155c0000, 11, 0x155c0000 },
420b7134422SSumit Gupta { 0x0, 0x5, 0x0c, 0x0, 0x15a00000, 16, 0x15a00000 },
421b7134422SSumit Gupta { 0x0, 0x5, 0x0d, 0x0, 0x13e00000, 0, 0x13e00000 },
422b7134422SSumit Gupta { 0x0, 0x5, 0x0e, 0x0, 0x15100000, 5, 0x15100000 },
423b7134422SSumit Gupta { 0x0, 0x5, 0x0f, 0x0, 0x15480000, 9, 0x15480000 },
424b7134422SSumit Gupta { 0x0, 0x5, 0x10, 0x0, 0x15880000, 15, 0x15880000 },
425b7134422SSumit Gupta { 0x0, 0x5, 0x11, 0x0, 0x15a80000, 18, 0x15a80000 },
426b7134422SSumit Gupta { 0x0, 0x5, 0x12, 0x0, 0x15b00000, 19, 0x15b00000 },
427b7134422SSumit Gupta { 0x0, 0x5, 0x13, 0x0, 0x14800000, 4, 0x14800000 },
428b7134422SSumit Gupta { 0x0, 0x5, 0x14, 0x0, 0x15c00000, 20, 0x15c00000 },
429b7134422SSumit Gupta { 0x0, 0x5, 0x15, 0x0, 0x16000000, 21, 0x16000000 },
430b7134422SSumit Gupta { 0x0, 0x6, 0x00, 0x0, 0x02000000, 4, 0x02000000 },
431b7134422SSumit Gupta { 0x0, 0x6, 0x01, 0x0, 0x02007000, 5, 0x02007000 },
432b7134422SSumit Gupta { 0x0, 0x6, 0x02, 0x0, 0x02008000, 6, 0x02008000 },
433b7134422SSumit Gupta { 0x0, 0x6, 0x03, 0x0, 0x02013000, 7, 0x02013000 },
434b7134422SSumit Gupta { 0x0, 0x6, 0x04, 0x0, 0x0201c000, 8, 0x0201c000 },
435b7134422SSumit Gupta { 0x0, 0x6, 0x05, 0x0, 0x02020000, 9, 0x02020000 },
436b7134422SSumit Gupta { 0x0, 0x6, 0x06, 0x0, 0x0202a000, 10, 0x0202a000 },
437b7134422SSumit Gupta { 0x0, 0x6, 0x07, 0x0, 0x0202e000, 11, 0x0202e000 },
438b7134422SSumit Gupta { 0x0, 0x6, 0x08, 0x0, 0x06400000, 33, 0x06400000 },
439b7134422SSumit Gupta { 0x0, 0x6, 0x09, 0x0, 0x02038000, 12, 0x02038000 },
440b7134422SSumit Gupta { 0x0, 0x6, 0x0a, 0x0, 0x00100000, 0, 0x00100000 },
441b7134422SSumit Gupta { 0x0, 0x6, 0x0b, 0x0, 0x023b0000, 13, 0x023b0000 },
442b7134422SSumit Gupta { 0x0, 0x6, 0x0c, 0x0, 0x02800000, 16, 0x02800000 },
443b7134422SSumit Gupta { 0x0, 0x6, 0x0d, 0x0, 0x030e0000, 22, 0x030e0000 },
444b7134422SSumit Gupta { 0x0, 0x6, 0x0e, 0x0, 0x03800000, 23, 0x03800000 },
445b7134422SSumit Gupta { 0x0, 0x6, 0x0f, 0x0, 0x03980000, 25, 0x03980000 },
446b7134422SSumit Gupta { 0x0, 0x6, 0x10, 0x0, 0x03a60000, 26, 0x03a60000 },
447b7134422SSumit Gupta { 0x0, 0x6, 0x11, 0x0, 0x03d80000, 31, 0x03d80000 },
448b7134422SSumit Gupta { 0x0, 0x6, 0x12, 0x0, 0x20000000, 36, 0x20000000 },
449b7134422SSumit Gupta { 0x0, 0x6, 0x13, 0x0, 0x20050000, 38, 0x20050000 },
450b7134422SSumit Gupta { 0x0, 0x6, 0x14, 0x0, 0x201e0000, 40, 0x201e0000 },
451b7134422SSumit Gupta { 0x0, 0x6, 0x15, 0x0, 0x20280000, 42, 0x20280000 },
452b7134422SSumit Gupta { 0x0, 0x6, 0x16, 0x0, 0x202c0000, 43, 0x202c0000 },
453b7134422SSumit Gupta { 0x0, 0x6, 0x17, 0x0, 0x20390000, 44, 0x20390000 },
454b7134422SSumit Gupta { 0x0, 0x6, 0x18, 0x0, 0x20430000, 45, 0x20430000 },
455b7134422SSumit Gupta { 0x0, 0x6, 0x19, 0x0, 0x20440000, 46, 0x20440000 },
456b7134422SSumit Gupta { 0x0, 0x6, 0x1a, 0x0, 0x204e0000, 47, 0x204e0000 },
457b7134422SSumit Gupta { 0x0, 0x6, 0x1b, 0x0, 0x20550000, 48, 0x20550000 },
458b7134422SSumit Gupta { 0x0, 0x6, 0x1c, 0x0, 0x20570000, 49, 0x20570000 },
459b7134422SSumit Gupta { 0x0, 0x6, 0x1d, 0x0, 0x20590000, 50, 0x20590000 },
460b7134422SSumit Gupta { 0x0, 0x6, 0x1e, 0x0, 0x20730000, 52, 0x20730000 },
461b7134422SSumit Gupta { 0x0, 0x6, 0x1f, 0x0, 0x209f0000, 54, 0x209f0000 },
462b7134422SSumit Gupta { 0x0, 0x6, 0x20, 0x0, 0x20e20000, 55, 0x20e20000 },
463b7134422SSumit Gupta { 0x0, 0x6, 0x21, 0x0, 0x20ed0000, 56, 0x20ed0000 },
464b7134422SSumit Gupta { 0x0, 0x6, 0x22, 0x0, 0x20fd0000, 57, 0x20fd0000 },
465b7134422SSumit Gupta { 0x0, 0x6, 0x23, 0x0, 0x21120000, 59, 0x21120000 },
466b7134422SSumit Gupta { 0x0, 0x6, 0x24, 0x0, 0x211a0000, 60, 0x211a0000 },
467b7134422SSumit Gupta { 0x0, 0x6, 0x25, 0x0, 0x21850000, 61, 0x21850000 },
468b7134422SSumit Gupta { 0x0, 0x6, 0x26, 0x0, 0x21860000, 62, 0x21860000 },
469b7134422SSumit Gupta { 0x0, 0x6, 0x27, 0x0, 0x21890000, 63, 0x21890000 },
470b7134422SSumit Gupta { 0x0, 0x6, 0x28, 0x0, 0x21970000, 64, 0x21970000 },
471b7134422SSumit Gupta { 0x0, 0x6, 0x29, 0x0, 0x21990000, 65, 0x21990000 },
472b7134422SSumit Gupta { 0x0, 0x6, 0x2a, 0x0, 0x21a00000, 66, 0x21a00000 },
473b7134422SSumit Gupta { 0x0, 0x6, 0x2b, 0x0, 0x21a90000, 68, 0x21a90000 },
474b7134422SSumit Gupta { 0x0, 0x6, 0x2c, 0x0, 0x21ac0000, 70, 0x21ac0000 },
475b7134422SSumit Gupta { 0x0, 0x6, 0x2d, 0x0, 0x01f80000, 3, 0x01f80000 },
476b7134422SSumit Gupta { 0x0, 0x6, 0x2e, 0x0, 0x024e0000, 14, 0x024e0000 },
477b7134422SSumit Gupta { 0x0, 0x6, 0x2f, 0x0, 0x030c0000, 21, 0x030c0000 },
478b7134422SSumit Gupta { 0x0, 0x6, 0x30, 0x0, 0x03820000, 24, 0x03820000 },
479b7134422SSumit Gupta { 0x0, 0x6, 0x31, 0x0, 0x03aa0000, 27, 0x03aa0000 },
480b7134422SSumit Gupta { 0x0, 0x6, 0x32, 0x0, 0x03c80000, 29, 0x03c80000 },
481b7134422SSumit Gupta { 0x0, 0x6, 0x33, 0x0, 0x130e0000, 34, 0x130e0000 },
482b7134422SSumit Gupta { 0x0, 0x6, 0x34, 0x0, 0x20020000, 37, 0x20020000 },
483b7134422SSumit Gupta { 0x0, 0x6, 0x35, 0x0, 0x20060000, 39, 0x20060000 },
484b7134422SSumit Gupta { 0x0, 0x6, 0x36, 0x0, 0x20200000, 41, 0x20200000 },
485b7134422SSumit Gupta { 0x0, 0x6, 0x37, 0x0, 0x206a0000, 51, 0x206a0000 },
486b7134422SSumit Gupta { 0x0, 0x6, 0x38, 0x0, 0x20740000, 53, 0x20740000 },
487b7134422SSumit Gupta { 0x0, 0x6, 0x39, 0x0, 0x20fe0000, 58, 0x20fe0000 },
488b7134422SSumit Gupta { 0x0, 0x6, 0x3a, 0x0, 0x21a20000, 67, 0x21a20000 },
489b7134422SSumit Gupta { 0x0, 0x6, 0x3b, 0x0, 0x21aa0000, 69, 0x21aa0000 },
490b7134422SSumit Gupta { 0x0, 0x6, 0x3c, 0x0, 0x02b80000, 17, 0x02b80000 },
491b7134422SSumit Gupta { 0x0, 0x6, 0x3d, 0x0, 0x03080000, 20, 0x03080000 },
492b7134422SSumit Gupta { 0x0, 0x6, 0x3e, 0x0, 0x13100000, 35, 0x13100000 },
493b7134422SSumit Gupta { 0x0, 0x6, 0x3f, 0x0, 0x01f00000, 2, 0x01f00000 },
494b7134422SSumit Gupta { 0x0, 0x6, 0x40, 0x0, 0x03000000, 19, 0x03000000 },
495b7134422SSumit Gupta { 0x0, 0x6, 0x41, 0x0, 0x03c00000, 28, 0x03c00000 },
496b7134422SSumit Gupta { 0x0, 0x6, 0x42, 0x0, 0x03d00000, 30, 0x03d00000 },
497b7134422SSumit Gupta { 0x0, 0x6, 0x43, 0x0, 0x01700000, 1, 0x01700000 },
498b7134422SSumit Gupta { 0x0, 0x6, 0x44, 0x0, 0x02c00000, 18, 0x02c00000 },
499b7134422SSumit Gupta { 0x0, 0x6, 0x45, 0x0, 0x02600000, 15, 0x02600000 },
500b7134422SSumit Gupta { 0x0, 0x6, 0x46, 0x0, 0x06000000, 32, 0x06000000 },
501b7134422SSumit Gupta { 0x0, 0x6, 0x47, 0x0, 0x24000000, 71, 0x24000000 },
502b7134422SSumit Gupta { 0x0, 0x7, 0x00, 0x0, 0x12000000, 0, 0x12000000 },
503b7134422SSumit Gupta { 0x0, 0x8, 0x00, 0x0, 0x11000000, 0, 0x11000000 },
504b7134422SSumit Gupta { 0x0, 0x9, 0x00, 0x0, 0x10000000, 0, 0x10000000 },
505b7134422SSumit Gupta { 0x0, 0xa, 0x00, 0x0, 0x22000000, 0, 0x22000000 }
506b7134422SSumit Gupta };
507b7134422SSumit Gupta
508b7134422SSumit Gupta /*
509b7134422SSumit Gupta * BPMP NOC aperture lookup table as per file "BPMP_NOC_Structure.info".
510b7134422SSumit Gupta */
511b7134422SSumit Gupta static const char * const tegra194_bpmpnoc_routeid_initflow[] = {
512b7134422SSumit Gupta [0x0] = "cbb_i/I/0",
513b7134422SSumit Gupta [0x1] = "cpu_m_i/I/0",
514b7134422SSumit Gupta [0x2] = "cpu_p_i/I/0",
515b7134422SSumit Gupta [0x3] = "cvc_i/I/0",
516b7134422SSumit Gupta [0x4] = "dma_m_i/I/0",
517b7134422SSumit Gupta [0x5] = "dma_p_i/I/0",
518b7134422SSumit Gupta [0x6] = "RESERVED",
519b7134422SSumit Gupta [0x7] = "RESERVED"
520b7134422SSumit Gupta };
521b7134422SSumit Gupta
522b7134422SSumit Gupta static const char * const tegra194_bpmpnoc_routeid_targflow[] = {
523b7134422SSumit Gupta [0x00] = "multiport0_t/T/actmon",
524b7134422SSumit Gupta [0x01] = "multiport0_t/T/ast_0",
525b7134422SSumit Gupta [0x02] = "multiport0_t/T/ast_1",
526b7134422SSumit Gupta [0x03] = "multiport0_t/T/atcm_cfg",
527b7134422SSumit Gupta [0x04] = "multiport0_t/T/car",
528b7134422SSumit Gupta [0x05] = "multiport0_t/T/central_pwr_mgr",
529b7134422SSumit Gupta [0x06] = "multiport0_t/T/central_vtg_ctlr",
530b7134422SSumit Gupta [0x07] = "multiport0_t/T/cfg",
531b7134422SSumit Gupta [0x08] = "multiport0_t/T/dma",
532b7134422SSumit Gupta [0x09] = "multiport0_t/T/err_collator",
533b7134422SSumit Gupta [0x0a] = "multiport0_t/T/err_collator_car",
534b7134422SSumit Gupta [0x0b] = "multiport0_t/T/fpga_misc",
535b7134422SSumit Gupta [0x0c] = "multiport0_t/T/fpga_uart",
536b7134422SSumit Gupta [0x0d] = "multiport0_t/T/gte",
537b7134422SSumit Gupta [0x0e] = "multiport0_t/T/hsp",
538b7134422SSumit Gupta [0x0f] = "multiport0_t/T/misc",
539b7134422SSumit Gupta [0x10] = "multiport0_t/T/pm",
540b7134422SSumit Gupta [0x11] = "multiport0_t/T/simon0",
541b7134422SSumit Gupta [0x12] = "multiport0_t/T/simon1",
542b7134422SSumit Gupta [0x13] = "multiport0_t/T/simon2",
543b7134422SSumit Gupta [0x14] = "multiport0_t/T/simon3",
544b7134422SSumit Gupta [0x15] = "multiport0_t/T/simon4",
545b7134422SSumit Gupta [0x16] = "multiport0_t/T/soc_therm",
546b7134422SSumit Gupta [0x17] = "multiport0_t/T/tke",
547b7134422SSumit Gupta [0x18] = "multiport0_t/T/vic_0",
548b7134422SSumit Gupta [0x19] = "multiport0_t/T/vic_1",
549b7134422SSumit Gupta [0x1a] = "ast0_t/T/0",
550b7134422SSumit Gupta [0x1b] = "ast1_t/T/0",
551b7134422SSumit Gupta [0x1c] = "bpmp_noc_firewall/T/0",
552b7134422SSumit Gupta [0x1d] = "cbb_t/T/0",
553b7134422SSumit Gupta [0x1e] = "cpu_t/T/0",
554b7134422SSumit Gupta [0x1f] = "svc_t/T/0"
555b7134422SSumit Gupta };
556b7134422SSumit Gupta
557b7134422SSumit Gupta /*
558b7134422SSumit Gupta * Fields of BPMP NOC lookup table:
559b7134422SSumit Gupta * Init flow, Targ flow, Targ subrange, Init mapping, Init localAddress,
560b7134422SSumit Gupta * Targ mapping, Targ localAddress
561b7134422SSumit Gupta * ----------------------------------------------------------------------------
562b7134422SSumit Gupta */
563b7134422SSumit Gupta static const struct tegra194_cbb_aperture tegra194_bpmpnoc_apert_lookup[] = {
564b7134422SSumit Gupta { 0x0, 0x1c, 0x0, 0x0, 0x0d640000, 0, 0x00000000 },
565b7134422SSumit Gupta { 0x0, 0x1e, 0x0, 0x0, 0x0d400000, 0, 0x0d400000 },
566b7134422SSumit Gupta { 0x0, 0x00, 0x0, 0x0, 0x0d230000, 0, 0x00000000 },
567b7134422SSumit Gupta { 0x0, 0x01, 0x0, 0x0, 0x0d040000, 0, 0x00000000 },
568b7134422SSumit Gupta { 0x0, 0x02, 0x0, 0x0, 0x0d050000, 0, 0x00000000 },
569b7134422SSumit Gupta { 0x0, 0x03, 0x0, 0x0, 0x0d000000, 0, 0x00000000 },
570b7134422SSumit Gupta { 0x0, 0x04, 0x0, 0x0, 0x20ae0000, 3, 0x000e0000 },
571b7134422SSumit Gupta { 0x0, 0x04, 0x1, 0x0, 0x20ac0000, 2, 0x000c0000 },
572b7134422SSumit Gupta { 0x0, 0x04, 0x2, 0x0, 0x20a80000, 1, 0x00080000 },
573b7134422SSumit Gupta { 0x0, 0x04, 0x3, 0x0, 0x20a00000, 0, 0x00000000 },
574b7134422SSumit Gupta { 0x0, 0x05, 0x0, 0x0, 0x0d2a0000, 0, 0x00000000 },
575b7134422SSumit Gupta { 0x0, 0x06, 0x0, 0x0, 0x0d290000, 0, 0x00000000 },
576b7134422SSumit Gupta { 0x0, 0x07, 0x0, 0x0, 0x0d2c0000, 0, 0x00000000 },
577b7134422SSumit Gupta { 0x0, 0x08, 0x0, 0x0, 0x0d0e0000, 4, 0x00080000 },
578b7134422SSumit Gupta { 0x0, 0x08, 0x1, 0x0, 0x0d060000, 0, 0x00000000 },
579b7134422SSumit Gupta { 0x0, 0x08, 0x2, 0x0, 0x0d080000, 1, 0x00020000 },
580b7134422SSumit Gupta { 0x0, 0x08, 0x3, 0x0, 0x0d0a0000, 2, 0x00040000 },
581b7134422SSumit Gupta { 0x0, 0x08, 0x4, 0x0, 0x0d0c0000, 3, 0x00060000 },
582b7134422SSumit Gupta { 0x0, 0x09, 0x0, 0x0, 0x0d650000, 0, 0x00000000 },
583b7134422SSumit Gupta { 0x0, 0x0a, 0x0, 0x0, 0x20af0000, 0, 0x00000000 },
584b7134422SSumit Gupta { 0x0, 0x0b, 0x0, 0x0, 0x0d3e0000, 0, 0x00000000 },
585b7134422SSumit Gupta { 0x0, 0x0c, 0x0, 0x0, 0x0d3d0000, 0, 0x00000000 },
586b7134422SSumit Gupta { 0x0, 0x0d, 0x0, 0x0, 0x0d1e0000, 0, 0x00000000 },
587b7134422SSumit Gupta { 0x0, 0x0e, 0x0, 0x0, 0x0d150000, 0, 0x00000000 },
588b7134422SSumit Gupta { 0x0, 0x0e, 0x1, 0x0, 0x0d160000, 1, 0x00010000 },
589b7134422SSumit Gupta { 0x0, 0x0e, 0x2, 0x0, 0x0d170000, 2, 0x00020000 },
590b7134422SSumit Gupta { 0x0, 0x0e, 0x3, 0x0, 0x0d180000, 3, 0x00030000 },
591b7134422SSumit Gupta { 0x0, 0x0e, 0x4, 0x0, 0x0d190000, 4, 0x00040000 },
592b7134422SSumit Gupta { 0x0, 0x0e, 0x5, 0x0, 0x0d1a0000, 5, 0x00050000 },
593b7134422SSumit Gupta { 0x0, 0x0e, 0x6, 0x0, 0x0d1b0000, 6, 0x00060000 },
594b7134422SSumit Gupta { 0x0, 0x0e, 0x7, 0x0, 0x0d1c0000, 7, 0x00070000 },
595b7134422SSumit Gupta { 0x0, 0x0e, 0x8, 0x0, 0x0d1d0000, 8, 0x00080000 },
596b7134422SSumit Gupta { 0x0, 0x0f, 0x0, 0x0, 0x0d660000, 0, 0x00000000 },
597b7134422SSumit Gupta { 0x0, 0x10, 0x0, 0x0, 0x0d1f0000, 0, 0x00000000 },
598b7134422SSumit Gupta { 0x0, 0x10, 0x1, 0x0, 0x0d200000, 1, 0x00010000 },
599b7134422SSumit Gupta { 0x0, 0x10, 0x2, 0x0, 0x0d210000, 2, 0x00020000 },
600b7134422SSumit Gupta { 0x0, 0x10, 0x3, 0x0, 0x0d220000, 3, 0x00030000 },
601b7134422SSumit Gupta { 0x0, 0x11, 0x0, 0x0, 0x0d240000, 0, 0x00000000 },
602b7134422SSumit Gupta { 0x0, 0x12, 0x0, 0x0, 0x0d250000, 0, 0x00000000 },
603b7134422SSumit Gupta { 0x0, 0x13, 0x0, 0x0, 0x0d260000, 0, 0x00000000 },
604b7134422SSumit Gupta { 0x0, 0x14, 0x0, 0x0, 0x0d270000, 0, 0x00000000 },
605b7134422SSumit Gupta { 0x0, 0x15, 0x0, 0x0, 0x0d2b0000, 0, 0x00000000 },
606b7134422SSumit Gupta { 0x0, 0x16, 0x0, 0x0, 0x0d280000, 0, 0x00000000 },
607b7134422SSumit Gupta { 0x0, 0x17, 0x0, 0x0, 0x0d0f0000, 0, 0x00000000 },
608b7134422SSumit Gupta { 0x0, 0x17, 0x1, 0x0, 0x0d100000, 1, 0x00010000 },
609b7134422SSumit Gupta { 0x0, 0x17, 0x2, 0x0, 0x0d110000, 2, 0x00020000 },
610b7134422SSumit Gupta { 0x0, 0x17, 0x3, 0x0, 0x0d120000, 3, 0x00030000 },
611b7134422SSumit Gupta { 0x0, 0x17, 0x4, 0x0, 0x0d130000, 4, 0x00040000 },
612b7134422SSumit Gupta { 0x0, 0x17, 0x5, 0x0, 0x0d140000, 5, 0x00050000 },
613b7134422SSumit Gupta { 0x0, 0x18, 0x0, 0x0, 0x0d020000, 0, 0x00000000 },
614b7134422SSumit Gupta { 0x0, 0x19, 0x0, 0x0, 0x0d030000, 0, 0x00000000 },
615b7134422SSumit Gupta { 0x0, 0x1f, 0x0, 0x0, 0x0d600000, 0, 0x00000000 },
616b7134422SSumit Gupta { 0x0, 0x1f, 0x1, 0x0, 0x00000000, 0, 0x00000000 },
617b7134422SSumit Gupta { 0x1, 0x1a, 0x0, 0x0, 0x40000000, 0, 0x40000000 },
618b7134422SSumit Gupta { 0x1, 0x1a, 0x1, 0x1, 0x80000000, 1, 0x80000000 },
619b7134422SSumit Gupta { 0x1, 0x1a, 0x2, 0x0, 0x00000000, 0, 0x00000000 },
620b7134422SSumit Gupta { 0x2, 0x1c, 0x0, 0x0, 0x0d640000, 0, 0x00000000 },
621b7134422SSumit Gupta { 0x2, 0x1d, 0x0, 0x0, 0x20b00000, 8, 0x20b00000 },
622b7134422SSumit Gupta { 0x2, 0x1d, 0x1, 0x0, 0x20800000, 7, 0x20800000 },
623b7134422SSumit Gupta { 0x2, 0x1d, 0x2, 0x0, 0x20c00000, 9, 0x20c00000 },
624b7134422SSumit Gupta { 0x2, 0x1d, 0x3, 0x0, 0x0d800000, 3, 0x0d800000 },
625b7134422SSumit Gupta { 0x2, 0x1d, 0x4, 0x0, 0x20000000, 6, 0x20000000 },
626b7134422SSumit Gupta { 0x2, 0x1d, 0x5, 0x0, 0x0c000000, 2, 0x0c000000 },
627b7134422SSumit Gupta { 0x2, 0x1d, 0x6, 0x0, 0x21000000, 10, 0x21000000 },
628b7134422SSumit Gupta { 0x2, 0x1d, 0x7, 0x0, 0x0e000000, 4, 0x0e000000 },
629b7134422SSumit Gupta { 0x2, 0x1d, 0x8, 0x0, 0x22000000, 11, 0x22000000 },
630b7134422SSumit Gupta { 0x2, 0x1d, 0x9, 0x0, 0x08000000, 1, 0x08000000 },
631b7134422SSumit Gupta { 0x2, 0x1d, 0xa, 0x0, 0x24000000, 12, 0x24000000 },
632b7134422SSumit Gupta { 0x2, 0x1d, 0xb, 0x0, 0x00000000, 0, 0x00000000 },
633b7134422SSumit Gupta { 0x2, 0x1d, 0xc, 0x0, 0x28000000, 13, 0x28000000 },
634b7134422SSumit Gupta { 0x2, 0x1d, 0xd, 0x0, 0x10000000, 5, 0x10000000 },
635b7134422SSumit Gupta { 0x2, 0x1d, 0xe, 0x0, 0x30000000, 14, 0x30000000 },
636b7134422SSumit Gupta { 0x2, 0x00, 0x0, 0x0, 0x0d230000, 0, 0x00000000 },
637b7134422SSumit Gupta { 0x2, 0x01, 0x0, 0x0, 0x0d040000, 0, 0x00000000 },
638b7134422SSumit Gupta { 0x2, 0x02, 0x0, 0x0, 0x0d050000, 0, 0x00000000 },
639b7134422SSumit Gupta { 0x2, 0x03, 0x0, 0x0, 0x0d000000, 0, 0x00000000 },
640b7134422SSumit Gupta { 0x2, 0x04, 0x0, 0x0, 0x20ae0000, 3, 0x000e0000 },
641b7134422SSumit Gupta { 0x2, 0x04, 0x1, 0x0, 0x20ac0000, 2, 0x000c0000 },
642b7134422SSumit Gupta { 0x2, 0x04, 0x2, 0x0, 0x20a80000, 1, 0x00080000 },
643b7134422SSumit Gupta { 0x2, 0x04, 0x3, 0x0, 0x20a00000, 0, 0x00000000 },
644b7134422SSumit Gupta { 0x2, 0x05, 0x0, 0x0, 0x0d2a0000, 0, 0x00000000 },
645b7134422SSumit Gupta { 0x2, 0x06, 0x0, 0x0, 0x0d290000, 0, 0x00000000 },
646b7134422SSumit Gupta { 0x2, 0x07, 0x0, 0x0, 0x0d2c0000, 0, 0x00000000 },
647b7134422SSumit Gupta { 0x2, 0x08, 0x0, 0x0, 0x0d0e0000, 4, 0x00080000 },
648b7134422SSumit Gupta { 0x2, 0x08, 0x1, 0x0, 0x0d060000, 0, 0x00000000 },
649b7134422SSumit Gupta { 0x2, 0x08, 0x2, 0x0, 0x0d080000, 1, 0x00020000 },
650b7134422SSumit Gupta { 0x2, 0x08, 0x3, 0x0, 0x0d0a0000, 2, 0x00040000 },
651b7134422SSumit Gupta { 0x2, 0x08, 0x4, 0x0, 0x0d0c0000, 3, 0x00060000 },
652b7134422SSumit Gupta { 0x2, 0x09, 0x0, 0x0, 0x0d650000, 0, 0x00000000 },
653b7134422SSumit Gupta { 0x2, 0x0a, 0x0, 0x0, 0x20af0000, 0, 0x00000000 },
654b7134422SSumit Gupta { 0x2, 0x0b, 0x0, 0x0, 0x0d3e0000, 0, 0x00000000 },
655b7134422SSumit Gupta { 0x2, 0x0c, 0x0, 0x0, 0x0d3d0000, 0, 0x00000000 },
656b7134422SSumit Gupta { 0x2, 0x0d, 0x0, 0x0, 0x0d1e0000, 0, 0x00000000 },
657b7134422SSumit Gupta { 0x2, 0x0e, 0x0, 0x0, 0x0d150000, 0, 0x00000000 },
658b7134422SSumit Gupta { 0x2, 0x0e, 0x1, 0x0, 0x0d160000, 1, 0x00010000 },
659b7134422SSumit Gupta { 0x2, 0x0e, 0x2, 0x0, 0x0d170000, 2, 0x00020000 },
660b7134422SSumit Gupta { 0x2, 0x0e, 0x3, 0x0, 0x0d180000, 3, 0x00030000 },
661b7134422SSumit Gupta { 0x2, 0x0e, 0x4, 0x0, 0x0d190000, 4, 0x00040000 },
662b7134422SSumit Gupta { 0x2, 0x0e, 0x5, 0x0, 0x0d1a0000, 5, 0x00050000 },
663b7134422SSumit Gupta { 0x2, 0x0e, 0x6, 0x0, 0x0d1b0000, 6, 0x00060000 },
664b7134422SSumit Gupta { 0x2, 0x0e, 0x7, 0x0, 0x0d1c0000, 7, 0x00070000 },
665b7134422SSumit Gupta { 0x2, 0x0e, 0x8, 0x0, 0x0d1d0000, 8, 0x00080000 },
666b7134422SSumit Gupta { 0x2, 0x0f, 0x0, 0x0, 0x0d660000, 0, 0x00000000 },
667b7134422SSumit Gupta { 0x2, 0x10, 0x0, 0x0, 0x0d1f0000, 0, 0x00000000 },
668b7134422SSumit Gupta { 0x2, 0x10, 0x1, 0x0, 0x0d200000, 1, 0x00010000 },
669b7134422SSumit Gupta { 0x2, 0x10, 0x2, 0x0, 0x0d210000, 2, 0x00020000 },
670b7134422SSumit Gupta { 0x2, 0x10, 0x3, 0x0, 0x0d220000, 3, 0x00030000 },
671b7134422SSumit Gupta { 0x2, 0x11, 0x0, 0x0, 0x0d240000, 0, 0x00000000 },
672b7134422SSumit Gupta { 0x2, 0x12, 0x0, 0x0, 0x0d250000, 0, 0x00000000 },
673b7134422SSumit Gupta { 0x2, 0x13, 0x0, 0x0, 0x0d260000, 0, 0x00000000 },
674b7134422SSumit Gupta { 0x2, 0x14, 0x0, 0x0, 0x0d270000, 0, 0x00000000 },
675b7134422SSumit Gupta { 0x2, 0x15, 0x0, 0x0, 0x0d2b0000, 0, 0x00000000 },
676b7134422SSumit Gupta { 0x2, 0x16, 0x0, 0x0, 0x0d280000, 0, 0x00000000 },
677b7134422SSumit Gupta { 0x2, 0x17, 0x0, 0x0, 0x0d0f0000, 0, 0x00000000 },
678b7134422SSumit Gupta { 0x2, 0x17, 0x1, 0x0, 0x0d100000, 1, 0x00010000 },
679b7134422SSumit Gupta { 0x2, 0x17, 0x2, 0x0, 0x0d110000, 2, 0x00020000 },
680b7134422SSumit Gupta { 0x2, 0x17, 0x3, 0x0, 0x0d120000, 3, 0x00030000 },
681b7134422SSumit Gupta { 0x2, 0x17, 0x4, 0x0, 0x0d130000, 4, 0x00040000 },
682b7134422SSumit Gupta { 0x2, 0x17, 0x5, 0x0, 0x0d140000, 5, 0x00050000 },
683b7134422SSumit Gupta { 0x2, 0x18, 0x0, 0x0, 0x0d020000, 0, 0x00000000 },
684b7134422SSumit Gupta { 0x2, 0x19, 0x0, 0x0, 0x0d030000, 0, 0x00000000 },
685b7134422SSumit Gupta { 0x2, 0x1f, 0x0, 0x0, 0x0d600000, 0, 0x00000000 },
686b7134422SSumit Gupta { 0x2, 0x1f, 0x1, 0x0, 0x00000000, 0, 0x00000000 },
687b7134422SSumit Gupta { 0x3, 0x1b, 0x0, 0x0, 0x40000000, 0, 0x40000000 },
688b7134422SSumit Gupta { 0x3, 0x1b, 0x1, 0x1, 0x80000000, 1, 0x80000000 },
689b7134422SSumit Gupta { 0x3, 0x1c, 0x0, 0x2, 0x0d640000, 0, 0x00000000 },
690b7134422SSumit Gupta { 0x3, 0x1d, 0x0, 0x2, 0x20b00000, 8, 0x20b00000 },
691b7134422SSumit Gupta { 0x3, 0x1d, 0x1, 0x2, 0x20800000, 7, 0x20800000 },
692b7134422SSumit Gupta { 0x3, 0x1d, 0x2, 0x2, 0x20c00000, 9, 0x20c00000 },
693b7134422SSumit Gupta { 0x3, 0x1d, 0x3, 0x2, 0x0d800000, 3, 0x0d800000 },
694b7134422SSumit Gupta { 0x3, 0x1d, 0x4, 0x2, 0x20000000, 6, 0x20000000 },
695b7134422SSumit Gupta { 0x3, 0x1d, 0x5, 0x2, 0x0c000000, 2, 0x0c000000 },
696b7134422SSumit Gupta { 0x3, 0x1d, 0x6, 0x2, 0x21000000, 10, 0x21000000 },
697b7134422SSumit Gupta { 0x3, 0x1d, 0x7, 0x2, 0x0e000000, 4, 0x0e000000 },
698b7134422SSumit Gupta { 0x3, 0x1d, 0x8, 0x2, 0x22000000, 11, 0x22000000 },
699b7134422SSumit Gupta { 0x3, 0x1d, 0x9, 0x2, 0x08000000, 1, 0x08000000 },
700b7134422SSumit Gupta { 0x3, 0x1d, 0xa, 0x2, 0x24000000, 12, 0x24000000 },
701b7134422SSumit Gupta { 0x3, 0x1d, 0xb, 0x2, 0x00000000, 0, 0x00000000 },
702b7134422SSumit Gupta { 0x3, 0x1d, 0xc, 0x2, 0x28000000, 13, 0x28000000 },
703b7134422SSumit Gupta { 0x3, 0x1d, 0xd, 0x2, 0x10000000, 5, 0x10000000 },
704b7134422SSumit Gupta { 0x3, 0x1d, 0xe, 0x2, 0x30000000, 14, 0x30000000 },
705b7134422SSumit Gupta { 0x3, 0x1e, 0x0, 0x2, 0x0d400000, 0, 0x0d400000 },
706b7134422SSumit Gupta { 0x3, 0x00, 0x0, 0x2, 0x0d230000, 0, 0x00000000 },
707b7134422SSumit Gupta { 0x3, 0x01, 0x0, 0x2, 0x0d040000, 0, 0x00000000 },
708b7134422SSumit Gupta { 0x3, 0x02, 0x0, 0x2, 0x0d050000, 0, 0x00000000 },
709b7134422SSumit Gupta { 0x3, 0x03, 0x0, 0x2, 0x0d000000, 0, 0x00000000 },
710b7134422SSumit Gupta { 0x3, 0x04, 0x0, 0x2, 0x20ae0000, 3, 0x000e0000 },
711b7134422SSumit Gupta { 0x3, 0x04, 0x1, 0x2, 0x20ac0000, 2, 0x000c0000 },
712b7134422SSumit Gupta { 0x3, 0x04, 0x2, 0x2, 0x20a80000, 1, 0x00080000 },
713b7134422SSumit Gupta { 0x3, 0x04, 0x3, 0x2, 0x20a00000, 0, 0x00000000 },
714b7134422SSumit Gupta { 0x3, 0x05, 0x0, 0x2, 0x0d2a0000, 0, 0x00000000 },
715b7134422SSumit Gupta { 0x3, 0x06, 0x0, 0x2, 0x0d290000, 0, 0x00000000 },
716b7134422SSumit Gupta { 0x3, 0x07, 0x0, 0x2, 0x0d2c0000, 0, 0x00000000 },
717b7134422SSumit Gupta { 0x3, 0x08, 0x0, 0x2, 0x0d0e0000, 4, 0x00080000 },
718b7134422SSumit Gupta { 0x3, 0x08, 0x1, 0x2, 0x0d060000, 0, 0x00000000 },
719b7134422SSumit Gupta { 0x3, 0x08, 0x2, 0x2, 0x0d080000, 1, 0x00020000 },
720b7134422SSumit Gupta { 0x3, 0x08, 0x3, 0x2, 0x0d0a0000, 2, 0x00040000 },
721b7134422SSumit Gupta { 0x3, 0x08, 0x4, 0x2, 0x0d0c0000, 3, 0x00060000 },
722b7134422SSumit Gupta { 0x3, 0x09, 0x0, 0x2, 0x0d650000, 0, 0x00000000 },
723b7134422SSumit Gupta { 0x3, 0x0a, 0x0, 0x2, 0x20af0000, 0, 0x00000000 },
724b7134422SSumit Gupta { 0x3, 0x0b, 0x0, 0x2, 0x0d3e0000, 0, 0x00000000 },
725b7134422SSumit Gupta { 0x3, 0x0c, 0x0, 0x2, 0x0d3d0000, 0, 0x00000000 },
726b7134422SSumit Gupta { 0x3, 0x0d, 0x0, 0x2, 0x0d1e0000, 0, 0x00000000 },
727b7134422SSumit Gupta { 0x3, 0x0e, 0x0, 0x2, 0x0d150000, 0, 0x00000000 },
728b7134422SSumit Gupta { 0x3, 0x0e, 0x1, 0x2, 0x0d160000, 1, 0x00010000 },
729b7134422SSumit Gupta { 0x3, 0x0e, 0x2, 0x2, 0x0d170000, 2, 0x00020000 },
730b7134422SSumit Gupta { 0x3, 0x0e, 0x3, 0x2, 0x0d180000, 3, 0x00030000 },
731b7134422SSumit Gupta { 0x3, 0x0e, 0x4, 0x2, 0x0d190000, 4, 0x00040000 },
732b7134422SSumit Gupta { 0x3, 0x0e, 0x5, 0x2, 0x0d1a0000, 5, 0x00050000 },
733b7134422SSumit Gupta { 0x3, 0x0e, 0x6, 0x2, 0x0d1b0000, 6, 0x00060000 },
734b7134422SSumit Gupta { 0x3, 0x0e, 0x7, 0x2, 0x0d1c0000, 7, 0x00070000 },
735b7134422SSumit Gupta { 0x3, 0x0e, 0x8, 0x2, 0x0d1d0000, 8, 0x00080000 },
736b7134422SSumit Gupta { 0x3, 0x0f, 0x0, 0x2, 0x0d660000, 0, 0x00000000 },
737b7134422SSumit Gupta { 0x3, 0x10, 0x0, 0x2, 0x0d1f0000, 0, 0x00000000 },
738b7134422SSumit Gupta { 0x3, 0x10, 0x1, 0x2, 0x0d200000, 1, 0x00010000 },
739b7134422SSumit Gupta { 0x3, 0x10, 0x2, 0x2, 0x0d210000, 2, 0x00020000 },
740b7134422SSumit Gupta { 0x3, 0x10, 0x3, 0x2, 0x0d220000, 3, 0x00030000 },
741b7134422SSumit Gupta { 0x3, 0x11, 0x0, 0x2, 0x0d240000, 0, 0x00000000 },
742b7134422SSumit Gupta { 0x3, 0x12, 0x0, 0x2, 0x0d250000, 0, 0x00000000 },
743b7134422SSumit Gupta { 0x3, 0x13, 0x0, 0x2, 0x0d260000, 0, 0x00000000 },
744b7134422SSumit Gupta { 0x3, 0x14, 0x0, 0x2, 0x0d270000, 0, 0x00000000 },
745b7134422SSumit Gupta { 0x3, 0x15, 0x0, 0x2, 0x0d2b0000, 0, 0x00000000 },
746b7134422SSumit Gupta { 0x3, 0x16, 0x0, 0x2, 0x0d280000, 0, 0x00000000 },
747b7134422SSumit Gupta { 0x3, 0x17, 0x0, 0x2, 0x0d0f0000, 0, 0x00000000 },
748b7134422SSumit Gupta { 0x3, 0x17, 0x1, 0x2, 0x0d100000, 1, 0x00010000 },
749b7134422SSumit Gupta { 0x3, 0x17, 0x2, 0x2, 0x0d110000, 2, 0x00020000 },
750b7134422SSumit Gupta { 0x3, 0x17, 0x3, 0x2, 0x0d120000, 3, 0x00030000 },
751b7134422SSumit Gupta { 0x3, 0x17, 0x4, 0x2, 0x0d130000, 4, 0x00040000 },
752b7134422SSumit Gupta { 0x3, 0x17, 0x5, 0x2, 0x0d140000, 5, 0x00050000 },
753b7134422SSumit Gupta { 0x3, 0x18, 0x0, 0x2, 0x0d020000, 0, 0x00000000 },
754b7134422SSumit Gupta { 0x3, 0x19, 0x0, 0x2, 0x0d030000, 0, 0x00000000 },
755b7134422SSumit Gupta { 0x3, 0x1f, 0x0, 0x2, 0x0d600000, 0, 0x00000000 },
756b7134422SSumit Gupta { 0x3, 0x1f, 0x1, 0x0, 0x00000000, 0, 0x00000000 },
757b7134422SSumit Gupta { 0x4, 0x1b, 0x0, 0x0, 0x40000000, 0, 0x40000000 },
758b7134422SSumit Gupta { 0x4, 0x1b, 0x1, 0x1, 0x80000000, 1, 0x80000000 },
759b7134422SSumit Gupta { 0x4, 0x1e, 0x0, 0x2, 0x0d400000, 0, 0x0d400000 },
760b7134422SSumit Gupta { 0x4, 0x1e, 0x1, 0x0, 0x00000000, 0, 0x00000000 },
761b7134422SSumit Gupta { 0x5, 0x1c, 0x0, 0x0, 0x0d640000, 0, 0x00000000 },
762b7134422SSumit Gupta { 0x5, 0x1d, 0x0, 0x0, 0x20b00000, 8, 0x20b00000 },
763b7134422SSumit Gupta { 0x5, 0x1d, 0x1, 0x0, 0x20800000, 7, 0x20800000 },
764b7134422SSumit Gupta { 0x5, 0x1d, 0x2, 0x0, 0x20c00000, 9, 0x20c00000 },
765b7134422SSumit Gupta { 0x5, 0x1d, 0x3, 0x0, 0x0d800000, 3, 0x0d800000 },
766b7134422SSumit Gupta { 0x5, 0x1d, 0x4, 0x0, 0x20000000, 6, 0x20000000 },
767b7134422SSumit Gupta { 0x5, 0x1d, 0x5, 0x0, 0x0c000000, 2, 0x0c000000 },
768b7134422SSumit Gupta { 0x5, 0x1d, 0x6, 0x0, 0x21000000, 10, 0x21000000 },
769b7134422SSumit Gupta { 0x5, 0x1d, 0x7, 0x0, 0x0e000000, 4, 0x0e000000 },
770b7134422SSumit Gupta { 0x5, 0x1d, 0x8, 0x0, 0x22000000, 11, 0x22000000 },
771b7134422SSumit Gupta { 0x5, 0x1d, 0x9, 0x0, 0x08000000, 1, 0x08000000 },
772b7134422SSumit Gupta { 0x5, 0x1d, 0xa, 0x0, 0x24000000, 12, 0x24000000 },
773b7134422SSumit Gupta { 0x5, 0x1d, 0xb, 0x0, 0x00000000, 0, 0x00000000 },
774b7134422SSumit Gupta { 0x5, 0x1d, 0xc, 0x0, 0x28000000, 13, 0x28000000 },
775b7134422SSumit Gupta { 0x5, 0x1d, 0xd, 0x0, 0x10000000, 5, 0x10000000 },
776b7134422SSumit Gupta { 0x5, 0x1d, 0xe, 0x0, 0x30000000, 14, 0x30000000 },
777b7134422SSumit Gupta { 0x5, 0x00, 0x0, 0x0, 0x0d230000, 0, 0x00000000 },
778b7134422SSumit Gupta { 0x5, 0x01, 0x0, 0x0, 0x0d040000, 0, 0x00000000 },
779b7134422SSumit Gupta { 0x5, 0x02, 0x0, 0x0, 0x0d050000, 0, 0x00000000 },
780b7134422SSumit Gupta { 0x5, 0x03, 0x0, 0x0, 0x0d000000, 0, 0x00000000 },
781b7134422SSumit Gupta { 0x5, 0x04, 0x0, 0x0, 0x20ae0000, 3, 0x000e0000 },
782b7134422SSumit Gupta { 0x5, 0x04, 0x1, 0x0, 0x20ac0000, 2, 0x000c0000 },
783b7134422SSumit Gupta { 0x5, 0x04, 0x2, 0x0, 0x20a80000, 1, 0x00080000 },
784b7134422SSumit Gupta { 0x5, 0x04, 0x3, 0x0, 0x20a00000, 0, 0x00000000 },
785b7134422SSumit Gupta { 0x5, 0x05, 0x0, 0x0, 0x0d2a0000, 0, 0x00000000 },
786b7134422SSumit Gupta { 0x5, 0x06, 0x0, 0x0, 0x0d290000, 0, 0x00000000 },
787b7134422SSumit Gupta { 0x5, 0x07, 0x0, 0x0, 0x0d2c0000, 0, 0x00000000 },
788b7134422SSumit Gupta { 0x5, 0x08, 0x0, 0x0, 0x0d0e0000, 4, 0x00080000 },
789b7134422SSumit Gupta { 0x5, 0x08, 0x1, 0x0, 0x0d060000, 0, 0x00000000 },
790b7134422SSumit Gupta { 0x5, 0x08, 0x2, 0x0, 0x0d080000, 1, 0x00020000 },
791b7134422SSumit Gupta { 0x5, 0x08, 0x3, 0x0, 0x0d0a0000, 2, 0x00040000 },
792b7134422SSumit Gupta { 0x5, 0x08, 0x4, 0x0, 0x0d0c0000, 3, 0x00060000 },
793b7134422SSumit Gupta { 0x5, 0x09, 0x0, 0x0, 0x0d650000, 0, 0x00000000 },
794b7134422SSumit Gupta { 0x5, 0x0a, 0x0, 0x0, 0x20af0000, 0, 0x00000000 },
795b7134422SSumit Gupta { 0x5, 0x0b, 0x0, 0x0, 0x0d3e0000, 0, 0x00000000 },
796b7134422SSumit Gupta { 0x5, 0x0c, 0x0, 0x0, 0x0d3d0000, 0, 0x00000000 },
797b7134422SSumit Gupta { 0x5, 0x0d, 0x0, 0x0, 0x0d1e0000, 0, 0x00000000 },
798b7134422SSumit Gupta { 0x5, 0x0e, 0x0, 0x0, 0x0d150000, 0, 0x00000000 },
799b7134422SSumit Gupta { 0x5, 0x0e, 0x1, 0x0, 0x0d160000, 1, 0x00010000 },
800b7134422SSumit Gupta { 0x5, 0x0e, 0x2, 0x0, 0x0d170000, 2, 0x00020000 },
801b7134422SSumit Gupta { 0x5, 0x0e, 0x3, 0x0, 0x0d180000, 3, 0x00030000 },
802b7134422SSumit Gupta { 0x5, 0x0e, 0x4, 0x0, 0x0d190000, 4, 0x00040000 },
803b7134422SSumit Gupta { 0x5, 0x0e, 0x5, 0x0, 0x0d1a0000, 5, 0x00050000 },
804b7134422SSumit Gupta { 0x5, 0x0e, 0x6, 0x0, 0x0d1b0000, 6, 0x00060000 },
805b7134422SSumit Gupta { 0x5, 0x0e, 0x7, 0x0, 0x0d1c0000, 7, 0x00070000 },
806b7134422SSumit Gupta { 0x5, 0x0e, 0x8, 0x0, 0x0d1d0000, 8, 0x00080000 },
807b7134422SSumit Gupta { 0x5, 0x0f, 0x0, 0x0, 0x0d660000, 0, 0x00000000 },
808b7134422SSumit Gupta { 0x5, 0x10, 0x0, 0x0, 0x0d1f0000, 0, 0x00000000 },
809b7134422SSumit Gupta { 0x5, 0x10, 0x1, 0x0, 0x0d200000, 1, 0x00010000 },
810b7134422SSumit Gupta { 0x5, 0x10, 0x2, 0x0, 0x0d210000, 2, 0x00020000 },
811b7134422SSumit Gupta { 0x5, 0x10, 0x3, 0x0, 0x0d220000, 3, 0x00030000 },
812b7134422SSumit Gupta { 0x5, 0x11, 0x0, 0x0, 0x0d240000, 0, 0x00000000 },
813b7134422SSumit Gupta { 0x5, 0x12, 0x0, 0x0, 0x0d250000, 0, 0x00000000 },
814b7134422SSumit Gupta { 0x5, 0x13, 0x0, 0x0, 0x0d260000, 0, 0x00000000 },
815b7134422SSumit Gupta { 0x5, 0x14, 0x0, 0x0, 0x0d270000, 0, 0x00000000 },
816b7134422SSumit Gupta { 0x5, 0x15, 0x0, 0x0, 0x0d2b0000, 0, 0x00000000 },
817b7134422SSumit Gupta { 0x5, 0x16, 0x0, 0x0, 0x0d280000, 0, 0x00000000 },
818b7134422SSumit Gupta { 0x5, 0x17, 0x0, 0x0, 0x0d0f0000, 0, 0x00000000 },
819b7134422SSumit Gupta { 0x5, 0x17, 0x1, 0x0, 0x0d100000, 1, 0x00010000 },
820b7134422SSumit Gupta { 0x5, 0x17, 0x2, 0x0, 0x0d110000, 2, 0x00020000 },
821b7134422SSumit Gupta { 0x5, 0x17, 0x3, 0x0, 0x0d120000, 3, 0x00030000 },
822b7134422SSumit Gupta { 0x5, 0x17, 0x4, 0x0, 0x0d130000, 4, 0x00040000 },
823b7134422SSumit Gupta { 0x5, 0x17, 0x5, 0x0, 0x0d140000, 5, 0x00050000 },
824b7134422SSumit Gupta { 0x5, 0x18, 0x0, 0x0, 0x0d020000, 0, 0x00000000 },
825b7134422SSumit Gupta { 0x5, 0x19, 0x0, 0x0, 0x0d030000, 0, 0x00000000 },
826b7134422SSumit Gupta { 0x5, 0x1f, 0x0, 0x0, 0x0d600000, 0, 0x00000000 },
827b7134422SSumit Gupta { 0x5, 0x1f, 0x1, 0x0, 0x00000000, 0, 0x00000000 }
828b7134422SSumit Gupta };
829b7134422SSumit Gupta
830b7134422SSumit Gupta /*
831b7134422SSumit Gupta * AON NOC aperture lookup table as per file "AON_NOC_Structure.info".
832b7134422SSumit Gupta */
833b7134422SSumit Gupta static const char * const tegra194_aonnoc_routeid_initflow[] = {
834b7134422SSumit Gupta [0x0] = "cbb_i/I/0",
835b7134422SSumit Gupta [0x1] = "cpu_p_i/I/0",
836b7134422SSumit Gupta [0x2] = "dma_m_i/I/0",
837b7134422SSumit Gupta [0x3] = "dma_p_i/I/0"
838b7134422SSumit Gupta };
839b7134422SSumit Gupta
840b7134422SSumit Gupta static const char * const tegra194_aonnoc_routeid_targflow[] = {
841b7134422SSumit Gupta [0x00] = "multiport1_t/T/aon_misc",
842b7134422SSumit Gupta [0x01] = "multiport1_t/T/avic0",
843b7134422SSumit Gupta [0x02] = "multiport1_t/T/avic1",
844b7134422SSumit Gupta [0x03] = "multiport1_t/T/can1",
845b7134422SSumit Gupta [0x04] = "multiport1_t/T/can2",
846b7134422SSumit Gupta [0x05] = "multiport1_t/T/dma",
847b7134422SSumit Gupta [0x06] = "multiport1_t/T/dmic",
848b7134422SSumit Gupta [0x07] = "multiport1_t/T/err_collator",
849b7134422SSumit Gupta [0x08] = "multiport1_t/T/fpga_misc",
850b7134422SSumit Gupta [0x09] = "multiport1_t/T/gte",
851b7134422SSumit Gupta [0x0a] = "multiport1_t/T/hsp",
852b7134422SSumit Gupta [0x0b] = "multiport1_t/T/i2c2",
853b7134422SSumit Gupta [0x0c] = "multiport1_t/T/i2c8",
854b7134422SSumit Gupta [0x0d] = "multiport1_t/T/pwm",
855b7134422SSumit Gupta [0x0e] = "multiport1_t/T/spi2",
856b7134422SSumit Gupta [0x0f] = "multiport1_t/T/tke",
857b7134422SSumit Gupta [0x10] = "multiport1_t/T/uartg",
858b7134422SSumit Gupta [0x11] = "RESERVED",
859b7134422SSumit Gupta [0x12] = "RESERVED",
860b7134422SSumit Gupta [0x13] = "RESERVED",
861b7134422SSumit Gupta [0x14] = "RESERVED",
862b7134422SSumit Gupta [0x15] = "RESERVED",
863b7134422SSumit Gupta [0x16] = "RESERVED",
864b7134422SSumit Gupta [0x17] = "RESERVED",
865b7134422SSumit Gupta [0x18] = "RESERVED",
866b7134422SSumit Gupta [0x19] = "RESERVED",
867b7134422SSumit Gupta [0x1a] = "RESERVED",
868b7134422SSumit Gupta [0x1b] = "RESERVED",
869b7134422SSumit Gupta [0x1c] = "RESERVED",
870b7134422SSumit Gupta [0x1d] = "RESERVED",
871b7134422SSumit Gupta [0x1e] = "RESERVED",
872b7134422SSumit Gupta [0x1f] = "RESERVED",
873b7134422SSumit Gupta [0x20] = "multiport0_t/T/aovc",
874b7134422SSumit Gupta [0x21] = "multiport0_t/T/atcm",
875b7134422SSumit Gupta [0x22] = "multiport0_t/T/cast",
876b7134422SSumit Gupta [0x23] = "multiport0_t/T/dast",
877b7134422SSumit Gupta [0x24] = "multiport0_t/T/err_collator_car",
878b7134422SSumit Gupta [0x25] = "multiport0_t/T/gpio",
879b7134422SSumit Gupta [0x26] = "multiport0_t/T/i2c10",
880b7134422SSumit Gupta [0x27] = "multiport0_t/T/mss",
881b7134422SSumit Gupta [0x28] = "multiport0_t/T/padctl_a12",
882b7134422SSumit Gupta [0x29] = "multiport0_t/T/padctl_a14",
883b7134422SSumit Gupta [0x2a] = "multiport0_t/T/padctl_a15",
884b7134422SSumit Gupta [0x2b] = "multiport0_t/T/rtc",
885b7134422SSumit Gupta [0x2c] = "multiport0_t/T/tsc",
886b7134422SSumit Gupta [0x2d] = "RESERVED",
887b7134422SSumit Gupta [0x2e] = "RESERVED",
888b7134422SSumit Gupta [0x2f] = "RESERVED",
889b7134422SSumit Gupta [0x30] = "multiport2_t/T/aon_vref_ro",
890b7134422SSumit Gupta [0x31] = "multiport2_t/T/aopm",
891b7134422SSumit Gupta [0x32] = "multiport2_t/T/car",
892b7134422SSumit Gupta [0x33] = "multiport2_t/T/pmc",
893b7134422SSumit Gupta [0x34] = "ast1_t/T/0",
894b7134422SSumit Gupta [0x35] = "cbb_t/T/0",
895b7134422SSumit Gupta [0x36] = "cpu_t/T/0",
896b7134422SSumit Gupta [0x37] = "firewall_t/T/0",
897b7134422SSumit Gupta [0x38] = "svc_t/T/0",
898b7134422SSumit Gupta [0x39] = "uartc/T/uartc",
899b7134422SSumit Gupta [0x3a] = "RESERVED",
900b7134422SSumit Gupta [0x3b] = "RESERVED",
901b7134422SSumit Gupta [0x3c] = "RESERVED",
902b7134422SSumit Gupta [0x3d] = "RESERVED",
903b7134422SSumit Gupta [0x3e] = "RESERVED",
904b7134422SSumit Gupta [0x3f] = "RESERVED"
905b7134422SSumit Gupta };
906b7134422SSumit Gupta
907b7134422SSumit Gupta /*
908b7134422SSumit Gupta * Fields of AON NOC lookup table:
909b7134422SSumit Gupta * Init flow, Targ flow, Targ subrange, Init mapping, Init localAddress,
910b7134422SSumit Gupta * Targ mapping, Targ localAddress
911b7134422SSumit Gupta * ----------------------------------------------------------------------------
912b7134422SSumit Gupta */
913b7134422SSumit Gupta static const struct tegra194_cbb_aperture tegra194_aonnoc_aperture_lookup[] = {
914b7134422SSumit Gupta { 0x0, 0x37, 0x00, 0, 0x0c640000, 0, 0x00000000 },
915b7134422SSumit Gupta { 0x0, 0x20, 0x00, 0, 0x0c3b0000, 0, 0x00000000 },
916b7134422SSumit Gupta { 0x0, 0x21, 0x00, 0, 0x0c000000, 0, 0x00000000 },
917b7134422SSumit Gupta { 0x0, 0x22, 0x00, 0, 0x0c040000, 0, 0x00000000 },
918b7134422SSumit Gupta { 0x0, 0x23, 0x00, 0, 0x0c050000, 0, 0x00000000 },
919b7134422SSumit Gupta { 0x0, 0x24, 0x00, 0, 0x20cf0000, 0, 0x00000000 },
920b7134422SSumit Gupta { 0x0, 0x25, 0x00, 0, 0x0c2f0000, 0, 0x00000000 },
921b7134422SSumit Gupta { 0x0, 0x26, 0x00, 0, 0x0c230000, 0, 0x00000000 },
922b7134422SSumit Gupta { 0x0, 0x27, 0x00, 0, 0x0c350000, 0, 0x00000000 },
923b7134422SSumit Gupta { 0x0, 0x28, 0x00, 0, 0x0c301000, 0, 0x00000000 },
924b7134422SSumit Gupta { 0x0, 0x29, 0x00, 0, 0x0c302000, 0, 0x00000000 },
925b7134422SSumit Gupta { 0x0, 0x2a, 0x00, 0, 0x0c303000, 0, 0x00000000 },
926b7134422SSumit Gupta { 0x0, 0x2b, 0x00, 0, 0x0c2a0000, 0, 0x00000000 },
927b7134422SSumit Gupta { 0x0, 0x2c, 0x00, 0, 0x0c2b0000, 0, 0x00000000 },
928b7134422SSumit Gupta { 0x0, 0x2c, 0x01, 0, 0x0c2c0000, 1, 0x00010000 },
929b7134422SSumit Gupta { 0x0, 0x2c, 0x02, 0, 0x0c2d0000, 2, 0x00020000 },
930b7134422SSumit Gupta { 0x0, 0x2c, 0x03, 0, 0x0c2e0000, 3, 0x00030000 },
931b7134422SSumit Gupta { 0x0, 0x00, 0x00, 0, 0x0c660000, 0, 0x00000000 },
932b7134422SSumit Gupta { 0x0, 0x01, 0x00, 0, 0x0c020000, 0, 0x00000000 },
933b7134422SSumit Gupta { 0x0, 0x02, 0x00, 0, 0x0c030000, 0, 0x00000000 },
934b7134422SSumit Gupta { 0x0, 0x03, 0x00, 0, 0x0c310000, 0, 0x00000000 },
935b7134422SSumit Gupta { 0x0, 0x04, 0x00, 0, 0x0c320000, 0, 0x00000000 },
936b7134422SSumit Gupta { 0x0, 0x05, 0x00, 0, 0x0c0a0000, 2, 0x00040000 },
937b7134422SSumit Gupta { 0x0, 0x05, 0x01, 0, 0x0c0b0000, 3, 0x00050000 },
938b7134422SSumit Gupta { 0x0, 0x05, 0x02, 0, 0x0c0e0000, 5, 0x00080000 },
939b7134422SSumit Gupta { 0x0, 0x05, 0x03, 0, 0x0c060000, 0, 0x00000000 },
940b7134422SSumit Gupta { 0x0, 0x05, 0x04, 0, 0x0c080000, 1, 0x00020000 },
941b7134422SSumit Gupta { 0x0, 0x05, 0x05, 0, 0x0c0c0000, 4, 0x00060000 },
942b7134422SSumit Gupta { 0x0, 0x06, 0x00, 0, 0x0c330000, 0, 0x00000000 },
943b7134422SSumit Gupta { 0x0, 0x07, 0x00, 0, 0x0c650000, 0, 0x00000000 },
944b7134422SSumit Gupta { 0x0, 0x08, 0x00, 0, 0x0c3e0000, 0, 0x00000000 },
945b7134422SSumit Gupta { 0x0, 0x09, 0x00, 0, 0x0c1e0000, 0, 0x00000000 },
946b7134422SSumit Gupta { 0x0, 0x0a, 0x00, 0, 0x0c150000, 0, 0x00000000 },
947b7134422SSumit Gupta { 0x0, 0x0a, 0x01, 0, 0x0c160000, 1, 0x00010000 },
948b7134422SSumit Gupta { 0x0, 0x0a, 0x02, 0, 0x0c170000, 2, 0x00020000 },
949b7134422SSumit Gupta { 0x0, 0x0a, 0x03, 0, 0x0c180000, 3, 0x00030000 },
950b7134422SSumit Gupta { 0x0, 0x0a, 0x04, 0, 0x0c190000, 4, 0x00040000 },
951b7134422SSumit Gupta { 0x0, 0x0a, 0x05, 0, 0x0c1a0000, 5, 0x00050000 },
952b7134422SSumit Gupta { 0x0, 0x0a, 0x06, 0, 0x0c1b0000, 6, 0x00060000 },
953b7134422SSumit Gupta { 0x0, 0x0a, 0x07, 0, 0x0c1c0000, 7, 0x00070000 },
954b7134422SSumit Gupta { 0x0, 0x0a, 0x08, 0, 0x0c1d0000, 8, 0x00080000 },
955b7134422SSumit Gupta { 0x0, 0x0b, 0x00, 0, 0x0c240000, 0, 0x00000000 },
956b7134422SSumit Gupta { 0x0, 0x0c, 0x00, 0, 0x0c250000, 0, 0x00000000 },
957b7134422SSumit Gupta { 0x0, 0x0d, 0x00, 0, 0x0c340000, 0, 0x00000000 },
958b7134422SSumit Gupta { 0x0, 0x0e, 0x00, 0, 0x0c260000, 0, 0x00000000 },
959b7134422SSumit Gupta { 0x0, 0x0f, 0x00, 0, 0x0c0f0000, 0, 0x00000000 },
960b7134422SSumit Gupta { 0x0, 0x0f, 0x01, 0, 0x0c100000, 1, 0x00010000 },
961b7134422SSumit Gupta { 0x0, 0x0f, 0x02, 0, 0x0c110000, 2, 0x00020000 },
962b7134422SSumit Gupta { 0x0, 0x0f, 0x03, 0, 0x0c120000, 3, 0x00030000 },
963b7134422SSumit Gupta { 0x0, 0x0f, 0x04, 0, 0x0c130000, 4, 0x00040000 },
964b7134422SSumit Gupta { 0x0, 0x0f, 0x05, 0, 0x0c140000, 5, 0x00050000 },
965b7134422SSumit Gupta { 0x0, 0x10, 0x00, 0, 0x0c290000, 0, 0x00000000 },
966b7134422SSumit Gupta { 0x0, 0x30, 0x00, 0, 0x20ce0000, 0, 0x00000000 },
967b7134422SSumit Gupta { 0x0, 0x31, 0x00, 0, 0x0c1f0000, 0, 0x00000000 },
968b7134422SSumit Gupta { 0x0, 0x31, 0x01, 0, 0x0c200000, 1, 0x00010000 },
969b7134422SSumit Gupta { 0x0, 0x31, 0x02, 0, 0x0c210000, 2, 0x00020000 },
970b7134422SSumit Gupta { 0x0, 0x31, 0x03, 0, 0x0c220000, 3, 0x00030000 },
971b7134422SSumit Gupta { 0x0, 0x32, 0x00, 0, 0x20cc0000, 3, 0x001c0000 },
972b7134422SSumit Gupta { 0x0, 0x32, 0x01, 0, 0x20c80000, 2, 0x00180000 },
973b7134422SSumit Gupta { 0x0, 0x32, 0x02, 0, 0x20c00000, 1, 0x00100000 },
974b7134422SSumit Gupta { 0x0, 0x32, 0x03, 0, 0x20b00000, 0, 0x00000000 },
975b7134422SSumit Gupta { 0x0, 0x33, 0x00, 0, 0x0c360000, 0, 0x00000000 },
976b7134422SSumit Gupta { 0x0, 0x33, 0x01, 0, 0x0c370000, 1, 0x00010000 },
977b7134422SSumit Gupta { 0x0, 0x33, 0x02, 0, 0x0c3a0000, 3, 0x00040000 },
978b7134422SSumit Gupta { 0x0, 0x33, 0x03, 0, 0x0c380000, 2, 0x00020000 },
979b7134422SSumit Gupta { 0x0, 0x38, 0x00, 0, 0x0c600000, 0, 0x00000000 },
980b7134422SSumit Gupta { 0x0, 0x38, 0x01, 0, 0x00000000, 0, 0x00000000 },
981b7134422SSumit Gupta { 0x0, 0x39, 0x00, 0, 0x0c280000, 0, 0x00000000 },
982b7134422SSumit Gupta { 0x1, 0x35, 0x00, 0, 0x00000000, 0, 0x00000000 },
983b7134422SSumit Gupta { 0x1, 0x35, 0x01, 0, 0x00100000, 1, 0x00100000 },
984b7134422SSumit Gupta { 0x1, 0x35, 0x02, 0, 0x05a00000, 11, 0x05a00000 },
985b7134422SSumit Gupta { 0x1, 0x35, 0x03, 0, 0x05b00000, 32, 0x05b00000 },
986b7134422SSumit Gupta { 0x1, 0x35, 0x04, 0, 0x05c00000, 33, 0x05c00000 },
987b7134422SSumit Gupta { 0x1, 0x35, 0x05, 0, 0x05d00000, 12, 0x05d00000 },
988b7134422SSumit Gupta { 0x1, 0x35, 0x06, 0, 0x20000000, 19, 0x20000000 },
989b7134422SSumit Gupta { 0x1, 0x35, 0x07, 0, 0x20100000, 20, 0x20100000 },
990b7134422SSumit Gupta { 0x1, 0x35, 0x08, 0, 0x20a00000, 24, 0x20a00000 },
991b7134422SSumit Gupta { 0x1, 0x35, 0x09, 0, 0x20d00000, 25, 0x20d00000 },
992b7134422SSumit Gupta { 0x1, 0x35, 0x0a, 0, 0x00200000, 2, 0x00200000 },
993b7134422SSumit Gupta { 0x1, 0x35, 0x0b, 0, 0x05800000, 10, 0x05800000 },
994b7134422SSumit Gupta { 0x1, 0x35, 0x0c, 0, 0x05e00000, 13, 0x05e00000 },
995b7134422SSumit Gupta { 0x1, 0x35, 0x0d, 0, 0x20200000, 21, 0x20200000 },
996b7134422SSumit Gupta { 0x1, 0x35, 0x0e, 0, 0x20800000, 23, 0x20800000 },
997b7134422SSumit Gupta { 0x1, 0x35, 0x0f, 0, 0x20e00000, 26, 0x20e00000 },
998b7134422SSumit Gupta { 0x1, 0x35, 0x10, 0, 0x00400000, 3, 0x00400000 },
999b7134422SSumit Gupta { 0x1, 0x35, 0x11, 0, 0x20400000, 22, 0x20400000 },
1000b7134422SSumit Gupta { 0x1, 0x35, 0x12, 0, 0x00800000, 4, 0x00800000 },
1001b7134422SSumit Gupta { 0x1, 0x35, 0x13, 0, 0x05000000, 9, 0x05000000 },
1002b7134422SSumit Gupta { 0x1, 0x35, 0x14, 0, 0x0c800000, 34, 0x0c800000 },
1003b7134422SSumit Gupta { 0x1, 0x35, 0x15, 0, 0x01000000, 5, 0x01000000 },
1004b7134422SSumit Gupta { 0x1, 0x35, 0x16, 0, 0x03000000, 7, 0x03000000 },
1005b7134422SSumit Gupta { 0x1, 0x35, 0x17, 0, 0x04000000, 8, 0x04000000 },
1006b7134422SSumit Gupta { 0x1, 0x35, 0x18, 0, 0x0d000000, 16, 0x0d000000 },
1007b7134422SSumit Gupta { 0x1, 0x35, 0x19, 0, 0x21000000, 27, 0x21000000 },
1008b7134422SSumit Gupta { 0x1, 0x35, 0x1a, 0, 0x02000000, 6, 0x02000000 },
1009b7134422SSumit Gupta { 0x1, 0x35, 0x1b, 0, 0x06000000, 14, 0x06000000 },
1010b7134422SSumit Gupta { 0x1, 0x35, 0x1c, 0, 0x0e000000, 17, 0x0e000000 },
1011b7134422SSumit Gupta { 0x1, 0x35, 0x1d, 0, 0x22000000, 28, 0x22000000 },
1012b7134422SSumit Gupta { 0x1, 0x35, 0x1e, 0, 0x08000000, 15, 0x08000000 },
1013b7134422SSumit Gupta { 0x1, 0x35, 0x1f, 0, 0x24000000, 29, 0x24000000 },
1014b7134422SSumit Gupta { 0x1, 0x35, 0x20, 0, 0x28000000, 30, 0x28000000 },
1015b7134422SSumit Gupta { 0x1, 0x35, 0x21, 0, 0x10000000, 18, 0x10000000 },
1016b7134422SSumit Gupta { 0x1, 0x35, 0x22, 0, 0x30000000, 31, 0x30000000 },
1017b7134422SSumit Gupta { 0x1, 0x37, 0x00, 0, 0x0c640000, 0, 0x00000000 },
1018b7134422SSumit Gupta { 0x1, 0x20, 0x00, 0, 0x0c3b0000, 0, 0x00000000 },
1019b7134422SSumit Gupta { 0x1, 0x21, 0x00, 0, 0x0c000000, 0, 0x00000000 },
1020b7134422SSumit Gupta { 0x1, 0x22, 0x00, 0, 0x0c040000, 0, 0x00000000 },
1021b7134422SSumit Gupta { 0x1, 0x23, 0x00, 0, 0x0c050000, 0, 0x00000000 },
1022b7134422SSumit Gupta { 0x1, 0x24, 0x00, 0, 0x20cf0000, 0, 0x00000000 },
1023b7134422SSumit Gupta { 0x1, 0x25, 0x00, 0, 0x0c2f0000, 0, 0x00000000 },
1024b7134422SSumit Gupta { 0x1, 0x26, 0x00, 0, 0x0c230000, 0, 0x00000000 },
1025b7134422SSumit Gupta { 0x1, 0x27, 0x00, 0, 0x0c350000, 0, 0x00000000 },
1026b7134422SSumit Gupta { 0x1, 0x28, 0x00, 0, 0x0c301000, 0, 0x00000000 },
1027b7134422SSumit Gupta { 0x1, 0x29, 0x00, 0, 0x0c302000, 0, 0x00000000 },
1028b7134422SSumit Gupta { 0x1, 0x2a, 0x00, 0, 0x0c303000, 0, 0x00000000 },
1029b7134422SSumit Gupta { 0x1, 0x2b, 0x00, 0, 0x0c2a0000, 0, 0x00000000 },
1030b7134422SSumit Gupta { 0x1, 0x2c, 0x00, 0, 0x0c2b0000, 0, 0x00000000 },
1031b7134422SSumit Gupta { 0x1, 0x2c, 0x01, 0, 0x0c2c0000, 1, 0x00010000 },
1032b7134422SSumit Gupta { 0x1, 0x2c, 0x02, 0, 0x0c2d0000, 2, 0x00020000 },
1033b7134422SSumit Gupta { 0x1, 0x2c, 0x03, 0, 0x0c2e0000, 3, 0x00030000 },
1034b7134422SSumit Gupta { 0x1, 0x00, 0x00, 0, 0x0c660000, 0, 0x00000000 },
1035b7134422SSumit Gupta { 0x1, 0x01, 0x00, 0, 0x0c020000, 0, 0x00000000 },
1036b7134422SSumit Gupta { 0x1, 0x02, 0x00, 0, 0x0c030000, 0, 0x00000000 },
1037b7134422SSumit Gupta { 0x1, 0x03, 0x00, 0, 0x0c310000, 0, 0x00000000 },
1038b7134422SSumit Gupta { 0x1, 0x04, 0x00, 0, 0x0c320000, 0, 0x00000000 },
1039b7134422SSumit Gupta { 0x1, 0x05, 0x00, 0, 0x0c0a0000, 2, 0x00040000 },
1040b7134422SSumit Gupta { 0x1, 0x05, 0x01, 0, 0x0c0b0000, 3, 0x00050000 },
1041b7134422SSumit Gupta { 0x1, 0x05, 0x02, 0, 0x0c0e0000, 5, 0x00080000 },
1042b7134422SSumit Gupta { 0x1, 0x05, 0x03, 0, 0x0c060000, 0, 0x00000000 },
1043b7134422SSumit Gupta { 0x1, 0x05, 0x04, 0, 0x0c080000, 1, 0x00020000 },
1044b7134422SSumit Gupta { 0x1, 0x05, 0x05, 0, 0x0c0c0000, 4, 0x00060000 },
1045b7134422SSumit Gupta { 0x1, 0x06, 0x00, 0, 0x0c330000, 0, 0x00000000 },
1046b7134422SSumit Gupta { 0x1, 0x07, 0x00, 0, 0x0c650000, 0, 0x00000000 },
1047b7134422SSumit Gupta { 0x1, 0x08, 0x00, 0, 0x0c3e0000, 0, 0x00000000 },
1048b7134422SSumit Gupta { 0x1, 0x09, 0x00, 0, 0x0c1e0000, 0, 0x00000000 },
1049b7134422SSumit Gupta { 0x1, 0x0a, 0x00, 0, 0x0c150000, 0, 0x00000000 },
1050b7134422SSumit Gupta { 0x1, 0x0a, 0x01, 0, 0x0c160000, 1, 0x00010000 },
1051b7134422SSumit Gupta { 0x1, 0x0a, 0x02, 0, 0x0c170000, 2, 0x00020000 },
1052b7134422SSumit Gupta { 0x1, 0x0a, 0x03, 0, 0x0c180000, 3, 0x00030000 },
1053b7134422SSumit Gupta { 0x1, 0x0a, 0x04, 0, 0x0c190000, 4, 0x00040000 },
1054b7134422SSumit Gupta { 0x1, 0x0a, 0x05, 0, 0x0c1a0000, 5, 0x00050000 },
1055b7134422SSumit Gupta { 0x1, 0x0a, 0x06, 0, 0x0c1b0000, 6, 0x00060000 },
1056b7134422SSumit Gupta { 0x1, 0x0a, 0x07, 0, 0x0c1c0000, 7, 0x00070000 },
1057b7134422SSumit Gupta { 0x1, 0x0a, 0x08, 0, 0x0c1d0000, 8, 0x00080000 },
1058b7134422SSumit Gupta { 0x1, 0x0b, 0x00, 0, 0x0c240000, 0, 0x00000000 },
1059b7134422SSumit Gupta { 0x1, 0x0c, 0x00, 0, 0x0c250000, 0, 0x00000000 },
1060b7134422SSumit Gupta { 0x1, 0x0d, 0x00, 0, 0x0c340000, 0, 0x00000000 },
1061b7134422SSumit Gupta { 0x1, 0x0e, 0x00, 0, 0x0c260000, 0, 0x00000000 },
1062b7134422SSumit Gupta { 0x1, 0x0f, 0x00, 0, 0x0c0f0000, 0, 0x00000000 },
1063b7134422SSumit Gupta { 0x1, 0x0f, 0x01, 0, 0x0c100000, 1, 0x00010000 },
1064b7134422SSumit Gupta { 0x1, 0x0f, 0x02, 0, 0x0c110000, 2, 0x00020000 },
1065b7134422SSumit Gupta { 0x1, 0x0f, 0x03, 0, 0x0c120000, 3, 0x00030000 },
1066b7134422SSumit Gupta { 0x1, 0x0f, 0x04, 0, 0x0c130000, 4, 0x00040000 },
1067b7134422SSumit Gupta { 0x1, 0x0f, 0x05, 0, 0x0c140000, 5, 0x00050000 },
1068b7134422SSumit Gupta { 0x1, 0x10, 0x00, 0, 0x0c290000, 0, 0x00000000 },
1069b7134422SSumit Gupta { 0x1, 0x30, 0x00, 0, 0x20ce0000, 0, 0x00000000 },
1070b7134422SSumit Gupta { 0x1, 0x31, 0x00, 0, 0x0c1f0000, 0, 0x00000000 },
1071b7134422SSumit Gupta { 0x1, 0x31, 0x01, 0, 0x0c200000, 1, 0x00010000 },
1072b7134422SSumit Gupta { 0x1, 0x31, 0x02, 0, 0x0c210000, 2, 0x00020000 },
1073b7134422SSumit Gupta { 0x1, 0x31, 0x03, 0, 0x0c220000, 3, 0x00030000 },
1074b7134422SSumit Gupta { 0x1, 0x32, 0x00, 0, 0x20cc0000, 3, 0x001c0000 },
1075b7134422SSumit Gupta { 0x1, 0x32, 0x01, 0, 0x20c80000, 2, 0x00180000 },
1076b7134422SSumit Gupta { 0x1, 0x32, 0x02, 0, 0x20c00000, 1, 0x00100000 },
1077b7134422SSumit Gupta { 0x1, 0x32, 0x03, 0, 0x20b00000, 0, 0x00000000 },
1078b7134422SSumit Gupta { 0x1, 0x33, 0x00, 0, 0x0c360000, 0, 0x00000000 },
1079b7134422SSumit Gupta { 0x1, 0x33, 0x01, 0, 0x0c370000, 1, 0x00010000 },
1080b7134422SSumit Gupta { 0x1, 0x33, 0x02, 0, 0x0c3a0000, 3, 0x00040000 },
1081b7134422SSumit Gupta { 0x1, 0x33, 0x03, 0, 0x0c380000, 2, 0x00020000 },
1082b7134422SSumit Gupta { 0x1, 0x38, 0x00, 0, 0x0c600000, 0, 0x00000000 },
1083b7134422SSumit Gupta { 0x1, 0x38, 0x01, 0, 0x00000000, 0, 0x00000000 },
1084b7134422SSumit Gupta { 0x1, 0x39, 0x00, 0, 0x0c280000, 0, 0x00000000 },
1085b7134422SSumit Gupta { 0x2, 0x34, 0x00, 0, 0x40000000, 0, 0x40000000 },
1086b7134422SSumit Gupta { 0x2, 0x34, 0x01, 0, 0x80000000, 1, 0x80000000 },
1087b7134422SSumit Gupta { 0x2, 0x36, 0x00, 0, 0x0c400000, 0, 0x0c400000 },
1088b7134422SSumit Gupta { 0x2, 0x36, 0x01, 0, 0x00000000, 0, 0x00000000 },
1089b7134422SSumit Gupta { 0x3, 0x35, 0x00, 0, 0x00000000, 0, 0x00000000 },
1090b7134422SSumit Gupta { 0x3, 0x35, 0x01, 0, 0x00100000, 1, 0x00100000 },
1091b7134422SSumit Gupta { 0x3, 0x35, 0x02, 0, 0x05a00000, 11, 0x05a00000 },
1092b7134422SSumit Gupta { 0x3, 0x35, 0x03, 0, 0x05b00000, 32, 0x05b00000 },
1093b7134422SSumit Gupta { 0x3, 0x35, 0x04, 0, 0x05c00000, 33, 0x05c00000 },
1094b7134422SSumit Gupta { 0x3, 0x35, 0x05, 0, 0x05d00000, 12, 0x05d00000 },
1095b7134422SSumit Gupta { 0x3, 0x35, 0x06, 0, 0x20000000, 19, 0x20000000 },
1096b7134422SSumit Gupta { 0x3, 0x35, 0x07, 0, 0x20100000, 20, 0x20100000 },
1097b7134422SSumit Gupta { 0x3, 0x35, 0x08, 0, 0x20a00000, 24, 0x20a00000 },
1098b7134422SSumit Gupta { 0x3, 0x35, 0x09, 0, 0x20d00000, 25, 0x20d00000 },
1099b7134422SSumit Gupta { 0x3, 0x35, 0x0a, 0, 0x00200000, 2, 0x00200000 },
1100b7134422SSumit Gupta { 0x3, 0x35, 0x0b, 0, 0x05800000, 10, 0x05800000 },
1101b7134422SSumit Gupta { 0x3, 0x35, 0x0c, 0, 0x05e00000, 13, 0x05e00000 },
1102b7134422SSumit Gupta { 0x3, 0x35, 0x0d, 0, 0x20200000, 21, 0x20200000 },
1103b7134422SSumit Gupta { 0x3, 0x35, 0x0e, 0, 0x20800000, 23, 0x20800000 },
1104b7134422SSumit Gupta { 0x3, 0x35, 0x0f, 0, 0x20e00000, 26, 0x20e00000 },
1105b7134422SSumit Gupta { 0x3, 0x35, 0x10, 0, 0x00400000, 3, 0x00400000 },
1106b7134422SSumit Gupta { 0x3, 0x35, 0x11, 0, 0x20400000, 22, 0x20400000 },
1107b7134422SSumit Gupta { 0x3, 0x35, 0x12, 0, 0x00800000, 4, 0x00800000 },
1108b7134422SSumit Gupta { 0x3, 0x35, 0x13, 0, 0x50000000, 9, 0x05000000 },
1109b7134422SSumit Gupta { 0x3, 0x35, 0x14, 0, 0xc0800000, 34, 0x0c800000 },
1110b7134422SSumit Gupta { 0x3, 0x35, 0x15, 0, 0x10000000, 5, 0x01000000 },
1111b7134422SSumit Gupta { 0x3, 0x35, 0x16, 0, 0x30000000, 7, 0x03000000 },
1112b7134422SSumit Gupta { 0x3, 0x35, 0x17, 0, 0x04000000, 8, 0x04000000 },
1113b7134422SSumit Gupta { 0x3, 0x35, 0x18, 0, 0x0d000000, 16, 0x0d000000 },
1114b7134422SSumit Gupta { 0x3, 0x35, 0x19, 0, 0x21000000, 27, 0x21000000 },
1115b7134422SSumit Gupta { 0x3, 0x35, 0x1a, 0, 0x02000000, 6, 0x02000000 },
1116b7134422SSumit Gupta { 0x3, 0x35, 0x1b, 0, 0x06000000, 14, 0x06000000 },
1117b7134422SSumit Gupta { 0x3, 0x35, 0x1c, 0, 0x0e000000, 17, 0x0e000000 },
1118b7134422SSumit Gupta { 0x3, 0x35, 0x1d, 0, 0x22000000, 28, 0x22000000 },
1119b7134422SSumit Gupta { 0x3, 0x35, 0x1e, 0, 0x08000000, 15, 0x08000000 },
1120b7134422SSumit Gupta { 0x3, 0x35, 0x1f, 0, 0x24000000, 29, 0x24000000 },
1121b7134422SSumit Gupta { 0x3, 0x35, 0x20, 0, 0x28000000, 30, 0x28000000 },
1122b7134422SSumit Gupta { 0x3, 0x35, 0x21, 0, 0x10000000, 18, 0x10000000 },
1123b7134422SSumit Gupta { 0x3, 0x35, 0x22, 0, 0x30000000, 31, 0x30000000 },
1124b7134422SSumit Gupta { 0x3, 0x37, 0x00, 0, 0x0c640000, 0, 0x00000000 },
1125b7134422SSumit Gupta { 0x3, 0x20, 0x00, 0, 0x0c3b0000, 0, 0x00000000 },
1126b7134422SSumit Gupta { 0x3, 0x21, 0x00, 0, 0x0c000000, 0, 0x00000000 },
1127b7134422SSumit Gupta { 0x3, 0x22, 0x00, 0, 0x0c040000, 0, 0x00000000 },
1128b7134422SSumit Gupta { 0x3, 0x23, 0x00, 0, 0x0c050000, 0, 0x00000000 },
1129b7134422SSumit Gupta { 0x3, 0x24, 0x00, 0, 0x20cf0000, 0, 0x00000000 },
1130b7134422SSumit Gupta { 0x3, 0x25, 0x00, 0, 0x0c2f0000, 0, 0x00000000 },
1131b7134422SSumit Gupta { 0x3, 0x26, 0x00, 0, 0x0c230000, 0, 0x00000000 },
1132b7134422SSumit Gupta { 0x3, 0x27, 0x00, 0, 0x0c350000, 0, 0x00000000 },
1133b7134422SSumit Gupta { 0x3, 0x28, 0x00, 0, 0x0c301000, 0, 0x00000000 },
1134b7134422SSumit Gupta { 0x3, 0x29, 0x00, 0, 0x0c302000, 0, 0x00000000 },
1135b7134422SSumit Gupta { 0x3, 0x2a, 0x00, 0, 0x0c303000, 0, 0x00000000 },
1136b7134422SSumit Gupta { 0x3, 0x2b, 0x00, 0, 0x0c2a0000, 0, 0x00000000 },
1137b7134422SSumit Gupta { 0x3, 0x2c, 0x00, 0, 0x0c2b0000, 0, 0x00000000 },
1138b7134422SSumit Gupta { 0x3, 0x2c, 0x01, 0, 0x0c2c0000, 1, 0x00010000 },
1139b7134422SSumit Gupta { 0x3, 0x2c, 0x02, 0, 0x0c2d0000, 2, 0x00020000 },
1140b7134422SSumit Gupta { 0x3, 0x2c, 0x03, 0, 0x0c2e0000, 3, 0x00030000 },
1141b7134422SSumit Gupta { 0x3, 0x00, 0x00, 0, 0x0c660000, 0, 0x00000000 },
1142b7134422SSumit Gupta { 0x3, 0x01, 0x00, 0, 0x0c020000, 0, 0x00000000 },
1143b7134422SSumit Gupta { 0x3, 0x02, 0x00, 0, 0x0c030000, 0, 0x00000000 },
1144b7134422SSumit Gupta { 0x3, 0x03, 0x00, 0, 0x0c310000, 0, 0x00000000 },
1145b7134422SSumit Gupta { 0x3, 0x04, 0x00, 0, 0x0c320000, 0, 0x00000000 },
1146b7134422SSumit Gupta { 0x3, 0x05, 0x00, 0, 0x0c0a0000, 2, 0x00040000 },
1147b7134422SSumit Gupta { 0x3, 0x05, 0x01, 0, 0x0c0b0000, 3, 0x00050000 },
1148b7134422SSumit Gupta { 0x3, 0x05, 0x02, 0, 0x0c0e0000, 5, 0x00080000 },
1149b7134422SSumit Gupta { 0x3, 0x05, 0x03, 0, 0x0c060000, 0, 0x00000000 },
1150b7134422SSumit Gupta { 0x3, 0x05, 0x04, 0, 0x0c080000, 1, 0x00020000 },
1151b7134422SSumit Gupta { 0x3, 0x05, 0x05, 0, 0x0c0c0000, 4, 0x00060000 },
1152b7134422SSumit Gupta { 0x3, 0x06, 0x00, 0, 0x0c330000, 0, 0x00000000 },
1153b7134422SSumit Gupta { 0x3, 0x07, 0x00, 0, 0x0c650000, 0, 0x00000000 },
1154b7134422SSumit Gupta { 0x3, 0x08, 0x00, 0, 0x0c3e0000, 0, 0x00000000 },
1155b7134422SSumit Gupta { 0x3, 0x09, 0x00, 0, 0x0c1e0000, 0, 0x00000000 },
1156b7134422SSumit Gupta { 0x3, 0x0a, 0x00, 0, 0x0c150000, 0, 0x00000000 },
1157b7134422SSumit Gupta { 0x3, 0x0a, 0x01, 0, 0x0c160000, 1, 0x00010000 },
1158b7134422SSumit Gupta { 0x3, 0x0a, 0x02, 0, 0x0c170000, 2, 0x00020000 },
1159b7134422SSumit Gupta { 0x3, 0x0a, 0x03, 0, 0x0c180000, 3, 0x00030000 },
1160b7134422SSumit Gupta { 0x3, 0x0a, 0x04, 0, 0x0c190000, 4, 0x00040000 },
1161b7134422SSumit Gupta { 0x3, 0x0a, 0x05, 0, 0x0c1a0000, 5, 0x00050000 },
1162b7134422SSumit Gupta { 0x3, 0x0a, 0x06, 0, 0x0c1b0000, 6, 0x00060000 },
1163b7134422SSumit Gupta { 0x3, 0x0a, 0x07, 0, 0x0c1c0000, 7, 0x00070000 },
1164b7134422SSumit Gupta { 0x3, 0x0a, 0x08, 0, 0x0c1d0000, 8, 0x00080000 },
1165b7134422SSumit Gupta { 0x3, 0x0b, 0x00, 0, 0x0c240000, 0, 0x00000000 },
1166b7134422SSumit Gupta { 0x3, 0x0c, 0x00, 0, 0x0c250000, 0, 0x00000000 },
1167b7134422SSumit Gupta { 0x3, 0x0d, 0x00, 0, 0x0c340000, 0, 0x00000000 },
1168b7134422SSumit Gupta { 0x3, 0x0e, 0x00, 0, 0x0c260000, 0, 0x00000000 },
1169b7134422SSumit Gupta { 0x3, 0x0f, 0x00, 0, 0x0c0f0000, 0, 0x00000000 },
1170b7134422SSumit Gupta { 0x3, 0x0f, 0x01, 0, 0x0c100000, 1, 0x00010000 },
1171b7134422SSumit Gupta { 0x3, 0x0f, 0x02, 0, 0x0c110000, 2, 0x00020000 },
1172b7134422SSumit Gupta { 0x3, 0x0f, 0x03, 0, 0x0c120000, 3, 0x00030000 },
1173b7134422SSumit Gupta { 0x3, 0x0f, 0x04, 0, 0x0c130000, 4, 0x00040000 },
1174b7134422SSumit Gupta { 0x3, 0x0f, 0x05, 0, 0x0c140000, 5, 0x00050000 },
1175b7134422SSumit Gupta { 0x3, 0x10, 0x00, 0, 0x0c290000, 0, 0x00000000 },
1176b7134422SSumit Gupta { 0x3, 0x30, 0x00, 0, 0x20ce0000, 0, 0x00000000 },
1177b7134422SSumit Gupta { 0x3, 0x31, 0x00, 0, 0x0c1f0000, 0, 0x00000000 },
1178b7134422SSumit Gupta { 0x3, 0x31, 0x01, 0, 0x0c200000, 1, 0x00010000 },
1179b7134422SSumit Gupta { 0x3, 0x31, 0x02, 0, 0x0c210000, 2, 0x00020000 },
1180b7134422SSumit Gupta { 0x3, 0x31, 0x03, 0, 0x0c220000, 3, 0x00030000 },
1181b7134422SSumit Gupta { 0x3, 0x32, 0x00, 0, 0x20cc0000, 3, 0x001c0000 },
1182b7134422SSumit Gupta { 0x3, 0x32, 0x01, 0, 0x20c80000, 2, 0x00180000 },
1183b7134422SSumit Gupta { 0x3, 0x32, 0x02, 0, 0x20c00000, 1, 0x00100000 },
1184b7134422SSumit Gupta { 0x3, 0x32, 0x03, 0, 0x20b00000, 0, 0x00000000 },
1185b7134422SSumit Gupta { 0x3, 0x33, 0x00, 0, 0x0c360000, 0, 0x00000000 },
1186b7134422SSumit Gupta { 0x3, 0x33, 0x01, 0, 0x0c370000, 1, 0x00010000 },
1187b7134422SSumit Gupta { 0x3, 0x33, 0x02, 0, 0x0c3a0000, 3, 0x00040000 },
1188b7134422SSumit Gupta { 0x3, 0x33, 0x03, 0, 0x0c380000, 2, 0x00020000 },
1189b7134422SSumit Gupta { 0x3, 0x38, 0x00, 0, 0x0c600000, 0, 0x00000000 },
1190b7134422SSumit Gupta { 0x3, 0x38, 0x01, 0, 0x00000000, 0, 0x00000000 },
1191b7134422SSumit Gupta { 0x3, 0x39, 0x00, 0, 0x0c280000, 0, 0x00000000 }
1192b7134422SSumit Gupta };
1193b7134422SSumit Gupta
1194b7134422SSumit Gupta /*
1195b7134422SSumit Gupta * SCE/RCE NOC aperture lookup table as per file "AON_NOC_Structure.info".
1196b7134422SSumit Gupta */
1197b7134422SSumit Gupta static const char * const tegra194_scenoc_routeid_initflow[] = {
1198b7134422SSumit Gupta [0x0] = "cbb_i/I/0",
1199b7134422SSumit Gupta [0x1] = "cpu_m_i/I/0",
1200b7134422SSumit Gupta [0x2] = "cpu_p_i/I/0",
1201b7134422SSumit Gupta [0x3] = "dma_m_i/I/0",
1202b7134422SSumit Gupta [0x4] = "dma_p_i/I/0",
1203b7134422SSumit Gupta [0x5] = "RESERVED",
1204b7134422SSumit Gupta [0x6] = "RESERVED",
1205b7134422SSumit Gupta [0x7] = "RESERVED"
1206b7134422SSumit Gupta };
1207b7134422SSumit Gupta
1208b7134422SSumit Gupta static const char * const tegra194_scenoc_routeid_targflow[] = {
1209b7134422SSumit Gupta [0x00] = "multiport0_t/T/atcm_cfg",
1210b7134422SSumit Gupta [0x01] = "multiport0_t/T/car",
1211b7134422SSumit Gupta [0x02] = "multiport0_t/T/cast",
1212b7134422SSumit Gupta [0x03] = "multiport0_t/T/cfg",
1213b7134422SSumit Gupta [0x04] = "multiport0_t/T/dast",
1214b7134422SSumit Gupta [0x05] = "multiport0_t/T/dma",
1215b7134422SSumit Gupta [0x06] = "multiport0_t/T/err_collator",
1216b7134422SSumit Gupta [0x07] = "multiport0_t/T/err_collator_car",
1217b7134422SSumit Gupta [0x08] = "multiport0_t/T/fpga_misc",
1218b7134422SSumit Gupta [0x09] = "multiport0_t/T/fpga_uart",
1219b7134422SSumit Gupta [0x0a] = "multiport0_t/T/gte",
1220b7134422SSumit Gupta [0x0b] = "multiport0_t/T/hsp",
1221b7134422SSumit Gupta [0x0c] = "multiport0_t/T/misc",
1222b7134422SSumit Gupta [0x0d] = "multiport0_t/T/pm",
1223b7134422SSumit Gupta [0x0e] = "multiport0_t/T/tke",
1224b7134422SSumit Gupta [0x0f] = "RESERVED",
1225b7134422SSumit Gupta [0x10] = "multiport1_t/T/hsm",
1226b7134422SSumit Gupta [0x11] = "multiport1_t/T/vic0",
1227b7134422SSumit Gupta [0x12] = "multiport1_t/T/vic1",
1228b7134422SSumit Gupta [0x13] = "ast0_t/T/0",
1229b7134422SSumit Gupta [0x14] = "ast1_t/T/0",
1230b7134422SSumit Gupta [0x15] = "cbb_t/T/0",
1231b7134422SSumit Gupta [0x16] = "cpu_t/T/0",
1232b7134422SSumit Gupta [0x17] = "sce_noc_firewall/T/0",
1233b7134422SSumit Gupta [0x18] = "svc_t/T/0",
1234b7134422SSumit Gupta [0x19] = "RESERVED",
1235b7134422SSumit Gupta [0x1a] = "RESERVED",
1236b7134422SSumit Gupta [0x1b] = "RESERVED",
1237b7134422SSumit Gupta [0x1c] = "RESERVED",
1238b7134422SSumit Gupta [0x1d] = "RESERVED",
1239b7134422SSumit Gupta [0x1e] = "RESERVED",
1240b7134422SSumit Gupta [0x1f] = "RESERVED"
1241b7134422SSumit Gupta };
1242b7134422SSumit Gupta
1243b7134422SSumit Gupta /*
1244b7134422SSumit Gupta * Fields of SCE/RCE NOC lookup table:
1245b7134422SSumit Gupta * Init flow, Targ flow, Targ subrange, Init mapping, Init localAddress,
1246b7134422SSumit Gupta * Targ mapping, Targ localAddress
1247b7134422SSumit Gupta * ----------------------------------------------------------------------------
1248b7134422SSumit Gupta */
1249b7134422SSumit Gupta static const struct tegra194_cbb_aperture tegra194_scenoc_apert_lookup[] = {
1250b7134422SSumit Gupta { 0x0, 0x16, 0x0, 0, 0x0b400000, 0, 0x0b400000 },
1251b7134422SSumit Gupta { 0x0, 0x16, 0x1, 0, 0x0bc00000, 1, 0x0bc00000 },
1252b7134422SSumit Gupta { 0x0, 0x0, 0x0, 0, 0x0b000000, 0, 0x00000000 },
1253b7134422SSumit Gupta { 0x0, 0x0, 0x1, 0, 0x0b800000, 1, 0x00000000 },
1254b7134422SSumit Gupta { 0x0, 0x1, 0x0, 0, 0x20de0000, 3, 0x000e0000 },
1255b7134422SSumit Gupta { 0x0, 0x1, 0x1, 0, 0x210e0000, 7, 0x000e0000 },
1256b7134422SSumit Gupta { 0x0, 0x1, 0x2, 0, 0x20dc0000, 2, 0x000c0000 },
1257b7134422SSumit Gupta { 0x0, 0x1, 0x3, 0, 0x210c0000, 6, 0x000c0000 },
1258b7134422SSumit Gupta { 0x0, 0x1, 0x4, 0, 0x20d80000, 1, 0x00080000 },
1259b7134422SSumit Gupta { 0x0, 0x1, 0x5, 0, 0x21080000, 5, 0x00080000 },
1260b7134422SSumit Gupta { 0x0, 0x1, 0x6, 0, 0x20d00000, 0, 0x00000000 },
1261b7134422SSumit Gupta { 0x0, 0x1, 0x7, 0, 0x21000000, 4, 0x00000000 },
1262b7134422SSumit Gupta { 0x0, 0x2, 0x0, 0, 0x0b040000, 0, 0x00000000 },
1263b7134422SSumit Gupta { 0x0, 0x2, 0x1, 0, 0x0b840000, 1, 0x00000000 },
1264b7134422SSumit Gupta { 0x0, 0x3, 0x0, 0, 0x0b230000, 0, 0x00000000 },
1265b7134422SSumit Gupta { 0x0, 0x3, 0x1, 0, 0x0ba30000, 1, 0x00000000 },
1266b7134422SSumit Gupta { 0x0, 0x4, 0x0, 0, 0x0b050000, 0, 0x00000000 },
1267b7134422SSumit Gupta { 0x0, 0x4, 0x1, 0, 0x0b850000, 1, 0x00000000 },
1268b7134422SSumit Gupta { 0x0, 0x5, 0x0, 0, 0x0b060000, 0, 0x00000000 },
1269b7134422SSumit Gupta { 0x0, 0x5, 0x1, 0, 0x0b070000, 1, 0x00010000 },
1270b7134422SSumit Gupta { 0x0, 0x5, 0x2, 0, 0x0b080000, 2, 0x00020000 },
1271b7134422SSumit Gupta { 0x0, 0x5, 0x3, 0, 0x0b090000, 3, 0x00030000 },
1272b7134422SSumit Gupta { 0x0, 0x5, 0x4, 0, 0x0b0a0000, 4, 0x00040000 },
1273b7134422SSumit Gupta { 0x0, 0x5, 0x5, 0, 0x0b0b0000, 5, 0x00050000 },
1274b7134422SSumit Gupta { 0x0, 0x5, 0x6, 0, 0x0b0c0000, 6, 0x00060000 },
1275b7134422SSumit Gupta { 0x0, 0x5, 0x7, 0, 0x0b0d0000, 7, 0x00070000 },
1276b7134422SSumit Gupta { 0x0, 0x5, 0x8, 0, 0x0b0e0000, 8, 0x00080000 },
1277b7134422SSumit Gupta { 0x0, 0x5, 0x9, 0, 0x0b860000, 9, 0x00000000 },
1278b7134422SSumit Gupta { 0x0, 0x5, 0xa, 0, 0x0b870000, 10, 0x00010000 },
1279b7134422SSumit Gupta { 0x0, 0x5, 0xb, 0, 0x0b880000, 11, 0x00020000 },
1280b7134422SSumit Gupta { 0x0, 0x5, 0xc, 0, 0x0b890000, 12, 0x00030000 },
1281b7134422SSumit Gupta { 0x0, 0x5, 0xd, 0, 0x0b8a0000, 13, 0x00040000 },
1282b7134422SSumit Gupta { 0x0, 0x5, 0xe, 0, 0x0b8b0000, 14, 0x00050000 },
1283b7134422SSumit Gupta { 0x0, 0x5, 0xf, 0, 0x0b8c0000, 15, 0x00060000 },
1284b7134422SSumit Gupta { 0x0, 0x5, 0x10, 0, 0x0b8d0000, 16, 0x00070000 },
1285b7134422SSumit Gupta { 0x0, 0x5, 0x11, 0, 0x0b8e0000, 17, 0x00080000 },
1286b7134422SSumit Gupta { 0x0, 0x6, 0x0, 0, 0x0b650000, 0, 0x00000000 },
1287b7134422SSumit Gupta { 0x0, 0x6, 0x1, 0, 0x0be50000, 1, 0x00000000 },
1288b7134422SSumit Gupta { 0x0, 0x7, 0x0, 0, 0x20df0000, 0, 0x00000000 },
1289b7134422SSumit Gupta { 0x0, 0x7, 0x1, 0, 0x210f0000, 1, 0x00000000 },
1290b7134422SSumit Gupta { 0x0, 0x8, 0x0, 0, 0x0b3e0000, 0, 0x00000000 },
1291b7134422SSumit Gupta { 0x0, 0x8, 0x1, 0, 0x0bbe0000, 1, 0x00000000 },
1292b7134422SSumit Gupta { 0x0, 0x9, 0x0, 0, 0x0b3d0000, 0, 0x00000000 },
1293b7134422SSumit Gupta { 0x0, 0x9, 0x1, 0, 0x0bbd0000, 1, 0x00000000 },
1294b7134422SSumit Gupta { 0x0, 0xa, 0x0, 0, 0x0b1e0000, 0, 0x00000000 },
1295b7134422SSumit Gupta { 0x0, 0xa, 0x1, 0, 0x0b9e0000, 1, 0x00000000 },
1296b7134422SSumit Gupta { 0x0, 0xb, 0x0, 0, 0x0b150000, 0, 0x00000000 },
1297b7134422SSumit Gupta { 0x0, 0xb, 0x1, 0, 0x0b160000, 1, 0x00010000 },
1298b7134422SSumit Gupta { 0x0, 0xb, 0x2, 0, 0x0b170000, 2, 0x00020000 },
1299b7134422SSumit Gupta { 0x0, 0xb, 0x3, 0, 0x0b180000, 3, 0x00030000 },
1300b7134422SSumit Gupta { 0x0, 0xb, 0x4, 0, 0x0b190000, 4, 0x00040000 },
1301b7134422SSumit Gupta { 0x0, 0xb, 0x5, 0, 0x0b1a0000, 5, 0x00050000 },
1302b7134422SSumit Gupta { 0x0, 0xb, 0x6, 0, 0x0b1b0000, 6, 0x00060000 },
1303b7134422SSumit Gupta { 0x0, 0xb, 0x7, 0, 0x0b1c0000, 7, 0x00070000 },
1304b7134422SSumit Gupta { 0x0, 0xb, 0x8, 0, 0x0b1d0000, 8, 0x00080000 },
1305b7134422SSumit Gupta { 0x0, 0xb, 0x9, 0, 0x0b950000, 9, 0x00000000 },
1306b7134422SSumit Gupta { 0x0, 0xb, 0xa, 0, 0x0b960000, 10, 0x00010000 },
1307b7134422SSumit Gupta { 0x0, 0xb, 0xb, 0, 0x0b970000, 11, 0x00020000 },
1308b7134422SSumit Gupta { 0x0, 0xb, 0xc, 0, 0x0b980000, 12, 0x00030000 },
1309b7134422SSumit Gupta { 0x0, 0xb, 0xd, 0, 0x0b990000, 13, 0x00040000 },
1310b7134422SSumit Gupta { 0x0, 0xb, 0xe, 0, 0x0b9a0000, 14, 0x00050000 },
1311b7134422SSumit Gupta { 0x0, 0xb, 0xf, 0, 0x0b9b0000, 15, 0x00060000 },
1312b7134422SSumit Gupta { 0x0, 0xb, 0x10, 0, 0x0b9c0000, 16, 0x00070000 },
1313b7134422SSumit Gupta { 0x0, 0xb, 0x11, 0, 0x0b9d0000, 17, 0x00080000 },
1314b7134422SSumit Gupta { 0x0, 0xc, 0x0, 0, 0x0b660000, 0, 0x00000000 },
1315b7134422SSumit Gupta { 0x0, 0xc, 0x1, 0, 0x0be60000, 1, 0x00000000 },
1316b7134422SSumit Gupta { 0x0, 0xd, 0x0, 0, 0x0b1f0000, 0, 0x00000000 },
1317b7134422SSumit Gupta { 0x0, 0xd, 0x1, 0, 0x0b200000, 1, 0x00010000 },
1318b7134422SSumit Gupta { 0x0, 0xd, 0x2, 0, 0x0b210000, 2, 0x00020000 },
1319b7134422SSumit Gupta { 0x0, 0xd, 0x3, 0, 0x0b220000, 3, 0x00030000 },
1320b7134422SSumit Gupta { 0x0, 0xd, 0x4, 0, 0x0b9f0000, 4, 0x00000000 },
1321b7134422SSumit Gupta { 0x0, 0xd, 0x5, 0, 0x0ba00000, 5, 0x00010000 },
1322b7134422SSumit Gupta { 0x0, 0xd, 0x6, 0, 0x0ba10000, 6, 0x00020000 },
1323b7134422SSumit Gupta { 0x0, 0xd, 0x7, 0, 0x0ba20000, 7, 0x00030000 },
1324b7134422SSumit Gupta { 0x0, 0xe, 0x0, 0, 0x0b0f0000, 0, 0x00000000 },
1325b7134422SSumit Gupta { 0x0, 0xe, 0x1, 0, 0x0b100000, 1, 0x00010000 },
1326b7134422SSumit Gupta { 0x0, 0xe, 0x2, 0, 0x0b110000, 2, 0x00020000 },
1327b7134422SSumit Gupta { 0x0, 0xe, 0x3, 0, 0x0b120000, 3, 0x00030000 },
1328b7134422SSumit Gupta { 0x0, 0xe, 0x4, 0, 0x0b130000, 4, 0x00040000 },
1329b7134422SSumit Gupta { 0x0, 0xe, 0x5, 0, 0x0b140000, 5, 0x00050000 },
1330b7134422SSumit Gupta { 0x0, 0xe, 0x6, 0, 0x0b8f0000, 6, 0x00000000 },
1331b7134422SSumit Gupta { 0x0, 0xe, 0x7, 0, 0x0b900000, 7, 0x00010000 },
1332b7134422SSumit Gupta { 0x0, 0xe, 0x8, 0, 0x0b910000, 8, 0x00020000 },
1333b7134422SSumit Gupta { 0x0, 0xe, 0x9, 0, 0x0b920000, 9, 0x00030000 },
1334b7134422SSumit Gupta { 0x0, 0xe, 0xa, 0, 0x0b930000, 10, 0x00040000 },
1335b7134422SSumit Gupta { 0x0, 0xe, 0xb, 0, 0x0b940000, 11, 0x00050000 },
1336b7134422SSumit Gupta { 0x0, 0x10, 0x0, 0, 0x0b240000, 0, 0x00000000 },
1337b7134422SSumit Gupta { 0x0, 0x10, 0x1, 0, 0x0ba40000, 1, 0x00000000 },
1338b7134422SSumit Gupta { 0x0, 0x11, 0x0, 0, 0x0b020000, 0, 0x00000000 },
1339b7134422SSumit Gupta { 0x0, 0x11, 0x1, 0, 0x0b820000, 1, 0x00000000 },
1340b7134422SSumit Gupta { 0x0, 0x12, 0x0, 0, 0x0b030000, 0, 0x00000000 },
1341b7134422SSumit Gupta { 0x0, 0x12, 0x1, 0, 0x0b830000, 1, 0x00000000 },
1342b7134422SSumit Gupta { 0x0, 0x17, 0x0, 0, 0x0b640000, 0, 0x00000000 },
1343b7134422SSumit Gupta { 0x0, 0x17, 0x1, 0, 0x0be40000, 1, 0x00000000 },
1344b7134422SSumit Gupta { 0x0, 0x18, 0x0, 0, 0x0b600000, 0, 0x00000000 },
1345b7134422SSumit Gupta { 0x0, 0x18, 0x1, 0, 0x0be00000, 1, 0x00000000 },
1346b7134422SSumit Gupta { 0x0, 0x18, 0x2, 0, 0x00000000, 0, 0x00000000 },
1347b7134422SSumit Gupta { 0x0, 0x18, 0x3, 0, 0x00000000, 0, 0x00000000 },
1348b7134422SSumit Gupta { 0x1, 0x13, 0x0, 0, 0x40000000, 0, 0x40000000 },
1349b7134422SSumit Gupta { 0x1, 0x13, 0x1, 1, 0x80000000, 1, 0x80000000 },
1350b7134422SSumit Gupta { 0x1, 0x13, 0x2, 0, 0x00000000, 0, 0x00000000 },
1351b7134422SSumit Gupta { 0x2, 0x15, 0x0, 0, 0x20c00000, 8, 0x20c00000 },
1352b7134422SSumit Gupta { 0x2, 0x15, 0x1, 0, 0x21100000, 22, 0x21100000 },
1353b7134422SSumit Gupta { 0x2, 0x15, 0x2, 0, 0x20e00000, 9, 0x20e00000 },
1354b7134422SSumit Gupta { 0x2, 0x15, 0x3, 0, 0x21200000, 23, 0x21200000 },
1355b7134422SSumit Gupta { 0x2, 0x15, 0x4, 0, 0x20800000, 7, 0x20800000 },
1356b7134422SSumit Gupta { 0x2, 0x15, 0x5, 0, 0x21400000, 24, 0x21400000 },
1357b7134422SSumit Gupta { 0x2, 0x15, 0x6, 0, 0x0b000000, 18, 0x0b000000 },
1358b7134422SSumit Gupta { 0x2, 0x15, 0x7, 0, 0x0b800000, 3, 0x0b800000 },
1359b7134422SSumit Gupta { 0x2, 0x15, 0x8, 0, 0x20000000, 6, 0x20000000 },
1360b7134422SSumit Gupta { 0x2, 0x15, 0x9, 0, 0x21800000, 25, 0x21800000 },
1361b7134422SSumit Gupta { 0x2, 0x15, 0xa, 0, 0x0a000000, 2, 0x0a000000 },
1362b7134422SSumit Gupta { 0x2, 0x15, 0xb, 0, 0x0a000000, 17, 0x0a000000 },
1363b7134422SSumit Gupta { 0x2, 0x15, 0xc, 0, 0x20000000, 21, 0x20000000 },
1364b7134422SSumit Gupta { 0x2, 0x15, 0xd, 0, 0x21000000, 10, 0x21000000 },
1365b7134422SSumit Gupta { 0x2, 0x15, 0xe, 0, 0x08000000, 1, 0x08000000 },
1366b7134422SSumit Gupta { 0x2, 0x15, 0xf, 0, 0x08000000, 16, 0x08000000 },
1367b7134422SSumit Gupta { 0x2, 0x15, 0x10, 0, 0x22000000, 11, 0x22000000 },
1368b7134422SSumit Gupta { 0x2, 0x15, 0x11, 0, 0x22000000, 26, 0x22000000 },
1369b7134422SSumit Gupta { 0x2, 0x15, 0x12, 0, 0x0c000000, 4, 0x0c000000 },
1370b7134422SSumit Gupta { 0x2, 0x15, 0x13, 0, 0x0c000000, 19, 0x0c000000 },
1371b7134422SSumit Gupta { 0x2, 0x15, 0x14, 0, 0x24000000, 12, 0x24000000 },
1372b7134422SSumit Gupta { 0x2, 0x15, 0x15, 0, 0x24000000, 27, 0x24000000 },
1373b7134422SSumit Gupta { 0x2, 0x15, 0x16, 0, 0x00000000, 0, 0x00000000 },
1374b7134422SSumit Gupta { 0x2, 0x15, 0x17, 0, 0x00000000, 15, 0x00000000 },
1375b7134422SSumit Gupta { 0x2, 0x15, 0x18, 0, 0x28000000, 13, 0x28000000 },
1376b7134422SSumit Gupta { 0x2, 0x15, 0x19, 0, 0x28000000, 28, 0x28000000 },
1377b7134422SSumit Gupta { 0x2, 0x15, 0x1a, 0, 0x10000000, 5, 0x10000000 },
1378b7134422SSumit Gupta { 0x2, 0x15, 0x1b, 0, 0x10000000, 20, 0x10000000 },
1379b7134422SSumit Gupta { 0x2, 0x15, 0x1c, 0, 0x30000000, 14, 0x30000000 },
1380b7134422SSumit Gupta { 0x2, 0x15, 0x1d, 0, 0x30000000, 29, 0x30000000 },
1381b7134422SSumit Gupta { 0x2, 0x0, 0x0, 0, 0x0b000000, 0, 0x00000000 },
1382b7134422SSumit Gupta { 0x2, 0x0, 0x1, 0, 0x0b800000, 1, 0x00000000 },
1383b7134422SSumit Gupta { 0x2, 0x1, 0x0, 0, 0x20de0000, 3, 0x000e0000 },
1384b7134422SSumit Gupta { 0x2, 0x1, 0x1, 0, 0x210e0000, 7, 0x000e0000 },
1385b7134422SSumit Gupta { 0x2, 0x1, 0x2, 0, 0x20dc0000, 2, 0x000c0000 },
1386b7134422SSumit Gupta { 0x2, 0x1, 0x3, 0, 0x210c0000, 6, 0x000c0000 },
1387b7134422SSumit Gupta { 0x2, 0x1, 0x4, 0, 0x20d80000, 1, 0x00080000 },
1388b7134422SSumit Gupta { 0x2, 0x1, 0x5, 0, 0x21080000, 5, 0x00080000 },
1389b7134422SSumit Gupta { 0x2, 0x1, 0x6, 0, 0x20d00000, 0, 0x00000000 },
1390b7134422SSumit Gupta { 0x2, 0x1, 0x7, 0, 0x21000000, 4, 0x00000000 },
1391b7134422SSumit Gupta { 0x2, 0x2, 0x0, 0, 0x0b040000, 0, 0x00000000 },
1392b7134422SSumit Gupta { 0x2, 0x2, 0x1, 0, 0x0b840000, 1, 0x00000000 },
1393b7134422SSumit Gupta { 0x2, 0x3, 0x0, 0, 0x0b230000, 0, 0x00000000 },
1394b7134422SSumit Gupta { 0x2, 0x3, 0x1, 0, 0x0ba30000, 1, 0x00000000 },
1395b7134422SSumit Gupta { 0x2, 0x4, 0x0, 0, 0x0b050000, 0, 0x00000000 },
1396b7134422SSumit Gupta { 0x2, 0x4, 0x1, 0, 0x0b850000, 1, 0x00000000 },
1397b7134422SSumit Gupta { 0x2, 0x5, 0x0, 0, 0x0b060000, 0, 0x00000000 },
1398b7134422SSumit Gupta { 0x2, 0x5, 0x1, 0, 0x0b070000, 1, 0x00010000 },
1399b7134422SSumit Gupta { 0x2, 0x5, 0x2, 0, 0x0b080000, 2, 0x00020000 },
1400b7134422SSumit Gupta { 0x2, 0x5, 0x3, 0, 0x0b090000, 3, 0x00030000 },
1401b7134422SSumit Gupta { 0x2, 0x5, 0x4, 0, 0x0b0a0000, 4, 0x00040000 },
1402b7134422SSumit Gupta { 0x2, 0x5, 0x5, 0, 0x0b0b0000, 5, 0x00050000 },
1403b7134422SSumit Gupta { 0x2, 0x5, 0x6, 0, 0x0b0c0000, 6, 0x00060000 },
1404b7134422SSumit Gupta { 0x2, 0x5, 0x7, 0, 0x0b0d0000, 7, 0x00070000 },
1405b7134422SSumit Gupta { 0x2, 0x5, 0x8, 0, 0x0b0e0000, 8, 0x00080000 },
1406b7134422SSumit Gupta { 0x2, 0x5, 0x9, 0, 0x0b860000, 9, 0x00000000 },
1407b7134422SSumit Gupta { 0x2, 0x5, 0xa, 0, 0x0b870000, 10, 0x00010000 },
1408b7134422SSumit Gupta { 0x2, 0x5, 0xb, 0, 0x0b880000, 11, 0x00020000 },
1409b7134422SSumit Gupta { 0x2, 0x5, 0xc, 0, 0x0b890000, 12, 0x00030000 },
1410b7134422SSumit Gupta { 0x2, 0x5, 0xd, 0, 0x0b8a0000, 13, 0x00040000 },
1411b7134422SSumit Gupta { 0x2, 0x5, 0xe, 0, 0x0b8b0000, 14, 0x00050000 },
1412b7134422SSumit Gupta { 0x2, 0x5, 0xf, 0, 0x0b8c0000, 15, 0x00060000 },
1413b7134422SSumit Gupta { 0x2, 0x5, 0x10, 0, 0x0b8d0000, 16, 0x00070000 },
1414b7134422SSumit Gupta { 0x2, 0x5, 0x11, 0, 0x0b8e0000, 17, 0x00080000 },
1415b7134422SSumit Gupta { 0x2, 0x6, 0x0, 0, 0x0b650000, 0, 0x00000000 },
1416b7134422SSumit Gupta { 0x2, 0x6, 0x1, 0, 0x0be50000, 1, 0x00000000 },
1417b7134422SSumit Gupta { 0x2, 0x7, 0x0, 0, 0x20df0000, 0, 0x00000000 },
1418b7134422SSumit Gupta { 0x2, 0x7, 0x1, 0, 0x210f0000, 1, 0x00000000 },
1419b7134422SSumit Gupta { 0x2, 0x8, 0x0, 0, 0x0b3e0000, 0, 0x00000000 },
1420b7134422SSumit Gupta { 0x2, 0x8, 0x1, 0, 0x0bbe0000, 1, 0x00000000 },
1421b7134422SSumit Gupta { 0x2, 0x9, 0x0, 0, 0x0b3d0000, 0, 0x00000000 },
1422b7134422SSumit Gupta { 0x2, 0x9, 0x1, 0, 0x0bbd0000, 1, 0x00000000 },
1423b7134422SSumit Gupta { 0x2, 0xa, 0x0, 0, 0x0b1e0000, 0, 0x00000000 },
1424b7134422SSumit Gupta { 0x2, 0xa, 0x1, 0, 0x0b9e0000, 1, 0x00000000 },
1425b7134422SSumit Gupta { 0x2, 0xb, 0x0, 0, 0x0b150000, 0, 0x00000000 },
1426b7134422SSumit Gupta { 0x2, 0xb, 0x1, 0, 0x0b160000, 1, 0x00010000 },
1427b7134422SSumit Gupta { 0x2, 0xb, 0x2, 0, 0x0b170000, 2, 0x00020000 },
1428b7134422SSumit Gupta { 0x2, 0xb, 0x3, 0, 0x0b180000, 3, 0x00030000 },
1429b7134422SSumit Gupta { 0x2, 0xb, 0x4, 0, 0x0b190000, 4, 0x00040000 },
1430b7134422SSumit Gupta { 0x2, 0xb, 0x5, 0, 0x0b1a0000, 5, 0x00050000 },
1431b7134422SSumit Gupta { 0x2, 0xb, 0x6, 0, 0x0b1b0000, 6, 0x00060000 },
1432b7134422SSumit Gupta { 0x2, 0xb, 0x7, 0, 0x0b1c0000, 7, 0x00070000 },
1433b7134422SSumit Gupta { 0x2, 0xb, 0x8, 0, 0x0b1d0000, 8, 0x00080000 },
1434b7134422SSumit Gupta { 0x2, 0xb, 0x9, 0, 0x0b950000, 9, 0x00000000 },
1435b7134422SSumit Gupta { 0x2, 0xb, 0xa, 0, 0x0b960000, 10, 0x00010000 },
1436b7134422SSumit Gupta { 0x2, 0xb, 0xb, 0, 0x0b970000, 11, 0x00020000 },
1437b7134422SSumit Gupta { 0x2, 0xb, 0xc, 0, 0x0b980000, 12, 0x00030000 },
1438b7134422SSumit Gupta { 0x2, 0xb, 0xd, 0, 0x0b990000, 13, 0x00040000 },
1439b7134422SSumit Gupta { 0x2, 0xb, 0xe, 0, 0x0b9a0000, 14, 0x00050000 },
1440b7134422SSumit Gupta { 0x2, 0xb, 0xf, 0, 0x0b9b0000, 15, 0x00060000 },
1441b7134422SSumit Gupta { 0x2, 0xb, 0x10, 0, 0x0b9c0000, 16, 0x00070000 },
1442b7134422SSumit Gupta { 0x2, 0xb, 0x11, 0, 0x0b9d0000, 17, 0x00080000 },
1443b7134422SSumit Gupta { 0x2, 0xc, 0x0, 0, 0x0b660000, 0, 0x00000000 },
1444b7134422SSumit Gupta { 0x2, 0xc, 0x1, 0, 0x0be60000, 1, 0x00000000 },
1445b7134422SSumit Gupta { 0x2, 0xd, 0x0, 0, 0x0b1f0000, 0, 0x00000000 },
1446b7134422SSumit Gupta { 0x2, 0xd, 0x1, 0, 0x0b200000, 1, 0x00010000 },
1447b7134422SSumit Gupta { 0x2, 0xd, 0x2, 0, 0x0b210000, 2, 0x00020000 },
1448b7134422SSumit Gupta { 0x2, 0xd, 0x3, 0, 0x0b220000, 3, 0x00030000 },
1449b7134422SSumit Gupta { 0x2, 0xd, 0x4, 0, 0x0b9f0000, 4, 0x00000000 },
1450b7134422SSumit Gupta { 0x2, 0xd, 0x5, 0, 0x0ba00000, 5, 0x00010000 },
1451b7134422SSumit Gupta { 0x2, 0xd, 0x6, 0, 0x0ba10000, 6, 0x00020000 },
1452b7134422SSumit Gupta { 0x2, 0xd, 0x7, 0, 0x0ba20000, 7, 0x00030000 },
1453b7134422SSumit Gupta { 0x2, 0xe, 0x0, 0, 0x0b0f0000, 0, 0x00000000 },
1454b7134422SSumit Gupta { 0x2, 0xe, 0x1, 0, 0x0b100000, 1, 0x00010000 },
1455b7134422SSumit Gupta { 0x2, 0xe, 0x2, 0, 0x0b110000, 2, 0x00020000 },
1456b7134422SSumit Gupta { 0x2, 0xe, 0x3, 0, 0x0b120000, 3, 0x00030000 },
1457b7134422SSumit Gupta { 0x2, 0xe, 0x4, 0, 0x0b130000, 4, 0x00040000 },
1458b7134422SSumit Gupta { 0x2, 0xe, 0x5, 0, 0x0b140000, 5, 0x00050000 },
1459b7134422SSumit Gupta { 0x2, 0xe, 0x6, 0, 0x0b8f0000, 6, 0x00000000 },
1460b7134422SSumit Gupta { 0x2, 0xe, 0x7, 0, 0x0b900000, 7, 0x00010000 },
1461b7134422SSumit Gupta { 0x2, 0xe, 0x8, 0, 0x0b910000, 8, 0x00020000 },
1462b7134422SSumit Gupta { 0x2, 0xe, 0x9, 0, 0x0b920000, 9, 0x00030000 },
1463b7134422SSumit Gupta { 0x2, 0xe, 0xa, 0, 0x0b930000, 10, 0x00040000 },
1464b7134422SSumit Gupta { 0x2, 0xe, 0xb, 0, 0x0b940000, 11, 0x00050000 },
1465b7134422SSumit Gupta { 0x2, 0x10, 0x0, 0, 0x0b240000, 0, 0x00000000 },
1466b7134422SSumit Gupta { 0x2, 0x10, 0x1, 0, 0x0ba40000, 1, 0x00000000 },
1467b7134422SSumit Gupta { 0x2, 0x11, 0x0, 0, 0x0b020000, 0, 0x00000000 },
1468b7134422SSumit Gupta { 0x2, 0x11, 0x1, 0, 0x0b820000, 1, 0x00000000 },
1469b7134422SSumit Gupta { 0x2, 0x12, 0x0, 0, 0x0b030000, 0, 0x00000000 },
1470b7134422SSumit Gupta { 0x2, 0x12, 0x1, 0, 0x0b830000, 1, 0x00000000 },
1471b7134422SSumit Gupta { 0x2, 0x17, 0x0, 0, 0x0b640000, 0, 0x00000000 },
1472b7134422SSumit Gupta { 0x2, 0x17, 0x1, 0, 0x0be40000, 1, 0x00000000 },
1473b7134422SSumit Gupta { 0x2, 0x18, 0x0, 0, 0x0b600000, 0, 0x00000000 },
1474b7134422SSumit Gupta { 0x2, 0x18, 0x1, 0, 0x0be00000, 1, 0x00000000 },
1475b7134422SSumit Gupta { 0x2, 0x18, 0x2, 0, 0x00000000, 0, 0x00000000 },
1476b7134422SSumit Gupta { 0x2, 0x18, 0x3, 0, 0x00000000, 0, 0x00000000 },
1477b7134422SSumit Gupta { 0x3, 0x14, 0x0, 0, 0x40000000, 0, 0x40000000 },
1478b7134422SSumit Gupta { 0x3, 0x14, 0x1, 1, 0x80000000, 1, 0x80000000 },
1479b7134422SSumit Gupta { 0x3, 0x16, 0x0, 2, 0x0b400000, 0, 0x0b400000 },
1480b7134422SSumit Gupta { 0x3, 0x16, 0x1, 2, 0x0bc00000, 1, 0x0bc00000 },
1481b7134422SSumit Gupta { 0x3, 0x16, 0x2, 0, 0x00000000, 0, 0x00000000 },
1482b7134422SSumit Gupta { 0x3, 0x16, 0x3, 0, 0x00000000, 0, 0x00000000 },
1483b7134422SSumit Gupta { 0x4, 0x15, 0x0, 0, 0x20c00000, 8, 0x20c00000 },
1484b7134422SSumit Gupta { 0x4, 0x15, 0x1, 0, 0x21100000, 22, 0x21100000 },
1485b7134422SSumit Gupta { 0x4, 0x15, 0x2, 0, 0x20e00000, 9, 0x20e00000 },
1486b7134422SSumit Gupta { 0x4, 0x15, 0x3, 0, 0x21200000, 23, 0x21200000 },
1487b7134422SSumit Gupta { 0x4, 0x15, 0x4, 0, 0x20800000, 7, 0x20800000 },
1488b7134422SSumit Gupta { 0x4, 0x15, 0x5, 0, 0x21400000, 24, 0x21400000 },
1489b7134422SSumit Gupta { 0x4, 0x15, 0x6, 0, 0x0b000000, 18, 0x0b000000 },
1490b7134422SSumit Gupta { 0x4, 0x15, 0x7, 0, 0x0b800000, 3, 0x0b800000 },
1491b7134422SSumit Gupta { 0x4, 0x15, 0x8, 0, 0x20000000, 6, 0x20000000 },
1492b7134422SSumit Gupta { 0x4, 0x15, 0x9, 0, 0x21800000, 25, 0x21800000 },
1493b7134422SSumit Gupta { 0x4, 0x15, 0xa, 0, 0x0a000000, 2, 0x0a000000 },
1494b7134422SSumit Gupta { 0x4, 0x15, 0xb, 0, 0x0a000000, 17, 0x0a000000 },
1495b7134422SSumit Gupta { 0x4, 0x15, 0xc, 0, 0x20000000, 21, 0x20000000 },
1496b7134422SSumit Gupta { 0x4, 0x15, 0xd, 0, 0x21000000, 10, 0x21000000 },
1497b7134422SSumit Gupta { 0x4, 0x15, 0xe, 0, 0x08000000, 1, 0x08000000 },
1498b7134422SSumit Gupta { 0x4, 0x15, 0xf, 0, 0x08000000, 16, 0x08000000 },
1499b7134422SSumit Gupta { 0x4, 0x15, 0x10, 0, 0x22000000, 11, 0x22000000 },
1500b7134422SSumit Gupta { 0x4, 0x15, 0x11, 0, 0x22000000, 26, 0x22000000 },
1501b7134422SSumit Gupta { 0x4, 0x15, 0x12, 0, 0x0c000000, 4, 0x0c000000 },
1502b7134422SSumit Gupta { 0x4, 0x15, 0x13, 0, 0x0c000000, 19, 0x0c000000 },
1503b7134422SSumit Gupta { 0x4, 0x15, 0x14, 0, 0x24000000, 12, 0x24000000 },
1504b7134422SSumit Gupta { 0x4, 0x15, 0x15, 0, 0x24000000, 27, 0x24000000 },
1505b7134422SSumit Gupta { 0x4, 0x15, 0x16, 0, 0x00000000, 0, 0x00000000 },
1506b7134422SSumit Gupta { 0x4, 0x15, 0x17, 0, 0x00000000, 15, 0x00000000 },
1507b7134422SSumit Gupta { 0x4, 0x15, 0x18, 0, 0x28000000, 13, 0x28000000 },
1508b7134422SSumit Gupta { 0x4, 0x15, 0x19, 0, 0x28000000, 28, 0x28000000 },
1509b7134422SSumit Gupta { 0x4, 0x15, 0x1a, 0, 0x10000000, 5, 0x10000000 },
1510b7134422SSumit Gupta { 0x4, 0x15, 0x1b, 0, 0x10000000, 20, 0x10000000 },
1511b7134422SSumit Gupta { 0x4, 0x15, 0x1c, 0, 0x30000000, 14, 0x30000000 },
1512b7134422SSumit Gupta { 0x4, 0x15, 0x1d, 0, 0x30000000, 29, 0x30000000 },
1513b7134422SSumit Gupta { 0x4, 0x0, 0x0, 0, 0x0b000000, 0, 0x00000000 },
1514b7134422SSumit Gupta { 0x4, 0x0, 0x1, 0, 0x0b800000, 1, 0x00000000 },
1515b7134422SSumit Gupta { 0x4, 0x1, 0x0, 0, 0x20de0000, 3, 0x000e0000 },
1516b7134422SSumit Gupta { 0x4, 0x1, 0x1, 0, 0x210e0000, 7, 0x000e0000 },
1517b7134422SSumit Gupta { 0x4, 0x1, 0x2, 0, 0x20dc0000, 2, 0x000c0000 },
1518b7134422SSumit Gupta { 0x4, 0x1, 0x3, 0, 0x210c0000, 6, 0x000c0000 },
1519b7134422SSumit Gupta { 0x4, 0x1, 0x4, 0, 0x20d80000, 1, 0x00080000 },
1520b7134422SSumit Gupta { 0x4, 0x1, 0x5, 0, 0x21080000, 5, 0x00080000 },
1521b7134422SSumit Gupta { 0x4, 0x1, 0x6, 0, 0x20d00000, 0, 0x00000000 },
1522b7134422SSumit Gupta { 0x4, 0x1, 0x7, 0, 0x21000000, 4, 0x00000000 },
1523b7134422SSumit Gupta { 0x4, 0x2, 0x0, 0, 0x0b040000, 0, 0x00000000 },
1524b7134422SSumit Gupta { 0x4, 0x2, 0x1, 0, 0x0b840000, 1, 0x00000000 },
1525b7134422SSumit Gupta { 0x4, 0x3, 0x0, 0, 0x0b230000, 0, 0x00000000 },
1526b7134422SSumit Gupta { 0x4, 0x3, 0x1, 0, 0x0ba30000, 1, 0x00000000 },
1527b7134422SSumit Gupta { 0x4, 0x4, 0x0, 0, 0x0b050000, 0, 0x00000000 },
1528b7134422SSumit Gupta { 0x4, 0x4, 0x1, 0, 0x0b850000, 1, 0x00000000 },
1529b7134422SSumit Gupta { 0x4, 0x5, 0x0, 0, 0x0b060000, 0, 0x00000000 },
1530b7134422SSumit Gupta { 0x4, 0x5, 0x1, 0, 0x0b070000, 1, 0x00010000 },
1531b7134422SSumit Gupta { 0x4, 0x5, 0x2, 0, 0x0b080000, 2, 0x00020000 },
1532b7134422SSumit Gupta { 0x4, 0x5, 0x3, 0, 0x0b090000, 3, 0x00030000 },
1533b7134422SSumit Gupta { 0x4, 0x5, 0x4, 0, 0x0b0a0000, 4, 0x00040000 },
1534b7134422SSumit Gupta { 0x4, 0x5, 0x5, 0, 0x0b0b0000, 5, 0x00050000 },
1535b7134422SSumit Gupta { 0x4, 0x5, 0x6, 0, 0x0b0c0000, 6, 0x00060000 },
1536b7134422SSumit Gupta { 0x4, 0x5, 0x7, 0, 0x0b0d0000, 7, 0x00070000 },
1537b7134422SSumit Gupta { 0x4, 0x5, 0x8, 0, 0x0b0e0000, 8, 0x00080000 },
1538b7134422SSumit Gupta { 0x4, 0x5, 0x9, 0, 0x0b860000, 9, 0x00000000 },
1539b7134422SSumit Gupta { 0x4, 0x5, 0xa, 0, 0x0b870000, 10, 0x00010000 },
1540b7134422SSumit Gupta { 0x4, 0x5, 0xb, 0, 0x0b880000, 11, 0x00020000 },
1541b7134422SSumit Gupta { 0x4, 0x5, 0xc, 0, 0x0b890000, 12, 0x00030000 },
1542b7134422SSumit Gupta { 0x4, 0x5, 0xd, 0, 0x0b8a0000, 13, 0x00040000 },
1543b7134422SSumit Gupta { 0x4, 0x5, 0xe, 0, 0x0b8b0000, 14, 0x00050000 },
1544b7134422SSumit Gupta { 0x4, 0x5, 0xf, 0, 0x0b8c0000, 15, 0x00060000 },
1545b7134422SSumit Gupta { 0x4, 0x5, 0x10, 0, 0x0b8d0000, 16, 0x00070000 },
1546b7134422SSumit Gupta { 0x4, 0x5, 0x11, 0, 0x0b8e0000, 17, 0x00080000 },
1547b7134422SSumit Gupta { 0x4, 0x6, 0x0, 0, 0x0b650000, 0, 0x00000000 },
1548b7134422SSumit Gupta { 0x4, 0x6, 0x1, 0, 0x0be50000, 1, 0x00000000 },
1549b7134422SSumit Gupta { 0x4, 0x7, 0x0, 0, 0x20df0000, 0, 0x00000000 },
1550b7134422SSumit Gupta { 0x4, 0x7, 0x1, 0, 0x210f0000, 1, 0x00000000 },
1551b7134422SSumit Gupta { 0x4, 0x8, 0x0, 0, 0x0b3e0000, 0, 0x00000000 },
1552b7134422SSumit Gupta { 0x4, 0x8, 0x1, 0, 0x0bbe0000, 1, 0x00000000 },
1553b7134422SSumit Gupta { 0x4, 0x9, 0x0, 0, 0x0b3d0000, 0, 0x00000000 },
1554b7134422SSumit Gupta { 0x4, 0x9, 0x1, 0, 0x0bbd0000, 1, 0x00000000 },
1555b7134422SSumit Gupta { 0x4, 0xa, 0x0, 0, 0x0b1e0000, 0, 0x00000000 },
1556b7134422SSumit Gupta { 0x4, 0xa, 0x1, 0, 0x0b9e0000, 1, 0x00000000 },
1557b7134422SSumit Gupta { 0x4, 0xb, 0x0, 0, 0x0b150000, 0, 0x00000000 },
1558b7134422SSumit Gupta { 0x4, 0xb, 0x1, 0, 0x0b160000, 1, 0x00010000 },
1559b7134422SSumit Gupta { 0x4, 0xb, 0x2, 0, 0x0b170000, 2, 0x00020000 },
1560b7134422SSumit Gupta { 0x4, 0xb, 0x3, 0, 0x0b180000, 3, 0x00030000 },
1561b7134422SSumit Gupta { 0x4, 0xb, 0x4, 0, 0x0b190000, 4, 0x00040000 },
1562b7134422SSumit Gupta { 0x4, 0xb, 0x5, 0, 0x0b1a0000, 5, 0x00050000 },
1563b7134422SSumit Gupta { 0x4, 0xb, 0x6, 0, 0x0b1b0000, 6, 0x00060000 },
1564b7134422SSumit Gupta { 0x4, 0xb, 0x7, 0, 0x0b1c0000, 7, 0x00070000 },
1565b7134422SSumit Gupta { 0x4, 0xb, 0x8, 0, 0x0b1d0000, 8, 0x00080000 },
1566b7134422SSumit Gupta { 0x4, 0xb, 0x9, 0, 0x0b950000, 9, 0x00000000 },
1567b7134422SSumit Gupta { 0x4, 0xb, 0xa, 0, 0x0b960000, 10, 0x00010000 },
1568b7134422SSumit Gupta { 0x4, 0xb, 0xb, 0, 0x0b970000, 11, 0x00020000 },
1569b7134422SSumit Gupta { 0x4, 0xb, 0xc, 0, 0x0b980000, 12, 0x00030000 },
1570b7134422SSumit Gupta { 0x4, 0xb, 0xd, 0, 0x0b990000, 13, 0x00040000 },
1571b7134422SSumit Gupta { 0x4, 0xb, 0xe, 0, 0x0b9a0000, 14, 0x00050000 },
1572b7134422SSumit Gupta { 0x4, 0xb, 0xf, 0, 0x0b9b0000, 15, 0x00060000 },
1573b7134422SSumit Gupta { 0x4, 0xb, 0x10, 0, 0x0b9c0000, 16, 0x00070000 },
1574b7134422SSumit Gupta { 0x4, 0xb, 0x11, 0, 0x0b9d0000, 17, 0x00080000 },
1575b7134422SSumit Gupta { 0x4, 0xc, 0x0, 0, 0x0b660000, 0, 0x00000000 },
1576b7134422SSumit Gupta { 0x4, 0xc, 0x1, 0, 0x0be60000, 1, 0x00000000 },
1577b7134422SSumit Gupta { 0x4, 0xd, 0x0, 0, 0x0b1f0000, 0, 0x00000000 },
1578b7134422SSumit Gupta { 0x4, 0xd, 0x1, 0, 0x0b200000, 1, 0x00010000 },
1579b7134422SSumit Gupta { 0x4, 0xd, 0x2, 0, 0x0b210000, 2, 0x00020000 },
1580b7134422SSumit Gupta { 0x4, 0xd, 0x3, 0, 0x0b220000, 3, 0x00030000 },
1581b7134422SSumit Gupta { 0x4, 0xd, 0x4, 0, 0x0b9f0000, 4, 0x00000000 },
1582b7134422SSumit Gupta { 0x4, 0xd, 0x5, 0, 0x0ba00000, 5, 0x00010000 },
1583b7134422SSumit Gupta { 0x4, 0xd, 0x6, 0, 0x0ba10000, 6, 0x00020000 },
1584b7134422SSumit Gupta { 0x4, 0xd, 0x7, 0, 0x0ba20000, 7, 0x00030000 },
1585b7134422SSumit Gupta { 0x4, 0xe, 0x0, 0, 0x0b0f0000, 0, 0x00000000 },
1586b7134422SSumit Gupta { 0x4, 0xe, 0x1, 0, 0x0b100000, 1, 0x00010000 },
1587b7134422SSumit Gupta { 0x4, 0xe, 0x2, 0, 0x0b110000, 2, 0x00020000 },
1588b7134422SSumit Gupta { 0x4, 0xe, 0x3, 0, 0x0b120000, 3, 0x00030000 },
1589b7134422SSumit Gupta { 0x4, 0xe, 0x4, 0, 0x0b130000, 4, 0x00040000 },
1590b7134422SSumit Gupta { 0x4, 0xe, 0x5, 0, 0x0b140000, 5, 0x00050000 },
1591b7134422SSumit Gupta { 0x4, 0xe, 0x6, 0, 0x0b8f0000, 6, 0x00000000 },
1592b7134422SSumit Gupta { 0x4, 0xe, 0x7, 0, 0x0b900000, 7, 0x00010000 },
1593b7134422SSumit Gupta { 0x4, 0xe, 0x8, 0, 0x0b910000, 8, 0x00020000 },
1594b7134422SSumit Gupta { 0x4, 0xe, 0x9, 0, 0x0b920000, 9, 0x00030000 },
1595b7134422SSumit Gupta { 0x4, 0xe, 0xa, 0, 0x0b930000, 10, 0x00040000 },
1596b7134422SSumit Gupta { 0x4, 0xe, 0xb, 0, 0x0b940000, 11, 0x00050000 },
1597b7134422SSumit Gupta { 0x4, 0x10, 0x0, 0, 0x0b240000, 0, 0x00000000 },
1598b7134422SSumit Gupta { 0x4, 0x10, 0x1, 0, 0x0ba40000, 1, 0x00000000 },
1599b7134422SSumit Gupta { 0x4, 0x11, 0x0, 0, 0x0b020000, 0, 0x00000000 },
1600b7134422SSumit Gupta { 0x4, 0x11, 0x1, 0, 0x0b820000, 1, 0x00000000 },
1601b7134422SSumit Gupta { 0x4, 0x12, 0x0, 0, 0x0b030000, 0, 0x00000000 },
1602b7134422SSumit Gupta { 0x4, 0x12, 0x1, 0, 0x0b830000, 1, 0x00000000 },
1603b7134422SSumit Gupta { 0x4, 0x17, 0x0, 0, 0x0b640000, 0, 0x00000000 },
1604b7134422SSumit Gupta { 0x4, 0x17, 0x1, 0, 0x0be40000, 1, 0x00000000 },
1605b7134422SSumit Gupta { 0x4, 0x18, 0x0, 0, 0x0b600000, 0, 0x00000000 },
1606b7134422SSumit Gupta { 0x4, 0x18, 0x1, 0, 0x0be00000, 1, 0x00000000 },
1607b7134422SSumit Gupta { 0x4, 0x18, 0x2, 0, 0x00000000, 0, 0x00000000 },
1608b7134422SSumit Gupta { 0x4, 0x18, 0x3, 0, 0x00000000, 0, 0x00000000 }
1609b7134422SSumit Gupta };
1610b7134422SSumit Gupta
cbbcentralnoc_parse_routeid(struct tegra194_cbb_aperture * info,u64 routeid)1611b7134422SSumit Gupta static void cbbcentralnoc_parse_routeid(struct tegra194_cbb_aperture *info, u64 routeid)
1612b7134422SSumit Gupta {
1613b7134422SSumit Gupta info->initflow = FIELD_GET(CBB_NOC_INITFLOW, routeid);
1614b7134422SSumit Gupta info->targflow = FIELD_GET(CBB_NOC_TARGFLOW, routeid);
1615b7134422SSumit Gupta info->targ_subrange = FIELD_GET(CBB_NOC_TARG_SUBRANGE, routeid);
1616b7134422SSumit Gupta info->seqid = FIELD_GET(CBB_NOC_SEQID, routeid);
1617b7134422SSumit Gupta }
1618b7134422SSumit Gupta
bpmpnoc_parse_routeid(struct tegra194_cbb_aperture * info,u64 routeid)1619b7134422SSumit Gupta static void bpmpnoc_parse_routeid(struct tegra194_cbb_aperture *info, u64 routeid)
1620b7134422SSumit Gupta {
1621b7134422SSumit Gupta info->initflow = FIELD_GET(BPMP_NOC_INITFLOW, routeid);
1622b7134422SSumit Gupta info->targflow = FIELD_GET(BPMP_NOC_TARGFLOW, routeid);
1623b7134422SSumit Gupta info->targ_subrange = FIELD_GET(BPMP_NOC_TARG_SUBRANGE, routeid);
1624b7134422SSumit Gupta info->seqid = FIELD_GET(BPMP_NOC_SEQID, routeid);
1625b7134422SSumit Gupta }
1626b7134422SSumit Gupta
aonnoc_parse_routeid(struct tegra194_cbb_aperture * info,u64 routeid)1627b7134422SSumit Gupta static void aonnoc_parse_routeid(struct tegra194_cbb_aperture *info, u64 routeid)
1628b7134422SSumit Gupta {
1629b7134422SSumit Gupta info->initflow = FIELD_GET(AON_NOC_INITFLOW, routeid);
1630b7134422SSumit Gupta info->targflow = FIELD_GET(AON_NOC_TARGFLOW, routeid);
1631b7134422SSumit Gupta info->targ_subrange = FIELD_GET(AON_NOC_TARG_SUBRANGE, routeid);
1632b7134422SSumit Gupta info->seqid = FIELD_GET(AON_NOC_SEQID, routeid);
1633b7134422SSumit Gupta }
1634b7134422SSumit Gupta
scenoc_parse_routeid(struct tegra194_cbb_aperture * info,u64 routeid)1635b7134422SSumit Gupta static void scenoc_parse_routeid(struct tegra194_cbb_aperture *info, u64 routeid)
1636b7134422SSumit Gupta {
1637b7134422SSumit Gupta info->initflow = FIELD_GET(SCE_NOC_INITFLOW, routeid);
1638b7134422SSumit Gupta info->targflow = FIELD_GET(SCE_NOC_TARGFLOW, routeid);
1639b7134422SSumit Gupta info->targ_subrange = FIELD_GET(SCE_NOC_TARG_SUBRANGE, routeid);
1640b7134422SSumit Gupta info->seqid = FIELD_GET(SCE_NOC_SEQID, routeid);
1641b7134422SSumit Gupta }
1642b7134422SSumit Gupta
cbbcentralnoc_parse_userbits(struct tegra194_cbb_userbits * usrbits,u32 elog_5)1643b7134422SSumit Gupta static void cbbcentralnoc_parse_userbits(struct tegra194_cbb_userbits *usrbits, u32 elog_5)
1644b7134422SSumit Gupta {
1645b7134422SSumit Gupta usrbits->axcache = FIELD_GET(CBB_NOC_AXCACHE, elog_5);
1646b7134422SSumit Gupta usrbits->non_mod = FIELD_GET(CBB_NOC_NON_MOD, elog_5);
1647b7134422SSumit Gupta usrbits->axprot = FIELD_GET(CBB_NOC_AXPROT, elog_5);
1648b7134422SSumit Gupta usrbits->falconsec = FIELD_GET(CBB_NOC_FALCONSEC, elog_5);
1649b7134422SSumit Gupta usrbits->grpsec = FIELD_GET(CBB_NOC_GRPSEC, elog_5);
1650b7134422SSumit Gupta usrbits->vqc = FIELD_GET(CBB_NOC_VQC, elog_5);
1651b7134422SSumit Gupta usrbits->mstr_id = FIELD_GET(CBB_NOC_MSTR_ID, elog_5) - 1;
1652b7134422SSumit Gupta usrbits->axi_id = FIELD_GET(CBB_NOC_AXI_ID, elog_5);
1653b7134422SSumit Gupta }
1654b7134422SSumit Gupta
clusternoc_parse_userbits(struct tegra194_cbb_userbits * usrbits,u32 elog_5)1655b7134422SSumit Gupta static void clusternoc_parse_userbits(struct tegra194_cbb_userbits *usrbits, u32 elog_5)
1656b7134422SSumit Gupta {
1657b7134422SSumit Gupta usrbits->axcache = FIELD_GET(CLUSTER_NOC_AXCACHE, elog_5);
1658b7134422SSumit Gupta usrbits->axprot = FIELD_GET(CLUSTER_NOC_AXCACHE, elog_5);
1659b7134422SSumit Gupta usrbits->falconsec = FIELD_GET(CLUSTER_NOC_FALCONSEC, elog_5);
1660b7134422SSumit Gupta usrbits->grpsec = FIELD_GET(CLUSTER_NOC_GRPSEC, elog_5);
1661b7134422SSumit Gupta usrbits->vqc = FIELD_GET(CLUSTER_NOC_VQC, elog_5);
1662b7134422SSumit Gupta usrbits->mstr_id = FIELD_GET(CLUSTER_NOC_MSTR_ID, elog_5) - 1;
1663b7134422SSumit Gupta }
1664b7134422SSumit Gupta
tegra194_cbb_fault_enable(struct tegra_cbb * cbb)1665b7134422SSumit Gupta static void tegra194_cbb_fault_enable(struct tegra_cbb *cbb)
1666b7134422SSumit Gupta {
1667b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(cbb);
1668b7134422SSumit Gupta
1669b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_0_FAULTEN_0);
1670b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_1_FAULTEN_0);
1671b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_2_FAULTEN_0);
1672b7134422SSumit Gupta }
1673b7134422SSumit Gupta
tegra194_cbb_stall_enable(struct tegra_cbb * cbb)1674b7134422SSumit Gupta static void tegra194_cbb_stall_enable(struct tegra_cbb *cbb)
1675b7134422SSumit Gupta {
1676b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(cbb);
1677b7134422SSumit Gupta
1678b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_0_STALLEN_0);
1679b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_1_STALLEN_0);
1680b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_2_STALLEN_0);
1681b7134422SSumit Gupta }
1682b7134422SSumit Gupta
tegra194_cbb_error_clear(struct tegra_cbb * cbb)1683b7134422SSumit Gupta static void tegra194_cbb_error_clear(struct tegra_cbb *cbb)
1684b7134422SSumit Gupta {
1685b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(cbb);
1686b7134422SSumit Gupta
1687b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_0_ERRCLR_0);
1688b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_1_ERRCLR_0);
1689b7134422SSumit Gupta writel(1, priv->regs + ERRLOGGER_2_ERRCLR_0);
1690b7134422SSumit Gupta dsb(sy);
1691b7134422SSumit Gupta }
1692b7134422SSumit Gupta
tegra194_cbb_get_status(struct tegra_cbb * cbb)1693b7134422SSumit Gupta static u32 tegra194_cbb_get_status(struct tegra_cbb *cbb)
1694b7134422SSumit Gupta {
1695b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(cbb);
1696b7134422SSumit Gupta u32 value;
1697b7134422SSumit Gupta
1698b7134422SSumit Gupta value = readl(priv->regs + ERRLOGGER_0_ERRVLD_0);
1699b7134422SSumit Gupta value |= (readl(priv->regs + ERRLOGGER_1_ERRVLD_0) << 1);
1700b7134422SSumit Gupta value |= (readl(priv->regs + ERRLOGGER_2_ERRVLD_0) << 2);
1701b7134422SSumit Gupta
1702b7134422SSumit Gupta dsb(sy);
1703b7134422SSumit Gupta return value;
1704b7134422SSumit Gupta }
1705b7134422SSumit Gupta
tegra194_axi2apb_status(void __iomem * addr)1706b7134422SSumit Gupta static u32 tegra194_axi2apb_status(void __iomem *addr)
1707b7134422SSumit Gupta {
1708b7134422SSumit Gupta u32 value;
1709b7134422SSumit Gupta
1710b7134422SSumit Gupta value = readl(addr + DMAAPB_X_RAW_INTERRUPT_STATUS);
1711b7134422SSumit Gupta writel(0xffffffff, addr + DMAAPB_X_RAW_INTERRUPT_STATUS);
1712b7134422SSumit Gupta
1713b7134422SSumit Gupta return value;
1714b7134422SSumit Gupta }
1715b7134422SSumit Gupta
tegra194_axi2apb_fatal(struct seq_file * file,unsigned int bridge,u32 status)1716b7134422SSumit Gupta static bool tegra194_axi2apb_fatal(struct seq_file *file, unsigned int bridge, u32 status)
1717b7134422SSumit Gupta {
1718b7134422SSumit Gupta bool is_fatal = true;
1719b7134422SSumit Gupta size_t i;
1720b7134422SSumit Gupta
1721b7134422SSumit Gupta for (i = 0; i < ARRAY_SIZE(tegra194_axi2apb_error); i++) {
1722b7134422SSumit Gupta if (status & BIT(i)) {
1723b7134422SSumit Gupta tegra_cbb_print_err(file, "\t AXI2APB_%d bridge error: %s\n",
1724b7134422SSumit Gupta bridge + 1, tegra194_axi2apb_error[i]);
1725b7134422SSumit Gupta if (strstr(tegra194_axi2apb_error[i], "Firewall"))
1726b7134422SSumit Gupta is_fatal = false;
1727b7134422SSumit Gupta }
1728b7134422SSumit Gupta }
1729b7134422SSumit Gupta
1730b7134422SSumit Gupta return is_fatal;
1731b7134422SSumit Gupta }
1732b7134422SSumit Gupta
1733b7134422SSumit Gupta /*
1734b7134422SSumit Gupta * Fetch InitlocalAddress from NOC Aperture lookup table
1735b7134422SSumit Gupta * using Targflow, Targsubrange
1736b7134422SSumit Gupta */
get_init_localaddress(const struct tegra194_cbb_aperture * info,const struct tegra194_cbb_aperture * aper,unsigned int max)1737b7134422SSumit Gupta static u32 get_init_localaddress(const struct tegra194_cbb_aperture *info,
1738b7134422SSumit Gupta const struct tegra194_cbb_aperture *aper, unsigned int max)
1739b7134422SSumit Gupta {
1740b7134422SSumit Gupta unsigned int t_f = 0, t_sr = 0;
1741b7134422SSumit Gupta u32 addr = 0;
1742b7134422SSumit Gupta
1743b7134422SSumit Gupta for (t_f = 0; t_f < max; t_f++) {
1744b7134422SSumit Gupta if (aper[t_f].targflow == info->targflow) {
1745b7134422SSumit Gupta t_sr = t_f;
1746b7134422SSumit Gupta
1747b7134422SSumit Gupta do {
1748b7134422SSumit Gupta if (aper[t_sr].targ_subrange == info->targ_subrange) {
1749b7134422SSumit Gupta addr = aper[t_sr].init_localaddress;
1750b7134422SSumit Gupta return addr;
1751b7134422SSumit Gupta }
1752b7134422SSumit Gupta
1753b7134422SSumit Gupta if (t_sr >= max)
1754b7134422SSumit Gupta return 0;
1755b7134422SSumit Gupta
1756b7134422SSumit Gupta t_sr++;
1757b7134422SSumit Gupta } while (aper[t_sr].targflow == aper[t_sr - 1].targflow);
1758b7134422SSumit Gupta
1759b7134422SSumit Gupta t_f = t_sr;
1760b7134422SSumit Gupta }
1761b7134422SSumit Gupta }
1762b7134422SSumit Gupta
1763b7134422SSumit Gupta return addr;
1764b7134422SSumit Gupta }
1765b7134422SSumit Gupta
print_errlog5(struct seq_file * file,struct tegra194_cbb * cbb)1766b7134422SSumit Gupta static void print_errlog5(struct seq_file *file, struct tegra194_cbb *cbb)
1767b7134422SSumit Gupta {
1768b7134422SSumit Gupta struct tegra194_cbb_userbits userbits;
1769b7134422SSumit Gupta
1770b7134422SSumit Gupta cbb->noc->parse_userbits(&userbits, cbb->errlog5);
1771b7134422SSumit Gupta
1772b7134422SSumit Gupta if (!strcmp(cbb->noc->name, "cbb-noc")) {
1773b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Non-Modify\t\t: %#x\n", userbits.non_mod);
1774b7134422SSumit Gupta tegra_cbb_print_err(file, "\t AXI ID\t\t: %#x\n", userbits.axi_id);
1775b7134422SSumit Gupta }
1776b7134422SSumit Gupta
1777b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Master ID\t\t: %s\n",
1778b7134422SSumit Gupta cbb->noc->master_id[userbits.mstr_id]);
1779b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Security Group(GRPSEC): %#x\n", userbits.grpsec);
1780b7134422SSumit Gupta tegra_cbb_print_cache(file, userbits.axcache);
1781b7134422SSumit Gupta tegra_cbb_print_prot(file, userbits.axprot);
1782b7134422SSumit Gupta tegra_cbb_print_err(file, "\t FALCONSEC\t\t: %#x\n", userbits.falconsec);
1783b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Virtual Queuing Channel(VQC): %#x\n", userbits.vqc);
1784b7134422SSumit Gupta }
1785b7134422SSumit Gupta
1786b7134422SSumit Gupta /*
1787b7134422SSumit Gupta * Fetch Base Address/InitlocalAddress from NOC aperture lookup table using TargFlow &
1788b7134422SSumit Gupta * Targ_subRange extracted from RouteId. Perform address reconstruction as below:
1789b7134422SSumit Gupta *
1790b7134422SSumit Gupta * Address = Base Address + (ErrLog3 + ErrLog4)
1791b7134422SSumit Gupta */
1792b7134422SSumit Gupta static void
print_errlog3_4(struct seq_file * file,u32 errlog3,u32 errlog4,const struct tegra194_cbb_aperture * info,const struct tegra194_cbb_aperture * aperture,unsigned int max)1793b7134422SSumit Gupta print_errlog3_4(struct seq_file *file, u32 errlog3, u32 errlog4,
1794b7134422SSumit Gupta const struct tegra194_cbb_aperture *info,
1795b7134422SSumit Gupta const struct tegra194_cbb_aperture *aperture, unsigned int max)
1796b7134422SSumit Gupta {
1797b7134422SSumit Gupta u64 addr = (u64)errlog4 << 32 | errlog3;
1798b7134422SSumit Gupta
1799b7134422SSumit Gupta /*
1800b7134422SSumit Gupta * If errlog4[7] = "1", then it's a joker entry. Joker entries are a rare phenomenon and
1801b7134422SSumit Gupta * such addresses are not reliable. Debugging should be done using only the RouteId
1802b7134422SSumit Gupta * information.
1803b7134422SSumit Gupta */
1804b7134422SSumit Gupta if (errlog4 & 0x80)
1805b7134422SSumit Gupta tegra_cbb_print_err(file, "\t debug using RouteId alone as below address is a "
1806b7134422SSumit Gupta "joker entry and not reliable");
1807b7134422SSumit Gupta
1808b7134422SSumit Gupta addr += get_init_localaddress(info, aperture, max);
1809b7134422SSumit Gupta
1810b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Address accessed\t: %#llx\n", addr);
1811b7134422SSumit Gupta }
1812b7134422SSumit Gupta
1813b7134422SSumit Gupta /*
1814b7134422SSumit Gupta * Get RouteId from ErrLog1+ErrLog2 registers and fetch values of
1815b7134422SSumit Gupta * InitFlow, TargFlow, Targ_subRange and SeqId values from RouteId
1816b7134422SSumit Gupta */
1817b7134422SSumit Gupta static void
print_errlog1_2(struct seq_file * file,struct tegra194_cbb * cbb,struct tegra194_cbb_aperture * info)1818b7134422SSumit Gupta print_errlog1_2(struct seq_file *file, struct tegra194_cbb *cbb,
1819b7134422SSumit Gupta struct tegra194_cbb_aperture *info)
1820b7134422SSumit Gupta {
1821b7134422SSumit Gupta u64 routeid = (u64)cbb->errlog2 << 32 | cbb->errlog1;
1822b7134422SSumit Gupta u32 seqid = 0;
1823b7134422SSumit Gupta
1824b7134422SSumit Gupta tegra_cbb_print_err(file, "\t RouteId\t\t: %#llx\n", routeid);
1825b7134422SSumit Gupta
1826b7134422SSumit Gupta cbb->noc->parse_routeid(info, routeid);
1827b7134422SSumit Gupta
1828b7134422SSumit Gupta tegra_cbb_print_err(file, "\t InitFlow\t\t: %s\n",
1829b7134422SSumit Gupta cbb->noc->routeid_initflow[info->initflow]);
1830b7134422SSumit Gupta
1831b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Targflow\t\t: %s\n",
1832b7134422SSumit Gupta cbb->noc->routeid_targflow[info->targflow]);
1833b7134422SSumit Gupta
1834b7134422SSumit Gupta tegra_cbb_print_err(file, "\t TargSubRange\t\t: %d\n", info->targ_subrange);
1835b7134422SSumit Gupta tegra_cbb_print_err(file, "\t SeqId\t\t\t: %d\n", seqid);
1836b7134422SSumit Gupta }
1837b7134422SSumit Gupta
1838b7134422SSumit Gupta /*
1839b7134422SSumit Gupta * Print transcation type, error code and description from ErrLog0 for all
1840b7134422SSumit Gupta * errors. For NOC slave errors, all relevant error info is printed using
1841b7134422SSumit Gupta * ErrLog0 only. But additional information is printed for errors from
1842b7134422SSumit Gupta * APB slaves because for them:
1843b7134422SSumit Gupta * - All errors are logged as SLV(slave) errors due to APB having only single
1844b7134422SSumit Gupta * bit pslverr to report all errors.
1845b7134422SSumit Gupta * - Exact cause is printed by reading DMAAPB_X_RAW_INTERRUPT_STATUS register.
1846b7134422SSumit Gupta * - The driver prints information showing AXI2APB bridge and exact error
1847b7134422SSumit Gupta * only if there is error in any AXI2APB slave.
1848b7134422SSumit Gupta * - There is still no way to disambiguate a DEC error from SLV error type.
1849b7134422SSumit Gupta */
print_errlog0(struct seq_file * file,struct tegra194_cbb * cbb)1850b7134422SSumit Gupta static bool print_errlog0(struct seq_file *file, struct tegra194_cbb *cbb)
1851b7134422SSumit Gupta {
1852b7134422SSumit Gupta struct tegra194_cbb_packet_header hdr;
1853b7134422SSumit Gupta bool is_fatal = true;
1854b7134422SSumit Gupta
1855b7134422SSumit Gupta hdr.lock = cbb->errlog0 & 0x1;
1856b7134422SSumit Gupta hdr.opc = FIELD_GET(CBB_ERR_OPC, cbb->errlog0);
1857b7134422SSumit Gupta hdr.errcode = FIELD_GET(CBB_ERR_ERRCODE, cbb->errlog0);
1858b7134422SSumit Gupta hdr.len1 = FIELD_GET(CBB_ERR_LEN1, cbb->errlog0);
1859b7134422SSumit Gupta hdr.format = (cbb->errlog0 >> 31);
1860b7134422SSumit Gupta
1861b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Transaction Type\t: %s\n",
1862b7134422SSumit Gupta tegra194_cbb_trantype[hdr.opc]);
1863b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Error Code\t\t: %s\n",
1864b7134422SSumit Gupta tegra194_cbb_errors[hdr.errcode].code);
1865b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Error Source\t\t: %s\n",
1866b7134422SSumit Gupta tegra194_cbb_errors[hdr.errcode].source);
1867b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Error Description\t: %s\n",
1868b7134422SSumit Gupta tegra194_cbb_errors[hdr.errcode].desc);
1869b7134422SSumit Gupta
1870b7134422SSumit Gupta /*
1871b7134422SSumit Gupta * Do not crash system for errors which are only notifications to indicate a transaction
1872b7134422SSumit Gupta * was not allowed to be attempted.
1873b7134422SSumit Gupta */
1874b7134422SSumit Gupta if (!strcmp(tegra194_cbb_errors[hdr.errcode].code, "SEC") ||
1875b7134422SSumit Gupta !strcmp(tegra194_cbb_errors[hdr.errcode].code, "DEC") ||
1876b7134422SSumit Gupta !strcmp(tegra194_cbb_errors[hdr.errcode].code, "UNS") ||
1877b7134422SSumit Gupta !strcmp(tegra194_cbb_errors[hdr.errcode].code, "DISC")) {
1878b7134422SSumit Gupta is_fatal = false;
1879b7134422SSumit Gupta } else if (!strcmp(tegra194_cbb_errors[hdr.errcode].code, "SLV") &&
1880b7134422SSumit Gupta cbb->num_bridges > 0) {
1881b7134422SSumit Gupta unsigned int i;
1882b7134422SSumit Gupta u32 status;
1883b7134422SSumit Gupta
1884b7134422SSumit Gupta /* For all SLV errors, read DMAAPB_X_RAW_INTERRUPT_STATUS
1885b7134422SSumit Gupta * register to get error status for all AXI2APB bridges.
1886b7134422SSumit Gupta * Print bridge details if a bit is set in a bridge's
1887b7134422SSumit Gupta * status register due to error in a APB slave connected
1888b7134422SSumit Gupta * to that bridge. For other NOC slaves, none of the status
1889b7134422SSumit Gupta * register will be set.
1890b7134422SSumit Gupta */
1891b7134422SSumit Gupta
1892b7134422SSumit Gupta for (i = 0; i < cbb->num_bridges; i++) {
1893b7134422SSumit Gupta status = tegra194_axi2apb_status(cbb->bridges[i].base);
1894b7134422SSumit Gupta
1895b7134422SSumit Gupta if (status)
1896b7134422SSumit Gupta is_fatal = tegra194_axi2apb_fatal(file, i, status);
1897b7134422SSumit Gupta }
1898b7134422SSumit Gupta }
1899b7134422SSumit Gupta
1900b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Packet header Lock\t: %d\n", hdr.lock);
1901b7134422SSumit Gupta tegra_cbb_print_err(file, "\t Packet header Len1\t: %d\n", hdr.len1);
1902b7134422SSumit Gupta
1903b7134422SSumit Gupta if (hdr.format)
1904b7134422SSumit Gupta tegra_cbb_print_err(file, "\t NOC protocol version\t: %s\n",
1905b7134422SSumit Gupta "version >= 2.7");
1906b7134422SSumit Gupta else
1907b7134422SSumit Gupta tegra_cbb_print_err(file, "\t NOC protocol version\t: %s\n",
1908b7134422SSumit Gupta "version < 2.7");
1909b7134422SSumit Gupta
1910b7134422SSumit Gupta return is_fatal;
1911b7134422SSumit Gupta }
1912b7134422SSumit Gupta
1913b7134422SSumit Gupta /*
1914b7134422SSumit Gupta * Print debug information about failed transaction using
1915b7134422SSumit Gupta * ErrLog registers of error loggger having ErrVld set
1916b7134422SSumit Gupta */
print_errloggerX_info(struct seq_file * file,struct tegra194_cbb * cbb,int errloggerX)1917b7134422SSumit Gupta static bool print_errloggerX_info(struct seq_file *file, struct tegra194_cbb *cbb,
1918b7134422SSumit Gupta int errloggerX)
1919b7134422SSumit Gupta {
1920b7134422SSumit Gupta struct tegra194_cbb_aperture info = { 0, };
1921b7134422SSumit Gupta bool is_fatal = true;
1922b7134422SSumit Gupta
1923b7134422SSumit Gupta tegra_cbb_print_err(file, "\tError Logger\t\t: %d\n", errloggerX);
1924b7134422SSumit Gupta
1925b7134422SSumit Gupta if (errloggerX == 0) {
1926b7134422SSumit Gupta cbb->errlog0 = readl(cbb->regs + ERRLOGGER_0_ERRLOG0_0);
1927b7134422SSumit Gupta cbb->errlog1 = readl(cbb->regs + ERRLOGGER_0_ERRLOG1_0);
1928b7134422SSumit Gupta cbb->errlog2 = readl(cbb->regs + ERRLOGGER_0_RSVD_00_0);
1929b7134422SSumit Gupta cbb->errlog3 = readl(cbb->regs + ERRLOGGER_0_ERRLOG3_0);
1930b7134422SSumit Gupta cbb->errlog4 = readl(cbb->regs + ERRLOGGER_0_ERRLOG4_0);
1931b7134422SSumit Gupta cbb->errlog5 = readl(cbb->regs + ERRLOGGER_0_ERRLOG5_0);
1932b7134422SSumit Gupta } else if (errloggerX == 1) {
1933b7134422SSumit Gupta cbb->errlog0 = readl(cbb->regs + ERRLOGGER_1_ERRLOG0_0);
1934b7134422SSumit Gupta cbb->errlog1 = readl(cbb->regs + ERRLOGGER_1_ERRLOG1_0);
1935b7134422SSumit Gupta cbb->errlog2 = readl(cbb->regs + ERRLOGGER_1_RSVD_00_0);
1936b7134422SSumit Gupta cbb->errlog3 = readl(cbb->regs + ERRLOGGER_1_ERRLOG3_0);
1937b7134422SSumit Gupta cbb->errlog4 = readl(cbb->regs + ERRLOGGER_1_ERRLOG4_0);
1938b7134422SSumit Gupta cbb->errlog5 = readl(cbb->regs + ERRLOGGER_1_ERRLOG5_0);
1939b7134422SSumit Gupta } else if (errloggerX == 2) {
1940b7134422SSumit Gupta cbb->errlog0 = readl(cbb->regs + ERRLOGGER_2_ERRLOG0_0);
1941b7134422SSumit Gupta cbb->errlog1 = readl(cbb->regs + ERRLOGGER_2_ERRLOG1_0);
1942b7134422SSumit Gupta cbb->errlog2 = readl(cbb->regs + ERRLOGGER_2_RSVD_00_0);
1943b7134422SSumit Gupta cbb->errlog3 = readl(cbb->regs + ERRLOGGER_2_ERRLOG3_0);
1944b7134422SSumit Gupta cbb->errlog4 = readl(cbb->regs + ERRLOGGER_2_ERRLOG4_0);
1945b7134422SSumit Gupta cbb->errlog5 = readl(cbb->regs + ERRLOGGER_2_ERRLOG5_0);
1946b7134422SSumit Gupta }
1947b7134422SSumit Gupta
1948b7134422SSumit Gupta tegra_cbb_print_err(file, "\tErrLog0\t\t\t: %#x\n", cbb->errlog0);
1949b7134422SSumit Gupta is_fatal = print_errlog0(file, cbb);
1950b7134422SSumit Gupta
1951b7134422SSumit Gupta tegra_cbb_print_err(file, "\tErrLog1\t\t\t: %#x\n", cbb->errlog1);
1952b7134422SSumit Gupta tegra_cbb_print_err(file, "\tErrLog2\t\t\t: %#x\n", cbb->errlog2);
1953b7134422SSumit Gupta print_errlog1_2(file, cbb, &info);
1954b7134422SSumit Gupta
1955b7134422SSumit Gupta tegra_cbb_print_err(file, "\tErrLog3\t\t\t: %#x\n", cbb->errlog3);
1956b7134422SSumit Gupta tegra_cbb_print_err(file, "\tErrLog4\t\t\t: %#x\n", cbb->errlog4);
1957b7134422SSumit Gupta print_errlog3_4(file, cbb->errlog3, cbb->errlog4, &info, cbb->noc->noc_aperture,
1958b7134422SSumit Gupta cbb->noc->max_aperture);
1959b7134422SSumit Gupta
1960b7134422SSumit Gupta tegra_cbb_print_err(file, "\tErrLog5\t\t\t: %#x\n", cbb->errlog5);
1961b7134422SSumit Gupta
1962b7134422SSumit Gupta if (cbb->errlog5)
1963b7134422SSumit Gupta print_errlog5(file, cbb);
1964b7134422SSumit Gupta
1965b7134422SSumit Gupta return is_fatal;
1966b7134422SSumit Gupta }
1967b7134422SSumit Gupta
print_errlog(struct seq_file * file,struct tegra194_cbb * cbb,u32 errvld)1968b7134422SSumit Gupta static bool print_errlog(struct seq_file *file, struct tegra194_cbb *cbb, u32 errvld)
1969b7134422SSumit Gupta {
1970b7134422SSumit Gupta bool is_fatal = true;
1971b7134422SSumit Gupta
1972b7134422SSumit Gupta pr_crit("**************************************\n");
1973b7134422SSumit Gupta pr_crit("CPU:%d, Error:%s\n", smp_processor_id(), cbb->noc->name);
1974b7134422SSumit Gupta
1975b7134422SSumit Gupta if (errvld & 0x1)
1976b7134422SSumit Gupta is_fatal = print_errloggerX_info(file, cbb, 0);
1977b7134422SSumit Gupta else if (errvld & 0x2)
1978b7134422SSumit Gupta is_fatal = print_errloggerX_info(file, cbb, 1);
1979b7134422SSumit Gupta else if (errvld & 0x4)
1980b7134422SSumit Gupta is_fatal = print_errloggerX_info(file, cbb, 2);
1981b7134422SSumit Gupta
1982b7134422SSumit Gupta tegra_cbb_error_clear(&cbb->base);
1983b7134422SSumit Gupta tegra_cbb_print_err(file, "\t**************************************\n");
1984b7134422SSumit Gupta return is_fatal;
1985b7134422SSumit Gupta }
1986b7134422SSumit Gupta
1987b7134422SSumit Gupta #ifdef CONFIG_DEBUG_FS
1988b7134422SSumit Gupta static DEFINE_MUTEX(cbb_err_mutex);
1989b7134422SSumit Gupta
tegra194_cbb_debugfs_show(struct tegra_cbb * cbb,struct seq_file * file,void * data)1990b7134422SSumit Gupta static int tegra194_cbb_debugfs_show(struct tegra_cbb *cbb, struct seq_file *file, void *data)
1991b7134422SSumit Gupta {
1992b7134422SSumit Gupta struct tegra_cbb *noc;
1993b7134422SSumit Gupta
1994b7134422SSumit Gupta mutex_lock(&cbb_err_mutex);
1995b7134422SSumit Gupta
1996b7134422SSumit Gupta list_for_each_entry(noc, &cbb_list, node) {
1997b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(noc);
1998b7134422SSumit Gupta u32 status;
1999b7134422SSumit Gupta
2000b7134422SSumit Gupta status = tegra_cbb_get_status(noc);
2001b7134422SSumit Gupta if (status)
2002b7134422SSumit Gupta print_errlog(file, priv, status);
2003b7134422SSumit Gupta }
2004b7134422SSumit Gupta
2005b7134422SSumit Gupta mutex_unlock(&cbb_err_mutex);
2006b7134422SSumit Gupta
2007b7134422SSumit Gupta return 0;
2008b7134422SSumit Gupta }
2009b7134422SSumit Gupta #endif
2010b7134422SSumit Gupta
2011b7134422SSumit Gupta /*
2012b7134422SSumit Gupta * Handler for CBB errors from different initiators
2013b7134422SSumit Gupta */
tegra194_cbb_err_isr(int irq,void * data)2014b7134422SSumit Gupta static irqreturn_t tegra194_cbb_err_isr(int irq, void *data)
2015b7134422SSumit Gupta {
2016b7134422SSumit Gupta bool is_inband_err = false, is_fatal = false;
2017b7134422SSumit Gupta //struct tegra194_cbb *cbb = data;
2018b7134422SSumit Gupta struct tegra_cbb *noc;
2019b7134422SSumit Gupta unsigned long flags;
2020b7134422SSumit Gupta u8 mstr_id = 0;
2021b7134422SSumit Gupta
2022b7134422SSumit Gupta spin_lock_irqsave(&cbb_lock, flags);
2023b7134422SSumit Gupta
2024b7134422SSumit Gupta /* XXX only process interrupts for "cbb" instead of iterating over all NOCs? */
2025b7134422SSumit Gupta list_for_each_entry(noc, &cbb_list, node) {
2026b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(noc);
2027b7134422SSumit Gupta u32 status = 0;
2028b7134422SSumit Gupta
2029b7134422SSumit Gupta status = tegra_cbb_get_status(noc);
2030b7134422SSumit Gupta
2031b7134422SSumit Gupta if (status && ((irq == priv->sec_irq) || (irq == priv->nonsec_irq))) {
2032b7134422SSumit Gupta tegra_cbb_print_err(NULL, "CPU:%d, Error: %s@%llx, irq=%d\n",
2033b7134422SSumit Gupta smp_processor_id(), priv->noc->name, priv->res->start,
2034b7134422SSumit Gupta irq);
2035b7134422SSumit Gupta
2036b7134422SSumit Gupta is_fatal = print_errlog(NULL, priv, status);
2037b7134422SSumit Gupta
2038b7134422SSumit Gupta /*
203933af51a6SSumit Gupta * If illegal request is from CCPLEX(0x1) initiator
204033af51a6SSumit Gupta * and error is fatal then call BUG() to crash system.
2041b7134422SSumit Gupta */
204233af51a6SSumit Gupta if (priv->noc->erd_mask_inband_err) {
204333af51a6SSumit Gupta mstr_id = FIELD_GET(CBB_NOC_MSTR_ID, priv->errlog5);
204433af51a6SSumit Gupta if (mstr_id == 0x1)
2045b7134422SSumit Gupta is_inband_err = 1;
2046b7134422SSumit Gupta }
2047b7134422SSumit Gupta }
204833af51a6SSumit Gupta }
2049b7134422SSumit Gupta
2050b7134422SSumit Gupta spin_unlock_irqrestore(&cbb_lock, flags);
2051b7134422SSumit Gupta
2052b7134422SSumit Gupta if (is_inband_err) {
2053b7134422SSumit Gupta if (is_fatal)
2054b7134422SSumit Gupta BUG();
2055b7134422SSumit Gupta else
2056b7134422SSumit Gupta WARN(true, "Warning due to CBB Error\n");
2057b7134422SSumit Gupta }
2058b7134422SSumit Gupta
2059b7134422SSumit Gupta return IRQ_HANDLED;
2060b7134422SSumit Gupta }
2061b7134422SSumit Gupta
2062b7134422SSumit Gupta /*
2063b7134422SSumit Gupta * Register handler for CBB_NONSECURE & CBB_SECURE interrupts
2064b7134422SSumit Gupta * for reporting CBB errors
2065b7134422SSumit Gupta */
tegra194_cbb_interrupt_enable(struct tegra_cbb * cbb)2066b7134422SSumit Gupta static int tegra194_cbb_interrupt_enable(struct tegra_cbb *cbb)
2067b7134422SSumit Gupta {
2068b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(cbb);
2069b7134422SSumit Gupta struct device *dev = cbb->dev;
2070b7134422SSumit Gupta int err;
2071b7134422SSumit Gupta
2072b7134422SSumit Gupta if (priv->sec_irq) {
2073b7134422SSumit Gupta err = devm_request_irq(dev, priv->sec_irq, tegra194_cbb_err_isr, 0, dev_name(dev),
2074b7134422SSumit Gupta priv);
2075b7134422SSumit Gupta if (err) {
2076b7134422SSumit Gupta dev_err(dev, "failed to register interrupt %u: %d\n", priv->sec_irq, err);
2077b7134422SSumit Gupta return err;
2078b7134422SSumit Gupta }
2079b7134422SSumit Gupta }
2080b7134422SSumit Gupta
2081b7134422SSumit Gupta if (priv->nonsec_irq) {
2082b7134422SSumit Gupta err = devm_request_irq(dev, priv->nonsec_irq, tegra194_cbb_err_isr, 0,
2083b7134422SSumit Gupta dev_name(dev), priv);
2084b7134422SSumit Gupta if (err) {
2085b7134422SSumit Gupta dev_err(dev, "failed to register interrupt %u: %d\n", priv->nonsec_irq,
2086b7134422SSumit Gupta err);
2087b7134422SSumit Gupta return err;
2088b7134422SSumit Gupta }
2089b7134422SSumit Gupta }
2090b7134422SSumit Gupta
2091b7134422SSumit Gupta return 0;
2092b7134422SSumit Gupta }
2093b7134422SSumit Gupta
tegra194_cbb_error_enable(struct tegra_cbb * cbb)2094b7134422SSumit Gupta static void tegra194_cbb_error_enable(struct tegra_cbb *cbb)
2095b7134422SSumit Gupta {
2096b7134422SSumit Gupta /*
2097b7134422SSumit Gupta * Set “StallEn=1” to enable queuing of error packets till
2098b7134422SSumit Gupta * first is served & cleared
2099b7134422SSumit Gupta */
2100b7134422SSumit Gupta tegra_cbb_stall_enable(cbb);
2101b7134422SSumit Gupta
2102b7134422SSumit Gupta /* set “FaultEn=1” to enable error reporting signal “Fault” */
2103b7134422SSumit Gupta tegra_cbb_fault_enable(cbb);
2104b7134422SSumit Gupta }
2105b7134422SSumit Gupta
2106b7134422SSumit Gupta static const struct tegra_cbb_ops tegra194_cbb_ops = {
2107b7134422SSumit Gupta .get_status = tegra194_cbb_get_status,
2108b7134422SSumit Gupta .error_clear = tegra194_cbb_error_clear,
2109b7134422SSumit Gupta .fault_enable = tegra194_cbb_fault_enable,
2110b7134422SSumit Gupta .stall_enable = tegra194_cbb_stall_enable,
2111b7134422SSumit Gupta .error_enable = tegra194_cbb_error_enable,
2112b7134422SSumit Gupta .interrupt_enable = tegra194_cbb_interrupt_enable,
2113b7134422SSumit Gupta #ifdef CONFIG_DEBUG_FS
2114b7134422SSumit Gupta .debugfs_show = tegra194_cbb_debugfs_show,
2115b7134422SSumit Gupta #endif
2116b7134422SSumit Gupta };
2117b7134422SSumit Gupta
2118b7134422SSumit Gupta static struct tegra194_cbb_noc_data tegra194_cbb_central_noc_data = {
2119b7134422SSumit Gupta .name = "cbb-noc",
2120b7134422SSumit Gupta .erd_mask_inband_err = true,
2121b7134422SSumit Gupta .master_id = tegra194_master_id,
2122b7134422SSumit Gupta .noc_aperture = tegra194_cbbcentralnoc_apert_lookup,
2123b7134422SSumit Gupta .max_aperture = ARRAY_SIZE(tegra194_cbbcentralnoc_apert_lookup),
2124b7134422SSumit Gupta .routeid_initflow = tegra194_cbbcentralnoc_routeid_initflow,
2125b7134422SSumit Gupta .routeid_targflow = tegra194_cbbcentralnoc_routeid_targflow,
2126b7134422SSumit Gupta .parse_routeid = cbbcentralnoc_parse_routeid,
2127b7134422SSumit Gupta .parse_userbits = cbbcentralnoc_parse_userbits
2128b7134422SSumit Gupta };
2129b7134422SSumit Gupta
2130b7134422SSumit Gupta static struct tegra194_cbb_noc_data tegra194_aon_noc_data = {
2131b7134422SSumit Gupta .name = "aon-noc",
2132b7134422SSumit Gupta .erd_mask_inband_err = false,
2133b7134422SSumit Gupta .master_id = tegra194_master_id,
2134b7134422SSumit Gupta .noc_aperture = tegra194_aonnoc_aperture_lookup,
2135b7134422SSumit Gupta .max_aperture = ARRAY_SIZE(tegra194_aonnoc_aperture_lookup),
2136b7134422SSumit Gupta .routeid_initflow = tegra194_aonnoc_routeid_initflow,
2137b7134422SSumit Gupta .routeid_targflow = tegra194_aonnoc_routeid_targflow,
2138b7134422SSumit Gupta .parse_routeid = aonnoc_parse_routeid,
2139b7134422SSumit Gupta .parse_userbits = clusternoc_parse_userbits
2140b7134422SSumit Gupta };
2141b7134422SSumit Gupta
2142b7134422SSumit Gupta static struct tegra194_cbb_noc_data tegra194_bpmp_noc_data = {
2143b7134422SSumit Gupta .name = "bpmp-noc",
2144b7134422SSumit Gupta .erd_mask_inband_err = false,
2145b7134422SSumit Gupta .master_id = tegra194_master_id,
2146b7134422SSumit Gupta .noc_aperture = tegra194_bpmpnoc_apert_lookup,
2147b7134422SSumit Gupta .max_aperture = ARRAY_SIZE(tegra194_bpmpnoc_apert_lookup),
2148b7134422SSumit Gupta .routeid_initflow = tegra194_bpmpnoc_routeid_initflow,
2149b7134422SSumit Gupta .routeid_targflow = tegra194_bpmpnoc_routeid_targflow,
2150b7134422SSumit Gupta .parse_routeid = bpmpnoc_parse_routeid,
2151b7134422SSumit Gupta .parse_userbits = clusternoc_parse_userbits
2152b7134422SSumit Gupta };
2153b7134422SSumit Gupta
2154b7134422SSumit Gupta static struct tegra194_cbb_noc_data tegra194_rce_noc_data = {
2155b7134422SSumit Gupta .name = "rce-noc",
2156b7134422SSumit Gupta .erd_mask_inband_err = false,
2157b7134422SSumit Gupta .master_id = tegra194_master_id,
2158b7134422SSumit Gupta .noc_aperture = tegra194_scenoc_apert_lookup,
2159b7134422SSumit Gupta .max_aperture = ARRAY_SIZE(tegra194_scenoc_apert_lookup),
2160b7134422SSumit Gupta .routeid_initflow = tegra194_scenoc_routeid_initflow,
2161b7134422SSumit Gupta .routeid_targflow = tegra194_scenoc_routeid_targflow,
2162b7134422SSumit Gupta .parse_routeid = scenoc_parse_routeid,
2163b7134422SSumit Gupta .parse_userbits = clusternoc_parse_userbits
2164b7134422SSumit Gupta };
2165b7134422SSumit Gupta
2166b7134422SSumit Gupta static struct tegra194_cbb_noc_data tegra194_sce_noc_data = {
2167b7134422SSumit Gupta .name = "sce-noc",
2168b7134422SSumit Gupta .erd_mask_inband_err = false,
2169b7134422SSumit Gupta .master_id = tegra194_master_id,
2170b7134422SSumit Gupta .noc_aperture = tegra194_scenoc_apert_lookup,
2171b7134422SSumit Gupta .max_aperture = ARRAY_SIZE(tegra194_scenoc_apert_lookup),
2172b7134422SSumit Gupta .routeid_initflow = tegra194_scenoc_routeid_initflow,
2173b7134422SSumit Gupta .routeid_targflow = tegra194_scenoc_routeid_targflow,
2174b7134422SSumit Gupta .parse_routeid = scenoc_parse_routeid,
2175b7134422SSumit Gupta .parse_userbits = clusternoc_parse_userbits
2176b7134422SSumit Gupta };
2177b7134422SSumit Gupta
2178b7134422SSumit Gupta static const struct of_device_id tegra194_cbb_match[] = {
2179b7134422SSumit Gupta { .compatible = "nvidia,tegra194-cbb-noc", .data = &tegra194_cbb_central_noc_data },
2180b7134422SSumit Gupta { .compatible = "nvidia,tegra194-aon-noc", .data = &tegra194_aon_noc_data },
2181b7134422SSumit Gupta { .compatible = "nvidia,tegra194-bpmp-noc", .data = &tegra194_bpmp_noc_data },
2182b7134422SSumit Gupta { .compatible = "nvidia,tegra194-rce-noc", .data = &tegra194_rce_noc_data },
2183b7134422SSumit Gupta { .compatible = "nvidia,tegra194-sce-noc", .data = &tegra194_sce_noc_data },
2184b7134422SSumit Gupta { /* sentinel */ }
2185b7134422SSumit Gupta };
2186b7134422SSumit Gupta MODULE_DEVICE_TABLE(of, tegra194_cbb_match);
2187b7134422SSumit Gupta
tegra194_cbb_get_bridges(struct tegra194_cbb * cbb,struct device_node * np)2188b7134422SSumit Gupta static int tegra194_cbb_get_bridges(struct tegra194_cbb *cbb, struct device_node *np)
2189b7134422SSumit Gupta {
2190b7134422SSumit Gupta struct tegra_cbb *entry;
2191b7134422SSumit Gupta unsigned long flags;
2192b7134422SSumit Gupta unsigned int i;
2193b7134422SSumit Gupta int err;
2194b7134422SSumit Gupta
2195b7134422SSumit Gupta spin_lock_irqsave(&cbb_lock, flags);
2196b7134422SSumit Gupta
2197b7134422SSumit Gupta list_for_each_entry(entry, &cbb_list, node) {
2198b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(entry);
2199b7134422SSumit Gupta
2200b7134422SSumit Gupta if (priv->bridges) {
2201b7134422SSumit Gupta cbb->num_bridges = priv->num_bridges;
2202b7134422SSumit Gupta cbb->bridges = priv->bridges;
2203b7134422SSumit Gupta break;
2204b7134422SSumit Gupta }
2205b7134422SSumit Gupta }
2206b7134422SSumit Gupta
2207b7134422SSumit Gupta spin_unlock_irqrestore(&cbb_lock, flags);
2208b7134422SSumit Gupta
2209b7134422SSumit Gupta if (!cbb->bridges) {
2210056a6e1dSYang Yingliang cbb->num_bridges = of_address_count(np);
2211b7134422SSumit Gupta
2212b7134422SSumit Gupta cbb->bridges = devm_kcalloc(cbb->base.dev, cbb->num_bridges,
2213b7134422SSumit Gupta sizeof(*cbb->bridges), GFP_KERNEL);
2214b7134422SSumit Gupta if (!cbb->bridges)
2215b7134422SSumit Gupta return -ENOMEM;
2216b7134422SSumit Gupta
2217b7134422SSumit Gupta for (i = 0; i < cbb->num_bridges; i++) {
2218b7134422SSumit Gupta err = of_address_to_resource(np, i, &cbb->bridges[i].res);
2219b7134422SSumit Gupta if (err < 0)
2220b7134422SSumit Gupta return err;
2221b7134422SSumit Gupta
2222b7134422SSumit Gupta cbb->bridges[i].base = devm_ioremap_resource(cbb->base.dev,
2223b7134422SSumit Gupta &cbb->bridges[i].res);
2224b6c6bbfcSShang XiaoJing if (IS_ERR(cbb->bridges[i].base))
2225b7134422SSumit Gupta return PTR_ERR(cbb->bridges[i].base);
2226b7134422SSumit Gupta }
2227b7134422SSumit Gupta }
2228b7134422SSumit Gupta
2229b7134422SSumit Gupta if (cbb->num_bridges > 0) {
2230b7134422SSumit Gupta dev_dbg(cbb->base.dev, "AXI2APB bridge info present:\n");
2231b7134422SSumit Gupta
2232b7134422SSumit Gupta for (i = 0; i < cbb->num_bridges; i++)
2233b7134422SSumit Gupta dev_dbg(cbb->base.dev, " %u: %pR\n", i, &cbb->bridges[i].res);
2234b7134422SSumit Gupta }
2235b7134422SSumit Gupta
2236b7134422SSumit Gupta return 0;
2237b7134422SSumit Gupta }
2238b7134422SSumit Gupta
tegra194_cbb_probe(struct platform_device * pdev)2239b7134422SSumit Gupta static int tegra194_cbb_probe(struct platform_device *pdev)
2240b7134422SSumit Gupta {
2241b7134422SSumit Gupta const struct tegra194_cbb_noc_data *noc;
2242b7134422SSumit Gupta struct tegra194_cbb *cbb;
2243b7134422SSumit Gupta struct device_node *np;
2244b7134422SSumit Gupta unsigned long flags;
2245b7134422SSumit Gupta int err;
2246b7134422SSumit Gupta
2247b7134422SSumit Gupta noc = of_device_get_match_data(&pdev->dev);
2248b7134422SSumit Gupta
2249b7134422SSumit Gupta if (noc->erd_mask_inband_err) {
2250b7134422SSumit Gupta /*
2251b7134422SSumit Gupta * Set Error Response Disable(ERD) bit to mask SError/inband
2252b7134422SSumit Gupta * error and only trigger interrupts for illegal access from
2253b7134422SSumit Gupta * CCPLEX initiator.
2254b7134422SSumit Gupta */
2255b7134422SSumit Gupta err = tegra194_miscreg_mask_serror();
2256b7134422SSumit Gupta if (err) {
2257b7134422SSumit Gupta dev_err(&pdev->dev, "couldn't mask inband errors\n");
2258b7134422SSumit Gupta return err;
2259b7134422SSumit Gupta }
2260b7134422SSumit Gupta }
2261b7134422SSumit Gupta
2262b7134422SSumit Gupta cbb = devm_kzalloc(&pdev->dev, sizeof(*cbb), GFP_KERNEL);
2263b7134422SSumit Gupta if (!cbb)
2264b7134422SSumit Gupta return -ENOMEM;
2265b7134422SSumit Gupta
2266b7134422SSumit Gupta INIT_LIST_HEAD(&cbb->base.node);
2267b7134422SSumit Gupta cbb->base.ops = &tegra194_cbb_ops;
2268b7134422SSumit Gupta cbb->base.dev = &pdev->dev;
2269b7134422SSumit Gupta cbb->noc = noc;
2270b7134422SSumit Gupta
2271b7134422SSumit Gupta cbb->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &cbb->res);
2272b7134422SSumit Gupta if (IS_ERR(cbb->regs))
2273b7134422SSumit Gupta return PTR_ERR(cbb->regs);
2274b7134422SSumit Gupta
2275b7134422SSumit Gupta err = tegra_cbb_get_irq(pdev, &cbb->nonsec_irq, &cbb->sec_irq);
2276b7134422SSumit Gupta if (err)
2277b7134422SSumit Gupta return err;
2278b7134422SSumit Gupta
2279b7134422SSumit Gupta np = of_parse_phandle(pdev->dev.of_node, "nvidia,axi2apb", 0);
2280b7134422SSumit Gupta if (np) {
2281b7134422SSumit Gupta err = tegra194_cbb_get_bridges(cbb, np);
2282b7134422SSumit Gupta of_node_put(np);
2283b7134422SSumit Gupta if (err < 0)
2284b7134422SSumit Gupta return err;
2285b7134422SSumit Gupta }
2286b7134422SSumit Gupta
2287b7134422SSumit Gupta platform_set_drvdata(pdev, cbb);
2288b7134422SSumit Gupta
2289b7134422SSumit Gupta spin_lock_irqsave(&cbb_lock, flags);
2290b7134422SSumit Gupta list_add(&cbb->base.node, &cbb_list);
2291b7134422SSumit Gupta spin_unlock_irqrestore(&cbb_lock, flags);
2292b7134422SSumit Gupta
2293b7134422SSumit Gupta return tegra_cbb_register(&cbb->base);
2294b7134422SSumit Gupta }
2295b7134422SSumit Gupta
tegra194_cbb_remove(struct platform_device * pdev)2296b7134422SSumit Gupta static int tegra194_cbb_remove(struct platform_device *pdev)
2297b7134422SSumit Gupta {
2298b7134422SSumit Gupta struct tegra194_cbb *cbb = platform_get_drvdata(pdev);
2299b7134422SSumit Gupta struct tegra_cbb *noc, *tmp;
2300b7134422SSumit Gupta unsigned long flags;
2301b7134422SSumit Gupta
2302b7134422SSumit Gupta spin_lock_irqsave(&cbb_lock, flags);
2303b7134422SSumit Gupta
2304b7134422SSumit Gupta list_for_each_entry_safe(noc, tmp, &cbb_list, node) {
2305b7134422SSumit Gupta struct tegra194_cbb *priv = to_tegra194_cbb(noc);
2306b7134422SSumit Gupta
2307b7134422SSumit Gupta if (cbb->res->start == priv->res->start) {
2308b7134422SSumit Gupta list_del(&noc->node);
2309b7134422SSumit Gupta break;
2310b7134422SSumit Gupta }
2311b7134422SSumit Gupta }
2312b7134422SSumit Gupta
2313b7134422SSumit Gupta spin_unlock_irqrestore(&cbb_lock, flags);
2314b7134422SSumit Gupta
2315b7134422SSumit Gupta return 0;
2316b7134422SSumit Gupta }
2317b7134422SSumit Gupta
tegra194_cbb_resume_noirq(struct device * dev)2318b7134422SSumit Gupta static int __maybe_unused tegra194_cbb_resume_noirq(struct device *dev)
2319b7134422SSumit Gupta {
2320b7134422SSumit Gupta struct tegra194_cbb *cbb = dev_get_drvdata(dev);
2321b7134422SSumit Gupta
2322b7134422SSumit Gupta tegra194_cbb_error_enable(&cbb->base);
2323b7134422SSumit Gupta dsb(sy);
2324b7134422SSumit Gupta
2325b7134422SSumit Gupta dev_dbg(dev, "%s resumed\n", cbb->noc->name);
2326b7134422SSumit Gupta return 0;
2327b7134422SSumit Gupta }
2328b7134422SSumit Gupta
2329b7134422SSumit Gupta static const struct dev_pm_ops tegra194_cbb_pm = {
2330b7134422SSumit Gupta SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(NULL, tegra194_cbb_resume_noirq)
2331b7134422SSumit Gupta };
2332b7134422SSumit Gupta
2333b7134422SSumit Gupta static struct platform_driver tegra194_cbb_driver = {
2334b7134422SSumit Gupta .probe = tegra194_cbb_probe,
2335b7134422SSumit Gupta .remove = tegra194_cbb_remove,
2336b7134422SSumit Gupta .driver = {
2337b7134422SSumit Gupta .name = "tegra194-cbb",
2338b7134422SSumit Gupta .of_match_table = of_match_ptr(tegra194_cbb_match),
2339b7134422SSumit Gupta .pm = &tegra194_cbb_pm,
2340b7134422SSumit Gupta },
2341b7134422SSumit Gupta };
2342b7134422SSumit Gupta
tegra194_cbb_init(void)2343b7134422SSumit Gupta static int __init tegra194_cbb_init(void)
2344b7134422SSumit Gupta {
2345b7134422SSumit Gupta return platform_driver_register(&tegra194_cbb_driver);
2346b7134422SSumit Gupta }
2347b7134422SSumit Gupta pure_initcall(tegra194_cbb_init);
2348b7134422SSumit Gupta
tegra194_cbb_exit(void)2349b7134422SSumit Gupta static void __exit tegra194_cbb_exit(void)
2350b7134422SSumit Gupta {
2351b7134422SSumit Gupta platform_driver_unregister(&tegra194_cbb_driver);
2352b7134422SSumit Gupta }
2353b7134422SSumit Gupta module_exit(tegra194_cbb_exit);
2354b7134422SSumit Gupta
2355b7134422SSumit Gupta MODULE_AUTHOR("Sumit Gupta <sumitg@nvidia.com>");
2356b7134422SSumit Gupta MODULE_DESCRIPTION("Control Backbone error handling driver for Tegra194");
2357