核心3.1引入一套新的api regmap,目的是提取出關於i2c spi irq等相關註冊、使能以及讀寫的公共部分,以提高**的可重用性,並且使得在使用如上核心基礎元件時變得更為簡單易用。
0 基礎結構
struct regmap_config ;
1 初始化regmap
regmap_init_i2c(struct i2c_client *i2c, struct regmap_config *config);
regmap_init_spi(struct spi_device *spi, strcut regmap_config *config);
regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags, int irq_base, struct regmap_irq_chip *chip, struct regmap_irq_chip_data **data);
前兩個是用來關聯i2c或者spi裝置和regmap_config的,第三個用來在關聯後的regmap上註冊 irq
2 使用regmap 在初始化好regmap之後,就可以呼叫regmap提供的read/write/update等操作了。
regmap_write(struct regmap *map, int reg, int val); // 向reg寫入val
regmap_raw_write(struct regmap *map, int reg, void *val, size_t val_len); // 向reg寫入指定長度的資料,資料存放在val中
regmap_read(struct regmap *map, int reg, int *val); // 讀取reg的資料到val中
regmap_raw_read(struct regmap *map, int reg, void *val, size_t val_len); // 讀取reg中指定長度的資料
regmap_bulk_read(struct regmap *map, int reg, void *val, size_t val_count); // 讀取從reg開始之後val_count個暫存器的資料到val中
regmap_update_bits(struct regmap *map, int reg, int mask, int val); // 更新reg暫存器中mask指定的位
regcache_cache_bypass(arizona->regmap, true); // 設定讀寫暫存器不通過cache模式而是bypass模式,讀寫立即生效,一般在audio等確保時序性驅動中用到
3 釋放regmap
regmap_exit(struct regmap *map);
regmap使用介紹
核心3.1引入一套新的api regmap,目的是提取出關於i2c spi irq等相關註冊 使能以及讀寫的公共部分,以提高 的可重用性,並且使得在使用如上核心基礎元件時變得更為簡單易用。0 基礎結構 struct regmap config 1 初始化regmap regmap init i2c ...
regmap使用介紹
核心3.1引入一套新的api regmap,目的是提取出關於i2c spi irq等相關註冊 使能以及讀寫的公共部分,以提高 的可重用性,並且使得在使用如上核心基礎元件時變得更為簡單易用。0 基礎結構 struct regmap config 初始化regmap regmap init i2c st...
Linux核心regmap介紹
核心3.1引入一套新的api regmap,目的是提取出關於i2c spi irq等相關註冊 使能以及讀寫的公共部分,以提高 的可重用性,並且使得在使用如上核心基礎元件時變得更為簡單易用。struct regmap config 結構體代表乙個裝置的暫存器配置資訊,在做 regmap 初始化時,驅動...