drm: imx: multi-display support questions

Philipp Zabel p.zabel at pengutronix.de
Wed May 27 02:38:10 PDT 2015


Hi Gary,

Am Dienstag, den 26.05.2015, 16:47 +0200 schrieb Gary Bisson:
> Hi all,
> 
> After a few days of experimentation on multi-display support on i.MX6, I
> have some questions regarding the status of the imx-drm driver.
> 
> Here is description of my testing setup:
> - Nitrogen6x (a SabreLite would work the same)
> - Mainline kernel 4.1-rc2 + a few patches for display support (some are
>   pending, other are scheduled for 4.2)
> https://patchwork.kernel.org/project/linux-arm-kernel/list/?submitter=132811
> https://patchwork.kernel.org/patch/6439221/
> https://patchwork.kernel.org/patch/6439231/
> https://patchwork.kernel.org/patch/6212451/
> - Available displays:
>   - 1 LVDS 10" Hannstar HSD100PXN1 display
>   - 1 LCD 7" Okaya display
>   - 1 HDMI 1080p TV
> - U-boot script used to boot the mainline kernel properly:
> https://github.com/boundarydevices/u-boot-imx6/blob/staging/board/boundary/nitrogen6x/6x_bootscript-mainline.txt
> - Basic Buildroot filesystem with libdrm and its test binaries
> 
> First of all, using the standard imx_v6_v7_defconfig, everything runs
> fine with a single-display setup, no matter if it is using LVDS, RGB or
> HDMI interface.
> 
> But in multi-display setup, the first observation is that
> CONFIG_DRM_IMX_FB_HELPER seems to be problematic. When this option is
> set, only one display can be used either using the /dev/fb0 or 'modetest
> -s' from libdrm test binaries. As soon as the option is removed, every
> display can be used properly with the following commands:
> # modetest -M imx-drm -s 32:800x480
> # modetest -M imx-drm -s 34:1920x1080
> # modetest -M imx-drm -s 36:1024x768
> 
> Is this option only meant for single-display setup? Has it been tested
> in multi-display?
>
> It seems limited to fb0 creation, would it be possible to make the
> driver create as many fbs as the number of monitors?

According to the kerneldoc comment for drm_fb_helper_initial_config
(which is used by imx-drm via drm_fbdev_cma_init), it should set up a
single /dev/fb cloned over all connectors. This works here with LVDS and
HDMI.

> Also, when trying to display different patterns on each and every
> display at once, I have been using the example provided by David
> Herrmann:
> https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset.c
> This shows a clocking issue when using both DRM_IMX_PARALLEL_DISPLAY and
> DRM_IMX_LDB at the same time. Although the driver is smart enough to
> connect ipu1_di0 to the RGB interface and ipu1_di1 to the LVDS
> interface, the clock set by the LDB driver (65MHz) is overwritten when
> the parallel interface is enabled as they both share pll5_video.
> 
> Has anyone successfully tried using both drivers, LVDS and parallel, at
> the same time?

For parallel and LVDS we'd either need to force the parallel panel to be
clocked by the IPU internal clock, or move one or the other external
clock source off of pll5_video.
I have used a LVDS panel which could be driven from the mmdc_ch1_axi
clock, but there are some issues when switching the LDB_DI clock
parents:
http://marc.info/?l=linux-arm-kernel&m=142055950831840&w=2

> Then I've run into Steve's series that seems to address some clocking
> issues.
> http://lists.freedesktop.org/archives/dri-devel/2014-October/070996.html
> 
> Is there the equivalent series for the driver since it has moved from
> staging?

A few of the patches have been reposted and some of them applied.
I'm not aware of a rebased version of the DI clock parent patch.

regards
Philipp



More information about the dri-devel mailing list