mirror of
https://github.com/hathach/tinyusb.git
synced 2025-04-18 02:42:37 +00:00
move gtd extra out of control struct to save sram
also rename gtd_data to gtd_extra
This commit is contained in:
parent
3349e40276
commit
e68c6658c9
@ -612,12 +612,11 @@ static inline ohci_ed_t* gtd_get_ed(ohci_gtd_t const * const p_qtd)
|
||||
}
|
||||
|
||||
static gtd_extra_data_t *gtd_get_extra_data(ohci_gtd_t const * const gtd) {
|
||||
if ( gtd_is_control(gtd) )
|
||||
{
|
||||
return &ohci_data.control[((intptr_t)gtd - (intptr_t)&ohci_data.control->gtd) / sizeof(ohci_data.control[0])].gtd_data;
|
||||
}else
|
||||
{
|
||||
return &ohci_data.gtd_data[gtd - ohci_data.gtd_pool];
|
||||
if ( gtd_is_control(gtd) ) {
|
||||
uint8_t idx = ((uintptr_t)gtd - (uintptr_t)&ohci_data.control->gtd) / sizeof(ohci_data.control[0]);
|
||||
return &ohci_data.gtd_extra_control[idx];
|
||||
}else {
|
||||
return &ohci_data.gtd_extra[gtd - ohci_data.gtd_pool];
|
||||
}
|
||||
}
|
||||
|
||||
@ -661,7 +660,7 @@ static void done_queue_isr(uint8_t hostid)
|
||||
// --> HC will not process Control list (due to service ratio when Bulk list not empty)
|
||||
// To walk-around this, the halted ED will have TailP = HeadP (empty list condition), when clearing halt
|
||||
// the TailP must be set back to NULL for processing remaining TDs
|
||||
if ((event != XFER_RESULT_SUCCESS))
|
||||
if (event != XFER_RESULT_SUCCESS)
|
||||
{
|
||||
ed->td_tail &= 0x0Ful;
|
||||
ed->td_tail |= tu_align16(ed->td_head.address); // mark halted EP as empty queue
|
||||
|
@ -154,15 +154,12 @@ typedef struct TU_ATTR_ALIGNED(32)
|
||||
|
||||
TU_VERIFY_STATIC( sizeof(ochi_itd_t) == 32, "size is not correct" );
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t expected_bytes : 13; // can be up to 8192 bytes long so use 13 bits
|
||||
uint16_t : 3; // can be used
|
||||
typedef struct {
|
||||
uint16_t expected_bytes; // up to 8192 bytes so max is 13 bits
|
||||
} gtd_extra_data_t;
|
||||
|
||||
// structure with member alignment required from large to small
|
||||
typedef struct TU_ATTR_ALIGNED(256)
|
||||
{
|
||||
typedef struct TU_ATTR_ALIGNED(256) {
|
||||
ohci_hcca_t hcca;
|
||||
|
||||
ohci_ed_t bulk_head_ed; // static bulk head (dummy)
|
||||
@ -172,16 +169,17 @@ typedef struct TU_ATTR_ALIGNED(256)
|
||||
struct {
|
||||
ohci_ed_t ed;
|
||||
ohci_gtd_t gtd;
|
||||
gtd_extra_data_t gtd_data;
|
||||
}control[CFG_TUH_DEVICE_MAX+CFG_TUH_HUB+1];
|
||||
} control[CFG_TUH_DEVICE_MAX + CFG_TUH_HUB + 1];
|
||||
|
||||
// ochi_itd_t itd[OHCI_MAX_ITD]; // itd requires alignment of 32
|
||||
ohci_ed_t ed_pool[ED_MAX];
|
||||
ohci_gtd_t gtd_pool[GTD_MAX];
|
||||
gtd_extra_data_t gtd_data[GTD_MAX]; // extra data needed by TDs that can't fit in the TD struct
|
||||
|
||||
// extra data needed by TDs that can't fit in the TD struct
|
||||
gtd_extra_data_t gtd_extra_control[CFG_TUH_DEVICE_MAX + CFG_TUH_HUB + 1];
|
||||
gtd_extra_data_t gtd_extra[GTD_MAX];
|
||||
|
||||
volatile uint16_t frame_number_hi;
|
||||
|
||||
} ohci_data_t;
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
|
Loading…
x
Reference in New Issue
Block a user