Is this the right place for my bug report?
Yes, dtoverlay was working, but stopped on fresh installation of Raspbery Pi OS 64-bit.
Describe the bug
It was working OK last week, stopped this week after reinstallation of the Raspberry Pi OS. The cam0 option passed now doesn't seem to amend the target = <&i2c_csi_dsi1>; to target = <&i2c_csi_dsi0>; properly. This is on my own overlay.
To reproduce
Following DTS:
// SPDX-License-Identifier: GPL-2.0-only
// Definitions for OVA one module on VC I2C bus
/dts-v1/;
/plugin/;
#include <gpio.h>
/{
compatible = "brcm,bcm2835";
fragment@0 {
target = <&i2c0if>;
__overlay__ {
status = "okay";
};
};
fragment@2 {
target = <&i2c0mux>;
__overlay__ {
status = "okay";
};
};
i2c_frag: fragment@100 {
target = <&i2c_csi_dsi1>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
cam_node: ovaone@54 {
compatible = "opteran,ovaone";
reg = <0x54>;
status = "disabled";
VIN-supply = <&cam_dummy_reg>; /* 5.1v, not fed from RPi 5 */
orientation = <2>;
port {
cam_endpoint: endpoint {
clock-lanes = <0>;
data-lanes = <1 2 3 4>;
clock-continuous;
link-frequencies =
/bits/ 64 <100000000>;
};
};
};
};
};
csi_frag: fragment@101 {
target = <&csi1>;
csi: __overlay__ {
status = "okay";
brcm,media-controller;
port {
csi_ep: endpoint {
remote-endpoint = <&cam_endpoint>;
clock-lanes = <0>;
data-lanes = <1 2 3 4>;
clock-continuous;
};
};
};
};
__overrides__ {
rotation = <&cam_node>,"rotation:0";
orientation = <&cam_node>,"orientation:0";
media-controller = <&csi>,"brcm,media-controller?";
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
<&csi_frag>, "target:0=",<&csi0>,
<&cam_node>, "VIN-supply:0=",<&cam0_reg>;
};
};
&cam_node {
status = "okay";
};
&cam_endpoint {
remote-endpoint = <&csi_ep>;
};
Still loads my driver on I²C #4 (i2c_csi_dsi1) instead of I²C #6 (i2c_csi_dsi0) when option cam0 is passed to the dtoverlay. If I change i2c_frag@100 to target = <&i2c_csi_dsi0>; straight away, then right I²C is used.
Expected behaviour
Bring back previous behaviour and change the target properly.
Actual behaviour
While the messages show 3 overrides applied, driver is still probed on I²C #4. I tried to analyse the DTB produced, but I'm not that well versed to understand the hexadecimals put if dtc -I dtb ... -O dts is used on these byproducts of dtoverlay command.
System
raspinfo content
Logs
Included in above.
Additional context
The worst part is I got hit by this by surprise and started to think my RPi is broken.
Is this the right place for my bug report?
Yes,
dtoverlaywas working, but stopped on fresh installation of Raspbery Pi OS 64-bit.Describe the bug
It was working OK last week, stopped this week after reinstallation of the Raspberry Pi OS. The
cam0option passed now doesn't seem to amend thetarget = <&i2c_csi_dsi1>;totarget = <&i2c_csi_dsi0>;properly. This is on my own overlay.To reproduce
Following DTS:
Still loads my driver on I²C #4 (
i2c_csi_dsi1) instead of I²C #6 (i2c_csi_dsi0) when optioncam0is passed to thedtoverlay. If I changei2c_frag@100totarget = <&i2c_csi_dsi0>;straight away, then right I²C is used.Expected behaviour
Bring back previous behaviour and change the target properly.
Actual behaviour
While the messages show 3 overrides applied, driver is still probed on I²C #4. I tried to analyse the DTB produced, but I'm not that well versed to understand the hexadecimals put if
dtc -I dtb ... -O dtsis used on these byproducts ofdtoverlaycommand.System
raspinfocontentLogs
Included in above.
Additional context
The worst part is I got hit by this by surprise and started to think my RPi is broken.