Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 5139

Interfacing (DSI, CSI, I2C, etc.) • Re: CM4 DSI1 + SN65DSI83 Bridge based display (6.1.x kernel)

$
0
0
I get some parts from i2c0-overlay

Code:

/* * vc4-kms-dsi-ti-sn65dsi83-somepanel-overlay.dts *//dts-v1/;/plugin/;/ {    compatible = "brcm,bcm2835";    /* PWM0 function */    fragment@0 {        target = <&gpio>;        __overlay__ {            pwm_pins: pwm_pins {                brcm,pins = <12>;                brcm,function = <4>;                brcm,pull = <0>;            };        };    };    fragment@1 {        target = <&pwm>;        frag1: __overlay__ {            pinctrl-names = "default";            pinctrl-0 = <&pwm_pins>;            assigned-clock-rates = <100000000>;            status = "okay";        };    };    fragment@2 {        target-path = "/";        __overlay__ {            //#gpio-cells = <2>;            /* Panel backlight through PWM0 on GPIO 12 */            backlight_lvds: backlight {                compatible = "pwm-backlight";                pwms = <&pwm 0 5000000 0>; /* Period of 5000000ns means 200Hz */                brightness-levels = <0  1000>;                num-interpolated-steps = <1000>;                default-brightness-level = <800>;                /*enable-gpios = <&gpio 22 0>;  Backlight enable... */            };            panel: panel {                compatible = "panel-lvds";                backlight = <&backlight_lvds>;                /* Physical dimensions of active area */                width-mm = <217>;                height-mm = <136>;                data-mapping = "vesa-24";            panel-timing {                clock-frequency = <66300000 69300000 78900000>;                de-active = <1>;                hactive = <1280 1280 1280>;                hback-porch = <64 64 64>;                hfront-porch = <16 16 16>;                hsync-active = <0>;                hsync-len = <24 24 24>;                pixelclk-active = <1>;                vactive = <800 800 800>;                vback-porch = <24 24 24>;                vfront-porch = <8 8 8>;                vsync-active = <0>;                vsync-len = <8 8 8>;            };                port {                    panel_in_lvds: endpoint {                        remote-endpoint = <&bridge_out>;                    };                };            };        };    };    fragment@3 {        target = <&i2c0if>;        __overlay__ {            #gpio-cells = <2>;            #address-cells = <1>;            #size-cells = <0>;            pinctrl-names = "default";            pinctrl-0 = <&i2c0_pins>;            status = "okay";            bridge@2c {                compatible = "ti,sn65dsi83";                reg = <0x2c>;                enable-gpios = <&gpio 22 0>;                ports {                    #address-cells = <1>;                    #size-cells = <0>;                    port@0 {                        reg = <0>;                        bridge_in: endpoint {                            remote-endpoint = <&dsi_out_port>;                            data-lanes = <0 1 2 3>;                        };                    };                    port@2 {                        reg = <2>;                        bridge_out: endpoint {                            remote-endpoint = <&panel_in_lvds>;                        };                    };                };            };        };    };    fragment@4 {        target = <&dsi1>;        __overlay__ {            #address-cells = <1>;            #size-cells = <0>;            status = "okay";            port {                dsi_out_port: endpoint {                    remote-endpoint = <&bridge_in>;                    data-lanes = <0 1 2 3>;                };            };        };    };    fragment@5 {        target = <&i2c0_pins>;        pins1: __overlay__ {            brcm,pins = <0 1>;            brcm,function = <4>; /* alt0 */        };    };    fragment@6 {        target = <&i2c0>;        __dormant__ {            compatible = "brcm,bcm2708-i2c";        };    };    fragment@7 {        target = <&i2c0mux>;        __overlay__ {            status = "ok";        };    };    fragment@8 {        target-path = "/aliases";        __overlay__ {            i2c0 = "/soc/i2c@7e205000";        };    };    fragment@9 {        target-path = "/__symbols__";        __overlay__ {            i2c0 = "/soc/i2c@7e205000";        };    };};

Code:

raspi-gpio getBANK0 (GPIO 0 to 27):GPIO 0: level=1 alt=0 func=SDA0 pull=UPGPIO 1: level=1 alt=0 func=SCL0 pull=UPGPIO 2: level=1 alt=0 func=SDA1 pull=UPGPIO 3: level=1 alt=0 func=SCL1 pull=UPGPIO 4: level=0 alt=4 func=TXD3 pull=NONEGPIO 5: level=1 alt=4 func=RXD3 pull=UPGPIO 6: level=0 func=OUTPUT pull=UPGPIO 7: level=1 func=INPUT pull=UPGPIO 8: level=1 func=OUTPUT pull=UPGPIO 9: level=0 alt=0 func=SPI0_MISO pull=DOWNGPIO 10: level=0 alt=0 func=SPI0_MOSI pull=DOWNGPIO 11: level=0 alt=0 func=SPI0_SCLK pull=DOWNGPIO 12: level=0 alt=0 func=PWM0_0 pull=NONEGPIO 13: level=0 alt=3 func=SPI5_MISO pull=DOWNGPIO 14: level=1 alt=3 func=SPI5_MOSI pull=NONEGPIO 15: level=0 alt=3 func=SPI5_SCLK pull=UPGPIO 16: level=0 func=INPUT pull=DOWNGPIO 17: level=0 func=INPUT pull=DOWNGPIO 18: level=0 alt=0 func=PCM_CLK pull=DOWNGPIO 19: level=0 alt=0 func=PCM_FS pull=DOWNGPIO 20: level=1 func=INPUT pull=DOWNGPIO 21: level=0 alt=0 func=PCM_DOUT pull=DOWNGPIO 22: level=0 func=OUTPUT pull=DOWNGPIO 23: level=1 func=INPUT pull=DOWNGPIO 24: level=1 func=INPUT pull=DOWNGPIO 25: level=0 func=INPUT pull=DOWNGPIO 26: level=1 func=OUTPUT pull=DOWNGPIO 27: level=1 func=OUTPUT pull=DOWNBANK1 (GPIO 28 to 45):GPIO 28: level=1 alt=5 func=RGMII_MDIO pull=UPGPIO 29: level=0 alt=5 func=RGMII_MDC pull=DOWNGPIO 30: level=1 func=INPUT pull=UPGPIO 31: level=1 func=INPUT pull=NONEGPIO 32: level=1 func=INPUT pull=DOWNGPIO 33: level=1 func=INPUT pull=DOWNGPIO 34: level=1 alt=3 func=SD1_CLK pull=NONEGPIO 35: level=1 alt=3 func=SD1_CMD pull=UPGPIO 36: level=1 alt=3 func=SD1_DAT0 pull=UPGPIO 37: level=1 alt=3 func=SD1_DAT1 pull=UPGPIO 38: level=1 alt=3 func=SD1_DAT2 pull=UPGPIO 39: level=1 alt=3 func=SD1_DAT3 pull=UPGPIO 40: level=1 func=INPUT pull=DOWNGPIO 41: level=1 func=INPUT pull=DOWNGPIO 42: level=1 func=OUTPUT pull=DOWNGPIO 43: level=1 func=INPUT pull=DOWNGPIO 44: level=1 func=INPUT pull=NONEGPIO 45: level=1 func=INPUT pull=NONEBANK2 (GPIO 46 to 53):GPIO 46: level=0 func=INPUT pull=UPGPIO 47: level=0 func=INPUT pull=UPGPIO 48: level=0 alt=0 func=SD0_CLK pull=DOWNGPIO 49: level=0 alt=0 func=SD0_CMD pull=DOWNGPIO 50: level=0 alt=0 func=SD0_DAT0 pull=DOWNGPIO 51: level=0 alt=0 func=SD0_DAT1 pull=DOWNGPIO 52: level=0 alt=0 func=SD0_DAT2 pull=DOWNGPIO 53: level=0 alt=0 func=SD0_DAT3 pull=DOWN
with this I get

Code:

[    0.279642] bcm2708_fb: probe of soc:fb failed with error -2[    1.517921] sn65dsi83 0-002c: supply vcc not found, using dummy regulator
and black screen without backlight.
Is it possible create VCC supply in device tree (with GPIO22 enable pin) and delete line enable-gpios = <&gpio 22 0>; for pwm and bridge? (I can't control separately enable pin for PWM and for display, there is only common pin for switch display power)

Code:

i2cdetect -y 0     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f00:                         -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --  
What are you willing to pay fo consulting?

Code:

                /*enable-gpios = <&gpio 22 0>;  Backlight enable... */
GPIO22 is not used. A Backlight enable is optional anyhow, and only needed if you panel and/or LED driver circuit has a dedicated input. Hence: ignored!
Something else seems to be using that GPIO

Code:

GPIO 22: level=0 func=OUTPUT pull=DOWN
Start with the minimal set of overlays while debugging one ;)

Code:

[    1.517921] sn65dsi83 0-002c: supply vcc not found, using dummy regulator
You're free to add a regulator - if you have one - or simply ignore that message (look at your logs; there are some of them as well).

Code:

        target = <&i2c0if>;
sorry! But I'm not spoon feeding you! You have the answer in my post, only that line of the overlay needs to be changed ... but not in the way you did it! Re-read my replay, look at some overlay that deals with your I2C interface and you should know how to change it.

Code:

[    0.279642] bcm2708_fb: probe of soc:fb failed with error -2
and

Code:

    fragment@5 {        target = <&i2c0_pins>;        pins1: __overlay__ {            brcm,pins = <0 1>;            brcm,function = <4>; /* alt0 */        };    };    fragment@6 {        target = <&i2c0>;        __dormant__ {            compatible = "brcm,bcm2708-i2c";        };    };    fragment@7 {        target = <&i2c0mux>;        __overlay__ {            status = "ok";        };    };    fragment@8 {        target-path = "/aliases";        __overlay__ {            i2c0 = "/soc/i2c@7e205000";        };    };    fragment@9 {        target-path = "/__symbols__";        __overlay__ {            i2c0 = "/soc/i2c@7e205000";        };    };};
That's not longer my overlay --> your piece of cake! If you do stupid things don't expect them to work!

Statistics: Posted by aBUGSworstnightmare — Fri Mar 01, 2024 1:12 pm



Viewing all articles
Browse latest Browse all 5139

Trending Articles