OK,I change to 6.6.21 kernel, and use this Image <2023-12-05-raspios-bookworm-arm64.img>。
Make my LCD panel dts .here is the config file:
after boot the CM4 ,the panel is black. the backlight pwm and enable also output. The enable pin GPIO0 for SN65DSI84 is also low level.
here is the gpios
BANK0 (GPIO 0 to 27):
GPIO 0: level=0 func=OUTPUT pull=UP
GPIO 1: level=0 func=INPUT pull=UP
GPIO 2: level=1 alt=0 func=SDA1 pull=UP
GPIO 3: level=1 alt=0 func=SCL1 pull=UP
GPIO 4: level=0 func=INPUT pull=UP
GPIO 5: level=1 func=INPUT pull=UP
GPIO 6: level=1 func=INPUT pull=UP
GPIO 7: level=1 func=INPUT pull=UP
GPIO 8: level=1 func=INPUT pull=UP
GPIO 9: level=0 func=INPUT pull=DOWN
GPIO 10: level=0 func=INPUT pull=DOWN
GPIO 11: level=0 func=INPUT pull=DOWN
GPIO 12: level=0 func=INPUT pull=DOWN
GPIO 13: level=1 func=INPUT pull=DOWN
GPIO 14: level=1 func=INPUT pull=NONE
GPIO 15: level=1 func=INPUT pull=UP
GPIO 16: level=0 func=INPUT pull=DOWN
GPIO 17: level=1 func=INPUT pull=DOWN
GPIO 18: level=1 func=INPUT pull=DOWN
GPIO 19: level=0 alt=5 func=PWM0_1 pull=DOWN
GPIO 20: level=0 func=INPUT pull=DOWN
GPIO 21: level=0 func=OUTPUT pull=DOWN
GPIO 22: level=1 func=INPUT pull=DOWN
GPIO 23: level=1 func=INPUT pull=DOWN
GPIO 24: level=1 func=INPUT pull=DOWN
GPIO 25: level=0 func=INPUT pull=DOWN
GPIO 26: level=0 func=INPUT pull=DOWN
GPIO 27: level=1 func=INPUT pull=DOWN
BANK1 (GPIO 28 to 45):
GPIO 28: level=1 alt=5 func=RGMII_MDIO pull=UP
GPIO 29: level=0 alt=5 func=RGMII_MDC pull=DOWN
GPIO 30: level=1 alt=3 func=CTS0 pull=UP
GPIO 31: level=0 alt=3 func=RTS0 pull=NONE
GPIO 32: level=1 alt=3 func=TXD0 pull=NONE
GPIO 33: level=1 alt=3 func=RXD0 pull=UP
GPIO 34: level=0 alt=3 func=SD1_CLK pull=NONE
GPIO 35: level=1 alt=3 func=SD1_CMD pull=UP
GPIO 36: level=1 alt=3 func=SD1_DAT0 pull=UP
GPIO 37: level=1 alt=3 func=SD1_DAT1 pull=UP
GPIO 38: level=1 alt=3 func=SD1_DAT2 pull=UP
GPIO 39: level=1 alt=3 func=SD1_DAT3 pull=UP
GPIO 40: level=1 func=INPUT pull=DOWN
GPIO 41: level=0 func=INPUT pull=DOWN
GPIO 42: level=0 func=OUTPUT pull=DOWN
GPIO 43: level=1 func=INPUT pull=DOWN
GPIO 44: level=1 alt=1 func=SDA0 pull=NONE
GPIO 45: level=1 alt=1 func=SCL0 pull=NONE
I seems like everything for panel is disabled.
Make my LCD panel dts .
Code:
/* * vc4-kms-dsi-ti-sn65dsi84-auo-g156han-overlay.dts * modify by fan in 2024-03-14 *//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>;}; };};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-1 on GPIO 19 */backlight_lvds: backlight { status = "okay";compatible = "pwm-backlight";pwms = <&pwm 1 1000000 0>; /* Period of 1000000ns means 1KHz */brightness-levels = <0 1000>;num-interpolated-steps = <1000>;default-brightness-level = <800>;enable-gpios = <&gpio 21 GPIO_ACTIVE_HIGH>; /* Backlight enable */ };panel: panel {compatible = "panel-lvds"; label = "AUO:G156HAN2.0"; status = "okay";backlight = <&backlight_lvds>;/* Physical dimensions of active area */width-mm = <344>;height-mm = <194>;data-mapping = "vesa-24";panel-timing {/* the hactive and porches in the datasheet are for a single LVDS channel *//* since we use dual LVDS channel, Horizontal paramter and clock must double*/clock-frequency = <141000000>;hactive = <1920>;hsync-len = <64>;hfront-porch = <60>;hback-porch = <60>;vactive = <1080>;vsync-len = <12>;vfront-porch = <12>;vback-porch = <12>;};port {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;dual-lvds-odd-pixels;panel_channel_a: endpoint {remote-endpoint = <&bridge_out_a>;};};port@1 {reg = <1>;dual-lvds-even-pixels;panel_channel_b: endpoint {remote-endpoint = <&bridge_out_b>;};};};};};};fragment@3 {target = <&i2c_csi_dsi>;__overlay__ {#gpio-cells = <2>;#address-cells = <1>;#size-cells = <0>;status = "okay";bridge@2c {compatible = "ti,sn65dsi84";reg = <0x2c>;enable-gpios = <&gpio 0 GPIO_ACTIVE_HIGH>; status = "okay"; ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;bridge_in: endpoint {remote-endpoint = <&dsi_out_port>; };};port@2 {reg = <2>;bridge_out_a: endpoint {remote-endpoint = <&panel_channel_a>;};};port@3 {reg = <3>;bridge_out_b: endpoint {remote-endpoint = <&panel_channel_b>;};};};};};};fragment@4 {target = <&dsi1>;__overlay__ {#address-cells = <1>;#size-cells = <0>;status = "okay";port {dsi_out_port: endpoint {remote-endpoint = <&bridge_in>; //try to used 3 lanesdata-lanes = <0 1 2>;};};};};fragment@5 {target = <&i2c0if>;__overlay__ {status = "okay";};};fragment@6 {target = <&i2c0mux>;__overlay__ {status = "okay";};};};
Code:
# Uncomment some or all of these to enable the optional hardware interfaces#dtparam=i2c_arm=on#dtparam=i2s=on#dtparam=spi=on# Enable audio (loads snd_bcm2835)#dtparam=audio=on# Additional overlays and parameters are documented# /boot/firmware/overlays/README# Automatically load overlays for detected cameras#camera_auto_detect=1# Automatically load overlays for detected DSI displays#display_auto_detect=1# Automatically load initramfs files, if foundauto_initramfs=1# Enable DRM VC4 V3D driverdtoverlay=vc4-kms-v3dmax_framebuffers=2# Don't have the firmware create an initial video= setting in cmdline.txt.# Use the kernel's default instead.disable_fw_kms_setup=1# Run in 64-bit modearm_64bit=1# Disable compensation for displays with overscandisable_overscan=1# Run as fast as firmware / board allowsarm_boost=1[cm4]# Enable host mode on the 2711 built-in XHCI USB controller.# This line should be removed if the legacy DWC2 controller is required# (e.g. for USB device mode) or if USB support is not required.otg_mode=1[all]kernel=kernel-6.6.20-auo.imgdtparam=act_led_trigger=heartbeatdtoverlay=i2c-rtc,ds1339dtparam=i2c_arm=ondtoverlay=vc4-kms-dsi-ti-sn65dsi84-auo-g156han
after boot the CM4 ,the panel is black. the backlight pwm and enable also output. The enable pin GPIO0 for SN65DSI84 is also low level.
here is the gpios
BANK0 (GPIO 0 to 27):
GPIO 0: level=0 func=OUTPUT pull=UP
GPIO 1: level=0 func=INPUT pull=UP
GPIO 2: level=1 alt=0 func=SDA1 pull=UP
GPIO 3: level=1 alt=0 func=SCL1 pull=UP
GPIO 4: level=0 func=INPUT pull=UP
GPIO 5: level=1 func=INPUT pull=UP
GPIO 6: level=1 func=INPUT pull=UP
GPIO 7: level=1 func=INPUT pull=UP
GPIO 8: level=1 func=INPUT pull=UP
GPIO 9: level=0 func=INPUT pull=DOWN
GPIO 10: level=0 func=INPUT pull=DOWN
GPIO 11: level=0 func=INPUT pull=DOWN
GPIO 12: level=0 func=INPUT pull=DOWN
GPIO 13: level=1 func=INPUT pull=DOWN
GPIO 14: level=1 func=INPUT pull=NONE
GPIO 15: level=1 func=INPUT pull=UP
GPIO 16: level=0 func=INPUT pull=DOWN
GPIO 17: level=1 func=INPUT pull=DOWN
GPIO 18: level=1 func=INPUT pull=DOWN
GPIO 19: level=0 alt=5 func=PWM0_1 pull=DOWN
GPIO 20: level=0 func=INPUT pull=DOWN
GPIO 21: level=0 func=OUTPUT pull=DOWN
GPIO 22: level=1 func=INPUT pull=DOWN
GPIO 23: level=1 func=INPUT pull=DOWN
GPIO 24: level=1 func=INPUT pull=DOWN
GPIO 25: level=0 func=INPUT pull=DOWN
GPIO 26: level=0 func=INPUT pull=DOWN
GPIO 27: level=1 func=INPUT pull=DOWN
BANK1 (GPIO 28 to 45):
GPIO 28: level=1 alt=5 func=RGMII_MDIO pull=UP
GPIO 29: level=0 alt=5 func=RGMII_MDC pull=DOWN
GPIO 30: level=1 alt=3 func=CTS0 pull=UP
GPIO 31: level=0 alt=3 func=RTS0 pull=NONE
GPIO 32: level=1 alt=3 func=TXD0 pull=NONE
GPIO 33: level=1 alt=3 func=RXD0 pull=UP
GPIO 34: level=0 alt=3 func=SD1_CLK pull=NONE
GPIO 35: level=1 alt=3 func=SD1_CMD pull=UP
GPIO 36: level=1 alt=3 func=SD1_DAT0 pull=UP
GPIO 37: level=1 alt=3 func=SD1_DAT1 pull=UP
GPIO 38: level=1 alt=3 func=SD1_DAT2 pull=UP
GPIO 39: level=1 alt=3 func=SD1_DAT3 pull=UP
GPIO 40: level=1 func=INPUT pull=DOWN
GPIO 41: level=0 func=INPUT pull=DOWN
GPIO 42: level=0 func=OUTPUT pull=DOWN
GPIO 43: level=1 func=INPUT pull=DOWN
GPIO 44: level=1 alt=1 func=SDA0 pull=NONE
GPIO 45: level=1 alt=1 func=SCL0 pull=NONE
I seems like everything for panel is disabled.
Statistics: Posted by zhenlinfan — Wed Mar 20, 2024 4:03 am