ofppc isa support

KIYOHARA Takashi <[email protected]> Thu, 11 Mar 2010 16:52:03 +0900 (JST)
Newsgroups gmane.os.netbsd.ports.ofppc,gmane.os.netbsd.ports.powerpc
Message-ID <[email protected]>
Hi! all,


I fix isa(4) support for ofw.  ofw not initialized bus_space for isa.
It tested on my ofppc(PegasosII).

I will fix at this weekend.

Thanks,
--
kiyohara
  Next will test ieee1394 on this machine.
  Connect to OPENBLOCKS266 with fwip(4).
ofw-isa-support.diff (text/plain, 2.4 KB)
Index: ofw_consinit.c
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/oea/ofw_consinit.c,v
retrieving revision 1.9
diff -u -r1.9 ofw_consinit.c
--- ofw_consinit.c	10 Mar 2010 18:36:05 -0000	1.9
+++ ofw_consinit.c	10 Mar 2010 18:42:38 -0000
@@ -219,9 +219,9 @@
 		return;
 	}
 
-#if NAKBD > 0
 	memset(name, 0, sizeof(name));
 	OF_getprop(OF_parent(node), "name", name, sizeof(name));
+#if NAKBD > 0
 	if (strcmp(name, "adb") == 0) {
 		printf("console keyboard type: ADB\n");
 		akbd_cnattach();
@@ -229,8 +229,6 @@
 	}
 #endif
 #if NADBKBD > 0
-	memset(name, 0, sizeof(name));
-	OF_getprop(OF_parent(node), "name", name, sizeof(name));
 	if (strcmp(name, "adb") == 0) {
 		printf("console keyboard type: ADB\n");
 		adbkbd_cnattach();
@@ -238,9 +236,7 @@
 	}
 #endif
 #if NPCKBC > 0
-	memset(name, 0, sizeof(name));
-	OF_getprop(OF_parent(node), "name", name, sizeof(name));
-	if (strcmp(name, "keyboard") == 0) {
+	if (strcmp(name, "isa") == 0) {
 		printf("console keyboard type: PC Keyboard\n");
 		pckbc_cnattach(&genppc_isa_io_space_tag, IO_KBD, KBCMDP,
 		    PCKBC_KBD_SLOT);
Index: ofwoea_machdep.c
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/oea/ofwoea_machdep.c,v
retrieving revision 1.19
diff -u -r1.19 ofwoea_machdep.c
--- ofwoea_machdep.c	10 Mar 2010 18:36:05 -0000	1.19
+++ ofwoea_machdep.c	10 Mar 2010 18:42:38 -0000
@@ -167,6 +167,8 @@
 			    sizeof(model_name));
 		model_init();
 	}
+	/* Initialize bus_space */
+	ofwoea_bus_space_init();
 
 	ofwoea_consinit();
 
@@ -583,6 +585,10 @@
 		 */
 		if (range == -1) {
 			/* we found a rangeless isa bus */
+			if (iomem == RANGE_IO)
+				size = 0x10000;
+			else
+				size = 0x1000000;
 		}
 		DPRINTF("found isa stuff\n");
 		for (i=0; i < range; i++)
@@ -595,7 +601,10 @@
 					DPRINTF("found IO\n");
 					tag->pbs_offset = list[i].addr;
 					tag->pbs_limit = size;
-					error = bus_space_init(tag, name, NULL, 0);
+					error = bus_space_init(tag, name,
+					    ex_storage[exmap],
+					    sizeof(ex_storage[exmap]));
+					exmap++;
 					return error;
 				}
 		} else {
@@ -605,7 +614,10 @@
 					DPRINTF("found mem\n");
 					tag->pbs_offset = list[i].addr;
 					tag->pbs_limit = size;
-					error = bus_space_init(tag, name, NULL, 0);
+					error = bus_space_init(tag, name,
+					    ex_storage[exmap],
+					    sizeof(ex_storage[exmap]));
+					exmap++;
 					return error;
 				}
 		}