mirror of
https://github.com/hathach/tinyusb.git
synced 2025-04-25 12:02:30 +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) {
|
static gtd_extra_data_t *gtd_get_extra_data(ohci_gtd_t const * const gtd) {
|
||||||
if ( gtd_is_control(gtd) )
|
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.control[((intptr_t)gtd - (intptr_t)&ohci_data.control->gtd) / sizeof(ohci_data.control[0])].gtd_data;
|
return &ohci_data.gtd_extra_control[idx];
|
||||||
}else
|
}else {
|
||||||
{
|
return &ohci_data.gtd_extra[gtd - ohci_data.gtd_pool];
|
||||||
return &ohci_data.gtd_data[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)
|
// --> 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
|
// 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
|
// 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 &= 0x0Ful;
|
||||||
ed->td_tail |= tu_align16(ed->td_head.address); // mark halted EP as empty queue
|
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" );
|
TU_VERIFY_STATIC( sizeof(ochi_itd_t) == 32, "size is not correct" );
|
||||||
|
|
||||||
typedef struct
|
typedef struct {
|
||||||
{
|
uint16_t expected_bytes; // up to 8192 bytes so max is 13 bits
|
||||||
uint16_t expected_bytes : 13; // can be up to 8192 bytes long so use 13 bits
|
|
||||||
uint16_t : 3; // can be used
|
|
||||||
} gtd_extra_data_t;
|
} gtd_extra_data_t;
|
||||||
|
|
||||||
// structure with member alignment required from large to small
|
// 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_hcca_t hcca;
|
||||||
|
|
||||||
ohci_ed_t bulk_head_ed; // static bulk head (dummy)
|
ohci_ed_t bulk_head_ed; // static bulk head (dummy)
|
||||||
@ -172,16 +169,17 @@ typedef struct TU_ATTR_ALIGNED(256)
|
|||||||
struct {
|
struct {
|
||||||
ohci_ed_t ed;
|
ohci_ed_t ed;
|
||||||
ohci_gtd_t gtd;
|
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
|
// ochi_itd_t itd[OHCI_MAX_ITD]; // itd requires alignment of 32
|
||||||
ohci_ed_t ed_pool[ED_MAX];
|
ohci_ed_t ed_pool[ED_MAX];
|
||||||
ohci_gtd_t gtd_pool[GTD_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;
|
volatile uint16_t frame_number_hi;
|
||||||
|
|
||||||
} ohci_data_t;
|
} ohci_data_t;
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
Loading…
x
Reference in New Issue
Block a user