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