On Thu, Nov 21, 2024 at 9:39 PM Ying Liu <victor.liu@xxxxxxx> wrote: > > On 11/22/24, Marek Vasut wrote: > > On 11/20/24 7:38 AM, Ying Liu wrote: > > > > [...] > > > > >>> 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? > > > > Whatever was in imx8mp.dtsi does not really work for all the panels. > > Please keep in mind that the use case I have does not include only > > 1920x1080 "standard" panels, but also other resolutions. > > It looks like you are still sticking to the idea of supporting all potentially > valid video modes by trying to find an "alternative" solution, while > neglecting that the solution *could be* never working. > > > > > > 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. > > > > I'm afraid I do not need to support only typical video modes, but also > > the other "atypical" modes. > > If the "alternative" solution doesn't work, we'll end up using the "fixed > PLL rate" solution. It that case, some video modes would be filtered > out as a sacrifice. > > > > > [...] > > > > >> 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. > > > > The check can be skipped based on compatible string. > > > > I agree it is nasty, but it is a start. Are there better ideas ? > > No good idea from me. > > > > > >> 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. > > > > One other option came to my mind -- place a virtual clock between the > > Video PLL and consumers (LCDIF1/2/LDB), and then have the virtual clock > > driver do the clock rate negotiation in some .round_rate callback. That > > is also nasty, but it is another idea. If there is a clock specifically > > implemented to negotiate best upstream clock rate for all of its > > consumers, and it is aware of the consumer behavior details and > > requirements, maybe that could work ? > > A mighty virtual clock? I'm not sure if that would work or not.