summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv100/nvlink_gv100.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv100/nvlink_gv100.c')
-rw-r--r--drivers/gpu/nvgpu/gv100/nvlink_gv100.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/gv100/nvlink_gv100.c b/drivers/gpu/nvgpu/gv100/nvlink_gv100.c
index 7e25c946..c87a3ce9 100644
--- a/drivers/gpu/nvgpu/gv100/nvlink_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/nvlink_gv100.c
@@ -2482,7 +2482,8 @@ int gv100_nvlink_link_set_sublink_mode(struct gk20a *g, u32 link_id,
2482 bool is_rx_sublink, u32 mode) 2482 bool is_rx_sublink, u32 mode)
2483{ 2483{
2484 int err = 0; 2484 int err = 0;
2485 u32 rx_sublink_state, tx_sublink_state; 2485 u32 rx_sublink_state = nvgpu_nvlink_sublink_rx__last;
2486 u32 tx_sublink_state = nvgpu_nvlink_sublink_tx__last;
2486 u32 reg; 2487 u32 reg;
2487 2488
2488 if (!(BIT(link_id) & g->nvlink.enabled_links)) 2489 if (!(BIT(link_id) & g->nvlink.enabled_links))
@@ -2492,8 +2493,12 @@ int gv100_nvlink_link_set_sublink_mode(struct gk20a *g, u32 link_id,
2492 if (err) 2493 if (err)
2493 return err; 2494 return err;
2494 2495
2495 rx_sublink_state = g->ops.nvlink.get_rx_sublink_state(g, link_id); 2496 if (is_rx_sublink)
2496 tx_sublink_state = g->ops.nvlink.get_tx_sublink_state(g, link_id); 2497 rx_sublink_state = g->ops.nvlink.get_rx_sublink_state(g,
2498 link_id);
2499 else
2500 tx_sublink_state = g->ops.nvlink.get_tx_sublink_state(g,
2501 link_id);
2497 2502
2498 switch (mode) { 2503 switch (mode) {
2499 case nvgpu_nvlink_sublink_tx_hs: 2504 case nvgpu_nvlink_sublink_tx_hs:
@@ -2656,7 +2661,7 @@ u32 gv100_nvlink_link_get_sublink_mode(struct gk20a *g, u32 link_id,
2656 return nvgpu_nvlink_sublink_tx_safe; 2661 return nvgpu_nvlink_sublink_tx_safe;
2657 if (state == nvl_sl0_slsm_status_tx_primary_state_off_v()) 2662 if (state == nvl_sl0_slsm_status_tx_primary_state_off_v())
2658 return nvgpu_nvlink_sublink_tx_off; 2663 return nvgpu_nvlink_sublink_tx_off;
2659 return nvgpu_nvlink_sublink_tx_off; 2664 return nvgpu_nvlink_sublink_tx__last;
2660 } else { 2665 } else {
2661 state = g->ops.nvlink.get_rx_sublink_state(g, link_id); 2666 state = g->ops.nvlink.get_rx_sublink_state(g, link_id);
2662 if (state == nvl_sl1_slsm_status_rx_primary_state_hs_v()) 2667 if (state == nvl_sl1_slsm_status_rx_primary_state_hs_v())
@@ -2667,7 +2672,7 @@ u32 gv100_nvlink_link_get_sublink_mode(struct gk20a *g, u32 link_id,
2667 return nvgpu_nvlink_sublink_rx_safe; 2672 return nvgpu_nvlink_sublink_rx_safe;
2668 if (state == nvl_sl1_slsm_status_rx_primary_state_off_v()) 2673 if (state == nvl_sl1_slsm_status_rx_primary_state_off_v())
2669 return nvgpu_nvlink_sublink_rx_off; 2674 return nvgpu_nvlink_sublink_rx_off;
2670 return nvgpu_nvlink_sublink_rx_off; 2675 return nvgpu_nvlink_sublink_rx__last;
2671 } 2676 }
2672 return nvgpu_nvlink_sublink_tx__last; 2677 return nvgpu_nvlink_sublink_tx__last;
2673} 2678}