Module Name:    src
Committed By:   phx
Date:           Thu Jan 13 22:02:06 UTC 2011

Modified Files:
        src/sys/arch/amiga/amiga: autoconf.c machdep.c
        src/sys/arch/amiga/dev: gayle_pcmcia.c wdc_amiga.c
        src/sys/arch/amiga/include: cpu.h
        src/sys/arch/amiga/stand/bootblock/boot: main.c

Log Message:
Recognize Amiga 600 model.
Patch submited by Radoslaw Kujawa.


To generate a diff of this commit:
cvs rdiff -u -r1.105 -r1.106 src/sys/arch/amiga/amiga/autoconf.c
cvs rdiff -u -r1.227 -r1.228 src/sys/arch/amiga/amiga/machdep.c
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/amiga/dev/gayle_pcmcia.c
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/amiga/dev/wdc_amiga.c
cvs rdiff -u -r1.76 -r1.77 src/sys/arch/amiga/include/cpu.h
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/amiga/stand/bootblock/boot/main.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/amiga/amiga/autoconf.c
diff -u src/sys/arch/amiga/amiga/autoconf.c:1.105 src/sys/arch/amiga/amiga/autoconf.c:1.106
--- src/sys/arch/amiga/amiga/autoconf.c:1.105	Fri May 21 12:56:47 2010
+++ src/sys/arch/amiga/amiga/autoconf.c	Thu Jan 13 22:02:05 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: autoconf.c,v 1.105 2010/05/21 12:56:47 phx Exp $	*/
+/*	$NetBSD: autoconf.c,v 1.106 2011/01/13 22:02:05 phx Exp $	*/
 
 /*
  * Copyright (c) 1994 Christian E. Hopps
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.105 2010/05/21 12:56:47 phx Exp $");
+__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.106 2011/01/13 22:02:05 phx Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -284,13 +284,13 @@
 		config_found(dp, __UNCONST("amidisplaycc"), simple_devprint);
 		config_found(dp, __UNCONST("fdc"), simple_devprint);
 	}
-	if (is_a4000() || is_a1200())
+	if (is_a4000() || is_a1200() || is_a600())
 		config_found(dp, __UNCONST("wdc"), simple_devprint);
 	if (is_a4000())			/* Try to configure A4000T SCSI */
 		config_found(dp, __UNCONST("afsc"), simple_devprint);
 	if (is_a3000())
 		config_found(dp, __UNCONST("ahsc"), simple_devprint);
-	if (/*is_a600() || */is_a1200())
+	if (is_a600() || is_a1200())
 		config_found(dp, __UNCONST("pccard"), simple_devprint);
 #ifdef DRACO
 	if (!is_draco())
@@ -571,3 +571,11 @@
 		return (1);		/* It's an A1200 */
 	return (0);			/* Machine type not set */
 }
+
+int
+is_a600()
+{
+	if ((machineid >> 16) == 600)
+		return (1);		/* It's an A600 */
+	return (0);			/* Machine type not set */
+}

Index: src/sys/arch/amiga/amiga/machdep.c
diff -u src/sys/arch/amiga/amiga/machdep.c:1.227 src/sys/arch/amiga/amiga/machdep.c:1.228
--- src/sys/arch/amiga/amiga/machdep.c:1.227	Sat Oct 16 17:10:42 2010
+++ src/sys/arch/amiga/amiga/machdep.c	Thu Jan 13 22:02:05 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.227 2010/10/16 17:10:42 tsutsui Exp $	*/
+/*	$NetBSD: machdep.c,v 1.228 2011/01/13 22:02:05 phx Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
@@ -87,7 +87,7 @@
 #include "opt_m68k_arch.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.227 2010/10/16 17:10:42 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.228 2011/01/13 22:02:05 phx Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -393,6 +393,8 @@
 		mach = "Amiga 3000";
 	else if (is_a1200())
 		mach = "Amiga 1200";
+	else if (is_a600())
+		mach = "Amiga 600";
 	else
 		mach = "Amiga 500/2000";
 

Index: src/sys/arch/amiga/dev/gayle_pcmcia.c
diff -u src/sys/arch/amiga/dev/gayle_pcmcia.c:1.23 src/sys/arch/amiga/dev/gayle_pcmcia.c:1.24
--- src/sys/arch/amiga/dev/gayle_pcmcia.c:1.23	Wed Oct 17 19:53:15 2007
+++ src/sys/arch/amiga/dev/gayle_pcmcia.c	Thu Jan 13 22:02:05 2011
@@ -1,9 +1,9 @@
-/*	$NetBSD: gayle_pcmcia.c,v 1.23 2007/10/17 19:53:15 garbled Exp $ */
+/*	$NetBSD: gayle_pcmcia.c,v 1.24 2011/01/13 22:02:05 phx Exp $ */
 
 /* public domain */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gayle_pcmcia.c,v 1.23 2007/10/17 19:53:15 garbled Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gayle_pcmcia.c,v 1.24 2011/01/13 22:02:05 phx Exp $");
 
 /* PCMCIA front-end driver for A1200's and A600's. */
 
