I2C子系统之platfor_device初始化——smdk2440_machine_init()

2014-11-24 10:58:31 来源: 作者: 浏览: 0

函数。如下:


smdk2440_machine_init中和i2c有关的函数就三个。需要注意的是,此处的i2c_register_board_info()函数


未后来添加的,原生内核此处并未调用此函数。博主参考mini2440,确定需要调用此函数,后面分析。


谈后首先描述下上诉三个函数的基本功能,再进行源码分析。


1.s3c_i2c_set_platdata。构建platform_device型设备s3c_device_i2c0。


2.i2c_register_board_info。将板上相关的i2c设备信息统一注册到i2c设


备链__i2c_board_list上。此处就为at24c02的相关参数。


3.platform_add_device。将之前创建的platform_device型设备s3c_device_i2c0


添加到platform_bus总线。


下面依次对上述三个函数进行源码分析。


1.s3c_i2c0_set_platdata


3c_i2c0_set_platdata函数如下:


该函数首先判断pd为真


然后将default_i2c_data0赋值给pd


在s3c24xx_i2c_probe函数中,对3c2440的i2c相关控制寄存器的初始化操作会将


这些参数填入到相关寄存器。此处值得一提的是name变量,name变量的初始赋值是s3c2410-i2c


但是会在后面的/arch/arm/mach-s3c2440/s3c24xx.c文件中的函数s3c244x_map_io()中修改成s3c2440-i2c。


这个函数的作用就是用来修改和s3c2410不同的外设用的。


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: