*参照元 [#i070ed9f]
#backlinks

*説明 [#h835c7d5]
-パス: [[linux-4.4.1/drivers/base/regmap/internal.h]]

-FIXME: これは何?
--説明


**参考 [#e2270c5a]


*実装 [#j343f3bd]
 struct regmap {
         union {
                 struct mutex mutex;
                 struct {
                         spinlock_t spinlock;
                         unsigned long spinlock_flags;
                 };
         };
-
--[[linux-4.4.1/mutex]]
--[[linux-4.4.1/spinlock_t]]

         regmap_lock lock;
         regmap_unlock unlock;
         void *lock_arg; /* This is passed to lock/unlock functions */
         gfp_t alloc_flags;
 
-
--[[linux-4.4.1/regmap_lock]]
--[[linux-4.4.1/regmap_unlock]]
--[[linux-4.4.1/gfp_t]]

         struct device *dev; /* Device we do I/O on */
         void *work_buf;     /* Scratch buffer used to format I/O */
         struct regmap_format format;  /* Buffer format */
         const struct regmap_bus *bus;
         void *bus_context;
         const char *name;
 
-
--[[linux-4.4.1/device]]
--[[linux-4.4.1/regmap_format]]
--[[linux-4.4.1/regmap_bus]]

         bool async;
         spinlock_t async_lock;
         wait_queue_head_t async_waitq;
         struct list_head async_list;
         struct list_head async_free;
         int async_ret;
 
-
--[[linux-4.4.1/spinlock_t]]
--[[linux-4.4.1/wait_queue_head_t]]
--[[linux-4.4.1/list_head]]

 #ifdef CONFIG_DEBUG_FS
-
--[[linux-4.4.1/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;
         struct mutex cache_lock;
 #endif
 
-
--[[linux-4.4.1/dentry]]
--[[linux-4.4.1/list_head]]
--[[linux-4.4.1/mutex]]

         unsigned int max_register;
         bool (*writeable_reg)(struct device *dev, unsigned int reg);
         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;
 
-
--[[linux-4.4.1/device]]
--[[linux-4.4.1/regmap_access_table]]

         int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
         int (*reg_write)(void *context, unsigned int reg, unsigned int val);
         int (*reg_update_bits)(void *context, unsigned int reg,
                                unsigned int mask, unsigned int val);
 
         bool defer_caching;
 
         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;
 
-
--[[linux-4.4.1/regcache_ops]]
--[[linux-4.4.1/regcache_type]]

         /* number of bytes in reg_defaults_raw */
         unsigned int cache_size_raw;
         /* number of bytes per word in reg_defaults_raw */
         unsigned int cache_word_size;
         /* number of entries in reg_defaults */
         unsigned int num_reg_defaults;
         /* number of entries in reg_defaults_raw */
         unsigned int num_reg_defaults_raw;
 
         /* if set, only the cache is modified not the HW */
         bool cache_only;
         /* if set, only the HW is modified not the cache */
         bool cache_bypass;
         /* if set, remember to free reg_defaults_raw */
         bool cache_free;
 
         struct reg_default *reg_defaults;
         const void *reg_defaults_raw;
         void *cache;
         /* if set, the cache contains newer data than the HW */
         bool cache_dirty;
         /* if set, the HW registers are known to match map->reg_defaults */
         bool no_sync_defaults;
 
-
--[[linux-4.4.1/reg_default]]

         struct reg_sequence *patch;
         int patch_regs;
 
-
--[[linux-4.4.1/reg_sequence]]

         /* if set, converts bulk read to single read */
         bool use_single_read;
         /* if set, converts bulk read to single read */
         bool use_single_write;
         /* if set, the device supports multi write mode */
         bool can_multi_write;
 
         /* if set, raw reads/writes are limited to this size */
         size_t max_raw_read;
         size_t max_raw_write;
 
         struct rb_root range_tree;
         void *selector_work_buf;        /* Scratch buffer used for selector */
-
--[[linux-4.4.1/rb_root]]

 };


*コメント [#v7314951]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS