summaryrefslogtreecommitdiff
path: root/sys/src/9/omap/usbehci.h
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-02-14 03:00:31 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2015-02-14 03:00:31 +0100
commit995379e388e4cd202f683a00e99749c7f21a225d (patch)
tree046f2efc671554b5b6c5bfa9b8a38a95340a247f /sys/src/9/omap/usbehci.h
parent6b2d1f0186f2e38a3b0cd6a19b5980dccb045c3c (diff)
usbehci: initial support for usb on zynq, remove uncached.h
the following hooks have been added to the ehci Ctlr structore to handle cache coherency (on arm): void* (*tdalloc)(ulong,int,ulong); void* (*dmaalloc)(ulong); void (*dmafree)(void*); void (*dmaflush)(int,void*,ulong); tdalloc() is used to allocate descriptors and the periodic frame schedule array. on arm, this needs to return uncached memory. tdalloc()ed memory is never freed. dmaalloc()/dmafree() is used for io buffers. this can return cached memory when when hardware maintains cache coherency (pc) or dmaflush() is provided to flush/invalidate the cache (zynq), otherwise needs to return uncached memory. dmaflush() is used to flush/invalidate the cache. the first argument tells us if we need to flush (non zero) or invalidate (zero). uncached.h is gone now. this change makes the handling explicit.
Diffstat (limited to 'sys/src/9/omap/usbehci.h')
-rw-r--r--sys/src/9/omap/usbehci.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/src/9/omap/usbehci.h b/sys/src/9/omap/usbehci.h
index b43d4774b..45e88169b 100644
--- a/sys/src/9/omap/usbehci.h
+++ b/sys/src/9/omap/usbehci.h
@@ -39,6 +39,11 @@ struct Ctlr
Ecapio* capio; /* Capability i/o regs */
Eopio* opio; /* Operational i/o regs */
+ void* (*tdalloc)(ulong,int,ulong);
+ void* (*dmaalloc)(ulong);
+ void (*dmafree)(void*);
+ void (*dmaflush)(int,void*,ulong len);
+
int nframes; /* 1024, 512, or 256 frames in the list */
ulong* frames; /* periodic frame list (hw) */
Qh* qhs; /* async Qh circular list for bulk/ctl */