root/drivers/pinctrl/mediatek/mtk-eint.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. mtk_eint_do_init
  2. mtk_eint_do_suspend
  3. mtk_eint_do_resume
  4. mtk_eint_set_debounce
  5. mtk_eint_find_irq

   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 
  14 struct 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 
  35 struct mtk_eint_hw {
  36         u8              port_mask;
  37         u8              ports;
  38         unsigned int    ap_num;
  39         unsigned int    db_cnt;
  40 };
  41 
  42 struct mtk_eint;
  43 
  44 struct 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 
  52 struct 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)
  72 int mtk_eint_do_init(struct mtk_eint *eint);
  73 int mtk_eint_do_suspend(struct mtk_eint *eint);
  74 int mtk_eint_do_resume(struct mtk_eint *eint);
  75 int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
  76                           unsigned int debounce);
  77 int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n);
  78 
  79 #else
  80 static inline int mtk_eint_do_init(struct mtk_eint *eint)
  81 {
  82         return -EOPNOTSUPP;
  83 }
  84 
  85 static inline int mtk_eint_do_suspend(struct mtk_eint *eint)
  86 {
  87         return -EOPNOTSUPP;
  88 }
  89 
  90 static inline int mtk_eint_do_resume(struct mtk_eint *eint)
  91 {
  92         return -EOPNOTSUPP;
  93 }
  94 
  95 static inline int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
  96                           unsigned int debounce)
  97 {
  98         return -EOPNOTSUPP;
  99 }
 100 
 101 static 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 */

/* [<][>][^][v][top][bottom][index][help] */