diff for duplicates of <20091111190633.GF24837@atomide.com> diff --git a/a/1.txt b/N1/1.txt index b67412a..fb2b776 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -3,56 +3,3 @@ Here One more fix that I forgot about. Tony - ->From 8561a84f85eccddf46212622f1f18317a220891b Mon Sep 17 00:00:00 2001 -From: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> -Date: Wed, 11 Nov 2009 11:00:03 -0800 -Subject: [PATCH] omap: Fix omapfb/lcdc on OMAP1510 broken when PM set - -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. - -Note that the hardcoded register value will be fixed during the next merge -cycle to use OMAP_LCDC_ defines. Currently the OMAP_LCDC_ defines are local -to drivers/video/omap/lcdc.c, so let's not start moving those right now. - -Created against linux-2.6.32-rc6 - -Tested on Amstrad Delta - -Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> -Signed-off-by: Tony Lindgren <tony@atomide.com> - -diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c -index 02ed945..68eaae3 100644 ---- a/arch/arm/plat-omap/dma.c -+++ b/arch/arm/plat-omap/dma.c -@@ -1114,6 +1114,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) diff --git a/a/content_digest b/N1/content_digest index 4f9b1eb..13bf053 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,70 +1,15 @@ "ref\020091111025907.31793.84134.stgit@localhost\0" "ref\020091111030045.31793.89110.stgit@localhost\0" - "From\0Tony Lindgren <tony@atomide.com>\0" + "From\0tony@atomide.com (Tony Lindgren)\0" "Subject\0[PATCH 2.5/8] omap: Fix omapfb/lcdc on OMAP1510 broken when PM set\0" "Date\0Wed, 11 Nov 2009 11:06:33 -0800\0" "To\0linux-arm-kernel@lists.infradead.org\0" - "Cc\0Tobias Klauser <tklauser@distanz.ch>" - " linux-omap@vger.kernel.org\0" "\00:1\0" "b\0" "Here\n" "\n" "One more fix that I forgot about.\n" "\n" - "Tony\n" - "\n" - ">From 8561a84f85eccddf46212622f1f18317a220891b Mon Sep 17 00:00:00 2001\n" - "From: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>\n" - "Date: Wed, 11 Nov 2009 11:00:03 -0800\n" - "Subject: [PATCH] omap: Fix omapfb/lcdc on OMAP1510 broken when PM set\n" - "\n" - "With CONFIG_PM=y, the omapfb/lcdc device on Amstrad Delta, after initially\n" - "starting correctly, breaks with the following error messages:\n" - "\n" - "omapfb omapfb: resetting (status 0xffffff96,reset count 1)\n" - "...\n" - "omapfb omapfb: resetting (status 0xffffff96,reset count 100)\n" - "omapfb omapfb: too many reset attempts, giving up.\n" - "\n" - "Looking closer at this I have found that it had been broken almost 2 years ago\n" - "with commit 2418996e3b100114edb2ae110d5d4acb928909d2, PM fixes for OMAP1.\n" - "\n" - "The definite reason for broken omapfb/lcdc behavoiur in PM mode\n" - "appeared to be ARM_IDLECT1:IDLIF_ARM (bit 6) put into idle regardless of LCD\n" - "DMA possibly running. The bit were set based on return value of the\n" - "omap_dma_running() function that did not check for dedicated LCD DMA\n" - "channel status. The patch below fixes this.\n" - "\n" - "Note that the hardcoded register value will be fixed during the next merge\n" - "cycle to use OMAP_LCDC_ defines. Currently the OMAP_LCDC_ defines are local\n" - "to drivers/video/omap/lcdc.c, so let's not start moving those right now.\n" - "\n" - "Created against linux-2.6.32-rc6\n" - "\n" - "Tested on Amstrad Delta\n" - "\n" - "Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>\n" - "Signed-off-by: Tony Lindgren <tony@atomide.com>\n" - "\n" - "diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c\n" - "index 02ed945..68eaae3 100644\n" - "--- a/arch/arm/plat-omap/dma.c\n" - "+++ b/arch/arm/plat-omap/dma.c\n" - "@@ -1114,6 +1114,14 @@ int omap_dma_running(void)\n" - " {\n" - " \tint lch;\n" - " \n" - "+\t/*\n" - "+\t * On OMAP1510, internal LCD controller will start the transfer\n" - "+\t * when it gets enabled, so assume DMA running if LCD enabled.\n" - "+\t */\n" - "+\tif (cpu_is_omap1510())\n" - "+\t\tif (omap_readw(0xfffec000 + 0x00) & (1 << 0))\n" - "+\t\t\treturn 1;\n" - "+\n" - " \t/* Check if LCD DMA is running */\n" - " \tif (cpu_is_omap16xx())\n" - " \t\tif (omap_readw(OMAP1610_DMA_LCD_CCR) & OMAP_DMA_CCR_EN)" + Tony -493768423b8f48fb2b92c1677ca7bc1e6850633a2d8fe5312e0cf058ea62d995 +47ea1dbddf4b211dcad74966e92efc12099cbfaef3fb3e58c4bd5f833044a030
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.