diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2014-10-27 05:03:00 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:11:56 -0400 |
commit | 8371833f4273c2d4a6f923eb3270b4ab93967743 (patch) | |
tree | 92faf9b7bc19bdc14a5c46b25f3ab7acc6cf65e3 /drivers/gpu/nvgpu/gk20a/gk20a.h | |
parent | eb690cb391ca0578a2c086eff5085f16c32f651e (diff) |
gpu: nvgpu: Per-chip interrupt processing
Move accesses to MC registers under HAL so that they can be
reimplemented per chip.
Do chip detection and HAL initialization only once.
Bug 1567274
Change-Id: I20bf2f439d267d284bfd536f1a1dfb5d5a2dce4c
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: http://git-master/r/590385
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 5669e1c5..a111a040 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -29,7 +29,8 @@ struct acr_gm20b; | |||
29 | 29 | ||
30 | #include <linux/sched.h> | 30 | #include <linux/sched.h> |
31 | #include <linux/spinlock.h> | 31 | #include <linux/spinlock.h> |
32 | #include <uapi/linux/nvgpu.h> | 32 | #include <linux/nvgpu.h> |
33 | #include <linux/irqreturn.h> | ||
33 | #include <linux/tegra-soc.h> | 34 | #include <linux/tegra-soc.h> |
34 | 35 | ||
35 | #include "../../../arch/arm/mach-tegra/iomap.h" | 36 | #include "../../../arch/arm/mach-tegra/iomap.h" |
@@ -335,6 +336,13 @@ struct gpu_ops { | |||
335 | *get_qctl_whitelist_ranges)(void); | 336 | *get_qctl_whitelist_ranges)(void); |
336 | int (*get_qctl_whitelist_ranges_count)(void); | 337 | int (*get_qctl_whitelist_ranges_count)(void); |
337 | } regops; | 338 | } regops; |
339 | struct { | ||
340 | void (*intr_enable)(struct gk20a *g); | ||
341 | irqreturn_t (*isr_stall)(struct gk20a *g); | ||
342 | irqreturn_t (*isr_nonstall)(struct gk20a *g); | ||
343 | irqreturn_t (*isr_thread_stall)(struct gk20a *g); | ||
344 | irqreturn_t (*isr_thread_nonstall)(struct gk20a *g); | ||
345 | } mc; | ||
338 | }; | 346 | }; |
339 | 347 | ||
340 | struct gk20a { | 348 | struct gk20a { |
@@ -734,6 +742,8 @@ gk20a_request_firmware(struct gk20a *g, const char *fw_name); | |||
734 | 742 | ||
735 | int gk20a_init_gpu_characteristics(struct gk20a *g); | 743 | int gk20a_init_gpu_characteristics(struct gk20a *g); |
736 | 744 | ||
745 | void gk20a_pbus_isr(struct gk20a *g); | ||
746 | |||
737 | int gk20a_user_init(struct platform_device *dev); | 747 | int gk20a_user_init(struct platform_device *dev); |
738 | void gk20a_user_deinit(struct platform_device *dev); | 748 | void gk20a_user_deinit(struct platform_device *dev); |
739 | 749 | ||