Module Name:    src
Committed By:   dyoung
Date:           Mon Mar 22 22:39:49 UTC 2010

Modified Files:
        src/sys/dev/pci: viaide.c

Log Message:
Activate PCI memory-mapped I/O access in the PCI Control and Status
Register if the PCI BAR is the memory-mapped type.  The driver used to
decide whether to activate memory-mapped access by testing the truth of
pci_attach_args.pa_memt; that isn't MI, and it doesn't make sense.


To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.69 src/sys/dev/pci/viaide.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/dev/pci/viaide.c
diff -u src/sys/dev/pci/viaide.c:1.68 src/sys/dev/pci/viaide.c:1.69
--- src/sys/dev/pci/viaide.c:1.68	Wed Feb 24 22:38:01 2010
+++ src/sys/dev/pci/viaide.c	Mon Mar 22 22:39:48 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: viaide.c,v 1.68 2010/02/24 22:38:01 dyoung Exp $	*/
+/*	$NetBSD: viaide.c,v 1.69 2010/03/22 22:39:48 dyoung Exp $	*/
 
 /*
  * Copyright (c) 1999, 2000, 2001 Manuel Bouyer.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: viaide.c,v 1.68 2010/02/24 22:38:01 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: viaide.c,v 1.69 2010/03/22 22:39:48 dyoung Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -851,18 +851,6 @@
 	pciide_mapreg_dma(sc, pa);
 	aprint_verbose("\n");
 
-	/*
-	 * Enable memory-space access if it isn't already there.
-	 */
-	if (pa->pa_memt && (pa->pa_flags & PCI_FLAGS_MEM_ENABLED) == 0) {
-		pcireg_t csr;
-
-		pa->pa_flags |= PCI_FLAGS_MEM_ENABLED;
-		csr = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG);
-		pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG,
-		               csr | PCI_COMMAND_MEM_ENABLE);
-	}
-
 	if (sc->sc_dma_ok) {
 		sc->sc_wdcdev.sc_atac.atac_cap |= ATAC_CAP_UDMA | ATAC_CAP_DMA;
 		sc->sc_wdcdev.irqack = pciide_irqack;
@@ -890,6 +878,20 @@
 		    NULL, &satasize);
 		break;
 	case PCI_MAPREG_MEM_TYPE_32BIT:
+		/*
+		 * Enable memory-space access if it isn't already there.
+		 */
+		if ((pa->pa_flags & PCI_FLAGS_MEM_ENABLED) == 0) {
+			pcireg_t csr;
+
+			pa->pa_flags |= PCI_FLAGS_MEM_ENABLED;
+			csr = pci_conf_read(pa->pa_pc, pa->pa_tag,
+			    PCI_COMMAND_STATUS_REG);
+			pci_conf_write(pa->pa_pc, pa->pa_tag,
+			    PCI_COMMAND_STATUS_REG,
+			    csr | PCI_COMMAND_MEM_ENABLE);
+		}
+
 		ret = pci_mapreg_map(pa, PCI_MAPREG_START + 0x14,
 		    PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_32BIT,
 		    0, &sc->sc_ba5_st, &sc->sc_ba5_sh,

Reply via email to