Module Name: src Committed By: phx Date: Thu Jan 13 21:54:15 UTC 2011
Modified Files: src/sys/arch/sandpoint/stand/netboot: siisata.c Log Message: Configure transfer mode registers to PIO mode. It seems to work without, but just to be on the safe side. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/sandpoint/stand/netboot/siisata.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/siisata.c diff -u src/sys/arch/sandpoint/stand/netboot/siisata.c:1.14 src/sys/arch/sandpoint/stand/netboot/siisata.c:1.15 --- src/sys/arch/sandpoint/stand/netboot/siisata.c:1.14 Mon Jan 10 20:13:47 2011 +++ src/sys/arch/sandpoint/stand/netboot/siisata.c Thu Jan 13 21:54:14 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: siisata.c,v 1.14 2011/01/10 20:13:47 phx Exp $ */ +/* $NetBSD: siisata.c,v 1.15 2011/01/13 21:54:14 phx Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ void * siisata_init(unsigned tag, void *data) { - unsigned val; + unsigned idreg; int nchan, n; struct dkdev_ata *l; @@ -67,6 +67,7 @@ l->iobuf = allocaligned(512, 16); l->tag = tag; + idreg = pcicfgread(tag, PCI_ID_REG); l->bar[0] = pciiobase + (pcicfgread(tag, 0x10) &~ 01); l->bar[1] = pciiobase + (pcicfgread(tag, 0x14) &~ 01); l->bar[2] = pciiobase + (pcicfgread(tag, 0x18) &~ 01); @@ -74,8 +75,7 @@ l->bar[4] = pciiobase + (pcicfgread(tag, 0x20) &~ 01); l->bar[5] = pcicfgread(tag, 0x24) &~ 0x3ff; - val = pcicfgread(tag, PCI_ID_REG); - if ((PCI_PRODUCT(val) & 0xf) == 0x2) { + if ((PCI_PRODUCT(idreg) & 0xf) == 0x2) { /* 3112/3512 */ l->chan[0].cmd = l->bar[0]; l->chan[0].ctl = l->chan[0].alt = l->bar[1] | 02; @@ -98,6 +98,10 @@ nchan = 4; } + /* configure PIO transfer mode */ + pcicfgwrite(tag, 0x80, 0x00); + pcicfgwrite(tag, 0x84, 0x00); + for (n = 0; n < nchan; n++) { if (satapresense(l, n)) { /* drive present, now check whether soft reset works */