PERFORCE change 111367 for review
Warner Losh
imp at FreeBSD.org
Sat Dec 9 21:06:20 PST 2006
http://perforce.freebsd.org/chv.cgi?CH=111367
Change 111367 by imp at imp_lighthouse on 2006/12/10 05:05:14
First attempt to apply Daan Vreeken's usb patches to get my
KB9202 working. They didn't succeed. Neither do they cause
any real ill effect except for a slight delay in booting when
usb is in the kernel. Committed to facilitate coordination.
Affected files ...
.. //depot/projects/arm/src/sys/arm/at91/at91rm92reg.h#20 edit
.. //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c#41 edit
.. //depot/projects/arm/src/sys/arm/at91/ohci_atmelarm.c#13 edit
.. //depot/projects/arm/src/sys/arm/conf/KB920X#42 edit
Differences ...
==== //depot/projects/arm/src/sys/arm/at91/at91rm92reg.h#20 (text+ko) ====
@@ -336,7 +336,8 @@
#define AT91RM92_TC1C1_BASE 0xffa4040
#define AT91RM92_TC1C2_BASE 0xffa4080
-#define AT91RM92_OHCI_BASE 0x00300000
+#define AT91RM92_OHCI_BASE 0xdfe00000
+#define AT91RM92_OHCI_PA_BASE 0x00300000
#define AT91RM92_OHCI_SIZE 0x00100000
#define AT91C_MASTER_CLOCK 60000000
==== //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c#41 (text+ko) ====
@@ -167,14 +167,14 @@
* initialization is done. However, the AT91 resource allocation
* system doesn't know how to use pmap_mapdev() yet.
*/
-#if 0
+#if 1
{
/*
* Add the ohci controller, and anything else that might be
* on this chip select for a VA/PA mapping.
*/
AT91RM92_OHCI_BASE,
- AT91RM92_OHCI_BASE,
+ AT91RM92_OHCI_PA_BASE,
AT91RM92_OHCI_SIZE,
VM_PROT_READ|VM_PROT_WRITE,
PTE_NOCACHE,
==== //depot/projects/arm/src/sys/arm/at91/ohci_atmelarm.c#13 (text+ko) ====
@@ -28,7 +28,9 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
+#include <sys/lock.h>
#include <sys/module.h>
+#include <sys/mutex.h>
#include <sys/bus.h>
#include <sys/queue.h>
#include <machine/bus.h>
@@ -99,6 +101,30 @@
}
device_set_ivars(sc->sc_ohci.sc_bus.bdev, &sc->sc_ohci.sc_bus);
+ /* Allocate a parent dma tag for DMA maps */
+ err = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0,
+ BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+ BUS_SPACE_MAXSIZE_32BIT, USB_DMA_NSEG, BUS_SPACE_MAXSIZE_32BIT, 0,
+ NULL, NULL, &sc->sc_ohci.sc_bus.parent_dmatag);
+ if (err) {
+ device_printf(dev, "Could not allocate parent DMA tag (%d)\n",
+ err);
+ err = ENXIO;
+ goto error;
+ }
+
+ /* Allocate a dma tag for transfer buffers */
+ err = bus_dma_tag_create(sc->sc_ohci.sc_bus.parent_dmatag, 1, 0,
+ BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+ BUS_SPACE_MAXSIZE_32BIT, USB_DMA_NSEG, BUS_SPACE_MAXSIZE_32BIT, 0,
+ busdma_lock_mutex, &Giant, &sc->sc_ohci.sc_bus.buffer_dmatag);
+ if (err) {
+ device_printf(dev, "Could not allocate transfer tag (%d)\n",
+ err);
+ err = ENXIO;
+ goto error;
+ }
+
err = bus_setup_intr(dev, sc->sc_ohci.irq_res, INTR_TYPE_BIO, ohci_intr, sc,
&sc->sc_ohci.ih);
if (err) {
@@ -158,6 +184,12 @@
bus_teardown_intr(dev, sc->sc_ohci.irq_res, sc->sc_ohci.ih);
sc->sc_ohci.ih = NULL;
}
+
+ if (sc->sc_ohci.sc_bus.parent_dmatag != NULL)
+ bus_dma_tag_destroy(sc->sc_ohci.sc_bus.parent_dmatag);
+ if (sc->sc_ohci.sc_bus.buffer_dmatag != NULL)
+ bus_dma_tag_destroy(sc->sc_ohci.sc_bus.buffer_dmatag);
+
if (sc->sc_ohci.sc_bus.bdev) {
device_delete_child(dev, sc->sc_ohci.sc_bus.bdev);
sc->sc_ohci.sc_bus.bdev = NULL;
==== //depot/projects/arm/src/sys/arm/conf/KB920X#42 (text+ko) ====
@@ -105,3 +105,13 @@
device at91_mci
device mmc # mmc/sd bus
device mmcsd # mmc/sd flash cards
+# USB
+device usb
+device ohci
+device ugen
+device scbus
+device da
+device umass
+device axe
+
+#device bpf
More information about the p4-projects
mailing list