cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mtk-eint.h (2311B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) 2014-2018 MediaTek Inc.
      4 *
      5 * Author: Maoguang Meng <maoguang.meng@mediatek.com>
      6 *	   Sean Wang <sean.wang@mediatek.com>
      7 *
      8 */
      9#ifndef __MTK_EINT_H
     10#define __MTK_EINT_H
     11
     12#include <linux/irqdomain.h>
     13
     14struct mtk_eint_regs {
     15	unsigned int	stat;
     16	unsigned int	ack;
     17	unsigned int	mask;
     18	unsigned int	mask_set;
     19	unsigned int	mask_clr;
     20	unsigned int	sens;
     21	unsigned int	sens_set;
     22	unsigned int	sens_clr;
     23	unsigned int	soft;
     24	unsigned int	soft_set;
     25	unsigned int	soft_clr;
     26	unsigned int	pol;
     27	unsigned int	pol_set;
     28	unsigned int	pol_clr;
     29	unsigned int	dom_en;
     30	unsigned int	dbnc_ctrl;
     31	unsigned int	dbnc_set;
     32	unsigned int	dbnc_clr;
     33};
     34
     35struct mtk_eint_hw {
     36	u8		port_mask;
     37	u8		ports;
     38	unsigned int	ap_num;
     39	unsigned int	db_cnt;
     40};
     41
     42struct mtk_eint;
     43
     44struct mtk_eint_xt {
     45	int (*get_gpio_n)(void *data, unsigned long eint_n,
     46			  unsigned int *gpio_n,
     47			  struct gpio_chip **gpio_chip);
     48	int (*get_gpio_state)(void *data, unsigned long eint_n);
     49	int (*set_gpio_as_eint)(void *data, unsigned long eint_n);
     50};
     51
     52struct mtk_eint {
     53	struct device *dev;
     54	void __iomem *base;
     55	struct irq_domain *domain;
     56	int irq;
     57
     58	int *dual_edge;
     59	u32 *wake_mask;
     60	u32 *cur_mask;
     61
     62	/* Used to fit into various EINT device */
     63	const struct mtk_eint_hw *hw;
     64	const struct mtk_eint_regs *regs;
     65
     66	/* Used to fit into various pinctrl device */
     67	void *pctl;
     68	const struct mtk_eint_xt *gpio_xlate;
     69};
     70
     71#if IS_ENABLED(CONFIG_EINT_MTK)
     72int mtk_eint_do_init(struct mtk_eint *eint);
     73int mtk_eint_do_suspend(struct mtk_eint *eint);
     74int mtk_eint_do_resume(struct mtk_eint *eint);
     75int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
     76			  unsigned int debounce);
     77int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n);
     78
     79#else
     80static inline int mtk_eint_do_init(struct mtk_eint *eint)
     81{
     82	return -EOPNOTSUPP;
     83}
     84
     85static inline int mtk_eint_do_suspend(struct mtk_eint *eint)
     86{
     87	return -EOPNOTSUPP;
     88}
     89
     90static inline int mtk_eint_do_resume(struct mtk_eint *eint)
     91{
     92	return -EOPNOTSUPP;
     93}
     94
     95static inline int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
     96			  unsigned int debounce)
     97{
     98	return -EOPNOTSUPP;
     99}
    100
    101static inline int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n)
    102{
    103	return -EOPNOTSUPP;
    104}
    105#endif
    106#endif /* __MTK_EINT_H */