Using ADV7482 with JetPack 4.4 (Linux Kernel 4.9)

I am trying to connect Jetson Nano to a custom board with ADV7482 chip using CSI-2 connectors and capture video. However, there is no driver available for ADV7482 in linux kernel 4.9.

I tried the following 3 approaches, without any success. It should be noted that in the custom board, ADV7482 is clocked and configured externally and there is no need to read or write any configuration from I2C. Therefore, in these approaches I ignored reads and writes from I2C. Here are the approaches:

  1. From kernel 4.14 the driver of this chip is added to the kernel sources. However it cannot be compiled on kernel 4.9 due to the V4l2 API changes mainly because of using fwnode in some parts. I commented the part that made compile errors. Now the code is compiled but /dev/video0 or any other similar device is not created. I tried both static and dynamic module modes because it’s noted in this post that dynamic modules my not work.
    Source Files:
    adv748x-hdmi.c (20.4 KB) (no changes)
    adv748x-afe.c (13.3 KB) (no changes)
    adv748x-csi2.c (8.3 KB) (commented line 293)
    adv748x-core.c (24.5 KB) (ignoring reads and writes and hdmi and afe and txa)
    adv748x.h.txt (13.1 KB)
    Device Tree: tegra210-adv7482.dtsi.txt (5.7 KB)

  2. There is an older driver which is mentioned in this post from Renesas Electronics. This driver is for kernel 3.x and again can’t be compiled . Again some parts commented out and similarly /dev/video0 is not created nor statically nor dynamically.
    Source: adv7482.c (76.0 KB)
    Device Tree: tegra210-adv7482.dtsi.txt (4.9 KB)

  3. I tried to change the IMX219 sensor driver as in our scenario there is no need for configurations and only capturing the video is needed. So Again I ignored the parts writing to registers and instead of reads, passed the values manually where it was needed. This time /dev/video0 is created but capturing using v4l2-ctrl results in the following error in kernel :
    tegra_channel_error_status:error 4000
    Source: imx219.c (23.4 KB)
    Device Tree: tegra210-camera-rbpcv2-dual-imx219.dtsi.txt (23.4 KB)

And here is the ADV7482 output video configuration :

  • frame rate: 50 fps
  • size: 720 x 576
  • continuous clock
  • YUV8

For the item 3 any kernel message like below. Have enable it by the csi2_fops.c/vi2_fops.c to check.

[ 193.236738] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000000
[ 193.242306] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00000000

After running the below commands:

echo file csi2_fops.c +p > /sys/kernel/debug/dynamic_debug/control
echo file vi2_fops.c +p > /sys/kernel/debug/dynamic_debug/control

nothing changed. However, if in the device tree I set discontinous-clock="yes" some messages like below are shown:

TEGRA_CSI_CIL_STATUS 0x00000000
TEGRA_CSI_CILA_STATUS 0x00040002

Also for the first approach I compared struct v4l2_subdev code between the two kernel versions (4.9 v.s. 4.14), and found that it seems reasonable to change line 293 of adv748x-csi2.c from

tx->sd.fwnode = of_fwnode_handle(ep);

to

tx->sd.of_node = tx->sd.dev->of_node;

so the code will be compiled without any errors on kernel 4.9. However, still /dev/video0 is not created.

Do you mean /dev/video0?
Also need to check the driver message why failed register the video node.

Do you mean /dev/video0?

Yes, I corrected the post.

Also need to check the driver message why failed register the video node.

No errors. Albeit as I mentioned in the first post I have changed the code to ignore the writes and passed some constant values manually instead of reads.

Do you think the device tree is correct? And can the driver of TC358840 module be useful?

Yes, at least TC358840 was verified by CISCO.
Have check the xxx_probe() function if any kernel message to check.

I tried to use TC358840 but strangely when the module is loaded the proble() function is not called and nothing happens!

After almost a long time, we had some hardware changes and I had some progress on using ADV7482 driver from kernel 4.14. The most important change is that now ADV7482 is not configured externally and therefore, read and writes need to be done through I2C. Here are what I have done so far:

There are some small changes in the source codes. As mentioned earlier we need to do the following to compile the sources:

Next is setting ADV748X_PORT_TXA = 0 and ADV748X_PORT_TXB = 1 in adv748x.h to match with port numbers in the device tree.

I also ignored initializing TXB (second CSI output) in probe() function because we don’t use it.

I created a device tree based on the device tree of imx219 single mode and the device tree provided in this post.

Here are the sources and the device tree after all the changes. Source files includes a huge amount of print messages.

adv748x.h (13.1 KB)
adv748x-afe.c (13.3 KB)
adv748x-core.c (23.6 KB)
adv748x-csi2.c (9.0 KB)
adv748x-hdmi.c (20.4 KB)
tegra210-adv7482.dtsi (8.9 KB)

For the device tree we need to include it in
Linux_for_Tegra/source/src_out/kernel_src_build/hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-porg-p3448-common.dtsi
and also remove imx219 related dtsi files by commenting the following lines:

#include "porg-platforms/tegra210-porg-camera-rbpcv2-imx219.dtsi"
#include "porg-platforms/tegra210-porg-camera-rbpcv2-dual-imx219.dtsi"
#include "porg-plugin-manager/tegra210-porg-plugin-manager.dtsi"

Now after all these changes I am able to compile the driver and use it as a loadable module. After insmod, /dev/video0 device is created without any errors and problems in reads and writes. However, I am still not able to capture any frame using v4l-ctl tool with the following command:

jetson@jetson-nano:~$ v4l2-ctl -d /dev/video0 -w --verbose --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1000
Opening in BLOCKING MODE 
VIDIOC_QUERYCAP: ok
VIDIOC_S_EXT_CTRLS: ok
VIDIOC_REQBUFS: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_STREAMON: ok

Output of media-ctl command:

jetson@jetson-nano:~$ media-ctl -p -d /dev/media0 
Media controller API version 0.1.0

Media device information
------------------------
driver          vi
model           NVIDIA Tegra Video Input Device
serial          
bus info        
hw revision     0x3
driver version  0.0.0

