diff options
-rw-r--r-- | drivers/bus/omap_l3_noc.c | 9 | ||||
-rw-r--r-- | drivers/bus/omap_l3_noc.h | 13 |
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 | ||
42 | static 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 |