If the DP monitors support typical video modes like 1080p60 with
148.5MHz pixel clock rate, I assume these typical video modes work
still ok with this patch at least. Please help confirm this, since if the
alternative solution(*) doesn't stand, we would know those video
modes still work ok with my solution(fixed PLL rate).
They do not work with the fixed PLL setting.
Why? Did you assign a sensible fixed PLL rate in DT?
Can you please compare clk_summary output for the failing cases
before and after this patch is applied? I assume that if you use
the fixed PLL rate same to the rate which works before this patch is
applied, the typical video modes still just work after this patch is
applied.
One really nasty way I can think of is -- use find_node_by_compatible(),
look up all the relevant DT nodes, parse their clock properties, and
check whether they all point to the Video PLL or not.
That's nasty. It looks even more nasty when considering the fact that
i.MX93 LCDIF is also driven by imx-lcdif DRM while only i.MX8MP LCDIF
needs the nasty check, because i.MX93 SoC embeds only one LCDIF.
Maybe the clock subsystem has a better way, like list "neighbor"
consumers of some specific parent clock or something like that.
What will imx-lcdif DRM look like by using this way? Get the ancestor PLL
clock of pixel clock(media_disp{1,2}_pix_root_clk), list all child clocks
(media_disp1_pix and/or media_disp2_pix + other possible clocks) of the
PLL clock in a string array and find media_disp1_pix + media_disp2_pix
in it?
Doesn't look nice, either.
[...]
andCan something like (*) above be implemented instead, so both Shared
separate PLLs would be supported ? That should solve both of our use
cases, right ?
I don't see any clear way to implement something like(*).
Take the 3 i.MX8MP LCDIFs as one graphic card driven by one imx-lcdif
DRM instance? Would it be too intrusive?
Yes, and I think unnecessary, one can simply traverse and parse the DT
to determine the clock assignment?
Yes, people can traverse and parse DT, but it's nasty.
In addition, one may argue that now that CLK_SET_RATE_PARENT flag
is set for the pixel clocks, all potential video modes read from EDID
should be supported when only either LVDS display pipeline or MIPI DSI
display pipeline is active in the shared PLL case. This requires one
single DRM instance to detect single or dual active display pipelines
dynamically, hence this single DRM instance becomes necessary.