git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of github.com:thepowersgang/acess2
[tpg/acess2.git]
/
KernelLand
/
Modules
/
USB
/
EHCI
/
ehci.h
diff --git
a/KernelLand/Modules/USB/EHCI/ehci.h
b/KernelLand/Modules/USB/EHCI/ehci.h
index
6c6d8a8
..
598c8d4
100644
(file)
--- a/
KernelLand/Modules/USB/EHCI/ehci.h
+++ b/
KernelLand/Modules/USB/EHCI/ehci.h
@@
-250,19
+250,30
@@
struct sEHCI_QH
Uint32 Endpoint;
Uint32 EndpointExt;
Uint32 CurrentTD;
Uint32 Endpoint;
Uint32 EndpointExt;
Uint32 CurrentTD;
- tEHCI_qTD Overlay;
+ struct {
+ Uint32 Link;
+ Uint32 Link2;
+ Uint32 Token;
+ Uint32 Pages[5];
+ } Overlay;
struct {
Uint8 IntOfs;
Uint8 IntPeriodPow;
tEHCI_QH *Next;
} Impl;
} __attribute__((aligned(32)));
struct {
Uint8 IntOfs;
Uint8 IntPeriodPow;
tEHCI_QH *Next;
} Impl;
} __attribute__((aligned(32)));
-// sizeof = 48 (64)
+// sizeof = 48 (
round up to
64)
#define PID_OUT 0
#define PID_IN 1
#define PID_SETUP 2
#define PID_OUT 0
#define PID_IN 1
#define PID_SETUP 2
+#define TD_POOL_SIZE (PAGE_SIZE/sizeof(tEHCI_qTD))
+// - 256 addresses * 16 endpoints
+#define QH_POOL_SIZE (256*16)
+#define QH_POOL_PAGES (QH_POOL_SIZE*sizeof(tEHCI_QH)/PAGE_SIZE)
+#define QH_POOL_NPERPAGE (PAGE_SIZE/sizeof(tEHCI_QH))
+
struct sEHCI_Controller
{
tUSBHub *RootHub;
struct sEHCI_Controller
{
tUSBHub *RootHub;
@@
-273,6
+284,8
@@
struct sEHCI_Controller
tEHCI_CapRegs *CapRegs;
tEHCI_OpRegs *OpRegs;
tEHCI_CapRegs *CapRegs;
tEHCI_OpRegs *OpRegs;
+ tEHCI_qTD *DeadTD;
+
int InterruptLoad[PERIODIC_SIZE];
tEHCI_QH *LastAsyncHead;
int InterruptLoad[PERIODIC_SIZE];
tEHCI_QH *LastAsyncHead;
@@
-280,8
+293,10
@@
struct sEHCI_Controller
Uint32 *PeriodicQueue;
tEHCI_QH *PeriodicQueueV[PERIODIC_SIZE];
Uint32 *PeriodicQueue;
tEHCI_QH *PeriodicQueueV[PERIODIC_SIZE];
- tEHCI_QH *QHPools[(256*16)*sizeof(tEHCI_QH)/PAGE_SIZE]; // [PAGE_SIZE/64]
- tEHCI_qTD *TDPool[PAGE_SIZE/sizeof(tEHCI_qTD)];
+ tMutex QHPoolMutex;
+ tEHCI_QH *QHPools[QH_POOL_PAGES]; // [PAGE_SIZE/64]
+ tMutex TDPoolMutex;
+ tEHCI_qTD *TDPool; // [TD_POOL_SIZE]
};
#endif
};
#endif
UCC
git Repository :: git.ucc.asn.au