[PATCH v2 00/50] drm/omap: Replace custom display drivers with drm_bridge and drm_panel

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Aug 26 13:51:41 UTC 2019


Hi Tomi,

On Mon, Aug 26, 2019 at 03:15:23PM +0300, Tomi Valkeinen wrote:
> On 20/08/2019 04:16, Laurent Pinchart wrote:
> 
> > The patches can be found at
> > 
> > 	git://linuxtv.org/pinchartl/media.git omapdrm/bridge/devel
> 
> I took your branch, booted AM5 EVM (I see you had the hack dts patch in your branch), and:
> 
> insmod nfs/work/linux/drivers/media/cec/cec.ko
> insmod nfs/work/linux/drivers/video/fbdev/core/cfbcopyarea.ko
> insmod nfs/work/linux/drivers/video/fbdev/core/cfbimgblt.ko
> insmod nfs/work/linux/drivers/video/fbdev/core/cfbfillrect.ko
> insmod nfs/work/linux/drivers/gpu/drm/drm_panel_orientation_quirks.ko
> insmod nfs/work/linux/drivers/gpu/drm/drm.ko
> insmod nfs/work/linux/drivers/gpu/drm/drm_kms_helper.ko
> insmod nfs/work/linux/drivers/gpu/drm/bridge/ti-tfp410.ko
> insmod nfs/work/linux/drivers/gpu/drm/bridge/sii902x.ko
> insmod nfs/work/linux/drivers/gpu/drm/bridge/tc358767.ko
> insmod nfs/work/linux/drivers/gpu/drm/panel/panel-simple.ko
> [   25.487002] panel-simple display: display supply power not found, using dummy regulator
> [   25.495241] ------------[ cut here ]------------
> [   25.499900] WARNING: CPU: 0 PID: 303 at drivers/gpu/drm/panel/panel-simple.c:378 panel_simple_probe+0x34c/0x3b4 [panel_simple]

How am I expected to sneak patches in if you test them ? :-)

This has been introduced by a recent rebase, and I've only tested the
series on the pandaboard since then. It looks like the problem comes
from

commit b8a2948fa2b3a5a6da67fd57aa01c7318d795125
Author: Sean Paul <seanpaul at chromium.org>
Date:   Thu Jul 11 13:34:53 2019 -0700

    drm/panel: simple: Add ability to override typical timing

which breaks our out-of-tree DT. As a short term fix I can simply drop
the panel timings from DT, but I think this issue can affect more
boards, and should thus probably be addressed on the kernel side.

One option is to patch osddisplays_osd070t1718_19ts to specify timings
instead of a fixed mode, but I don't have access to the panel's
datasheet. I'm also concerned this wouldn't scale.

Another option is to avoid the WARN_ON() if the timings parsed from DT
are identifical to the timings in the panel-simple driver. Sean, what's
your opinion ?

