Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * da9055 declarations for DA9055 PMICs.
0004  *
0005  * Copyright(c) 2012 Dialog Semiconductor Ltd.
0006  *
0007  * Author: David Dajun Chen <dchen@diasemi.com>
0008  */
0009 
0010 #ifndef __DA9055_CORE_H
0011 #define __DA9055_CORE_H
0012 
0013 #include <linux/interrupt.h>
0014 #include <linux/regmap.h>
0015 
0016 /*
0017  * PMIC IRQ
0018  */
0019 #define DA9055_IRQ_ALARM    0x01
0020 #define DA9055_IRQ_TICK     0x02
0021 #define DA9055_IRQ_NONKEY   0x00
0022 #define DA9055_IRQ_REGULATOR    0x0B
0023 #define DA9055_IRQ_HWMON    0x03
0024 
0025 struct da9055_pdata;
0026 
0027 struct da9055 {
0028     struct regmap *regmap;
0029     struct regmap_irq_chip_data *irq_data;
0030     struct device *dev;
0031     struct i2c_client *i2c_client;
0032 
0033     int irq_base;
0034     int chip_irq;
0035 };
0036 
0037 /* Device I/O */
0038 static inline int da9055_reg_read(struct da9055 *da9055, unsigned char reg)
0039 {
0040     int val, ret;
0041 
0042     ret = regmap_read(da9055->regmap, reg, &val);
0043     if (ret < 0)
0044         return ret;
0045 
0046     return val;
0047 }
0048 
0049 static inline int da9055_reg_write(struct da9055 *da9055, unsigned char reg,
0050                     unsigned char val)
0051 {
0052     return regmap_write(da9055->regmap, reg, val);
0053 }
0054 
0055 static inline int da9055_group_read(struct da9055 *da9055, unsigned char reg,
0056                      unsigned reg_cnt, unsigned char *val)
0057 {
0058     return regmap_bulk_read(da9055->regmap, reg, val, reg_cnt);
0059 }
0060 
0061 static inline int da9055_group_write(struct da9055 *da9055, unsigned char reg,
0062                       unsigned reg_cnt, unsigned char *val)
0063 {
0064     return regmap_raw_write(da9055->regmap, reg, val, reg_cnt);
0065 }
0066 
0067 static inline int da9055_reg_update(struct da9055 *da9055, unsigned char reg,
0068                      unsigned char bit_mask,
0069                      unsigned char reg_val)
0070 {
0071     return regmap_update_bits(da9055->regmap, reg, bit_mask, reg_val);
0072 }
0073 
0074 /* Generic Device API */
0075 int da9055_device_init(struct da9055 *da9055);
0076 void da9055_device_exit(struct da9055 *da9055);
0077 
0078 extern const struct regmap_config da9055_regmap_config;
0079 
0080 #endif /* __DA9055_CORE_H */