| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*
- * da9055 declarations for DA9055 PMICs.
- *
- * Copyright(c) 2012 Dialog Semiconductor Ltd.
- *
- * Author: David Dajun Chen <dchen@diasemi.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
- #ifndef __DA9055_CORE_H
- #define __DA9055_CORE_H
- #include <linux/interrupt.h>
- #include <linux/regmap.h>
- /*
- * PMIC IRQ
- */
- #define DA9055_IRQ_ALARM 0x01
- #define DA9055_IRQ_TICK 0x02
- #define DA9055_IRQ_NONKEY 0x00
- #define DA9055_IRQ_REGULATOR 0x0B
- #define DA9055_IRQ_HWMON 0x03
- struct da9055_pdata;
- struct da9055 {
- struct regmap *regmap;
- struct regmap_irq_chip_data *irq_data;
- struct device *dev;
- struct i2c_client *i2c_client;
- int irq_base;
- int chip_irq;
- };
- /* Device I/O */
- static inline int da9055_reg_read(struct da9055 *da9055, unsigned char reg)
- {
- int val, ret;
- ret = regmap_read(da9055->regmap, reg, &val);
- if (ret < 0)
- return ret;
- return val;
- }
- static inline int da9055_reg_write(struct da9055 *da9055, unsigned char reg,
- unsigned char val)
- {
- return regmap_write(da9055->regmap, reg, val);
- }
- static inline int da9055_group_read(struct da9055 *da9055, unsigned char reg,
- unsigned reg_cnt, unsigned char *val)
- {
- return regmap_bulk_read(da9055->regmap, reg, val, reg_cnt);
- }
- static inline int da9055_group_write(struct da9055 *da9055, unsigned char reg,
- unsigned reg_cnt, unsigned char *val)
- {
- return regmap_raw_write(da9055->regmap, reg, val, reg_cnt);
- }
- static inline int da9055_reg_update(struct da9055 *da9055, unsigned char reg,
- unsigned char bit_mask,
- unsigned char reg_val)
- {
- return regmap_update_bits(da9055->regmap, reg, bit_mask, reg_val);
- }
- /* Generic Device API */
- int da9055_device_init(struct da9055 *da9055);
- void da9055_device_exit(struct da9055 *da9055);
- extern struct regmap_config da9055_regmap_config;
- #endif /* __DA9055_CORE_H */
|