Modifying device tree for IMX219 behind I2C mux

Ok, will give that a shot.

Do you know if any of the nodes in tegra-camera-platform need to be changed from the default L4T dtb?

For example here is what the tegra-camera-platform currently looks like:

	tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		num_csi_lanes = <0x04>;
		max_lane_speed = <0x16e360>;
		min_bits_per_pixel = <0x0a>;
		vi_peak_byte_per_pixel = <0x02>;
		vi_bw_margin_pct = <0x19>;
		max_pixel_rate = <0x3a980>;
		isp_peak_byte_per_pixel = <0x05>;
		isp_bw_margin_pct = <0x19>;
		linux,phandle = <0xc9>;
		phandle = <0xc9>;

		modules {

			module0 {
				badge = "porg_front_RBPCV2";
				position = "front";
				orientation = [31 00];
				status = "disabled";
				linux,phandle = <0xbf>;
				phandle = <0xbf>;

				drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 7-0010";
					proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@0/rbpcv2_imx219_a@10";
					status = "disabled";
					linux,phandle = <0xc0>;
					phandle = <0xc0>;
				};

				drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
					status = "disabled";
					linux,phandle = <0xc1>;
					phandle = <0xc1>;
				};
			};

			module1 {
				badge = "porg_rear_RBPCV2";
				position = "rear";
				orientation = [31 00];
				status = "disabled";
				linux,phandle = <0xca>;
				phandle = <0xca>;

				drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 8-0010";
					proc-device-tree = "/proc/device-tree/cam_i2cmux/i2c@1/rbpcv2_imx219_e@10";
					status = "disabled";
					linux,phandle = <0xcd>;
					phandle = <0xcd>;
				};

				drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
					status = "disabled";
					linux,phandle = <0xce>;
					phandle = <0xce>;
				};
			};
		};
	};

I imagine I need to change them because I am not using cam_i2cmux anymore, I’m using host1x/i2c@546c0000. I don’t know enough about the device tree to intuitively make these changes.

Right, need to change that like
host1x/i2c@546c0000/tca9548@70/i2c@0

Ok, making some progress! now I get a different error during boot:

[ 0.605565] i2c i2c-6: of_i2c: modalias failure on /host1x/i2c@546c0000/tca9548@70

And a whole bunch of no ack messages:

jetson@jetson:~$ i2cdetect -r -y 6
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e[  373.156029] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x3
  f
00:          -- [  373.167576] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x4
-- [  373.175030] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x5
-- [  373.182310] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x6
-- [  373.189761] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x7
-- [  373.197425] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x8
-- [  373.204885] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x9
-- [  373.212066] tegra-vii2c 546c0000.i2c: no acknowledge from address 0xa
-- [  373.219718] tegra-vii2c 546c0000.i2c: no acknowledge from address 0xb
-- [  373.226875] tegra-vii2c 546c0000.i2c: no acknowledge from address 0xc
-- [  373.234558] tegra-vii2c 546c0000.i2c: no acknowledge from address 0xd
-- [  373.242378] tegra-vii2c 546c0000.i2c: no acknowledge from address 0xe
-- [  373.249659] tegra-vii2c 546c0000.i2c: no acknowledge from address 0xf
-- 
10: [  373.257328] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x10
-- [  373.265148] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x11
-- [  373.272869] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x12
-- [  373.280138] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x13
-- [  373.287659] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x14
-- [  373.294927] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x15
-- [  373.302429] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x16
-- [  373.309926] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x17
-- [  373.317410] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x18
-- [  373.324912] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x19
-- [  373.332381] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x1a
-- [  373.339639] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x1b
-- [  373.346877] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x1c
-- [  373.354365] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x1d
-- [  373.362108] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x1e
-- [  373.369534] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x1f
-- 
20: [  373.376967] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x20
-- [  373.384736] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x21
-- [  373.392025] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x22
-- [  373.399450] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x23
-- [  373.406844] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x24
-- [  373.414345] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x25
-- [  373.421718] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x26
-- [  373.429192] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x27
-- [  373.436625] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x28
-- [  373.443889] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x29
-- [  373.451392] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x2a
-- [  373.458827] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x2b
-- [  373.466320] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x2c
-- [  373.473822] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x2d
-- [  373.481253] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x2e
-- [  373.489022] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x2f
-- 
30: [  373.496465] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x30
-- [  373.504069] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x31
-- [  373.511589] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x32
-- [  373.519096] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x33
-- [  373.526590] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x34
-- [  373.534116] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x35
-- [  373.541607] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x36
-- [  373.549850] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x37
-- [  373.557128] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x38
-- [  373.564382] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x39
-- [  373.571836] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x3a
-- [  373.579235] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x3b
-- [  373.586764] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x3c
-- [  373.594503] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x3d
-- [  373.602232] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x3e
-- [  373.609732] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x3f
-- 
40: UU [  373.617505] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x41
-- [  373.625503] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x42
-- [  373.632922] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x43
-- [  373.640342] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x44
-- [  373.647643] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x45
-- [  373.654874] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x46
-- [  373.662311] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x47
-- [  373.670037] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x48
-- [  373.677470] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x49
-- [  373.684928] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x4a
-- [  373.692362] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x4b
-- [  373.699622] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x4c
-- [  373.707089] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x4d
-- [  373.714623] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x4e
-- [  373.721960] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x4f
-- 
50: [  373.729478] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x50
-- [  373.737259] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x51
-- [  373.744720] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x52
-- [  373.752280] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x53
-- [  373.759552] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x54
-- [  373.766943] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x55
-- [  373.774478] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x56
-- [  373.782299] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x57
-- [  373.790150] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x58
-- [  373.797655] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x59
-- [  373.805162] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x5a
-- [  373.812692] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x5b
-- [  373.819950] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x5c
-- [  373.827353] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x5d
-- [  373.834767] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x5e
-- [  373.842231] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x5f
-- 
60: [  373.849673] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x60
-- [  373.857766] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x61
-- [  373.865496] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x62
-- [  373.873049] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x63
-- [  373.880471] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x64
-- [  373.887739] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x65
-- [  373.895118] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x66
-- [  373.903059] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x67
-- [  373.910816] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x68
-- [  373.918555] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x69
-- [  373.925989] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x6a
-- [  373.933409] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x6b
-- [  373.940862] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x6c
-- [  373.948113] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x6d
-- [  373.955562] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x6e
-- [  373.962967] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x6f
-- 
70: 70 [  373.971475] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x71
-- [  373.979197] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x72
-- [  373.986624] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x73
-- [  373.994363] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x74
-- [  374.001819] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x75
-- [  374.009243] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x76
-- [  374.016662] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x77
--

