From cb9f8bae1aeacf9da0d5fea2da36baa43e9a586b Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Mon, 29 Jan 2018 08:40:24 -0800 Subject: gpu: nvgpu: Unify querying stream id Stream ID for gp10b is retrieved directly from DT headers in common code. Introduce instead a variable to store the stream ID and move the query to platform_gp10b_tegra.c. JIRA NVGPU-4 Change-Id: I123024e13e470283bb691883f8f963eb72c997d8 Signed-off-by: Terje Bergstrom Reviewed-on: https://git-master.nvidia.com/r/1648013 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/driver_common.c | 8 ++++++++ drivers/gpu/nvgpu/common/linux/platform_gk20a.h | 3 +++ drivers/gpu/nvgpu/common/linux/platform_gp10b_tegra.c | 4 ++++ drivers/gpu/nvgpu/gk20a/gk20a.h | 1 + drivers/gpu/nvgpu/gp10b/ltc_gp10b.c | 4 +--- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/nvgpu/common/linux/driver_common.c b/drivers/gpu/nvgpu/common/linux/driver_common.c index f2373e00..b90574e0 100644 --- a/drivers/gpu/nvgpu/common/linux/driver_common.c +++ b/drivers/gpu/nvgpu/common/linux/driver_common.c @@ -170,6 +170,13 @@ static void nvgpu_init_vbios_vars(struct gk20a *g) g->vbios_min_version = platform->vbios_min_version; } +static void nvgpu_init_ltc_vars(struct gk20a *g) +{ + struct gk20a_platform *platform = dev_get_drvdata(dev_from_gk20a(g)); + + g->ltc_streamid = platform->ltc_streamid; +} + static void nvgpu_init_mm_vars(struct gk20a *g) { struct gk20a_platform *platform = dev_get_drvdata(dev_from_gk20a(g)); @@ -202,6 +209,7 @@ int nvgpu_probe(struct gk20a *g, nvgpu_init_timeslice(g); nvgpu_init_pm_vars(g); nvgpu_init_vbios_vars(g); + nvgpu_init_ltc_vars(g); /* Initialize the platform interface. */ err = platform->probe(dev); diff --git a/drivers/gpu/nvgpu/common/linux/platform_gk20a.h b/drivers/gpu/nvgpu/common/linux/platform_gk20a.h index 9325eab7..b0c089e6 100644 --- a/drivers/gpu/nvgpu/common/linux/platform_gk20a.h +++ b/drivers/gpu/nvgpu/common/linux/platform_gk20a.h @@ -239,6 +239,9 @@ struct gk20a_platform { u32 ina3221_dcb_index; u32 ina3221_i2c_address; u32 ina3221_i2c_port; + + /* stream id to use */ + u32 ltc_streamid; }; static inline struct gk20a_platform *gk20a_get_platform( diff --git a/drivers/gpu/nvgpu/common/linux/platform_gp10b_tegra.c b/drivers/gpu/nvgpu/common/linux/platform_gp10b_tegra.c index 8a964caf..00cbe48e 100644 --- a/drivers/gpu/nvgpu/common/linux/platform_gp10b_tegra.c +++ b/drivers/gpu/nvgpu/common/linux/platform_gp10b_tegra.c @@ -25,6 +25,8 @@ #include #include +#include + #include #include #include @@ -417,6 +419,8 @@ struct gk20a_platform gp10b_tegra_platform = { .soc_name = "tegra18x", .unified_memory = true, + + .ltc_streamid = TEGRA_SID_GPUB, }; diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index f187f730..8bddad11 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -1304,6 +1304,7 @@ struct gk20a { int irq_nonstall; u32 max_ltc_count; u32 ltc_count; + u32 ltc_streamid; struct gk20a_channel_worker { struct nvgpu_thread poll_task; diff --git a/drivers/gpu/nvgpu/gp10b/ltc_gp10b.c b/drivers/gpu/nvgpu/gp10b/ltc_gp10b.c index 7735d1ae..d52a10ad 100644 --- a/drivers/gpu/nvgpu/gp10b/ltc_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/ltc_gp10b.c @@ -24,8 +24,6 @@ #include -#include - #include #include #include @@ -299,7 +297,7 @@ void gp10b_ltc_init_fs_state(struct gk20a *g) gm20b_ltc_init_fs_state(g); gk20a_writel(g, ltc_ltca_g_axi_pctrl_r(), - ltc_ltca_g_axi_pctrl_user_sid_f(TEGRA_SID_GPUB)); + ltc_ltca_g_axi_pctrl_user_sid_f(g->ltc_streamid)); /* Enable ECC interrupts */ ltc_intr = gk20a_readl(g, ltc_ltcs_ltss_intr_r()); -- cgit v1.2.2