Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Oct 2010 03:45:27 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r214314 - user/nwhitehorn/ps3/powerpc/ps3
Message-ID:  <201010250345.o9P3jR1d049764@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Mon Oct 25 03:45:27 2010
New Revision: 214314
URL: http://svn.freebsd.org/changeset/base/214314

Log:
  Set the correct DMA region flags for USB devices. This makes USB work (and
  so local consoles as well).
  
  Obtained from:	NetBSD

Modified:
  user/nwhitehorn/ps3/powerpc/ps3/ps3bus.c

Modified: user/nwhitehorn/ps3/powerpc/ps3/ps3bus.c
==============================================================================
--- user/nwhitehorn/ps3/powerpc/ps3/ps3bus.c	Mon Oct 25 03:21:40 2010	(r214313)
+++ user/nwhitehorn/ps3/powerpc/ps3/ps3bus.c	Mon Oct 25 03:45:27 2010	(r214314)
@@ -471,7 +471,7 @@ ps3bus_get_dma_tag(device_t dev, device_
 {
 	struct ps3bus_devinfo *dinfo = device_get_ivars(child);
 	struct ps3bus_softc *sc = device_get_softc(dev);
-	int i, err;
+	int i, err, flags;
 
 	mtx_lock(&dinfo->iommu_mtx);
 	if (dinfo->dma_tag != NULL) {
@@ -479,10 +479,15 @@ ps3bus_get_dma_tag(device_t dev, device_
 		return (dinfo->dma_tag);
 	}
 
+	flags = 0; /* 32-bit mode */
+	if (dinfo->bustype == PS3_BUSTYPE_SYSBUS &&
+	    dinfo->devtype == PS3_DEVTYPE_USB)
+		flags = 2; /* 8-bit mode */
+
 	for (i = 0; i < sc->rcount; i++) {
 		err = lv1_allocate_device_dma_region(dinfo->bus, dinfo->dev,
-		    sc->regions[i].mr_size, 24 /* log_2(16 MB) */,
-		    0 /* 32-bit transfers */, &dinfo->dma_base[i]);
+		    sc->regions[i].mr_size, 24 /* log_2(16 MB) */, flags,
+		    &dinfo->dma_base[i]);
 		if (err != 0) {
 			device_printf(child,
 			    "could not allocate DMA region %d: %d\n", i, err);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201010250345.o9P3jR1d049764>