iic总线驱动分为两个部分:adapter和driver
从adapter注册分析:
1.先分配一个iic_adapter
2.设置algo_xxx(iic总线传输方式)
{
master_xfer;传输函数
}
3.iic_add_adapter注册到adapter链表中,adapter会遍历driver中的每一个成员,调用attach_adapter,attach_adapter中放有iic_probe函数,iic_probe(adapter,设备地址,function)函数中调用到adapter中的masker_xfer函数(这个函数的作用是,发送start信号,发送设备的地址),if(master_xfer)(如果有这个函数就就调用),else(iic_smbus_xfer_emulated)(如果没有这个就调用这个),这个函数中有iic_transfer函数,这个函数也是调用adapter中的algo->master_xfer,发送信号后,确定有无该设备,如果有就调用iic_probe中的function函数