Here’s my relevant nodes:

	tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		num_csi_lanes = <0x04>;
		max_lane_speed = <0x16e360>;
		min_bits_per_pixel = <0x0a>;
		vi_peak_byte_per_pixel = <0x02>;
		vi_bw_margin_pct = <0x19>;
		max_pixel_rate = <0x3a980>;
		isp_peak_byte_per_pixel = <0x05>;
		isp_bw_margin_pct = <0x19>;
		linux,phandle = <0xc9>;
		phandle = <0xc9>;

		modules {

			module0 {
				badge = "porg_front_RBPCV2";
				position = "front";
				orientation = [31 00];
				status = "okay";
				linux,phandle = <0xbf>;
				phandle = <0xbf>;

				drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 7-0010";
					proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@70/i2c@0/rbpcv2_imx219_a@10";
					status = "okay";
					linux,phandle = <0xc0>;
					phandle = <0xc0>;
				};

				drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
					status = "okay";
					linux,phandle = <0xc1>;
					phandle = <0xc1>;
				};
			};

			module1 {
				badge = "porg_rear_RBPCV2";
				position = "rear";
				orientation = [31 00];
				status = "disabled";
				linux,phandle = <0xca>;
				phandle = <0xca>;

				drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 8-0010";
					proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@70/i2c@0/rbpcv2_imx219_a@10";
					status = "disabled";
					linux,phandle = <0xcd>;
					phandle = <0xcd>;
				};

				drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
					status = "disabled";
					linux,phandle = <0xce>;
					phandle = <0xce>;
				};
			};
		};
	};
		i2c@546c0000 {
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			compatible = "nvidia,tegra210-vii2c";
			reg = <0x00 0x546c0000 0x00 0x34000>;
			iommus = <0x30 0x12>;
			interrupts = <0x00 0x11 0x04>;
			scl-gpio = <0x5b 0x92 0x00>;
			sda-gpio = <0x5b 0x93 0x00>;
			status = "okay";
			clocks = <0x26 0xd0 0x26 0x51 0x26 0x1c>;
			clock-names = "vii2c\0i2cslow\0host1x";
			resets = <0x26 0xd0>;
			reset-names = "vii2c";
			clock-frequency = <0x61a80>;
			bus-pullup-supply = <0x47>;
			avdd_dsi_csi-supply = <0x3b>;
			linux,phandle = <0xad>;
			phandle = <0xad>;

			tca9548@70 {
				status = "okay";
				reg = <0x70>;
				#address-cells = <1>;
				#size-cells = <0>;
				force_bus_start = <0x1E>;
				i2c@0 {
					reg = <0>;
					i2c-mux,deselect-on-exit;
					rbpcv2_imx219_a@10 {
                               ...
					};
				};
			};

I wonder if this just means the node properties of i2c@546c0000 are incorrect?

More progress! I added vcc-supply to the tca9548@70 node, now I have multiple i2c addresses! Which must mean the i2cmux is finally being utilised

jetson@jetson:~$ i2cdetect -l
i2c-35  i2c             i2c-6-mux (chan_id 5)                   I2C adapter
i2c-3   i2c             7000c700.i2c                            I2C adapter
i2c-33  i2c             i2c-6-mux (chan_id 3)                   I2C adapter
i2c-1   i2c             7000c400.i2c                            I2C adapter
i2c-31  i2c             i2c-6-mux (chan_id 1)                   I2C adapter
i2c-8   i2c             i2c-6-mux (chan_id 1)                   I2C adapter
i2c-6   i2c             Tegra I2C adapter                       I2C adapter
i2c-36  i2c             i2c-6-mux (chan_id 6)                   I2C adapter
i2c-4   i2c             7000d000.i2c                            I2C adapter
i2c-34  i2c             i2c-6-mux (chan_id 4)                   I2C adapter
i2c-2   i2c             7000c500.i2c                            I2C adapter
i2c-32  i2c             i2c-6-mux (chan_id 2)                   I2C adapter
i2c-0   i2c             7000c000.i2c                            I2C adapter
i2c-30  i2c             i2c-6-mux (chan_id 0)                   I2C adapter
i2c-7   i2c             i2c-6-mux (chan_id 0)                   I2C adapter
i2c-37  i2c             i2c-6-mux (chan_id 7)                   I2C adapter
i2c-5   i2c             7000d100.i2c                            I2C adapter

But I’m still getting

jetman@jetman:~$ dmesg | grep -i i2c
[    0.442743] iommu: Adding device 546c0000.i2c to group 21
[    0.444138] tegra-pmc 7000e400.pmc: i2c-thermtrip node not found, emergency thermal reset disabled.
[    0.498395] iommu: Adding device 7000c000.i2c to group 24
[    0.498652] iommu: Adding device 7000c400.i2c to group 25
[    0.498945] iommu: Adding device 7000c500.i2c to group 26
[    0.499251] iommu: Adding device 7000c700.i2c to group 27
[    0.499554] iommu: Adding device 7000d000.i2c to group 28
[    0.499895] iommu: Adding device 7000d100.i2c to group 29
[    1.870173] i2c /dev entries driver
[    1.872131] i2c i2c-6: Added multiplexed i2c bus 7
[    1.872495] i2c i2c-6: Added multiplexed i2c bus 8
[    1.872503] i2c-mux-gpio cam_i2cmux: 2 port mux on Tegra I2C adapter adapter
[    1.873686] i2c i2c-6: Added multiplexed i2c bus 30
[    1.874088] i2c i2c-6: Added multiplexed i2c bus 31
[    1.874312] i2c i2c-6: Added multiplexed i2c bus 32
[    1.874598] i2c i2c-6: Added multiplexed i2c bus 33
[    1.874881] i2c i2c-6: Added multiplexed i2c bus 34
[    1.875132] i2c i2c-6: Added multiplexed i2c bus 35
[    1.875440] i2c i2c-6: Added multiplexed i2c bus 36
[    1.875770] i2c i2c-6: Added multiplexed i2c bus 37
[    1.875778] pca954x 6-0070: registered 8 multiplexed busses for I2C switch pca9548
[    1.900002] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x10
[    1.900100] imx219 7-0010: imx219_board_setup: error during i2c read probe (-121)
[    1.936082] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x10
[    1.936174] imx219 8-0010: imx219_board_setup: error during i2c read probe (-121)
[    1.972614] tegra-vii2c 546c0000.i2c: no acknowledge from address 0x10
[    1.972886] imx219 30-0010: imx219_board_setup: error during i2c read probe (-121)

Looks like the imx219 didn’t add behind the tca9548@70 scope.

Which is strange, because my node looks like this:

		i2c@546c0000 {
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			compatible = "nvidia,tegra210-vii2c";
			reg = <0x00 0x546c0000 0x00 0x34000>;
			iommus = <0x30 0x12>;
			interrupts = <0x00 0x11 0x04>;
			scl-gpio = <0x5b 0x92 0x00>;
			sda-gpio = <0x5b 0x93 0x00>;
			status = "okay";
			clocks = <0x26 0xd0 0x26 0x51 0x26 0x1c>;
			clock-names = "vii2c\0i2cslow\0host1x";
			resets = <0x26 0xd0>;
			reset-names = "vii2c";
			clock-frequency = <0x61a80>;
			bus-pullup-supply = <0x47>;
			avdd_dsi_csi-supply = <0x3b>;
			linux,phandle = <0xad>;
			phandle = <0xad>;

			tca9548@70 {
				compatible = "nxp,pca9548";
				status = "okay";
				reg = <0x70>;
				#address-cells = <1>;
				#size-cells = <0>;
				vcc-supply = <0x4c>;
				force_bus_start = <0x1E>;
				i2c@0 {
					reg = <0>;
					i2c-mux,deselect-on-exit;
					#address-cells = <1>;
					#size-cells = <0>;
					rbpcv2_imx219_a@10 {
						compatible = "nvidia,imx219";
						reg = <0x10>;
						devnode = "video0";
						physical_w = "3.680";
						physical_h = "2.760";
						sensor_model = "imx219";
						use_sensor_mode_id = "true";
						status = "okay";
						reset-gpios = <0x5b 0x97 0x00>;
						linux,phandle = <0xbe>;
						phandle = <0xbe>;

						mode0 {
							mclk_khz = "24000";
							num_lanes = [32 00];
							tegra_sinterface = "serial_a";
							phy_mode = "DPHY";
							discontinuous_clk = "yes";
							dpcm_enable = "false";
							cil_settletime = [30 00];
							active_w = "3264";
							active_h = "2464";
							pixel_t = "bayer_rggb";
							readout_orientation = "90";
							line_length = "3448";
							inherent_gain = [31 00];
							mclk_multiplier = "9.33";
							pix_clk_hz = "182400000";
							gain_factor = "16";
							framerate_factor = "1000000";
							exposure_factor = "1000000";
							min_gain_val = "16";
							max_gain_val = "170";
							step_gain_val = [31 00];
							default_gain = "16";
							min_hdr_ratio = [31 00];
							max_hdr_ratio = [31 00];
							min_framerate = "2000000";
							max_framerate = "21000000";
							step_framerate = [31 00];
							default_framerate = "21000000";
							min_exp_time = "13";
							max_exp_time = "683709";
							step_exp_time = [31 00];
							default_exp_time = "2495";
							embedded_metadata_height = [32 00];
						};

						mode1 {
							mclk_khz = "24000";
							num_lanes = [32 00];
							tegra_sinterface = "serial_a";
							phy_mode = "DPHY";
							discontinuous_clk = "yes";
							dpcm_enable = "false";
							cil_settletime = [30 00];
							active_w = "3264";
							active_h = "1848";
							pixel_t = "bayer_rggb";
							readout_orientation = "90";
							line_length = "3448";
							inherent_gain = [31 00];
							mclk_multiplier = "9.33";
							pix_clk_hz = "182400000";
							gain_factor = "16";
							framerate_factor = "1000000";
							exposure_factor = "1000000";
							min_gain_val = "16";
							max_gain_val = "170";
							step_gain_val = [31 00];
							default_gain = "16";
							min_hdr_ratio = [31 00];
							max_hdr_ratio = [31 00];
							min_framerate = "2000000";
							max_framerate = "28000000";
							step_framerate = [31 00];
							default_framerate = "28000000";
							min_exp_time = "13";
							max_exp_time = "683709";
							step_exp_time = [31 00];
							default_exp_time = "2495";
							embedded_metadata_height = [32 00];
						};

						mode2 {
							mclk_khz = "24000";
							num_lanes = [32 00];
							tegra_sinterface = "serial_a";
							phy_mode = "DPHY";
							discontinuous_clk = "yes";
							dpcm_enable = "false";
							cil_settletime = [30 00];
							active_w = "1920";
							active_h = "1080";
							pixel_t = "bayer_rggb";
							readout_orientation = "90";
							line_length = "3448";
							inherent_gain = [31 00];
							mclk_multiplier = "9.33";
							pix_clk_hz = "182400000";
							gain_factor = "16";
							framerate_factor = "1000000";
							exposure_factor = "1000000";
							min_gain_val = "16";
							max_gain_val = "170";
							step_gain_val = [31 00];
							default_gain = "16";
							min_hdr_ratio = [31 00];
							max_hdr_ratio = [31 00];
							min_framerate = "2000000";
							max_framerate = "30000000";
							step_framerate = [31 00];
							default_framerate = "30000000";
							min_exp_time = "13";
							max_exp_time = "683709";
							step_exp_time = [31 00];
							default_exp_time = "2495";
							embedded_metadata_height = [32 00];
						};

						mode3 {
							mclk_khz = "24000";
							num_lanes = [32 00];
							tegra_sinterface = "serial_a";
							phy_mode = "DPHY";
							discontinuous_clk = "yes";
							dpcm_enable = "false";
							cil_settletime = [30 00];
							active_w = "1640";
							active_h = "1232";
							pixel_t = "bayer_rggb";
							readout_orientation = "90";
							line_length = "3448";
							inherent_gain = [31 00];
							mclk_multiplier = "9.33";
							pix_clk_hz = "182400000";
							gain_factor = "16";
							framerate_factor = "1000000";
							exposure_factor = "1000000";
							min_gain_val = "16";
							max_gain_val = "170";
							step_gain_val = [31 00];
							default_gain = "16";
							min_hdr_ratio = [31 00];
							max_hdr_ratio = [31 00];
							min_framerate = "2000000";
							max_framerate = "30000000";
							step_framerate = [31 00];
							default_framerate = "30000000";
							min_exp_time = "13";
							max_exp_time = "683709";
							step_exp_time = [31 00];
							default_exp_time = "2495";
							embedded_metadata_height = [32 00];
						};

						mode4 {
							mclk_khz = "24000";
							num_lanes = [32 00];
							tegra_sinterface = "serial_a";
							phy_mode = "DPHY";
							discontinuous_clk = "yes";
							dpcm_enable = "false";
							cil_settletime = [30 00];
							active_w = "1280";
							active_h = "720";
							pixel_t = "bayer_rggb";
							readout_orientation = "90";
							line_length = "3448";
							inherent_gain = [31 00];
							mclk_multiplier = "9.33";
							pix_clk_hz = "182400000";
							gain_factor = "16";
							framerate_factor = "1000000";
							exposure_factor = "1000000";
							min_gain_val = "16";
							max_gain_val = "170";
							step_gain_val = [31 00];
							default_gain = "16";
							min_hdr_ratio = [31 00];
							max_hdr_ratio = [31 00];
							min_framerate = "2000000";
							max_framerate = "60000000";
							step_framerate = [31 00];
							default_framerate = "60000000";
							min_exp_time = "13";
							max_exp_time = "683709";
							step_exp_time = [31 00];
							default_exp_time = "2495";
							embedded_metadata_height = [32 00];
						};

						mode5 {
							mclk_khz = "24000";
							num_lanes = [32 00];
							tegra_sinterface = "serial_a";
							phy_mode = "DPHY";
							discontinuous_clk = "yes";
							dpcm_enable = "false";
							cil_settletime = [30 00];
							active_w = "1280";
							active_h = "720";
							pixel_t = "bayer_rggb";
							readout_orientation = "90";
							line_length = "3560";
							inherent_gain = [31 00];
							mclk_multiplier = "9.33";
							pix_clk_hz = "169600000";
							gain_factor = "16";
							framerate_factor = "1000000";
							exposure_factor = "1000000";
							min_gain_val = "16";
							max_gain_val = "170";
							step_gain_val = [31 00];
							default_gain = "16";
							min_hdr_ratio = [31 00];
							max_hdr_ratio = [31 00];
							min_framerate = "2000000";
							max_framerate = "120000000";
							step_framerate = [31 00];
							default_framerate = "120000000";
							min_exp_time = "13";
							max_exp_time = "683709";
							step_exp_time = [31 00];
							default_exp_time = "2495";
							embedded_metadata_height = [32 00];
						};

						ports {
							#address-cells = <0x01>;
							#size-cells = <0x00>;

							port@0 {
								reg = <0x00>;

								endpoint {
									port-index = <0x00>;
									bus-width = <0x02>;
									remote-endpoint = <0x78>;
									linux,phandle = <0xc7>;
									phandle = <0xc7>;
								};
							};
						};
					};
				};

So I can clearly see that the imx219 is there at i2c@0. Do you know if I have to modify the ports or something for it to be detected by i2c? or is that unrelated to the error during i2c read probe (-121) error?

Entire DTS attached
original.dts (320.0 KB)

The address shouldn’t be 7-0010, you may need to check your dtb if any other imx219 didn’t remove.
imx219 7-0010: imx219_board_setup: error during i2c read probe (-121)

Check this document to remove the plugin manager.
https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/camera_sensor_prog.html#wwpID0E0XF0HA

You’re right, I removed the plugin manager and now the i2c error is:
[ 1.854825] imx219 30-0010: imx219_board_setup: error during i2c read probe (-121)

I’m assuming it’s from the extra i2c lines made by the mux. It is supposed to make sense because the IMX219 is connected to tca9548 port 0 (I think), which is at reg 70.

i2cdetect -l
i2c-35  i2c             i2c-6-mux (chan_id 5)                   I2C adapter
i2c-3   i2c             7000c700.i2c                            I2C adapter
i2c-33  i2c             i2c-6-mux (chan_id 3)                   I2C adapter
i2c-1   i2c             7000c400.i2c                            I2C adapter
i2c-31  i2c             i2c-6-mux (chan_id 1)                   I2C adapter
i2c-6   i2c             Tegra I2C adapter                       I2C adapter
i2c-36  i2c             i2c-6-mux (chan_id 6)                   I2C adapter
i2c-4   i2c             7000d000.i2c                            I2C adapter
i2c-34  i2c             i2c-6-mux (chan_id 4)                   I2C adapter
i2c-2   i2c             7000c500.i2c                            I2C adapter
i2c-32  i2c             i2c-6-mux (chan_id 2)                   I2C adapter
i2c-0   i2c             7000c000.i2c                            I2C adapter
i2c-30  i2c             i2c-6-mux (chan_id 0)                   I2C adapter
i2c-37  i2c             i2c-6-mux (chan_id 7)                   I2C adapter
i2c-5   i2c             7000d100.i2c                            I2C adapter

Can the i2c probe error be caused by tegra-camera-platform or even by the ports/endpoint nodes?

Doesn’t matter with that. The error cause by the i2c communicate with sensor.

Ok, I’ve actually made progress! I can tell that the solution is within my grasp now…

I’m now getting an imx219 specific error. I’m guessing my driver is wrong, which is frustrating because I lifted it directly from the default imx219 DTSI.

Here is the error:

[    1.779157] imx219 32-0010: i2c bus regbase unavailable
[    1.784431] imx219 32-0010: Could not initialize sensor properties.
[    1.790731] imx219 32-0010: Failed to initialize imx219
[    1.795973] imx219 32-0010: tegra camera driver registration failed

Relevant nodes:

	tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		num_csi_lanes = <0x04>;
		max_lane_speed = <0x16e360>;
		min_bits_per_pixel = <0x0a>;
		vi_peak_byte_per_pixel = <0x02>;
		vi_bw_margin_pct = <0x19>;
		max_pixel_rate = <0x3a980>;
		isp_peak_byte_per_pixel = <0x05>;
		isp_bw_margin_pct = <0x19>;
		linux,phandle = <0xc9>;
		phandle = <0xc9>;

		modules {

			module0 {
				badge = "porg_front_RBPCV2";
				position = "front";
				orientation = [31 00];
				status = "okay";
				linux,phandle = <0xbf>;
				phandle = <0xbf>;

				drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 7-0010";
					proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@70/i2c@2/rbpcv2_imx219_a@10";
					status = "okay";
					linux,phandle = <0xc0>;
					phandle = <0xc0>;
				};

				drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
					status = "okay";
					linux,phandle = <0xc1>;
					phandle = <0xc1>;
				};
			};

			module1 {
				badge = "porg_rear_RBPCV2";
				position = "rear";
				orientation = [31 00];
				status = "disabled";
				linux,phandle = <0xca>;
				phandle = <0xca>;

				drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 8-0010";
					proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@70/i2c@2/rbpcv2_imx219_a@10";
					status = "disabled";
					linux,phandle = <0xcd>;
					phandle = <0xcd>;
				};

				drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
					status = "disabled";
					linux,phandle = <0xce>;
					phandle = <0xce>;
				};
			};
		};
	};

			tca9548@70 {
				compatible = "nxp,pca9548";
				status = "okay";
				reg = <0x70>;
				#address-cells = <1>;
				#size-cells = <0>;
				vcc-supply = <0x4c>;
				force_bus_start = <0x1E>;

				i2c@2 {
					status = "okay";
					reg = <2>;
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					linux,phandle = <0xd4>;
					phandle = <0xd4>;

					rbpcv2_imx219_a@10 {
						compatible = "nvidia,imx219";
						reg = <0x10>;
						devnode = "video0";
						physical_w = "3.680";
						physical_h = "2.760";
						sensor_model = "imx219";
						use_sensor_mode_id = "true";
						status = "okay";
						reset-gpios = <0x5b 0x97 0x00>;
						linux,phandle = <0xcb>;
						phandle = <0xcb>;
						ports {
							#address-cells = <0x01>;
							#size-cells = <0x00>;

							port@0 {
								reg = <0x00>;

								endpoint {
									port-index = <0x00>;
									bus-width = <0x02>;
									remote-endpoint = <0x78>;
									linux,phandle = <0x79>;
									phandle = <0x79>;
								};
							};
						};
					};
				};
			};

