我们已经在一个iMX设备树文件的 i2c2 节点中的 adv7180 元数据硬件定义中定义了模拟视频。最终目的是从i2c2总线识别adv7180驱动程序。
在处理器的启动过程中,使用通过defconfig更改的I2C的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文件,可以对其进行修改吗?
答案 0 :(得分:2)
如果启用了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