xref: /openbmc/linux/drivers/bus/omap_l3_noc.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*5a729246SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
20ee7261cSSantosh Shilimkar /*
3c10d5c9eSSricharan R  * OMAP L3 Interconnect  error handling driver header
40ee7261cSSantosh Shilimkar  *
5e7309c26SSuman Anna  * Copyright (C) 2011-2015 Texas Instruments Incorporated - http://www.ti.com/
60ee7261cSSantosh Shilimkar  *	Santosh Shilimkar <santosh.shilimkar@ti.com>
70ee7261cSSantosh Shilimkar  *	sricharan <r.sricharan@ti.com>
80ee7261cSSantosh Shilimkar  */
9c10d5c9eSSricharan R #ifndef __OMAP_L3_NOC_H
10c10d5c9eSSricharan R #define __OMAP_L3_NOC_H
110ee7261cSSantosh Shilimkar 
120659452dSSricharan R #define MAX_L3_MODULES			3
1397708c08SNishanth Menon #define MAX_CLKDM_TARGETS		31
140659452dSSricharan R 
150ee7261cSSantosh Shilimkar #define CLEAR_STDERR_LOG		(1 << 31)
160ee7261cSSantosh Shilimkar #define CUSTOM_ERROR			0x2
170ee7261cSSantosh Shilimkar #define STANDARD_ERROR			0x0
180ee7261cSSantosh Shilimkar #define INBAND_ERROR			0x0
190ee7261cSSantosh Shilimkar #define L3_APPLICATION_ERROR		0x0
200ee7261cSSantosh Shilimkar #define L3_DEBUG_ERROR			0x1
210ee7261cSSantosh Shilimkar 
220ee7261cSSantosh Shilimkar /* L3 TARG register offsets */
230ee7261cSSantosh Shilimkar #define L3_TARG_STDERRLOG_MAIN		0x48
247f9de02dSNishanth Menon #define L3_TARG_STDERRLOG_HDR		0x4c
25c98aa7aaSNishanth Menon #define L3_TARG_STDERRLOG_MSTADDR	0x50
26cf52b2ecSNishanth Menon #define L3_TARG_STDERRLOG_INFO		0x58
270ee7261cSSantosh Shilimkar #define L3_TARG_STDERRLOG_SLVOFSLSB	0x5c
28cf52b2ecSNishanth Menon #define L3_TARG_STDERRLOG_CINFO_INFO	0x64
29c98aa7aaSNishanth Menon #define L3_TARG_STDERRLOG_CINFO_MSTADDR	0x68
307f9de02dSNishanth Menon #define L3_TARG_STDERRLOG_CINFO_OPCODE	0x6c
310ee7261cSSantosh Shilimkar #define L3_FLAGMUX_REGERR0		0xc
323340d739SRajendra Nayak #define L3_FLAGMUX_MASK0		0x8
333340d739SRajendra Nayak 
343340d739SRajendra Nayak #define L3_TARGET_NOT_SUPPORTED		NULL
353340d739SRajendra Nayak 
36f33ddf74SNishanth Menon #define L3_BASE_IS_SUBMODULE		((void __iomem *)(1 << 0))
37f33ddf74SNishanth Menon 
387f9de02dSNishanth Menon static const char * const l3_transaction_type[] = {
397f9de02dSNishanth Menon 	/* 0 0 0 */ "Idle",
407f9de02dSNishanth Menon 	/* 0 0 1 */ "Write",
417f9de02dSNishanth Menon 	/* 0 1 0 */ "Read",
427f9de02dSNishanth Menon 	/* 0 1 1 */ "ReadEx",
437f9de02dSNishanth Menon 	/* 1 0 0 */ "Read Link",
447f9de02dSNishanth Menon 	/* 1 0 1 */ "Write Non-Posted",
457f9de02dSNishanth Menon 	/* 1 1 0 */ "Write Conditional",
467f9de02dSNishanth Menon 	/* 1 1 1 */ "Write Broadcast",
477f9de02dSNishanth Menon };
487f9de02dSNishanth Menon 
49f0a6e654SNishanth Menon /**
50f0a6e654SNishanth Menon  * struct l3_masters_data - L3 Master information
51f0a6e654SNishanth Menon  * @id:		ID of the L3 Master
52f0a6e654SNishanth Menon  * @name:	master name
53f0a6e654SNishanth Menon  */
54f0a6e654SNishanth Menon struct l3_masters_data {
55f0a6e654SNishanth Menon 	u32 id;
56f0a6e654SNishanth Menon 	char *name;
57f0a6e654SNishanth Menon };
58f0a6e654SNishanth Menon 
593ae9af7cSNishanth Menon /**
603ae9af7cSNishanth Menon  * struct l3_target_data - L3 Target information
613ae9af7cSNishanth Menon  * @offset:	Offset from base for L3 Target
623ae9af7cSNishanth Menon  * @name:	Target name
633ae9af7cSNishanth Menon  *
643ae9af7cSNishanth Menon  * Target information is organized indexed by bit field definitions.
653ae9af7cSNishanth Menon  */
663ae9af7cSNishanth Menon struct l3_target_data {
673ae9af7cSNishanth Menon 	u32 offset;
683ae9af7cSNishanth Menon 	char *name;
693ae9af7cSNishanth Menon };
703ae9af7cSNishanth Menon 
7197708c08SNishanth Menon /**
7297708c08SNishanth Menon  * struct l3_flagmux_data - Flag Mux information
7397708c08SNishanth Menon  * @offset:	offset from base for flagmux register
7497708c08SNishanth Menon  * @l3_targ:	array indexed by flagmux index (bit offset) pointing to the
7597708c08SNishanth Menon  *		target data. unsupported ones are marked with
7697708c08SNishanth Menon  *		L3_TARGET_NOT_SUPPORTED
7797708c08SNishanth Menon  * @num_targ_data: number of entries in target data
782100b595SAfzal Mohammed  * @mask_app_bits: ignore these from raw application irq status
792100b595SAfzal Mohammed  * @mask_dbg_bits: ignore these from raw debug irq status
8097708c08SNishanth Menon  */
8197708c08SNishanth Menon struct l3_flagmux_data {
8297708c08SNishanth Menon 	u32 offset;
8397708c08SNishanth Menon 	struct l3_target_data *l3_targ;
8497708c08SNishanth Menon 	u8 num_targ_data;
852100b595SAfzal Mohammed 	u32 mask_app_bits;
862100b595SAfzal Mohammed 	u32 mask_dbg_bits;
8797708c08SNishanth Menon };
8897708c08SNishanth Menon 
890659452dSSricharan R 
900659452dSSricharan R /**
910659452dSSricharan R  * struct omap_l3 - Description of data relevant for L3 bus.
920659452dSSricharan R  * @dev:	device representing the bus (populated runtime)
93f33ddf74SNishanth Menon  * @l3_base:	base addresses of modules (populated runtime if 0)
94f33ddf74SNishanth Menon  *		if set to L3_BASE_IS_SUBMODULE, then uses previous
95f33ddf74SNishanth Menon  *		module index as the base address
9697708c08SNishanth Menon  * @l3_flag_mux: array containing flag mux data per module
970659452dSSricharan R  *		 offset from corresponding module base indexed per
980659452dSSricharan R  *		 module.
990659452dSSricharan R  * @num_modules: number of clock domains / modules.
1000659452dSSricharan R  * @l3_masters:	array pointing to master data containing name and register
1010659452dSSricharan R  *		offset for the master.
1020659452dSSricharan R  * @num_master: number of masters
103d4d8819eSNishanth Menon  * @mst_addr_mask: Mask representing MSTADDR information of NTTP packet
1040659452dSSricharan R  * @debug_irq:	irq number of the debug interrupt (populated runtime)
1050659452dSSricharan R  * @app_irq:	irq number of the application interrupt (populated runtime)
1060659452dSSricharan R  */
1070659452dSSricharan R struct omap_l3 {
1080659452dSSricharan R 	struct device *dev;
1090659452dSSricharan R 
1100659452dSSricharan R 	void __iomem *l3_base[MAX_L3_MODULES];
11197708c08SNishanth Menon 	struct l3_flagmux_data **l3_flagmux;
1120659452dSSricharan R 	int num_modules;
1130659452dSSricharan R 
1140659452dSSricharan R 	struct l3_masters_data *l3_masters;
1150659452dSSricharan R 	int num_masters;
116d4d8819eSNishanth Menon 	u32 mst_addr_mask;
1170659452dSSricharan R 
1180659452dSSricharan R 	int debug_irq;
1190659452dSSricharan R 	int app_irq;
1200659452dSSricharan R };
1210659452dSSricharan R 
12297708c08SNishanth Menon static struct l3_target_data omap_l3_target_data_clk1[] = {
1233ae9af7cSNishanth Menon 	{0x100,	"DMM1",},
1243ae9af7cSNishanth Menon 	{0x200,	"DMM2",},
1253ae9af7cSNishanth Menon 	{0x300,	"ABE",},
1263ae9af7cSNishanth Menon 	{0x400,	"L4CFG",},
1273ae9af7cSNishanth Menon 	{0x600,	"CLK2PWRDISC",},
1283ae9af7cSNishanth Menon 	{0x0,	"HOSTCLK1",},
1293ae9af7cSNishanth Menon 	{0x900,	"L4WAKEUP",},
1300ee7261cSSantosh Shilimkar };
1310ee7261cSSantosh Shilimkar 
13297708c08SNishanth Menon static struct l3_flagmux_data omap_l3_flagmux_clk1 = {
13397708c08SNishanth Menon 	.offset = 0x500,
13497708c08SNishanth Menon 	.l3_targ = omap_l3_target_data_clk1,
13597708c08SNishanth Menon 	.num_targ_data = ARRAY_SIZE(omap_l3_target_data_clk1),
13697708c08SNishanth Menon };
13797708c08SNishanth Menon 
13897708c08SNishanth Menon 
13997708c08SNishanth Menon static struct l3_target_data omap_l3_target_data_clk2[] = {
1403ae9af7cSNishanth Menon 	{0x500,	"CORTEXM3",},
1413ae9af7cSNishanth Menon 	{0x300,	"DSS",},
1423ae9af7cSNishanth Menon 	{0x100,	"GPMC",},
1433ae9af7cSNishanth Menon 	{0x400,	"ISS",},
1443ae9af7cSNishanth Menon 	{0x700,	"IVAHD",},
1453ae9af7cSNishanth Menon 	{0xD00,	"AES1",},
1463ae9af7cSNishanth Menon 	{0x900,	"L4PER0",},
1473ae9af7cSNishanth Menon 	{0x200,	"OCMRAM",},
1483ae9af7cSNishanth Menon 	{0x100,	"GPMCsERROR",},
1493ae9af7cSNishanth Menon 	{0x600,	"SGX",},
1503ae9af7cSNishanth Menon 	{0x800,	"SL2",},
1513ae9af7cSNishanth Menon 	{0x1600, "C2C",},
1523ae9af7cSNishanth Menon 	{0x1100, "PWRDISCCLK1",},
1533ae9af7cSNishanth Menon 	{0xF00,	"SHA1",},
1543ae9af7cSNishanth Menon 	{0xE00,	"AES2",},
1553ae9af7cSNishanth Menon 	{0xC00,	"L4PER3",},
1563ae9af7cSNishanth Menon 	{0xA00,	"L4PER1",},
1573ae9af7cSNishanth Menon 	{0xB00,	"L4PER2",},
1583ae9af7cSNishanth Menon 	{0x0,	"HOSTCLK2",},
1593ae9af7cSNishanth Menon 	{0x1800, "CAL",},
1603ae9af7cSNishanth Menon 	{0x1700, "LLI",},
1610ee7261cSSantosh Shilimkar };
1620ee7261cSSantosh Shilimkar 
16397708c08SNishanth Menon static struct l3_flagmux_data omap_l3_flagmux_clk2 = {
16497708c08SNishanth Menon 	.offset = 0x1000,
16597708c08SNishanth Menon 	.l3_targ = omap_l3_target_data_clk2,
16697708c08SNishanth Menon 	.num_targ_data = ARRAY_SIZE(omap_l3_target_data_clk2),
16797708c08SNishanth Menon };
16897708c08SNishanth Menon 
16997708c08SNishanth Menon 
170e7309c26SSuman Anna static struct l3_target_data omap4_l3_target_data_clk3[] = {
171e7309c26SSuman Anna 	{0x0100, "DEBUGSS",},
1720ee7261cSSantosh Shilimkar };
1730ee7261cSSantosh Shilimkar 
174e7309c26SSuman Anna static struct l3_flagmux_data omap4_l3_flagmux_clk3 = {
17597708c08SNishanth Menon 	.offset = 0x0200,
176e7309c26SSuman Anna 	.l3_targ = omap4_l3_target_data_clk3,
177e7309c26SSuman Anna 	.num_targ_data = ARRAY_SIZE(omap4_l3_target_data_clk3),
17897708c08SNishanth Menon };
17997708c08SNishanth Menon 
1800659452dSSricharan R static struct l3_masters_data omap_l3_masters[] = {
18141fc619dSNishanth Menon 	{ 0x00, "MPU"},
18241fc619dSNishanth Menon 	{ 0x04, "CS_ADP"},
18341fc619dSNishanth Menon 	{ 0x05, "xxx"},
18441fc619dSNishanth Menon 	{ 0x08, "DSP"},
18541fc619dSNishanth Menon 	{ 0x0C, "IVAHD"},
18641fc619dSNishanth Menon 	{ 0x10, "ISS"},
18741fc619dSNishanth Menon 	{ 0x11, "DucatiM3"},
18841fc619dSNishanth Menon 	{ 0x12, "FaceDetect"},
18941fc619dSNishanth Menon 	{ 0x14, "SDMA_Rd"},
19041fc619dSNishanth Menon 	{ 0x15, "SDMA_Wr"},
19141fc619dSNishanth Menon 	{ 0x16, "xxx"},
19241fc619dSNishanth Menon 	{ 0x17, "xxx"},
19341fc619dSNishanth Menon 	{ 0x18, "SGX"},
19441fc619dSNishanth Menon 	{ 0x1C, "DSS"},
19541fc619dSNishanth Menon 	{ 0x20, "C2C"},
19641fc619dSNishanth Menon 	{ 0x22, "xxx"},
19741fc619dSNishanth Menon 	{ 0x23, "xxx"},
19841fc619dSNishanth Menon 	{ 0x24, "HSI"},
19941fc619dSNishanth Menon 	{ 0x28, "MMC1"},
20041fc619dSNishanth Menon 	{ 0x29, "MMC2"},
20141fc619dSNishanth Menon 	{ 0x2A, "MMC6"},
20241fc619dSNishanth Menon 	{ 0x2C, "UNIPRO1"},
20341fc619dSNishanth Menon 	{ 0x30, "USBHOSTHS"},
20441fc619dSNishanth Menon 	{ 0x31, "USBOTGHS"},
20541fc619dSNishanth Menon 	{ 0x32, "USBHOSTFS"}
2060ee7261cSSantosh Shilimkar };
2070ee7261cSSantosh Shilimkar 
208e7309c26SSuman Anna static struct l3_flagmux_data *omap4_l3_flagmux[] = {
20997708c08SNishanth Menon 	&omap_l3_flagmux_clk1,
21097708c08SNishanth Menon 	&omap_l3_flagmux_clk2,
211e7309c26SSuman Anna 	&omap4_l3_flagmux_clk3,
2120ee7261cSSantosh Shilimkar };
2130ee7261cSSantosh Shilimkar 
214e7309c26SSuman Anna static const struct omap_l3 omap4_l3_data = {
215e7309c26SSuman Anna 	.l3_flagmux = omap4_l3_flagmux,
216e7309c26SSuman Anna 	.num_modules = ARRAY_SIZE(omap4_l3_flagmux),
2170659452dSSricharan R 	.l3_masters = omap_l3_masters,
2180659452dSSricharan R 	.num_masters = ARRAY_SIZE(omap_l3_masters),
219d4d8819eSNishanth Menon 	/* The 6 MSBs of register field used to distinguish initiator */
220d4d8819eSNishanth Menon 	.mst_addr_mask = 0xFC,
2210ee7261cSSantosh Shilimkar };
222c10d5c9eSSricharan R 
223e7309c26SSuman Anna /* OMAP5 data */
224e7309c26SSuman Anna static struct l3_target_data omap5_l3_target_data_clk3[] = {
225e7309c26SSuman Anna 	{0x0100, "L3INSTR",},
226e7309c26SSuman Anna 	{0x0300, "DEBUGSS",},
227e7309c26SSuman Anna 	{0x0,	 "HOSTCLK3",},
228e7309c26SSuman Anna };
229e7309c26SSuman Anna 
230e7309c26SSuman Anna static struct l3_flagmux_data omap5_l3_flagmux_clk3 = {
231e7309c26SSuman Anna 	.offset = 0x0200,
232e7309c26SSuman Anna 	.l3_targ = omap5_l3_target_data_clk3,
233e7309c26SSuman Anna 	.num_targ_data = ARRAY_SIZE(omap5_l3_target_data_clk3),
234e7309c26SSuman Anna };
235e7309c26SSuman Anna 
236e7309c26SSuman Anna static struct l3_flagmux_data *omap5_l3_flagmux[] = {
237e7309c26SSuman Anna 	&omap_l3_flagmux_clk1,
238e7309c26SSuman Anna 	&omap_l3_flagmux_clk2,
239e7309c26SSuman Anna 	&omap5_l3_flagmux_clk3,
240e7309c26SSuman Anna };
241e7309c26SSuman Anna 
242e7309c26SSuman Anna static const struct omap_l3 omap5_l3_data = {
243e7309c26SSuman Anna 	.l3_flagmux = omap5_l3_flagmux,
244e7309c26SSuman Anna 	.num_modules = ARRAY_SIZE(omap5_l3_flagmux),
245e7309c26SSuman Anna 	.l3_masters = omap_l3_masters,
246e7309c26SSuman Anna 	.num_masters = ARRAY_SIZE(omap_l3_masters),
247e7309c26SSuman Anna 	/* The 6 MSBs of register field used to distinguish initiator */
248e7309c26SSuman Anna 	.mst_addr_mask = 0x7E0,
249e7309c26SSuman Anna };
250e7309c26SSuman Anna 
25153a848beSRajendra Nayak /* DRA7 data */
25253a848beSRajendra Nayak static struct l3_target_data dra_l3_target_data_clk1[] = {
25353a848beSRajendra Nayak 	{0x2a00, "AES1",},
25453a848beSRajendra Nayak 	{0x0200, "DMM_P1",},
25553a848beSRajendra Nayak 	{0x0600, "DSP2_SDMA",},
25653a848beSRajendra Nayak 	{0x0b00, "EVE2",},
25753a848beSRajendra Nayak 	{0x1300, "DMM_P2",},
25853a848beSRajendra Nayak 	{0x2c00, "AES2",},
25953a848beSRajendra Nayak 	{0x0300, "DSP1_SDMA",},
26053a848beSRajendra Nayak 	{0x0a00, "EVE1",},
26153a848beSRajendra Nayak 	{0x0c00, "EVE3",},
26253a848beSRajendra Nayak 	{0x0d00, "EVE4",},
26353a848beSRajendra Nayak 	{0x2900, "DSS",},
26453a848beSRajendra Nayak 	{0x0100, "GPMC",},
26553a848beSRajendra Nayak 	{0x3700, "PCIE1",},
26653a848beSRajendra Nayak 	{0x1600, "IVA_CONFIG",},
26753a848beSRajendra Nayak 	{0x1800, "IVA_SL2IF",},
26853a848beSRajendra Nayak 	{0x0500, "L4_CFG",},
26953a848beSRajendra Nayak 	{0x1d00, "L4_WKUP",},
27053a848beSRajendra Nayak 	{0x3800, "PCIE2",},
27153a848beSRajendra Nayak 	{0x3300, "SHA2_1",},
27253a848beSRajendra Nayak 	{0x1200, "GPU",},
27353a848beSRajendra Nayak 	{0x1000, "IPU1",},
27453a848beSRajendra Nayak 	{0x1100, "IPU2",},
27553a848beSRajendra Nayak 	{0x2000, "TPCC_EDMA",},
27653a848beSRajendra Nayak 	{0x2e00, "TPTC1_EDMA",},
27753a848beSRajendra Nayak 	{0x2b00, "TPTC2_EDMA",},
27853a848beSRajendra Nayak 	{0x0700, "VCP1",},
27953a848beSRajendra Nayak 	{0x2500, "L4_PER2_P3",},
28053a848beSRajendra Nayak 	{0x0e00, "L4_PER3_P3",},
28153a848beSRajendra Nayak 	{0x2200, "MMU1",},
28253a848beSRajendra Nayak 	{0x1400, "PRUSS1",},
28353a848beSRajendra Nayak 	{0x1500, "PRUSS2"},
28453a848beSRajendra Nayak 	{0x0800, "VCP1",},
28553a848beSRajendra Nayak };
28653a848beSRajendra Nayak 
28753a848beSRajendra Nayak static struct l3_flagmux_data dra_l3_flagmux_clk1 = {
28853a848beSRajendra Nayak 	.offset = 0x803500,
28953a848beSRajendra Nayak 	.l3_targ = dra_l3_target_data_clk1,
29053a848beSRajendra Nayak 	.num_targ_data = ARRAY_SIZE(dra_l3_target_data_clk1),
29153a848beSRajendra Nayak };
29253a848beSRajendra Nayak 
29353a848beSRajendra Nayak static struct l3_target_data dra_l3_target_data_clk2[] = {
29453a848beSRajendra Nayak 	{0x0,	"HOST CLK1",},
2954adf82c3SIllia Smyrnov 	{0x800000, "HOST CLK2",},
29653a848beSRajendra Nayak 	{0xdead, L3_TARGET_NOT_SUPPORTED,},
29753a848beSRajendra Nayak 	{0x3400, "SHA2_2",},
29853a848beSRajendra Nayak 	{0x0900, "BB2D",},
29953a848beSRajendra Nayak 	{0xdead, L3_TARGET_NOT_SUPPORTED,},
30053a848beSRajendra Nayak 	{0x2100, "L4_PER1_P3",},
30153a848beSRajendra Nayak 	{0x1c00, "L4_PER1_P1",},
30253a848beSRajendra Nayak 	{0x1f00, "L4_PER1_P2",},
30353a848beSRajendra Nayak 	{0x2300, "L4_PER2_P1",},
30453a848beSRajendra Nayak 	{0x2400, "L4_PER2_P2",},
30553a848beSRajendra Nayak 	{0x2600, "L4_PER3_P1",},
30653a848beSRajendra Nayak 	{0x2700, "L4_PER3_P2",},
30753a848beSRajendra Nayak 	{0x2f00, "MCASP1",},
30853a848beSRajendra Nayak 	{0x3000, "MCASP2",},
30953a848beSRajendra Nayak 	{0x3100, "MCASP3",},
31053a848beSRajendra Nayak 	{0x2800, "MMU2",},
31153a848beSRajendra Nayak 	{0x0f00, "OCMC_RAM1",},
31253a848beSRajendra Nayak 	{0x1700, "OCMC_RAM2",},
31353a848beSRajendra Nayak 	{0x1900, "OCMC_RAM3",},
31453a848beSRajendra Nayak 	{0x1e00, "OCMC_ROM",},
31553a848beSRajendra Nayak 	{0x3900, "QSPI",},
31653a848beSRajendra Nayak };
31753a848beSRajendra Nayak 
31853a848beSRajendra Nayak static struct l3_flagmux_data dra_l3_flagmux_clk2 = {
31953a848beSRajendra Nayak 	.offset = 0x803600,
32053a848beSRajendra Nayak 	.l3_targ = dra_l3_target_data_clk2,
32153a848beSRajendra Nayak 	.num_targ_data = ARRAY_SIZE(dra_l3_target_data_clk2),
32253a848beSRajendra Nayak };
32353a848beSRajendra Nayak 
32453a848beSRajendra Nayak static struct l3_target_data dra_l3_target_data_clk3[] = {
32553a848beSRajendra Nayak 	{0x0100, "L3_INSTR"},
32653a848beSRajendra Nayak 	{0x0300, "DEBUGSS_CT_TBR"},
32753a848beSRajendra Nayak 	{0x0,	 "HOST CLK3"},
32853a848beSRajendra Nayak };
32953a848beSRajendra Nayak 
33053a848beSRajendra Nayak static struct l3_flagmux_data dra_l3_flagmux_clk3 = {
33153a848beSRajendra Nayak 	.offset = 0x200,
33253a848beSRajendra Nayak 	.l3_targ = dra_l3_target_data_clk3,
33353a848beSRajendra Nayak 	.num_targ_data = ARRAY_SIZE(dra_l3_target_data_clk3),
33453a848beSRajendra Nayak };
33553a848beSRajendra Nayak 
33653a848beSRajendra Nayak static struct l3_masters_data dra_l3_masters[] = {
33753a848beSRajendra Nayak 	{ 0x0, "MPU" },
33853a848beSRajendra Nayak 	{ 0x4, "CS_DAP" },
33953a848beSRajendra Nayak 	{ 0x5, "IEEE1500_2_OCP" },
34053a848beSRajendra Nayak 	{ 0x8, "DSP1_MDMA" },
34153a848beSRajendra Nayak 	{ 0x9, "DSP1_CFG" },
34253a848beSRajendra Nayak 	{ 0xA, "DSP1_DMA" },
34353a848beSRajendra Nayak 	{ 0xB, "DSP2_MDMA" },
34453a848beSRajendra Nayak 	{ 0xC, "DSP2_CFG" },
34553a848beSRajendra Nayak 	{ 0xD, "DSP2_DMA" },
34653a848beSRajendra Nayak 	{ 0xE, "IVA" },
34753a848beSRajendra Nayak 	{ 0x10, "EVE1_P1" },
34853a848beSRajendra Nayak 	{ 0x11, "EVE2_P1" },
34953a848beSRajendra Nayak 	{ 0x12, "EVE3_P1" },
35053a848beSRajendra Nayak 	{ 0x13, "EVE4_P1" },
35153a848beSRajendra Nayak 	{ 0x14, "PRUSS1 PRU1" },
35253a848beSRajendra Nayak 	{ 0x15, "PRUSS1 PRU2" },
35353a848beSRajendra Nayak 	{ 0x16, "PRUSS2 PRU1" },
35453a848beSRajendra Nayak 	{ 0x17, "PRUSS2 PRU2" },
35553a848beSRajendra Nayak 	{ 0x18, "IPU1" },
35653a848beSRajendra Nayak 	{ 0x19, "IPU2" },
35753a848beSRajendra Nayak 	{ 0x1A, "SDMA" },
35853a848beSRajendra Nayak 	{ 0x1B, "CDMA" },
35953a848beSRajendra Nayak 	{ 0x1C, "TC1_EDMA" },
36053a848beSRajendra Nayak 	{ 0x1D, "TC2_EDMA" },
36153a848beSRajendra Nayak 	{ 0x20, "DSS" },
36253a848beSRajendra Nayak 	{ 0x21, "MMU1" },
36353a848beSRajendra Nayak 	{ 0x22, "PCIE1" },
36453a848beSRajendra Nayak 	{ 0x23, "MMU2" },
36553a848beSRajendra Nayak 	{ 0x24, "VIP1" },
36653a848beSRajendra Nayak 	{ 0x25, "VIP2" },
36753a848beSRajendra Nayak 	{ 0x26, "VIP3" },
36853a848beSRajendra Nayak 	{ 0x27, "VPE" },
36953a848beSRajendra Nayak 	{ 0x28, "GPU_P1" },
37053a848beSRajendra Nayak 	{ 0x29, "BB2D" },
37153a848beSRajendra Nayak 	{ 0x29, "GPU_P2" },
37253a848beSRajendra Nayak 	{ 0x2B, "GMAC_SW" },
37353a848beSRajendra Nayak 	{ 0x2C, "USB3" },
37453a848beSRajendra Nayak 	{ 0x2D, "USB2_SS" },
37553a848beSRajendra Nayak 	{ 0x2E, "USB2_ULPI_SS1" },
37653a848beSRajendra Nayak 	{ 0x2F, "USB2_ULPI_SS2" },
37753a848beSRajendra Nayak 	{ 0x30, "CSI2_1" },
37853a848beSRajendra Nayak 	{ 0x31, "CSI2_2" },
37953a848beSRajendra Nayak 	{ 0x33, "SATA" },
38053a848beSRajendra Nayak 	{ 0x34, "EVE1_P2" },
38153a848beSRajendra Nayak 	{ 0x35, "EVE2_P2" },
38253a848beSRajendra Nayak 	{ 0x36, "EVE3_P2" },
38353a848beSRajendra Nayak 	{ 0x37, "EVE4_P2" }
38453a848beSRajendra Nayak };
38553a848beSRajendra Nayak 
38653a848beSRajendra Nayak static struct l3_flagmux_data *dra_l3_flagmux[] = {
38753a848beSRajendra Nayak 	&dra_l3_flagmux_clk1,
38853a848beSRajendra Nayak 	&dra_l3_flagmux_clk2,
38953a848beSRajendra Nayak 	&dra_l3_flagmux_clk3,
39053a848beSRajendra Nayak };
39153a848beSRajendra Nayak 
39253a848beSRajendra Nayak static const struct omap_l3 dra_l3_data = {
39353a848beSRajendra Nayak 	.l3_base = { [1] = L3_BASE_IS_SUBMODULE },
39453a848beSRajendra Nayak 	.l3_flagmux = dra_l3_flagmux,
39553a848beSRajendra Nayak 	.num_modules = ARRAY_SIZE(dra_l3_flagmux),
39653a848beSRajendra Nayak 	.l3_masters = dra_l3_masters,
39753a848beSRajendra Nayak 	.num_masters = ARRAY_SIZE(dra_l3_masters),
39853a848beSRajendra Nayak 	/* The 6 MSBs of register field used to distinguish initiator */
39953a848beSRajendra Nayak 	.mst_addr_mask = 0xFC,
40053a848beSRajendra Nayak };
40153a848beSRajendra Nayak 
40227b7d5f3SAfzal Mohammed /* AM4372 data */
40327b7d5f3SAfzal Mohammed static struct l3_target_data am4372_l3_target_data_200f[] = {
40427b7d5f3SAfzal Mohammed 	{0xf00,  "EMIF",},
40527b7d5f3SAfzal Mohammed 	{0x1200, "DES",},
40627b7d5f3SAfzal Mohammed 	{0x400,  "OCMCRAM",},
40727b7d5f3SAfzal Mohammed 	{0x700,  "TPTC0",},
40827b7d5f3SAfzal Mohammed 	{0x800,  "TPTC1",},
40927b7d5f3SAfzal Mohammed 	{0x900,  "TPTC2"},
41027b7d5f3SAfzal Mohammed 	{0xb00,  "TPCC",},
41127b7d5f3SAfzal Mohammed 	{0xd00,  "DEBUGSS",},
41227b7d5f3SAfzal Mohammed 	{0xdead, L3_TARGET_NOT_SUPPORTED,},
41327b7d5f3SAfzal Mohammed 	{0x200,  "SHA",},
41427b7d5f3SAfzal Mohammed 	{0xc00,  "SGX530",},
41527b7d5f3SAfzal Mohammed 	{0x500,  "AES0",},
41627b7d5f3SAfzal Mohammed 	{0xa00,  "L4_FAST",},
41727b7d5f3SAfzal Mohammed 	{0x300,  "MPUSS_L2_RAM",},
41827b7d5f3SAfzal Mohammed 	{0x100,  "ICSS",},
41927b7d5f3SAfzal Mohammed };
42027b7d5f3SAfzal Mohammed 
42127b7d5f3SAfzal Mohammed static struct l3_flagmux_data am4372_l3_flagmux_200f = {
42227b7d5f3SAfzal Mohammed 	.offset = 0x1000,
42327b7d5f3SAfzal Mohammed 	.l3_targ = am4372_l3_target_data_200f,
42427b7d5f3SAfzal Mohammed 	.num_targ_data = ARRAY_SIZE(am4372_l3_target_data_200f),
42527b7d5f3SAfzal Mohammed };
42627b7d5f3SAfzal Mohammed 
42727b7d5f3SAfzal Mohammed static struct l3_target_data am4372_l3_target_data_100s[] = {
42827b7d5f3SAfzal Mohammed 	{0x100, "L4_PER_0",},
42927b7d5f3SAfzal Mohammed 	{0x200, "L4_PER_1",},
43027b7d5f3SAfzal Mohammed 	{0x300, "L4_PER_2",},
43127b7d5f3SAfzal Mohammed 	{0x400, "L4_PER_3",},
43227b7d5f3SAfzal Mohammed 	{0x800, "McASP0",},
43327b7d5f3SAfzal Mohammed 	{0x900, "McASP1",},
43427b7d5f3SAfzal Mohammed 	{0xC00, "MMCHS2",},
43527b7d5f3SAfzal Mohammed 	{0x700, "GPMC",},
43627b7d5f3SAfzal Mohammed 	{0xD00, "L4_FW",},
43727b7d5f3SAfzal Mohammed 	{0xdead, L3_TARGET_NOT_SUPPORTED,},
43827b7d5f3SAfzal Mohammed 	{0x500, "ADCTSC",},
43927b7d5f3SAfzal Mohammed 	{0xE00, "L4_WKUP",},
44027b7d5f3SAfzal Mohammed 	{0xA00, "MAG_CARD",},
44127b7d5f3SAfzal Mohammed };
44227b7d5f3SAfzal Mohammed 
44327b7d5f3SAfzal Mohammed static struct l3_flagmux_data am4372_l3_flagmux_100s = {
44427b7d5f3SAfzal Mohammed 	.offset = 0x600,
44527b7d5f3SAfzal Mohammed 	.l3_targ = am4372_l3_target_data_100s,
44627b7d5f3SAfzal Mohammed 	.num_targ_data = ARRAY_SIZE(am4372_l3_target_data_100s),
44727b7d5f3SAfzal Mohammed };
44827b7d5f3SAfzal Mohammed 
44927b7d5f3SAfzal Mohammed static struct l3_masters_data am4372_l3_masters[] = {
45027b7d5f3SAfzal Mohammed 	{ 0x0, "M1 (128-bit)"},
45127b7d5f3SAfzal Mohammed 	{ 0x1, "M2 (64-bit)"},
45227b7d5f3SAfzal Mohammed 	{ 0x4, "DAP"},
45327b7d5f3SAfzal Mohammed 	{ 0x5, "P1500"},
45427b7d5f3SAfzal Mohammed 	{ 0xC, "ICSS0"},
45527b7d5f3SAfzal Mohammed 	{ 0xD, "ICSS1"},
45627b7d5f3SAfzal Mohammed 	{ 0x14, "Wakeup Processor"},
45727b7d5f3SAfzal Mohammed 	{ 0x18, "TPTC0 Read"},
45827b7d5f3SAfzal Mohammed 	{ 0x19, "TPTC0 Write"},
45927b7d5f3SAfzal Mohammed 	{ 0x1A, "TPTC1 Read"},
46027b7d5f3SAfzal Mohammed 	{ 0x1B, "TPTC1 Write"},
46127b7d5f3SAfzal Mohammed 	{ 0x1C, "TPTC2 Read"},
46227b7d5f3SAfzal Mohammed 	{ 0x1D, "TPTC2 Write"},
46327b7d5f3SAfzal Mohammed 	{ 0x20, "SGX530"},
46427b7d5f3SAfzal Mohammed 	{ 0x21, "OCP WP Traffic Probe"},
46527b7d5f3SAfzal Mohammed 	{ 0x22, "OCP WP DMA Profiling"},
46627b7d5f3SAfzal Mohammed 	{ 0x23, "OCP WP Event Trace"},
46727b7d5f3SAfzal Mohammed 	{ 0x25, "DSS"},
46827b7d5f3SAfzal Mohammed 	{ 0x28, "Crypto DMA RD"},
46927b7d5f3SAfzal Mohammed 	{ 0x29, "Crypto DMA WR"},
47027b7d5f3SAfzal Mohammed 	{ 0x2C, "VPFE0"},
47127b7d5f3SAfzal Mohammed 	{ 0x2D, "VPFE1"},
47227b7d5f3SAfzal Mohammed 	{ 0x30, "GEMAC"},
47327b7d5f3SAfzal Mohammed 	{ 0x34, "USB0 RD"},
47427b7d5f3SAfzal Mohammed 	{ 0x35, "USB0 WR"},
47527b7d5f3SAfzal Mohammed 	{ 0x36, "USB1 RD"},
47627b7d5f3SAfzal Mohammed 	{ 0x37, "USB1 WR"},
47727b7d5f3SAfzal Mohammed };
47827b7d5f3SAfzal Mohammed 
47927b7d5f3SAfzal Mohammed static struct l3_flagmux_data *am4372_l3_flagmux[] = {
48027b7d5f3SAfzal Mohammed 	&am4372_l3_flagmux_200f,
48127b7d5f3SAfzal Mohammed 	&am4372_l3_flagmux_100s,
48227b7d5f3SAfzal Mohammed };
48327b7d5f3SAfzal Mohammed 
48427b7d5f3SAfzal Mohammed static const struct omap_l3 am4372_l3_data = {
48527b7d5f3SAfzal Mohammed 	.l3_flagmux = am4372_l3_flagmux,
48627b7d5f3SAfzal Mohammed 	.num_modules = ARRAY_SIZE(am4372_l3_flagmux),
48727b7d5f3SAfzal Mohammed 	.l3_masters = am4372_l3_masters,
48827b7d5f3SAfzal Mohammed 	.num_masters = ARRAY_SIZE(am4372_l3_masters),
48927b7d5f3SAfzal Mohammed 	/* All 6 bits of register field used to distinguish initiator */
49027b7d5f3SAfzal Mohammed 	.mst_addr_mask = 0x3F,
49127b7d5f3SAfzal Mohammed };
49227b7d5f3SAfzal Mohammed 
493c10d5c9eSSricharan R #endif	/* __OMAP_L3_NOC_H */
494