linux/include/linux/mfd/da9055/core.h
<<
>>
Prefs
   1/*
   2 * da9055 declarations for DA9055 PMICs.
   3 *
   4 * Copyright(c) 2012 Dialog Semiconductor Ltd.
   5 *
   6 * Author: David Dajun Chen <dchen@diasemi.com>
   7 *
   8 * This program is free software; you can redistribute it and/or modify
   9 * it under the terms of the GNU General Public License as published by
  10 * the Free Software Foundation; either version 2 of the License, or
  11 * (at your option) any later version.
  12 *
  13 * This program is distributed in the hope that it will be useful,
  14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 * GNU General Public License for more details.
  17 *
  18 * You should have received a copy of the GNU General Public License
  19 * along with this program; if not, write to the Free Software
  20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21 *
  22 */
  23
  24#ifndef __DA9055_CORE_H
  25#define __DA9055_CORE_H
  26
  27#include <linux/interrupt.h>
  28#include <linux/regmap.h>
  29
  30/*
  31 * PMIC IRQ
  32 */
  33#define DA9055_IRQ_ALARM        0x01
  34#define DA9055_IRQ_TICK         0x02
  35#define DA9055_IRQ_NONKEY       0x00
  36#define DA9055_IRQ_REGULATOR    0x0B
  37#define DA9055_IRQ_HWMON        0x03
  38
  39struct da9055_pdata;
  40
  41struct da9055 {
  42        struct regmap *regmap;
  43        struct regmap_irq_chip_data *irq_data;
  44        struct device *dev;
  45        struct i2c_client *i2c_client;
  46
  47        int irq_base;
  48        int chip_irq;
  49};
  50
  51/* Device I/O */
  52static inline int da9055_reg_read(struct da9055 *da9055, unsigned char reg)
  53{
  54        int val, ret;
  55
  56        ret = regmap_read(da9055->regmap, reg, &val);
  57        if (ret < 0)
  58                return ret;
  59
  60        return val;
  61}
  62
  63static inline int da9055_reg_write(struct da9055 *da9055, unsigned char reg,
  64                                    unsigned char val)
  65{
  66        return regmap_write(da9055->regmap, reg, val);
  67}
  68
  69static inline int da9055_group_read(struct da9055 *da9055, unsigned char reg,
  70                                     unsigned reg_cnt, unsigned char *val)
  71{
  72        return regmap_bulk_read(da9055->regmap, reg, val, reg_cnt);
  73}
  74
  75static inline int da9055_group_write(struct da9055 *da9055, unsigned char reg,
  76                                      unsigned reg_cnt, unsigned char *val)
  77{
  78        return regmap_raw_write(da9055->regmap, reg, val, reg_cnt);
  79}
  80
  81static inline int da9055_reg_update(struct da9055 *da9055, unsigned char reg,
  82                                     unsigned char bit_mask,
  83                                     unsigned char reg_val)
  84{
  85        return regmap_update_bits(da9055->regmap, reg, bit_mask, reg_val);
  86}
  87
  88/* Generic Device API */
  89int da9055_device_init(struct da9055 *da9055);
  90void da9055_device_exit(struct da9055 *da9055);
  91
  92extern const struct regmap_config da9055_regmap_config;
  93
  94#endif /* __DA9055_CORE_H */
  95