On 11.04.2022 16:39, Adam Ford wrote:
On Mon, Apr 11, 2022 at 8:56 AM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 08.04.2022 18:20, Jagan Teki wrote:
This series supports common bridge support for Samsung MIPI DSIM which is used in Exynos and i.MX8MM SoC's.
Previous RFC can be available here [1].
The final bridge supports both the Exynos and i.MX8MM DSI devices.
On, summary this patch-set break the entire DSIM driver into
- platform specific glue code for platform ops, component_ops.
- common bridge driver which handle platform glue init and invoke.
Patch 0000: Samsung DSIM bridge
Patch 0001: platform init flag via driver_data
Patch 0002/9: bridge fixes, atomic API's
Patch 0010: document fsl,imx8mm-mipi-dsim
Patch 0011: add i.MX8MM DSIM support
Tested in Engicam i.Core MX8M Mini SoM.
Anyone interested, please have a look on this repo [2]
[2] https://protect2.fireeye.com/v1/url?k=930e329a-f28527b5-930fb9d5-74fe485cbfe... [1] https://lore.kernel.org/linux-arm-kernel/YP2j9k5SrZ2%2Fo2%2F5@ravnborg.org/T...
Any inputs?
I wanted to test this on the Exynos, but I wasn't able to find what base should I apply this patchset. I've tried linux-next as well as 95a2441e4347 ("drm: exynos: dsi: Switch to atomic funcs").
Please note that pointing a proper base for the patchset is really essential if you really want others to test it.
Can you clone his repo and test that? He posted it above. I was going to clone it at some point this week to give it a try.
Okay, my fault. I've missed that.
There is a trivial compilation issue, drivers/gpu/drm/exynos/exynos_drm_dsi.c lacks "#include <linux/gpio/consumer.h>" after conversion. Besides that, it simply nukes on the simplest Exynos setup (exynos4210-trats) during the initialization:
[drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 00000048 [00000048] *pgd=00000000 Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.17.0-rc2-00577-g22e968113668-dirty #11635 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at exynos_dsi_bind+0x14/0x3c LR is at component_bind_all+0x130/0x290 pc : [<c06924e0>] lr : [<c06b0f6c>] psr: 60000113 sp : c1cafcb8 ip : 00000002 fp : c0f4a53c r10: c135e6a8 r9 : c1efd800 r8 : 00000000 r7 : c26d2100 r6 : c2c69fc0 r5 : 00000018 r4 : 00000000 r3 : c06924cc r2 : 00000002 r1 : 00000000 r0 : c1efd800 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 00000051 Register r0 information: slab kmalloc-2k start c1efd800 pointer offset 0 size 2048 Register r1 information: NULL pointer Register r2 information: non-paged memory Register r3 information: non-slab/vmalloc memory Register r4 information: NULL pointer Register r5 information: non-paged memory Register r6 information: slab kmalloc-64 start c2c69fc0 pointer offset 0 size 64 Register r7 information: slab kmalloc-64 start c26d2100 pointer offset 0 size 64 Register r8 information: NULL pointer Register r9 information: slab kmalloc-2k start c1efd800 pointer offset 0 size 2048 Register r10 information: non-slab/vmalloc memory Register r11 information: non-slab/vmalloc memory Register r12 information: non-paged memory Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) Stack: (0xc1cafcb8 to 0xc1cb0000) ... exynos_dsi_bind from component_bind_all+0x130/0x290 component_bind_all from exynos_drm_bind+0xe8/0x194 exynos_drm_bind from try_to_bring_up_master+0x208/0x2d0 try_to_bring_up_master from component_master_add_with_match+0xd0/0x104 component_master_add_with_match from exynos_drm_platform_probe+0xe8/0x118 exynos_drm_platform_probe from platform_probe+0x80/0xc0 platform_probe from really_probe+0xfc/0x440 really_probe from __driver_probe_device+0xa4/0x204 __driver_probe_device from driver_probe_device+0x34/0xd4 driver_probe_device from __driver_attach+0x114/0x184 __driver_attach from bus_for_each_dev+0x64/0xb0 bus_for_each_dev from bus_add_driver+0x170/0x20c bus_add_driver from driver_register+0x78/0x10c driver_register from exynos_drm_init+0xe0/0x14c exynos_drm_init from do_one_initcall+0x6c/0x3a4 do_one_initcall from kernel_init_freeable+0x1c4/0x214 kernel_init_freeable from kernel_init+0x18/0x12c kernel_init from ret_from_fork+0x14/0x2c Exception stack(0xc1caffb0 to 0xc1cafff8) ffa0: 00000000 00000000 00000000 00000000 ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 Code: e5904040 e1a00002 e3a02002 e1a01004 (e5945048) ---[ end trace 0000000000000000 ]--- Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b CPU1: stopping CPU: 1 PID: 0 Comm: swapper/1 Tainted: G D 5.17.0-rc2-00577-g22e968113668-dirty #11635 Hardware name: Samsung Exynos (Flattened Device Tree) unwind_backtrace from show_stack+0x10/0x14 show_stack from dump_stack_lvl+0x58/0x70 dump_stack_lvl from do_handle_IPI+0x2ec/0x36c do_handle_IPI from ipi_handler+0x18/0x20 ipi_handler from handle_percpu_devid_irq+0xd0/0x394 handle_percpu_devid_irq from generic_handle_domain_irq+0x44/0x88 generic_handle_domain_irq from gic_handle_irq+0x88/0xac gic_handle_irq from generic_handle_arch_irq+0x58/0x78 generic_handle_arch_irq from __irq_svc+0x54/0x88 Exception stack(0xc1cd1f48 to 0xc1cd1f90) 1f40: 00000001 c0eff5a4 00000001 c011ca80 c1208f0c c1353420 1f60: 00000000 c1d8d000 00000000 c0f34234 c1d8d000 00000000 c0eeee98 c1cd1f98 1f80: c0109144 c0109148 20000013 ffffffff __irq_svc from arch_cpu_idle+0x40/0x44 arch_cpu_idle from default_idle_call+0x74/0x2c4 default_idle_call from do_idle+0x1cc/0x284 do_idle from cpu_startup_entry+0x18/0x1c cpu_startup_entry from 0x401018b4 ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---
I will try to take a look into this later in the evening.
Best regards