mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:35:20 +03:00
gpu: nvgpu: introduce nvgpu_enable_irqs
Prepare function to enable the stall and non-stall kernel interrupts. Update the type of irq state irqs_enabled to bool. JIRA NVGPU-1592 Change-Id: I758794e0f230814a0bea2f3c035562e9a5c7e0ea Signed-off-by: Sagar Kamble <skamble@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2203859 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com> Reviewed-by: Philip Elcan <pelcan@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
Alex Waterman
parent
99ffa2622c
commit
1cd6ae945c
@@ -487,10 +487,11 @@ int gk20a_pm_finalize_poweron(struct device *dev)
|
||||
trace_gk20a_finalize_poweron_done(dev_name(dev));
|
||||
#endif
|
||||
|
||||
enable_irq(g->irq_stall);
|
||||
if (g->irq_stall != g->irq_nonstall)
|
||||
enable_irq(g->irq_nonstall);
|
||||
g->irqs_enabled = 1;
|
||||
err = nvgpu_enable_irqs(g);
|
||||
if (err) {
|
||||
nvgpu_err(g, "failed to enable irqs %d", err);
|
||||
goto done;
|
||||
}
|
||||
|
||||
gk20a_scale_resume(dev_from_gk20a(g));
|
||||
|
||||
@@ -534,13 +535,25 @@ static int gk20a_lockout_registers(struct gk20a *g)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int nvgpu_enable_irqs(struct gk20a *g)
|
||||
{
|
||||
if (!g->irqs_enabled) {
|
||||
enable_irq(g->irq_stall);
|
||||
if (g->irq_stall != g->irq_nonstall)
|
||||
enable_irq(g->irq_nonstall);
|
||||
g->irqs_enabled = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void nvgpu_disable_irqs(struct gk20a *g)
|
||||
{
|
||||
if (g->irqs_enabled) {
|
||||
disable_irq(g->irq_stall);
|
||||
if (g->irq_stall != g->irq_nonstall)
|
||||
disable_irq(g->irq_nonstall);
|
||||
g->irqs_enabled = 0;
|
||||
g->irqs_enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -552,7 +565,7 @@ static int gk20a_pm_prepare_poweroff(struct device *dev)
|
||||
#endif
|
||||
struct gk20a_platform *platform = gk20a_get_platform(dev);
|
||||
bool irqs_enabled;
|
||||
int ret = 0;
|
||||
int ret = 0, err = 0;
|
||||
|
||||
nvgpu_log_fn(g, " ");
|
||||
|
||||
@@ -589,10 +602,10 @@ static int gk20a_pm_prepare_poweroff(struct device *dev)
|
||||
error:
|
||||
/* re-enabled IRQs if previously enabled */
|
||||
if (irqs_enabled) {
|
||||
enable_irq(g->irq_stall);
|
||||
if (g->irq_stall != g->irq_nonstall)
|
||||
enable_irq(g->irq_nonstall);
|
||||
g->irqs_enabled = 1;
|
||||
err = nvgpu_enable_irqs(g);
|
||||
if (err) {
|
||||
nvgpu_err(g, "failed to enable irqs %d", err);
|
||||
}
|
||||
}
|
||||
|
||||
gk20a_scale_resume(dev);
|
||||
|
||||
Reference in New Issue
Block a user