summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorSuresh Mangipudi <smangipudi@nvidia.com>2018-02-20 07:00:45 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-05-11 09:58:02 -0400
commitf62a90bb79f4dc2f5385d9913a0dea74cb83bf01 (patch)
treee033eb90022c8f541bc8636fde261f2d0ea5e7a1 /include/linux
parentc5f63500083af0b373abc248b62f87fa75b87602 (diff)
nvlink: Implement nvlink shutdown during SC0/SC7
This change implements below nvlink shutdown steps: * Ensure nvlink is idle and no pending transactions * Turn off MSS Nvlink slave aperture * Turn off MSS Nvlink core clocks * Transition the link to SWCFG * Transition the link to OFF * Assert t19x nvlink resets and disable the clks Also this change adds "shutdown" debugfs node that can be used to shutdown t19x nvlink. Bug 200402583 Bug 200389569 Change-Id: I7312f3c49ed643a66325b9280b392394008276d4 Signed-off-by: Suresh Mangipudi <smangipudi@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1661191 Reviewed-by: Petlozu Pravareshwar <petlozup@nvidia.com> Tested-by: Petlozu Pravareshwar <petlozup@nvidia.com> Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: Tejal Kudav <tkudav@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu <vsubbu@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-nvlink.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/platform/tegra/tegra-nvlink.h b/include/linux/platform/tegra/tegra-nvlink.h
index a048b64ab..141bbf106 100644
--- a/include/linux/platform/tegra/tegra-nvlink.h
+++ b/include/linux/platform/tegra/tegra-nvlink.h
@@ -182,6 +182,7 @@ struct device_operations {
182 int (*dev_early_init)(struct nvlink_device *ndev); 182 int (*dev_early_init)(struct nvlink_device *ndev);
183 int (*dev_interface_init)(struct nvlink_device *ndev); 183 int (*dev_interface_init)(struct nvlink_device *ndev);
184 int (*dev_reg_init)(struct nvlink_device *ndev); 184 int (*dev_reg_init)(struct nvlink_device *ndev);
185 int (*dev_interface_disable)(struct nvlink_device *ndev);
185 int (*dev_shutdown)(struct nvlink_device *ndev); 186 int (*dev_shutdown)(struct nvlink_device *ndev);
186}; 187};
187 188
@@ -283,4 +284,5 @@ int nvlink_transition_intranode_conn_off_to_safe(struct nvlink_device *ndev);
283int nvlink_train_intranode_conn_safe_to_hs(struct nvlink_device *ndev); 284int nvlink_train_intranode_conn_safe_to_hs(struct nvlink_device *ndev);
284int nvlink_initialize_endpoint(struct nvlink_device *ndev); 285int nvlink_initialize_endpoint(struct nvlink_device *ndev);
285int nvlink_transition_intranode_conn_hs_to_safe(struct nvlink_device *ndev); 286int nvlink_transition_intranode_conn_hs_to_safe(struct nvlink_device *ndev);
287int nvlink_shutdown(struct nvlink_device *ndev);
286#endif /* TEGRA_NVLINK_H */ 288#endif /* TEGRA_NVLINK_H */