#include <linux/delay.h>
#include <linux/err.h>
#include <linux/gpio/driver.h>
#include <linux/io.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/irqdomain.h>
#include <linux/module.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
#include "mtk-eint.h"
#define MTK_EINT_EDGE_SENSITIVE …
#define MTK_EINT_LEVEL_SENSITIVE …
#define MTK_EINT_DBNC_SET_DBNC_BITS …
#define MTK_EINT_DBNC_MAX …
#define MTK_EINT_DBNC_RST_BIT …
#define MTK_EINT_DBNC_SET_EN …
static const struct mtk_eint_regs mtk_generic_eint_regs = …;
const unsigned int debounce_time_mt2701[] = …;
EXPORT_SYMBOL_GPL(…);
const unsigned int debounce_time_mt6765[] = …;
EXPORT_SYMBOL_GPL(…);
const unsigned int debounce_time_mt6795[] = …;
EXPORT_SYMBOL_GPL(…);
static void __iomem *mtk_eint_get_offset(struct mtk_eint *eint,
unsigned int eint_num,
unsigned int offset)
{ … }
static unsigned int mtk_eint_can_en_debounce(struct mtk_eint *eint,
unsigned int eint_num)
{ … }
static int mtk_eint_flip_edge(struct mtk_eint *eint, int hwirq)
{ … }
static void mtk_eint_mask(struct irq_data *d)
{ … }
static void mtk_eint_unmask(struct irq_data *d)
{ … }
static unsigned int mtk_eint_get_mask(struct mtk_eint *eint,
unsigned int eint_num)
{ … }
static void mtk_eint_ack(struct irq_data *d)
{ … }
static int mtk_eint_set_type(struct irq_data *d, unsigned int type)
{ … }
static int mtk_eint_irq_set_wake(struct irq_data *d, unsigned int on)
{ … }
static void mtk_eint_chip_write_mask(const struct mtk_eint *eint,
void __iomem *base, u32 *buf)
{ … }
static int mtk_eint_irq_request_resources(struct irq_data *d)
{ … }
static void mtk_eint_irq_release_resources(struct irq_data *d)
{ … }
static struct irq_chip mtk_eint_irq_chip = …;
static unsigned int mtk_eint_hw_init(struct mtk_eint *eint)
{ … }
static inline void
mtk_eint_debounce_process(struct mtk_eint *eint, int index)
{ … }
static void mtk_eint_irq_handler(struct irq_desc *desc)
{ … }
int mtk_eint_do_suspend(struct mtk_eint *eint)
{ … }
EXPORT_SYMBOL_GPL(…);
int mtk_eint_do_resume(struct mtk_eint *eint)
{ … }
EXPORT_SYMBOL_GPL(…);
int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_num,
unsigned int debounce)
{ … }
EXPORT_SYMBOL_GPL(…);
int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n)
{ … }
EXPORT_SYMBOL_GPL(…);
int mtk_eint_do_init(struct mtk_eint *eint)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;