We are trying to bring up MINI PCIe interface on Jetson TK1.
We are using MPX6864 mini pcie interface card to use analog video input.

Initially when loading the driver , we faced the following issue.
PCI: Device 0000:01:00.0 not available because of resource collisions
probe of 0000:01:00.0 failed with error -5

However , after applying a patch we could fix this issue.

Now after the driver probing, the entire system comes to a freeze.
Stack Trace shows:

tw686x driver version 0.1.1 loaded
tw686x driver dma_mode=1, debug=0
tw686x[0]: subsystem: 0000:0000
tw686x[0]: registered device video 0 [v4l2]
tw686x[0]: registered device video 1 [v4l2]
tw686x[0]: registered device video 2 [v4l2]
tw686x[0]: registered device video 3 [v4l2]
tw686x[0]: registered device video 4 [v4l2]
tw686x[0]: registered device video 5 [v4l2]
tw686x[0]: registered device video 6 [v4l2]
tw686x[0]: registered device video 7 [v4l2]
tw686x[0]: tw686x_setup() Failed to create audio adapters 7
tw686x[0]: found at 0000:01:00.0, bus: 1, rev: 1, irq: 16, latency: 0, mmio: 0xf0000000
tw686x 0000:01:00.0: setting latency timer to 64

Am I missing something. Do we need to check for any kernel configurations for Jetson?
Any help is appreciable!!

I notice the “downloadable” driver is designed for a 2.6 series kernel, while Jetson is using a 3.10 series. I was unable to determine if any kind of driver comes native with 3.10 kernels. Where did you get the driver?

The driver itself could simply be out of date for this kernel series, or there may be certain configurable PINMUX settings related to it, although I have no idea which ones.

@linuxdev: Thank you for the quick reply.

The driver for kernel 3.8 is available here:

The source code written checks for the LINUX VERSION and is written to support higher versions.

We could successfully build it for Jetson TK1 for kernel 3.10.
lspci command also lists the MPX 6864 device correctly.

But we are out of clue on what is probably causing the issue. However we feel that the issue is caused within
tw686x_setup() function inside tw686x-core.c

I don’t have one of these devices so I can’t try to insmod, but I do notice something often forgotten: This module uses i2c and most likely PINMUX must be set up correctly for the module to work. “Possibly” this is the “resource” mentioned in the error.

Some of the customization for the Jetson version of the kernel involves setting up PINMUX, including kernel source and the .dts/.dtb files for firmware options. Using a patch to force use of a conflicting pin configuration could conceivably cause system freeze; it would also be likely that the first use of the wrong PINMUX setup would start with the setup function. I would start by viewing the dts files in the kernel source under:


…especially tegra124-jetson_tk1-pm375-000-c00-00.dts

Out of curiosity , we tried the tw6864 driver on an IMX6 board running on kernel 3.0.35. But it shows the same behaviour. So I doubt if it is the driver or perhaps v4l2 which is causing the issue. Any suggestions?

sangeethk can you tell me, which version kernel it’s work? i try add this driver to next grinch 21.3.2