[TuxOnIce-devel] [RFC PATCH] Current status, suspend-to-disk support on ARM

Frank Hofmann frank.hofmann at tomtom.com
Tue Apr 19 14:13:07 EDT 2011


On Mon, 18 Apr 2011, Matt Hsu wrote:

>>
>>
>> The last thing here in my setup that's obviously not correctly suspending /
>> resuming is the OMAP display driver; I'm not the only one with that problem,
>> Matt's previous report:
>>
>> http://blog.gmane.org/gmane.linux.swsusp.devel/month=20101201
>>
>> has the same thing, "omapdss DISPC error: SYNC_LOST, disabling LCD".
>>
>>
>>     Hi FrankH,
>
>    Above issue could be resolved by:

Thanks Matt.

It didn't do the trick for me, but then a solution was found; we were 
using the omap dss vrfb component and that didn't resume properly (not 
from ram, nor from disk). We've disabled it and behold, screen comes back 
now ;-)


New patch set once I've done a bit more testing. I've found a way to use 
swapper_pg_dir (i.e. should allow for uswsusp - how would I test that ?) 
that seems to do the job on OMAP as well, but I'd rather validate 
thoroughly.


Also, I'd like to investigate whether ARM will require a set of 
platform_hibernation_ops - Samsung's patch from last December,

http://www.spinics.net/lists/arm-kernel/msg108565.html

seems to indicate that they believe it's necessary at least on some ARM 
hardware. OMAP has similar functions to that, it'd be great to unify.


FrankH.


>
>   - CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE=y
>   - the following patch
>
> diff --git a/drivers/video/omap2/dss/dispc.c
> b/drivers/video/omap2/dss/dispc.c
> index 8b3ac80..a188732 100644
> --- a/drivers/video/omap2/dss/dispc.c
> +++ b/drivers/video/omap2/dss/dispc.c
> @@ -2784,7 +2784,6 @@ static void dispc_error_worker(struct work_struct
> *work)
>                bool enable = false;
>
>                DSSERR("SYNC_LOST, disabling LCD\n");
>
>                for (i = 0; i < omap_dss_get_num_overlay_managers(); ++i) {
>                        struct omap_overlay_manager *mgr;
>                        mgr = omap_dss_get_overlay_manager(i);
> @@ -2815,6 +2814,9 @@ static void dispc_error_worker(struct work_struct
> *work)
>                        if (enable)
>                                manager->device->enable(manager->device);
>                }
> +
> +               dispc_enable_lcd_out(false);
> +               dispc_enable_lcd_out(true);
>
>     Although this patch is somehow nasty, but it work anyway.
>
> - Matt
>



More information about the linux-arm-kernel mailing list