/* * include/linux/mfd/wm8994/core.h -- Core interface for WM8994 * * Copyright 2009 Wolfson Microelectronics PLC. * * Author: Mark Brown * * 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. * */ #ifndef __MFD_WM8994_CORE_H__ #define __MFD_WM8994_CORE_H__ struct regulator_dev; struct regulator_bulk_data; #define WM8994_NUM_GPIO_REGS 11 #define WM8994_NUM_LDO_REGS 2 struct wm8994 { struct mutex io_lock; struct device *dev; int (*read_dev)(struct wm8994 *wm8994, unsigned short reg, int bytes, void *dest); int (*write_dev)(struct wm8994 *wm8994, unsigned short reg, int bytes, void *src); void *control_data; int gpio_base; /* Used over suspend/resume */ u16 ldo_regs[WM8994_NUM_LDO_REGS]; u16 gpio_regs[WM8994_NUM_GPIO_REGS]; struct regulator_dev *dbvdd; struct regulator_bulk_data *supplies; }; /* Device I/O API */ int wm8994_reg_read(struct wm8994 *wm8994, unsigned short reg); int wm8994_reg_write(struct wm8994 *wm8994, unsigned short reg, unsigned short val); int wm8994_set_bits(struct wm8994 *wm8994, unsigned short reg, unsigned short mask, unsigned short val); int wm8994_bulk_read(struct wm8994 *wm8994, unsigned short reg, int count, u16 *buf); #endif