core.h (1835B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * da9055 declarations for DA9055 PMICs. 4 * 5 * Copyright(c) 2012 Dialog Semiconductor Ltd. 6 * 7 * Author: David Dajun Chen <dchen@diasemi.com> 8 */ 9 10#ifndef __DA9055_CORE_H 11#define __DA9055_CORE_H 12 13#include <linux/interrupt.h> 14#include <linux/regmap.h> 15 16/* 17 * PMIC IRQ 18 */ 19#define DA9055_IRQ_ALARM 0x01 20#define DA9055_IRQ_TICK 0x02 21#define DA9055_IRQ_NONKEY 0x00 22#define DA9055_IRQ_REGULATOR 0x0B 23#define DA9055_IRQ_HWMON 0x03 24 25struct da9055_pdata; 26 27struct da9055 { 28 struct regmap *regmap; 29 struct regmap_irq_chip_data *irq_data; 30 struct device *dev; 31 struct i2c_client *i2c_client; 32 33 int irq_base; 34 int chip_irq; 35}; 36 37/* Device I/O */ 38static inline int da9055_reg_read(struct da9055 *da9055, unsigned char reg) 39{ 40 int val, ret; 41 42 ret = regmap_read(da9055->regmap, reg, &val); 43 if (ret < 0) 44 return ret; 45 46 return val; 47} 48 49static inline int da9055_reg_write(struct da9055 *da9055, unsigned char reg, 50 unsigned char val) 51{ 52 return regmap_write(da9055->regmap, reg, val); 53} 54 55static inline int da9055_group_read(struct da9055 *da9055, unsigned char reg, 56 unsigned reg_cnt, unsigned char *val) 57{ 58 return regmap_bulk_read(da9055->regmap, reg, val, reg_cnt); 59} 60 61static inline int da9055_group_write(struct da9055 *da9055, unsigned char reg, 62 unsigned reg_cnt, unsigned char *val) 63{ 64 return regmap_raw_write(da9055->regmap, reg, val, reg_cnt); 65} 66 67static inline int da9055_reg_update(struct da9055 *da9055, unsigned char reg, 68 unsigned char bit_mask, 69 unsigned char reg_val) 70{ 71 return regmap_update_bits(da9055->regmap, reg, bit_mask, reg_val); 72} 73 74/* Generic Device API */ 75int da9055_device_init(struct da9055 *da9055); 76void da9055_device_exit(struct da9055 *da9055); 77 78extern const struct regmap_config da9055_regmap_config; 79 80#endif /* __DA9055_CORE_H */