mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
4c27ac45e6
Syncpoint IRQs are currently requested in a code path that runs during resume. Due to this, we get multiple overlapping registered interrupt handlers as host1x is suspended and resumed. Rearrange interrupt code to only request IRQs during initialization. Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240531070719.2138-1-cyndis@kapsi.fi
38 lines
920 B
C
38 lines
920 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Tegra host1x Interrupt Management
|
|
*
|
|
* Copyright (c) 2010-2021, NVIDIA Corporation.
|
|
*/
|
|
|
|
#ifndef __HOST1X_INTR_H
|
|
#define __HOST1X_INTR_H
|
|
|
|
struct host1x;
|
|
struct host1x_syncpt_fence;
|
|
|
|
struct host1x_intr_irq_data {
|
|
struct host1x *host;
|
|
u32 offset;
|
|
};
|
|
|
|
/* Initialize host1x sync point interrupt */
|
|
int host1x_intr_init(struct host1x *host);
|
|
|
|
/* Deinitialize host1x sync point interrupt */
|
|
void host1x_intr_deinit(struct host1x *host);
|
|
|
|
/* Enable host1x sync point interrupt */
|
|
void host1x_intr_start(struct host1x *host);
|
|
|
|
/* Disable host1x sync point interrupt */
|
|
void host1x_intr_stop(struct host1x *host);
|
|
|
|
void host1x_intr_handle_interrupt(struct host1x *host, unsigned int id);
|
|
|
|
void host1x_intr_add_fence_locked(struct host1x *host, struct host1x_syncpt_fence *fence);
|
|
|
|
bool host1x_intr_remove_fence(struct host1x *host, struct host1x_syncpt_fence *fence);
|
|
|
|
#endif
|