i2c controller on intel platform

1: 

   a) sys/bus/pci/drivers/i2c-designware-pci   ----controller driver

   b) sys/bus/platform/drivers/i2c-gpio  --- controller driver

   ! note: sys/bus/i2c/drivers/* -- these are i2c slave devices drivers, not controller.

2:

   Code:

   drivers/i2c/busses

   下面有很多i2c controller的文件,到底是哪一个,同理与:http://blog.csdn.net/tangkegagalikaiwu/article/details/8615995

   结合makefile 和 build之后的config 来查看,只有如下2个.o , 一个是i2c-pci相关的,一个是i2c-gpio相关的

   obj-$(CONFIG_I2C_DESIGNWARE_PCI) += i2c-designware-pci.o
i2c-designware-pci-objs := i2c-designware-pcidrv.o i2c-designware-core.o
   obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o

可以印证了1中,确实存在2个gpio controller


i2c-designware-pci:pci-i2c driver

   dw_pci_controllers数组预定义了多个controller设备,对于clover platform 来说,是 cloverview_0~~~cloverview_5; 每当pci总线枚举出一个,就会调用这个driver的 probe一次。

   (这些i2c controller在原理图中,其实也是soc上的gpio pin,那么他们在何处被声明成 pci设备,而不是gpio了呢?   是在sfi里面被intel fw team做掉的)

ps: 之后是可以再kernel里面进行更改的:lnw_gpio_set_alt ( 最后操作的是GAFR)


i2c-gpio.o:platform-i2c driver

    可以在probe函数中打印出pdata->sda_pin, pdata->scl_pin,得知是哪2个gpio来模拟i2c controller(我现在的项目中,就是hdmi的2个 gpio)

    platform设备何处注册生成?

    Platform_i2c_gpio.c (z:\jb_intel\hardware\intel\linux-2.6\arch\x86\platform\intel-mid\device_libs



   



    

你可能感兴趣的:(i2c,GPIO)