[PATCH 2/2] OLPC: drop pre-OpenFirmware workarounds

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andrew Morton <akpm@...>
Cc: Joseph Fannin <jfannin@...>, <linux-kernel@...>, Ingo Molnar <mingo@...>, <jordan.crouse@...>, Mitch Bradley <wmb@...>
Date: Saturday, April 19, 2008 - 1:39 pm

Prior to including OFW kernel support, we had to work around the lack of
OFW.  Once OFW support is added, we can switch to using it.  This cleans
up some pre-OFW model detection and OFW signature detection.

Note: this should be a bit nicer to non-OLPC hardware.

Signed-off-by: Andres Salomon <dilinger@debian.org>
---
 arch/x86/kernel/olpc.c |   43 +++++++++++++++++++++++++++++--------------
 1 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/arch/x86/kernel/olpc.c b/arch/x86/kernel/olpc.c
index 11670be..3a05683 100644
--- a/arch/x86/kernel/olpc.c
+++ b/arch/x86/kernel/olpc.c
@@ -190,11 +190,11 @@ EXPORT_SYMBOL_GPL(olpc_ec_cmd);
 static void __init platform_detect(void)
 {
 	size_t propsize;
-	u32 rev;
+	uint32_t rev;
 
 	if (ofw("getprop", 4, 1, NULL, "board-revision-int", &rev, 4,
 			&propsize) || propsize != 4) {
-		printk(KERN_ERR "ofw: getprop call failed!\n");
+		printk(KERN_ERR "olpc:  ofw getprop call failed!\n");
 		rev = 0;
 	}
 	olpc_platform_info.boardrev = be32_to_cpu(rev);
@@ -207,26 +207,43 @@ static void __init platform_detect(void)
 }
 #endif
 
-static int __init olpc_init(void)
+static int __init ofw_detect(void)
 {
-	unsigned char *romsig;
+	size_t propsize;
+	char romsig[20];
+	ofw_phandle phandle;
 
-	spin_lock_init(&ec_lock);
+	/* Fetch /openprom/model */
+	if (ofw("finddevice", 1, 1, "/openprom", &phandle) || phandle == ~0)
+		return -ENODEV;
 
-	romsig = ioremap(0xffffffc0, 16);
-	if (!romsig)
-		return 0;
+	if (ofw("getprop", 4, 1, phandle, "model", &romsig, sizeof(romsig),
+			&propsize) || propsize < 7)
+		return -ENODEV;
 
+	/* String should look something like "CL1   Q2D08  Q2D" */
 	if (strncmp(romsig, "CL1   Q", 7))
-		goto unmap;
+		return -ENODEV;
 	if (strncmp(romsig+6, romsig+13, 3)) {
-		printk(KERN_INFO "OLPC BIOS signature looks invalid.  "
+		printk(KERN_INFO "olpc:  BIOS signature looks invalid.  "
 				"Assuming not OLPC\n");
-		goto unmap;
+		return -ENODEV;
 	}
 
-	printk(KERN_INFO "OLPC board with OpenFirmware %.16s\n", romsig);
+	/* Looks like we have OLPC's OFW */
 	olpc_platform_info.flags |= OLPC_F_PRESENT;
+	printk(KERN_INFO "olpc:  board with OpenFirmware %.16s\n", romsig);
+
+	return 0;
+}
+
+static int __init olpc_init(void)
+{
+	spin_lock_init(&ec_lock);
+
+	/* ensure OFW is available */
+	if (ofw_detect())
+		return 0;
 
 	/* get the platform revision */
 	platform_detect();
@@ -248,8 +265,6 @@ static int __init olpc_init(void)
 			olpc_platform_info.boardrev >> 4,
 			olpc_platform_info.ecver);
 
-unmap:
-	iounmap(romsig);
 	return 0;
 }
 
-- 
1.5.4.4



