linux-omap2 git: fix dispc init for beagleboard
authorKoen Kooi <koen@openembedded.org>
Sun, 22 Jun 2008 08:41:05 +0000 (08:41 +0000)
committerKoen Kooi <koen@openembedded.org>
Sun, 22 Jun 2008 08:41:05 +0000 (08:41 +0000)
packages/linux/linux-omap2-git/beagleboard/fix-dispc-clocks.patch [new file with mode: 0644]
packages/linux/linux-omap2_git.bb

diff --git a/packages/linux/linux-omap2-git/beagleboard/fix-dispc-clocks.patch b/packages/linux/linux-omap2-git/beagleboard/fix-dispc-clocks.patch
new file mode 100644 (file)
index 0000000..aade27f
--- /dev/null
@@ -0,0 +1,147 @@
+From linux-omap-owner@vger.kernel.org Sun Jun 22 10:11:39 2008\r
+Received: from localhost\r
+       ([127.0.0.1] helo=dominion ident=koen)\r
+       by dominion.dominion.void with esmtp (Exim 4.63)\r
+       (envelope-from <linux-omap-owner@vger.kernel.org>)\r
+       id 1KAKfj-0008Qc-FC\r
+       for koen@localhost; Sun, 22 Jun 2008 10:11:39 +0200\r
+Received: from xs.service.utwente.nl [130.89.5.250]\r
+       by dominion with POP3 (fetchmail-6.3.6)\r
+       for <koen@localhost> (single-drop); Sun, 22 Jun 2008 10:11:39 +0200 (CEST)\r
+Received: from mail.service.utwente.nl ([130.89.5.253]) by exchange.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959);\r
+        Sat, 21 Jun 2008 19:06:02 +0200\r
+Received: from smtp.utwente.nl ([130.89.2.9]) by mail.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959);\r
+        Sat, 21 Jun 2008 19:06:01 +0200\r
+Received: from vger.kernel.org (vger.kernel.org [209.132.176.167])\r
+          by smtp.utwente.nl (8.12.10/SuSE Linux 0.7) with ESMTP id m5LH5TSm026212\r
+          for <k.kooi@student.utwente.nl>; Sat, 21 Jun 2008 19:05:30 +0200\r
+Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand\r
+       id S1753396AbYFURFN (ORCPT <rfc822;k.kooi@student.utwente.nl>);\r
+       Sat, 21 Jun 2008 13:05:13 -0400\r
+Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753305AbYFURFN\r
+       (ORCPT <rfc822;linux-omap-outgoing>);\r
+       Sat, 21 Jun 2008 13:05:13 -0400\r
+Received: from utopia.booyaka.com ([72.9.107.138]:41675 "EHLO\r
+       utopia.booyaka.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\r
+       with ESMTP id S1753145AbYFURFL (ORCPT\r
+       <rfc822;linux-omap@vger.kernel.org>); Sat, 21 Jun 2008 13:05:11 -0400\r
+Received: (qmail 20532 invoked by uid 526); 21 Jun 2008 17:05:10 -0000\r
+Date:  Sat, 21 Jun 2008 11:05:10 -0600 (MDT)\r
+From: Paul Walmsley <paul@pwsan.com>\r
+To: "Gadiyar, Anand" <gadiyar@ti.com>,\r
+        "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>\r
+cc: Dirk Behme <dirk.behme@googlemail.com>,\r
+        "jouni.hogander@nokia.com" <jouni.hogander@nokia.com>\r
+Subject: [PATCH] OMAP3 clock: fix omap2_clk_wait_ready for OMAP3430ES2 DSS\r
+In-Reply-To: <5A47E75E594F054BAF48C5E4FC4B92AB022BB66209@dbde02.ent.ti.com>\r
+Message-ID: <alpine.DEB.1.00.0806211054100.19765@utopia.booyaka.com>\r
+References: <5A47E75E594F054BAF48C5E4FC4B92AB022BE46296@dbde02.ent.ti.com>,<485CA347.909@googlemail.com> <5A47E75E594F054BAF48C5E4FC4B92AB022BB66209@dbde02.ent.ti.com>\r
+User-Agent: Alpine 1.00 (DEB 882 2007-12-20)\r
+MIME-Version: 1.0\r
+Content-Type: TEXT/PLAIN; charset=US-ASCII\r
+Sender: linux-omap-owner@vger.kernel.org\r
+Precedence: bulk\r
+List-ID: <linux-omap.vger.kernel.org>\r
+X-Mailing-List:        linux-omap@vger.kernel.org\r
+X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact servicedesk@icts.utwente.nl for more information.\r
+X-UTwente-MailScanner: Found to be clean\r
+X-UTwente-MailScanner-From: linux-omap-owner@vger.kernel.org\r
+X-Spam-Status: No\r
+X-OriginalArrivalTime: 21 Jun 2008 17:06:02.0187 (UTC) FILETIME=[157001B0:01C8D3C1]\r
+\r
+\r
+On OMAP3430ES2, DSS has both an initiator standby CM_IDLEST bit, and a\r
+target idle CM_IDLEST bit.  This is a departure from previous silicon,\r
+which only had an initiator standby bit.\r
+\r
+This means we need to test the target idle bit after enabling\r
+dss1_alwon_fclk.  Previous clock code has done the wrong thing since ES2\r
+came out: it's either tested the wrong bit, causing intermittent\r
+\r
+    Clock dss1_alwon_fck didn't enable in 100000 tries\r
+\r
+messages; or not tested anything at all, causing intermittent crashes \r
+during DISPC initialization with:\r
+\r
+    Unhandled fault: external abort on non-linefetch (0x1028)\r
+\r
+This patch modifies omap2_clk_wait_ready() to wait for the DSS to become\r
+accessible after dss1_alwon_fclk is enabled.\r
+\r
+Thanks to Anand Gadiyar <gadiyar@ti.com> for identifying one of the\r
+problem patches.\r
+\r
+Signed-off-by: Paul Walmsley <paul@pwsan.com>\r
+---\r
+\r
+ arch/arm/mach-omap2/clock.c           |   30 ++++++++++++++++++++++++------\r
+ arch/arm/mach-omap2/cm-regbits-34xx.h |    4 +++-\r
+ 2 files changed, 27 insertions(+), 7 deletions(-)\r
+\r
+diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c\r
+index ed15868..1820f75 100644\r
+--- a/arch/arm/mach-omap2/clock.c\r
++++ b/arch/arm/mach-omap2/clock.c\r
+@@ -244,18 +244,36 @@ static void omap2_clk_wait_ready(struct clk *clk)\r
+       }\r
\r
+       /* REVISIT: What are the appropriate exclusions for 34XX? */\r
+-      /* OMAP3: ignore DSS-mod clocks */\r
+-      if (cpu_is_omap34xx() &&\r
+-          ((reg & ~0xff) == (__force u32)OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD, 0) ||\r
+-           (((reg & ~0xff) == (__force u32)OMAP34XX_CM_REGADDR(CORE_MOD, 0)) &&\r
+-            clk->enable_bit == OMAP3430_EN_SSI_SHIFT)))\r
+-              return;\r
++      if (cpu_is_omap34xx()) {\r
++\r
++              /* 3430ES1 DSS and SSI have no target idlest bits */\r
++              if (is_sil_rev_equal_to(OMAP3430_REV_ES1_0) &&\r
++                  ((reg & ~0xff) == (__force u32)OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD, 0) ||\r
++                   ((reg & ~0xff) == (__force u32)OMAP34XX_CM_REGADDR(CORE_MOD, 0) &&\r
++                    clk->enable_bit == OMAP3430_EN_SSI_SHIFT)))\r
++                      return;\r
++\r
++              /* Even for 3430ES2 DSS, only wait for dss1_alwon_fclk */\r
++              if (is_sil_rev_greater_than(OMAP3430_REV_ES1_0) &&\r
++                  (reg & ~0xff) == (__force u32)OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD, 0) &&\r
++                  clk->enable_bit != OMAP3430_EN_DSS1_SHIFT)\r
++                      return;\r
++\r
++      }\r
\r
+       /* Check if both functional and interface clocks\r
+        * are running. */\r
+       bit = 1 << clk->enable_bit;\r
+       if (!(__raw_readl((__force void __iomem *)other_reg) & bit))\r
+               return;\r
++\r
++      /* OMAP3430ES2 DSS is an unusual case */\r
++      if (cpu_is_omap34xx() &&\r
++          (reg & ~0xff) == (__force u32)OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD, 0) &&\r
++          clk->enable_bit == OMAP3430_EN_DSS1_SHIFT) {\r
++              bit = OMAP3430ES2_ST_DSS_IDLE;\r
++      }\r
++\r
+       st_reg = ((other_reg & ~0xf0) | 0x20); /* CM_IDLEST* */\r
\r
+       omap2_wait_clock_ready((__force void __iomem *)st_reg, bit, clk->name);\r
+diff --git a/arch/arm/mach-omap2/cm-regbits-34xx.h b/arch/arm/mach-omap2/cm-regbits-34xx.h\r
+index 6ec66f4..946c552 100644\r
+--- a/arch/arm/mach-omap2/cm-regbits-34xx.h\r
++++ b/arch/arm/mach-omap2/cm-regbits-34xx.h\r
+@@ -500,7 +500,9 @@\r
+ #define OMAP3430_CM_ICLKEN_DSS_EN_DSS_SHIFT           0\r
\r
+ /* CM_IDLEST_DSS */\r
+-#define OMAP3430_ST_DSS                                       (1 << 0)\r
++#define OMAP3430ES2_ST_DSS_IDLE                               (1 << 1)\r
++#define OMAP3430ES2_ST_DSS_STDBY                      (1 << 0)\r
++#define OMAP3430ES1_ST_DSS                            (1 << 0)\r
\r
+ /* CM_AUTOIDLE_DSS */\r
+ #define OMAP3430_AUTO_DSS                             (1 << 0)\r
+--\r
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in\r
+the body of a message to majordomo@vger.kernel.org\r
+More majordomo info at  http://vger.kernel.org/majordomo-info.html\r
+\r
index 90ccda5..252e3da 100644 (file)
@@ -5,7 +5,7 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-omap2-git/${MA
 SRCREV = "5b97d3ec6732c87741b2fc04f2956f097a458818"
 
 PV = "2.6.25+2.6.26-rc6+${PR}+git${SRCREV}"
-PR = "r26"
+PR = "r27"
 
 
 SRC_URI = "git://source.mvista.com/git/linux-omap-2.6.git;protocol=git \
@@ -20,6 +20,7 @@ SRC_URI_append_beagleboard = " file://no-harry-potter.diff;patch=1 \
            file://0001-omap3-cpuidle.patch;patch=1 \ 
            file://0002-omap3-cpuidle.patch;patch=1 \
            file://timer-suppression.patch;patch=1 \
+           file://fix-dispc-clocks.patch;patch=1 \
 "
 
 SRC_URI_append_omap3evm = " file://no-harry-potter.diff;patch=1 \