diff options
| author | Suresh Mangipudi <smangipudi@nvidia.com> | 2018-02-20 07:00:45 -0500 |
|---|---|---|
| committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-05-11 09:58:02 -0400 |
| commit | f62a90bb79f4dc2f5385d9913a0dea74cb83bf01 (patch) | |
| tree | e033eb90022c8f541bc8636fde261f2d0ea5e7a1 /include/linux | |
| parent | c5f63500083af0b373abc248b62f87fa75b87602 (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.h | 2 |
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); | |||
| 283 | int nvlink_train_intranode_conn_safe_to_hs(struct nvlink_device *ndev); | 284 | int nvlink_train_intranode_conn_safe_to_hs(struct nvlink_device *ndev); |
| 284 | int nvlink_initialize_endpoint(struct nvlink_device *ndev); | 285 | int nvlink_initialize_endpoint(struct nvlink_device *ndev); |
| 285 | int nvlink_transition_intranode_conn_hs_to_safe(struct nvlink_device *ndev); | 286 | int nvlink_transition_intranode_conn_hs_to_safe(struct nvlink_device *ndev); |
| 287 | int nvlink_shutdown(struct nvlink_device *ndev); | ||
| 286 | #endif /* TEGRA_NVLINK_H */ | 288 | #endif /* TEGRA_NVLINK_H */ |
