linux内核的regmap_read_poll_timeout函数怎么使用
时间: 2024-03-20 08:39:53 浏览: 511
regmap_read_poll_timeout函数是用于轮询寄存器的值是否满足指定条件的函数,其使用方法如下:
```c
int regmap_read_poll_timeout(struct regmap *map, unsigned int reg,
unsigned int val, unsigned int mask,
unsigned int timeout)
```
其中,map是一个regmap对象,reg是要轮询的寄存器地址,val是期望的寄存器值,mask是掩码,timeout是轮询的超时时间(单位是ms)。
调用该函数后,函数会不断读取寄存器的值,直到读取到的值与期望的值按位与后等于期望的值,或者超时时间到达。如果在超时时间到达之前读取到了期望的值,则函数返回0;否则函数返回-EAGAIN表示轮询超时。
例如,以下代码使用regmap_read_poll_timeout函数轮询某个寄存器的值是否为0,最长轮询时间为1000ms:
```c
#define REG_ADDR 0x1234
int ret = regmap_read_poll_timeout(map, REG_ADDR, 0x0, 0xffffffff, 1000);
if (ret == 0) {
printk(KERN_INFO "Regmap read poll succeeded\n");
} else {
printk(KERN_INFO "Regmap read poll timed out\n");
}
```
阅读全文