Device topology
- entity 1: adv748x 6-0070 txa (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
	pad0: Sink
		[fmt:unknown/0x0]
		-> "vi-output, adv748x 6-0070 txa":0 [ENABLED]
		<- "adv748x 6-0070 hdmi":1 [ENABLED,IMMUTABLE]
	pad1: Source
		[fmt:unknown/0x0]

- entity 4: adv748x 6-0070 hdmi (2 pads, 1 link)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
	pad0: Sink
		[dv.caps:BT.656/1120 min:640x480@13000000 max:1920x1200@162000000 stds:CEA-861,DMT caps:progressive]
	pad1: Source
		[fmt:RGB888_1X24/1280x720 field:none colorspace:srgb]
		[dv.caps:BT.656/1120 min:640x480@13000000 max:1920x1200@162000000 stds:CEA-861,DMT caps:progressive]
		[dv.query:no-link]
		[dv.current:BT.656/1120 1280x720p30 (3300x750) stds:CEA-861 flags:can-reduce-fps,CE-video]
		-> "adv748x 6-0070 txa":0 [ENABLED,IMMUTABLE]

- entity 9: vi-output, adv748x 6-0070 txa (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
	pad0: Sink
		<- "adv748x 6-0070 txa":0 [ENABLED]

If we see the output graphically it’s a bit strange actually:
m

Output of v4l2-compliance:

jetson@jetson-nano:~$ v4l2-compliance  -d /dev/video0
v4l2-compliance SHA   : not available

Driver Info:
	Driver name   : tegra-video
	Card type     : vi-output, adv748x 6-0070 txa
	Bus info      : platform:54080000.vi:0
	Driver version: 4.9.140
	Capabilities  : 0x84200001
		Video Capture
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps   : 0x04200001
		Video Capture
		Streaming
		Extended Pix Format

Compliance test for device /dev/video0 (not using libv4l2):

Required ioctls:
	test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
	test second video open: OK
	test VIDIOC_QUERYCAP: OK
	test VIDIOC_G/S_PRIORITY: OK
	test for unlimited opens: OK

Debug ioctls:
	test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
	test VIDIOC_LOG_STATUS: OK

Input ioctls:
	test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
	test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
	test VIDIOC_ENUMAUDIO: OK (Not Supported)
	test VIDIOC_G/S/ENUMINPUT: OK
	test VIDIOC_G/S_AUDIO: OK (Not Supported)
	Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
	test VIDIOC_G/S_MODULATOR: OK (Not Supported)
	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
	test VIDIOC_ENUMAUDOUT: OK (Not Supported)
	test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
	test VIDIOC_G/S_AUDOUT: OK (Not Supported)
	Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
	test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
	test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
	test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
	test VIDIOC_G/S_EDID: OK (Not Supported)

Test input 0:

	Control ioctls:
		test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
		test VIDIOC_QUERYCTRL: OK
		test VIDIOC_G/S_CTRL: OK
		test VIDIOC_G/S/TRY_EXT_CTRLS: OK
		test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
		test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
		Standard Controls: 3 Private Controls: 12

	Format ioctls:
		test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
		test VIDIOC_G/S_PARM: OK (Not Supported)
		test VIDIOC_G_FBUF: OK (Not Supported)
		fail: v4l2-test-formats.cpp(330): !colorspace
		fail: v4l2-test-formats.cpp(439): testColorspace(pix.pixelformat, pix.colorspace, pix.ycbcr_enc, pix.quantization)
		test VIDIOC_G_FMT: FAIL
		test VIDIOC_TRY_FMT: OK (Not Supported)
		test VIDIOC_S_FMT: OK (Not Supported)
		test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
		test Cropping: OK (Not Supported)
		test Composing: OK (Not Supported)
		fail: v4l2-test-formats.cpp(1550): doioctl(node, VIDIOC_S_FMT, &fmt)
		fail: v4l2-test-formats.cpp(1647): doioctl(node, VIDIOC_S_FMT, &fmt)
		test Scaling: FAIL

	Codec ioctls:
		test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
		test VIDIOC_G_ENC_INDEX: OK (Not Supported)
		test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

	Buffer ioctls:
		test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
		fail: v4l2-test-buffers.cpp(574): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests.
		test VIDIOC_EXPBUF: OK (Not Supported)

Test input 0:


Total: 43, Succeeded: 41, Failed: 2, Warnings: 0

Output of dmesg after calling insmod containing my added messages:

[  628.625103] adv748x: loading out-of-tree module taints kernel.
[  628.632543]  adv748x_probe 751
[  628.635643] (NULL device *):  adv748x_probe 758
[  628.635652] adv748x 6-0070:  adv748x_parse_dt 692
[  628.635661] adv748x 6-0070: Endpoint /host1x/i2c@546c0000/adv7482_a@70/ports/port@0/endpoint on port 0
[  628.635665] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.635699] adv748x 6-0070:  adv748x_identify_chip 642
[  628.635703] adv748x 6-0070:  adv748x_read 215: page = 00, reg = DF
[  628.635705] adv748x 6-0070:  adv748x_read_check 175
[  628.645275] adv748x 6-0070:  adv748x_read_check 202: val = 21, err = 0
[  628.645279] adv748x 6-0070:  adv748x_read 215: page = 00, reg = E0
[  628.645281] adv748x 6-0070:  adv748x_read_check 175
[  628.650762] adv748x 6-0070:  adv748x_read_check 202: val = 43, err = 0
[  628.650766] adv748x 6-0070: chip found @ 0xe0 revision 2143
[  628.650768] adv748x 6-0070:  adv748x_initialise_clients 274
[  628.650770] adv748x 6-0070:  adv748x_dummy_client 251
[  628.656153] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F3, value = 4C, err = 0
[  628.656157] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F3
[  628.656159] adv748x 6-0070:  adv748x_read_check 175
[  628.667099] adv748x 6-0070:  adv748x_read_check 202: val = 4C, err = 0
[  628.667248] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.667282] adv748x 6-0070:  adv748x_dummy_client 251
[  628.673781] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F4, value = 44, err = 0
[  628.673785] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F4
[  628.673787] adv748x 6-0070:  adv748x_read_check 175
[  628.684929] adv748x 6-0070:  adv748x_read_check 202: val = 44, err = 0
[  628.685074] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.685107] adv748x 6-0070:  adv748x_dummy_client 251
[  628.691592] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F5, value = 68, err = 0
[  628.691595] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F5
[  628.691598] adv748x 6-0070:  adv748x_read_check 175
[  628.702209] adv748x 6-0070:  adv748x_read_check 202: val = 68, err = 0
[  628.702357] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.702397] adv748x 6-0070:  adv748x_dummy_client 251
[  628.710458] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F6, value = 6C, err = 0
[  628.710462] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F6
[  628.710464] adv748x 6-0070:  adv748x_read_check 175
[  628.721575] adv748x 6-0070:  adv748x_read_check 202: val = 6C, err = 0
[  628.721771] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.721801] adv748x 6-0070:  adv748x_dummy_client 251
[  628.728148] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F7, value = 64, err = 0
[  628.728152] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F7
[  628.728154] adv748x 6-0070:  adv748x_read_check 175
[  628.738660] adv748x 6-0070:  adv748x_read_check 202: val = 64, err = 0
[  628.738809] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.738850] adv748x 6-0070:  adv748x_dummy_client 251
[  628.746781] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F8, value = 62, err = 0
[  628.746785] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F8
[  628.746787] adv748x 6-0070:  adv748x_read_check 175
[  628.753082] adv748x 6-0070:  adv748x_read_check 202: val = 62, err = 0
[  628.753223] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.753254] adv748x 6-0070:  adv748x_dummy_client 251
[  628.758044] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F9, value = 82, err = 0
[  628.758048] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F9
[  628.758050] adv748x 6-0070:  adv748x_read_check 175
[  628.770005] adv748x 6-0070:  adv748x_read_check 202: val = 82, err = 0
[  628.770158] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.770188] adv748x 6-0070:  adv748x_dummy_client 251
[  628.775146] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FA, value = F2, err = 0
[  628.775150] adv748x 6-0070:  adv748x_read 215: page = 00, reg = FA
[  628.775152] adv748x 6-0070:  adv748x_read_check 175
[  628.789660] adv748x 6-0070:  adv748x_read_check 202: val = F2, err = 0
[  628.789794] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.789837] adv748x 6-0070:  adv748x_dummy_client 251
[  628.794524] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FB, value = 90, err = 0
[  628.794527] adv748x 6-0070:  adv748x_read 215: page = 00, reg = FB
[  628.794529] adv748x 6-0070:  adv748x_read_check 175
[  628.806589] adv748x 6-0070:  adv748x_read_check 202: val = 90, err = 0
[  628.806733] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.806767] adv748x 6-0070:  adv748x_dummy_client 251
[  628.811666] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FC, value = 94, err = 0
[  628.811671] adv748x 6-0070:  adv748x_read 215: page = 00, reg = FC
[  628.811673] adv748x 6-0070:  adv748x_read_check 175
[  628.826035] adv748x 6-0070:  adv748x_read_check 202: val = 94, err = 0
[  628.826177] adv748x 6-0070:  adv748x_configure_regmap 134
[  628.826206] adv748x 6-0070:  adv748x_reset 600
[  628.826209] adv748x 6-0070:  adv748x_write_regs 310
[  628.830948] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FF, value = FF, err = 0
[  628.848021] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 01, value = 76, err = 0
[  628.856145] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F2, value = 01, err = 0
[  628.856148] adv748x 6-0070:  adv748x_write_regs 310
[  628.862499] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F3, value = 4C, err = 0
[  628.867379] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F4, value = 44, err = 0
[  628.874050] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F5, value = 68, err = 0
[  628.879573] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F6, value = 6C, err = 0
[  628.884812] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F7, value = 64, err = 0
[  628.892973] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F8, value = 62, err = 0
[  628.899113] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FA, value = 82, err = 0
[  628.904209] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FB, value = F2, err = 0
[  628.910728] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FC, value = 90, err = 0
[  628.916089] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FD, value = 94, err = 0
[  628.916093] adv748x 6-0070:  adv748x_write_regs 310
[  628.921352] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 00, value = 40, err = 0
[  628.929443] adv748x 6-0070:  adv748x_write 223: page = 05, reg = 40, value = 83, err = 0
[  628.935675] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 00, value = 08, err = 0
[  628.940542] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 98, value = FF, err = 0
[  628.947086] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 99, value = A3, err = 0
[  628.952604] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 9A, value = 00, err = 0
[  628.957696] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 9B, value = 0A, err = 0
[  628.965822] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 9D, value = 40, err = 0
[  628.972232] adv748x 6-0070:  adv748x_write 223: page = 03, reg = CB, value = 09, err = 0
[  628.977068] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 3D, value = 10, err = 0
[  628.983772] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 3E, value = 7B, err = 0
[  628.989164] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 3F, value = 5E, err = 0
[  628.994241] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 4E, value = FE, err = 0
[  629.002431] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 4F, value = 18, err = 0
[  629.008602] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 57, value = A3, err = 0
[  629.013558] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 58, value = 04, err = 0
[  629.020102] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 85, value = 10, err = 0
[  629.025618] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 83, value = 00, err = 0
[  629.030686] adv748x 6-0070:  adv748x_write 223: page = 03, reg = A3, value = 01, err = 0
[  629.038805] adv748x 6-0070:  adv748x_write 223: page = 03, reg = BE, value = 00, err = 0
[  629.045074] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 6C, value = 01, err = 0
[  629.049979] adv748x 6-0070:  adv748x_write 223: page = 03, reg = F8, value = 01, err = 0
[  629.056590] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 0F, value = 00, err = 0
[  629.062042] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 04, value = 02, err = 0
[  629.066587] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 12, value = F0, err = 0
[  629.079557] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 17, value = 80, err = 0
[  629.088014] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 03, value = 86, err = 0
[  629.095946] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 7C, value = 00, err = 0
[  629.100979] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 0C, value = E0, err = 0
[  629.109207] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 0E, value = DD, err = 0
[  629.117223] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 10, value = A0, err = 0
[  629.125279] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 00, value = 84, err = 0
[  629.133416] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 00, value = A4, err = 0
[  629.141760] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = DB, value = 10, err = 0
[  629.149675] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = D6, value = 07, err = 0
[  629.157906] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = C4, value = 0A, err = 0
[  629.165979] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 71, value = 33, err = 0
[  629.174535] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 72, value = 11, err = 0
[  629.182355] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = F0, value = 00, err = 0
[  629.187391] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 31, value = 82, err = 0
[  629.195507] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 1E, value = 40, err = 0
[  629.203889] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = DA, value = 01, err = 0
[  629.219931] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 00, value = 24, err = 0
[  629.268732] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = C1, value = 2B, err = 0
[  629.293259] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 31, value = 80, err = 0
[  629.293263] adv748x 6-0070:  adv748x_txa_power 396
[  629.293266] adv748x 6-0070:  adv748x_read 215: page = 0A, reg = 1E
[  629.293268] adv748x 6-0070:  adv748x_read_check 175
[  629.309530] adv748x 6-0070:  adv748x_read_check 202: val = 40, err = 0
[  629.309534] adv748x 6-0070:  adv748x_write_regs 310
[  629.317699] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 31, value = 82, err = 0
[  629.325784] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 1E, value = 00, err = 0
[  629.334158] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 00, value = 84, err = 0
[  629.342049] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = DA, value = 01, err = 0
[  629.350150] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = C1, value = 3B, err = 0
[  629.350153] adv748x 6-0070:  adv748x_write_regs 310
[  629.358436] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 00, value = 30, err = 0
[  629.366448] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F2, value = 01, err = 0
[  629.374687] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 0E, value = FF, err = 0
[  629.382772] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0F, value = 00, err = 0
[  629.390936] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 52, value = CD, err = 0
[  629.399326] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 80, err = 0
[  629.439956] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 9C, value = 00, err = 0
[  629.447979] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 9C, value = FF, err = 0
[  629.456327] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  629.464394] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 80, value = 51, err = 0
[  629.472458] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 81, value = 51, err = 0
[  629.480588] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 82, value = 68, err = 0
[  629.488731] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 03, value = 42, err = 0
[  629.496877] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 04, value = B5, err = 0
[  629.505134] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 13, value = 00, err = 0
[  629.513193] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 17, value = 41, err = 0
[  629.521410] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 31, value = 12, err = 0
[  629.529470] adv748x 6-0070:  adv748x_write 223: page = 08, reg = E6, value = 4F, err = 0
[  629.537656] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 10, value = 70, err = 0
[  629.545745] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 00, value = 81, err = 0
[  629.553955] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 00, value = A1, err = 0
[  629.558726] adv748x 6-0070:  adv748x_write 223: page = 09, reg = D2, value = 40, err = 0
[  629.564925] adv748x 6-0070:  adv748x_write 223: page = 09, reg = C4, value = 0A, err = 0
[  629.569903] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 71, value = 33, err = 0
[  629.576392] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 72, value = 11, err = 0
[  629.581447] adv748x 6-0070:  adv748x_write 223: page = 09, reg = F0, value = 00, err = 0
[  629.589670] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 31, value = 82, err = 0
[  629.597722] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 1E, value = 40, err = 0
[  629.606279] adv748x 6-0070:  adv748x_write 223: page = 09, reg = DA, value = 01, err = 0
[  629.627102] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 00, value = 21, err = 0
[  629.643299] adv748x 6-0070:  adv748x_write 223: page = 09, reg = C1, value = 2B, err = 0
[  629.659674] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 31, value = 80, err = 0
[  629.659678] adv748x 6-0070:  adv748x_txb_power 419
[  629.659681] adv748x 6-0070:  adv748x_read 215: page = 09, reg = 1E
[  629.659683] adv748x 6-0070:  adv748x_read_check 175
[  629.676083] adv748x 6-0070:  adv748x_read_check 202: val = 40, err = 0
[  629.676087] adv748x 6-0070:  adv748x_write_regs 310
[  629.684258] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 31, value = 82, err = 0
[  629.692486] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 1E, value = 00, err = 0
[  629.700552] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 00, value = 81, err = 0
[  629.709179] adv748x 6-0070:  adv748x_write 223: page = 09, reg = DA, value = 01, err = 0
[  629.717305] adv748x 6-0070:  adv748x_write 223: page = 09, reg = C1, value = 3B, err = 0
[  629.725598] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 00, value = 40, err = 0
[  629.733744] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 10, value = E0, err = 0
[  629.733748] adv748x 6-0070:  adv748x_read 215: page = 02, reg = C9
[  629.733751] adv748x 6-0070:  adv748x_read_check 175
[  629.750218] adv748x 6-0070:  adv748x_read_check 202: val = 2C, err = 0
[  629.758699] adv748x 6-0070:  adv748x_write 223: page = 02, reg = C9, value = 2D, err = 0
[  629.758703] adv748x 6-0070:  adv748x_subdev_init 666
[  629.758707] adv748x 6-0070:  adv748x_subdev_init 681: name = adv748x 6-0070 hdmi
[  629.758724] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  629.758726] adv748x 6-0070:  adv748x_read_check 175
[  629.774930] adv748x 6-0070:  adv748x_read_check 202: val = 0, err = 0
[  629.782950] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  629.791083] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3C, value = 00, err = 0
[  629.791088] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  629.791091] adv748x 6-0070:  adv748x_read_check 175
[  629.799325] adv748x 6-0070:  adv748x_read_check 202: val = 80, err = 0
[  629.807803] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  629.815715] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3A, value = 80, err = 0
[  629.815722] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  629.815725] adv748x 6-0070:  adv748x_read_check 175
[  629.832203] adv748x 6-0070:  adv748x_read_check 202: val = 80, err = 0
[  629.840467] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  629.848405] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3B, value = 80, err = 0
[  629.848411] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  629.848414] adv748x 6-0070:  adv748x_read_check 175
[  629.864713] adv748x 6-0070:  adv748x_read_check 202: val = 80, err = 0
[  629.872873] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  629.880926] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3D, value = 00, err = 0
[  629.880931] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  629.880934] adv748x 6-0070:  adv748x_read_check 175
[  629.894007] adv748x 6-0070:  adv748x_read_check 202: val = 80, err = 0
[  629.900194] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  629.905264] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 37, value = 00, err = 0
[  629.905268] adv748x 6-0070:  adv748x_subdev_init 666
[  629.905272] adv748x 6-0070:  adv748x_subdev_init 681: name = adv748x 6-0070 afe
[  629.911782] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 00, value = 00, err = 0
[  629.911785] adv748x 6-0070: AFE Default input set to 0
[  629.916691] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  629.924854] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0A, value = 00, err = 0
[  629.932870] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  629.941022] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 08, value = 80, err = 0
[  629.949064] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  629.957205] adv748x 6-0070:  adv748x_write 223: page = 08, reg = E3, value = 80, err = 0
[  629.965225] adv748x 6-0070:  adv748x_write 223: page = 08, reg = E4, value = 80, err = 0
[  629.973400] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  629.979533] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0B, value = 00, err = 0
[  629.984392] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  629.984396] adv748x 6-0070:  adv748x_read 215: page = 08, reg = 0C
[  629.984398] adv748x 6-0070:  adv748x_read_check 175
[  629.999095] adv748x 6-0070:  adv748x_read_check 202: val = 36, err = 0
[  630.004134] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0C, value = 36, err = 0
[  630.004138] adv748x 6-0070:  adv748x_read 215: page = 08, reg = 14
[  630.004140] adv748x 6-0070:  adv748x_read_check 175
[  630.017702] adv748x 6-0070:  adv748x_read_check 202: val = F7, err = 0
[  630.022585] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 14, value = FF, err = 0
[  630.022589] adv748x 6-0070:  adv748x_csi2_init 281
[  630.022591] adv748x 6-0070:  adv748x_csi2_init 285: TXA
[  630.022594] adv748x 6-0070:  adv748x_csi2_init 289: TXA
[  630.029026] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 0D, value = 00, err = 0
[  630.029029] adv748x 6-0070:  adv748x_subdev_init 666
[  630.029033] adv748x 6-0070:  adv748x_subdev_init 681: name = adv748x 6-0070 txa
[  630.029035] adv748x 6-0070:  adv748x_csi2_init 313
[  630.029037] adv748x 6-0070:  adv748x_csi2_init 316
[  630.029039] adv748x 6-0070:  adv748x_csi2_init 320
[  630.029041] (NULL device *):  adv748x_csi2_init_controls 262
[  630.029049] adv748x 6-0070:  adv748x_csi2_init 324
[  630.029051]  v4l2_async_register_subdev 295
[  630.029053]  v4l2_async_belongs 68: 1
[  630.029055]  v4l2_async_belongs 86: 5
[  630.029056]  v4l2_async_belongs 97: 7
[  630.029058]  match_of 45: sd , name = adv7482_a, full_name = /host1x/i2c@546c0000/adv7482_a@70
[  630.029060]  match_of 46: sd , name = adv7482_a, full_name = /host1x/i2c@546c0000/adv7482_a@70
[  630.029062]  v4l2_async_register_subdev 311: sd->name = adv748x 6-0070 txa
[  630.029064]  v4l2_async_test_notify 111: begin, sd->name = adv748x 6-0070 txa, sd->name[0] = 61
[  630.029066]  v4l2_async_test_notify 122: 1
[  630.029069] vi 54080000.vi: subdev adv748x 6-0070 txa bound
[  630.029071]  v4l2_async_test_notify 128: 2
[  630.029072]  v4l2_async_test_notify 132: 3
[  630.029075]  v4l2_device_register_subdev 163: v4l2_dev=ffffffc0f92a0048, sd=ffffffc0db99cb48, sd->v4l2_dev=          (null), sd->name=adv748x 6-0070 txa
[  630.029079] vi 54080000.vi: Entity type for entity adv748x 6-0070 txa was not initialized!
[  630.029097] adv748x 6-0070:  adv748x_csi2_registered 81
[  630.029099] adv748x 6-0070: Registered TXA (adv748x 6-0070 txa)
[  630.029102] adv748x 6-0070:  adv748x_csi2_register_link 50
[  630.029104]  v4l2_device_register_subdev 163: v4l2_dev=ffffffc0f92a0048, sd=ffffffc0db99c230, sd->v4l2_dev=          (null), sd->name=adv748x 6-0070 hdmi
[  630.029108]  v4l2_async_test_notify 139: 4
[  630.029491] adv748x 6-0070:  adv748x_csi2_get_format 157
[  630.029494] adv748x 6-0070:  adv748x_csi2_get_pad_format 141
[  630.029574]  tegra_channel_init_subdevices 1830
[  630.029577]  tegra_channel_init_subdevices 1844
[  630.029612]  tegra_channel_init_subdevices 1860
[  630.029615]  tegra_channel_populate_dev_info 1711: cdev: ffffffc0f7c9b828 chan: ffffffc0f9b3b018
[  630.029616]  tegra_channel_populate_dev_info 1723
[  630.029620]  tegra_channel_get_sensor_type 1685: s_data = ffffffc0db99bfc8, sd->name = adv748x 6-0070 txa
[  630.029621]  tegra_channel_get_sensor_type 1689
[  630.029622]  tegra_channel_get_sensor_type 1691
[  630.029623]  tegra_channel_get_sensor_type 1693
[  630.029624]  tegra_channel_populate_dev_info 1725
[  630.029628]  tegra_channel_get_sensor_type 1685: s_data = ffffffc0db99bfc8, sd->name = adv748x 6-0070 txa
[  630.029629]  tegra_channel_get_sensor_type 1689
[  630.029630]  tegra_channel_get_sensor_type 1691
[  630.029631]  tegra_channel_get_sensor_type 1693
[  630.029632]  tegra_channel_populate_dev_info 1727
[  630.029634]  tegra_channel_populate_dev_info 1729
[  630.029635]  tegra_channel_populate_dev_info 1733
[  630.029638]  tegra_channel_populate_dev_info 1735
[  630.029639]  tegra_channel_populate_dev_info 1737
[  630.029640]  tegra_channel_populate_dev_info 1744
[  630.030055]  v4l2_async_register_subdev 314
[  630.030061] adv748x 6-0070:  adv748x_csi2_init 327: ret = 0
[  630.030063] adv748x 6-0070:  adv748x_csi2_init 331

