]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blame - drivers/base/regmap/internal.h
Merge branch 'regmap-interface' into regmap-next
[mirror_ubuntu-hirsute-kernel.git] / drivers / base / regmap / internal.h
CommitLineData
93de9124
MB
1/*
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>
31244e39 17#include <linux/fs.h>
93de9124
MB
18
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
31244e39
MB
40#ifdef CONFIG_DEBUG_FS
41 struct dentry *debugfs;
42#endif
43
93de9124
MB
44 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);
2efe1642 48 bool (*precious_reg)(struct device *dev, unsigned int reg);
6f306441
LPC
49
50 u8 read_flag_mask;
51 u8 write_flag_mask;
93de9124
MB
52};
53
8de2f081
MB
54bool regmap_writeable(struct regmap *map, unsigned int reg);
55bool regmap_readable(struct regmap *map, unsigned int reg);
56bool regmap_volatile(struct regmap *map, unsigned int reg);
57bool regmap_precious(struct regmap *map, unsigned int reg);
58
31244e39
MB
59#ifdef CONFIG_DEBUG_FS
60extern void regmap_debugfs_initcall(void);
61extern void regmap_debugfs_init(struct regmap *map);
62extern void regmap_debugfs_exit(struct regmap *map);
63#else
bbcf61ca
LPC
64static inline void regmap_debugfs_initcall(void) { }
65static inline void regmap_debugfs_init(struct regmap *map) { }
66static inline void regmap_debugfs_exit(struct regmap *map) { }
31244e39
MB
67#endif
68
93de9124 69#endif