On 26/04/18 08:52, Linus Walleij wrote:
On Mon, Apr 23, 2018 at 2:04 PM, Robin Murphy robin.murphy@arm.com wrote:
I've given this a go on the nearest VExpress (with CA15_A7 tile) and sadly it doesn't quite work for me :( With the HDLCD driver configure out, the PL111 driver seems to repeatedly defer somewhere past pl111_versatile_init():
root@jet-set-radio:~# dmesg | grep -i lcd [ 2.739358] drm-clcd-pl111 1c1f0000.clcd: sysreg has not yet probed [ 3.406534] drm-clcd-pl111 1c1f0000.clcd: initializing Versatile Express PL111 [ 3.428218] drm-clcd-pl111 1c1f0000.clcd: DVI muxed to motherboard CLCD [ 3.898768] drm-clcd-pl111 1c1f0000.clcd: initializing Versatile Express PL111 [ 3.920441] drm-clcd-pl111 1c1f0000.clcd: DVI muxed to motherboard CLCD [ 10.896158] drm-clcd-pl111 1c1f0000.clcd: initializing Versatile Express PL111 [ 10.917839] drm-clcd-pl111 1c1f0000.clcd: DVI muxed to motherboard CLCD [ 18.513233] drm-clcd-pl111 1c1f0000.clcd: initializing Versatile Express PL111 [ 18.535007] drm-clcd-pl111 1c1f0000.clcd: DVI muxed to motherboard CLCD root@jet-set-radio:~# ls /sys/bus/amba/drivers/drm-clcd-pl111/ bind uevent unbind
There's no obvious indication of what's missing, but it does still manage to do enough to make the external display come on (still showing the motherboard PoST screen). By comparison, the old fbdev driver probes OK and thinks it's set up a 640x480 console but doesn't actually turn the monitor on (and HDLCD doesn't probe at all due to vexpress-v2p-ca15_a7.dts lacking any graph endpoint).
Config attached, just in case I'm missing something trivially dumb.
Hm you definately need CONFIG_CMA and CONFIG_DMA_CMA so the driver actually uses the special memory.
Argh, missing CMA was exactly the kind of idiocy I predicted...
I have all these:
config-drm: config-base $(CURDIR)/scripts/config --file $(config_file) \ --disable FB_ARMCLCD \ --enable CMA \ --enable CMA_DEBUG \ --enable CMA_DEBUGFS \ --enable DMA_CMA \ --enable DRM \ --enable DRM_PL111 \ --enable FRAMEBUFFER_CONSOLE \ --enable DRM_PANEL \ --enable DRM_PANEL_SIMPLE \ --enable DRM_BRIDGE \ --enable DRM_PANEL_BRIDGE \ --enable DRM_SII902X \ --enable LOGO
Please try with the stuff above, when I switch the mainline platforms I plan to update the defconfigs with all the above.
...however even ensuring all of the above options I still see the same behaviour, i.e. the driver fails to bind with no visible reason why.
I dug a little bit and it seems pl111_modeset_init() is deferring because it can't find endpoint 0. And given that that's apparently pointing at some non-existent panel rather than the DVI encoder as I would (naively) expect, I can at least form a self-consistent explanation and give up on the grounds that I'm probably missing some important DT changes.
Robin.