A strange thing is that when calling v4l2-ctl no messages is added to dmesg. I check the power signal of TXA and it was down. Unexpectedly no where in the driver code I could find any call to power up TXA. I added a line at the end of proble() to power up the TXA. Then the power signal was up and I could see the data signal of TXA using oscilloscope. However, again was not able to capture any frame. And then I had no idea to progress more!

@ShaneCCC , Do you have any idea to overcome this problem?

Did you enable the log in the csi2_fops.c/vi2_fops.c ?

Yes, but no messages .

Can you add some message to the vi2_fops.c/csi_fops.c to make sure can print message.

Hi @ShaneCCC

I added a message at the beginning of every function in vi2_fops.c and csi2_fops.c:
This is the output message after running v4l2-ctl command:

[  112.123223] vi2_power_on 1140
[  112.126118] tegra_vi2_power_on 1102
[  112.130904] vi_write 29
[  112.221985] vi2_channel_setup_queue 155
[  112.240042] vi2_channel_start_streaming 931
[  112.242791] vi_channel_syncpt_init 65
[  112.246612] tegra_channel_ec_init 247
[  112.248916] tegra_channel_write 43

In fact no function from csi2_fops.c is called.

I actually didn’t use nvcsi in my device tree. Do I have to use nvcsi?

How about the csi2_start_streaming() csi2_stop_streaming()
I don’t think without csi your sensor driver can register video node sucessfully.

