aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/bus/omap_l3_noc.c9
-rw-r--r--drivers/bus/omap_l3_noc.h13
2 files changed, 21 insertions, 1 deletions
diff --git a/drivers/bus/omap_l3_noc.c b/drivers/bus/omap_l3_noc.c
index 00e4fed4a39b..9d021d002bec 100644
--- a/drivers/bus/omap_l3_noc.c
+++ b/drivers/bus/omap_l3_noc.c
@@ -60,8 +60,10 @@ static int l3_handle_target(struct omap_l3 *l3, void __iomem *base,
60{ 60{
61 int k; 61 int k;
62 u32 std_err_main, clear, masterid; 62 u32 std_err_main, clear, masterid;
63 u8 op_code;
63 void __iomem *l3_targ_base; 64 void __iomem *l3_targ_base;
64 void __iomem *l3_targ_stderr, *l3_targ_slvofslsb, *l3_targ_mstaddr; 65 void __iomem *l3_targ_stderr, *l3_targ_slvofslsb, *l3_targ_mstaddr;
66 void __iomem *l3_targ_hdr;
65 struct l3_target_data *l3_targ_inst; 67 struct l3_target_data *l3_targ_inst;
66 struct l3_masters_data *master; 68 struct l3_masters_data *master;
67 char *target_name, *master_name = "UN IDENTIFIED"; 69 char *target_name, *master_name = "UN IDENTIFIED";
@@ -96,6 +98,7 @@ static int l3_handle_target(struct omap_l3 *l3, void __iomem *base,
96 readl_relaxed(l3_targ_slvofslsb)); 98 readl_relaxed(l3_targ_slvofslsb));
97 99
98 l3_targ_mstaddr = l3_targ_base + L3_TARG_STDERRLOG_MSTADDR; 100 l3_targ_mstaddr = l3_targ_base + L3_TARG_STDERRLOG_MSTADDR;
101 l3_targ_hdr = l3_targ_base + L3_TARG_STDERRLOG_HDR;
99 break; 102 break;
100 103
101 case CUSTOM_ERROR: 104 case CUSTOM_ERROR:
@@ -103,6 +106,7 @@ static int l3_handle_target(struct omap_l3 *l3, void __iomem *base,
103 106
104 l3_targ_mstaddr = l3_targ_base + 107 l3_targ_mstaddr = l3_targ_base +
105 L3_TARG_STDERRLOG_CINFO_MSTADDR; 108 L3_TARG_STDERRLOG_CINFO_MSTADDR;
109 l3_targ_hdr = l3_targ_base + L3_TARG_STDERRLOG_CINFO_OPCODE;
106 break; 110 break;
107 111
108 default: 112 default:
@@ -122,11 +126,14 @@ static int l3_handle_target(struct omap_l3 *l3, void __iomem *base,
122 } 126 }
123 } 127 }
124 128
129 op_code = readl_relaxed(l3_targ_hdr) & 0x7;
130
125 WARN(true, 131 WARN(true,
126 "%s:L3 %s Error: MASTER %s TARGET %s%s\n", 132 "%s:L3 %s Error: MASTER %s TARGET %s (%s)%s\n",
127 dev_name(l3->dev), 133 dev_name(l3->dev),
128 err_description, 134 err_description,
129 master_name, target_name, 135 master_name, target_name,
136 l3_transaction_type[op_code],
130 err_string); 137 err_string);
131 138
132 /* clear the std error log*/ 139 /* clear the std error log*/
diff --git a/drivers/bus/omap_l3_noc.h b/drivers/bus/omap_l3_noc.h
index 4e18307470f6..6670fd98ce7c 100644
--- a/drivers/bus/omap_l3_noc.h
+++ b/drivers/bus/omap_l3_noc.h
@@ -29,14 +29,27 @@
29 29
30/* L3 TARG register offsets */ 30/* L3 TARG register offsets */
31#define L3_TARG_STDERRLOG_MAIN 0x48 31#define L3_TARG_STDERRLOG_MAIN 0x48
32#define L3_TARG_STDERRLOG_HDR 0x4c
32#define L3_TARG_STDERRLOG_MSTADDR 0x50 33#define L3_TARG_STDERRLOG_MSTADDR 0x50
33#define L3_TARG_STDERRLOG_SLVOFSLSB 0x5c 34#define L3_TARG_STDERRLOG_SLVOFSLSB 0x5c
34#define L3_TARG_STDERRLOG_CINFO_MSTADDR 0x68 35#define L3_TARG_STDERRLOG_CINFO_MSTADDR 0x68
36#define L3_TARG_STDERRLOG_CINFO_OPCODE 0x6c
35#define L3_FLAGMUX_REGERR0 0xc 37#define L3_FLAGMUX_REGERR0 0xc
36#define L3_FLAGMUX_MASK0 0x8 38#define L3_FLAGMUX_MASK0 0x8
37 39
38#define L3_TARGET_NOT_SUPPORTED NULL 40#define L3_TARGET_NOT_SUPPORTED NULL
39 41
42static const char * const l3_transaction_type[] = {
43 /* 0 0 0 */ "Idle",
44 /* 0 0 1 */ "Write",
45 /* 0 1 0 */ "Read",
46 /* 0 1 1 */ "ReadEx",
47 /* 1 0 0 */ "Read Link",
48 /* 1 0 1 */ "Write Non-Posted",
49 /* 1 1 0 */ "Write Conditional",
50 /* 1 1 1 */ "Write Broadcast",
51};
52
40/** 53/**
41 * struct l3_masters_data - L3 Master information 54 * struct l3_masters_data - L3 Master information
42 * @id: ID of the L3 Master 55 * @id: ID of the L3 Master