#include <linux/bitops.h>
#include <linux/debugfs.h>
#include <linux/slab.h>
#include <drm/drm_managed.h>
#include "dpu_core_irq.h"
#include "dpu_kms.h"
#include "dpu_hw_interrupts.h"
#include "dpu_hw_util.h"
#include "dpu_hw_mdss.h"
#include "dpu_trace.h"
#define MDP_INTF_OFF(intf) …
#define MDP_INTF_INTR_EN(intf) …
#define MDP_INTF_INTR_STATUS(intf) …
#define MDP_INTF_INTR_CLEAR(intf) …
#define MDP_INTF_TEAR_OFF(intf) …
#define MDP_INTF_INTR_TEAR_EN(intf) …
#define MDP_INTF_INTR_TEAR_STATUS(intf) …
#define MDP_INTF_INTR_TEAR_CLEAR(intf) …
#define MDP_AD4_OFF(ad4) …
#define MDP_AD4_INTR_EN_OFF(ad4) …
#define MDP_AD4_INTR_CLEAR_OFF(ad4) …
#define MDP_AD4_INTR_STATUS_OFF(ad4) …
#define MDP_INTF_REV_7xxx_OFF(intf) …
#define MDP_INTF_REV_7xxx_INTR_EN(intf) …
#define MDP_INTF_REV_7xxx_INTR_STATUS(intf) …
#define MDP_INTF_REV_7xxx_INTR_CLEAR(intf) …
#define MDP_INTF_REV_7xxx_TEAR_OFF(intf) …
#define MDP_INTF_REV_7xxx_INTR_TEAR_EN(intf) …
#define MDP_INTF_REV_7xxx_INTR_TEAR_STATUS(intf) …
#define MDP_INTF_REV_7xxx_INTR_TEAR_CLEAR(intf) …
struct dpu_intr_reg { … };
static const struct dpu_intr_reg dpu_intr_set_legacy[] = …;
static const struct dpu_intr_reg dpu_intr_set_7xxx[] = …;
#define DPU_IRQ_MASK(irq_idx) …
static inline bool dpu_core_irq_is_valid(unsigned int irq_idx)
{ … }
static inline struct dpu_hw_intr_entry *dpu_core_irq_get_entry(struct dpu_hw_intr *intr,
unsigned int irq_idx)
{ … }
static void dpu_core_irq_callback_handler(struct dpu_kms *dpu_kms, unsigned int irq_idx)
{ … }
irqreturn_t dpu_core_irq(struct msm_kms *kms)
{ … }
static int dpu_hw_intr_enable_irq_locked(struct dpu_hw_intr *intr,
unsigned int irq_idx)
{ … }
static int dpu_hw_intr_disable_irq_locked(struct dpu_hw_intr *intr,
unsigned int irq_idx)
{ … }
static void dpu_clear_irqs(struct dpu_kms *dpu_kms)
{ … }
static void dpu_disable_all_irqs(struct dpu_kms *dpu_kms)
{ … }
u32 dpu_core_irq_read(struct dpu_kms *dpu_kms,
unsigned int irq_idx)
{ … }
struct dpu_hw_intr *dpu_hw_intr_init(struct drm_device *dev,
void __iomem *addr,
const struct dpu_mdss_cfg *m)
{ … }
int dpu_core_irq_register_callback(struct dpu_kms *dpu_kms,
unsigned int irq_idx,
void (*irq_cb)(void *arg),
void *irq_arg)
{ … }
int dpu_core_irq_unregister_callback(struct dpu_kms *dpu_kms,
unsigned int irq_idx)
{ … }
#ifdef CONFIG_DEBUG_FS
static int dpu_debugfs_core_irq_show(struct seq_file *s, void *v)
{ … }
DEFINE_SHOW_ATTRIBUTE(…);
void dpu_debugfs_core_irq_init(struct dpu_kms *dpu_kms,
struct dentry *parent)
{ … }
#endif
void dpu_core_irq_preinstall(struct msm_kms *kms)
{ … }
void dpu_core_irq_uninstall(struct msm_kms *kms)
{ … }