Other Parts Discussed in Thread: AM4372, TLV320AIC3111, TPS65218
Tool/software: Linux
Sitara Processor Forum:
My client has designed a custom board that uses an AM4379 processor to capture video from a Techwell TW9906 video decoder.
The TW9906 has eight data lines which are connected to CAM_0 through CAM_7 and the decoder's PCLK, VSYNC and HSYNC are also connected to their respective pins on the AM4379. On this design the decoder's I2C signals are routed to the AM4379's I2C2_SDA and I2C2_SCL pins.
I've configured the kernel according to the information contained within the "Linux Core VPFE User's Guide" document with one exception: I've selected the TW9906 decoder support rather than the OV2659 sensor support. I've also compiled the "Multimedia support" as a module.
I've modified am43x-epos-evm.dts to include the proper pin mux setup for CAM_0 through CAM_7 pins as well as the PCLK, VSYNC and HSYNC pins. I've also move the I2C binding from I2C1 to I2C2 and I've replaced each occurrence of ov2659 with tw9906.
The kernel boots successfully to the command line on the custom board and modprobe shows the modules are available.
# modprobe -D tw9906
insmod /lib/modules/4.9.40/kernel/drivers/media/media.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videodev.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/v4l2-common.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/i2c/tw9906.ko
# modprobe -D am437x-vpfe.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/media.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videodev.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videobuf2-core.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/v4l2-common.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/platform/am437x/am437x-vpfe.ko
I'm able to manually load the all of the dependent modules and the tw9906.ko with no errors.
However, after I load all of the am437x-vpfe.ko dependent modules and then finally load am437x-vpfe.ko, I get the following errors:
# modprobe -v media.ko
[ 281.958715] media: Linux media interface: v0.10
# modprobe -v videodev.ko
[ 289.847537] Linux video capture interface: v2.00
# modprobe -v videobuf2-core.ko
# modprobe -v videobuf2-v4l2.ko
# modprobe -v videobuf2-memops.ko
# modprobe -v v4l2-common.ko
# modprobe -v videobuf2-dma-contig.ko
# modprobe -v am437x-vpfe.ko
[ 349.601145] vpfe 48326000.vpfe: Invalid bus width.
[ 349.606027] vpfe 48326000.vpfe: No platform data
[ 349.612628] vpfe: probe of 48326000.vpfe failed with error -22
I have three questions:
1) Are my design steps correct?
2) What do the errors mean?
3) How do I fix the configuration so that I'm able to capture video from the video decoder.
All help and sugestions will be appreciated.
~Gary