[PATCH v5 0/5] drm: exynos: dsi: Convert drm bridge

Jagan Teki jagan at amarulasolutions.com
Tue Feb 22 08:57:22 UTC 2022


Hi Marek,

On Tue, Feb 22, 2022 at 12:19 PM Jagan Teki <jagan at amarulasolutions.com> wrote:
>
> On Wed, Feb 2, 2022 at 9:54 PM Jagan Teki <jagan at amarulasolutions.com> wrote:
> >
> > Hi Marek,
> >
> > On Fri, Jan 21, 2022 at 6:14 PM Marek Szyprowski
> > <m.szyprowski at samsung.com> wrote:
> > >
> > > Hi Jagan,
> > >
> > > On 21.01.2022 12:40, Jagan Teki wrote:
> > > > On Fri, Jan 21, 2022 at 5:06 PM Marek Szyprowski
> > > > <m.szyprowski at samsung.com> wrote:
> > > >> On 17.01.2022 09:42, Jagan Teki wrote:
> > > >>> Updated series about drm bridge conversion of exynos dsi.
> > > >>>
> > > >>> Previous version can be accessible, here [1].
> > > >>>
> > > >>> Patch 1: connector reset
> > > >>>
> > > >>> Patch 2: panel_bridge API
> > > >>>
> > > >>> Patch 3: bridge conversion
> > > >>>
> > > >>> Patch 4: atomic functions
> > > >>>
> > > >>> Patch 5: DSI init in pre_enable
> > > >>>
> > > >>> Apply below patches to test on Exynos DSI:
> > > >>> - https://protect2.fireeye.com/v1/url?k=53bdf119-0c26c815-53bc7a56-000babff3563-792dc1a6b54db43e&q=1&e=9a4ea3ad-9e7d-443d-ad21-ce694a7cd352&u=https%3A%2F%2Fpatchwork.amarulasolutions.com%2Fpatch%2F1825%2F
> > > >>> - https://protect2.fireeye.com/v1/url?k=cb269ea3-94bda7af-cb2715ec-000babff3563-e6f545b4a32558ba&q=1&e=9a4ea3ad-9e7d-443d-ad21-ce694a7cd352&u=https%3A%2F%2Fpatchwork.amarulasolutions.com%2Fpatch%2F1838%2F
> > > >>>
> > > >>> [1] https://protect2.fireeye.com/v1/url?k=ee1dae12-b186971e-ee1c255d-000babff3563-83eaf8e86e67e0d9&q=1&e=9a4ea3ad-9e7d-443d-ad21-ce694a7cd352&u=https%3A%2F%2Fpatchwork.amarulasolutions.com%2Fcover%2F1826%2F
> > > >>>
> > > >>> Any inputs?
> > > >> I've tried a few times, but I am unable to find what is the base for
> > > >> this patchset. I always get a conflict around exynos_dsi_mode_set()
> > > >> function. I've tried current linux-next, drm-next, v5.16-rc1 and v5.16.
> > > >> It looks that I must have missed applying some patch before playing with
> > > >> this.
> > > >>
> > > >> I've also tried to apply only the last patch, as if I got it right, it
> > > >> is the only difference between v4 and v5 and updated 'drm: of: Lookup if
> > > >> child node has panel or bridge'. In such case the board freezes during
> > > >> the drm initialization.
> > > > Please use drm-misc/drm-misc-next with below patches and then apply this series.
> > >
> > > I don't have a good news. It doesn't work. The last patch even breaks
> > > DSI operation:
> > >
> > > [    4.520276] [drm] Exynos DRM: using 13800000.decon device for DMA
> > > mapping operations
> > > [    4.520578] exynos-drm exynos-drm: bound 13800000.decon (ops
> > > decon_component_ops)
> > > [    4.580473] exynos-drm exynos-drm: bound 13880000.decon (ops
> > > decon_component_ops)
> > > [    4.580726] exynos-drm exynos-drm: bound 13930000.mic (ops
> > > exynos_mic_component_ops)
> > > [    4.584304] exynos-dsi 13900000.dsi: [drm:exynos_dsi_host_attach]
> > > Attached s6e3hf2 device
> > > [    4.585141] exynos-drm exynos-drm: bound 13900000.dsi (ops
> > > exynos_dsi_component_ops)
> > > [    4.593189] rc_core: Couldn't load IR keymap rc-cec
> > > [    4.594133] Registered IR keymap rc-empty
> > > [    4.598760] rc rc0: sii8620 as /devices/virtual/rc/rc0
> > > [    4.605219] input: sii8620 as /devices/virtual/rc/rc0/input1
> > > [    4.610238] exynos-drm exynos-drm: bound 13970000.hdmi (ops
> > > hdmi_component_ops)
> > > [    4.920038] exynos-dsi 13900000.dsi: xfer timed out: 39 03 00 00 f0 5a 5a
> > > [    5.024033] ------------[ cut here ]------------
> > > [    5.024055] [CRTC:49:crtc-0] vblank wait timed out
> > > [    5.024129] WARNING: CPU: 4 PID: 151 at
> > > drivers/gpu/drm/drm_atomic_helper.c:1530
> > > drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [    5.024171] Modules linked in:
> > > [    5.024195] CPU: 4 PID: 151 Comm: kworker/4:7 Not tainted 5.16.0-rc5+
> > > #11232
> > > [    5.024219] Hardware name: Samsung TM2E board (DT)
> > > [    5.024232] Workqueue: events output_poll_execute
> > > [    5.024262] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS
> > > BTYPE=--)
> > > [    5.024285] pc : drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [    5.024308] lr : drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [    5.024327] sp : ffff800013b5b970
> > > [    5.024340] x29: ffff800013b5b970 x28: 0000000000000000 x27:
> > > ffff00002437e400
> > > [    5.024391] x26: 0000000000000000 x25: 0000000000000000 x24:
> > > ffff800011aa0c60
> > > [    5.024437] x23: 0000000000000001 x22: ffff000025113000 x21:
> > > 0000000000000001
> > > [    5.024482] x20: ffff0000316fc800 x19: 0000000000000000 x18:
> > > ffffffffffffffff
> > > [    5.024526] x17: 0048000000000a11 x16: 0000000000000028 x15:
> > > ffff800011b66df8
> > > [    5.024571] x14: 0000000000000000 x13: 0a74756f2064656d x12:
> > > 6974207469617720
> > > [    5.024615] x11: 656820747563205b x10: 000000000000003a x9 :
> > > 000000007e82f035
> > > [    5.024661] x8 : ffff800011b66df8 x7 : ffff800013b5b740 x6 :
> > > 0000000000000001
> > > [    5.024704] x5 : 0000000000000001 x4 : 0000000000000000 x3 :
> > > 0000000000000007
> > > [    5.024747] x2 : ffff800012524ea0 x1 : 68a66f6a76622200 x0 :
> > > 0000000000000000
> > > [    5.024791] Call trace:
> > > [    5.024802] drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [    5.024825]  drm_atomic_helper_commit_tail_rpm+0x60/0x78
> > > [    5.024845]  commit_tail+0x9c/0x170
> > > [    5.024864]  drm_atomic_helper_commit+0x188/0x3a0
> > > [    5.024884]  drm_atomic_commit+0x54/0x68
> > > [    5.024906]  drm_client_modeset_commit_atomic+0x260/0x288
> > > [    5.024927]  drm_client_modeset_commit_locked+0x54/0x1c0
> > > [    5.024945]  drm_client_modeset_commit+0x2c/0x50
> > > [    5.024962] __drm_fb_helper_restore_fbdev_mode_unlocked+0x88/0xf8
> > > [    5.024983]  drm_fb_helper_set_par+0x38/0x70
> > > [    5.025000]  drm_fb_helper_hotplug_event.part.29+0xb0/0xe0
> > > [    5.025018]  drm_fb_helper_output_poll_changed+0x30/0x40
> > > [    5.025035]  drm_kms_helper_hotplug_event+0x28/0x40
> > > [    5.025053]  output_poll_execute+0xc4/0x1f0
> > > [    5.025071]  process_one_work+0x29c/0x6e8
> > > [    5.025090]  worker_thread+0x48/0x460
> > > [    5.025106]  kthread+0x154/0x188
> > > [    5.025128]  ret_from_fork+0x10/0x20
> > > [    5.025148] irq event stamp: 878
> > > [    5.025160] hardirqs last  enabled at (877): [<ffff80001010e9fc>]
> > > vprintk_emit+0x2bc/0x2f8
> > > [    5.025188] hardirqs last disabled at (878): [<ffff80001100fccc>]
> > > el1_dbg+0x24/0x88
> > > [    5.025214] softirqs last  enabled at (206): [<ffff800010010488>]
> > > _stext+0x488/0x5cc
> > > [    5.025233] softirqs last disabled at (201): [<ffff800010095718>]
> > > irq_exit_rcu+0x168/0x1a8
> > > [    5.025256] ---[ end trace 458e29685f12760b ]---
> > > [   15.240069] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   15.240131] exynos-drm exynos-drm: [drm] *ERROR* [CRTC:49:crtc-0]
> > > commit wait timed out
> > > [   25.480001] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   25.480031] exynos-drm exynos-drm: [drm] *ERROR* [CONNECTOR:68:DSI-1]
> > > commit wait timed out
> > > [   35.720001] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   35.720031] exynos-drm exynos-drm: [drm] *ERROR* [PLANE:37:plane-2]
> > > commit wait timed out
> > > [   35.824013] ------------[ cut here ]------------
> > > [   35.824037] [CRTC:49:crtc-0] vblank wait timed out
> > > [   35.824116] WARNING: CPU: 7 PID: 74 at
> > > drivers/gpu/drm/drm_atomic_helper.c:1530
> > > drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   35.824155] Modules linked in:
> > > [   35.824180] CPU: 7 PID: 74 Comm: kworker/u16:1 Tainted: G
> > > W         5.16.0-rc5+ #11232
> > > [   35.824205] Hardware name: Samsung TM2E board (DT)
> > > [   35.824221] Workqueue: events_unbound deferred_probe_work_func
> > > [   35.824255] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS
> > > BTYPE=--)
> > > [   35.824281] pc : drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   35.824304] lr : drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   35.824325] sp : ffff80001386b380
> > > [   35.824339] x29: ffff80001386b380 x28: 0000000000000000 x27:
> > > ffff000023c91c00
> > > [   35.824395] x26: 0000000000000000 x25: 0000000000000000 x24:
> > > ffff800011aa0c60
> > > [   35.824446] x23: 0000000000000001 x22: ffff000025113000 x21:
> > > 0000000000000001
> > > [   35.824495] x20: ffff0000316fc800 x19: 0000000000000000 x18:
> > > ffffffffffffffff
> > > [   35.824544] x17: 0048000000000a11 x16: 0000000000000028 x15:
> > > ffff800011b66df8
> > > [   35.824594] x14: 0000000000000000 x13: 0a74756f2064656d x12:
> > > 6974207469617720
> > > [   35.824643] x11: 656820747563205b x10: 000000000000003a x9 :
> > > 0000000088c3aa19
> > > [   35.824693] x8 : ffff800011b66df8 x7 : ffff80001386b150 x6 :
> > > 0000000000000001
> > > [   35.824741] x5 : 0000000000000001 x4 : 0000000000000000 x3 :
> > > 000000000000000c
> > > [   35.824788] x2 : ffff800012524ea0 x1 : 68a66f6a76622200 x0 :
> > > 0000000000000000
> > > [   35.824838] Call trace:
> > > [   35.824851] drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   35.824875]  drm_atomic_helper_commit_tail_rpm+0x60/0x78
> > > [   35.824898]  commit_tail+0x9c/0x170
> > > [   35.824918]  drm_atomic_helper_commit+0x188/0x3a0
> > > [   35.824939]  drm_atomic_commit+0x54/0x68
> > > [   35.824962]  drm_client_modeset_commit_atomic+0x260/0x288
> > > [   35.824983]  drm_client_modeset_commit_locked+0x54/0x1c0
> > > [   35.825003]  drm_client_modeset_commit+0x2c/0x50
> > > [   35.825023] __drm_fb_helper_restore_fbdev_mode_unlocked+0x88/0xf8
> > > [   35.825043]  drm_fb_helper_set_par+0x38/0x70
> > > [   35.825062]  fbcon_init+0x440/0x4e0
> > > [   35.825085]  visual_init+0xb0/0x108
> > > [   35.825107]  do_bind_con_driver+0x1cc/0x3c0
> > > [   35.825127]  do_take_over_console+0x148/0x1d8
> > > [   35.825148]  do_fbcon_takeover+0x70/0xe8
> > > [   35.825170]  fbcon_fb_registered+0x13c/0x150
> > > [   35.825192]  register_framebuffer+0x1c4/0x340
> > > [   35.825211] __drm_fb_helper_initial_config_and_unlock+0x360/0x548
> > > [   35.825239]  drm_fb_helper_initial_config+0x44/0x50
> > > [   35.825257]  exynos_drm_fbdev_init+0x90/0x100
> > > [   35.825282]  exynos_drm_bind+0x164/0x1a8
> > > [   35.825303]  try_to_bring_up_master+0x15c/0x1c8
> > > [   35.825326]  __component_add+0xa8/0x170
> > > [   35.825348]  component_add+0x10/0x18
> > > [   35.825370]  hdmi_probe+0x43c/0x6d0
> > > [   35.825389]  platform_probe+0x90/0xd8
> > > [   35.825412]  really_probe+0xb4/0x2e0
> > > [   35.825432]  __driver_probe_device+0x78/0xd8
> > > [   35.825452]  driver_probe_device+0x40/0x110
> > > [   35.825473]  __device_attach_driver+0x9c/0xd8
> > > [   35.825494]  bus_for_each_drv+0x70/0xc8
> > > [   35.825513]  __device_attach+0xec/0x150
> > > [   35.825533]  device_initial_probe+0x10/0x18
> > > [   35.825556]  bus_probe_device+0x94/0xa0
> > > [   35.825575]  deferred_probe_work_func+0x84/0xc0
> > > [   35.825595]  process_one_work+0x29c/0x6e8
> > > [   35.825614]  worker_thread+0x21c/0x460
> > > [   35.825631]  kthread+0x154/0x188
> > > [   35.825653]  ret_from_fork+0x10/0x20
> > > [   35.825673] irq event stamp: 162880
> > > [   35.825687] hardirqs last  enabled at (162879): [<ffff80001010e9fc>]
> > > vprintk_emit+0x2bc/0x2f8
> > > [   35.825716] hardirqs last disabled at (162880): [<ffff80001100fccc>]
> > > el1_dbg+0x24/0x88
> > > [   35.825742] softirqs last  enabled at (162726): [<ffff800010010488>]
> > > _stext+0x488/0x5cc
> > > [   35.825763] softirqs last disabled at (162721): [<ffff800010095718>]
> > > irq_exit_rcu+0x168/0x1a8
> > > [   35.825787] ---[ end trace 458e29685f12760c ]---
> > > [   45.960007] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   45.960039] exynos-drm exynos-drm: [drm] *ERROR* [CRTC:49:crtc-0]
> > > commit wait timed out
> > > [   56.200000] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   56.200030] exynos-drm exynos-drm: [drm] *ERROR* [CONNECTOR:68:DSI-1]
> > > commit wait timed out
> > > [   66.440000] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   66.440030] exynos-drm exynos-drm: [drm] *ERROR* [PLANE:37:plane-2]
> > > commit wait timed out
> > > [   66.544003] ------------[ cut here ]------------
> > > [   66.544027] [CRTC:49:crtc-0] vblank wait timed out
> > > [   66.544102] WARNING: CPU: 7 PID: 74 at
> > > drivers/gpu/drm/drm_atomic_helper.c:1530
> > > drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   66.544138] Modules linked in:
> > > [   66.544162] CPU: 7 PID: 74 Comm: kworker/u16:1 Tainted: G
> > > W         5.16.0-rc5+ #11232
> > > [   66.544186] Hardware name: Samsung TM2E board (DT)
> > > [   66.544200] Workqueue: events_unbound deferred_probe_work_func
> > > [   66.544233] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS
> > > BTYPE=--)
> > > [   66.544255] pc : drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   66.544277] lr : drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   66.544297] sp : ffff80001386b160
> > > [   66.544310] x29: ffff80001386b160 x28: 0000000000000000 x27:
> > > ffff000023d83500
> > > [   66.544363] x26: 0000000000000000 x25: 0000000000000000 x24:
> > > ffff800011aa0c60
> > > [   66.544412] x23: 0000000000000001 x22: ffff000025113000 x21:
> > > 0000000000000001
> > > [   66.544461] x20: ffff0000316fc800 x19: 0000000000000000 x18:
> > > ffffffffffffffff
> > > [   66.544509] x17: 0048000000000a11 x16: 0a020a010a110a00 x15:
> > > ffff800011b66df8
> > > [   66.544558] x14: 0000000000000000 x13: 0a74756f2064656d x12:
> > > 6974207469617720
> > > [   66.544606] x11: 656820747563205b x10: 000000000000003a x9 :
> > > 0000000088c3aa19
> > > [   66.544655] x8 : ffff800011b66df8 x7 : ffff80001386af30 x6 :
> > > 0000000000000001
> > > [   66.544702] x5 : 0000000000000001 x4 : 0000000000000000 x3 :
> > > 000000000000000c
> > > [   66.544749] x2 : ffff800012524ea0 x1 : 68a66f6a76622200 x0 :
> > > 0000000000000000
> > > [   66.544796] Call trace:
> > > [   66.544808] drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   66.544830]  drm_atomic_helper_commit_tail_rpm+0x60/0x78
> > > [   66.544852]  commit_tail+0x9c/0x170
> > > [   66.544871]  drm_atomic_helper_commit+0x188/0x3a0
> > > [   66.544892]  drm_atomic_commit+0x54/0x68
> > > [   66.544915]  drm_client_modeset_commit_atomic+0x260/0x288
> > > [   66.544935]  drm_client_modeset_commit_locked+0x54/0x1c0
> > > [   66.544954]  drm_fb_helper_pan_display+0xb0/0x1c0
> > > [   66.544973]  fb_pan_display+0xb8/0x158
> > > [   66.544990]  bit_update_start+0x1c/0x40
> > > [   66.545013]  fbcon_switch+0x308/0x458
> > > [   66.545034]  redraw_screen+0x158/0x238
> > > [   66.545056]  fbcon_prepare_logo+0x3cc/0x440
> > > [   66.545077]  fbcon_init+0x380/0x4e0
> > > [   66.545098]  visual_init+0xb0/0x108
> > > [   66.545118]  do_bind_con_driver+0x1cc/0x3c0
> > > [   66.545137]  do_take_over_console+0x148/0x1d8
> > > [   66.545158]  do_fbcon_takeover+0x70/0xe8
> > > [   66.545178]  fbcon_fb_registered+0x13c/0x150
> > > [   66.545199]  register_framebuffer+0x1c4/0x340
> > > [   66.545217] __drm_fb_helper_initial_config_and_unlock+0x360/0x548
> > > [   66.545244]  drm_fb_helper_initial_config+0x44/0x50
> > > [   66.545263]  exynos_drm_fbdev_init+0x90/0x100
> > > [   66.545286]  exynos_drm_bind+0x164/0x1a8
> > > [   66.545306]  try_to_bring_up_master+0x15c/0x1c8
> > > [   66.545329]  __component_add+0xa8/0x170
> > > [   66.545350]  component_add+0x10/0x18
> > > [   66.545371]  hdmi_probe+0x43c/0x6d0
> > > [   66.545389]  platform_probe+0x90/0xd8
> > > [   66.545411]  really_probe+0xb4/0x2e0
> > > [   66.545431]  __driver_probe_device+0x78/0xd8
> > > [   66.545452]  driver_probe_device+0x40/0x110
> > > [   66.545472]  __device_attach_driver+0x9c/0xd8
> > > [   66.545493]  bus_for_each_drv+0x70/0xc8
> > > [   66.545513]  __device_attach+0xec/0x150
> > > [   66.545532]  device_initial_probe+0x10/0x18
> > > [   66.545553]  bus_probe_device+0x94/0xa0
> > > [   66.545573]  deferred_probe_work_func+0x84/0xc0
> > > [   66.545592]  process_one_work+0x29c/0x6e8
> > > [   66.545612]  worker_thread+0x21c/0x460
> > > [   66.545628]  kthread+0x154/0x188
> > > [   66.545651]  ret_from_fork+0x10/0x20
> > > [   66.545671] irq event stamp: 163148
> > > [   66.545684] hardirqs last  enabled at (163147): [<ffff80001010e9fc>]
> > > vprintk_emit+0x2bc/0x2f8
> > > [   66.545712] hardirqs last disabled at (163148): [<ffff80001100fccc>]
> > > el1_dbg+0x24/0x88
> > > [   66.545735] softirqs last  enabled at (162726): [<ffff800010010488>]
> > > _stext+0x488/0x5cc
> > > [   66.545754] softirqs last disabled at (162721): [<ffff800010095718>]
> > > irq_exit_rcu+0x168/0x1a8
> > > [   66.545778] ---[ end trace 458e29685f12760d ]---
> > > [   66.589975] Console: switching to colour frame buffer device 200x160
> > > [   76.680050] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   76.680082] exynos-drm exynos-drm: [drm] *ERROR* [CRTC:49:crtc-0]
> > > commit wait timed out
> > > [   86.920001] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   86.920030] exynos-drm exynos-drm: [drm] *ERROR* [CONNECTOR:68:DSI-1]
> > > commit wait timed out
> > > [   97.160001] exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
> > > [   97.160029] exynos-drm exynos-drm: [drm] *ERROR* [PLANE:37:plane-2]
> > > commit wait timed out
> > > [   97.264005] ------------[ cut here ]------------
> > > [   97.264029] [CRTC:49:crtc-0] vblank wait timed out
> > > [   97.264103] WARNING: CPU: 7 PID: 74 at
> > > drivers/gpu/drm/drm_atomic_helper.c:1530
> > > drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   97.264139] Modules linked in:
> > > [   97.264162] CPU: 7 PID: 74 Comm: kworker/u16:1 Tainted: G
> > > W         5.16.0-rc5+ #11232
> > > [   97.264185] Hardware name: Samsung TM2E board (DT)
> > > [   97.264199] Workqueue: events_unbound deferred_probe_work_func
> > > [   97.264231] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS
> > > BTYPE=--)
> > > [   97.264254] pc : drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   97.264277] lr : drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   97.264298] sp : ffff80001386b290
> > > [   97.264310] x29: ffff80001386b290 x28: 0000000000000000 x27:
> > > ffff0000250a6a00
> > > [   97.264361] x26: 0000000000000000 x25: 0000000000000000 x24:
> > > ffff800011aa0c60
> > > [   97.264409] x23: 0000000000000001 x22: ffff000025113000 x21:
> > > 0000000000000001
> > > [   97.264457] x20: ffff0000316fc800 x19: 0000000000000000 x18:
> > > ffffffffffffffff
> > > [   97.264505] x17: 0048000000000a11 x16: 0a020a010a110a00 x15:
> > > ffff800011b66df8
> > > [   97.264554] x14: 0000000000000000 x13: 0a74756f2064656d x12:
> > > 6974207469617720
> > > [   97.264603] x11: 656820747563205b x10: 000000000000003a x9 :
> > > 0000000088c3aa19
> > > [   97.264652] x8 : ffff800011b66df8 x7 : ffff80001386b060 x6 :
> > > 0000000000000001
> > > [   97.264699] x5 : 0000000000000001 x4 : 0000000000000000 x3 :
> > > 000000000000000c
> > > [   97.264746] x2 : ffff800012524ea0 x1 : 68a66f6a76622200 x0 :
> > > 0000000000000000
> > > [   97.264794] Call trace:
> > > [   97.264806] drm_atomic_helper_wait_for_vblanks.part.24+0x298/0x2a8
> > > [   97.264829]  drm_atomic_helper_commit_tail_rpm+0x60/0x78
> > > [   97.264852]  commit_tail+0x9c/0x170
> > > [   97.264872]  drm_atomic_helper_commit+0x188/0x3a0
> > > [   97.264892]  drm_atomic_commit+0x54/0x68
> > > [   97.264915]  drm_client_modeset_commit_atomic+0x260/0x288
> > > [   97.264936]  drm_client_modeset_commit_locked+0x54/0x1c0
> > > [   97.264955]  drm_fb_helper_pan_display+0xb0/0x1c0
> > > [   97.264974]  fb_pan_display+0xb8/0x158
> > > [   97.264991]  bit_update_start+0x1c/0x40
> > > [   97.265014]  fbcon_switch+0x308/0x458
> > > [   97.265034]  redraw_screen+0x158/0x238
> > > [   97.265056]  do_bind_con_driver+0x2d0/0x3c0
> > > [   97.265075]  do_take_over_console+0x148/0x1d8
> > > [   97.265096]  do_fbcon_takeover+0x70/0xe8
> > > [   97.265117]  fbcon_fb_registered+0x13c/0x150
> > > [   97.265138]  register_framebuffer+0x1c4/0x340
> > > [   97.265156] __drm_fb_helper_initial_config_and_unlock+0x360/0x548
> > > [   97.265183]  drm_fb_helper_initial_config+0x44/0x50
> > > [   97.265202]  exynos_drm_fbdev_init+0x90/0x100
> > > [   97.265225]  exynos_drm_bind+0x164/0x1a8
> > > [   97.265246]  try_to_bring_up_master+0x15c/0x1c8
> > > [   97.265268]  __component_add+0xa8/0x170
> > > [   97.265289]  component_add+0x10/0x18
> > > [   97.265310]  hdmi_probe+0x43c/0x6d0
> > > [   97.265327]  platform_probe+0x90/0xd8
> > > [   97.265349]  really_probe+0xb4/0x2e0
> > > [   97.265368]  __driver_probe_device+0x78/0xd8
> > > [   97.265388]  driver_probe_device+0x40/0x110
> > > [   97.265408]  __device_attach_driver+0x9c/0xd8
> > > [   97.265428]  bus_for_each_drv+0x70/0xc8
> > > [   97.265446]  __device_attach+0xec/0x150
> > > [   97.265465]  device_initial_probe+0x10/0x18
> > > [   97.265485]  bus_probe_device+0x94/0xa0
> > > [   97.265505]  deferred_probe_work_func+0x84/0xc0
> > > [   97.265524]  process_one_work+0x29c/0x6e8
> > > [   97.265543]  worker_thread+0x21c/0x460
> > > [   97.265559]  kthread+0x154/0x188
> > > [   97.265580]  ret_from_fork+0x10/0x20
> > > [   97.265601] irq event stamp: 163438
> > > [   97.265613] hardirqs last  enabled at (163437): [<ffff80001010e9fc>]
> > > vprintk_emit+0x2bc/0x2f8
> > > [   97.265641] hardirqs last disabled at (163438): [<ffff80001100fccc>]
> > > el1_dbg+0x24/0x88
> > > [   97.265664] softirqs last  enabled at (163174): [<ffff800010010488>]
> > > _stext+0x488/0x5cc
> > > [   97.265684] softirqs last disabled at (163169): [<ffff800010095718>]
> > > irq_exit_rcu+0x168/0x1a8
> > > [   97.265706] ---[ end trace 458e29685f12760e ]---
> > > [   98.742702] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
> > > [   98.752101] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on
> > > minor 0
> >
> > So, MIC-based pipeline SoC's are not working? like
> >
> > Exynos5433 Decon -> Exynos MIC -> Exynos DSI -> s6e3ha2 DSI panel
> >
> > If so, we can attach the add attach in MIC bridge so that it can link
> > the downstream bridge ie DSI.
>
> Any further comments?