None of them is called.

I didn’t use nvcsi because in the device tree provided in this post it was not used. If I use nvcsi as in the device tree of imx219 I get the following error after insmod:

[  168.886981] Internal error: Accessing user space memory outside uaccess.h routines: 96000005 [#1] PREEMPT SMP
[  168.896875] Modules linked in: adv748x(O+) bnep fuse mt7601u mac80211 cfg80211 zram overlay spidev nvgpu bluedroid_pm ip_tables x_tables
[  168.909233] CPU: 0 PID: 7863 Comm: insmod Tainted: G           O    4.9.140-tegra #44
[  168.917047] Hardware name: NVIDIA Jetson Nano Developer Kit (DT)
[  168.923041] task: ffffffc0cebbf000 task.stack: ffffffc0beb08000
[  168.928953] PC is at tegra_channel_get_sensor_type.isra.5+0x64/0xd4
[  168.935208] LR is at tegra_channel_get_sensor_type.isra.5+0x64/0xd4
[  168.941461] pc : [<ffffff8008ce1070>] lr : [<ffffff8008ce1070>] pstate: 40400045
[  168.948840] sp : ffffffc0beb0b730
[  168.952146] x29: ffffffc0beb0b730 x28: ffffffc0f97665b8 
[  168.957461] x27: ffffff8009497d28 x26: 0000000000000001 
[  168.962774] x25: ffffffc0f7fca1e8 x24: ffffff8009497d18 
[  168.968088] x23: ffffffc0f7fca018 x22: ffffffc0f4d02028 
[  168.973402] x21: ffffff800905c000 x20: 0000000000000000 
[  168.978714] x19: ffffff800905ca10 x18: 0000000000000010 
[  168.984028] x17: 0000000000000000 x16: 0000000000000000 
[  168.989342] x15: ffffffffffffffff x14: 2820202020202020 
[  168.994655] x13: 202020203d206174 x12: 61645f73203a3538 
[  168.999968] x11: 363120657079745f x10: 00000000000004a3 
[  169.005280] x9 : 65675f6c656e6e61 x8 : ffffff80083d3768 
[  169.010594] x7 : ffffff8009e74198 x6 : ffffffc0fefd9bf0 
[  169.015908] x5 : ffffffc0fefd9bf0 x4 : 0000000000000000 
[  169.021222] x3 : ffffffc0fefdf7f8 x2 : ffffffc0fefd9bf0 
[  169.026537] x1 : ffffffc0cebbf000 x0 : 0000000000000053 

[  169.033337] Process insmod (pid: 7863, stack limit = 0xffffffc0beb08000)
[  169.040021] Call trace:
[  169.042463] [<ffffff8008ce1070>] tegra_channel_get_sensor_type.isra.5+0x64/0xd4
[  169.049757] [<ffffff8008ce11b8>] tegra_channel_populate_dev_info+0xd8/0x24c
[  169.056707] [<ffffff8008b2f954>] tegra_channel_init_subdevices+0x31c/0x7b8
[  169.063568] [<ffffff8008b30a08>] tegra_vi_graph_notify_complete+0x2e8/0x6e0
[  169.070517] [<ffffff8008b141f8>] v4l2_async_test_notify+0x1b8/0x1f0
[  169.076771] [<ffffff8008b14514>] v4l2_async_register_subdev+0x14c/0x178
[  169.083385] [<ffffff80011530ec>] adv748x_csi2_init+0x20c/0x308 [adv748x]
[  169.090080] [<ffffff8001152774>] adv748x_probe+0x4f4/0x5e8 [adv748x]
[  169.096422] [<ffffff8008aea554>] i2c_device_probe+0x144/0x258
[  169.102157] [<ffffff80087818c0>] driver_probe_device+0xd8/0x408
[  169.108064] [<ffffff8008781ccc>] __driver_attach+0xdc/0x128
[  169.113624] [<ffffff800877f33c>] bus_for_each_dev+0x5c/0xa8
[  169.119184] [<ffffff80087810c0>] driver_attach+0x30/0x40
[  169.124483] [<ffffff8008780af4>] bus_add_driver+0x20c/0x2a8
[  169.130044] [<ffffff8008782c04>] driver_register+0x6c/0x110
[  169.135604] [<ffffff8008aeac44>] i2c_register_driver+0x4c/0xb0
[  169.141432] [<ffffff80012a2014>] adv748x_driver_init+0x14/0x30 [adv748x]
[  169.148122] [<ffffff8008083b3c>] do_one_initcall+0x44/0x130
[  169.153684] [<ffffff80081c207c>] do_init_module+0x64/0x1a8
[  169.159159] [<ffffff800815748c>] load_module+0x10a4/0x12d8
[  169.164633] [<ffffff8008157970>] SyS_finit_module+0xd8/0xf0
[  169.170193] [<ffffff8008083900>] el0_svc_naked+0x34/0x38
[  169.175494] ---[ end trace c9b7257a99fb3ec6 ]---

Full dmesg output:

[  166.712461] adv748x: loading out-of-tree module taints kernel.
[  166.719545]  adv748x_probe 751
[  166.722599] (NULL device *):  adv748x_probe 758
[  166.727265] adv748x 6-0070:  adv748x_parse_dt 692
[  166.732003] adv748x 6-0070: Endpoint /host1x/i2c@546c0000/adv7482_a@70/ports/port@0/endpoint on port 0
[  166.732007] adv748x 6-0070:  adv748x_configure_regmap 134
[  166.737496] adv748x 6-0070:  adv748x_identify_chip 642
[  166.742653] adv748x 6-0070:  adv748x_read 215: page = 00, reg = DF
[  166.748907] adv748x 6-0070:  adv748x_read_check 175
[  166.754579] adv748x 6-0070:  adv748x_read_check 202: val = 21, err = 0
[  166.761139] adv748x 6-0070:  adv748x_read 215: page = 00, reg = E0
[  166.767398] adv748x 6-0070:  adv748x_read_check 175
[  166.773028] adv748x 6-0070:  adv748x_read_check 202: val = 43, err = 0
[  166.779585] adv748x 6-0070: chip found @ 0xe0 revision 2143
[  166.779589] adv748x 6-0070:  adv748x_initialise_clients 274
[  166.785266] adv748x 6-0070:  adv748x_dummy_client 251
[  166.791060] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F3, value = 4C, err = 0
[  166.799284] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F3
[  166.805479] adv748x 6-0070:  adv748x_read_check 175
[  166.811148] adv748x 6-0070:  adv748x_read_check 202: val = 4C, err = 0
[  166.817875] adv748x 6-0070:  adv748x_configure_regmap 134
[  166.823426] adv748x 6-0070:  adv748x_dummy_client 251
[  166.829228] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F4, value = 44, err = 0
[  166.837368] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F4
[  166.843624] adv748x 6-0070:  adv748x_read_check 175
[  166.849260] adv748x 6-0070:  adv748x_read_check 202: val = 44, err = 0
[  166.856016] adv748x 6-0070:  adv748x_configure_regmap 134
[  166.861482] adv748x 6-0070:  adv748x_dummy_client 251
[  166.867320] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F5, value = 68, err = 0
[  166.875512] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F5
[  166.881759] adv748x 6-0070:  adv748x_read_check 175
[  166.887539] adv748x 6-0070:  adv748x_read_check 202: val = 68, err = 0
[  166.894272] adv748x 6-0070:  adv748x_configure_regmap 134
[  166.899866] adv748x 6-0070:  adv748x_dummy_client 251
[  166.905700] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F6, value = 6C, err = 0
[  166.913885] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F6
[  166.920136] adv748x 6-0070:  adv748x_read_check 175
[  166.925766] adv748x 6-0070:  adv748x_read_check 202: val = 6C, err = 0
[  166.932517] adv748x 6-0070:  adv748x_configure_regmap 134
[  166.937983] adv748x 6-0070:  adv748x_dummy_client 251
[  166.943837] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F7, value = 64, err = 0
[  166.952033] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F7
[  166.958222] adv748x 6-0070:  adv748x_read_check 175
[  166.963895] adv748x 6-0070:  adv748x_read_check 202: val = 64, err = 0
[  166.970657] adv748x 6-0070:  adv748x_configure_regmap 134
[  166.976181] adv748x 6-0070:  adv748x_dummy_client 251
[  166.981971] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F8, value = 62, err = 0
[  166.990260] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F8
[  166.996515] adv748x 6-0070:  adv748x_read_check 175
[  167.002221] adv748x 6-0070:  adv748x_read_check 202: val = 62, err = 0
[  167.008984] adv748x 6-0070:  adv748x_configure_regmap 134
[  167.014454] adv748x 6-0070:  adv748x_dummy_client 251
[  167.020323] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F9, value = 82, err = 0
[  167.028509] adv748x 6-0070:  adv748x_read 215: page = 00, reg = F9
[  167.034706] adv748x 6-0070:  adv748x_read_check 175
[  167.040377] adv748x 6-0070:  adv748x_read_check 202: val = 82, err = 0
[  167.047090] adv748x 6-0070:  adv748x_configure_regmap 134
[  167.052616] adv748x 6-0070:  adv748x_dummy_client 251
[  167.058455] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FA, value = F2, err = 0
[  167.066642] adv748x 6-0070:  adv748x_read 215: page = 00, reg = FA
[  167.072903] adv748x 6-0070:  adv748x_read_check 175
[  167.078576] adv748x 6-0070:  adv748x_read_check 202: val = F2, err = 0
[  167.085290] adv748x 6-0070:  adv748x_configure_regmap 134
[  167.090746] adv748x 6-0070:  adv748x_dummy_client 251
[  167.096671] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FB, value = 90, err = 0
[  167.104929] adv748x 6-0070:  adv748x_read 215: page = 00, reg = FB
[  167.111184] adv748x 6-0070:  adv748x_read_check 175
[  167.116824] adv748x 6-0070:  adv748x_read_check 202: val = 90, err = 0
[  167.123591] adv748x 6-0070:  adv748x_configure_regmap 134
[  167.129042] adv748x 6-0070:  adv748x_dummy_client 251
[  167.134856] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FC, value = 94, err = 0
[  167.143077] adv748x 6-0070:  adv748x_read 215: page = 00, reg = FC
[  167.149266] adv748x 6-0070:  adv748x_read_check 175
[  167.154945] adv748x 6-0070:  adv748x_read_check 202: val = 94, err = 0
[  167.161704] adv748x 6-0070:  adv748x_configure_regmap 134
[  167.167236] adv748x 6-0070:  adv748x_reset 600
[  167.171700] adv748x 6-0070:  adv748x_write_regs 310
[  167.177307] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FF, value = FF, err = 0
[  167.199790] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 01, value = 76, err = 0
[  167.208707] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F2, value = 01, err = 0
[  167.216879] adv748x 6-0070:  adv748x_write_regs 310
[  167.222494] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F3, value = 4C, err = 0
[  167.231442] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F4, value = 44, err = 0
[  167.240302] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F5, value = 68, err = 0
[  167.249146] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F6, value = 6C, err = 0
[  167.258000] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F7, value = 64, err = 0
[  167.266828] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F8, value = 62, err = 0
[  167.275675] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FA, value = 82, err = 0
[  167.284518] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FB, value = F2, err = 0
[  167.293351] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FC, value = 90, err = 0
[  167.302292] adv748x 6-0070:  adv748x_write 223: page = 00, reg = FD, value = 94, err = 0
[  167.310508] adv748x 6-0070:  adv748x_write_regs 310
[  167.316107] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 00, value = 40, err = 0
[  167.325095] adv748x 6-0070:  adv748x_write 223: page = 05, reg = 40, value = 83, err = 0
[  167.333929] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 00, value = 08, err = 0
[  167.342837] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 98, value = FF, err = 0
[  167.351694] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 99, value = A3, err = 0
[  167.360550] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 9A, value = 00, err = 0
[  167.369384] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 9B, value = 0A, err = 0
[  167.378211] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 9D, value = 40, err = 0
[  167.387123] adv748x 6-0070:  adv748x_write 223: page = 03, reg = CB, value = 09, err = 0
[  167.395886] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 3D, value = 10, err = 0
[  167.404786] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 3E, value = 7B, err = 0
[  167.413695] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 3F, value = 5E, err = 0
[  167.422498] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 4E, value = FE, err = 0
[  167.431359] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 4F, value = 18, err = 0
[  167.440187] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 57, value = A3, err = 0
[  167.449020] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 58, value = 04, err = 0
[  167.457869] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 85, value = 10, err = 0
[  167.466696] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 83, value = 00, err = 0
[  167.475547] adv748x 6-0070:  adv748x_write 223: page = 03, reg = A3, value = 01, err = 0
[  167.484372] adv748x 6-0070:  adv748x_write 223: page = 03, reg = BE, value = 00, err = 0
[  167.493200] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 6C, value = 01, err = 0
[  167.502127] adv748x 6-0070:  adv748x_write 223: page = 03, reg = F8, value = 01, err = 0
[  167.510955] adv748x 6-0070:  adv748x_write 223: page = 03, reg = 0F, value = 00, err = 0
[  167.519896] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 04, value = 02, err = 0
[  167.528728] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 12, value = F0, err = 0
[  167.537564] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 17, value = 80, err = 0
[  167.546400] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 03, value = 86, err = 0
[  167.555235] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 7C, value = 00, err = 0
[  167.564055] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 0C, value = E0, err = 0
[  167.572847] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 0E, value = DD, err = 0
[  167.581685] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 10, value = A0, err = 0
[  167.590529] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 00, value = 84, err = 0
[  167.599389] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 00, value = A4, err = 0
[  167.608309] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = DB, value = 10, err = 0
[  167.617231] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = D6, value = 07, err = 0
[  167.626065] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = C4, value = 0A, err = 0
[  167.634888] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 71, value = 33, err = 0
[  167.643726] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 72, value = 11, err = 0
[  167.652520] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = F0, value = 00, err = 0
[  167.661302] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 31, value = 82, err = 0
[  167.670134] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 1E, value = 40, err = 0
[  167.678954] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = DA, value = 01, err = 0
[  167.703711] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 00, value = 24, err = 0
[  167.723731] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = C1, value = 2B, err = 0
[  167.743770] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 31, value = 80, err = 0
[  167.751931] adv748x 6-0070:  adv748x_txa_power 396
[  167.756738] adv748x 6-0070:  adv748x_read 215: page = 0A, reg = 1E
[  167.762924] adv748x 6-0070:  adv748x_read_check 175
[  167.768597] adv748x 6-0070:  adv748x_read_check 202: val = 40, err = 0
[  167.775207] adv748x 6-0070:  adv748x_write_regs 310
[  167.780776] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 31, value = 82, err = 0
[  167.789607] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 1E, value = 00, err = 0
[  167.798438] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 00, value = 84, err = 0
[  167.807289] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = DA, value = 01, err = 0
[  167.816158] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = C1, value = 3B, err = 0
[  167.824379] adv748x 6-0070:  adv748x_write_regs 310
[  167.829951] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 00, value = 30, err = 0
[  167.838795] adv748x 6-0070:  adv748x_write 223: page = 00, reg = F2, value = 01, err = 0
[  167.847634] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 0E, value = FF, err = 0
[  167.856470] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0F, value = 00, err = 0
[  167.865301] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 52, value = CD, err = 0
[  167.874132] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 80, err = 0
[  167.882996] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 9C, value = 00, err = 0
[  167.891810] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 9C, value = FF, err = 0
[  167.900678] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  167.909514] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 80, value = 51, err = 0
[  167.918457] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 81, value = 51, err = 0
[  167.927431] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 82, value = 68, err = 0
[  167.936287] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 03, value = 42, err = 0
[  167.945104] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 04, value = B5, err = 0
[  167.953948] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 13, value = 00, err = 0
[  167.962787] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 17, value = 41, err = 0
[  167.971647] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 31, value = 12, err = 0
[  167.980474] adv748x 6-0070:  adv748x_write 223: page = 08, reg = E6, value = 4F, err = 0
[  167.989318] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 10, value = 70, err = 0
[  167.998157] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 00, value = 81, err = 0
[  168.007028] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 00, value = A1, err = 0
[  168.015891] adv748x 6-0070:  adv748x_write 223: page = 09, reg = D2, value = 40, err = 0
[  168.024715] adv748x 6-0070:  adv748x_write 223: page = 09, reg = C4, value = 0A, err = 0
[  168.033555] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 71, value = 33, err = 0
[  168.042384] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 72, value = 11, err = 0
[  168.051266] adv748x 6-0070:  adv748x_write 223: page = 09, reg = F0, value = 00, err = 0
[  168.060155] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 31, value = 82, err = 0
[  168.068998] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 1E, value = 40, err = 0
[  168.077839] adv748x 6-0070:  adv748x_write 223: page = 09, reg = DA, value = 01, err = 0
[  168.099769] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 00, value = 21, err = 0
[  168.119790] adv748x 6-0070:  adv748x_write 223: page = 09, reg = C1, value = 2B, err = 0
[  168.143747] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 31, value = 80, err = 0
[  168.151907] adv748x 6-0070:  adv748x_txb_power 419
[  168.156718] adv748x 6-0070:  adv748x_read 215: page = 09, reg = 1E
[  168.162904] adv748x 6-0070:  adv748x_read_check 175
[  168.168637] adv748x 6-0070:  adv748x_read_check 202: val = 40, err = 0
[  168.175193] adv748x 6-0070:  adv748x_write_regs 310
[  168.180822] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 31, value = 82, err = 0
[  168.189656] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 1E, value = 00, err = 0
[  168.198484] adv748x 6-0070:  adv748x_write 223: page = 09, reg = 00, value = 81, err = 0
[  168.207343] adv748x 6-0070:  adv748x_write 223: page = 09, reg = DA, value = 01, err = 0
[  168.216199] adv748x 6-0070:  adv748x_write 223: page = 09, reg = C1, value = 3B, err = 0
[  168.225121] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 00, value = 40, err = 0
[  168.234013] adv748x 6-0070:  adv748x_write 223: page = 00, reg = 10, value = E0, err = 0
[  168.242150] adv748x 6-0070:  adv748x_read 215: page = 02, reg = C9
[  168.248348] adv748x 6-0070:  adv748x_read_check 175
[  168.253988] adv748x 6-0070:  adv748x_read_check 202: val = 2C, err = 0
[  168.261239] adv748x 6-0070:  adv748x_write 223: page = 02, reg = C9, value = 2D, err = 0
[  168.269376] adv748x 6-0070:  adv748x_subdev_init 666
[  168.274358] adv748x 6-0070:  adv748x_subdev_init 681: name = adv748x 6-0070 hdmi
[  168.281786] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  168.287983] adv748x 6-0070:  adv748x_read_check 175
[  168.293617] adv748x 6-0070:  adv748x_read_check 202: val = 0, err = 0
[  168.300785] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  168.309604] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3C, value = 00, err = 0
[  168.317729] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  168.324015] adv748x 6-0070:  adv748x_read_check 175
[  168.329648] adv748x 6-0070:  adv748x_read_check 202: val = 80, err = 0
[  168.336968] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  168.345758] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3A, value = 80, err = 0
[  168.353887] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  168.360078] adv748x 6-0070:  adv748x_read_check 175
[  168.365700] adv748x 6-0070:  adv748x_read_check 202: val = 80, err = 0
[  168.372931] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  168.381718] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3B, value = 80, err = 0
[  168.389844] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  168.396047] adv748x 6-0070:  adv748x_read_check 175
[  168.401668] adv748x 6-0070:  adv748x_read_check 202: val = 80, err = 0
[  168.408896] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  168.417679] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3D, value = 00, err = 0
[  168.425804] adv748x 6-0070:  adv748x_read 215: page = 02, reg = 3E
[  168.431996] adv748x 6-0070:  adv748x_read_check 175
[  168.437704] adv748x 6-0070:  adv748x_read_check 202: val = 80, err = 0
[  168.444930] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 3E, value = 80, err = 0
[  168.453722] adv748x 6-0070:  adv748x_write 223: page = 02, reg = 37, value = 00, err = 0
[  168.461838] adv748x 6-0070:  adv748x_subdev_init 666
[  168.466813] adv748x 6-0070:  adv748x_subdev_init 681: name = adv748x 6-0070 afe
[  168.474807] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 00, value = 00, err = 0
[  168.482925] adv748x 6-0070: AFE Default input set to 0
[  168.488781] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  168.497566] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0A, value = 00, err = 0
[  168.506355] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  168.515170] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 08, value = 80, err = 0
[  168.523934] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  168.532797] adv748x 6-0070:  adv748x_write 223: page = 08, reg = E3, value = 80, err = 0
[  168.541660] adv748x 6-0070:  adv748x_write 223: page = 08, reg = E4, value = 80, err = 0
[  168.550446] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  168.559265] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0B, value = 00, err = 0
[  168.568050] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0E, value = 00, err = 0
[  168.576169] adv748x 6-0070:  adv748x_read 215: page = 08, reg = 0C
[  168.582369] adv748x 6-0070:  adv748x_read_check 175
[  168.587975] adv748x 6-0070:  adv748x_read_check 202: val = 36, err = 0
[  168.595219] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 0C, value = 36, err = 0
[  168.603321] adv748x 6-0070:  adv748x_read 215: page = 08, reg = 14
[  168.609514] adv748x 6-0070:  adv748x_read_check 175
[  168.615172] adv748x 6-0070:  adv748x_read_check 202: val = 10, err = 0
[  168.622393] adv748x 6-0070:  adv748x_write 223: page = 08, reg = 14, value = FF, err = 0
[  168.630581] adv748x 6-0070:  adv748x_csi2_init 281
[  168.635383] adv748x 6-0070:  adv748x_csi2_init 285: TXA
[  168.640691] adv748x 6-0070:  adv748x_csi2_init 289: TXA
[  168.646609] adv748x 6-0070:  adv748x_write 223: page = 0A, reg = 0D, value = 00, err = 0
[  168.654736] adv748x 6-0070:  adv748x_subdev_init 666
[  168.659716] adv748x 6-0070:  adv748x_subdev_init 681: name = adv748x 6-0070 txa
[  168.667038] adv748x 6-0070:  adv748x_csi2_init 313
[  168.671839] adv748x 6-0070:  adv748x_csi2_init 316
[  168.676637] adv748x 6-0070:  adv748x_csi2_init 320
[  168.681438] (NULL device *):  adv748x_csi2_init_controls 262
[  168.687111] adv748x 6-0070:  adv748x_csi2_init 324
[  168.691911]  v4l2_async_register_subdev 295
[  168.696102]  v4l2_async_belongs 68: 1
[  168.699770]  v4l2_async_belongs 86: 5
[  168.703443]  v4l2_async_belongs 97: 7
[  168.707116]  match_of 45: sd , name = adv7482_a, full_name = /host1x/i2c@546c0000/adv7482_a@70
[  168.715727]  match_of 46: sd , name = adv7482_a, full_name = /host1x/i2c@546c0000/adv7482_a@70
[  168.724348]  v4l2_async_register_subdev 311: sd->name = adv748x 6-0070 txa
[  168.731319]  v4l2_async_test_notify 111: begin, sd->name = adv748x 6-0070 txa, sd->name[0] = 61
[  168.740023]  v4l2_async_test_notify 122: 1
[  168.744198] vi 54080000.vi: subdev adv748x 6-0070 txa bound
[  168.744201]  v4l2_async_test_notify 128: 2
[  168.748307]  v4l2_async_test_notify 132: 3
[  168.752413]  v4l2_device_register_subdev 163: v4l2_dev=ffffffc0f95dc048, sd=ffffffc0ceb59b48, sd->v4l2_dev=          (null), sd->name=adv748x 6-0070 txa
[  168.766063] vi 54080000.vi: Entity type for entity adv748x 6-0070 txa was not initialized!
[  168.774342] adv748x 6-0070:  adv748x_csi2_registered 81
[  168.779574] adv748x 6-0070: Registered TXA (adv748x 6-0070 txa)
[  168.785502] adv748x 6-0070:  adv748x_csi2_register_link 50
[  168.790998]  v4l2_device_register_subdev 163: v4l2_dev=ffffffc0f95dc048, sd=ffffffc0ceb59230, sd->v4l2_dev=          (null), sd->name=adv748x 6-0070 hdmi
[  168.804739]  v4l2_async_test_notify 139: 4
[  168.809282] vi2_add_ctrls 135
[  168.812139] vi2_stride_align 1196
[  168.815477] vi2_stride_align 1196
[  168.817324] vi2_stride_align 1196
[  168.818502] vi2_power_on 1140
[  168.823659] tegra_vi2_power_on 1102
[  168.827175] vi2_stride_align 1196
[  168.830493] vi2_stride_align 1196
[  168.833930] vi2_stride_align 1196
[  168.835281] tegra_vi2_s_ctrl 101
[  168.835284] vi_write 29
[  168.835455] csi2_power_on 527
[  168.835457] vi2_power_off 1171
[  168.835458] csi2_power_off 532
[  168.852111] tegra_vi2_power_off 1126
[  168.852112]  tegra_channel_init_subdevices 1830
[  168.860226]  tegra_channel_init_subdevices 1838
[  168.864764]  tegra_channel_populate_dev_info 1711: cdev: ffffffc0beb0b828 chan: ffffffc0f7fca018
[  168.873556]  tegra_channel_populate_dev_info 1723
[  168.878270]  tegra_channel_get_sensor_type 1685: s_data =           (null), sd->name = nvcsi--1
[  168.886981] Internal error: Accessing user space memory outside uaccess.h routines: 96000005 [#1] PREEMPT SMP
[  168.896875] Modules linked in: adv748x(O+) bnep fuse mt7601u mac80211 cfg80211 zram overlay spidev nvgpu bluedroid_pm ip_tables x_tables
[  168.909233] CPU: 0 PID: 7863 Comm: insmod Tainted: G           O    4.9.140-tegra #44
[  168.917047] Hardware name: NVIDIA Jetson Nano Developer Kit (DT)
[  168.923041] task: ffffffc0cebbf000 task.stack: ffffffc0beb08000
[  168.928953] PC is at tegra_channel_get_sensor_type.isra.5+0x64/0xd4
[  168.935208] LR is at tegra_channel_get_sensor_type.isra.5+0x64/0xd4
[  168.941461] pc : [<ffffff8008ce1070>] lr : [<ffffff8008ce1070>] pstate: 40400045
[  168.948840] sp : ffffffc0beb0b730
[  168.952146] x29: ffffffc0beb0b730 x28: ffffffc0f97665b8 
[  168.957461] x27: ffffff8009497d28 x26: 0000000000000001 
[  168.962774] x25: ffffffc0f7fca1e8 x24: ffffff8009497d18 
[  168.968088] x23: ffffffc0f7fca018 x22: ffffffc0f4d02028 
[  168.973402] x21: ffffff800905c000 x20: 0000000000000000 
[  168.978714] x19: ffffff800905ca10 x18: 0000000000000010 
[  168.984028] x17: 0000000000000000 x16: 0000000000000000 
[  168.989342] x15: ffffffffffffffff x14: 2820202020202020 
[  168.994655] x13: 202020203d206174 x12: 61645f73203a3538 
[  168.999968] x11: 363120657079745f x10: 00000000000004a3 
[  169.005280] x9 : 65675f6c656e6e61 x8 : ffffff80083d3768 
[  169.010594] x7 : ffffff8009e74198 x6 : ffffffc0fefd9bf0 
[  169.015908] x5 : ffffffc0fefd9bf0 x4 : 0000000000000000 
[  169.021222] x3 : ffffffc0fefdf7f8 x2 : ffffffc0fefd9bf0 
[  169.026537] x1 : ffffffc0cebbf000 x0 : 0000000000000053 

[  169.033337] Process insmod (pid: 7863, stack limit = 0xffffffc0beb08000)
[  169.040021] Call trace:
[  169.042463] [<ffffff8008ce1070>] tegra_channel_get_sensor_type.isra.5+0x64/0xd4
[  169.049757] [<ffffff8008ce11b8>] tegra_channel_populate_dev_info+0xd8/0x24c
[  169.056707] [<ffffff8008b2f954>] tegra_channel_init_subdevices+0x31c/0x7b8
[  169.063568] [<ffffff8008b30a08>] tegra_vi_graph_notify_complete+0x2e8/0x6e0
[  169.070517] [<ffffff8008b141f8>] v4l2_async_test_notify+0x1b8/0x1f0
[  169.076771] [<ffffff8008b14514>] v4l2_async_register_subdev+0x14c/0x178
[  169.083385] [<ffffff80011530ec>] adv748x_csi2_init+0x20c/0x308 [adv748x]
[  169.090080] [<ffffff8001152774>] adv748x_probe+0x4f4/0x5e8 [adv748x]
[  169.096422] [<ffffff8008aea554>] i2c_device_probe+0x144/0x258
[  169.102157] [<ffffff80087818c0>] driver_probe_device+0xd8/0x408
[  169.108064] [<ffffff8008781ccc>] __driver_attach+0xdc/0x128
[  169.113624] [<ffffff800877f33c>] bus_for_each_dev+0x5c/0xa8
[  169.119184] [<ffffff80087810c0>] driver_attach+0x30/0x40
[  169.124483] [<ffffff8008780af4>] bus_add_driver+0x20c/0x2a8
[  169.130044] [<ffffff8008782c04>] driver_register+0x6c/0x110
[  169.135604] [<ffffff8008aeac44>] i2c_register_driver+0x4c/0xb0
[  169.141432] [<ffffff80012a2014>] adv748x_driver_init+0x14/0x30 [adv748x]
[  169.148122] [<ffffff8008083b3c>] do_one_initcall+0x44/0x130
[  169.153684] [<ffffff80081c207c>] do_init_module+0x64/0x1a8
[  169.159159] [<ffffff800815748c>] load_module+0x10a4/0x12d8
[  169.164633] [<ffffff8008157970>] SyS_finit_module+0xd8/0xf0
[  169.170193] [<ffffff8008083900>] el0_svc_naked+0x34/0x38
[  169.175494] ---[ end trace c9b7257a99fb3ec6 ]---

Sorry, I am not really understand what’s your mean “didn’t use nvcsi”.

Sorry, I should have provided clear information.

In the original tegra210-camera-rbpcv2-imx219.dtsi file there is a nvcsi block:

csi_base: nvcsi {
			num-channels = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			csi_chan0: channel@0 {
				reg = <0>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					csi_chan0_port0: port@0 {
						reg = <0>;
						rbpcv2_imx219_csi_in0: endpoint@0 {
							port-index = <0>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_out0>;
						};
					};
					csi_chan0_port1: port@1 {
						reg = <1>;
						rbpcv2_imx219_csi_out0: endpoint@1 {
							remote-endpoint = <&rbpcv2_imx219_vi_in0>;
						};
					};
				};
			};
		};

However, in the .dtsi file provided in the thread that I mentioned above this block does not exists. If I don’t use this block in my .dtsi file for ADV7482, insmod works without any problem but no frame can be captured as I explained before. If I create a .dtsi similar to the tegra210-camera-rbpcv2-imx219.dtsiwith the nvcsi block, insmod results in segmentation fault with the provided error in the previous posts.

I think the nvcsi should be the must have part for the camera capture.
For the kernel crash it could be the driver issue. You may reference to the tc358840 to implement the HDMI in device. tegra210-camera-imx274-hdmi.dtsi