Hi
Were you able to run this display eventually? Struggling to find the proper configuration for ICN6211 as well.
Were you able to run this display eventually? Struggling to find the proper configuration for ICN6211 as well.
Followed your advice and connected I2C to the bridge - still no image. The I2C signal looks as expected.
Unfortunately I dont think I can share the datasheet, but yes it is a simple 24-bit RGB display.
This is the current overlay. Tried a bunch of different display timings, both from my datasheet and from an online calculator.
Code: Select all
// icn6211-overlay.dts
// abugsworstnightmare
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2712";
fragment@0 {
target = <&rp1_gpio>;
__overlay__ {
pwm_pins: pwm_pins {
pins = "gpio12";
function = "pwm0";
};
};
};
fragment@1 {
target = <&rp1_pwm0>;
frag1: __overlay__ {
pinctrl-names = "default";
pinctrl-0 = <&pwm_pins>;
assigned-clock-rates = <50000000>;
status = "okay";
};
};
/* === Fragment 2: Configure the ICN6211 Bridge === */
fragment@2 {
target = <&i2c_csi_dsi>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
bridge: bridge@2c {
compatible = "chipone,icn6211";
reg = <0x2c>;
enable-gpios = <&gpio 6 0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
bridge_in_dsi: endpoint {
remote-endpoint = <&dsi_out_port>;
data-lanes = <1 2>;
};
};
port@1 {
reg = <1>;
bridge_out_panel: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
};
};
/* === Fragment 3: Configure the Display Panel === */
fragment@3 {
target-path = "/";
__overlay__ {
backlight_dpi: backlight {
compatible = "pwm-backlight";
pwms = <&rp1_pwm0 0 1000000 0>;
brightness-levels = <0 1000>;
num-interpolated-steps = <1000>;
default-brightness-level = <800>;
};
panel: panel {
compatible = "panel-dpi";
backlight = <&backlight_dpi>;
/* for bus-format refer to
* /home/pi/linux/include/uapi/linux/media-bus-format.h
* used format is MEDIA_BUS_FMT_BGR666_1X24_CPADHI
*/
bus-format = <0x100e>;
/* Physical dimensions of active area */
width-mm = <120>;
height-mm = <68>;
/* display timing */
panel-timing {
clock-frequency = <25000000>;
hactive = <800>;
hfront-porch = <48>;
hsync-len = <32>;
hback-porch = <80>;
vactive = <480>;
vfront-porch = <3>;
vsync-len = <7>;
vback-porch = <6>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <1>;
};
port {
panel_in: endpoint {
remote-endpoint = <&bridge_out_panel>;
};
};
};
};
};
fragment@4 {
target = <&dsi1>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port {
dsi_out_port: endpoint {
remote-endpoint = <&bridge_in_dsi>;
data-lanes = <1 2>;
};
};
};
};
fragment@5 {
target = <&i2c0if>;
__overlay__ {
status = "okay";
};
};
fragment@6 {
target = <&i2c0mux>;
__overlay__ {
status = "okay";
};
};
};
I am currently using DS1 as you can see.
I have an official 7-inch display that I got to work on a RP IO board using DSI0, but not on DSI1. I connected the jumpers as the instructions on the board says. However - it seems I have the same issue as reported in this thread. I tried with your suggestions but it still did not boot.
Do DSI0 and DSI1 differ somehow?
Unfortunately I have no easy way of testing my bridge and panel with the DSI0 port, I am stuck with DSI1 unless I redo the design.
Statistics: Posted by valera.valera — Sun Aug 10, 2025 3:19 pm