i2cdetect -l
i2c-35  i2c             i2c-6-mux (chan_id 5)                   I2C adapter
i2c-3   i2c             7000c700.i2c                            I2C adapter
i2c-33  i2c             i2c-6-mux (chan_id 3)                   I2C adapter
i2c-1   i2c             7000c400.i2c                            I2C adapter
i2c-31  i2c             i2c-6-mux (chan_id 1)                   I2C adapter
i2c-6   i2c             Tegra I2C adapter                       I2C adapter
i2c-36  i2c             i2c-6-mux (chan_id 6)                   I2C adapter
i2c-4   i2c             7000d000.i2c                            I2C adapter
i2c-34  i2c             i2c-6-mux (chan_id 4)                   I2C adapter
i2c-2   i2c             7000c500.i2c                            I2C adapter
i2c-32  i2c             i2c-6-mux (chan_id 2)                   I2C adapter
i2c-0   i2c             7000c000.i2c                            I2C adapter
i2c-30  i2c             i2c-6-mux (chan_id 0)                   I2C adapter
i2c-37  i2c             i2c-6-mux (chan_id 7)                   I2C adapter
i2c-5   i2c             7000d100.i2c                            I2C adapter

Do you know what could be the cause of this? Is it still something to do with the Mux or is it now my camera driver (camera is on i2c-32)?