@@ -102,7 +102,7 @@
 pccard_probe(struct device *dev, struct cfdata *cfd, void *aux)
 {
 
-	return (/*is_a600() || */is_a1200()) && matchname(aux, "pccard");
+	return (is_a600() || is_a1200()) && matchname(aux, "pccard");
 }
 
 static void

Index: src/sys/arch/amiga/dev/wdc_amiga.c
diff -u src/sys/arch/amiga/dev/wdc_amiga.c:1.31 src/sys/arch/amiga/dev/wdc_amiga.c:1.32
--- src/sys/arch/amiga/dev/wdc_amiga.c:1.31	Mon Apr 28 20:23:12 2008
+++ src/sys/arch/amiga/dev/wdc_amiga.c	Thu Jan 13 22:02:05 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: wdc_amiga.c,v 1.31 2008/04/28 20:23:12 martin Exp $ */
+/*	$NetBSD: wdc_amiga.c,v 1.32 2011/01/13 22:02:05 phx Exp $ */
 
 /*-
  * Copyright (c) 2000, 2003 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc_amiga.c,v 1.31 2008/04/28 20:23:12 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc_amiga.c,v 1.32 2011/01/13 22:02:05 phx Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -75,7 +75,8 @@
 int
 wdc_amiga_probe(device_t parent, cfdata_t cfp, void *aux)
 {
-	if ((!is_a4000() && !is_a1200()) || !matchname(aux, "wdc"))
+	if ((!is_a4000() && !is_a1200() && !is_a600()) ||
+	    !matchname(aux, "wdc"))
 		return(0);
 	return 1;
 }

Index: src/sys/arch/amiga/include/cpu.h
diff -u src/sys/arch/amiga/include/cpu.h:1.76 src/sys/arch/amiga/include/cpu.h:1.77
--- src/sys/arch/amiga/include/cpu.h:1.76	Wed Dec 22 02:42:27 2010
+++ src/sys/arch/amiga/include/cpu.h	Thu Jan 13 22:02:05 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.76 2010/12/22 02:42:27 matt Exp $	*/
+/*	$NetBSD: cpu.h,v 1.77 2011/01/13 22:02:05 phx Exp $	*/
 
 /*
  * Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -78,12 +78,6 @@
 #ifndef _MACHINE_CPU_H_
 #define _MACHINE_CPU_H_
 
-#if defined(_KERNEL)
-
-/*
- * Exported definitions unique to amiga/68k cpu support.
- */
-
 #if defined(_KERNEL_OPT)
 #include "opt_lockdebug.h"
 #endif
@@ -92,6 +86,11 @@
  * Get common m68k CPU definitions.
  */
 #include <m68k/cpu.h>
+
+#if defined(_KERNEL)
+/*
+ * Exported definitions unique to amiga/68k cpu support.
+ */
 #define	M68K_MMU_MOTOROLA
 
 extern volatile unsigned int interrupt_depth;
@@ -167,6 +166,7 @@
 /*
  * Prototypes from autoconf.c
  */
+int	is_a600(void);
 int	is_a1200(void);
 int	is_a3000(void);
 int	is_a4000(void);

Index: src/sys/arch/amiga/stand/bootblock/boot/main.c
diff -u src/sys/arch/amiga/stand/bootblock/boot/main.c:1.25 src/sys/arch/amiga/stand/bootblock/boot/main.c:1.26
--- src/sys/arch/amiga/stand/bootblock/boot/main.c:1.25	Sun Nov 15 20:38:35 2009
+++ src/sys/arch/amiga/stand/bootblock/boot/main.c	Thu Jan 13 22:02:06 2011
@@ -1,5 +1,5 @@
 /*
- * $NetBSD: main.c,v 1.25 2009/11/15 20:38:35 snj Exp $
+ * $NetBSD: main.c,v 1.26 2011/01/13 22:02:06 phx Exp $
  *
  *
  * Copyright (c) 1996,1999 Ignatios Souvatzis
@@ -544,7 +544,11 @@
 int
 get_cpuid(u_int32_t *cpuid)
 {
+	uint8_t alicerev;
+
+	alicerev = *((uint8_t *)0xdff004) & 0x6f;
 	*cpuid |= SysBase->AttnFlags;	/* get FPU and CPU flags */
+
 	if (*cpuid & 0xffff0000) {
 		if ((*cpuid >> 24) == 0x7D)
 			return 0;
@@ -571,8 +575,10 @@
 	    || (SysBase->LibNode.Version == 36))
 		*cpuid |= 3000 << 16;
 	else if (OpenResource("card.resource")) {
-		/* Test for AGA? */
-		*cpuid |= 1200 << 16;
+		if (alicerev == 0x22 || alicerev == 0x23)
+			*cpuid |= 1200 << 16;	/* AGA + PCMCIA = A1200 */
+		else
+			*cpuid |= 600 << 16;	/* noAGA + PCMCIA = A600 */
 	} else if (OpenResource("draco.resource")) {
 		*cpuid |= (32000 | DRACOREVISION) << 16;
 	}

Reply via email to