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 | |
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')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fence_gk20a.c | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 6 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | 5 |
4 files changed, 4 insertions, 10 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c index 3d313ce8..1b650cdd 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | |||
@@ -13,8 +13,6 @@ | |||
13 | * more details. | 13 | * more details. |
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/gk20a.h> | ||
17 | |||
18 | #include <linux/version.h> | 16 | #include <linux/version.h> |
19 | 17 | ||
20 | #include <nvgpu/semaphore.h> | 18 | #include <nvgpu/semaphore.h> |
diff --git a/drivers/gpu/nvgpu/gk20a/fence_gk20a.c b/drivers/gpu/nvgpu/gk20a/fence_gk20a.c index 5392e77c..51363059 100644 --- a/drivers/gpu/nvgpu/gk20a/fence_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fence_gk20a.c | |||
@@ -13,7 +13,6 @@ | |||
13 | 13 | ||
14 | #include "fence_gk20a.h" | 14 | #include "fence_gk20a.h" |
15 | 15 | ||
16 | #include <linux/gk20a.h> | ||
17 | #include <linux/file.h> | 16 | #include <linux/file.h> |
18 | #include <linux/version.h> | 17 | #include <linux/version.h> |
19 | #include <linux/fs.h> | 18 | #include <linux/fs.h> |
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 79118fca..34f89fc8 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -1485,10 +1485,8 @@ void gk20a_busy_noresume(struct device *dev); | |||
1485 | void gk20a_idle_nosuspend(struct device *dev); | 1485 | void gk20a_idle_nosuspend(struct device *dev); |
1486 | int __must_check gk20a_busy(struct gk20a *g); | 1486 | int __must_check gk20a_busy(struct gk20a *g); |
1487 | void gk20a_idle(struct gk20a *g); | 1487 | void gk20a_idle(struct gk20a *g); |
1488 | int gk20a_do_idle(void); | 1488 | int __gk20a_do_idle(struct gk20a *g, bool force_reset); |
1489 | int gk20a_do_unidle(void); | 1489 | int __gk20a_do_unidle(struct gk20a *g); |
1490 | int __gk20a_do_idle(struct device *dev, bool force_reset); | ||
1491 | int __gk20a_do_unidle(struct device *dev); | ||
1492 | 1490 | ||
1493 | int gk20a_can_busy(struct gk20a *g); | 1491 | int gk20a_can_busy(struct gk20a *g); |
1494 | void gk20a_driver_start_unload(struct gk20a *g); | 1492 | void gk20a_driver_start_unload(struct gk20a *g); |
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", |