Yes, from you dts it’s bus 32 you may check the error from source to get more information.

Also some status was disabled in the module1

Ok, I’ve figured that error out as well, but now I think the final task is correcting the nvcsi path. During boot time I’m hit with this:

[    4.901698] vi 54080000.vi: vi_probe: ++
[    4.904676] vi 54080000.vi: initialized
[    4.906658] vi 54080000.vi: subdev nvcsi--2 bound
[    4.906669] vi 54080000.vi: subdev imx219 32-0010 bound
[    4.907476] vi 54080000.vi: graph parse error: /host1x/nvcsi/channel@1.

It looks like the kernel is trying to access the imx219 on i2c bus 32, but it gets some nvcsi error. Here is my nvcsi:

		nvcsi {
			num-channels = <0x02>;
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			linux,phandle = <0xc4>;
			phandle = <0xc4>;

			channel@0 {
				reg = <0x00>;
				linux,phandle = <0xc5>;
				phandle = <0xc5>;

				ports {
					#address-cells = <0x01>;
					#size-cells = <0x00>;

					port@0 {
						reg = <0>;
						linux,phandle = <0xc6>;
						phandle = <0xc6>;

						rbpcv2_imx219_csi_in0: endpoint@0 {
							port-index = <0x00>;
							bus-width = <0x02>;
							remote-endpoint = <&rbpcv2_imx219_out0>;
						};
					};

					port@1 {
						reg = <1>;

						rbpcv2_imx219_csi_out0: endpoint@1 {
							remote-endpoint = <&rbpcv2_imx219_vi_in0>;
						};
					};
				};
			};

			channel@1 {
				reg = <0x01>;
				linux,phandle = <0xd0>;
				phandle = <0xd0>;

				ports {
					#address-cells = <0x01>;
					#size-cells = <0x00>;

					port@0 {
						reg = <0x00>;
						linux,phandle = <0xd1>;
						phandle = <0xd1>;

						endpoint@2 {
							port-index = <0x04>;
							bus-width = <0x02>;
							remote-endpoint = <0x7b>;
							linux,phandle = <0xae>;
							phandle = <0xae>;
						};
					};

					port@1 {
						reg = <0x01>;
						linux,phandle = <0xd2>;
						phandle = <0xd2>;

						endpoint@3 {
							remote-endpoint = <0x7c>;
							linux,phandle = <0x60>;
							phandle = <0x60>;
						};
					};
				};
			};
		};

