0001
0002
0003
0004
0005
0006
0007 #ifndef __MFD_MT6397_CORE_H__
0008 #define __MFD_MT6397_CORE_H__
0009
0010 #include <linux/mutex.h>
0011 #include <linux/notifier.h>
0012
0013 enum chip_id {
0014 MT6323_CHIP_ID = 0x23,
0015 MT6331_CHIP_ID = 0x20,
0016 MT6332_CHIP_ID = 0x20,
0017 MT6357_CHIP_ID = 0x57,
0018 MT6358_CHIP_ID = 0x58,
0019 MT6359_CHIP_ID = 0x59,
0020 MT6366_CHIP_ID = 0x66,
0021 MT6391_CHIP_ID = 0x91,
0022 MT6397_CHIP_ID = 0x97,
0023 };
0024
0025 enum mt6397_irq_numbers {
0026 MT6397_IRQ_SPKL_AB = 0,
0027 MT6397_IRQ_SPKR_AB,
0028 MT6397_IRQ_SPKL,
0029 MT6397_IRQ_SPKR,
0030 MT6397_IRQ_BAT_L,
0031 MT6397_IRQ_BAT_H,
0032 MT6397_IRQ_FG_BAT_L,
0033 MT6397_IRQ_FG_BAT_H,
0034 MT6397_IRQ_WATCHDOG,
0035 MT6397_IRQ_PWRKEY,
0036 MT6397_IRQ_THR_L,
0037 MT6397_IRQ_THR_H,
0038 MT6397_IRQ_VBATON_UNDET,
0039 MT6397_IRQ_BVALID_DET,
0040 MT6397_IRQ_CHRDET,
0041 MT6397_IRQ_OV,
0042 MT6397_IRQ_LDO,
0043 MT6397_IRQ_HOMEKEY,
0044 MT6397_IRQ_ACCDET,
0045 MT6397_IRQ_AUDIO,
0046 MT6397_IRQ_RTC,
0047 MT6397_IRQ_PWRKEY_RSTB,
0048 MT6397_IRQ_HDMI_SIFM,
0049 MT6397_IRQ_HDMI_CEC,
0050 MT6397_IRQ_VCA15,
0051 MT6397_IRQ_VSRMCA15,
0052 MT6397_IRQ_VCORE,
0053 MT6397_IRQ_VGPU,
0054 MT6397_IRQ_VIO18,
0055 MT6397_IRQ_VPCA7,
0056 MT6397_IRQ_VSRMCA7,
0057 MT6397_IRQ_VDRM,
0058 MT6397_IRQ_NR,
0059 };
0060
0061 struct mt6397_chip {
0062 struct device *dev;
0063 struct regmap *regmap;
0064 struct notifier_block pm_nb;
0065 int irq;
0066 struct irq_domain *irq_domain;
0067 struct mutex irqlock;
0068 u16 wake_mask[2];
0069 u16 irq_masks_cur[2];
0070 u16 irq_masks_cache[2];
0071 u16 int_con[2];
0072 u16 int_status[2];
0073 u16 chip_id;
0074 void *irq_data;
0075 };
0076
0077 int mt6358_irq_init(struct mt6397_chip *chip);
0078 int mt6397_irq_init(struct mt6397_chip *chip);
0079
0080 #endif