|
|
|
@ -410,8 +410,11 @@ typedef struct |
|
|
|
|
|
|
|
|
|
#define NUM_EDS 8 /* num of preallocated endpoint descriptors */ |
|
|
|
|
|
|
|
|
|
#define NUM_TD 64 /* we need more TDs than EDs */ |
|
|
|
|
|
|
|
|
|
typedef struct ohci_device { |
|
|
|
|
ed_t ed[NUM_EDS] __aligned(16); |
|
|
|
|
td_t tds[NUM_TD] __aligned(32); |
|
|
|
|
int ed_cnt; |
|
|
|
|
} ohci_dev_t; |
|
|
|
|
|
|
|
|
@ -425,7 +428,7 @@ typedef struct ohci_device { |
|
|
|
|
|
|
|
|
|
typedef struct ohci { |
|
|
|
|
/* this allocates EDs for all possible endpoints */ |
|
|
|
|
struct ohci_device ohci_dev __aligned(16); |
|
|
|
|
struct ohci_device ohci_dev __aligned(32); |
|
|
|
|
struct ohci_hcca *hcca; /* hcca */ |
|
|
|
|
/*dma_addr_t hcca_dma;*/ |
|
|
|
|
|
|
|
|
@ -457,17 +460,9 @@ static ed_t *ep_add_ed(ohci_dev_t *ohci_dev, struct usb_device *usb_dev, |
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------*/ |
|
|
|
|
|
|
|
|
|
/* we need more TDs than EDs */ |
|
|
|
|
#define NUM_TD 64 |
|
|
|
|
|
|
|
|
|
/* +1 so we can align the storage */ |
|
|
|
|
td_t gtd[NUM_TD+1]; |
|
|
|
|
/* pointers to aligned storage */ |
|
|
|
|
td_t *ptd; |
|
|
|
|
|
|
|
|
|
/* TDs ... */ |
|
|
|
|
static inline struct td * |
|
|
|
|
td_alloc (struct usb_device *usb_dev) |
|
|
|
|
td_alloc (ohci_dev_t *ohci_dev, struct usb_device *usb_dev) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
struct td *td; |
|
|
|
@ -475,9 +470,9 @@ td_alloc (struct usb_device *usb_dev) |
|
|
|
|
td = NULL; |
|
|
|
|
for (i = 0; i < NUM_TD; i++) |
|
|
|
|
{ |
|
|
|
|
if (ptd[i].usb_dev == NULL) |
|
|
|
|
if (ohci_dev->tds[i].usb_dev == NULL) |
|
|
|
|
{ |
|
|
|
|
td = &ptd[i]; |
|
|
|
|
td = &ohci_dev->tds[i]; |
|
|
|
|
td->usb_dev = usb_dev; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|