Does this mean I need to rearrange my nvcsi, vi, and imx219 ports?

Did you connect another imx219 to channel@1 too? If not remove it or set the status to disable.

I only have one IMX219 connected to this board.

I’ll remove channel@1 and see what happens

Also modify the num-channels to 1

Ok cool, that got rid of the error message!

[    5.021879] tegra dvfs: vdd-core: nominal 1125mV, offset 1000000uV, step 12500uV, scaling enabled
[    5.021880] tegra dvfs: vdd-gpu: nominal 1078mV, offset 708000uV, step 10000uV, scaling enabled
[    5.078836] tegra_dvfs: vdd-gpu-vts: registered
[    5.089818] tegra_core_action core_dvfs_cdev_floor: Tegra CORE DVFS 'floor cooling device' registered
[    5.090480] tegra_core_action core_dvfs_cdev_cap: Tegra CORE DVFS 'cap cooling device' registered
[    5.091007] input: gpio-keys as /devices/gpio-keys/input/input0
[    5.141416] tegra_rtc 7000e000.rtc: setting system clock to 2021-08-03 03:45:51 UTC (1627962351)
[    5.142286] vi 54080000.vi: vi_probe: ++
[    5.261439] vi 54080000.vi: initialized
[    5.291757] vi 54080000.vi: subdev nvcsi--1 bound
[    5.291769] vi 54080000.vi: subdev imx219 32-0010 bound
[    5.294167] Disable partitions left on by BL

