From f62a90bb79f4dc2f5385d9913a0dea74cb83bf01 Mon Sep 17 00:00:00 2001 From: Suresh Mangipudi Date: Tue, 20 Feb 2018 17:30:45 +0530 Subject: 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 Reviewed-on: https://git-master.nvidia.com/r/1661191 Reviewed-by: Petlozu Pravareshwar Tested-by: Petlozu Pravareshwar Reviewed-by: svc-mobile-coverity Reviewed-by: Tejal Kudav GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions --- include/linux/platform/tegra/tegra-nvlink.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/linux') 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 { int (*dev_early_init)(struct nvlink_device *ndev); int (*dev_interface_init)(struct nvlink_device *ndev); int (*dev_reg_init)(struct nvlink_device *ndev); + int (*dev_interface_disable)(struct nvlink_device *ndev); int (*dev_shutdown)(struct nvlink_device *ndev); }; @@ -283,4 +284,5 @@ int nvlink_transition_intranode_conn_off_to_safe(struct nvlink_device *ndev); int nvlink_train_intranode_conn_safe_to_hs(struct nvlink_device *ndev); int nvlink_initialize_endpoint(struct nvlink_device *ndev); int nvlink_transition_intranode_conn_hs_to_safe(struct nvlink_device *ndev); +int nvlink_shutdown(struct nvlink_device *ndev); #endif /* TEGRA_NVLINK_H */ -- cgit v1.2.2