diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2014-11-10 03:34:24 -0500 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:12:14 -0400 |
commit | c0668f05ea1e2429444d6aad2a40dda81aba7ec8 (patch) | |
tree | e022679a8f6690d16d3c47ebd77021075ce914d3 /drivers/gpu/nvgpu/gk20a/gk20a.c | |
parent | 3a504842cd2696bd2feb496f4f4555ace82b4ab1 (diff) |
gpu: nvgpu: Retrieve intr & reset id from HW
Query interrupt number and reset id from HW. Use the number
from HW when enabling and detecting interrupts.
Bug 200036089
Bug 1567274
Change-Id: If9cb4db79a19dcb193ba7ad9db7081f4fe1ab433
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: http://git-master/r/600988
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 1bd1c898..91cd5834 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c | |||
@@ -757,11 +757,6 @@ static int gk20a_pm_finalize_poweron(struct device *dev) | |||
757 | if (err) | 757 | if (err) |
758 | goto done; | 758 | goto done; |
759 | 759 | ||
760 | enable_irq(g->irq_stall); | ||
761 | enable_irq(g->irq_nonstall); | ||
762 | |||
763 | g->ops.mc.intr_enable(g); | ||
764 | |||
765 | if (!tegra_platform_is_silicon()) | 760 | if (!tegra_platform_is_silicon()) |
766 | gk20a_writel(g, bus_intr_en_0_r(), 0x0); | 761 | gk20a_writel(g, bus_intr_en_0_r(), 0x0); |
767 | else | 762 | else |
@@ -814,6 +809,14 @@ static int gk20a_pm_finalize_poweron(struct device *dev) | |||
814 | goto done; | 809 | goto done; |
815 | } | 810 | } |
816 | 811 | ||
812 | err = gk20a_init_fifo_support(g); | ||
813 | if (err) { | ||
814 | gk20a_err(dev, "failed to init gk20a fifo"); | ||
815 | goto done; | ||
816 | } | ||
817 | |||
818 | g->ops.mc.intr_enable(g); | ||
819 | |||
817 | err = gk20a_enable_gr_hw(g); | 820 | err = gk20a_enable_gr_hw(g); |
818 | if (err) { | 821 | if (err) { |
819 | gk20a_err(dev, "failed to enable gr"); | 822 | gk20a_err(dev, "failed to enable gr"); |
@@ -833,12 +836,6 @@ static int gk20a_pm_finalize_poweron(struct device *dev) | |||
833 | goto done; | 836 | goto done; |
834 | } | 837 | } |
835 | 838 | ||
836 | err = gk20a_init_fifo_support(g); | ||
837 | if (err) { | ||
838 | gk20a_err(dev, "failed to init gk20a fifo"); | ||
839 | goto done; | ||
840 | } | ||
841 | |||
842 | err = gk20a_init_gr_support(g); | 839 | err = gk20a_init_gr_support(g); |
843 | if (err) { | 840 | if (err) { |
844 | gk20a_err(dev, "failed to init gk20a gr"); | 841 | gk20a_err(dev, "failed to init gk20a gr"); |
@@ -857,7 +854,6 @@ static int gk20a_pm_finalize_poweron(struct device *dev) | |||
857 | goto done; | 854 | goto done; |
858 | } | 855 | } |
859 | 856 | ||
860 | |||
861 | gk20a_channel_resume(g); | 857 | gk20a_channel_resume(g); |
862 | set_user_nice(current, nice_value); | 858 | set_user_nice(current, nice_value); |
863 | 859 | ||
@@ -868,6 +864,9 @@ static int gk20a_pm_finalize_poweron(struct device *dev) | |||
868 | if (platform->has_cde) | 864 | if (platform->has_cde) |
869 | gk20a_init_cde_support(g); | 865 | gk20a_init_cde_support(g); |
870 | 866 | ||
867 | enable_irq(g->irq_stall); | ||
868 | enable_irq(g->irq_nonstall); | ||
869 | |||
871 | #ifdef CONFIG_INPUT_CFBOOST | 870 | #ifdef CONFIG_INPUT_CFBOOST |
872 | if (!g->boost_added) { | 871 | if (!g->boost_added) { |
873 | gk20a_dbg_info("add touch boost"); | 872 | gk20a_dbg_info("add touch boost"); |