If I didn’t know better I’d think that the camera would be working because of this message: [ 5.291769] vi 54080000.vi: subdev imx219 32-0010 bound

But for some reason I still get

bitrate = 4000000
Encoder Profile = High
Encoder control-rate = 1
Encoder EnableTwopassCBR = 0
Opening in BLOCKING MODE
Opening in BLOCKING MODE 
** Message: 13:56:09.258: <main:4670> iterating capture loop ....
NvMMLiteOpen : Block : BlockType = 4 
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4 
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:645 No cameras available

In nvgstcapture. Any idea how to debug the issue? Is it still device tree related?

v4l2-ctl --all
Driver Info (not using libv4l2):
        Driver name   : tegra-video
        Card type     : vi-output, imx219 32-0010
        Bus info      : platform:54080000.vi:0
        Driver version: 4.9.201
        Capabilities  : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps   : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Priority: 2
Video input : 0 (Camera 0: no power)
Format Video Capture:
        Width/Height      : 3264/2464
        Pixel Format      : 'RG10'
        Field             : None
        Bytes per Line    : 6528
        Size Image        : 16084992
        Colorspace        : sRGB
        Transfer Function : Default (maps to sRGB)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Full Range)
        Flags             : 

Camera Controls

                     group_hold 0x009a2003 (bool)   : default=0 value=0 flags=execute-on-write
                    sensor_mode 0x009a2008 (int64)  : min=0 max=0 step=0 default=0 value=0 flags=slider
                           gain 0x009a2009 (int64)  : min=0 max=0 step=0 default=0 value=16 flags=slider
                       exposure 0x009a200a (int64)  : min=0 max=0 step=0 default=0 value=13 flags=slider
                     frame_rate 0x009a200b (int64)  : min=0 max=0 step=0 default=0 value=2000000 flags=slider
                    bypass_mode 0x009a2064 (intmenu): min=0 max=1 default=0 value=0
                override_enable 0x009a2065 (intmenu): min=0 max=1 default=0 value=0
                   height_align 0x009a2066 (int)    : min=1 max=16 step=1 default=1 value=1
                     size_align 0x009a2067 (intmenu): min=0 max=2 default=0 value=0
               write_isp_format 0x009a2068 (bool)   : default=0 value=0
       sensor_signal_properties 0x009a2069 (u32)    : min=0 max=0 step=0 default=0 flags=read-only, has-payload
        sensor_image_properties 0x009a206a (u32)    : min=0 max=0 step=0 default=0 flags=read-only, has-payload
      sensor_control_properties 0x009a206b (u32)    : min=0 max=0 step=0 default=0 flags=read-only, has-payload
              sensor_dv_timings 0x009a206c (u32)    : min=0 max=0 step=0 default=0 flags=read-only, has-payload
               low_latency_mode 0x009a206d (bool)   : default=0 value=0
               preferred_stride 0x009a206e (int)    : min=0 max=65535 step=1 default=0 value=0
                   sensor_modes 0x009a2082 (int)    : min=0 max=30 step=1 default=30 value=6 flags=read-only

  1. Verify if v4l2-ctl capture by command
