我正在浏览i2c-mpc.c I2C控制器的以下代码片段。
https://github.com/torvalds/linux/blob/master/drivers/i2c/busses/i2c-mpc.c#L144
result = wait_event_timeout(i2c->queue,(i2c->interrupt & CSR_MIF), timeout);
我想知道i2c->中断是如何初始化的?
我可以看到
i2c->interrupt = readb(i2c->base + MPC_I2C_SR);
读取状态寄存器将初始化i2c->中断和内部
static void mpc_i2c_start(struct mpc_i2c *i2c)
{
/* Clear arbitration */
writeb(0, i2c->base + MPC_I2C_SR);
/* Start with MEN */
writeccr(i2c, CCR_MEN);
}
零已写入状态寄存器,i2c->中断应初始化为0&#39>。
但是当我检查dmesg日志并且可以看到i2c->中断已经初始化为值0xa2进行写操作。
任何人都可以指出0x2如何初始化为i2c->中断/如何i2c->中断在写操作后读取最新的更新值?