lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 9 Nov 2009 13:14:24 -0800
From:	Tony Lindgren <tony@...mide.com>
To:	Janusz Krzysztofik <jkrzyszt@....icnet.pl>
Cc:	linux-omap@...r.kernel.org,
	linux-fbdev-devel@...ts.sourceforge.net,
	linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3] OMAP: DMA: Fix omapfb/lcdc on OMAP1510 broken when
 PM set

* Janusz Krzysztofik <jkrzyszt@....icnet.pl> [091105 10:52]:
> With CONFIG_PM=y, the omapfb/lcdc device on Amstrad Delta, after initially
> starting correctly, breaks with the following error messages:
> 
> omapfb omapfb: resetting (status 0xffffff96,reset count 1)
> ...
> omapfb omapfb: resetting (status 0xffffff96,reset count 100)
> omapfb omapfb: too many reset attempts, giving up.
> 
> Looking closer at this I have found that it had been broken almost 2 years ago
> with commit 2418996e3b100114edb2ae110d5d4acb928909d2, PM fixes for OMAP1.
> 
> The definite reason for broken omapfb/lcdc behavoiur in PM mode
> appeared to be ARM_IDLECT1:IDLIF_ARM (bit 6) put into idle regardless of LCD
> DMA possibly running. The bit were set based on return value of the
> omap_dma_running() function that did not check for dedicated LCD DMA
> channel status. The patch below fixes this.
> 
> Created against linux-2.6.32-rc6
> 
> Tested on Amstrad Delta
> 
> Signed-off-by: Janusz Krzysztofik <jkrzyszt@....icnet.pl>
> 
> ---
> Tuesday 03 November 2009 21:10:48 Tony Lindgren wrote:
> > * Janusz Krzysztofik <jkrzyszt@....icnet.pl> [091103 12:05]:
> > > Sorry, I've not checked for new mail before posting this one and missed
> > > your acceptance for my idea of fixing all omap1510, not only ams_delta.
> > > If there are no more comments, I'll submit v3 with cpu_is_omap1510()
> > > replacing machine_is_ams_delta().
> >
> > Sounds good to me.
> >
> > Tony
> 
> --- linux-2.6.32-rc6/arch/arm/plat-omap/dma.c.orig	2009-11-03 20:37:49.000000000 +0100
> +++ linux-2.6.32-rc6/arch/arm/plat-omap/dma.c	2009-11-05 19:30:39.000000000 +0100
> @@ -1108,6 +1108,14 @@ int omap_dma_running(void)
>  {
>  	int lch;
>  
> +	/*
> +	 * On OMAP1510, internal LCD controller will start the transfer
> +	 * when it gets enabled, so assume DMA running if LCD enabled.
> +	 */
> +	if (cpu_is_omap1510())
> +		if (omap_readw(0xfffec000 + 0x00) & (1 << 0))
> +			return 1;
> +
>  	/* Check if LCD DMA is running */
>  	if (cpu_is_omap16xx())
>  		if (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN)

Can you please use some define rather than the 0xfffec000 register
above?

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists