RE: [EXT] Re: [v2 06/10] drm: bridge: cadence: Add MHDP HDMI driver for i.MX8MQ

From: Sandor Yu
Date: Mon Nov 14 2022 - 02:53:30 EST


Hi Alexander,

> -----Original Message-----
> From: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx>
> Sent: 2022年11月10日 23:44
> To: Sandor Yu <sandor.yu@xxxxxxx>
> Cc: jonas@xxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx;
> devicetree@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx; linux-phy@xxxxxxxxxxxxxxxxxxx;
> andrzej.hajda@xxxxxxxxx; neil.armstrong@xxxxxxxxxx; robert.foss@xxxxxxxxxx;
> Laurent.pinchart@xxxxxxxxxxxxxxxx; jernej.skrabec@xxxxxxxxx;
> kishon@xxxxxx; vkoul@xxxxxxxxxx; Oliver Brown <oliver.brown@xxxxxxx>;
> krzysztof.kozlowski+dt@xxxxxxxxxx; sam@xxxxxxxxxxxx;
> tzimmermann@xxxxxxx; s.hauer@xxxxxxxxxxxxxx; javierm@redhat. com
> <javierm@xxxxxxxxxx>; penguin-kernel@xxxxxxxxxxxxxxxxxxx;
> robh+dt@xxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>;
> kernel@xxxxxxxxxxxxxx; shawnguo@xxxxxxxxxx; p.yadav@xxxxxx;
> maxime@xxxxxxxxxx
> Subject: RE: [EXT] Re: [v2 06/10] drm: bridge: cadence: Add MHDP HDMI
> driver for i.MX8MQ
>
> Caution: EXT Email
>
> Hi Sandor,
>
> Am Mittwoch, 9. November 2022, 14:26:14 CET schrieb Sandor Yu:
> > Thanks for your comments.
> >
> >
> > > -----Original Message-----
> > > From: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx>
> > > Sent: 2022年11月8日 21:17
> > > To: jonas@xxxxxxxxx; Sandor Yu <sandor.yu@xxxxxxx>
> > > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx;
> > > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> > > linux-phy@xxxxxxxxxxxxxxxxxxx; andrzej.hajda@xxxxxxxxx;
> > > neil.armstrong@xxxxxxxxxx; robert.foss@xxxxxxxxxx;
> > > Laurent.pinchart@xxxxxxxxxxxxxxxx; jernej.skrabec@xxxxxxxxx;
> > > kishon@xxxxxx; vkoul@xxxxxxxxxx; Oliver Brown
> > > <oliver.brown@xxxxxxx>; krzysztof.kozlowski+dt@xxxxxxxxxx;
> > > sam@xxxxxxxxxxxx; jani.nikula@xxxxxxxxx;
> tzimmermann@xxxxxxx; s.hauer@xxxxxxxxxxxxxx;
> > > javierm@xxxxxxxxxx;
> > > penguin-kernel@xxxxxxxxxxxxxxxxxxx; robh+dt@xxxxxxxxxx; dl-linux-imx
> > > <linux-imx@xxxxxxx>; kernel@xxxxxxxxxxxxxx; Sandor Yu
> > > <sandor.yu@xxxxxxx>; shawnguo@xxxxxxxxxx; p.yadav@xxxxxx;
> > > maxime@xxxxxxxxxx
> > > Subject: [EXT] Re: [v2 06/10] drm: bridge: cadence: Add MHDP HDMI
> > > driver for i.MX8MQ
> > >
> > > Caution: EXT Email
> > >
> > > Hello,
> > >
> > > thanks for working on this and the updated version.
> > >
> > > Am Freitag, 4. November 2022, 07:44:56 CET schrieb Sandor Yu:
> > >
> > > > Add a new DRM HDMI bridge driver for Candence MHDP used in
> i.MX8MQ
> > > > SOC. MHDP IP could support HDMI or DisplayPort standards according
> > > > embedded Firmware running in the uCPU.
> > > >
> > > >
> > > >
> > > > For iMX8MQ SOC, the HDMI FW was loaded and activated by SOC ROM
> > >
> > > code.
> > >
> > > > Bootload binary included HDMI FW was required for the driver.
> > > >
> > > >
> > > >
> > > > Signed-off-by: Sandor Yu <Sandor.yu@xxxxxxx>
> > > > ---
> > > >
> > > > drivers/gpu/drm/bridge/cadence/Kconfig | 12 +
> > > > .../gpu/drm/bridge/cadence/cdns-hdmi-core.c | 1038
> > >
> > > +++++++++++++++++
> > >
> > > > 2 files changed, 1050 insertions(+) create mode 100644
> > > > drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c
> > > >
> > > >
> > > >
> > > > diff --git a/drivers/gpu/drm/bridge/cadence/Kconfig
> > > > b/drivers/gpu/drm/bridge/cadence/Kconfig index
> > > > e79ae1af3765..377452d09992
> > > > 100644
> > > > --- a/drivers/gpu/drm/bridge/cadence/Kconfig
> > > > +++ b/drivers/gpu/drm/bridge/cadence/Kconfig
>
> [snip]
>
> > > > +static int cdns_hdmi_get_edid_block(void *data, u8 *edid,
> > > > + u32 block, size_t length) {
> > > > + struct cdns_mhdp_device *mhdp = data;
> > > > + u8 msg[2], reg[5], i;
> > > > + int ret;
> > > > +
> > > > + mutex_lock(&mhdp->mbox_mutex);
> > > > +
> > > > + for (i = 0; i < 4; i++) {
> > >
> > >
> > > What is i? It is not used inside the loop.
> >
> > EDID data read by HDMI firmware are not guarantee 100% successful.
> > Base on experiments, try 4 times if EDID read failed.
>
> Mh, 4 times sounds a bit too arbitrary to me. How about using a timeout in ms,
> like 50ms, for retrying to read the EDID?
>
For EDID read failed case, the mailbox read will timeout, additional timeout in the loop is not necessary.
> [snip]
>
> > > > +static int cdns_mhdp_imx_probe(struct platform_device *pdev) {
> > > > + struct device *dev = &pdev->dev;
> > > > + struct cdns_mhdp_device *mhdp;
> > > > + struct platform_device_info pdevinfo;
> > > > + struct resource *res;
> > > > + u32 reg;
> > > > + int ret;
> > > > +
> > > > + mhdp = devm_kzalloc(dev, sizeof(*mhdp), GFP_KERNEL);
> > > > + if (!mhdp)
> > > > + return -ENOMEM;
> > > > +
> > > > + mutex_init(&mhdp->lock);
> > > > + mutex_init(&mhdp->mbox_mutex);
> > > > +
> > > > + INIT_DELAYED_WORK(&mhdp->hotplug_work,
> hotplug_work_func);
> > > > +
> > > > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > > > + if (!res)
> > > > + return -ENODEV;
> > > > + mhdp->regs = devm_ioremap(dev, res->start,
> resource_size(res));
> > > > + if (IS_ERR(mhdp->regs))
> > > > + return PTR_ERR(mhdp->regs);
> > >
> > >
> > > Please use devm_platform_get_and_ioremap_resource.
> >
> > Both HDMI PHY driver and mhdp HDMI driver should access same APB base
> > register offset for mailbox.
> devm_ioremap_resource could not support such
> > feature.
>
> Oh I see, both remap the same range. To be honest I do not like this. Is there
> a need to map overlapping ranges in both drivers? How can you avoid race
> conditions due to simultaneous accesses?
>
To separate HDMI controller driver and PHY driver, I have to remap those registers in different drivers.
Race conditions could be avoid in HDMI driver when PHY function is called.
> > > > + mhdp->phy = devm_of_phy_get_by_index(dev,
> pdev->dev.of_node,
> > >
> > > 0);
> > >
> > > > + if (IS_ERR(mhdp->phy)) {
> > > > + dev_err(dev, "no PHY configured\n");
> > > > + return PTR_ERR(mhdp->phy);
> > > > + }
> > >
> > >
> > > Please use dev_err_probe().
> >
> > OK.
> >
> > >
> > >
> > > > + mhdp->irq[IRQ_IN] = platform_get_irq_byname(pdev, "plug_in");
> > > > + if (mhdp->irq[IRQ_IN] < 0) {
> > > > + dev_info(dev, "No plug_in irq number\n");
> > > > + return -EPROBE_DEFER;
> > > > + }
> > >
> > >
> > > Please use dev_err_probe().
> >
> > OK.
> >
> > >
> > >
> > > > + mhdp->irq[IRQ_OUT] = platform_get_irq_byname(pdev,
> > >
> > > "plug_out");
> > >
> > > > + if (mhdp->irq[IRQ_OUT] < 0) {
> > > > + dev_info(dev, "No plug_out irq number\n");
> > > > + return -EPROBE_DEFER;
> > > > + }
> > >
> > >
> > > Please use dev_err_probe().
> >
> > OK.
> >
> > >
> > >
> > > > + /*
> > > > + * Wait for the KEEP_ALIVE "message" on the first 8 bits.
> > > > + * Updated each sched "tick" (~2ms)
> > > > + */
> > > > + ret = readl_poll_timeout(mhdp->regs + KEEP_ALIVE, reg,
> > > > + reg & CDNS_KEEP_ALIVE_MASK,
> > >
> > > 500,
> > >
> > > > + CDNS_KEEP_ALIVE_TIMEOUT);
> > >
> > >
> > > This freezes my board TQMa8MQ
> > > (arch/arm64/boot/dts/freescale/imx8mq-tqma8mq-
> > > mba8mx.dts) completly if this and the PHY driver are compiled in. I
> > > have "pd_ignore_unused clk_ignore_unused" passed to kernel command
> > > line, so I have no idea what's wrong here.
> >
> > Here is the first time in the driver to access hdmi register when
> > driver probe.
> For imx8mq hdmi/dp, mdhp hdmi apb clock and core clock are managed
> > by ROM code, they are always on when device bootup. Could you dump the
> > clock tree without "pd_ignore_unused clk_ignore_unused" ?
>
> I noticed too this is the 1st access, so I have no idea what's wrong here.
> Here is my /sys/kernel/debug/clk/clk_summary from using the regular DT
> without enabling 'dcss', 'hdmi_phy' and 'mhdp_hdmi':
>
> enable prepare protect duty
> hardware
> clock count count count
> rate
> accuracy phase cycle enable
> ---------------------------------------------------------------------------------------------
> ----------
> sys2_pll_out 7 7 0
> 1000000000
> 0 0 50000 Y
> sys_pll2_out_monitor 0 0 0
> 1000000000
> 0 0 50000 Y
> sys2_pll_1000m 0 0 0
> 1000000000
> 0 0 50000 Y
> sys2_pll_500m 1 2 0
> 500000000
> 0 0 50000 Y
> audio_ahb 0 1 0
> 500000000
> 0 0 50000 N
> ipg_audio_root 0 1 0
> 250000000
> 0 0 50000 Y
> sdma2_clk 0 2 0
> 250000000
> 0 0 50000 N
> sai6_ipg_clk 0 0 0
> 250000000
> 0 0 50000 N
> sai5_ipg_clk 0 0 0
> 250000000
> 0 0 50000 N
> sai4_ipg_clk 0 0 0
> 250000000
> 0 0 50000 N
> sai1_ipg_clk 0 0 0
> 250000000
> 0 0 50000 N
> nand 0 0 0
> 500000000
> 0 0 50000 N
> nand_root_clk 0 0 0
> 500000000
> 0 0 50000 N
> usb_bus 2 2 0
> 500000000
> 0 0 50000 Y
> usb2_ctrl_root_clk 1 1 0
> 500000000
> 0 0 50000 Y
> usb1_ctrl_root_clk 1 1 0
> 500000000
> 0 0 50000 Y
> sys2_pll_333m 1 1 0
> 333333333
> 0 0 50000 Y
> main_axi 1 1 0
> 333333333
> 0 0 50000 Y
> sys2_pll_250m 2 2 0
> 250000000
> 0 0 50000 Y
> pcie1_ctrl 1 1 0
> 250000000
> 0 0 50000 Y
> pcie1_root_clk 1 1 0
> 250000000
> 0 0 50000 Y
> pcie2_ctrl 1 1 0
> 250000000
> 0 0 50000 Y
> pcie2_root_clk 1 1 0
> 250000000
> 0 0 50000 Y
> sys2_pll_200m 3 3 0
> 200000000
> 0 0 50000 Y
> ecspi3 0 0 0
> 200000000
> 0 0 50000 N
> ecspi3_root_clk 0 0 0
> 200000000
> 0 0 50000 N
> ecspi2 1 1 0
> 200000000
> 0 0 50000 Y
> ecspi2_root_clk 2 2 0
> 200000000
> 0 0 50000 Y
> ecspi1 1 1 0
> 200000000
> 0 0 50000 Y
> ecspi1_root_clk 2 2 0
> 200000000
> 0 0 50000 Y
> gic 1 1 0
> 200000000
> 0 0 50000 Y
> arm_m4_core 0 0 0
> 200000000
> 0 0 50000 N
> sys2_pll_166m 0 0 0
> 166666666
> 0 0 50000 Y
> sys2_pll_125m 1 1 0
> 125000000
> 0 0 50000 Y
> enet_ref 1 1 0
> 125000000
> 0 0 50000 Y
> sys2_pll_100m 3 3 0
> 100000000
> 0 0 50000 Y
> pcie1_phy 1 1 0
> 100000000
> 0 0 50000 Y
> pcie2_phy 1 1 0
> 100000000
> 0 0 50000 Y
> enet_timer 1 1 0
> 100000000
> 0 0 50000 Y
> sys2_pll_50m 1 1 0
> 50000000
> 0 0 50000 Y
> enet_phy 1 1 0
> 50000000
> 0 0 50000 Y
> sys1_pll_out 5 5 0
> 800000000
> 0 0 50000 Y
> sys_pll1_out_monitor 0 0 0
> 800000000
> 0 0 50000 Y
> sys1_pll_800m 2 2 0
> 800000000
> 0 0 50000 Y
> vpu_bus 0 0 0
> 800000000
> 0 0 50000 N
> vpu_dec_root_clk 0 0 0
> 800000000
> 0 0 50000 N
> arm_a53_div 0 0 0
> 800000000
> 0 0 50000 N
> dram_apb 1 1 0
> 160000000
> 0 0 50000 Y
> noc 1 1 0
> 800000000
> 0 0 50000 Y
> disp_rtrm 0 0 0
> 400000000
> 0 0 50000 N
> disp_rtrm_root_clk 0 0 0
> 400000000
> 0 0 50000 N
> disp_apb 0 0 0
> 133333334
> 0 0 50000 N
> disp_apb_root_clk 0 0 0
> 133333334
> 0 0 50000 N
> disp_axi 0 0 0
> 800000000
> 0 0 50000 N
> disp_axi_root_clk 0 0 0
> 800000000
> 0 0 50000 N
> sys1_pll_400m 0 0 0
> 400000000
> 0 0 50000 Y
> usdhc2 0 0 0
> 400000000
> 0 0 50000 N
> usdhc2_root_clk 0 0 0
> 400000000
> 0 0 50000 N
> usdhc1 0 0 0
> 400000000
> 0 0 50000 N
> usdhc1_root_clk 0 0 0
> 400000000
> 0 0 50000 N
> sys1_pll_266m 1 1 0
> 266666666
> 0 0 50000 Y
> nand_usdhc_bus 0 0 0
> 266666666
> 0 0 50000 N
> nand_usdhc_rawnand_clk 0 0 0
> 266666666
> 0 0 50000 N
> enet_axi 1 1 0
> 266666666
> 0 0 50000 Y
> enet1_root_clk 2 2 0
> 266666666
> 0 0 50000 Y
> sys1_pll_200m 0 0 0
> 200000000
> 0 0 50000 Y
> sys1_pll_160m 0 0 0
> 160000000
> 0 0 50000 Y
> sys1_pll_133m 1 1 0
> 133333333
> 0 0 50000 Y
> ahb 9 4 0
> 133333333
> 0 0 50000 Y
> ipg_root 8 8 0
> 66666667
> 0 0 50000 Y
> sdma1_clk 6 1 0
> 66666667
> 0 0 50000 Y
> tmu_root_clk 1 1 0
> 66666667
> 0 0 50000 Y
> sai3_ipg_clk 0 0 0
> 66666667
> 0 0 50000 N
> sai2_ipg_clk 0 0 0
> 66666667
> 0 0 50000 N
> ocotp_root_clk 0 0 0
> 66666667
> 0 0 50000 N
> mu_root_clk 0 0 0
> 66666667
> 0 0 50000 N
> gpio5_root_clk 1 1 0
> 66666667
> 0 0 50000 Y
> gpio4_root_clk 1 1 0
> 66666667
> 0 0 50000 Y
> gpio3_root_clk 1 1 0
> 66666667
> 0 0 50000 Y
> gpio2_root_clk 1 1 0
> 66666667
> 0 0 50000 Y
> gpio1_root_clk 1 1 0
> 66666667
> 0 0 50000 Y
> sys1_pll_100m 2 2 0
> 100000000
> 0 0 50000 Y
> usb_phy_ref 2 2 0
> 100000000
> 0 0 50000 Y
> usb2_phy_root_clk 1 1 0
> 100000000
> 0 0 50000 Y
> usb1_phy_root_clk 1 1 0
> 100000000
> 0 0 50000 Y
> usb_core_ref 2 2 0
> 100000000
> 0 0 50000 Y
> qspi 0 0 0
> 100000000
> 0 0 50000 N
> qspi_root_clk 0 0 0
> 100000000
> 0 0 50000 N
> dram_alt 0 0 0
> 100000000
> 0 0 50000 N
> dram_alt_root 0 0 0
> 25000000
> 0 0 50000 Y
> sys1_pll_80m 2 2 0
> 80000000
> 0 0 50000 Y
> pcie1_aux 1 1 0
> 10000000
> 0 0 50000 Y
> pcie2_aux 1 1 0
> 10000000
> 0 0 50000 Y
> uart2 0 0 0
> 80000000
> 0 0 50000 N
> uart2_root_clk 0 0 0
> 80000000
> 0 0 50000 N
> uart1 0 0 0
> 80000000
> 0 0 50000 N
> uart1_root_clk 0 0 0
> 80000000
> 0 0 50000 N
> sys1_pll_40m 0 0 0
> 40000000
> 0 0 50000 Y
> wrclk 0 0 0
> 40000000
> 0 0 50000 N
> dummy 0 0 0
> 0
> 0 0 50000 Y
> clk-xtal25 2 2 0
> 25000000
> 0 0 50000 Y
> DIF3 0 0 0
> 100000000
> 0 0 50000 Y
> DIF2 1 1 0
> 100000000
> 0 0 50000 Y
> DIF1 0 0 0
> 100000000
> 0 0 50000 Y
> DIF0 1 1 0
> 100000000
> 0 0 50000 Y
> clock 0 0 0
> 32768
> 0 0 50000 Y
> clk_ext4 0 0 0
> 133000000
> 0 0 50000 Y
> clk_ext3 0 0 0
> 133000000
> 0 0 50000 Y
> clk_ext2 0 0 0
> 133000000
> 0 0 50000 Y
> clk_ext1 0 0 0
> 133000000
> 0 0 50000 Y
> hdmi_phy_27m 0 0 0
> 27000000
> 0 0 50000 Y
> osc_27m 0 0 0
> 27000000
> 0 0 50000 Y
> osc_25m 7 11 0
> 25000000
> 0 0 50000 Y
> gpt_3m 0 0 0
> 3125000
> 0 0 50000 Y
> csi2_esc 0 0 0
> 25000000
> 0 0 50000 N
> csi2_phy_ref 0 0 0
> 25000000
> 0 0 50000 N
> csi2_core 0 0 0
> 25000000
> 0 0 50000 N
> csi2_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> csi1_esc 0 0 0
> 25000000
> 0 0 50000 N
> csi1_phy_ref 0 0 0
> 25000000
> 0 0 50000 N
> csi1_core 0 0 0
> 25000000
> 0 0 50000 N
> csi1_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> dsi_ahb 0 0 0
> 25000000
> 0 0 50000 N
> dsi_ipg_div 0 0 0
> 12500000
> 0 0 50000 Y
> dsi_esc 0 0 0
> 25000000
> 0 0 50000 N
> dsi_dbi 0 0 0
> 25000000
> 0 0 50000 N
> dsi_phy_ref 0 0 0
> 25000000
> 0 0 50000 N
> dsi_core 0 0 0
> 25000000
> 0 0 50000 N
> clko2 0 0 0
> 25000000
> 0 0 50000 N
> clko1 0 0 0
> 25000000
> 0 0 50000 N
> wdog 1 1 0
> 25000000
> 0 0 50000 Y
> wdog3_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> wdog2_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> wdog1_root_clk 1 1 0
> 25000000
> 0 0 50000 Y
> gpt1 0 0 0
> 25000000
> 0 0 50000 N
> gpt1_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> pwm4 0 0 0
> 25000000
> 0 0 50000 N
> pwm4_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> pwm3 0 0 0
> 25000000
> 0 0 50000 N
> pwm3_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> pwm2 0 0 0
> 25000000
> 0 0 50000 N
> pwm2_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> pwm1 0 0 0
> 25000000
> 0 0 50000 N
> pwm1_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> uart4 0 0 0
> 25000000
> 0 0 50000 N
> uart4_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> uart3 1 1 0
> 25000000
> 0 0 50000 Y
> uart3_root_clk 4 4 0
> 25000000
> 0 0 50000 Y
> i2c4 0 0 0
> 25000000
> 0 0 50000 N
> i2c4_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> i2c3 0 1 0
> 25000000
> 0 0 50000 N
> i2c3_root_clk 0 1 0
> 25000000
> 0 0 50000 N
> i2c2 0 1 0
> 25000000
> 0 0 50000 N
> i2c2_root_clk 0 1 0
> 25000000
> 0 0 50000 N
> i2c1 0 1 0
> 25000000
> 0 0 50000 N
> i2c1_root_clk 0 1 0
> 25000000
> 0 0 50000 N
> spdif2 0 0 0
> 25000000
> 0 0 50000 N
> spdif1 0 0 0
> 25000000
> 0 0 50000 N
> sai6 0 0 0
> 25000000
> 0 0 50000 N
> sai6_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> sai5 0 0 0
> 25000000
> 0 0 50000 N
> sai5_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> sai4 0 0 0
> 25000000
> 0 0 50000 N
> sai4_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> sai2 0 0 0
> 25000000
> 0 0 50000 N
> sai2_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> sai1 0 0 0
> 25000000
> 0 0 50000 N
> sai1_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> lcdif_pixel 0 0 0
> 25000000
> 0 0 50000 N
> disp_dc8000 0 0 0
> 25000000
> 0 0 50000 N
> disp_root_clk 0 0 0
> 25000000
> 0 0 50000 N
> disp_dtrc 0 0 0
> 25000000
> 0 0 50000 N
> noc_apb 1 1 0
> 25000000
> 0 0 50000 Y
> video2_pll1_ref_sel 0 0 0
> 25000000
> 0 0 50000 Y
> video2_pll_out 0 0 0
> 25000000
> 0 0 50000 Y
> video_pll2_out_monitor 0 0 0
> 25000000
> 0 0 50000 Y
> dram_pll1_ref_sel 1 1 0
> 25000000
> 0 0 50000 Y
> dram_pll_out 2 2 0
> 800000000
> 0 0 50000 Y
> dram_core_clk 1 1 0
> 800000000
> 0 0 50000 Y
> dram_pll_out_monitor 0 0 0
> 800000000
> 0 0 50000 Y
> sys3_pll1_ref_sel 1 1 0
> 25000000
> 0 0 50000 Y
> sys3_pll_out 1 1 0
> 25000000
> 0 0 50000 Y
> sys_pll3_out_monitor 0 0 0
> 25000000
> 0 0 50000 Y
> video_pll1_ref_sel 0 0 0
> 25000000
> 0 0 50000 Y
> video_pll1_bypass 0 0 0
> 25000000
> 0 0 50000 Y
> video_pll1_out_monitor 0 0 0
> 25000000
> 0 0 50000 Y
> video_pll1_out 0 0 0
> 25000000
> 0 0 50000 N
> dc_pixel 0 0 0
> 5000000
> 0 0 50000 N
> video_pll1_ref_div 0 0 0
> 5000000
> 0 0 50000 Y
> video_pll1 0 0 0
> 650000000
> 0 0 50000 Y
> audio_pll2_ref_sel 0 0 0
> 25000000
> 0 0 50000 Y
> audio_pll2_ref_div 0 0 0
> 5000000
> 0 0 50000 Y
> audio_pll2 0 0 0
> 722534397
> 0 0 50000 Y
> audio_pll2_bypass 0 0 0
> 722534397
> 0 0 50000 Y
> audio_pll2_out_monitor 0 0 0
> 722534397
> 0 0 50000 Y
> audio_pll2_out 0 0 0
> 722534397
> 0 0 50000 N
> audio_pll1_ref_sel 0 0 0
> 25000000
> 0 0 50000 Y
> audio_pll1_ref_div 0 0 0
> 5000000
> 0 0 50000 Y
> audio_pll1 0 0 0
> 786431998
> 0 0 50000 Y
> audio_pll1_bypass 0 0 0
> 786431998
> 0 0 50000 Y
> audio_pll1_out_monitor 0 0 0
> 786431998
> 0 0 50000 Y
> audio_pll1_out 0 0 0
> 786431998
> 0 0 50000 N
> sai3 0 0 0
> 49152000
> 0 0 50000 N
> sai3_root_clk 0 0 0
> 49152000
> 0 0 50000 N
> pll 0 0 0
> 196608000
> 0 0 50000 Y
> codec_clkin 0 0
> 0 196608000
> 0 0 50000 Y
> nadc 0 0 0
> 196608000
> 0 0 50000 Y
> madc 0 0
> 0 196608000
> 0 0 50000 Y
> ndac 0 0 0
> 196608000
> 0 0 50000 Y
> mdac 0 0
> 0 196608000
> 0 0 50000 Y
> bdiv 0 0
> 0
> 196608000 0 0 50000 Y
> vpu_pll_ref_sel 0 1 0
> 25000000
> 0 0 50000 Y
> vpu_pll_ref_div 0 1 0
> 5000000
> 0 0 50000 Y
> vpu_pll 0 1 0
> 600000000
> 0 0 50000 Y
> vpu_pll_bypass 0 1 0
> 600000000
> 0 0 50000 Y
> vpu_pll_out_monitor 0 0 0
> 600000000
> 0 0 50000 Y
> vpu_pll_out 0 2 0
> 600000000
> 0 0 50000 N
> vpu_g2 0 1 0
> 600000000
> 0 0 50000 N
> vpu_g2_root_clk 0 1 0
> 600000000
> 0 0 50000 N
> vpu_g1 0 1 0
> 600000000
> 0 0 50000 N
> vpu_g1_root_clk 0 1 0
> 600000000
> 0 0 50000 N
> gpu_pll_ref_sel 0 0 0
> 25000000
> 0 0 50000 Y
> gpu_pll_ref_div 0 0 0
> 5000000
> 0 0 50000 Y
> gpu_pll 0 0 0
> 800000000
> 0 0 50000 Y
> gpu_pll_bypass 0 0 0
> 800000000
> 0 0 50000 Y
> gpu_pll_out_monitor 0 0 0
> 800000000
> 0 0 50000 Y
> pllout_monitor_sel 0 0 0
> 800000000
> 0 0 50000 Y
> pllout_monitor_clk2 0 0
> 0
> 800000000 0 0 50000 N
> gpu_pll_out 0 0 0
> 800000000
> 0 0 50000 N
> gpu_ahb 0 0 0
> 800000000
> 0 0 50000 N
> gpu_axi 0 0 0
> 800000000
> 0 0 50000 N
> gpu_shader 0 0 0
> 800000000
> 0 0 50000 N
> gpu_core 0 0 0
> 800000000
> 0 0 50000 N
> gpu_root_clk 0 0 0
> 800000000
> 0 0 50000 N
> arm_pll_ref_sel 1 1 0
> 25000000
> 0 0 50000 Y
> arm_pll_ref_div 1 1 0
> 5000000
> 0 0 50000 Y
> arm_pll 1 1 0
> 800000000
> 0 0 50000 Y
> arm_pll_bypass 1 1 0
> 800000000
> 0 0 50000 Y
> arm_pll_out_monitor 0 0 0
> 800000000
> 0 0 50000 Y
> arm_pll_out 1 1 0
> 800000000
> 0 0 50000 Y
> arm_a53_core 1 1 0
> 800000000
> 0 0 50000 Y
> arm 1 1 0
> 800000000
> 0 0 50000 Y
> vpu_core 0 0 0
> 800000000
> 0 0 50000 N
> ckil 2 2 0
> 32768
> 0 0 50000 Y
>
I will try to duplicate the same clocks status as your on imx8mq evk. Any result will let you know in different mail.
Thanks
Sandor
> Thanks and best regards
> Alexander
>
>