Re: PM related problem with dispc controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 23, 2008 at 2:49 AM, Högander Jouni
<jouni.hogander@xxxxxxxxx> wrote:
> Hi,
>
> I'm debugging pm-0 branch with SDP board and seeing lots of dispc
> related error printouts:
>
> / # <4>__ratelimit: 453 callbacks suppressed
> __ratelimit: 453 callbacks suppressed
> <3>omapfb omapfb: irq error status 00e2
> omapfb omapfb: irq error status 00e2
> <3>omapfb omapfb: irq error status 00e2
> omapfb omapfb: irq error status 00e2
> <3>omapfb omapfb: irq error status 00c0
> omapfb omapfb: irq error status 00c0
> <3>omapfb omapfb: irq error status 0062
> omapfb omapfb: irq error status 0062
> <3>omapfb omapfb: irq error status 00c2
> omapfb omapfb: irq error status 00c2
>
> The error bit in all these statuses is "GFXFIFOUNDERFLOW". Is this
> something that could happen e.g. in a case that mpu wake-up from wfi
> takes too long? I mean is there some interrupt that should be served
> faster? Or is this taken care by sdma/hw triggering and now sdma is
> not capable to fill the fifo for reason or another?
>
> I have cpuidle enabled and it is "forced" to select only C1 or
> C0. This means tha MPU, NEON, CORE and PER are always
> ON/INACTIVE. Display is also on and there is penguin logo on it. When
> I see these error messages there is also flickering on the display.
>
> This far I had found that on mpu wfi something is switched off
> sometimes. I can see that from consumption of SDP board. Sometimes
> consumption is much lower on wfi even if the states of domains are
> same. When this happens, also these omapfb irq errors begin to happen.
>
> I can workaround this problem by disabling DSS_ICK AUTOIDLE. Another
> workaround is to disable hw supervised mode for core_l3_clkdm or
> core_l4_clkdm.

Try disabling the smart standby feature of DISPC

Below is the patch for the same

diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
index ce4c4de..7c868d5 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
@@ -1399,7 +1399,7 @@ static int omap_dispc_init(struct omapfb_device *fbdev, in
        /* Enable smart standby/idle, autoidle and wakeup */
        l = dispc_read_reg(DISPC_SYSCONFIG);
        l &= ~((3 << 12) | (3 << 3));
-       l |= (2 << 12) | (2 << 3) | (1 << 2) | (1 << 0);
+       l |= (2 << 3) | (1 << 2) | (1 << 0);
        dispc_write_reg(DISPC_SYSCONFIG, l);
        omap_writel(1 << 0, DSS_BASE + DSS_SYSCONFIG);

Regards,
Arun C


>
> All comments and ideas are welcome.
>
> --
> Jouni Högander
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux