| Viewing file:  max8907.h (7.52 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
/** Functions to access MAX8907 power management chip.
 *
 * Copyright (C) 2010 Gyungoh Yoo <jack.yoo@maxim-ic.com>
 * Copyright (C) 2012, NVIDIA CORPORATION. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
 
 #ifndef __LINUX_MFD_MAX8907_H
 #define __LINUX_MFD_MAX8907_H
 
 #include <linux/mutex.h>
 #include <linux/pm.h>
 
 #define MAX8907_GEN_I2C_ADDR        (0x78 >> 1)
 #define MAX8907_ADC_I2C_ADDR        (0x8e >> 1)
 #define MAX8907_RTC_I2C_ADDR        (0xd0 >> 1)
 
 /* MAX8907 register map */
 #define MAX8907_REG_SYSENSEL        0x00
 #define MAX8907_REG_ON_OFF_IRQ1        0x01
 #define MAX8907_REG_ON_OFF_IRQ1_MASK    0x02
 #define MAX8907_REG_ON_OFF_STAT        0x03
 #define MAX8907_REG_SDCTL1        0x04
 #define MAX8907_REG_SDSEQCNT1        0x05
 #define MAX8907_REG_SDV1        0x06
 #define MAX8907_REG_SDCTL2        0x07
 #define MAX8907_REG_SDSEQCNT2        0x08
 #define MAX8907_REG_SDV2        0x09
 #define MAX8907_REG_SDCTL3        0x0A
 #define MAX8907_REG_SDSEQCNT3        0x0B
 #define MAX8907_REG_SDV3        0x0C
 #define MAX8907_REG_ON_OFF_IRQ2        0x0D
 #define MAX8907_REG_ON_OFF_IRQ2_MASK    0x0E
 #define MAX8907_REG_RESET_CNFG        0x0F
 #define MAX8907_REG_LDOCTL16        0x10
 #define MAX8907_REG_LDOSEQCNT16        0x11
 #define MAX8907_REG_LDO16VOUT        0x12
 #define MAX8907_REG_SDBYSEQCNT        0x13
 #define MAX8907_REG_LDOCTL17        0x14
 #define MAX8907_REG_LDOSEQCNT17        0x15
 #define MAX8907_REG_LDO17VOUT        0x16
 #define MAX8907_REG_LDOCTL1        0x18
 #define MAX8907_REG_LDOSEQCNT1        0x19
 #define MAX8907_REG_LDO1VOUT        0x1A
 #define MAX8907_REG_LDOCTL2        0x1C
 #define MAX8907_REG_LDOSEQCNT2        0x1D
 #define MAX8907_REG_LDO2VOUT        0x1E
 #define MAX8907_REG_LDOCTL3        0x20
 #define MAX8907_REG_LDOSEQCNT3        0x21
 #define MAX8907_REG_LDO3VOUT        0x22
 #define MAX8907_REG_LDOCTL4        0x24
 #define MAX8907_REG_LDOSEQCNT4        0x25
 #define MAX8907_REG_LDO4VOUT        0x26
 #define MAX8907_REG_LDOCTL5        0x28
 #define MAX8907_REG_LDOSEQCNT5        0x29
 #define MAX8907_REG_LDO5VOUT        0x2A
 #define MAX8907_REG_LDOCTL6        0x2C
 #define MAX8907_REG_LDOSEQCNT6        0x2D
 #define MAX8907_REG_LDO6VOUT        0x2E
 #define MAX8907_REG_LDOCTL7        0x30
 #define MAX8907_REG_LDOSEQCNT7        0x31
 #define MAX8907_REG_LDO7VOUT        0x32
 #define MAX8907_REG_LDOCTL8        0x34
 #define MAX8907_REG_LDOSEQCNT8        0x35
 #define MAX8907_REG_LDO8VOUT        0x36
 #define MAX8907_REG_LDOCTL9        0x38
 #define MAX8907_REG_LDOSEQCNT9        0x39
 #define MAX8907_REG_LDO9VOUT        0x3A
 #define MAX8907_REG_LDOCTL10        0x3C
 #define MAX8907_REG_LDOSEQCNT10        0x3D
 #define MAX8907_REG_LDO10VOUT        0x3E
 #define MAX8907_REG_LDOCTL11        0x40
 #define MAX8907_REG_LDOSEQCNT11        0x41
 #define MAX8907_REG_LDO11VOUT        0x42
 #define MAX8907_REG_LDOCTL12        0x44
 #define MAX8907_REG_LDOSEQCNT12        0x45
 #define MAX8907_REG_LDO12VOUT        0x46
 #define MAX8907_REG_LDOCTL13        0x48
 #define MAX8907_REG_LDOSEQCNT13        0x49
 #define MAX8907_REG_LDO13VOUT        0x4A
 #define MAX8907_REG_LDOCTL14        0x4C
 #define MAX8907_REG_LDOSEQCNT14        0x4D
 #define MAX8907_REG_LDO14VOUT        0x4E
 #define MAX8907_REG_LDOCTL15        0x50
 #define MAX8907_REG_LDOSEQCNT15        0x51
 #define MAX8907_REG_LDO15VOUT        0x52
 #define MAX8907_REG_OUT5VEN        0x54
 #define MAX8907_REG_OUT5VSEQ        0x55
 #define MAX8907_REG_OUT33VEN        0x58
 #define MAX8907_REG_OUT33VSEQ        0x59
 #define MAX8907_REG_LDOCTL19        0x5C
 #define MAX8907_REG_LDOSEQCNT19        0x5D
 #define MAX8907_REG_LDO19VOUT        0x5E
 #define MAX8907_REG_LBCNFG        0x60
 #define MAX8907_REG_SEQ1CNFG        0x64
 #define MAX8907_REG_SEQ2CNFG        0x65
 #define MAX8907_REG_SEQ3CNFG        0x66
 #define MAX8907_REG_SEQ4CNFG        0x67
 #define MAX8907_REG_SEQ5CNFG        0x68
 #define MAX8907_REG_SEQ6CNFG        0x69
 #define MAX8907_REG_SEQ7CNFG        0x6A
 #define MAX8907_REG_LDOCTL18        0x72
 #define MAX8907_REG_LDOSEQCNT18        0x73
 #define MAX8907_REG_LDO18VOUT        0x74
 #define MAX8907_REG_BBAT_CNFG        0x78
 #define MAX8907_REG_CHG_CNTL1        0x7C
 #define MAX8907_REG_CHG_CNTL2        0x7D
 #define MAX8907_REG_CHG_IRQ1        0x7E
 #define MAX8907_REG_CHG_IRQ2        0x7F
 #define MAX8907_REG_CHG_IRQ1_MASK    0x80
 #define MAX8907_REG_CHG_IRQ2_MASK    0x81
 #define MAX8907_REG_CHG_STAT        0x82
 #define MAX8907_REG_WLED_MODE_CNTL    0x84
 #define MAX8907_REG_ILED_CNTL        0x84
 #define MAX8907_REG_II1RR        0x8E
 #define MAX8907_REG_II2RR        0x8F
 #define MAX8907_REG_LDOCTL20        0x9C
 #define MAX8907_REG_LDOSEQCNT20        0x9D
 #define MAX8907_REG_LDO20VOUT        0x9E
 
 /* RTC register map */
 #define MAX8907_REG_RTC_SEC        0x00
 #define MAX8907_REG_RTC_MIN        0x01
 #define MAX8907_REG_RTC_HOURS        0x02
 #define MAX8907_REG_RTC_WEEKDAY        0x03
 #define MAX8907_REG_RTC_DATE        0x04
 #define MAX8907_REG_RTC_MONTH        0x05
 #define MAX8907_REG_RTC_YEAR1        0x06
 #define MAX8907_REG_RTC_YEAR2        0x07
 #define MAX8907_REG_ALARM0_SEC        0x08
 #define MAX8907_REG_ALARM0_MIN        0x09
 #define MAX8907_REG_ALARM0_HOURS    0x0A
 #define MAX8907_REG_ALARM0_WEEKDAY    0x0B
 #define MAX8907_REG_ALARM0_DATE        0x0C
 #define MAX8907_REG_ALARM0_MONTH    0x0D
 #define MAX8907_REG_ALARM0_YEAR1    0x0E
 #define MAX8907_REG_ALARM0_YEAR2    0x0F
 #define MAX8907_REG_ALARM1_SEC        0x10
 #define MAX8907_REG_ALARM1_MIN        0x11
 #define MAX8907_REG_ALARM1_HOURS    0x12
 #define MAX8907_REG_ALARM1_WEEKDAY    0x13
 #define MAX8907_REG_ALARM1_DATE        0x14
 #define MAX8907_REG_ALARM1_MONTH    0x15
 #define MAX8907_REG_ALARM1_YEAR1    0x16
 #define MAX8907_REG_ALARM1_YEAR2    0x17
 #define MAX8907_REG_ALARM0_CNTL        0x18
 #define MAX8907_REG_ALARM1_CNTL        0x19
 #define MAX8907_REG_RTC_STATUS        0x1A
 #define MAX8907_REG_RTC_CNTL        0x1B
 #define MAX8907_REG_RTC_IRQ        0x1C
 #define MAX8907_REG_RTC_IRQ_MASK    0x1D
 #define MAX8907_REG_MPL_CNTL        0x1E
 
 /* ADC and Touch Screen Controller register map */
 #define MAX8907_CTL            0
 #define MAX8907_SEQCNT            1
 #define MAX8907_VOUT            2
 
 /* mask bit fields */
 #define MAX8907_MASK_LDO_SEQ        0x1C
 #define MAX8907_MASK_LDO_EN        0x01
 #define MAX8907_MASK_VBBATTCV        0x03
 #define MAX8907_MASK_OUT5V_VINEN    0x10
 #define MAX8907_MASK_OUT5V_ENSRC    0x0E
 #define MAX8907_MASK_OUT5V_EN        0x01
 #define MAX8907_MASK_POWER_OFF        0x40
 
 /* Regulator IDs */
 #define MAX8907_MBATT    0
 #define MAX8907_SD1    1
 #define MAX8907_SD2    2
 #define MAX8907_SD3    3
 #define MAX8907_LDO1    4
 #define MAX8907_LDO2    5
 #define MAX8907_LDO3    6
 #define MAX8907_LDO4    7
 #define MAX8907_LDO5    8
 #define MAX8907_LDO6    9
 #define MAX8907_LDO7    10
 #define MAX8907_LDO8    11
 #define MAX8907_LDO9    12
 #define MAX8907_LDO10    13
 #define MAX8907_LDO11    14
 #define MAX8907_LDO12    15
 #define MAX8907_LDO13    16
 #define MAX8907_LDO14    17
 #define MAX8907_LDO15    18
 #define MAX8907_LDO16    19
 #define MAX8907_LDO17    20
 #define MAX8907_LDO18    21
 #define MAX8907_LDO19    22
 #define MAX8907_LDO20    23
 #define MAX8907_OUT5V    24
 #define MAX8907_OUT33V    25
 #define MAX8907_BBAT    26
 #define MAX8907_SDBY    27
 #define MAX8907_VRTC    28
 #define MAX8907_NUM_REGULATORS (MAX8907_VRTC + 1)
 
 /* IRQ definitions */
 enum {
 MAX8907_IRQ_VCHG_DC_OVP = 0,
 MAX8907_IRQ_VCHG_DC_F,
 MAX8907_IRQ_VCHG_DC_R,
 MAX8907_IRQ_VCHG_THM_OK_R,
 MAX8907_IRQ_VCHG_THM_OK_F,
 MAX8907_IRQ_VCHG_MBATTLOW_F,
 MAX8907_IRQ_VCHG_MBATTLOW_R,
 MAX8907_IRQ_VCHG_RST,
 MAX8907_IRQ_VCHG_DONE,
 MAX8907_IRQ_VCHG_TOPOFF,
 MAX8907_IRQ_VCHG_TMR_FAULT,
 
 MAX8907_IRQ_GPM_RSTIN = 0,
 MAX8907_IRQ_GPM_MPL,
 MAX8907_IRQ_GPM_SW_3SEC,
 MAX8907_IRQ_GPM_EXTON_F,
 MAX8907_IRQ_GPM_EXTON_R,
 MAX8907_IRQ_GPM_SW_1SEC,
 MAX8907_IRQ_GPM_SW_F,
 MAX8907_IRQ_GPM_SW_R,
 MAX8907_IRQ_GPM_SYSCKEN_F,
 MAX8907_IRQ_GPM_SYSCKEN_R,
 
 MAX8907_IRQ_RTC_ALARM1 = 0,
 MAX8907_IRQ_RTC_ALARM0,
 };
 
 struct max8907_platform_data {
 struct regulator_init_data *init_data[MAX8907_NUM_REGULATORS];
 bool pm_off;
 };
 
 struct regmap_irq_chips_data;
 
 struct max8907 {
 struct device            *dev;
 struct mutex            irq_lock;
 struct i2c_client        *i2c_gen;
 struct i2c_client        *i2c_rtc;
 struct regmap            *regmap_gen;
 struct regmap            *regmap_rtc;
 struct regmap_irq_chip_data    *irqc_chg;
 struct regmap_irq_chip_data    *irqc_on_off;
 struct regmap_irq_chip_data    *irqc_rtc;
 };
 
 #endif
 
 |