v4l2-ctl --stream-mmap --stream-count=100 --set-ctrl bypass_mode=0 -d /dev/video0
  1. Check the devname and proc-device-tree in tegra-camera-platform{} for nvgstcapture-1.0 “No cameras available”
v4l2-ctl --stream-mmap --stream-count=100 --set-ctrl bypass_mode=0 -d /dev/video0
<<<<<<<<<<<<<<<<<<<<<<< 21.35 fps
<<<<<<<<<<<<<<<<<<<<< 21.18 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<

It looks like it worked! I’m unsure what to actually look for in the tegra-camera-platform:

tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		num_csi_lanes = <0x04>;
		max_lane_speed = <0x16e360>;
		min_bits_per_pixel = <0x0a>;
		vi_peak_byte_per_pixel = <0x02>;
		vi_bw_margin_pct = <0x19>;
		max_pixel_rate = <0x3a980>;
		isp_peak_byte_per_pixel = <0x05>;
		isp_bw_margin_pct = <0x19>;
		linux,phandle = <0xc9>;
		phandle = <0xc9>;

		modules {

			module0 {
				badge = "porg_front_RBPCV2";
				position = "front";
				orientation = [31 00];
				status = "okay";
				linux,phandle = <0xbf>;
				phandle = <0xbf>;

				drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 7-0010";
					proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@70/i2c@2/rbpcv2_imx219_a@10";
					status = "okay";
				};

				drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
					status = "okay";
				};
			};

			module1 {
				badge = "porg_rear_RBPCV2";
				position = "rear";
				orientation = [31 00];
				status = "okay";

				drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 8-0010";
					proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tca9548@70/i2c@2/rbpcv2_imx219_a@10";
					status = "okay";
				};

				drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
					status = "okay";
				};
			};
		};
	};

