zynq pl i2c控制器驱动程序

明确一下关系:

adapter--对应的是soc上实际的iic控制器;

struct i2c_adapter {

struct module *owner;              //所属模块

unsigned int id;                //algorithm的类型,定义于i2c-id.h,

unsigned int class;

const struct i2c_algorithm *algo;     //总线通信方法结构体指针

void *algo_data;             //algorithm数据

struct rt_mutex bus_lock;        //控制并发访问的自旋锁

int timeout;

int retries;                //重试次数

struct device dev;             //适配器设备

int nr;         //存放在i2c_adapter_idr里的位置号

char name[48];              //适配器名称

struct completion dev_released;    //用于同步

struct list_head userspace_clients; //client链表头

};

驱动工程师通过使用i2c_register_adapter函数,向内核注册一个iic控制器。被注册到内核的iic控制器下面又可以挂接iic设备(例如eeprom,电源管理芯片等)。

 

xiic_i2c 包含了xilinx iic驱动程序操作的

struct xiic_i2c {

    struct device       *dev;

    void __iomem        *base;

    wait_queue_head_t   wait;

    struct i2c_adapter  adap;

    struct i2c_msg      *tx_msg;

    struct mutex        lock;

    unsigned int        tx_pos;

    unsigned int        nmsgs;

    enum xilinx_i2c_state   state;

    struct i2c_msg      *rx_msg;

    i

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值