2025-10-10 3:13 PM
I'm trying to get a Raspberry Pi DSI display working with a custom board using a STM32MP157F.
From the wiki I have the following.
&dsi {
status = "okay";
ports {
port@0 {
reg = <0>;
dsi_in: endpoint {
remote-endpoint = <<dc_ep0_out>;
};
};
port@1 {
reg = <1>;
dsi_out: endpoint {
remote-endpoint = <&bridge_in>;
};
};
};
bridge@0 {
compatible = "toshiba,tc358762";
reg = <0>;
vddc-supply = <®_rpi>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
bridge_in: endpoint {
remote-endpoint = <&dsi_out>;
};
};
port@1 {
reg = <1>;
bridge_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
};
/ {
panel-rgb {
/* Unknown; use a reasonably similar one */
compatible = "powertip,ph800480t013-idf02";
power-supply = <®_rpi>;
status = "okay";
port {
panel_in: endpoint {
remote-endpoint = <&bridge_out>;
};
};
};
};
&i2c6 {
reg_rpi: regulator@45 {
compatible = "raspberrypi,7inch-touchscreen-panel-regulator";
reg = <0x45>;
vin-supply = <&v3v3>;
status = "okay";
};
};
<dc {
default-on;
status = "okay";
port {
ltdc_ep0_out: endpoint {
remote-endpoint = <&dsi_in>;
};
};
};
In another file I have
i2c6_pins_b: i2c6-1 {
pins {
pinmux = <STM32_PINMUX('Z', 2, AF2)>, /* I2C6_SCL */
<STM32_PINMUX('Z', 3, AF2)>; /* I2C6_SDA */
bias-disable;
drive-open-drain;
slew-rate = <0>;
};
};
i2c6_sleep_pins_b: i2c6-sleep-1 {
pins {
pinmux = <STM32_PINMUX('Z', 2, ANALOG)>, /* I2C6_SCL */
<STM32_PINMUX('Z', 3, ANALOG)>; /* I2C6_SDA */
};
};
and
&i2c6 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c6_pins_b>;
pinctrl-1 = <&i2c6_sleep_pins_b>;
i2c-scl-rising-time-ns = <100>;
i2c-scl-falling-time-ns = <7>;
status = "okay";
};
I'm not seeing any action on the I2C lines so I'm not surprised the display isn't working.
The rest of my tree is basically from the stm32mp157f-dk2 which has includes that define the clock and power for i2c6 (double checked that).
Is there something more I need to do to enable it?
After boot I can see the following.
# dmesg | grep -i -e "drm" -e "ltdc" -e "dsi" -e "display" -e "panel"
[ 0.127696] /soc/display-controller@5a001000: Fixed dependency cycle(s) with /soc/dsi@5a000000
[ 0.128529] /soc/dsi@5a000000: Fixed dependency cycle(s) with /soc/dsi@5a000000/bridge@0
[ 0.128581] /soc/dsi@5a000000: Fixed dependency cycle(s) with /soc/display-controller@5a001000
[ 0.128657] /soc/dsi@5a000000/bridge@0: Fixed dependency cycle(s) with /soc/dsi@5a000000
[ 0.139112] /soc/display-controller@5a001000: Fixed dependency cycle(s) with /soc/dsi@5a000000
[ 0.152623] /soc/display-controller@5a001000: Fixed dependency cycle(s) with /soc/dsi@5a000000
[ 0.152854] /soc/dsi@5a000000: Fixed dependency cycle(s) with /soc/dsi@5a000000/bridge@0
[ 0.152903] /soc/dsi@5a000000: Fixed dependency cycle(s) with /soc/display-controller@5a001000
[ 0.153381] /soc/dsi@5a000000/bridge@0: Fixed dependency cycle(s) with /soc/dsi@5a000000
[ 0.156238] /soc/dsi@5a000000/bridge@0: Fixed dependency cycle(s) with /panel-rgb
[ 0.156703] /panel-rgb: Fixed dependency cycle(s) with /soc/dsi@5a000000/bridge@0
[ 4.206731] /panel-rgb: Fixed dependency cycle(s) with /soc/dsi@5a000000/bridge@0
[ 4.220535] /soc/dsi@5a000000: Fixed dependency cycle(s) with /soc/dsi@5a000000/bridge@0
[ 4.228565] /soc/dsi@5a000000/bridge@0: Fixed dependency cycle(s) with /panel-rgb
[ 4.236008] /soc/dsi@5a000000/bridge@0: Fixed dependency cycle(s) with /soc/dsi@5a000000
[ 10.012903] systemd[1]: Starting Load Kernel Module drm...
[ 14.557772] platform 5a001000.display-controller: deferred probe pending
[ 14.565563] platform panel-rgb: deferred probe pending
[ 15.672916] [drm] Initialized etnaviv 1.4.0 20151214 for etnaviv on minor 0
I don't know why the probe is just pending?
I don't see a power supply named "reg_rpi" like I'd expect in /sys/class/regulator