From 0601fd25a5e01d0da638efef13c58b64f198bafb Mon Sep 17 00:00:00 2001 From: Thomas Fleury Date: Tue, 23 Jan 2018 14:20:43 -0800 Subject: gpu: nvgpu: gv100: nvlink endpoint driver The following changes implements the initial (as per bringup) nvlink driver. (1) SW initialization of nvlink core driver structures (2) Nvlink interrupt handling (3) Device initialization (IOCTRL, pll and clocks, device level intr) (4) Falcon support for minion (5) Minion load and bootstrapping (6) Link initialization and DL PROD settings (7) Device Interface init (and switching HSHUB to nvlink) (8) HS set/get mode for both link and sublink (9) Topology discovery and VBIOS settings. (10) Ensures we get physical contiguous memory when Nvlink is enabled This driver includes a hack for the current single dev/single link limitation. JIRA: EVLR-2331 JIRA: EVLR-2330 JIRA: EVLR-2329 JIRA: EVLR-2328 Change-Id: Idca9a819179376cc655784482b24b575a52fa9e5 Signed-off-by: Thomas Fleury Reviewed-on: https://git-master.nvidia.com/r/1656790 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/gk20a.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 02c7d0d9..40656edd 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -967,6 +967,8 @@ struct gpu_ops { void (*isr_stall)(struct gk20a *g); bool (*is_intr_hub_pending)(struct gk20a *g, u32 mc_intr); bool (*is_intr_nvlink_pending)(struct gk20a *g, u32 mc_intr); + bool (*is_stall_and_eng_intr_pending)(struct gk20a *g, + u32 act_eng_id); u32 (*intr_stall)(struct gk20a *g); void (*intr_stall_pause)(struct gk20a *g); void (*intr_stall_resume)(struct gk20a *g); @@ -1064,10 +1066,10 @@ struct gpu_ops { int (*check_priv_security)(struct gk20a *g); } fuse; struct { - u32 (*init)(struct gk20a *g); - u32 (*discover_ioctrl)(struct gk20a *g); - u32 (*discover_link)(struct gk20a *g); - u32 (*isr)(struct gk20a *g); + int (*init)(struct gk20a *g); + int (*discover_ioctrl)(struct gk20a *g); + int (*discover_link)(struct gk20a *g); + int (*isr)(struct gk20a *g); /* API */ int (*link_early_init)(struct gk20a *g, unsigned long mask); u32 (*link_get_mode)(struct gk20a *g, u32 link_id); -- cgit v1.2.2