Tue Feb 18 12:32:13 2014 UTC ()
if MMIO is allowed and available, prefer it over PIO
now my ADPT,2930CU works again


(macallan)
diff -r1.68 -r1.69 src/sys/dev/pci/ahc_pci.c

cvs diff -r1.68 -r1.69 src/sys/dev/pci/ahc_pci.c (expand / switch to unified diff)

--- src/sys/dev/pci/ahc_pci.c 2009/11/26 15:17:08 1.68
+++ src/sys/dev/pci/ahc_pci.c 2014/02/18 12:32:12 1.69
@@ -29,38 +29,38 @@ @@ -29,38 +29,38 @@
29 * NO WARRANTY 29 * NO WARRANTY
30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 31 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 32 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
33 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 33 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
34 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 34 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 35 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
36 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
37 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
38 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 38 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
39 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 39 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
40 * POSSIBILITY OF SUCH DAMAGES. 40 * POSSIBILITY OF SUCH DAMAGES.
41 * 41 *
42 * $Id: ahc_pci.c,v 1.68 2009/11/26 15:17:08 njoly Exp $ 42 * $Id: ahc_pci.c,v 1.69 2014/02/18 12:32:12 macallan Exp $
43 * 43 *
44 * //depot/aic7xxx/aic7xxx/aic7xxx_pci.c#57 $ 44 * //depot/aic7xxx/aic7xxx/aic7xxx_pci.c#57 $
45 * 45 *
46 * $FreeBSD: /repoman/r/ncvs/src/sys/dev/aic7xxx/aic7xxx_pci.c,v 1.22 2003/01/20 20:44:55 gibbs Exp $ 46 * $FreeBSD: /repoman/r/ncvs/src/sys/dev/aic7xxx/aic7xxx_pci.c,v 1.22 2003/01/20 20:44:55 gibbs Exp $
47 */ 47 */
48/* 48/*
49 * Ported from FreeBSD by Pascal Renauld, Network Storage Solutions, Inc. - April 2003 49 * Ported from FreeBSD by Pascal Renauld, Network Storage Solutions, Inc. - April 2003
50 */ 50 */
51 51
52#include <sys/cdefs.h> 52#include <sys/cdefs.h>
53__KERNEL_RCSID(0, "$NetBSD: ahc_pci.c,v 1.68 2009/11/26 15:17:08 njoly Exp $"); 53__KERNEL_RCSID(0, "$NetBSD: ahc_pci.c,v 1.69 2014/02/18 12:32:12 macallan Exp $");
54 54
55#include <sys/param.h> 55#include <sys/param.h>
56#include <sys/systm.h> 56#include <sys/systm.h>
57#include <sys/malloc.h> 57#include <sys/malloc.h>
58#include <sys/kernel.h> 58#include <sys/kernel.h>
59#include <sys/queue.h> 59#include <sys/queue.h>
60#include <sys/device.h> 60#include <sys/device.h>
61#include <sys/reboot.h> 61#include <sys/reboot.h>
62 62
63#include <sys/bus.h> 63#include <sys/bus.h>
64#include <sys/intr.h> 64#include <sys/intr.h>
65 65
66#include <dev/pci/pcireg.h> 66#include <dev/pci/pcireg.h>
@@ -823,40 +823,42 @@ ahc_pci_attach(device_t parent, device_t @@ -823,40 +823,42 @@ ahc_pci_attach(device_t parent, device_t
823 switch (memtype) { 823 switch (memtype) {
824 case PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_32BIT: 824 case PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_32BIT:
825 case PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_64BIT: 825 case PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_64BIT:
826 memh_valid = (pci_mapreg_map(pa, AHC_PCI_MEMADDR, 826 memh_valid = (pci_mapreg_map(pa, AHC_PCI_MEMADDR,
827 memtype, 0, &memt, &memh, NULL, NULL) == 0); 827 memtype, 0, &memt, &memh, NULL, NULL) == 0);
828 break; 828 break;
829 default: 829 default:
830 memh_valid = 0; 830 memh_valid = 0;
831 } 831 }
832#endif 832#endif
833 ioh_valid = (pci_mapreg_map(pa, AHC_PCI_IOADDR, 833 ioh_valid = (pci_mapreg_map(pa, AHC_PCI_IOADDR,
834 PCI_MAPREG_TYPE_IO, 0, &iot, 834 PCI_MAPREG_TYPE_IO, 0, &iot,
835 &ioh, NULL, NULL) == 0); 835 &ioh, NULL, NULL) == 0);
 836
836#if 0 837#if 0
837 printf("%s: bus info: memt 0x%lx, memh 0x%lx, iot 0x%lx, ioh 0x%lx\n", 838 printf("%s: bus info: memt 0x%lx, memh 0x%lx, iot 0x%lx, ioh 0x%lx\n",
838 ahc_name(ahc), (u_long)memt, (u_long)memh, (u_long)iot, 839 ahc_name(ahc), (u_long)memt, (u_long)memh, (u_long)iot,
839 (u_long)ioh); 840 (u_long)ioh);
840#endif 841#endif
841 842
842 if (ioh_valid) { 
843 st = iot; 
844 sh = ioh; 
845#ifdef AHC_ALLOW_MEMIO 843#ifdef AHC_ALLOW_MEMIO
846 } else if (memh_valid) { 844 if (memh_valid) {
847 st = memt; 845 st = memt;
848 sh = memh; 846 sh = memh;
 847 } else
849#endif 848#endif
 849 if (ioh_valid) {
 850 st = iot;
 851 sh = ioh;
850 } else { 852 } else {
851 printf(": unable to map registers\n"); 853 printf(": unable to map registers\n");
852 return; 854 return;
853 } 855 }
854 ahc->tag = st; 856 ahc->tag = st;
855 ahc->bsh = sh; 857 ahc->bsh = sh;
856 858
857 ahc->chip |= AHC_PCI; 859 ahc->chip |= AHC_PCI;
858 /* 860 /*
859 * Before we continue probing the card, ensure that 861 * Before we continue probing the card, ensure that
860 * its interrupts are *disabled*. We don't want 862 * its interrupts are *disabled*. We don't want
861 * a misstep to hang the machine in an interrupt 863 * a misstep to hang the machine in an interrupt
862 * storm. 864 * storm.