-- 
Need a kernel or Debian developer?  Contact me, I'm looking for contracts.
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
2.6.25-mm1, Andrew Morton, (Fri Apr 18, 4:47 am)
[Was: 2.6.25-mm1], Jiri Slaby, (Mon Apr 21, 4:31 am)
Re: [Was: 2.6.25-mm1], Al Viro, (Mon Apr 21, 5:06 am)
fault in __d_lookup [Was: 2.6.25-mm1], Jiri Slaby, (Mon Apr 21, 5:37 am)
Re: fault in __d_lookup [Was: 2.6.25-mm1], Al Viro, (Mon Apr 21, 5:45 am)
Re: fault in __d_lookup [Was: 2.6.25-mm1], Jiri Slaby, (Mon Apr 21, 5:59 am)
Re: fault in __d_lookup [Was: 2.6.25-mm1], Matthew Wilcox, (Mon Apr 21, 1:23 pm)
Re: fault in __d_lookup [Was: 2.6.25-mm1], Rafael J. Wysocki, (Mon Apr 21, 9:42 am)
internal compiler error: SIGSEGV [Was: 2.6.25-mm1], Jiri Slaby, (Sun Apr 20, 7:29 am)
Re: 2.6.25-mm1, Joseph Fannin, (Fri Apr 18, 11:10 pm)
Re: 2.6.25-mm1, Andrew Morton, (Fri Apr 18, 11:29 pm)
Re: 2.6.25-mm1, Arjan van de Ven, (Sat Apr 19, 2:21 pm)
Re: 2.6.25-mm1, Andres Salomon, (Sat Apr 19, 9:25 am)
Re: 2.6.25-mm1, Andrew Morton, (Sat Apr 19, 1:38 pm)
Re: 2.6.25-mm1, Andres Salomon, (Sat Apr 19, 1:50 pm)
Re: 2.6.25-mm1, Jordan Crouse, (Mon Apr 21, 10:56 am)
Re: 2.6.25-mm1, Andres Salomon, (Mon Apr 21, 11:05 am)
Re: 2.6.25-mm1, Jordan Crouse, (Mon Apr 21, 11:12 am)
[PATCH 2/2] OLPC: drop pre-OpenFirmware workarounds, Andres Salomon, (Sat Apr 19, 1:39 pm)
Re: OLPC: only check for OFW signature on VSA-less Geodes, Jordan Crouse, (Mon Apr 21, 5:17 pm)
Re: OLPC: Add support for calling into Open Firmware, Jordan Crouse, (Mon Apr 21, 11:05 am)
Re: OLPC: Add support for calling into Open Firmware, H. Peter Anvin, (Mon Apr 21, 10:58 am)
Re: 2.6.25-mm1, Joseph Fannin, (Fri Apr 18, 10:25 pm)
Re: 2.6.25-mm1, Andrew Morton, (Fri Apr 18, 11:08 pm)
Re: 2.6.25-mm1, Joseph Fannin, (Fri Apr 18, 10:13 pm)
Re: 2.6.25-mm1, Andrew Morton, (Fri Apr 18, 11:02 pm)
Re: 2.6.25-mm1, Dmitry Torokhov, (Sat Apr 19, 12:14 am)
Re: 2.6.25-mm1, Andrew Morton, (Sat Apr 19, 12:29 am)
Re: 2.6.25-mm1, Takashi Iwai, (Mon Apr 21, 10:06 am)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Mon Apr 21, 1:55 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Takashi Iwai, (Tue Apr 22, 6:13 am)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Tue Apr 22, 2:31 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Takashi Iwai, (Wed Apr 23, 4:49 am)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Wed Apr 23, 4:02 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Takashi Iwai, (Thu Apr 24, 5:40 am)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Thu Apr 24, 11:51 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Takashi Iwai, (Fri Apr 25, 2:28 am)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Fri Apr 25, 12:45 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Dmitry Torokhov, (Fri Apr 25, 2:09 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Fri Apr 25, 2:31 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Dmitry Torokhov, (Fri Apr 25, 2:37 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Takashi Iwai, (Fri Apr 25, 12:51 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Takashi Iwai, (Fri May 2, 12:44 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Fri May 2, 12:57 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Takashi Iwai, (Tue May 6, 6:20 am)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Tue May 6, 12:51 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Fri Apr 25, 1:25 pm)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Takashi Iwai, (Wed Apr 23, 10:18 am)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Dmitry Torokhov, (Tue Apr 22, 10:01 am)
Re: 2.6.25-mm1 (snd-pcsp doesn't like DEBUG_PAGEALLOC), Stas Sergeev, (Tue Apr 22, 12:42 pm)
Re: 2.6.25-mm1, Takashi Iwai, (Mon Apr 21, 7:07 am)
Re: 2.6.25-mm1, Stas Sergeev, (Mon Apr 21, 3:45 pm)
Re: 2.6.25-mm1 (snd-pcsp causes driver conflict), Stas Sergeev, (Mon Apr 21, 1:44 pm)
Re: 2.6.25-mm1 (snd-pcsp causes driver conflict), Takashi Iwai, (Tue Apr 22, 6:09 am)
Re: 2.6.25-mm1 (snd-pcsp causes driver conflict), Stas Sergeev, (Tue Apr 22, 1:54 pm)
Re: 2.6.25-mm1 (snd-pcsp causes driver conflict), Takashi Iwai, (Wed Apr 23, 4:55 am)
Re: 2.6.25-mm1 (snd-pcsp causes driver conflict), Takashi Iwai, (Wed Apr 23, 10:14 am)
Re: 2.6.25-mm1, Joseph Fannin, (Sat Apr 19, 2:33 am)
2.6.25-mm1: orphaned files after build, Alexey Dobriyan, (Fri Apr 18, 7:09 pm)
Re: 2.6.25-mm1, , (Fri Apr 18, 4:14 pm)
Re: 2.6.25-mm1 (build error: trace selftest), Randy Dunlap, (Fri Apr 18, 12:45 pm)
Re: 2.6.25-mm1 (build error: driver core), Randy Dunlap, (Fri Apr 18, 12:40 pm)
Re: 2.6.25-mm1 (build error: driver core), Greg KH, (Fri Apr 18, 12:56 pm)
Re: 2.6.25-mm1 (build error: driver core), Dan Williams, (Fri Apr 18, 2:38 pm)
StackProtector Oopses - Re: 2.6.25-mm1, Reuben Farrelly, (Fri Apr 18, 9:02 am)
Re: StackProtector Oopses - Re: 2.6.25-mm1, Ingo Molnar, (Fri Apr 18, 9:36 am)
Re: StackProtector Oopses - Re: 2.6.25-mm1, Reuben Farrelly, (Fri Apr 18, 10:49 am)
Re: StackProtector Oopses - Re: 2.6.25-mm1, Ingo Molnar, (Mon Apr 21, 11:06 am)
Re: StackProtector Oopses - Re: 2.6.25-mm1, Arjan van de Ven, (Mon Apr 21, 9:48 pm)
Re: StackProtector Oopses - Re: 2.6.25-mm1, Ingo Molnar, (Tue Apr 22, 4:34 am)
Re: StackProtector Oopses - Re: 2.6.25-mm1, Arjan van de Ven, (Tue Apr 22, 10:29 am)
Re: StackProtector Oopses - Re: 2.6.25-mm1, Arjan van de Ven, (Fri Apr 18, 9:51 am)
Re: StackProtector Oopses - Re: 2.6.25-mm1, Reuben Farrelly, (Fri Apr 18, 10:41 am)