Should be “imx219 32-0010”

omg that worked

Thanks for bearing with me Shane, you’re a genius!

Interestingly, after flashing L4T everything seems working, but then after sudo apt update && sudo apt upgrade, the i2c seems to change

Before apt upgrade:

i2cdetect -l
i2c-35	i2c       	i2c-6-mux (chan_id 5)           	I2C adapter
i2c-3	i2c       	7000c700.i2c                    	I2C adapter
i2c-33	i2c       	i2c-6-mux (chan_id 3)           	I2C adapter
i2c-1	i2c       	7000c400.i2c                    	I2C adapter
i2c-31	i2c       	i2c-6-mux (chan_id 1)           	I2C adapter
i2c-6	i2c       	Tegra I2C adapter               	I2C adapter
i2c-36	i2c       	i2c-6-mux (chan_id 6)           	I2C adapter
i2c-4	i2c       	7000d000.i2c                    	I2C adapter
i2c-34	i2c       	i2c-6-mux (chan_id 4)           	I2C adapter
i2c-2	i2c       	7000c500.i2c                    	I2C adapter
i2c-32	i2c       	i2c-6-mux (chan_id 2)           	I2C adapter
i2c-0	i2c       	7000c000.i2c                    	I2C adapter
i2c-30	i2c       	i2c-6-mux (chan_id 0)           	I2C adapter
i2c-37	i2c       	i2c-6-mux (chan_id 7)           	I2C adapter
i2c-5	i2c       	7000d100.i2c                    	I2C adapter

And nvgstcapture seems to work (although no display for some reason?). Also /dev/video0 exists.

After apt upgrade:

[    1.816863] imx219 7-0010: imx219_board_setup: error during i2c read probe (-121)
[    1.816930] imx219 7-0010: board setup failed
[    1.840750] imx219 8-0010: imx219_board_setup: error during i2c read probe (-121)
[    1.840807] imx219 8-0010: board setup failed

i2cdetect -l
i2c-3	i2c       	7000c700.i2c                    	I2C adapter
i2c-1	i2c       	7000c400.i2c                    	I2C adapter
i2c-8	i2c       	i2c-6-mux (chan_id 1)           	I2C adapter
i2c-6	i2c       	Tegra I2C adapter               	I2C adapter
i2c-4	i2c       	7000d000.i2c                    	I2C adapter
i2c-2	i2c       	7000c500.i2c                    	I2C adapter
i2c-0	i2c       	7000c000.i2c                    	I2C adapter
i2c-7	i2c       	i2c-6-mux (chan_id 0)           	I2C adapter
i2c-5	i2c       	7000d100.i2c                    	I2C adapter

Is it because apt updade changes the DTB?