Hi everybody!
I have been working for days to ensure that the MIPI-DSI output works with the Raspberry PI compatible display panel (Product OSOYOO which has a Toshiba TC358762 DSI/DP bridge chip and a I2C backlight controller as Focal FT5406). The following overlay works perfectly with the Radxa kernel 4.4.153 and unfortunately not with the Armbian kernel: Linux rockpi-4c 5.8.13-rockchip64.
So far so good. Now if you look at the DTS source files of the two kernels, they have a similar structure but are very different in content. I wonder why you now get the idea to reinvent the wheel. The Radxa kernel contains everything that is needed. What is particularly annoying is the great idea of calling the names differently in DTS. For example in the Armbian mainline 5.8.13 the DSI resource is called 'mipi_dsi' and in Radxa it is simply called 'dsi'. Such a huge dilemma for a 'no kernel DTS guru'. The challenge now is to pick out every single resource for the DSI and the GPU with their dependencies and to mentally get the 'link' from the Radxa and Armbian versions. Unfortunately, that's beyond my capabilities:) OoO (: .....
The next part is the touchscreen driver 'edt, edt-ft5406'. In the mainline 'rockpi-4c 5.8.13-rockchip64' this requires an IRQ. A fallback to
polling mode was not considered! It's easy to do as follows (also @ https://github.com/britus/osoyoo-dsi-display-panel):
___________________________________________.
- The boot loader reports:
Applying kernel provided DT overlay rockchip-osoyoo-panel.dtbo
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
The original MIPI-DSI overlay, that work on 4.4.x Radxa Kernel
/dts-v1/;
/plugin/;
/ {
model = "ROCK PI 4C";
compatible = "rockchip,rockpi","rockchip,rk3399";
/* ------------------------------------------------------------------------------
* OSOYOO display using the Focal FT5406 capacitive touch panel controller.
* The backlight controller is at I2C address 0x45
* The capacitive touch panel controller is at I2C address 0x38
* Both controller connted to i2c1 port
* https://datasheetspdf.com/datasheet/FT5406.html
* Note:
* The driver 'rockpi_ft5406' must be changed like my fix for the Tinkerboard-S
* in the Kernel 4.4.136
* ------------------------------------------------------------------------------ */
fragment@0 {
target = <&i2c1>;
__overlay__ {
rockpi_mcu: rockpi_mcu@45 {
compatible ="rockpi_mcu";
status = "okay";
};
rockpi_ft5406: rockpi_ft5406@38 {
compatible ="rockpi_ft5406";
status = "okay";
};
};
};
/* ------------------------------------------------------------------------------
* MIPI DSI entry must be enabled for dual channel ?
* ------------------------------------------------------------------------------ */
fragment@1 {
target = <&dsi>;
__overlay__ {
status = "ok";
};
};
/* ------------------------------------------------------------------------------
* OSOYOO display using Toshiba TC358762 display
* interface bridge chip:
* https://www.alldatasheetde.com/datasheet-pdf/pdf/470149/TOSHIBA/TC358762.html
* ------------------------------------------------------------------------------ */
fragment@2 {
target = <&dsi1>;
__overlay__ {
rockchip,dual-channel = <&dsi>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
panel: panel@0 {
compatible ="rockpi,tc358762";
reg = <0>;
status = "okay";
};
};
};
/* ------------------------------------------------------------------------------
* Routing
* -> no routing defined, therefore disabled
* ------------------------------------------------------------------------------ */
fragment@3 {
target = <&route_dsi>;
__overlay__ {
status = "disabled";
};
};
/* ------------------------------------------------------------------------------
* Routing
* -> connected to dsi1_in_vopl
* ------------------------------------------------------------------------------ */
fragment@4 {
target = <&route_dsi1>;
__overlay__ {
status = "okay";
};
};
/* ------------------------------------------------------------------------------
* VOPB entry
* -> NOT connected
* ------------------------------------------------------------------------------ */
fragment@5 {
target = <&dsi1_in_vopb>;
__overlay__ {
status = "disabled";
};
};
/* ------------------------------------------------------------------------------
* VOPL entry
* -> connected to route_dsi1
* ------------------------------------------------------------------------------ */
fragment@6 {
target = <&dsi1_in_vopl>;
__overlay__ {
status = "okay";
};
};
};