I2C 驱动程序更改为识别多条总线



我们已经在一个 iMX 设备树文件中的i2c2节点中定义了adv7180元数据硬件中的模拟视频。最终目标是从i2c2总线识别adv7180驱动程序。

在使用 I2C 的 defconfig 更改所做的 linux 映像的处理器启动过程中,第二个 I2C 总线无法识别。

下面给出的是串行控制台打印语句:

U-Boot 2015.10+fslc+g1b6aee7 (Jan 16 2018 - 14:57:01 +0530)
CPU: Freescale i.MX6Q rev1.2 996 MHz (running at 792 MHz)
CPU: Automotive temperature grade (-40C to 125C) at 26C
Reset cause: POR
Board: MX6-SabreSD
I2C: ready
Line 129: i2c i2c-1: IMX I2C adapter registered   //i2c-2 not registered??
Line 272 onwards: i2c /dev entries driver 
IR NEC protocol handler initialized 
IR RC5(x) protocol handler initialized 
IR RC6 protocol handler initialized 
IR JVC protocol handler initialized 
IR Sony protocol handler initialized 
IR RC5 (streamzap) protocol handler initialized 
IR SANYO protocol handler initialized 
IR MCE Keyboard/mouse protocol handler initialized 
mxc_v4l2_output v4l2_out.28: V4L2 device registered as video16 
mxc_v4l2_output v4l2_out.28: V4L2 device registered as video17 
i2c-core: driver [mag3110] using legacy suspend method 
i2c-core: driver [mag3110] using legacy resume method  

我已经将这些额外的行写在我的Yocto Built的源目录中的defconfig文件中。

CONFIG_IMX_HAVE_PLATFORM_IMX_I2C=y
# CONFIG_I2C_COMPAT is not set
CONFIG_I2C_CHARDEV=y
# CONFIG_I2C_HELPER_AUTO is not set
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_ALGOPCA=m
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_IMX=y
CONFIG_I2C_MUX=y
CONFIG_I2C_MUX=y

我还检查了 Kconfig 文件,并看到 i2c 驱动程序是从构建中的内核源目录传递的。

我是否必须修改在 yocto 构建的路径/home/fsl-community-bsp-myproject/build/tmp/work-shared/imx6qonlinepdd/kernel-source/drivers/i2c中所做的 C 文件(驱动程序文件(?

在子目录/drivers/media中甚至还有一个adv7180的C文件,可以修改吗?

如果启用了 I2C 总线 2,您应该查看正在使用的设备树。

您需要在 dts 中添加以下行:

&i2c2 { // Change the name as needed 
status = "okay"; 
pinctrl-names = "default";
}

您可能已经状态 ="已禁用";在您正在寻找的 i2c 节点中。

编辑: 乍一看,提供的dts(https://pastebin.com/Y0esXmaX(似乎还可以。为了进一步调试,应该查看/dev/目录以找到 i2c 总线。

举个例子:

root@pico-imx8mq:~# ls /dev/*i2c*
/dev/i2c-0  /dev/i2c-1  /dev/i2c-2

这意味着我有 3 个 i2c 总线,我可以在我的 dts 上找到它们。如果你没有公共汽车在那里,你可能有一个dts问题。

dmesg | grep i2c也可能给出一些提示。

您也可以使用 i2ctools 包中的 i2cdetect :

root@pico-imx8mq:~# i2cdetect -y 0 ## that will detect devices on first i2c bus
root@pico-imx8mq:~# i2cdetect -y 1 ## that will detect devices on second i2c bus
root@pico-imx8mq:~# i2cdetect -y 2 ## that will detect devices on third i2c bus

最新更新