Module Name: src
Committed By: tsutsui
Date: Mon Jan 14 01:37:58 UTC 2013
Modified Files:
src/sys/arch/luna68k/stand/boot: autoconf.c ioconf.c samachdep.h sc.c
sd.c ufs_disksubr.c version
Log Message:
Fix drivers to make secondary SPC SCSI on LUNA-II work properly.
Also bump version.
Now we can load a NetBSD kernel from external SCSI disks on LUNA-II.
(and netboot on LUNA-II also works)
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/luna68k/stand/boot/autoconf.c \
src/sys/arch/luna68k/stand/boot/ioconf.c \
src/sys/arch/luna68k/stand/boot/sc.c src/sys/arch/luna68k/stand/boot/sd.c \
src/sys/arch/luna68k/stand/boot/version
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/luna68k/stand/boot/samachdep.h
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/luna68k/stand/boot/ufs_disksubr.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/luna68k/stand/boot/autoconf.c
diff -u src/sys/arch/luna68k/stand/boot/autoconf.c:1.2 src/sys/arch/luna68k/stand/boot/autoconf.c:1.3
--- src/sys/arch/luna68k/stand/boot/autoconf.c:1.2 Sat Jan 12 13:39:47 2013
+++ src/sys/arch/luna68k/stand/boot/autoconf.c Mon Jan 14 01:37:57 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: autoconf.c,v 1.2 2013/01/12 13:39:47 tsutsui Exp $ */
+/* $NetBSD: autoconf.c,v 1.3 2013/01/14 01:37:57 tsutsui Exp $ */
/*
* Copyright (c) 1992 OMRON Corporation.
@@ -80,6 +80,7 @@
#include <sys/param.h>
#include <sys/dkstat.h>
+#include <machine/cpu.h>
#include <lib/libkern/libkern.h>
#include <luna68k/stand/boot/samachdep.h>
#include <luna68k/stand/boot/device.h>
@@ -499,6 +500,10 @@ find_devs(void)
setup_hw(hw, (char *) 0xe1000000, 0xe, SCSI, 0xe, "MB89352 (SPC)");
hw++;
+ if (machtype == LUNA_II && !badaddr((void *) 0xe1000040)) {
+ setup_hw(hw, (char *) 0xe1000040, 0xe, SCSI, 0xe, "MB89352 (SPC)");
+ hw++;
+ }
if (!badaddr((void *) 0xf1000000)) {
setup_hw(hw, (char *) 0xf1000000, 0xf, NET, 0xf, "Am7990 (LANCE)");
hw++;
Index: src/sys/arch/luna68k/stand/boot/ioconf.c
diff -u src/sys/arch/luna68k/stand/boot/ioconf.c:1.2 src/sys/arch/luna68k/stand/boot/ioconf.c:1.3
--- src/sys/arch/luna68k/stand/boot/ioconf.c:1.2 Sun Jan 13 14:10:55 2013
+++ src/sys/arch/luna68k/stand/boot/ioconf.c Mon Jan 14 01:37:57 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ioconf.c,v 1.2 2013/01/13 14:10:55 tsutsui Exp $ */
+/* $NetBSD: ioconf.c,v 1.3 2013/01/14 01:37:57 tsutsui Exp $ */
/*
* Copyright (c) 1992 OMRON Corporation.
@@ -86,6 +86,7 @@ extern struct driver stdriver;
struct hp_ctlr hp_cinit[] = {
/* driver, unit, alive, addr, flags */
{ &scdriver, 0, 0, C 0x0, 0x0 },
+ { &scdriver, 1, 0, C 0x0, 0x0 },
{0},
};
@@ -93,6 +94,8 @@ struct hp_device hp_dinit[] = {
/*driver, cdriver, unit, ctlr, slave, addr, dk, flags*/
{ &sddriver, &scdriver, 0, 0, 6, C 0x0, 1, 0x0 },
{ &sddriver, &scdriver, 1, 0, 5, C 0x0, 1, 0x0 },
+{ &sddriver, &scdriver, 2, 1, 6, C 0x0, 1, 0x0 },
+{ &sddriver, &scdriver, 3, 1, 5, C 0x0, 1, 0x0 },
{ &ledriver, NULL, 0, 0, 0, C 0x0, 0, 0x0 },
#ifdef notyet
{ &stdriver, &scdriver, 0, 0, 4, C 0x0, 0, 0x0 },
Index: src/sys/arch/luna68k/stand/boot/sc.c
diff -u src/sys/arch/luna68k/stand/boot/sc.c:1.2 src/sys/arch/luna68k/stand/boot/sc.c:1.3
--- src/sys/arch/luna68k/stand/boot/sc.c:1.2 Sun Jan 13 04:39:28 2013
+++ src/sys/arch/luna68k/stand/boot/sc.c Mon Jan 14 01:37:57 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: sc.c,v 1.2 2013/01/13 04:39:28 tsutsui Exp $ */
+/* $NetBSD: sc.c,v 1.3 2013/01/14 01:37:57 tsutsui Exp $ */
/*
* Copyright (c) 1992 OMRON Corporation.
@@ -76,7 +76,7 @@
*/
-#define NSC 1
+#define NSC 2
#include <sys/param.h>
#include <luna68k/stand/boot/samachdep.h>
@@ -111,7 +111,14 @@ int
scinit(void *arg)
{
struct hp_ctlr *hc = arg;
- struct scsi_softc *hs = &scsi_softc[hc->hp_unit];
+ struct scsi_softc *hs;
+ int unit;
+
+ unit = hc->hp_unit;
+ if (unit < 0 || unit >= NSC)
+ return 0;
+
+ hs = &scsi_softc[unit];
hc->hp_ipl = SCSI_IPL;
hs->sc_hc = hc;
Index: src/sys/arch/luna68k/stand/boot/sd.c
diff -u src/sys/arch/luna68k/stand/boot/sd.c:1.2 src/sys/arch/luna68k/stand/boot/sd.c:1.3
--- src/sys/arch/luna68k/stand/boot/sd.c:1.2 Sun Jan 13 04:39:28 2013
+++ src/sys/arch/luna68k/stand/boot/sd.c Mon Jan 14 01:37:57 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: sd.c,v 1.2 2013/01/13 04:39:28 tsutsui Exp $ */
+/* $NetBSD: sd.c,v 1.3 2013/01/14 01:37:57 tsutsui Exp $ */
/*
* Copyright (c) 1992 OMRON Corporation.
@@ -252,7 +252,7 @@ sdinit(void *arg)
/*
* read disklabel
*/
- msg = readdisklabel(hd->hp_slave, sdstrategy, lp);
+ msg = readdisklabel(hd->hp_ctlr, hd->hp_slave, lp);
if (msg != NULL)
printf("sd%d: %s\n", hd->hp_unit, msg);
Index: src/sys/arch/luna68k/stand/boot/version
diff -u src/sys/arch/luna68k/stand/boot/version:1.2 src/sys/arch/luna68k/stand/boot/version:1.3
--- src/sys/arch/luna68k/stand/boot/version:1.2 Sun Jan 13 14:10:55 2013
+++ src/sys/arch/luna68k/stand/boot/version Mon Jan 14 01:37:57 2013
@@ -1,4 +1,4 @@
-$NetBSD: version,v 1.2 2013/01/13 14:10:55 tsutsui Exp $
+$NetBSD: version,v 1.3 2013/01/14 01:37:57 tsutsui Exp $
NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
file is important - make sure the entries are appended on end, last item
@@ -6,3 +6,4 @@ is taken as the current.
1.0: Initial revision, based on 4.4BSD-Lite2/luna68k and NetBSD/hp300
1.1: Add netboot support.
+1.2: Add support for secondary SPC SCSI on LUNA-II.
Index: src/sys/arch/luna68k/stand/boot/samachdep.h
diff -u src/sys/arch/luna68k/stand/boot/samachdep.h:1.3 src/sys/arch/luna68k/stand/boot/samachdep.h:1.4
--- src/sys/arch/luna68k/stand/boot/samachdep.h:1.3 Sun Jan 13 14:10:55 2013
+++ src/sys/arch/luna68k/stand/boot/samachdep.h Mon Jan 14 01:37:57 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: samachdep.h,v 1.3 2013/01/13 14:10:55 tsutsui Exp $ */
+/* $NetBSD: samachdep.h,v 1.4 2013/01/14 01:37:57 tsutsui Exp $ */
/*
* Copyright (c) 1982, 1990, 1993
@@ -208,7 +208,7 @@ int tape(int, char **);
void trap(int, unsigned int, unsigned int, struct frame);
/* ufs_disklabel.c */
-char *readdisklabel(int dev, int (*)(void *, int, daddr_t, size_t, void *, size_t *), struct disklabel *);
+char *readdisklabel(int, int, struct disklabel *);
#define DELAY(n) \
Index: src/sys/arch/luna68k/stand/boot/ufs_disksubr.c
diff -u src/sys/arch/luna68k/stand/boot/ufs_disksubr.c:1.1 src/sys/arch/luna68k/stand/boot/ufs_disksubr.c:1.2
--- src/sys/arch/luna68k/stand/boot/ufs_disksubr.c:1.1 Sat Jan 5 17:44:24 2013
+++ src/sys/arch/luna68k/stand/boot/ufs_disksubr.c Mon Jan 14 01:37:57 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: ufs_disksubr.c,v 1.1 2013/01/05 17:44:24 tsutsui Exp $ */
+/* $NetBSD: ufs_disksubr.c,v 1.2 2013/01/14 01:37:57 tsutsui Exp $ */
/*
* Copyright (c) 1992 OMRON Corporation.
@@ -89,7 +89,7 @@
* Returns null on success and an error string on failure.
*/
char *
-readdisklabel(int dev, int (*strat)(void *, int, daddr_t, size_t, void *, size_t *), struct disklabel *lp)
+readdisklabel(int ctlr, int id, struct disklabel *lp)
{
u_char *bp = lbl_buff;
struct disklabel *dlp;
@@ -106,7 +106,7 @@ readdisklabel(int dev, int (*strat)(void
lp->d_partitions[0].p_size = 0x1fffffff;
lp->d_partitions[0].p_offset = 0;
- if (scsi_immed_command(0, dev, 0, &cdb, bp, DEV_BSIZE) != 0) {
+ if (scsi_immed_command(ctlr, id, 0, &cdb, bp, DEV_BSIZE) != 0) {
msg = "I/O error";
} else {
for (dlp = (struct disklabel *)bp;