The invention provides a I2C controller driving method and system. The method includes the instantiation of the I2C controller structure body, the implementation of the data method for sending and receiving the I2C bus, and the description of the device tree. Through the instantiation of i2c_adapter, the implementation of the i2c_algorithm method and the description of the device tree, the I2C controller driver which meets the requirements of the latest Linux kernel is realized, and the hardware resources are described by replacing the old kernel by the device tree technology in the form of the board level file, and the hardware information is removed from the hard coding and reduced. The existence of useless code is beneficial to the long-term maintenance and two development of the driver. Because this driver is compatible with the hardware characteristics of the I2C controller of different A3x platforms, the function of multiple I2C controllers is supported by a single driver file. The driver provides a sys, proc interface for the upper software because of strict compliance with the device model. Enough underlying hardware information is conducive to the compilation and debugging of the upper software.
【技术实现步骤摘要】
一种I2C控制器驱动方法及系统
本专利技术涉及服务器驱动
,特别是一种I2C控制器驱动方法及系统。
技术介绍
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机负责产生定时时钟和终止数据传送。传统ARMLinux中,外设的硬件描述体现在板级文件中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的无用代码,很多代码只是在描述板级细节,而这些板级细节对于内核来讲毫无用处,如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data,且这些无用代码给后期维护带来了不便。
技术实现思路
本专利技术的目的是提供一种I2C控制器驱动方法及系统,旨在解决当前I2C控制器驱动对于外设的硬件描述设置在板级文件中,无用代码过多不方便维护的问题,实现剔除无用的冗余编码,利于驱动长期维护和二次开发。为达到上述技术目的,本专利技术提供了一种I2C控制器驱动方法,包括以下步骤:S101、I2C控制器结构体的实例化 ...
【技术保护点】
1.一种I2C控制器驱动方法,其特征在于,包括以下步骤:S101、I2C控制器结构体的实例化;S102、I2C总线发送和接收数据方法的实现;S103、设备树的描述。
【技术特征摘要】
1.一种I2C控制器驱动方法,其特征在于,包括以下步骤:S101、I2C控制器结构体的实例化;S102、I2C总线发送和接收数据方法的实现;S103、设备树的描述。2.根据权利要求1所述的一种I2C控制器驱动方法,其特征在于,所述I2C控制器结构体的实例化包括:解析设备树,获取硬件属性信息;申请缓冲区,初始化完成量;获取I/O内存并映射到内核空间;从平台获取中断信号、注册中断处理函数;从平台获取使能时钟,设置分频系数并写入硬件寄存器;软件复位;实例化i2c_adapter并调用i2c_add_adapter注册到I2C总线。3.根据权利要求1所述的一种I2C控制器驱动方法,其特征在于,所述I2C总线发送和接收数据方法的实现具体为:对于数组中的每个消息,先判断其消息类型,若为读消息,则赋予从设备地址为:(msg->addr<<1)|1,否则为:msg->addr<<1,对每个消息产生一个开始位,并传送从设备地址,然后开始数据的发送或接收,对最后的消息还需产生一个停止位。4.根据权利要求3所述的一种I2C控制器驱动方法,其特征在于,所述数据的发送或接收,均涉及I2C总线协议的ack应答。5.根据权利要求1所述的一种I2C控制器驱动方法,其特征在于,所述设备树的描述包括:I2C控制器的初始化;设置I2C控制器的寄存器起始地址以及地址范围;使用SPI的39号中断,其中断触发方式是高电平触发;指定I2C控制器的输入时钟;指定I2C控制器提供给I2C设备的时钟;指定I2C控制器的复位引脚;指定I2C控制器使用的引脚以及引脚状态;指定挂接在I2C控制器下的I2C设备节点的reg字段的地址。6.一种I2C控制器驱动系统,其特征在于,包括:控制器实例...
【专利技术属性】
技术研发人员:王鹏,
申请(专利权)人:郑州云海信息技术有限公司,
类型:发明
国别省市:河南,41
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。