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

Interfacing (DSI, CSI, I2C, etc.) • Re: MIPI DSI Display Jadard JD9165

$
0
0
No, we are using the development board for ESP32,

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: -110
Full log:

Code:

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.11
Modified driver:

Code:

// 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");
Modified overlay:

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 */};};};};
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:
1. RPi MIPI signal.jpg
Signal measured on the D0 from ESP32:
2.ESP32_MIPI_additional_packet.jpg

Zoomed ESP32 command, It looks like the command is being sent after the vertical front porch and before the vertical back porch.
6.ESP32_MIPI_pocket_zoomed2.jpg

Statistics: Posted by xpp — Mon Jun 02, 2025 6:53 am



Viewing all articles
Browse latest Browse all 8037

Trending Articles