123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- /*
- * Maxim8925 Interface
- *
- * Copyright (C) 2009 Marvell International Ltd.
- * Haojian Zhuang <haojian.zhuang@marvell.com>
- *
- * 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_MAX8925_H
- #define __LINUX_MFD_MAX8925_H
- #include <linux/interrupt.h>
- /* Charger registers */
- #define MAX8925_CHG_IRQ1 (0x7e)
- #define MAX8925_CHG_IRQ2 (0x7f)
- #define MAX8925_CHG_IRQ1_MASK (0x80)
- #define MAX8925_CHG_IRQ2_MASK (0x81)
- /* GPM registers */
- #define MAX8925_SYSENSEL (0x00)
- #define MAX8925_ON_OFF_IRQ1 (0x01)
- #define MAX8925_ON_OFF_IRQ1_MASK (0x02)
- #define MAX8925_ON_OFF_STAT (0x03)
- #define MAX8925_ON_OFF_IRQ2 (0x0d)
- #define MAX8925_ON_OFF_IRQ2_MASK (0x0e)
- #define MAX8925_RESET_CNFG (0x0f)
- /* Touch registers */
- #define MAX8925_TSC_IRQ (0x00)
- #define MAX8925_TSC_IRQ_MASK (0x01)
- /* RTC registers */
- #define MAX8925_RTC_STATUS (0x1a)
- #define MAX8925_RTC_IRQ (0x1c)
- #define MAX8925_RTC_IRQ_MASK (0x1d)
- /* bit definitions */
- #define CHG_IRQ1_MASK (0x07)
- #define CHG_IRQ2_MASK (0xff)
- #define ON_OFF_IRQ1_MASK (0xff)
- #define ON_OFF_IRQ2_MASK (0x03)
- #define TSC_IRQ_MASK (0x03)
- #define RTC_IRQ_MASK (0x0c)
- #define MAX8925_NUM_IRQ (32)
- #define MAX8925_NAME_SIZE (32)
- enum {
- MAX8925_INVALID = 0,
- MAX8925_RTC,
- MAX8925_ADC,
- MAX8925_GPM, /* general power management */
- MAX8925_MAX,
- };
- #define MAX8925_IRQ_VCHG_OVP (0)
- #define MAX8925_IRQ_VCHG_F (1)
- #define MAX8925_IRQ_VCHG_R (2)
- #define MAX8925_IRQ_VCHG_THM_OK_R (8)
- #define MAX8925_IRQ_VCHG_THM_OK_F (9)
- #define MAX8925_IRQ_VCHG_BATTLOW_F (10)
- #define MAX8925_IRQ_VCHG_BATTLOW_R (11)
- #define MAX8925_IRQ_VCHG_RST (12)
- #define MAX8925_IRQ_VCHG_DONE (13)
- #define MAX8925_IRQ_VCHG_TOPOFF (14)
- #define MAX8925_IRQ_VCHG_TMR_FAULT (15)
- #define MAX8925_IRQ_GPM_RSTIN (16)
- #define MAX8925_IRQ_GPM_MPL (17)
- #define MAX8925_IRQ_GPM_SW_3SEC (18)
- #define MAX8925_IRQ_GPM_EXTON_F (19)
- #define MAX8925_IRQ_GPM_EXTON_R (20)
- #define MAX8925_IRQ_GPM_SW_1SEC (21)
- #define MAX8925_IRQ_GPM_SW_F (22)
- #define MAX8925_IRQ_GPM_SW_R (23)
- #define MAX8925_IRQ_GPM_SYSCKEN_F (24)
- #define MAX8925_IRQ_GPM_SYSCKEN_R (25)
- #define MAX8925_IRQ_TSC_STICK (0)
- #define MAX8925_IRQ_TSC_NSTICK (1)
- struct max8925_irq {
- irq_handler_t handler;
- void *data;
- };
- struct max8925_chip {
- struct device *dev;
- struct mutex io_lock;
- struct mutex irq_lock;
- struct i2c_client *i2c;
- struct max8925_irq irq[MAX8925_NUM_IRQ];
- const char *name;
- int chip_id;
- int chip_irq;
- };
- struct max8925_platform_data {
- int chip_id;
- int chip_irq;
- };
- extern int max8925_reg_read(struct i2c_client *, int);
- extern int max8925_reg_write(struct i2c_client *, int, unsigned char);
- extern int max8925_bulk_read(struct i2c_client *, int, int, unsigned char *);
- extern int max8925_bulk_write(struct i2c_client *, int, int, unsigned char *);
- extern int max8925_set_bits(struct i2c_client *, int, unsigned char,
- unsigned char);
- extern int max8925_device_init(struct max8925_chip *,
- struct max8925_platform_data *);
- extern void max8925_device_exit(struct max8925_chip *);
- #endif /* __LINUX_MFD_MAX8925_H */
|