No, we are using the development board for ESP32,
I modified the drivers you suggested, but a timeout occurs during their initialization:Full log:Modified driver:Modified overlay:
Based on my earlier drivers, I checked the signal on the D0 line with an oscilloscope as sent by the ESP32, and I noticed it includes an extra command that's not present in the data from the RPi. It’s probably a start-of-line marker. What do you think? Is there a way to enable something like that on the RPi?
Signal measured on the D0 from RPi:Signal measured on the D0 from ESP32:
Zoomed ESP32 command, It looks like the command is being sent after the vertical front porch and before the vertical back porch.
I modified the drivers you suggested, but a timeout occurs during their initialization:
Code:
[ 5.345748] vc4_dsi fe209000.dsi: transfer interrupt wait timeout[ 5.345755] vc4_dsi fe209000.dsi: instat: 0x00000000, stat: 0x00000000[ 5.345762] vc4-drm gpu: [drm] *ERROR* DSI transfer failed, resetting: -110[ 5.345769] jadard-jd9165 fe209000.dsi.0: sending dcs data 00 00 failed: -110Code:
pi@raspberrypi:~ $ dmesg[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083][ 0.000000] Linux version 6.12.30-v8_PIOTREK+ (pi@raspberrypi) (gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT Fri May 30 18:54:04 CEST 2025[ 0.000000] KASLR enabled[ 0.000000] random: crng init done[ 0.000000] Machine model: Raspberry Pi Compute Module 4 Rev 1.1[ 0.000000] efi: UEFI not found.[ 0.000000] Reserved memory: created CMA memory pool at 0x000000000dc00000, size 512 MiB[ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool[ 0.000000] OF: reserved mem: 0x000000000dc00000..0x000000002dbfffff (524288 KiB) map reusable linux,cma[ 0.000000] OF: reserved mem: 0x000000003ef667e0..0x000000003ef66993 (0 KiB) nomap non-reusable nvram@0[ 0.000000] OF: reserved mem: 0x000000003ef663a0..0x000000003ef6679f (1 KiB) nomap non-reusable nvram@1[ 0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000007fffffff][ 0.000000] NODE_DATA(0) allocated [mem 0x7fbdaa40-0x7fbdd73f][ 0.000000] Zone ranges:[ 0.000000] DMA [mem 0x0000000000000000-0x000000003fffffff][ 0.000000] DMA32 [mem 0x0000000040000000-0x000000007fffffff][ 0.000000] Normal empty[ 0.000000] Movable zone start for each node[ 0.000000] Early memory node ranges[ 0.000000] node 0: [mem 0x0000000000000000-0x000000003b3fffff][ 0.000000] node 0: [mem 0x0000000040000000-0x000000007fffffff][ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000007fffffff][ 0.000000] On node 0, zone DMA32: 19456 pages in unavailable ranges[ 0.000000] percpu: Embedded 33 pages/cpu s95064 r8192 d31912 u135168[ 0.000000] pcpu-alloc: s95064 r8192 d31912 u135168 alloc=33*4096[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [ 0.000000] Detected PIPT I-cache on CPU0[ 0.000000] CPU features: detected: Spectre-v2[ 0.000000] CPU features: detected: Spectre-v3a[ 0.000000] CPU features: detected: Spectre-v4[ 0.000000] CPU features: detected: Spectre-BHB[ 0.000000] CPU features: kernel page table isolation forced ON by KASLR[ 0.000000] CPU features: detected: Kernel page table isolation (KPTI)[ 0.000000] CPU features: detected: ARM erratum 1742098[ 0.000000] CPU features: detected: ARM errata 1165522, 1319367, or 1530923[ 0.000000] alternatives: applying boot alternatives[ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave nvme.max_host_mem_size_mb=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_hdmi=0 smsc95xx.macaddr=2C:CF:67:82:AF:17 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 console=ttyS0,115200 console=tty1 root=PARTUUID=d3728420-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=PL[ 0.000000] cgroup: Disabling memory control group subsystem[ 0.000000] mempolicy: NUMA default policy overridden to 'interleave:0'[ 0.000000] Unknown kernel command line parameters "splash", will be passed to user space.[ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)[ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)[ 0.000000] Fallback order for Node 0: 0 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 504832[ 0.000000] Policy zone: DMA32[ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off[ 0.000000] software IO TLB: area num 4.[ 0.000000] software IO TLB: mapped [mem 0x0000000037400000-0x000000003b400000] (64MB)[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1[ 0.000000] ftrace: allocating 44929 entries in 176 pages[ 0.000000] ftrace: allocated 176 pages with 3 groups[ 0.000000] rcu: Preemptible hierarchical RCU implementation.[ 0.000000] rcu: RCU event tracing is enabled.[ 0.000000] Trampoline variant of Tasks RCU enabled.[ 0.000000] Rude variant of Tasks RCU enabled.[ 0.000000] Tracing variant of Tasks RCU enabled.[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.[ 0.000000] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.[ 0.000000] RCU Tasks Rude: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.[ 0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0[ 0.000000] Root IRQ handler: gic_handle_irq[ 0.000000] GIC: Using split EOI/Deactivate mode[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.[ 0.000000] arch_timer: cp15 timer(s) running at 54.00MHz (phys).[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xc743ce346, max_idle_ns: 440795203123 ns[ 0.000000] sched_clock: 56 bits at 54MHz, resolution 18ns, wraps every 4398046511102ns[ 0.000167] Console: colour dummy device 80x25[ 0.000176] printk: legacy console [tty1] enabled[ 0.000253] Calibrating delay loop (skipped), value calculated using timer frequency.. 108.00 BogoMIPS (lpj=216000)[ 0.000263] pid_max: default: 32768 minimum: 301[ 0.000297] LSM: initializing lsm=capability[ 0.000410] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)[ 0.000427] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)[ 0.016002] rcu: Hierarchical SRCU implementation.[ 0.016013] rcu: Max phase no-delay instances is 1000.[ 0.016176] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level[ 0.016895] EFI services will not be available.[ 0.020018] smp: Bringing up secondary CPUs ...[ 0.024264] Detected PIPT I-cache on CPU1[ 0.024334] CPU1: Booted secondary processor 0x0000000001 [0x410fd083][ 0.028259] Detected PIPT I-cache on CPU2[ 0.028300] CPU2: Booted secondary processor 0x0000000002 [0x410fd083][ 0.032276] Detected PIPT I-cache on CPU3[ 0.032318] CPU3: Booted secondary processor 0x0000000003 [0x410fd083][ 0.032373] smp: Brought up 1 node, 4 CPUs[ 0.032382] SMP: Total of 4 processors activated.[ 0.032386] CPU: All CPU(s) started at EL2[ 0.032397] CPU features: detected: 32-bit EL0 Support[ 0.032400] CPU features: detected: 32-bit EL1 Support[ 0.032404] CPU features: detected: CRC32 instructions[ 0.032439] alternatives: applying system-wide alternatives[ 0.033365] Memory: 1337672K/2019328K available (13952K kernel code, 2404K rwdata, 4776K rodata, 5376K init, 577K bss, 151972K reserved, 524288K cma-reserved)[ 0.033713] devtmpfs: initialized[ 0.038439] Enabled cp15_barrier support[ 0.038459] Enabled setend support[ 0.038550] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns[ 0.038564] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)[ 0.047234] 2G module region forced by RANDOMIZE_MODULE_REGION_FULL[ 0.047251] 0 pages in range for non-PLT usage[ 0.047257] 517456 pages in range for PLT usage[ 0.047413] pinctrl core: initialized pinctrl subsystem[ 0.047779] DMI not present or invalid.[ 0.049407] NET: Registered PF_NETLINK/PF_ROUTE protocol family[ 0.050120] DMA: preallocated 1024 KiB GFP_KERNEL pool for atomic allocations[ 0.050230] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations[ 0.050403] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations[ 0.050433] audit: initializing netlink subsys (disabled)[ 0.050583] audit: type=2000 audit(0.048:1): state=initialized audit_enabled=0 res=1[ 0.050842] thermal_sys: Registered thermal governor 'step_wise'[ 0.050866] cpuidle: using governor menu[ 0.050969] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.[ 0.051024] ASID allocator initialised with 32768 entries[ 0.051490] Serial: AMBA PL011 UART driver[ 0.054169] /soc/cprman@7e101000: Fixed dependency cycle(s) with /soc/dsi@7e209000[ 0.054303] /soc/dsi@7e209000: Fixed dependency cycle(s) with /soc/dsi@7e209000/jd9165@0[ 0.054318] /soc/dsi@7e209000: Fixed dependency cycle(s) with /soc/cprman@7e101000[ 0.054331] /soc/dsi@7e209000/jd9165@0: Fixed dependency cycle(s) with /soc/dsi@7e209000[ 0.054359] /soc/interrupt-controller@40041000: Fixed dependency cycle(s) with /soc/interrupt-controller@40041000[ 0.054558] /soc/cprman@7e101000: Fixed dependency cycle(s) with /soc/dsi@7e209000[ 0.054831] bcm2835-mbox fe00b880.mailbox: mailbox enabled[ 0.055287] /soc/cprman@7e101000: Fixed dependency cycle(s) with /soc/dsi@7e209000[ 0.055321] /soc/dsi@7e209000: Fixed dependency cycle(s) with /soc/dsi@7e209000/jd9165@0[ 0.055335] /soc/dsi@7e209000: Fixed dependency cycle(s) with /soc/cprman@7e101000[ 0.055371] /soc/dsi@7e209000/jd9165@0: Fixed dependency cycle(s) with /soc/dsi@7e209000[ 0.064173] raspberrypi-firmware soc:firmware: Attached to firmware from 2025-04-30T13:33:39, variant start[ 0.068179] raspberrypi-firmware soc:firmware: Firmware hash is 5560078dcc8591a00f57b9068d13e5544aeef3aa[ 0.073811] /scb/pcie@7d500000: Fixed dependency cycle(s) with /scb/pcie@7d500000[ 0.073939] /scb/pcie@7d500000: Fixed dependency cycle(s) with /scb/pcie@7d500000[ 0.077052] bcm2835-dma fe007000.dma-controller: DMA legacy API manager, dmachans=0x1[ 0.077835] iommu: Default domain type: Translated[ 0.077840] iommu: DMA domain TLB invalidation policy: strict mode[ 0.080484] SCSI subsystem initialized[ 0.080576] usbcore: registered new interface driver usbfs[ 0.080598] usbcore: registered new interface driver hub[ 0.080618] usbcore: registered new device driver usb[ 0.080817] pps_core: LinuxPPS API ver. 1 registered[ 0.080821] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>[ 0.080829] PTP clock support registered[ 0.081477] vgaarb: loaded[ 0.081733] clocksource: Switched to clocksource arch_sys_counter[ 0.081961] VFS: Disk quotas dquot_6.6.0[ 0.081975] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)[ 0.088008] NET: Registered PF_INET protocol family[ 0.088273] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)[ 0.089402] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)[ 0.089426] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)[ 0.089435] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)[ 0.089490] TCP bind hash table entries: 16384 (order: 7, 524288 bytes, linear)[ 0.089977] TCP: Hash tables configured (established 16384 bind 16384)[ 0.090143] MPTCP token hash table entries: 2048 (order: 3, 49152 bytes, linear)[ 0.090207] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)[ 0.090226] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)[ 0.090326] NET: Registered PF_UNIX/PF_LOCAL protocol family[ 0.090721] RPC: Registered named UNIX socket transport module.[ 0.090727] RPC: Registered udp transport module.[ 0.090730] RPC: Registered tcp transport module.[ 0.090733] RPC: Registered tcp-with-tls transport module.[ 0.090736] RPC: Registered tcp NFSv4.1 backchannel transport module.[ 0.090746] PCI: CLS 0 bytes, default 64[ 0.090983] Trying to unpack rootfs image as initramfs...[ 0.100499] kvm [1]: nv: 554 coarse grained trap handlers[ 0.100773] kvm [1]: IPA Size Limit: 44 bits[ 0.101412] kvm [1]: vgic interrupt IRQ9[ 0.101440] kvm [1]: Hyp nVHE mode initialized successfully[ 0.492835] Freeing initrd memory: 17644K[ 0.594147] Initialise system trusted keyrings[ 0.594417] workingset: timestamp_bits=42 max_order=19 bucket_order=0[ 0.594823] NFS: Registering the id_resolver key type[ 0.594836] Key type id_resolver registered[ 0.594839] Key type id_legacy registered[ 0.594851] nfs4filelayout_init: NFSv4 File Layout Driver Registering...[ 0.594856] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...[ 0.595211] Key type asymmetric registered[ 0.595217] Asymmetric key parser 'x509' registered[ 0.595253] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)[ 0.595347] io scheduler mq-deadline registered[ 0.595352] io scheduler kyber registered[ 0.595371] io scheduler bfq registered[ 0.595865] irq_brcmstb_l2: registered L2 intc (/soc/interrupt-controller@7ef00100, parent irq: 23)[ 0.597370] pinctrl-bcm2835 fe200000.gpio: GPIO_OUT persistence: yes[ 0.605841] ledtrig-cpu: registered to indicate activity on CPUs[ 0.607250] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:[ 0.607277] brcm-pcie fd500000.pcie: No bus range found for /scb/pcie@7d500000, using [bus 00-ff][ 0.607296] brcm-pcie fd500000.pcie: MEM 0x0600000000..0x063fffffff -> 0x00c0000000[ 0.607314] brcm-pcie fd500000.pcie: IB MEM 0x0000000000..0x007fffffff -> 0x0400000000[ 0.608547] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00[ 0.608573] pci_bus 0000:00: root bus resource [bus 00-ff][ 0.608581] pci_bus 0000:00: root bus resource [mem 0x600000000-0x63fffffff] (bus address [0xc0000000-0xffffffff])[ 0.608643] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400 PCIe Root Port[ 0.608658] pci 0000:00:00.0: PCI bridge to [bus 00][ 0.608666] pci 0000:00:00.0: bridge window [mem 0x00000000-0x000fffff][ 0.608674] pci 0000:00:00.0: bridge window [mem 0x00000000-0x000fffff 64bit pref][ 0.608713] pci 0000:00:00.0: PME# supported from D0 D3hot[ 0.610416] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring[ 0.610537] pci_bus 0000:01: supply vpcie3v3 not found, using dummy regulator[ 0.610622] pci_bus 0000:01: supply vpcie3v3aux not found, using dummy regulator[ 0.610648] pci_bus 0000:01: supply vpcie12v not found, using dummy regulator[ 0.953742] brcm-pcie fd500000.pcie: link down[ 0.953898] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01[ 0.953917] pci 0000:00:00.0: PCI bridge to [bus 01][ 0.953927] pci_bus 0000:00: resource 4 [mem 0x600000000-0x63fffffff][ 0.954187] pcieport 0000:00:00.0: PME: Signaling with IRQ 27[ 0.954389] pcieport 0000:00:00.0: AER: enabled with IRQ 27[ 0.954608] pci_bus 0000:01: busn_res: [bus 01] is released[ 0.954884] pci_bus 0000:00: busn_res: [bus 00-ff] is released[ 0.959458] iproc-rng200 fe104000.rng: hwrng registered[ 0.959559] vc-mem: phys_addr:0x00000000 mem_base=0x3ec00000 mem_size:0x40000000(1024 MiB)[ 0.964241] brd: module loaded[ 0.967061] loop: module loaded[ 0.967404] Loading iSCSI transport class v2.0-870.[ 0.969472] bcmgenet fd580000.ethernet: GENET 5.0 EPHY: 0x0000[ 1.169774] unimac-mdio unimac-mdio.-19: Broadcom UniMAC MDIO bus[ 1.170352] usbcore: registered new interface driver lan78xx[ 1.170376] usbcore: registered new interface driver smsc95xx[ 1.195708] xhci-hcd fe9c0000.xhci: xHCI Host Controller[ 1.195722] xhci-hcd fe9c0000.xhci: new USB bus registered, assigned bus number 1[ 1.195835] xhci-hcd fe9c0000.xhci: USB3 root hub has no ports[ 1.195841] xhci-hcd fe9c0000.xhci: hcc params 0x0220fe65 hci version 0x110 quirks 0x0000000000000010[ 1.195874] xhci-hcd fe9c0000.xhci: irq 30, io mem 0xfe9c0000[ 1.196022] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12[ 1.196029] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1[ 1.196034] usb usb1: Product: xHCI Host Controller[ 1.196038] usb usb1: Manufacturer: Linux 6.12.30-v8_PIOTREK+ xhci-hcd[ 1.196042] usb usb1: SerialNumber: fe9c0000.xhci[ 1.196293] hub 1-0:1.0: USB hub found[ 1.196313] hub 1-0:1.0: 1 port detected[ 1.196519] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)[ 1.196586] dwc_otg: FIQ enabled[ 1.196589] dwc_otg: NAK holdoff enabled[ 1.196592] dwc_otg: FIQ split-transaction FSM enabled[ 1.196597] Module dwc_common_port init[ 1.196950] usbcore: registered new interface driver uas[ 1.196985] usbcore: registered new interface driver usb-storage[ 1.197199] mousedev: PS/2 mouse device common for all mice[ 1.198718] sdhci: Secure Digital Host Controller Interface driver[ 1.198727] sdhci: Copyright(c) Pierre Ossman[ 1.198823] sdhci-pltfm: SDHCI platform and OF driver helper[ 1.199003] hid: raw HID events driver (C) Jiri Kosina[ 1.199063] usbcore: registered new interface driver usbhid[ 1.199066] usbhid: USB HID core driver[ 1.199127] bcm2835_vchiq fe00b840.mailbox: there is not valid maps for state default[ 1.203352] hw perfevents: enabled with armv8_cortex_a72 PMU driver, 7 (0,8000003f) counters available[ 1.203999] NET: Registered PF_PACKET protocol family[ 1.204048] Key type dns_resolver registered[ 1.215280] registered taskstats version 1[ 1.215425] Loading compiled-in X.509 certificates[ 1.219595] Demotion targets for Node 0: null[ 1.220154] Key type .fscrypt registered[ 1.220160] Key type fscrypt-provisioning registered[ 1.224024] uart-pl011 fe201000.serial: there is not valid maps for state default[ 1.224253] uart-pl011 fe201000.serial: cts_event_workaround enabled[ 1.224440] fe201000.serial: ttyAMA1 at MMIO 0xfe201000 (irq = 36, base_baud = 0) is a PL011 rev3[ 1.224565] serial serial0: tty port ttyAMA1 registered[ 1.225929] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer[ 1.226308] bcm2835-power bcm2835-power: Broadcom BCM2835 power domains driver[ 1.226737] mmc-bcm2835 fe300000.mmcnr: mmc_debug:0 mmc_debug2:0[ 1.226745] mmc-bcm2835 fe300000.mmcnr: DMA channel allocated[ 1.250606] of_cfs_init[ 1.250707] of_cfs_init: OK[ 1.250870] clk: Disabling unused clocks[ 1.251070] PM: genpd: Disabling unused power domains[ 1.288875] mmc0: SDHCI controller on fe340000.mmc [fe340000.mmc] using ADMA[ 1.294372] Freeing unused kernel memory: 5376K[ 1.294496] Run /init as init process[ 1.294500] with arguments:[ 1.294502] /init[ 1.294505] splash[ 1.294507] with environment:[ 1.294510] HOME=/[ 1.294512] TERM=linux[ 1.327876] mmc1: new high speed SDIO card at address 0001[ 1.345455] mmc0: new DDR MMC card at address 0001[ 1.346043] mmcblk0: mmc0:0001 AJTD4R 14.6 GiB[ 1.347609] mmcblk0: p1 p2[ 1.347897] mmcblk0: mmc0:0001 AJTD4R 14.6 GiB[ 1.348237] mmcblk0boot0: mmc0:0001 AJTD4R 4.00 MiB[ 1.349572] mmcblk0boot1: mmc0:0001 AJTD4R 4.00 MiB[ 1.350709] mmcblk0rpmb: mmc0:0001 AJTD4R 4.00 MiB, chardev (243:0)[ 1.727794] EXT4-fs (mmcblk0p2): mounted filesystem d6ecfcd5-2703-41bf-9301-10c403b6fb0c ro with ordered data mode. Quota mode: none.[ 1.998142] systemd[1]: System time before build time, advancing clock.[ 2.065918] NET: Registered PF_INET6 protocol family[ 2.066667] Segment Routing with IPv6[ 2.066686] In-situ OAM (IOAM) with IPv6[ 2.096530] systemd[1]: systemd 252.36-1~deb12u1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)[ 2.096565] systemd[1]: Detected architecture arm64.[ 2.100700] systemd[1]: Hostname set to <raspberrypi>.[ 2.425379] systemd[1]: Queued start job for default target graphical.target.[ 2.455168] systemd[1]: Created slice system-getty.slice - Slice /system/getty.[ 2.455831] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.[ 2.456310] systemd[1]: Created slice system-systemd\x2dfsck.slice - Slice /system/systemd-fsck.[ 2.456627] systemd[1]: Created slice user.slice - User and Session Slice.[ 2.456778] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.[ 2.457160] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.[ 2.457218] systemd[1]: Expecting device dev-disk-by\x2dpartuuid-d3728420\x2d01.device - /dev/disk/by-partuuid/d3728420-01...[ 2.457244] systemd[1]: Expecting device dev-dri-card0.device - /dev/dri/card0...[ 2.457271] systemd[1]: Expecting device dev-dri-renderD128.device - /dev/dri/renderD128...[ 2.457348] systemd[1]: Reached target integritysetup.target - Local Integrity Protected Volumes.[ 2.457435] systemd[1]: Reached target nss-user-lookup.target - User and Group Name Lookups.[ 2.457499] systemd[1]: Reached target slices.target - Slice Units.[ 2.457554] systemd[1]: Reached target swap.target - Swaps.[ 2.457614] systemd[1]: Reached target veritysetup.target - Local Verity Protected Volumes.[ 2.457977] systemd[1]: Listening on systemd-fsckd.socket - fsck to fsckd communication Socket.[ 2.458122] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe.[ 2.458717] systemd[1]: Listening on systemd-journald-audit.socket - Journal Audit Socket.[ 2.458992] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).[ 2.459278] systemd[1]: Listening on systemd-journald.socket - Journal Socket.[ 2.460680] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.[ 2.460922] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.[ 2.461246] systemd[1]: dev-hugepages.mount - Huge Pages File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/mm/hugepages).[ 2.462944] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...[ 2.465074] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System...[ 2.467406] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System...[ 2.467803] systemd[1]: auth-rpcgss-module.service - Kernel Module supporting RPCSEC_GSS was skipped because of an unmet condition check (ConditionPathExists=/etc/krb5.keytab).[ 2.471228] systemd[1]: Starting fake-hwclock.service - Restore / save the current clock...[ 2.473809] systemd[1]: Starting keyboard-setup.service - Set the console keyboard layout...[ 2.476354] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...[ 2.479536] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...[ 2.483479] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod...[ 2.488510] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...[ 2.491951] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...[ 2.495506] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...[ 2.499838] systemd[1]: Starting modprobe@loop.service - Load Kernel Module loop...[ 2.500452] systemd[1]: systemd-fsck-root.service - File System Check on Root Device was skipped because of an unmet condition check (ConditionPathExists=!/run/initramfs/fsck-root).[ 2.509959] systemd[1]: Starting systemd-journald.service - Journal Service...[ 2.516517] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...[ 2.522413] device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@lists.linux.dev[ 2.524706] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...[ 2.534252] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...[ 2.537402] fuse: init (API version 7.41)[ 2.538864] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System.[ 2.539676] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System.[ 2.540278] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System.[ 2.543586] systemd[1]: Finished fake-hwclock.service - Restore / save the current clock.[ 2.545196] systemd[1]: Finished kmod-static-nodes.service - Create List of Static Device Nodes.[ 2.551107] systemd[1]: modprobe@configfs.service: Deactivated successfully.[ 2.551967] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.[ 2.552953] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.[ 2.553330] systemd[1]: Finished modprobe@dm_mod.service - Load Kernel Module dm_mod.[ 2.557557] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.[ 2.558509] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.[ 2.559379] systemd[1]: modprobe@fuse.service: Deactivated successfully.[ 2.560774] systemd[1]: Finished modprobe@fuse.service - Load Kernel Module fuse.[ 2.562017] systemd[1]: modprobe@loop.service: Deactivated successfully.[ 2.562563] systemd[1]: Finished modprobe@loop.service - Load Kernel Module loop.[ 2.572569] systemd[1]: Mounting sys-fs-fuse-connections.mount - FUSE Control File System...[ 2.576374] systemd[1]: Mounting sys-kernel-config.mount - Kernel Configuration File System...[ 2.576639] systemd[1]: systemd-repart.service - Repartition Root Disk was skipped because no trigger condition checks were met.[ 2.580614] systemd[1]: modprobe@drm.service: Deactivated successfully.[ 2.581901] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.[ 2.585083] i2c_dev: i2c /dev entries driver[ 2.587933] systemd[1]: Finished systemd-modules-load.service - Load Kernel Modules.[ 2.588745] systemd[1]: Mounted sys-fs-fuse-connections.mount - FUSE Control File System.[ 2.589353] systemd[1]: Mounted sys-kernel-config.mount - Kernel Configuration File System.[ 2.592198] systemd[1]: Starting systemd-sysctl.service - Apply Kernel Variables...[ 2.595559] EXT4-fs (mmcblk0p2): re-mounted d6ecfcd5-2703-41bf-9301-10c403b6fb0c r/w. Quota mode: none.[ 2.602325] systemd[1]: Finished systemd-remount-fs.service - Remount Root and Kernel File Systems.[ 2.603153] systemd[1]: systemd-firstboot.service - First Boot Wizard was skipped because of an unmet condition check (ConditionFirstBoot=yes).[ 2.603286] systemd[1]: systemd-pstore.service - Platform Persistent Storage Archival was skipped because of an unmet condition check (ConditionDirectoryNotEmpty=/sys/fs/pstore).[ 2.605597] systemd[1]: Starting systemd-random-seed.service - Load/Save Random Seed...[ 2.610940] systemd[1]: Starting systemd-sysusers.service - Create System Users...[ 2.611625] systemd[1]: Started systemd-journald.service - Journal Service.[ 2.650731] systemd-journald[241]: Received client request to flush runtime journal.[ 3.182866] mc: Linux media interface: v0.10[ 3.228596] rpi-gpiomem fe200000.gpiomem: window base 0xfe200000 size 0x00001000[ 3.228793] rpi-gpiomem fe200000.gpiomem: initialised 1 regions as /dev/gpiomem[ 3.269301] videodev: Linux video capture interface: v2.00[ 3.292215] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.[ 3.292739] brcmstb-i2c fef04500.i2c: @97500hz registered in polling mode[ 3.294627] brcmstb-i2c fef09500.i2c: @97500hz registered in polling mode[ 3.304999] vc_sm_cma: module is from the staging directory, the quality is unknown, you have been warned.[ 3.316815] bcm2835_vc_sm_cma_probe: Videocore shared memory driver[ 3.316839] [vc_sm_connected_init]: start[ 3.320052] rpi-hevc-dec feb00000.codec: Device registered as /dev/video19[ 3.322483] [vc_sm_connected_init]: installed successfully[ 3.328822] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.[ 3.341264] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned.[ 3.346691] bcm2835_isp: module is from the staging directory, the quality is unknown, you have been warned.[ 3.357178] bcm2835_codec: module is from the staging directory, the quality is unknown, you have been warned.[ 3.384686] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video13[ 3.384927] bcm2835-codec bcm2835-codec: Device registered as /dev/video10[ 3.384955] bcm2835-codec bcm2835-codec: Loaded V4L2 decode[ 3.385149] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video14[ 3.385430] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video15[ 3.385593] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video16[ 3.385608] bcm2835-isp bcm2835-isp: Register output node 0 with media controller[ 3.385617] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller[ 3.385623] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller[ 3.385628] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller[ 3.394967] bcm2835-codec bcm2835-codec: Device registered as /dev/video11[ 3.395005] bcm2835-codec bcm2835-codec: Loaded V4L2 encode[ 3.395095] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video20[ 3.396133] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video21[ 3.396363] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video22[ 3.396513] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video23[ 3.396529] bcm2835-isp bcm2835-isp: Register output node 0 with media controller[ 3.396537] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller[ 3.396542] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller[ 3.396547] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller[ 3.396674] bcm2835-isp bcm2835-isp: Loaded V4L2 bcm2835-isp[ 3.400378] bcm2835-codec bcm2835-codec: Device registered as /dev/video12[ 3.400422] bcm2835-codec bcm2835-codec: Loaded V4L2 isp[ 3.415393] bcm2835-codec bcm2835-codec: Device registered as /dev/video18[ 3.415428] bcm2835-codec bcm2835-codec: Loaded V4L2 image_fx[ 3.417509] bcm2835-codec bcm2835-codec: Device registered as /dev/video31[ 3.417538] bcm2835-codec bcm2835-codec: Loaded V4L2 encode_image[ 3.440987] cfg80211: Loading compiled-in X.509 certificates for regulatory database[ 3.460882] Loaded X.509 cert 'benh@debian.org: 577e021cb980e0e820821ba7b54b4961b8b4fadf'[ 3.461277] Loaded X.509 cert 'romain.perier@gmail.com: 3abbc6ec146e09d1b6016ab9d6cf71dd233f0328'[ 3.461646] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'[ 3.462056] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'[ 3.471190] Bluetooth: Core ver 2.22[ 3.471257] NET: Registered PF_BLUETOOTH protocol family[ 3.471261] Bluetooth: HCI device and connection manager initialized[ 3.471274] Bluetooth: HCI socket layer initialized[ 3.471280] Bluetooth: L2CAP socket layer initialized[ 3.471289] Bluetooth: SCO socket layer initialized[ 3.518572] Bluetooth: HCI UART driver ver 2.3[ 3.518592] Bluetooth: HCI UART protocol H4 registered[ 3.518653] Bluetooth: HCI UART protocol Three-wire (H5) registered[ 3.520210] hci_uart_bcm serial0-0: supply vbat not found, using dummy regulator[ 3.520340] hci_uart_bcm serial0-0: supply vddio not found, using dummy regulator[ 3.525887] Bluetooth: HCI UART protocol Broadcom registered[ 3.541890] brcmfmac: F1 signature read @0x18000000=0x15264345[ 3.545905] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6[ 3.546653] usbcore: registered new interface driver brcmfmac[ 3.560124] v3d fec00000.v3d: [drm] Transparent Hugepage support is recommended for optimal performance on this platform![ 3.564514] [drm] Initialized v3d 1.0.0 for fec00000.v3d on minor 0[ 3.775542] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)[ 3.776050] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Aug 29 2023 01:47:08 version 7.45.265 (28bca26 CY) FWID 01-b677b91b[ 3.846967] /soc/dsi@7e209000: Fixed dependency cycle(s) with /soc/dsi@7e209000/jd9165@0[ 3.847049] /soc/dsi@7e209000/jd9165@0: Fixed dependency cycle(s) with /soc/dsi@7e209000[ 3.874622] Bluetooth: hci0: BCM: chip id 107[ 3.874927] Bluetooth: hci0: BCM: features 0x2f[ 3.876060] Bluetooth: hci0: BCM4345C0[ 3.876079] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0000[ 3.877965] Bluetooth: hci0: BCM4345C0 'brcm/BCM4345C0.raspberrypi,4-compute-module.hcd' Patch[ 4.026516] JD9165: DSI PROBE[ 4.026586] jadard-jd9165 fe209000.dsi.0: supply vdd not found, using dummy regulator[ 4.029689] jadard-jd9165 fe209000.dsi.0: supply vccio not found, using dummy regulator[ 4.031762] vc4-drm gpu: bound fe400000.hvs (ops vc4_hvs_ops [vc4])[ 4.053268] Registered IR keymap rc-cec[ 4.053377] rc rc0: vc4-hdmi-0 as /devices/platform/soc/fef00700.hdmi/rc/rc0[ 4.053608] input: vc4-hdmi-0 as /devices/platform/soc/fef00700.hdmi/rc/rc0/input0[ 4.058079] input: vc4-hdmi-0 HDMI Jack as /devices/platform/soc/fef00700.hdmi/sound/card0/input1[ 4.059144] vc4-drm gpu: bound fef00700.hdmi (ops vc4_hdmi_ops [vc4])[ 4.065043] Registered IR keymap rc-cec[ 4.065920] rc rc1: vc4-hdmi-1 as /devices/platform/soc/fef05700.hdmi/rc/rc1[ 4.066039] input: vc4-hdmi-1 as /devices/platform/soc/fef05700.hdmi/rc/rc1/input2[ 4.074703] input: vc4-hdmi-1 HDMI Jack as /devices/platform/soc/fef05700.hdmi/sound/card1/input3[ 4.078095] vc4-drm gpu: bound fef05700.hdmi (ops vc4_hdmi_ops [vc4])[ 4.079051] vc4-drm gpu: bound fe209000.dsi (ops vc4_dsi_ops [vc4])[ 4.079557] vc4-drm gpu: bound fe004000.txp (ops vc4_txp_ops [vc4])[ 4.079833] vc4-drm gpu: bound fe206000.pixelvalve (ops vc4_crtc_ops [vc4])[ 4.080080] vc4-drm gpu: bound fe207000.pixelvalve (ops vc4_crtc_ops [vc4])[ 4.080466] vc4-drm gpu: bound fe20a000.pixelvalve (ops vc4_crtc_ops [vc4])[ 4.080622] vc4-drm gpu: bound fe216000.pixelvalve (ops vc4_crtc_ops [vc4])[ 4.080795] vc4-drm gpu: bound fec12000.pixelvalve (ops vc4_crtc_ops [vc4])[ 4.086542] [drm] Initialized vc4 0.0.0 for gpu on minor 1[ 4.257788] JD9165: START OF LCD INIT SEQUENCE RPi[ 4.622432] Bluetooth: hci0: BCM: features 0x2f[ 4.623728] Bluetooth: hci0: BCM43455 37.4MHz Raspberry Pi 3+-0190[ 4.623733] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0382[ 5.345748] vc4_dsi fe209000.dsi: transfer interrupt wait timeout[ 5.345755] vc4_dsi fe209000.dsi: instat: 0x00000000, stat: 0x00000000[ 5.345762] vc4-drm gpu: [drm] *ERROR* DSI transfer failed, resetting: -110[ 5.345769] jadard-jd9165 fe209000.dsi.0: sending dcs data 00 00 failed: -110[ 5.345778] JD9165: END OF LCD INIT SEQUENCE 2 [ 5.363875] Console: switching to colour frame buffer device 128x37[ 5.379257] vc4-drm gpu: [drm] fb0: vc4drmfb frame buffer device[ 5.629809] Adding 524284k swap on /var/swap. Priority:-2 extents:3 across:5185536k SS[ 5.712923] Bluetooth: BNEP (Ethernet Emulation) ver 1.3[ 5.712941] Bluetooth: BNEP filters: protocol multicast[ 5.712955] Bluetooth: BNEP socket layer initialized[ 5.722316] Bluetooth: MGMT ver 1.23[ 5.741225] NET: Registered PF_ALG protocol family[ 6.438562] bcmgenet fd580000.ethernet: configuring instance for external RGMII (RX delay)[ 6.442963] bcmgenet fd580000.ethernet eth0: Link is Down[ 6.476464] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled[ 8.398387] Bluetooth: RFCOMM TTY layer initialized[ 8.398417] Bluetooth: RFCOMM socket layer initialized[ 8.398437] Bluetooth: RFCOMM ver 1.11Code:
// SPDX-License-Identifier: GPL-2.0+/* * Copyright (c) 2019 Radxa Limited * Copyright (c) 2022 Edgeble AI Technologies Pvt. Ltd. * * Author: * - Jagan Teki <jagan@amarulasolutions.com> * - Stephen Chen <stephen@radxa.com> */#include <drm/drm_mipi_dsi.h>#include <drm/drm_modes.h>#include <drm/drm_panel.h>#include <drm/drm_print.h>#include <linux/gpio/consumer.h>#include <linux/delay.h>#include <linux/module.h>#include <linux/of.h>#include <linux/regulator/consumer.h>struct jadard;struct jadard_panel_desc {const struct drm_display_mode mode;unsigned int lanes;enum mipi_dsi_pixel_format format;int (*init)(struct jadard *jadard);bool lp11_before_reset;bool reset_before_power_off_vcioo;unsigned int vcioo_to_lp11_delay_ms;unsigned int lp11_to_reset_delay_ms;unsigned int backlight_off_to_display_off_delay_ms;unsigned int display_off_to_enter_sleep_delay_ms;unsigned int enter_sleep_to_reset_down_delay_ms;};struct jadard {struct drm_panel panel;struct mipi_dsi_device *dsi;const struct jadard_panel_desc *desc;enum drm_panel_orientation orientation;struct regulator *vdd;struct regulator *vccio;struct gpio_desc *reset;};static inline struct jadard *panel_to_jadard(struct drm_panel *panel){return container_of(panel, struct jadard, panel);}static int jadard_disable(struct drm_panel *panel){struct jadard *jadard = panel_to_jadard(panel);struct mipi_dsi_multi_context dsi_ctx = { .dsi = jadard->dsi };if (jadard->desc->backlight_off_to_display_off_delay_ms)mipi_dsi_msleep(&dsi_ctx, jadard->desc->backlight_off_to_display_off_delay_ms);mipi_dsi_dcs_set_display_off_multi(&dsi_ctx);if (jadard->desc->display_off_to_enter_sleep_delay_ms)mipi_dsi_msleep(&dsi_ctx, jadard->desc->display_off_to_enter_sleep_delay_ms);mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx);if (jadard->desc->enter_sleep_to_reset_down_delay_ms)mipi_dsi_msleep(&dsi_ctx, jadard->desc->enter_sleep_to_reset_down_delay_ms);return dsi_ctx.accum_err;}static int jadard_prepare(struct drm_panel *panel){struct jadard *jadard = panel_to_jadard(panel);int ret;ret = regulator_enable(jadard->vccio);if (ret)return ret;ret = regulator_enable(jadard->vdd);if (ret)return ret;if (jadard->desc->vcioo_to_lp11_delay_ms)msleep(jadard->desc->vcioo_to_lp11_delay_ms);if (jadard->desc->lp11_before_reset) {ret = mipi_dsi_dcs_nop(jadard->dsi);if (ret)return ret;}if (jadard->desc->lp11_to_reset_delay_ms)msleep(jadard->desc->lp11_to_reset_delay_ms);gpiod_set_value(jadard->reset, 0);msleep(5);gpiod_set_value(jadard->reset, 1);msleep(10);gpiod_set_value(jadard->reset, 0);msleep(130);ret = jadard->desc->init(jadard);if (ret)return ret;return 0;}static int jadard_unprepare(struct drm_panel *panel){struct jadard *jadard = panel_to_jadard(panel);gpiod_set_value(jadard->reset, 0);msleep(120);if (jadard->desc->reset_before_power_off_vcioo) {gpiod_set_value(jadard->reset, 1);usleep_range(1000, 2000);}regulator_disable(jadard->vdd);regulator_disable(jadard->vccio);return 0;}static int jadard_get_modes(struct drm_panel *panel, struct drm_connector *connector){struct jadard *jadard = panel_to_jadard(panel);const struct drm_display_mode *desc_mode = &jadard->desc->mode;struct drm_display_mode *mode;mode = drm_mode_duplicate(connector->dev, desc_mode);if (!mode) {DRM_DEV_ERROR(&jadard->dsi->dev, "failed to add mode %ux%ux@%u\n", desc_mode->hdisplay, desc_mode->vdisplay, drm_mode_vrefresh(desc_mode));return -ENOMEM;}drm_mode_set_name(mode);drm_mode_probed_add(connector, mode);connector->display_info.width_mm = mode->width_mm;connector->display_info.height_mm = mode->height_mm;return 1;}static enum drm_panel_orientation jadard_panel_get_orientation(struct drm_panel *panel){struct jadard *jadard = panel_to_jadard(panel);return jadard->orientation;}static const struct drm_panel_funcs jadard_funcs = {.disable = jadard_disable,.unprepare = jadard_unprepare,.prepare = jadard_prepare,.get_modes = jadard_get_modes,.get_orientation = jadard_panel_get_orientation,};static int jd9165_init_cmds(struct jadard *jadard){struct mipi_dsi_multi_context dsi_ctx = { .dsi = jadard->dsi };printk("JD9165: START OF LCD INIT SEQUENCE \n");mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x00);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x30, 0x00);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xf7, 0x49,0x61,0x02,0x00);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x30, 0x01);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x04,0x0C);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x05,0x00); //05=06(xhs) //0x01 for BISTmipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x06,0x00);//06=80(xhs) // 0x40 for BISTmipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0B,0x11);//0x13=4lanes,0x12=3lanes,0x11=2lanes,0x10=1 lanes mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17,0x00);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x20,0x04);//add //r_lansel_sel_reg=1, software charge lane must openmipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1F,0x05);//add hs_settle timemipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x23,0x00);//add //close gasmipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25,0x19);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x28,0x18);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x29,0x04);//revcommipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2A,0x01);//revcommipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2B,0x04);//vcommipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2C,0x01);//vcommipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x30, 0x02);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x01,0x22);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x03,0x12);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x04,0x00);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x05,0x64);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0A,0x08);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0B,0x0A,0x1A,0x0B,0x0D,0x0D,0x11,0x10,0x06,0x08,0x1F,0x1D);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0C,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0D,0x16,0x1B,0x0B,0x0D,0x0D,0x11,0x10,0x07,0x09,0x1E,0x1C);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0E,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0F,0x16,0x1B,0x0D,0x0B,0x0D,0x11,0x10,0x1C,0x1E,0x09,0x07);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x10,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x11,0x0A,0x1A,0x0D,0x0B,0x0D,0x11,0x10,0x1D,0x1F,0x08,0x06);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x14,0x00,0x00,0x11,0x11); //CKV_OFFmipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18,0x99);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x30, 0x06);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12, 0x36,0x2C,0x2E,0x3C,0x38,0x35,0x35,0x32,0x2E,0x1D,0x2B,0x21,0x16,0x29);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x13, 0x36,0x2C,0x2E,0x3C,0x38,0x35,0x35,0x32,0x2E,0x1D,0x2B,0x21,0x16,0x29);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x30, 0x0A);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02,0x4F);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0B,0x40);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12,0x3E);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x13,0x78);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x30, 0x0D);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0D,0x04); //0x0C, 0x04mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x10,0x0C);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x11,0x0C);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12,0x0C);mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x13,0x0C);mipi_dsi_msleep(&dsi_ctx, 120);mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx);mipi_dsi_dcs_set_display_on_multi(&dsi_ctx);printk("JD9165: END OF LCD INIT SEQUENCE 2 \n");return dsi_ctx.accum_err;};static const struct jadard_panel_desc jd9165_desc = {.mode = {.clock= 51200,.hdisplay= 1024,.hsync_start= 1024 + 160,.hsync_end= 1024 + 160 + 40,.htotal= 1024 + 160 + 40 + 160,.vdisplay= 600,.vsync_start= 600 + 23,.vsync_end= 600 + 23 + 10,.vtotal= 600 + 23 + 10 + 12,.width_mm= 62,.height_mm= 110,.type= DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,},.lanes = 2,.format = MIPI_DSI_FMT_RGB888,.init = jd9165_init_cmds,};static int jadard_dsi_probe(struct mipi_dsi_device *dsi){struct device *dev = &dsi->dev;const struct jadard_panel_desc *desc;struct jadard *jadard;int ret;printk("JD9165: DSI PROBE\n");jadard = devm_kzalloc(&dsi->dev, sizeof(*jadard), GFP_KERNEL);if (!jadard)return -ENOMEM;desc = of_device_get_match_data(dev);dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_NO_EOT_PACKET;dsi->format = desc->format;dsi->lanes = desc->lanes;jadard->reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);if (IS_ERR(jadard->reset)) {DRM_DEV_ERROR(&dsi->dev, "JD9165: failed to get our reset GPIO\n");return PTR_ERR(jadard->reset);}jadard->vdd = devm_regulator_get(dev, "vdd");if (IS_ERR(jadard->vdd)) {DRM_DEV_ERROR(&dsi->dev, "JD9165: failed to get vdd regulator\n");return PTR_ERR(jadard->vdd);}jadard->vccio = devm_regulator_get(dev, "vccio");if (IS_ERR(jadard->vccio)) {DRM_DEV_ERROR(&dsi->dev, "JD9165: failed to get vccio regulator\n");return PTR_ERR(jadard->vccio);}drm_panel_init(&jadard->panel, dev, &jadard_funcs, DRM_MODE_CONNECTOR_DSI);ret = of_drm_get_panel_orientation(dev->of_node, &jadard->orientation);if (ret < 0)return dev_err_probe(dev, ret, "JD9165: failed to get orientation\n");ret = drm_panel_of_backlight(&jadard->panel);if (ret)return ret;drm_panel_add(&jadard->panel);mipi_dsi_set_drvdata(dsi, jadard);jadard->dsi = dsi;jadard->desc = desc;ret = mipi_dsi_attach(dsi);if (ret < 0)drm_panel_remove(&jadard->panel);return ret;}static void jadard_dsi_remove(struct mipi_dsi_device *dsi){struct jadard *jadard = mipi_dsi_get_drvdata(dsi);mipi_dsi_detach(dsi);drm_panel_remove(&jadard->panel);}static const struct of_device_id jadard_of_match[] = {{.compatible = "jadard,jd9165",.data = &jd9165_desc},{ /* sentinel */ }};MODULE_DEVICE_TABLE(of, jadard_of_match);static struct mipi_dsi_driver jadard_driver = {.probe = jadard_dsi_probe,.remove = jadard_dsi_remove,.driver = {.name = "jadard-jd9165",.of_match_table = jadard_of_match,},};module_mipi_dsi_driver(jadard_driver);MODULE_AUTHOR("Jagan Teki <jagan@edgeble.ai>");MODULE_AUTHOR("Stephen Chen <stephen@radxa.com>");MODULE_DESCRIPTION("Jadard JD9165 DSI panel");MODULE_LICENSE("GPL");Code:
// JD9365Z with CTP and PCA9536/dts-v1/;/plugin/;/ {compatible = "brcm,bcm2835"; fragment@0 {target = <&i2c_csi_dsi>;__overlay__ {#address-cells = <1>;#size-cells = <0>;status = "okay";pca: pca@41 {compatible = "nxp,pca9536";reg = <0x41>;gpio-controller;#gpio-cells = <2>;status = "okay";};};};fragment@1 {target = <&dsi0>;__overlay__{status = "okay";#address-cells = <1>;#size-cells = <0>;port {dsi_out_port:endpoint {remote-endpoint = <&panel_dsi_port>;};};jd9165:jd9165@0 {compatible = "jadard,jd9165";status = "okay";reg = <0>;reset-gpios = <&gpio 8 1>;port {panel_dsi_port: endpoint {remote-endpoint = <&dsi_out_port>;};};};};};fragment@2 {target = <&i2c_csi_dsi>;__overlay__ {#address-cells = <1>;#size-cells = <0>;ft6236@38 {compatible = "focaltech,ft6236";reg = <0x38>;pinctrl-names = "default";interrupt-parent = <&gpio>;interrupts = <17 2>; /* rising edge */touchscreen-size-y = <1280>;touchscreen-size-x = <720>;touchscreen-inverted-y = <1>;touchscreen-inverted-x = <1>;reset-gpios = <&gpio 8 1>; /* active low */};};};};Signal measured on the D0 from RPi:Signal measured on the D0 from ESP32:
Zoomed ESP32 command, It looks like the command is being sent after the vertical front porch and before the vertical back porch.
Statistics: Posted by xpp — Mon Jun 02, 2025 6:53 am