diff options
| author | Sumit Gupta <sumitg@nvidia.com> | 2018-08-08 02:43:06 -0400 |
|---|---|---|
| committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-08-09 19:29:49 -0400 |
| commit | dd01cccb50c493c38ac1ce35cd5612c83f1f9b77 (patch) | |
| tree | 30df81b375f3af486f05b7015164726ff95a2bc4 /include/linux | |
| parent | b65109afbbdf20b12e07bf42d15dbd392986256a (diff) | |
platform: tegra: check clock enabled before register access
Adding check for clock enabled by calling __clk_is_enabled()
before accessing registers for CV-NOC.
This was causing additional CBB errors on reading error valid
register of CV-NOC while reporting original SError cause due
to any illegal access in other cluster NOC's.
Bug 200340783
Change-Id: I819f99264c4e934e6ae0facf39d35fed15e79957
Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1794891
GVS: Gerrit_Virtual_Submit
Reviewed-by: Puneet Saxena <puneets@nvidia.com>
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/tegra19x_cbb.h | 1 | ||||
| -rw-r--r-- | include/linux/platform/tegra/tegra_cbb.h | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/platform/tegra/tegra19x_cbb.h b/include/linux/platform/tegra/tegra19x_cbb.h index c3717fcff..874a082de 100644 --- a/include/linux/platform/tegra/tegra19x_cbb.h +++ b/include/linux/platform/tegra/tegra19x_cbb.h | |||
| @@ -18,6 +18,7 @@ extern int nvcvnas_idle(void); | |||
| 18 | extern int is_nvcvnas_probed(void); | 18 | extern int is_nvcvnas_probed(void); |
| 19 | extern int nvcvnas_busy_no_rpm(void); | 19 | extern int nvcvnas_busy_no_rpm(void); |
| 20 | extern int nvcvnas_idle_no_rpm(void); | 20 | extern int nvcvnas_idle_no_rpm(void); |
| 21 | extern int is_nvcvnas_clk_enabled(void); | ||
| 21 | 22 | ||
| 22 | static char *t194_master_id[] = { | 23 | static char *t194_master_id[] = { |
| 23 | "CCPLEX", /* 0x1 */ | 24 | "CCPLEX", /* 0x1 */ |
diff --git a/include/linux/platform/tegra/tegra_cbb.h b/include/linux/platform/tegra/tegra_cbb.h index 2789bce60..e897f8aac 100644 --- a/include/linux/platform/tegra/tegra_cbb.h +++ b/include/linux/platform/tegra/tegra_cbb.h | |||
| @@ -140,6 +140,7 @@ struct tegra_cbb_errlog_record { | |||
| 140 | int apb_bridge_cnt; | 140 | int apb_bridge_cnt; |
| 141 | bool is_clk_rst; | 141 | bool is_clk_rst; |
| 142 | int (*is_cluster_probed)(void); | 142 | int (*is_cluster_probed)(void); |
| 143 | int (*is_clk_enabled)(void); | ||
| 143 | int (*tegra_noc_en_clk_rpm)(void); | 144 | int (*tegra_noc_en_clk_rpm)(void); |
| 144 | int (*tegra_noc_dis_clk_rpm)(void); | 145 | int (*tegra_noc_dis_clk_rpm)(void); |
| 145 | int (*tegra_noc_en_clk_no_rpm)(void); | 146 | int (*tegra_noc_en_clk_no_rpm)(void); |
| @@ -163,6 +164,7 @@ struct tegra_cbb_noc_data { | |||
| 163 | bool is_ax2apb_bridge_connected; | 164 | bool is_ax2apb_bridge_connected; |
| 164 | bool is_clk_rst; | 165 | bool is_clk_rst; |
| 165 | int (*is_cluster_probed)(void); | 166 | int (*is_cluster_probed)(void); |
| 167 | int (*is_clk_enabled)(void); | ||
| 166 | int (*tegra_noc_en_clk_rpm)(void); | 168 | int (*tegra_noc_en_clk_rpm)(void); |
| 167 | int (*tegra_noc_dis_clk_rpm)(void); | 169 | int (*tegra_noc_dis_clk_rpm)(void); |
| 168 | int (*tegra_noc_en_clk_no_rpm)(void); | 170 | int (*tegra_noc_en_clk_no_rpm)(void); |
