blob: 78f87f316a1bc8d75d7ce6eb0903f7d47fc53743 [file] [log] [blame]
Mark Brown93de9122011-07-20 22:35:37 +01001/*
2 * Register map access API internal header
3 *
4 * Copyright 2011 Wolfson Microelectronics plc
5 *
6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.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 version 2 as
10 * published by the Free Software Foundation.
11 */
12
13#ifndef _REGMAP_INTERNAL_H
14#define _REGMAP_INTERNAL_H
15
16#include <linux/regmap.h>
Mark Brown31244e32011-07-20 22:56:53 +010017#include <linux/fs.h>
Mark Brown93de9122011-07-20 22:35:37 +010018
19struct regmap;
20
21struct regmap_format {
22 size_t buf_size;
23 size_t reg_bytes;
24 size_t val_bytes;
25 void (*format_write)(struct regmap *map,
26 unsigned int reg, unsigned int val);
27 void (*format_reg)(void *buf, unsigned int reg);
28 void (*format_val)(void *buf, unsigned int val);
29 unsigned int (*parse_val)(void *buf);
30};
31
32struct regmap {
33 struct mutex lock;
34
35 struct device *dev; /* Device we do I/O on */
36 void *work_buf; /* Scratch buffer used to format I/O */
37 struct regmap_format format; /* Buffer format */
38 const struct regmap_bus *bus;
39
Mark Brown31244e32011-07-20 22:56:53 +010040#ifdef CONFIG_DEBUG_FS
41 struct dentry *debugfs;
42#endif
43
Mark Brown93de9122011-07-20 22:35:37 +010044 unsigned int max_register;
45 bool (*writeable_reg)(struct device *dev, unsigned int reg);
46 bool (*readable_reg)(struct device *dev, unsigned int reg);
47 bool (*volatile_reg)(struct device *dev, unsigned int reg);
48};
49
Mark Brown31244e32011-07-20 22:56:53 +010050#ifdef CONFIG_DEBUG_FS
51extern void regmap_debugfs_initcall(void);
52extern void regmap_debugfs_init(struct regmap *map);
53extern void regmap_debugfs_exit(struct regmap *map);
54#else
55void regmap_debugfs_initcall(void) { }
56void regmap_debugfs_init(struct regmap *map) { }
57void regmap_debugfs_exit(struct regmap *map) { }
58#endif
59
Mark Brown93de9122011-07-20 22:35:37 +010060#endif