diff options
| author | sumitg <sumitg@nvidia.com> | 2018-09-12 07:00:27 -0400 |
|---|---|---|
| committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-09-14 18:34:29 -0400 |
| commit | 3ca32bf749eef2c338d9f8707001ca883e9933e8 (patch) | |
| tree | 297edada9765b0a79eea5d303ad0112b3e7795b3 /include/linux | |
| parent | c662725996835f843f5a42e42d2c5e1fe0e90f85 (diff) | |
platform: tegra: parse userbits for cluster NOC's
Parse failed transaction's userbits separately for
Cluster Fabric NOC's from CBB central NOC's.
Bug 200340783
Change-Id: I8d635b5a28b3e15e6a86978b2dc8325e131f476d
Signed-off-by: sumitg <sumitg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1821397
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Alexander Van Brunt <avanbrunt@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/platform/tegra/tegra_cbb.h | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/include/linux/platform/tegra/tegra_cbb.h b/include/linux/platform/tegra/tegra_cbb.h index 6a1f1b15f..690c99555 100644 --- a/include/linux/platform/tegra/tegra_cbb.h +++ b/include/linux/platform/tegra/tegra_cbb.h | |||
| @@ -59,28 +59,8 @@ | |||
| 59 | #define CBB_EXTRACT(_x_, _msb_, _lsb_) \ | 59 | #define CBB_EXTRACT(_x_, _msb_, _lsb_) \ |
| 60 | ((_x_ & CBB_MASK(_msb_, _lsb_)) >> _lsb_) | 60 | ((_x_ & CBB_MASK(_msb_, _lsb_)) >> _lsb_) |
| 61 | 61 | ||
| 62 | 62 | #define get_noc_errlog_subfield(_x_, _msb_, _lsb_) \ | |
| 63 | #define get_cbb_errlog0_trans_opc(_x_) CBB_EXTRACT(_x_, 4, 1) | 63 | CBB_EXTRACT(_x_, _msb_, _lsb_) |
| 64 | #define get_cbb_errlog0_code(_x_) CBB_EXTRACT(_x_, 10, 8) | ||
| 65 | #define get_cbb_errlog0_src(_x_) CBB_EXTRACT(_x_, 27, 16) | ||
| 66 | |||
| 67 | #define get_cbb_errlog5_axi_id(_x_) CBB_EXTRACT(_x_, 30, 23) | ||
| 68 | #define get_cbb_errlog5_mstr_id(_x_) CBB_EXTRACT(_x_, 22, 19) | ||
| 69 | #define get_cbb_errlog5_vqc(_x_) CBB_EXTRACT(_x_, 18, 17) | ||
| 70 | #define get_cbb_errlog5_grpsec(_x_) CBB_EXTRACT(_x_, 16, 10) | ||
| 71 | #define get_cbb_errlog5_falconsec(_x_) CBB_EXTRACT(_x_, 9, 8) | ||
| 72 | #define get_cbb_errlog5_axprot(_x_) CBB_EXTRACT(_x_, 7, 5) | ||
| 73 | #define get_cbb_errlog5_non_modify(_x_) CBB_EXTRACT(_x_, 4, 4) | ||
| 74 | #define get_cbb_errlog5_axcache(_x_) CBB_EXTRACT(_x_, 3, 0) | ||
| 75 | |||
| 76 | #define get_cbb_routeid_initflow(_x_, _msb_, _lsb_) \ | ||
| 77 | CBB_EXTRACT(_x_, _msb_, _lsb_) | ||
| 78 | #define get_cbb_routeid_targflow(_x_, _msb_, _lsb_) \ | ||
| 79 | CBB_EXTRACT(_x_, _msb_, _lsb_) | ||
| 80 | #define get_cbb_routeid_targsubrange(_x_, _msb_, _lsb_) \ | ||
| 81 | CBB_EXTRACT(_x_, _msb_, _lsb_) | ||
| 82 | #define get_cbb_routeid_seqid(_x_, _msb_, _lsb_) \ | ||
| 83 | CBB_EXTRACT(_x_, _msb_, _lsb_) | ||
| 84 | 64 | ||
| 85 | struct tegra_noc_errors { | 65 | struct tegra_noc_errors { |
| 86 | char *errcode; | 66 | char *errcode; |
| @@ -107,6 +87,17 @@ struct tegra_lookup_noc_aperture { | |||
| 107 | u16 seqid; | 87 | u16 seqid; |
| 108 | }; | 88 | }; |
| 109 | 89 | ||
| 90 | struct tegra_noc_userbits { | ||
| 91 | u8 axcache; | ||
| 92 | u8 non_mod; | ||
| 93 | u8 axprot; | ||
| 94 | u8 falconsec; | ||
| 95 | u8 grpsec; | ||
| 96 | u8 vqc; | ||
| 97 | u8 mstr_id; | ||
| 98 | u8 axi_id; | ||
| 99 | }; | ||
| 100 | |||
| 110 | struct tegra_cbb_errlog_record { | 101 | struct tegra_cbb_errlog_record { |
| 111 | struct list_head node; | 102 | struct list_head node; |
| 112 | struct serr_hook *callback; | 103 | struct serr_hook *callback; |
| @@ -130,6 +121,8 @@ struct tegra_cbb_errlog_record { | |||
| 130 | void (*stallen)(void __iomem *addr); | 121 | void (*stallen)(void __iomem *addr); |
| 131 | void (*tegra_noc_parse_routeid) | 122 | void (*tegra_noc_parse_routeid) |
| 132 | (struct tegra_lookup_noc_aperture *, u64); | 123 | (struct tegra_lookup_noc_aperture *, u64); |
| 124 | void (*tegra_noc_parse_userbits) | ||
| 125 | (struct tegra_noc_userbits *, u64); | ||
| 133 | struct tegra_lookup_noc_aperture *noc_aperture; | 126 | struct tegra_lookup_noc_aperture *noc_aperture; |
| 134 | int max_noc_aperture; | 127 | int max_noc_aperture; |
| 135 | char **tegra_noc_routeid_initflow; | 128 | char **tegra_noc_routeid_initflow; |
| @@ -155,6 +148,8 @@ struct tegra_cbb_noc_data { | |||
| 155 | void (*stallen)(void __iomem *addr); | 148 | void (*stallen)(void __iomem *addr); |
| 156 | void (*tegra_noc_parse_routeid) | 149 | void (*tegra_noc_parse_routeid) |
| 157 | (struct tegra_lookup_noc_aperture *, u64); | 150 | (struct tegra_lookup_noc_aperture *, u64); |
| 151 | void (*tegra_noc_parse_userbits) | ||
| 152 | (struct tegra_noc_userbits *, u64); | ||
| 158 | struct tegra_lookup_noc_aperture *noc_aperture; | 153 | struct tegra_lookup_noc_aperture *noc_aperture; |
| 159 | int max_error; | 154 | int max_error; |
| 160 | int max_noc_aperture; | 155 | int max_noc_aperture; |