Please check the below patch. as I stated, I have moved in_bridge away from DSI.

Author: Jagan Teki <jagan at amarulasolutions.com>
Date:   Tue Feb 22 12:57:00 2022 +0530

    exynos: drm: dsi: Attach in_bridge in MIC driver

    Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>

diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index b7d0a4aead0a..741c046513e8 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1660,11 +1660,6 @@ static int exynos_dsi_of_read_u32(const struct
device_node *np,
        return ret;
 }

-enum {
-       DSI_PORT_IN,
-       DSI_PORT_OUT
-};
-
 static int exynos_dsi_parse_dt(struct exynos_dsi *dsi)
 {
        struct device *dev = dsi->dev;
@@ -1695,8 +1690,6 @@ static int exynos_dsi_bind(struct device *dev,
struct device *master,
        struct exynos_dsi *dsi = dev_get_drvdata(dev);
        struct drm_encoder *encoder = &dsi->encoder;
        struct drm_device *drm_dev = data;
-       struct device_node *in_bridge_node;
-       struct drm_bridge *in_bridge;
        int ret;

        drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
@@ -1707,14 +1700,6 @@ static int exynos_dsi_bind(struct device *dev,
struct device *master,
        if (ret < 0)
                return ret;

-       in_bridge_node = of_graph_get_remote_node(dev->of_node, DSI_PORT_IN, 0);
-       if (in_bridge_node) {
-               in_bridge = of_drm_find_bridge(in_bridge_node);
-               if (in_bridge)
-                       drm_bridge_attach(encoder, in_bridge, NULL, 0);
-               of_node_put(in_bridge_node);
-       }
-
        return mipi_dsi_host_register(&dsi->dsi_host);
 }

diff --git a/drivers/gpu/drm/exynos/exynos_drm_mic.c
b/drivers/gpu/drm/exynos/exynos_drm_mic.c
index 32672bf8ae4a..550811dc0fc6 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_mic.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_mic.c
@@ -102,6 +102,7 @@ struct exynos_mic {
        struct videomode vm;
        struct drm_encoder *encoder;
        struct drm_bridge bridge;
+       struct drm_bridge *next_bridge;

        bool enabled;
 };
@@ -298,12 +299,22 @@ static void mic_pre_enable(struct drm_bridge *bridge)

 static void mic_enable(struct drm_bridge *bridge) { }

+static int mic_attach(struct drm_bridge *bridge,
+                     enum drm_bridge_attach_flags flags)
+{
+       struct exynos_mic *mic = bridge->driver_private;
+
+       return drm_bridge_attach(bridge->encoder, mic->next_bridge,
+                                &mic->bridge, flags);
+}
+
 static const struct drm_bridge_funcs mic_bridge_funcs = {
        .disable = mic_disable,
        .post_disable = mic_post_disable,
        .mode_set = mic_mode_set,
        .pre_enable = mic_pre_enable,
        .enable = mic_enable,
+       .attach = mic_attach,
 };

 static int exynos_mic_bind(struct device *dev, struct device *master,
@@ -377,6 +388,7 @@ static int exynos_mic_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
        struct exynos_mic *mic;
+       struct device_node *remote;
        struct resource res;
        int ret, i;

@@ -420,6 +432,16 @@ static int exynos_mic_probe(struct platform_device *pdev)
                }
        }

+       remote = of_graph_get_remote_node(dev->of_node, 1, 0);
+       mic->next_bridge = of_drm_find_bridge(remote);
+       if (IS_ERR(mic->next_bridge)) {
+                DRM_DEV_ERROR(dev, "mic: Failed to find next bridge\n");
+                ret = PTR_ERR(mic->next_bridge);
+                goto err;
+       }
+
+       of_node_put(remote);
+
        platform_set_drvdata(pdev, mic);

        mic->bridge.funcs = &mic_bridge_funcs;

Repo:
https://github.com/openedev/kernel/tree/exynos-dsi

Thanks,
Jagan.


More information about the dri-devel mailing list