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

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

$
0
0
you will have to enable the generic LVDS panel driver (in display panels) and TI SN65DSI83 driver (display interface bridges; for tons of details refer to viewtopic.php?t=305690) in your kernel.
An example overlay is below, backlight PWM is on GPIO19 (PWM control).
Adjust the timing and GPIO's in use and your panel should fire up.

Code:

/* * vc4-kms-dsi-ti-sn65dsi83-somepanel-overlay.dts *//dts-v1/;/plugin/;#include <dt-bindings/gpio/gpio.h>#include <dt-bindings/pinctrl/bcm2835.h>/ {compatible = "brcm,bcm2835";/* PWM0 function */fragment@0 {target = <&gpio>;__overlay__ {pwm_pins: pwm_pins {brcm,pins = <19>;brcm,function = <BCM2835_FSEL_ALT5>;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 19 */backlight_lvds: backlight {compatible = "pwm-backlight";pwms = <&pwm 1 5000000 0>; /* Period of 5000000ns means 200Hz */brightness-levels = <0  1000>;num-interpolated-steps = <1000>;default-brightness-level = <800>;enable-gpios = <&gpio 27 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 = <71100000>;hactive = <1280>;hfront-porch = <160>;hsync-len = <48>;hback-porch = <48>;vactive = <800>;vfront-porch = <23>;vsync-len = <6>;vback-porch = <8>;};port {panel_in_lvds: endpoint {remote-endpoint = <&bridge_out>;};};};};};fragment@3 {target = <&i2c_csi_dsi>;__overlay__ {#gpio-cells = <2>;#address-cells = <1>;#size-cells = <0>;status = "okay";bridge@2c {compatible = "ti,sn65dsi83";reg = <0x2c>;enable-gpios = <&gpio 26 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>;};};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>;};};};};fragment@5 {target = <&i2c0if>;__overlay__ {status = "okay";};};fragment@6 {target = <&i2c0mux>;__overlay__ {status = "okay";};};};
as your overlay does not include any details on touch I will ignore that portion. Example DT uses i2c_csi_dsi for I2C interface (I2C-10 on CM4).

Statistics: Posted by aBUGSworstnightmare — Fri Mar 01, 2024 7:49 am



Viewing all articles
Browse latest Browse all 8035

Trending Articles