From 6f492c3834fe18fe3d00d0024b8178250bed7276 Mon Sep 17 00:00:00 2001 From: Seshendra Gadagottu Date: Thu, 19 Jun 2014 19:22:17 -0700 Subject: gpu: nvgpu: make pm config as platform data Make gpu power management feature configurations as platform data. Keep existing sttaus for gk20a and disable all power features for gm20b. Bug 1523728 Change-Id: Ife7786863f18e21b882ac77085c7abc7c84d4cfc Signed-off-by: Seshendra Gadagottu Reviewed-on: http://git-master/r/426369 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Supriya Sharatkumar GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/gk20a.c | 20 ++++++++++++-------- drivers/gpu/nvgpu/gk20a/platform_gk20a.h | 15 +++++++++++++++ drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c | 18 ++++++++++++++++++ 3 files changed, 45 insertions(+), 8 deletions(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index c13c9614..c1150bac 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -1455,14 +1455,18 @@ static int gk20a_probe(struct platform_device *dev) if (tegra_platform_is_silicon()) gk20a->timeouts_enabled = true; - /* Set up initial clock gating settings */ - if (tegra_platform_is_silicon()) { - gk20a->slcg_enabled = true; - gk20a->blcg_enabled = true; - gk20a->elcg_enabled = true; - gk20a->elpg_enabled = true; - gk20a->aelpg_enabled = true; - } + /* Set up initial power settings. For non-slicon platforms, disable * + * power features and for silicon platforms, read from platform data */ + gk20a->slcg_enabled = + tegra_platform_is_silicon() ? platform->enable_slcg : false; + gk20a->blcg_enabled = + tegra_platform_is_silicon() ? platform->enable_blcg : false; + gk20a->elcg_enabled = + tegra_platform_is_silicon() ? platform->enable_elcg : false; + gk20a->elpg_enabled = + tegra_platform_is_silicon() ? platform->enable_elpg : false; + gk20a->aelpg_enabled = + tegra_platform_is_silicon() ? platform->enable_aelpg : false; gk20a_create_sysfs(dev); diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h index 4e454140..c343ad27 100644 --- a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h @@ -61,6 +61,21 @@ struct gk20a_platform { /* Delay before clock gated */ int clockgate_delay; + /* Second Level Clock Gating: true = enable false = disable */ + bool enable_slcg; + + /* Block Level Clock Gating: true = enable flase = disable */ + bool enable_blcg; + + /* Engine Level Clock Gating: true = enable flase = disable */ + bool enable_elcg; + + /* Engine Level Power Gating: true = enable flase = disable */ + bool enable_elpg; + + /* Adaptative ELPG: true = enable flase = disable */ + bool enable_aelpg; + /* Initialize the platform interface of the gk20a driver. * * The platform implementation of this function must diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c index 9f2a7971..28f82816 100644 --- a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c +++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c @@ -534,6 +534,12 @@ struct gk20a_platform t132_gk20a_tegra_platform = { .railgate_delay = 500, .clockgate_delay = 50, .can_railgate = true, + .enable_slcg = true, + .enable_blcg = true, + .enable_elcg = true, + .enable_elpg = true, + .enable_aelpg = true, + .probe = gk20a_tegra_probe, .late_probe = gk20a_tegra_late_probe, @@ -562,6 +568,11 @@ struct gk20a_platform gk20a_tegra_platform = { .railgate_delay = 500, .clockgate_delay = 50, .can_railgate = true, + .enable_slcg = true, + .enable_blcg = true, + .enable_elcg = true, + .enable_elpg = true, + .enable_aelpg = true, .probe = gk20a_tegra_probe, .late_probe = gk20a_tegra_late_probe, @@ -589,6 +600,13 @@ struct gk20a_platform gm20b_tegra_platform = { /* power management configuration */ .railgate_delay = 500, .clockgate_delay = 50, + /* Disable all power features for gm20b */ + .can_railgate = false, + .enable_slcg = false, + .enable_blcg = false, + .enable_elcg = false, + .enable_elpg = false, + .enable_aelpg = false, .probe = gk20a_tegra_probe, .late_probe = gk20a_tegra_late_probe, -- cgit v1.2.2