regmap使用介紹

2021-07-25 11:52:00 字數 1427 閱讀 9619

核心3.1引入一套新的api regmap,目的是提取出關於i2c spi irq等相關註冊、使能以及讀寫的公共部分,以提高**的可重用性,並且使得在使用如上核心基礎元件時變得更為簡單易用。

0 基礎結構

struct regmap_config ;
初始化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 s...

regmap使用介紹

核心3.1引入一套新的api regmap,目的是提取出關於i2c spi irq等相關註冊 使能以及讀寫的公共部分,以提高 的可重用性,並且使得在使用如上核心基礎元件時變得更為簡單易用。0 基礎結構 struct regmap config 1 初始化regmap regmap init i2c ...

Linux核心regmap介紹

核心3.1引入一套新的api regmap,目的是提取出關於i2c spi irq等相關註冊 使能以及讀寫的公共部分,以提高 的可重用性,並且使得在使用如上核心基礎元件時變得更為簡單易用。struct regmap config 結構體代表乙個裝置的暫存器配置資訊,在做 regmap 初始化時,驅動...