Module Name:    src
Committed By:   phx
Date:           Sun Jun 27 12:09:17 UTC 2010

Modified Files:
        src/sys/arch/sandpoint/stand/netboot: dsk.c

Log Message:
Replaced test code for Synology SiI3512 with working KuroBox code again.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sandpoint/stand/netboot/dsk.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/sandpoint/stand/netboot/dsk.c
diff -u src/sys/arch/sandpoint/stand/netboot/dsk.c:1.1 src/sys/arch/sandpoint/stand/netboot/dsk.c:1.2
--- src/sys/arch/sandpoint/stand/netboot/dsk.c:1.1	Sat Jun 26 22:13:32 2010
+++ src/sys/arch/sandpoint/stand/netboot/dsk.c	Sun Jun 27 12:09:17 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: dsk.c,v 1.1 2010/06/26 22:13:32 phx Exp $ */
+/* $NetBSD: dsk.c,v 1.2 2010/06/27 12:09:17 phx Exp $ */
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -82,7 +82,6 @@
 static char *mkident(char *, int);
 static void set_xfermode(struct dkdev_ata *, int);
 static void decode_dlabel(struct disk *, char *);
-static int sii_spinwait_irqack(struct dkdev_ata *, int);
 static int lba_read(struct disk *, uint64_t, uint32_t, void *);
 static void issue48(struct dvata_chan *, uint64_t, uint32_t);
 static void issue28(struct dvata_chan *, uint64_t, uint32_t);
@@ -356,35 +355,12 @@
 }
 
 static int
-sii_spinwait_irqack(struct dkdev_ata *l, int n)
-{
-/* 0x0a0, 0x0e0, 0x2a0, 0x2e0 */
-#define CNST_CH(n) (((n&02)<<8)+((n&01)<<6))
-#define CNST_TF(n) (0x0a0+CNST_CH(n))
-#define CNST_INT   (1<<11)
-	struct dvata_chan *chan = &l->chan[n];
-	uint32_t cnst = l->bar[5] + CNST_TF(n);
-	int loop, sts;
-
-	loop = 100;
-	do {
-		sts = CSR_READ_4(cnst);
-		if (sts & CNST_INT) {
-			sts = CSR_READ_1(chan->cmd + _STS);
-			return (sts & ATA_STS_ERR) == 0;
-		}
-		delay(1000);
-	} while (--loop > 0);
-	return 0;
-}
-
-static int
 lba_read(struct disk *d, uint64_t bno, uint32_t bcnt, void *buf)
 {
 	struct dkdev_ata *l = d->dvops;
 	struct dvata_chan *chan;
 	void (*issue)(struct dvata_chan *, uint64_t, uint32_t);
-	uint32_t n, i, rdcnt;
+	uint32_t n, rdcnt;
 	uint16_t *p;
 	const char *err;
 	int error;
@@ -401,35 +377,14 @@
 		if (spinwait_unbusy(l, n, 1000, &err) == 0) {
 			printf("%s blk %d %s\n", d->xname, (int)bno, err);
 			error = EIO;
-			goto skip;
 		}
-#if 1 /* XXX */
-		for (i = 0; i < rdcnt; i += 1) {
-			if (sii_spinwait_irqack(l, n) == 0) {
-				printf("%s blk %d no xfer ack\n", d->xname, (int)bno);
-				error = EIO;
-				goto skip;
-			}
-			for (n = 0; n < 512; n +=2) {
+		else {
+			for (n = 0; n < rdcnt * 512; n += 2) {
 				/* arrives in native order */
 				*p++ = *(uint16_t *)(chan->cmd + _DAT);
 			}
 			(void)CSR_READ_1(chan->cmd + _STS);
 		}
-#else
-		i = 0;
-		if (sii_spinwait_irqack(l, n) == 0) {
-			printf("%s blk %d no xfer ack\n", d->xname, (int)bno);
-			error = EIO;
-			goto skip;
-		}
-		for (n = 0; n < rdcnt * 512; n +=2) {
-			/* arrives in native order */
-			*p++ = *(uint16_t *)(chan->cmd + _DAT);
-		}
-		(void)CSR_READ_1(chan->cmd + _STS);
-#endif
-  skip:
 		bno += rdcnt; bcnt -= rdcnt;
 	}
 	return error;
@@ -511,9 +466,7 @@
 	}
 	return ENXIO;
   found:
-#if 1
 printf("dsk_open found %s\n", fsmod);
-#endif
 	d->fsops = fs;
 	f->f_devdata = d;
 

Reply via email to