Merge remote-tracking branch 'regmap/topic/table' into regmap-next
[platform/kernel/linux-arm64.git] / drivers / base / regmap / internal.h
index 80f9ab9..401d191 100644 (file)
 
 #include <linux/regmap.h>
 #include <linux/fs.h>
+#include <linux/list.h>
 
 struct regmap;
 struct regcache_ops;
 
+struct regmap_debugfs_off_cache {
+       struct list_head list;
+       off_t min;
+       off_t max;
+       unsigned int base_reg;
+};
+
 struct regmap_format {
        size_t buf_size;
        size_t reg_bytes;
@@ -31,14 +39,12 @@ struct regmap_format {
        unsigned int (*parse_val)(void *buf);
 };
 
-typedef void (*regmap_lock)(struct regmap *map);
-typedef void (*regmap_unlock)(struct regmap *map);
-
 struct regmap {
        struct mutex mutex;
        spinlock_t spinlock;
        regmap_lock lock;
        regmap_unlock unlock;
+       void *lock_arg; /* This is passed to lock/unlock functions */
 
        struct device *dev; /* Device we do I/O on */
        void *work_buf;     /* Scratch buffer used to format I/O */
@@ -50,6 +56,12 @@ struct regmap {
 #ifdef CONFIG_DEBUG_FS
        struct dentry *debugfs;
        const char *debugfs_name;
+
+       unsigned int debugfs_reg_len;
+       unsigned int debugfs_val_len;
+       unsigned int debugfs_tot_len;
+
+       struct list_head debugfs_off_cache;
 #endif
 
        unsigned int max_register;
@@ -57,6 +69,10 @@ struct regmap {
        bool (*readable_reg)(struct device *dev, unsigned int reg);
        bool (*volatile_reg)(struct device *dev, unsigned int reg);
        bool (*precious_reg)(struct device *dev, unsigned int reg);
+       const struct regmap_access_table *wr_table;
+       const struct regmap_access_table *rd_table;
+       const struct regmap_access_table *volatile_table;
+       const struct regmap_access_table *precious_table;
 
        u8 read_flag_mask;
        u8 write_flag_mask;
@@ -120,6 +136,8 @@ int _regmap_write(struct regmap *map, unsigned int reg,
 
 struct regmap_range_node {
        struct rb_node node;
+       const char *name;
+       struct regmap *map;
 
        unsigned int range_min;
        unsigned int range_max;