regmap使用介紹

2021-06-28 12:16:22 字數 1747 閱讀 8388

核心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, 

intirq, 

intirq_flags, 

intirq_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, 

intreg, 

intval); 

// 向reg寫入val

regmap_raw_write(struct

regmap *map, 

intreg, 

void

*val, 

size_t

val_len);  

// 向reg寫入指定長度的資料,資料存放在val中

regmap_read(struct

regmap *map, 

intreg, 

int*val); 

// 讀取reg的資料到val中

regmap_raw_read(struct

regmap *map, 

intreg, 

void

*val, 

size_t

val_len); 

// 讀取reg中指定長度的資料

regmap_bulk_read(struct

regmap *map, 

intreg, 

void

*val, 

size_t

val_count); 

// 讀取從reg開始之後val_count個暫存器的資料到val中

regmap_update_bits(struct

regmap *map, 

intreg, 

intmask, 

intval); 

// 更新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 初始化regmap regmap init i2c st...

Linux核心regmap介紹

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