> [   25.511691] Modules linked in: panel_simple(+) tc358767 sii902x ti_tfp410 drm_kms_helper drm drm_panel_orientation_quirks cfbfillrect cfbimgblt cfbcopyarea cec
> [   25.526341] CPU: 0 PID: 303 Comm: insmod Tainted: G        W         5.3.0-rc3-01400-g27515343445e #1
> [   25.535602] Hardware name: Generic DRA74X (Flattened Device Tree)
> [   25.541740] [<c01139b4>] (unwind_backtrace) from [<c010da68>] (show_stack+0x10/0x14)
> [   25.549526] [<c010da68>] (show_stack) from [<c0941138>] (dump_stack+0xa8/0xc4)
> [   25.556789] [<c0941138>] (dump_stack) from [<c013a57c>] (__warn.part.3+0xa8/0xd4)
> [   25.564309] [<c013a57c>] (__warn.part.3) from [<c013a700>] (warn_slowpath_null+0x40/0x4c)
> [   25.572540] [<c013a700>] (warn_slowpath_null) from [<bf0b86f0>] (panel_simple_probe+0x34c/0x3b4 [panel_simple])
> [   25.582699] [<bf0b86f0>] (panel_simple_probe [panel_simple]) from [<c05f845c>] (platform_drv_probe+0x48/0x98)
> [   25.592664] [<c05f845c>] (platform_drv_probe) from [<c05f5f4c>] (really_probe+0x100/0x410)
> [   25.600969] [<c05f5f4c>] (really_probe) from [<c05f6428>] (driver_probe_device+0x6c/0x1b4)
> [   25.609273] [<c05f6428>] (driver_probe_device) from [<c05f67c0>] (device_driver_attach+0x58/0x60)
> [   25.618188] [<c05f67c0>] (device_driver_attach) from [<c05f686c>] (__driver_attach+0xa4/0x148)
> [   25.626843] [<c05f686c>] (__driver_attach) from [<c05f3f24>] (bus_for_each_dev+0x70/0xb4)
> [   25.635060] [<c05f3f24>] (bus_for_each_dev) from [<c05f5268>] (bus_add_driver+0x1a8/0x200)
> [   25.643365] [<c05f5268>] (bus_add_driver) from [<c05f7414>] (driver_register+0x74/0x108)
> [   25.651506] [<c05f7414>] (driver_register) from [<bf0aa010>] (panel_simple_init+0x10/0x1000 [panel_simple])
> [   25.661634] ---[ end trace 1bb774fc77a9c1a2 ]---
> [   25.666414] panel-simple display: Reject override mode: panel has a fixed mode
> insmod nfs/work/linux/drivers/gpu/drm/omapdrm/dss/omapdss-base.ko
> insmod nfs/work/linux/drivers/gpu/drm/omapdrm/dss/omapdss.ko
> [   25.846736] DSS: OMAP DSS rev 6.1
> insmod nfs/work/linux/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.ko
> insmod nfs/work/linux/drivers/gpu/drm/omapdrm/omapdrm.ko
> [   26.274382] dmm 4e000000.dmm: workaround for errata i878 in use
> [   26.281981] dmm 4e000000.dmm: initialized all PAT entries
> [   26.289408] ------------[ cut here ]------------
> [   26.294298] WARNING: CPU: 1 PID: 64 at lib/list_debug.c:28 __list_add_valid+0x74/0xb0
> [   26.302166] list_add corruption. prev->next should be next (bf0692bc), but was 6b6b6b6b. (prev=eadcd384).
> [   26.314711] Modules linked in: omapdrm panel_dsi_cm omapdss omapdss_base panel_simple tc358767 sii902x ti_tfp410 drm_kms_helper drm drm_panel_orientation_quirks cfbf
> illrect cfbimgblt cfbcopyarea cec
> # [   26.332661] CPU: 1 PID: 64 Comm: kworker/1:1 Tainted: G        W         5.3.0-rc3-01400-g27515343445e #1
> [   26.342354] Hardware name: Generic DRA74X (Flattened Device Tree)
> [   26.348483] Workqueue: events deferred_probe_work_func
> [   26.353658] [<c01139b4>] (unwind_backtrace) from [<c010da68>] (show_stack+0x10/0x14)
> [   26.361445] [<c010da68>] (show_stack) from [<c0941138>] (dump_stack+0xa8/0xc4)
> [   26.368707] [<c0941138>] (dump_stack) from [<c013a57c>] (__warn.part.3+0xa8/0xd4)
> [   26.376229] [<c013a57c>] (__warn.part.3) from [<c013a604>] (warn_slowpath_fmt+0x5c/0x88)
> [   26.384360] [<c013a604>] (warn_slowpath_fmt) from [<c04e5ef4>] (__list_add_valid+0x74/0xb0)
> [   26.392806] [<c04e5ef4>] (__list_add_valid) from [<bf037c34>] (drm_bridge_add+0x40/0x6c [drm])
> [   26.401545] [<bf037c34>] (drm_bridge_add [drm]) from [<bf0e2a0c>] (hdmi5_probe+0x17c/0x264 [omapdss])
> [   26.410845] [<bf0e2a0c>] (hdmi5_probe [omapdss]) from [<c05f845c>] (platform_drv_probe+0x48/0x98)
> [   26.419762] [<c05f845c>] (platform_drv_probe) from [<c05f5f4c>] (really_probe+0x100/0x410)
> [   26.428068] [<c05f5f4c>] (really_probe) from [<c05f6428>] (driver_probe_device+0x6c/0x1b4)
> [   26.436373] [<c05f6428>] (driver_probe_device) from [<c05f3ff8>] (bus_for_each_drv+0x7c/0xc4)
> [   26.444938] [<c05f3ff8>] (bus_for_each_drv) from [<c05f5da4>] (__device_attach+0xc8/0x168)
> [   26.453243] [<c05f5da4>] (__device_attach) from [<c05f4f80>] (bus_probe_device+0x84/0x8c)
> [   26.461458] [<c05f4f80>] (bus_probe_device) from [<c05f54cc>] (deferred_probe_work_func+0x84/0xcc)
> [   26.470463] [<c05f54cc>] (deferred_probe_work_func) from [<c0155c98>] (process_one_work+0x184/0x504)
> [   26.479641] [<c0155c98>] (process_one_work) from [<c015691c>] (worker_thread+0x2c/0x51c)
> [   26.487773] [<c015691c>] (worker_thread) from [<c015bd04>] (kthread+0x140/0x158)
> [   26.495205] [<c015bd04>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
> [   26.502461] Exception stack(0xeaba3fb0 to 0xeaba3ff8)
> [   26.507536] 3fa0:                                     00000000 00000000 00000000 00000000
> [   26.515750] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [   26.523964] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
> [   26.531766] ---[ end trace 1bb774fc77a9c1a3 ]---
> [   26.536482] 8<--- cut here ---
> [   26.539550] Unable to handle kernel paging request at virtual address 6b6b6b67
> [   26.546845] pgd = e9e66080
> [   26.549651] [6b6b6b67] *pgd=00000000
> [   26.553249] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
> [   26.558584] Modules linked in: omapdrm panel_dsi_cm omapdss omapdss_base panel_simple tc358767 sii902x ti_tfp410 drm_kms_helper drm drm_panel_orientation_quirks cfbf
> illrect cfbimgblt cfbcopyarea cec
> [   26.576327] CPU: 1 PID: 64 Comm: kworker/1:1 Tainted: G        W         5.3.0-rc3-01400-g27515343445e #1
> [   26.585933] Hardware name: Generic DRA74X (Flattened Device Tree)
> [   26.592057] Workqueue: events deferred_probe_work_func
> [   26.597270] PC is at of_drm_find_bridge+0x38/0x7c [drm]
> [   26.602519] LR is at 0x0
> [   26.605063] pc : [<bf037bb0>]    lr : [<00000000>]    psr: 900b0013
> [   26.611356] sp : eaba3de0  ip : eaba2000  fp : 00000013
> [   26.616604] r10: c0ebcc98  r9 : bf0e83c8  r8 : eaf69120
> [   26.621852] r7 : eaf69174  r6 : eaf69174  r5 : efde6760  r4 : 6b6b6b5b
> [   26.628406] r3 : 6b6b6b6b  r2 : 00000000  r1 : 00000000  r0 : bf0692bc
> [   26.634964] Flags: NzcV  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
> [   26.642132] Control: 10c5387d  Table: aafa806a  DAC: 00000051
> [   26.647904] Process kworker/1:1 (pid: 64, stack limit = 0xef0d19b6)
> [   26.654195] Stack: (0xeaba3de0 to 0xeaba4000)
> [   26.658575] 3de0: eaf69120 efde6760 eaf69174 bf0aab64 eaf69000 ea0e8810 00000000 bf0e2a54
> [   26.666790] 3e00: 00002000 bf0f02fc eaf69000 ea0e8810 c0f13054 ea0e8810 00000000 bf0f2220
> [   26.675005] 3e20: 00000000 00000000 bf0f2220 c05f845c ea0e8810 c0f13054 c0f13058 00000000
> [   26.683219] 3e40: 00000000 c05f5f4c c05f666c ea0e8810 c0b95478 ea0e8810 bf0f2220 c05f666c
> [   26.691432] 3e60: c0e05148 00000001 c0ebcc98 c0ebcc98 c0b95478 c05f6428 00000001 c05f6638
> [   26.699647] 3e80: bf0f2220 00000000 eaba3ecc c05f666c c0e05148 00000001 c0ebcc98 c05f3ff8
> [   26.707862] 3ea0: c0b95478 eb8e0b6c eafda3b8 db20362b ea0e8810 ea0e8810 ea0e8854 c0e05148
> [   26.716076] 3ec0: c0e88e78 c05f5da4 ea0e8810 ea0e8810 00000001 db20362b eafda2d4 ea0e8810
> [   26.724291] 3ee0: c0e89100 c0e88e78 c0e88e8c c05f4f80 eafda2d4 ea0e8810 c0e88e78 c05f54cc
> [   26.732505] 3f00: c05f5448 c0e88ea0 ea884780 efd8ef80 efd92300 00000000 c0eb30b0 00000000
> [   26.740719] 3f20: ffffe000 c0155c98 ea869800 efd8ef80 00000008 ea884780 ea884794 efd8ef80
> [   26.748934] 3f40: 00000008 efd8ef98 c0e03d00 efd8ef80 ffffe000 c015691c eaaeca9c c095f020
> [   26.757150] 3f60: eaaeca9c 00000000 eaaeca80 eaaecac0 eaba2000 ea884780 c01568f0 eb91feb4
> [   26.765365] 3f80: eaaeca9c c015bd04 00000000 eaaecac0 c015bbc4 00000000 00000000 00000000
> [   26.773580] 3fa0: 00000000 00000000 00000000 c01010e8 00000000 00000000 00000000 00000000
> [   26.781794] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [   26.790009] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
> [   26.798278] [<bf037bb0>] (of_drm_find_bridge [drm]) from [<bf0aab64>] (omapdss_device_init_output+0x38/0x4d4 [omapdss_base])
> [   26.809583] [<bf0aab64>] (omapdss_device_init_output [omapdss_base]) from [<bf0e2a54>] (hdmi5_probe+0x1c4/0x264 [omapdss])
> [   26.820709] [<bf0e2a54>] (hdmi5_probe [omapdss]) from [<c05f845c>] (platform_drv_probe+0x48/0x98)
> [   26.829627] [<c05f845c>] (platform_drv_probe) from [<c05f5f4c>] (really_probe+0x100/0x410)
> [   26.837932] [<c05f5f4c>] (really_probe) from [<c05f6428>] (driver_probe_device+0x6c/0x1b4)
> [   26.846236] [<c05f6428>] (driver_probe_device) from [<c05f3ff8>] (bus_for_each_drv+0x7c/0xc4)
> [   26.854802] [<c05f3ff8>] (bus_for_each_drv) from [<c05f5da4>] (__device_attach+0xc8/0x168)
> [   26.863106] [<c05f5da4>] (__device_attach) from [<c05f4f80>] (bus_probe_device+0x84/0x8c)
> [   26.871323] [<c05f4f80>] (bus_probe_device) from [<c05f54cc>] (deferred_probe_work_func+0x84/0xcc)
> [   26.880326] [<c05f54cc>] (deferred_probe_work_func) from [<c0155c98>] (process_one_work+0x184/0x504)
> [   26.889503] [<c0155c98>] (process_one_work) from [<c015691c>] (worker_thread+0x2c/0x51c)
> [   26.897634] [<c015691c>] (worker_thread) from [<c015bd04>] (kthread+0x140/0x158)
> [   26.905065] [<c015bd04>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
> [   26.912318] Exception stack(0xeaba3fb0 to 0xeaba3ff8)
> [   26.917393] 3fa0:                                     00000000 00000000 00000000 00000000
> [   26.925607] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [   26.933821] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
> [   26.940469] Code: e5133004 e1550003 1a000003 ea00000b (e5133004) 
> [   26.946649] ---[ end trace 1bb774fc77a9c1a4 ]---

-- 
Regards,

Laurent Pinchart


More information about the dri-devel mailing list