static struct resource power_resources[] = { DEFINE_RES_IRQ(MAX77620_IRQ_LBT_MBATLOW), }; static struct resource rtc_resources[] = { DEFINE_RES_IRQ(MAX77620_IRQ_TOP_RTC), }; static struct resource thermal_resources[] = { DEFINE_RES_IRQ(MAX77620_IRQ_LBT_TJALRM1), DEFINE_RES_IRQ(MAX77620_IRQ_LBT_TJALRM2), }; static const struct regmap_irq max77620_top_irqs[] = { REGMAP_IRQ_REG(MAX77620_IRQ_TOP_GLBL, 0, MAX77620_IRQ_TOP_GLBL_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_TOP_SD, 0, MAX77620_IRQ_TOP_SD_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_TOP_LDO, 0, MAX77620_IRQ_TOP_LDO_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_TOP_GPIO, 0, MAX77620_IRQ_TOP_GPIO_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_TOP_RTC, 0, MAX77620_IRQ_TOP_RTC_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_TOP_32K, 0, MAX77620_IRQ_TOP_32K_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_TOP_ONOFF, 0, MAX77620_IRQ_TOP_ONOFF_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_LBT_MBATLOW, 1, MAX77620_IRQ_LBM_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_LBT_TJALRM1, 1, MAX77620_IRQ_TJALRM1_MASK), REGMAP_IRQ_REG(MAX77620_IRQ_LBT_TJALRM2, 1, MAX77620_IRQ_TJALRM2_MASK), }; static const struct mfd_cell max77620_children[] = { { .name = "max77620-pinctrl", }, { .name = "max77620-clock", }, { .name = "max77620-pmic", },
*/ #include <linux/interrupt.h> #include <linux/mfd/core.h> #include <linux/module.h> #include <linux/mfd/tps65912.h> static const struct mfd_cell tps65912_cells[] = { { .name = "tps65912-regulator", }, { .name = "tps65912-gpio", }, }; static const struct regmap_irq tps65912_irqs[] = { /* INT_STS IRQs */ REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_F, 0, TPS65912_INT_STS_PWRHOLD_F), REGMAP_IRQ_REG(TPS65912_IRQ_VMON, 0, TPS65912_INT_STS_VMON), REGMAP_IRQ_REG(TPS65912_IRQ_PWRON, 0, TPS65912_INT_STS_PWRON), REGMAP_IRQ_REG(TPS65912_IRQ_PWRON_LP, 0, TPS65912_INT_STS_PWRON_LP), REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_R, 0, TPS65912_INT_STS_PWRHOLD_R), REGMAP_IRQ_REG(TPS65912_IRQ_HOTDIE, 0, TPS65912_INT_STS_HOTDIE), REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_R, 0, TPS65912_INT_STS_GPIO1_R), REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_F, 0, TPS65912_INT_STS_GPIO1_F), /* INT_STS2 IRQs */ REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_R, 1, TPS65912_INT_STS2_GPIO2_R), REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_F, 1, TPS65912_INT_STS2_GPIO2_F), REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_R, 1, TPS65912_INT_STS2_GPIO3_R), REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_F, 1, TPS65912_INT_STS2_GPIO3_F), REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_R, 1, TPS65912_INT_STS2_GPIO4_R), REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_F, 1, TPS65912_INT_STS2_GPIO4_F), REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_R, 1, TPS65912_INT_STS2_GPIO5_R),
enum bxtwc_irqs_level2 { /* Level 2 */ BXTWC_THRM0_IRQ = 0, BXTWC_THRM1_IRQ, BXTWC_THRM2_IRQ, BXTWC_BCU_IRQ, BXTWC_ADC_IRQ, BXTWC_CHGR0_IRQ, BXTWC_CHGR1_IRQ, BXTWC_GPIO0_IRQ, BXTWC_GPIO1_IRQ, BXTWC_CRIT_IRQ, }; static const struct regmap_irq bxtwc_regmap_irqs[] = { REGMAP_IRQ_REG(BXTWC_PWRBTN_LVL1_IRQ, 0, BIT(0)), REGMAP_IRQ_REG(BXTWC_TMU_LVL1_IRQ, 0, BIT(1)), REGMAP_IRQ_REG(BXTWC_THRM_LVL1_IRQ, 0, BIT(2)), REGMAP_IRQ_REG(BXTWC_BCU_LVL1_IRQ, 0, BIT(3)), REGMAP_IRQ_REG(BXTWC_ADC_LVL1_IRQ, 0, BIT(4)), REGMAP_IRQ_REG(BXTWC_CHGR_LVL1_IRQ, 0, BIT(5)), REGMAP_IRQ_REG(BXTWC_GPIO_LVL1_IRQ, 0, BIT(6)), REGMAP_IRQ_REG(BXTWC_CRIT_LVL1_IRQ, 0, BIT(7)), REGMAP_IRQ_REG(BXTWC_PWRBTN_IRQ, 1, 0x03), }; static const struct regmap_irq bxtwc_regmap_irqs_level2[] = { REGMAP_IRQ_REG(BXTWC_THRM0_IRQ, 0, 0xff), REGMAP_IRQ_REG(BXTWC_THRM1_IRQ, 1, 0xbf), REGMAP_IRQ_REG(BXTWC_THRM2_IRQ, 2, 0xff), REGMAP_IRQ_REG(BXTWC_BCU_IRQ, 3, 0x1f),
enum bxtwc_irqs_chgr { BXTWC_USBC_IRQ = 0, BXTWC_CHGR0_IRQ, BXTWC_CHGR1_IRQ, }; enum bxtwc_irqs_tmu { BXTWC_TMU_IRQ = 0, }; enum bxtwc_irqs_crit { BXTWC_CRIT_IRQ = 0, }; static const struct regmap_irq bxtwc_regmap_irqs[] = { REGMAP_IRQ_REG(BXTWC_PWRBTN_LVL1_IRQ, 0, BIT(0)), REGMAP_IRQ_REG(BXTWC_TMU_LVL1_IRQ, 0, BIT(1)), REGMAP_IRQ_REG(BXTWC_THRM_LVL1_IRQ, 0, BIT(2)), REGMAP_IRQ_REG(BXTWC_BCU_LVL1_IRQ, 0, BIT(3)), REGMAP_IRQ_REG(BXTWC_ADC_LVL1_IRQ, 0, BIT(4)), REGMAP_IRQ_REG(BXTWC_CHGR_LVL1_IRQ, 0, BIT(5)), REGMAP_IRQ_REG(BXTWC_GPIO_LVL1_IRQ, 0, BIT(6)), REGMAP_IRQ_REG(BXTWC_CRIT_LVL1_IRQ, 0, BIT(7)), }; static const struct regmap_irq bxtwc_regmap_irqs_pwrbtn[] = { REGMAP_IRQ_REG(BXTWC_PWRBTN_IRQ, 0, 0x01), }; static const struct regmap_irq bxtwc_regmap_irqs_bcu[] = { REGMAP_IRQ_REG(BXTWC_BCU_IRQ, 0, 0x1f),
.yes_ranges = bd9571mwv_volatile_yes_ranges, .n_yes_ranges = ARRAY_SIZE(bd9571mwv_volatile_yes_ranges), }; static const struct regmap_config bd9571mwv_regmap_config = { .reg_bits = 8, .val_bits = 8, .cache_type = REGCACHE_RBTREE, .rd_table = &bd9571mwv_readable_table, .wr_table = &bd9571mwv_writable_table, .volatile_table = &bd9571mwv_volatile_table, .max_register = 0xff, }; static const struct regmap_irq bd9571mwv_irqs[] = { REGMAP_IRQ_REG(BD9571MWV_IRQ_MD1, 0, BD9571MWV_INT_INTREQ_MD1_INT), REGMAP_IRQ_REG(BD9571MWV_IRQ_MD2_E1, 0, BD9571MWV_INT_INTREQ_MD2_E1_INT), REGMAP_IRQ_REG(BD9571MWV_IRQ_MD2_E2, 0, BD9571MWV_INT_INTREQ_MD2_E2_INT), REGMAP_IRQ_REG(BD9571MWV_IRQ_PROT_ERR, 0, BD9571MWV_INT_INTREQ_PROT_ERR_INT), REGMAP_IRQ_REG(BD9571MWV_IRQ_GP, 0, BD9571MWV_INT_INTREQ_GP_INT), REGMAP_IRQ_REG(BD9571MWV_IRQ_128H_OF, 0, BD9571MWV_INT_INTREQ_128H_OF_INT), REGMAP_IRQ_REG(BD9571MWV_IRQ_WDT_OF, 0, BD9571MWV_INT_INTREQ_WDT_OF_INT), REGMAP_IRQ_REG(BD9571MWV_IRQ_BKUP_TRG, 0, BD9571MWV_INT_INTREQ_BKUP_TRG_INT), };
.name = "chtdc_ti_battery", .num_resources = ARRAY_SIZE(battery_resources), .resources = battery_resources, }, { .name = "chtdc_ti_region", }, }; static const struct regmap_config chtdc_ti_regmap_config = { .reg_bits = 8, .val_bits = 8, .max_register = 128, .cache_type = REGCACHE_NONE, }; static const struct regmap_irq chtdc_ti_irqs[] = { REGMAP_IRQ_REG(CHTDC_TI_PWRBTN, 0, BIT(CHTDC_TI_PWRBTN)), REGMAP_IRQ_REG(CHTDC_TI_DIETMPWARN, 0, BIT(CHTDC_TI_DIETMPWARN)), REGMAP_IRQ_REG(CHTDC_TI_ADCCMPL, 0, BIT(CHTDC_TI_ADCCMPL)), REGMAP_IRQ_REG(CHTDC_TI_VBATLOW, 0, BIT(CHTDC_TI_VBATLOW)), REGMAP_IRQ_REG(CHTDC_TI_VBUSDET, 0, BIT(CHTDC_TI_VBUSDET)), REGMAP_IRQ_REG(CHTDC_TI_CCEOCAL, 0, BIT(CHTDC_TI_CCEOCAL)), }; static const struct regmap_irq_chip chtdc_ti_irq_chip = { .name = KBUILD_MODNAME, .irqs = chtdc_ti_irqs, .num_irqs = ARRAY_SIZE(chtdc_ti_irqs), .num_regs = 1, .status_base = CHTDC_TI_IRQLVL1, .mask_base = CHTDC_TI_MASK_IRQLVL1, .ack_base = CHTDC_TI_IRQLVL1,
#include <linux/kernel.h> #include <linux/module.h> #include <linux/irq.h> #include <linux/mfd/core.h> #include <linux/interrupt.h> #include <linux/regmap.h> #include <linux/mfd/da9063/core.h> #define DA9063_REG_EVENT_A_OFFSET 0 #define DA9063_REG_EVENT_B_OFFSET 1 #define DA9063_REG_EVENT_C_OFFSET 2 #define DA9063_REG_EVENT_D_OFFSET 3 static const struct regmap_irq da9063_irqs[] = { /* DA9063 event A register */ REGMAP_IRQ_REG(DA9063_IRQ_ONKEY, DA9063_REG_EVENT_A_OFFSET, DA9063_M_ONKEY), REGMAP_IRQ_REG(DA9063_IRQ_ALARM, DA9063_REG_EVENT_A_OFFSET, DA9063_M_ALARM), REGMAP_IRQ_REG(DA9063_IRQ_TICK, DA9063_REG_EVENT_A_OFFSET, DA9063_M_TICK), REGMAP_IRQ_REG(DA9063_IRQ_ADC_RDY, DA9063_REG_EVENT_A_OFFSET, DA9063_M_ADC_RDY), REGMAP_IRQ_REG(DA9063_IRQ_SEQ_RDY, DA9063_REG_EVENT_A_OFFSET, DA9063_M_SEQ_RDY), /* DA9063 event B register */ REGMAP_IRQ_REG(DA9063_IRQ_WAKE, DA9063_REG_EVENT_B_OFFSET, DA9063_M_WAKE), REGMAP_IRQ_REG(DA9063_IRQ_TEMP, DA9063_REG_EVENT_B_OFFSET, DA9063_M_TEMP), REGMAP_IRQ_REG(DA9063_IRQ_COMP_1V2, DA9063_REG_EVENT_B_OFFSET, DA9063_M_COMP_1V2),