at v3.14-rc1 93 lines 2.2 kB view raw
1/* 2 * Definitions for DA9063 MFD driver 3 * 4 * Copyright 2012 Dialog Semiconductor Ltd. 5 * 6 * Author: Michal Hajduk <michal.hajduk@diasemi.com> 7 * Krystian Garbaciak <krystian.garbaciak@diasemi.com> 8 * 9 * This program is free software; you can redistribute it and/or modify it 10 * under the terms of the GNU General Public License as published by the 11 * Free Software Foundation; either version 2 of the License, or (at your 12 * option) any later version. 13 * 14 */ 15 16#ifndef __MFD_DA9063_CORE_H__ 17#define __MFD_DA9063_CORE_H__ 18 19#include <linux/interrupt.h> 20#include <linux/mfd/da9063/registers.h> 21 22/* DA9063 modules */ 23#define DA9063_DRVNAME_CORE "da9063-core" 24#define DA9063_DRVNAME_REGULATORS "da9063-regulators" 25#define DA9063_DRVNAME_LEDS "da9063-leds" 26#define DA9063_DRVNAME_WATCHDOG "da9063-watchdog" 27#define DA9063_DRVNAME_HWMON "da9063-hwmon" 28#define DA9063_DRVNAME_ONKEY "da9063-onkey" 29#define DA9063_DRVNAME_RTC "da9063-rtc" 30#define DA9063_DRVNAME_VIBRATION "da9063-vibration" 31 32enum da9063_models { 33 PMIC_DA9063 = 0x61, 34}; 35 36/* Interrupts */ 37enum da9063_irqs { 38 DA9063_IRQ_ONKEY = 0, 39 DA9063_IRQ_ALARM, 40 DA9063_IRQ_TICK, 41 DA9063_IRQ_ADC_RDY, 42 DA9063_IRQ_SEQ_RDY, 43 DA9063_IRQ_WAKE, 44 DA9063_IRQ_TEMP, 45 DA9063_IRQ_COMP_1V2, 46 DA9063_IRQ_LDO_LIM, 47 DA9063_IRQ_REG_UVOV, 48 DA9063_IRQ_VDD_MON, 49 DA9063_IRQ_WARN, 50 DA9063_IRQ_GPI0, 51 DA9063_IRQ_GPI1, 52 DA9063_IRQ_GPI2, 53 DA9063_IRQ_GPI3, 54 DA9063_IRQ_GPI4, 55 DA9063_IRQ_GPI5, 56 DA9063_IRQ_GPI6, 57 DA9063_IRQ_GPI7, 58 DA9063_IRQ_GPI8, 59 DA9063_IRQ_GPI9, 60 DA9063_IRQ_GPI10, 61 DA9063_IRQ_GPI11, 62 DA9063_IRQ_GPI12, 63 DA9063_IRQ_GPI13, 64 DA9063_IRQ_GPI14, 65 DA9063_IRQ_GPI15, 66}; 67 68#define DA9063_IRQ_BASE_OFFSET 0 69#define DA9063_NUM_IRQ (DA9063_IRQ_GPI15 + 1 - DA9063_IRQ_BASE_OFFSET) 70 71struct da9063 { 72 /* Device */ 73 struct device *dev; 74 unsigned short model; 75 unsigned short revision; 76 unsigned int flags; 77 78 /* Control interface */ 79 struct regmap *regmap; 80 81 /* Interrupts */ 82 int chip_irq; 83 unsigned int irq_base; 84 struct regmap_irq_chip_data *regmap_irq; 85}; 86 87int da9063_device_init(struct da9063 *da9063, unsigned int irq); 88int da9063_irq_init(struct da9063 *da9063); 89 90void da9063_device_exit(struct da9063 *da9063); 91void da9063_irq_exit(struct da9063 *da9063); 92 93#endif /* __MFD_DA9063_CORE_H__ */