如何在I2C控制器的代码片段中初始化struct变量?

时间:2014-10-20 16:13:53

标签: c linux-kernel linux-device-driver i2c

我正在浏览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->中断在写操作后读取最新的更新值?

0 个答案:

没有答案