i.MX6 IPU Warning

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX6 IPU Warning

2,347 Views
m_c
Senior Contributor I

Customer found HDMI will be blank for about 1~2 second with below warning on UART console.

imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000

imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_5 = 0x00800000

imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000

imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_5 = 0x00800000

1. What is this warning means?

2. Will this warning cause HDMI display blank for 1~2 second?

Labels (1)
0 Kudos
Reply
2 Replies

1,065 Views
igorpadykov
NXP Employee
NXP Employee

HI m.c.

one can look at some workarounds

mxc_hdmi: default to keep-alive (don't detect disconnect) · boundarydevices/linux-imx6@d9cd79d · Git...

Set max prio for all Exchanges with IPU1 on AXI bus · wolfgar/utilite@61643d3 · GitHub

also recommended to try latest BSP L3.14.28_1.0.0_iMX6QDLS_BUNDLE

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply

1,065 Views
m_c
Senior Contributor I

Customer adapter this suggestion but issue still happend.

The HDMI blank issue still happens. The original patch is for 3.0.35 and the patch file is not exactly the same for yocto 1.6.

Our RD patched the code to yocto 1.6 as introduced in this reference link(https://community.freescale.com/message/528479#528479)

You could see the testing result log and video(1:42~1:44).

Video link:

https://s3.eu-central-1.amazonaws.com/vepdsoftwarepm/SOLARI/Video/HDMIBlank/20150625_174248.avi

Testing result log:

========================================================================================

imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00080000

request /sito/rpc/tickets/4619 from 127.0.0.1

Got EOS from element "playbin20".

Execution ended after 1806716334 ns.

Setting pipeline to PAUSED ...

Setting pipeline to READY ...

Setting pipeline to NULL ...

Freeing pipeline ...

UTC*********

Thu Jun 25 17:44:30 UTC 2015

========================================================================================

hdmi_workround.patch

diff -urN kernel_yct1.6/drivers/video/mxc/mxc_hdmi.c kernel_yct1.6_new/drivers/video/mxc/mxc_hdmi.c

--- kernel_yct1.6/drivers/video/mxc/mxc_hdmi.c 2015-06-25 09:29:33.762810249 +0800

+++ kernel_yct1.6_new/drivers/video/mxc/mxc_hdmi.c 2015-06-24 19:33:21.229216301 +0800

@@ -80,6 +80,8 @@

#define YCBCR422_8BITS 3

#define XVYCC444            4

+static int keepalive=1;

+module_param(keepalive, bool, 0644);

/*

  * We follow a flowchart which is in the "Synopsys DesignWare Courses

  * HDMI Transmitter Controller User Guide, 1.30a", section 3.1

@@ -1999,6 +2001,7 @@

  u8 val;

  unsigned long flags;

  char event_string[32];

+ int isalive = 0;

  char *envp[] = { event_string, NULL };

  phy_int_stat = hdmi->latest_intr_stat;

@@ -2027,7 +2030,11 @@

#ifdef CONFIG_MXC_HDMI_CEC

  mxc_hdmi_cec_handle(0x80);

#endif

- } else if (!(phy_int_pol & HDMI_PHY_HPD)) {

+ if(!keepalive)

+ hdmi_writeb(HDMI_PHY_HPD, HDMI_PHY_POL0);

+ isalive=1;

+ //} else if (!(phy_int_pol & HDMI_PHY_HPD)) {

+ } else if (!keepalive) {

  /* Plugout event */

  dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n");

  hdmi_set_cable_state(0);

@@ -2054,16 +2061,21 @@

  spin_lock_irqsave(&hdmi->irq_lock, flags);

  /* Re-enable HPD interrupts */

- phy_int_mask = hdmi_readb(HDMI_PHY_MASK0);

- phy_int_mask &= ~HDMI_PHY_HPD;

- hdmi_writeb(phy_int_mask, HDMI_PHY_MASK0);

-

+ //phy_int_mask = hdmi_readb(HDMI_PHY_MASK0);

+ //phy_int_mask &= ~HDMI_PHY_HPD;

+ //hdmi_writeb(phy_int_mask, HDMI_PHY_MASK0);

+ if (!(keepalive || isalive)) {

+ phy_int_mask = hdmi_readb(HDMI_PHY_MASK0);

+ phy_int_mask &= ~HDMI_PHY_HPD;

+ hdmi_writeb(phy_int_mask, HDMI_PHY_MASK0);

+

  /* Unmute interrupts */

- hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);

-

- if (hdmi_readb(HDMI_IH_FC_STAT2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK)

- mxc_hdmi_clear_overflow(hdmi);

-

+ //hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);

+ hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);

+

+ if (hdmi_readb(HDMI_IH_FC_STAT2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK)

+ mxc_hdmi_clear_overflow(hdmi);

+ }

  spin_unlock_irqrestore(&hdmi->irq_lock, flags);

}

0 Kudos
Reply