diff options
author | Konsta Holtta <kholtta@nvidia.com> | 2017-06-05 09:22:30 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-06-15 08:23:19 -0400 |
commit | f6c921ec97323c1eab7d3b8a0cda73abf041a00f (patch) | |
tree | b2607a51e09dd88ffff5ccf47e44c9076e34391a /drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | |
parent | 7680fd689ecf7d11bf2dfdba41dc2f33cde2bbe7 (diff) |
gpu: nvgpu: bring back tegra idle registration
To make do_idle work when nvgpu is built as a module, reverse the order
of call dependencies for do_idle. Don't provide visible
gk20a_do_{idle,unidle}() functions for the kernel but instead call the
kernel for registering and unregistering pointers to them when the
driver loads and unloads.
Refactor the internal __gk20a_do_{idle,unidle} functions to take a
struct gk20a * instead of struct device *, and use the callback api for
providing that g instead of retrieving the plat device from device tree.
Bug 200290850
Change-Id: Ibef8b069302e547b298069cbb97734f461a10cc3
Signed-off-by: Konsta Holtta <kholtta@nvidia.com>
Reviewed-on: http://git-master/r/1493774
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c index 275b663f..8c1dbd37 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/device.h> | 22 | #include <linux/device.h> |
23 | #include <linux/pm_runtime.h> | 23 | #include <linux/pm_runtime.h> |
24 | #include <linux/fb.h> | 24 | #include <linux/fb.h> |
25 | #include <linux/gk20a.h> | ||
26 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)) | 25 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)) |
27 | #include <soc/tegra/tegra-dvfs.h> | 26 | #include <soc/tegra/tegra-dvfs.h> |
28 | #endif | 27 | #endif |
@@ -742,7 +741,7 @@ static ssize_t force_idle_store(struct device *dev, | |||
742 | if (g->forced_idle) | 741 | if (g->forced_idle) |
743 | return count; /* do nothing */ | 742 | return count; /* do nothing */ |
744 | else { | 743 | else { |
745 | err = __gk20a_do_idle(dev, false); | 744 | err = __gk20a_do_idle(g, false); |
746 | if (!err) { | 745 | if (!err) { |
747 | g->forced_idle = 1; | 746 | g->forced_idle = 1; |
748 | dev_info(dev, "gpu is idle : %d\n", | 747 | dev_info(dev, "gpu is idle : %d\n", |
@@ -753,7 +752,7 @@ static ssize_t force_idle_store(struct device *dev, | |||
753 | if (!g->forced_idle) | 752 | if (!g->forced_idle) |
754 | return count; /* do nothing */ | 753 | return count; /* do nothing */ |
755 | else { | 754 | else { |
756 | err = __gk20a_do_unidle(dev); | 755 | err = __gk20a_do_unidle(g); |
757 | if (!err) { | 756 | if (!err) { |
758 | g->forced_idle = 0; | 757 | g->forced_idle = 0; |
759 | dev_info(dev, "gpu is idle : %d\n", | 758 | dev_info(dev, "gpu is idle : %d\n", |