Merge branches 'regmap-core', 'regmap-stride', 'regmap-mmio' and 'regmap-irq' into...
[linux-block.git] / drivers / base / regmap / internal.h
index c994bc9bc04ffc9d82392bdde4547aa6aed2461d..b986b8660b0c4e72da132a0a32ab2960ca99e183 100644 (file)
@@ -26,8 +26,8 @@ struct regmap_format {
        size_t val_bytes;
        void (*format_write)(struct regmap *map,
                             unsigned int reg, unsigned int val);
-       void (*format_reg)(void *buf, unsigned int reg);
-       void (*format_val)(void *buf, unsigned int val);
+       void (*format_reg)(void *buf, unsigned int reg, unsigned int shift);
+       void (*format_val)(void *buf, unsigned int val, unsigned int shift);
        unsigned int (*parse_val)(void *buf);
 };
 
@@ -49,6 +49,7 @@ struct regmap {
 
 #ifdef CONFIG_DEBUG_FS
        struct dentry *debugfs;
+       const char *debugfs_name;
 #endif
 
        unsigned int max_register;
@@ -60,6 +61,10 @@ struct regmap {
        u8 read_flag_mask;
        u8 write_flag_mask;
 
+       /* number of bits to (left) shift the reg value when formatting*/
+       int reg_shift;
+       int reg_stride;
+
        /* regcache specific members */
        const struct regcache_ops *cache_ops;
        enum regcache_type cache_type;
@@ -87,6 +92,9 @@ struct regmap {
 
        struct reg_default *patch;
        int patch_regs;
+
+       /* if set, converts bulk rw to single rw */
+       bool use_single_rw;
 };
 
 struct regcache_ops {
@@ -109,11 +117,11 @@ int _regmap_write(struct regmap *map, unsigned int reg,
 
 #ifdef CONFIG_DEBUG_FS
 extern void regmap_debugfs_initcall(void);
-extern void regmap_debugfs_init(struct regmap *map);
+extern void regmap_debugfs_init(struct regmap *map, const char *name);
 extern void regmap_debugfs_exit(struct regmap *map);
 #else
 static inline void regmap_debugfs_initcall(void) { }
-static inline void regmap_debugfs_init(struct regmap *map) { }
+static inline void regmap_debugfs_init(struct regmap *map, const char *name) { }
 static inline void regmap_debugfs_exit(struct regmap *map) { }
 #endif