Question
Use Raspberry Pi 5'' Touch Display with stm32mp157a
Hi,
I am also using the DFR0550 screen: https://wiki.dfrobot.com/5%27%27TFT-Display_with_Touchscreen_SKU_DFR0550
Unfortunately, I am not able to make it work for now, here is the status:
The best resources I have found is the following: https://trac.gateworks.com/wiki/venice/multimedia
It provides the following device tree example: https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx-0x-rpidsi.dtso
I have then made the following changes in stm32mp157a device tree:
/ {
chosen {
stdout-path = "serial0:115200n8";
};
aliases {
ethernet0 = ðernet0;
};
panel {
compatible = "powertip,ph800480t013-idf02";
power-supply = <&attiny>;
backlight = <&attiny>;
port {
panel_in: endpoint {
remote-endpoint = <&bridge_out>;
};
};
};
};
&i2c5 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c5_pins_b>;
pinctrl-1 = <&i2c5_sleep_pins_b>;
i2c-scl-rising-time-ns = <185>;
i2c-scl-falling-time-ns = <20>;
clock-frequency = <400000>;
status = "okay";
/* spare dmas for other usage */
/delete-property/dmas;
/delete-property/dma-names;
#address-cells = <1>;
#size-cells = <0>;
attiny: regulator@45 {
compatible = "raspberrypi,7inch-touchscreen-panel-regulator";
reg = <0x45>;
};
};
&dsi {
status = "okay";
bridge@0 {
compatible ="toshiba,tc358762";
reg = <0>;
vddc-supply = <&attiny>;
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>;
};
};
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
reg = <1>;
dsi_out: endpoint {
remote-endpoint = <&bridge_in>;
};
};
};
};
<dc {
status = "okay";
};
&gpu {
status = "okay";
};
I have also enabled the following kernel config flags:
< CONFIG_PARPORT=y
< CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=y
< CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=y
< CONFIG_MEDIA_SUPPORT=y
< CONFIG_DRM_DEBUG_MM=y
< CONFIG_DRM_STM_DSI=m
< CONFIG_DRM_PANEL_DSI_CM=m
< CONFIG_DRM_PANEL_SIMPLE=m
< CONFIG_DRM_PANEL_EDP=m
< CONFIG_DRM_PANEL_ILITEK_IL9322=m
< CONFIG_DRM_PANEL_ILITEK_ILI9341=m
< CONFIG_DRM_PANEL_ILITEK_ILI9881C=m
< CONFIG_DRM_PANEL_SAMSUNG_LD9040=m
< CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO=m
> CONFIG_DRM_STM_DSI=y
> CONFIG_DRM_PANEL_SIMPLE=y
< CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m
< CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m
< CONFIG_DRM_PANEL_RAYDIUM_RM67191=m
< CONFIG_DRM_PANEL_RAYDIUM_RM68200=m
< CONFIG_DRM_PANEL_SAMSUNG_S6D16D0=m
< CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m
< CONFIG_DRM_CHIPONE_ICN6211=m
< CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW=m
< CONFIG_DRM_NWL_MIPI_DSI=m
< CONFIG_DRM_SIMPLE_BRIDGE=m
< CONFIG_DRM_TOSHIBA_TC358762=m
< CONFIG_DRM_TOSHIBA_TC358767=m
< CONFIG_DRM_TOSHIBA_TC358768=m
< CONFIG_DRM_ANALOGIX_ANX6345=m
< CONFIG_DRM_ANALOGIX_ANX78XX=m
< CONFIG_DRM_ANALOGIX_ANX7625=m
> CONFIG_DRM_SII902X=y
< CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
< CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y
< CONFIG_PANEL=y
< CONFIG_CLKSRC_STM32_LP=y
< CONFIG_DYNAMIC_DEBUG=y
< CONFIG_FTRACE=y
< CONFIG_ENABLE_DEFAULT_TRACERS=y
< DRM_DW_MIPI_DSI=y
< DRM_MIPI_DSI=y
You will find enclosed the dmesg boot trace.
I can see both the touchscreen and the regulator on i2c bus:
# i2cdetect -y 1 ;
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- --
40: -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- --
40: -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
The regulator, at address 0x45 seems to be correctly handled by rpi_touchscreen_attiny driver.
I have probed the i2c bus between regulator and MPI DSI bridge, both communicate with each other.
Still, the mipi dsi fails at the probing step.
Do you have any idea? Thanks a lot!
Yorick
