| 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
| 2 | /* |
| 3 | * Copyright (c) 2014 MediaTek Inc. |
| 4 | * Author: Flora Fu, MediaTek |
| 5 | */ |
| 6 | |
| 7 | #ifndef __MFD_MT6397_CORE_H__ |
| 8 | #define __MFD_MT6397_CORE_H__ |
| 9 | |
| 10 | #include <linux/mutex.h> |
| 11 | #include <linux/notifier.h> |
| 12 | |
| 13 | enum chip_id { |
| 14 | MT6323_CHIP_ID = 0x23, |
| 15 | MT6328_CHIP_ID = 0x30, |
| 16 | MT6331_CHIP_ID = 0x20, |
| 17 | MT6332_CHIP_ID = 0x20, |
| 18 | MT6357_CHIP_ID = 0x57, |
| 19 | MT6358_CHIP_ID = 0x58, |
| 20 | MT6359_CHIP_ID = 0x59, |
| 21 | MT6366_CHIP_ID = 0x66, |
| 22 | MT6391_CHIP_ID = 0x91, |
| 23 | MT6397_CHIP_ID = 0x97, |
| 24 | }; |
| 25 | |
| 26 | enum mt6397_irq_numbers { |
| 27 | MT6397_IRQ_SPKL_AB = 0, |
| 28 | MT6397_IRQ_SPKR_AB, |
| 29 | MT6397_IRQ_SPKL, |
| 30 | MT6397_IRQ_SPKR, |
| 31 | MT6397_IRQ_BAT_L, |
| 32 | MT6397_IRQ_BAT_H, |
| 33 | MT6397_IRQ_FG_BAT_L, |
| 34 | MT6397_IRQ_FG_BAT_H, |
| 35 | MT6397_IRQ_WATCHDOG, |
| 36 | MT6397_IRQ_PWRKEY, |
| 37 | MT6397_IRQ_THR_L, |
| 38 | MT6397_IRQ_THR_H, |
| 39 | MT6397_IRQ_VBATON_UNDET, |
| 40 | MT6397_IRQ_BVALID_DET, |
| 41 | MT6397_IRQ_CHRDET, |
| 42 | MT6397_IRQ_OV, |
| 43 | MT6397_IRQ_LDO, |
| 44 | MT6397_IRQ_HOMEKEY, |
| 45 | MT6397_IRQ_ACCDET, |
| 46 | MT6397_IRQ_AUDIO, |
| 47 | MT6397_IRQ_RTC, |
| 48 | MT6397_IRQ_PWRKEY_RSTB, |
| 49 | MT6397_IRQ_HDMI_SIFM, |
| 50 | MT6397_IRQ_HDMI_CEC, |
| 51 | MT6397_IRQ_VCA15, |
| 52 | MT6397_IRQ_VSRMCA15, |
| 53 | MT6397_IRQ_VCORE, |
| 54 | MT6397_IRQ_VGPU, |
| 55 | MT6397_IRQ_VIO18, |
| 56 | MT6397_IRQ_VPCA7, |
| 57 | MT6397_IRQ_VSRMCA7, |
| 58 | MT6397_IRQ_VDRM, |
| 59 | MT6397_IRQ_NR, |
| 60 | }; |
| 61 | |
| 62 | struct mt6397_chip { |
| 63 | struct device *dev; |
| 64 | struct regmap *regmap; |
| 65 | struct notifier_block pm_nb; |
| 66 | int irq; |
| 67 | struct irq_domain *irq_domain; |
| 68 | struct mutex irqlock; |
| 69 | u16 wake_mask[3]; |
| 70 | u16 irq_masks_cur[3]; |
| 71 | u16 irq_masks_cache[3]; |
| 72 | u16 int_con[3]; |
| 73 | u16 int_status[3]; |
| 74 | u16 chip_id; |
| 75 | void *irq_data; |
| 76 | }; |
| 77 | |
| 78 | int mt6358_irq_init(struct mt6397_chip *chip); |
| 79 | int mt6397_irq_init(struct mt6397_chip *chip); |
| 80 | |
| 81 | #endif /* __MFD_MT6397_CORE_H__ */ |
| 82 | |