Removing. Since the Host Controller is obligated to process the periodic endpoint list for any given timeslice, removal of an interrupt Endpoint Descriptor from the schedule can be accomplished without interrupting the HC. The Endpoint Descriptor is removed from its corresponding endpoint list much the same way a bulk or control Endpoint Descriptor is removed, except that the processing of the endpoint list is not stalled. Instead, the Endpoint Descriptor is put off the RunningEDReclamation list and is reclaimed at some frame number in the future. For “freeing” of an endpoint, its Endpoint Descriptor is not reclaimed at a specific time, just whenever the next Host Controller interrupt processing occurs. For other operations which required an interrupt Endpoint Descriptor to be removed, like canceling of a transfer descriptor, an interrupt is forced at next SOF to ensure timely cleanup. VOID UnscheduleIsochronousOrInterruptEndpoint ( IN PHCD_ENDPOINT Endpoint, IN BOOLEAN FreeED, IN BOOLEAN EndpointProcessingRequired ) { PHCD_DEVICE_DATA DeviceData; DeviceData = Endpoint->DeviceData; RemoveED(Endpoint, FreeED); // see sample code in Section 5.2.7.1.2. if (EndpointProcessingRequired) { DeviceData->HC-> HcInterruptEnable = HC_INT_SOF;// interrupt on next SOF } } During response to an interrupt event, Host Controller Driver would reclaim the available running Endpoint Descriptor list. See Section 5.3 for more information on Host Controller Driver interrupt processing.
Appears in 1 contract
Sources: Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant
Removing. Since the Host Controller is obligated to process the periodic endpoint list for any given timeslice, removal of an interrupt Endpoint Descriptor from the schedule can be accomplished without interrupting the HC. The Endpoint Descriptor is removed from its corresponding endpoint list much the same way a bulk or control Endpoint Descriptor is removed, except that the processing of the endpoint list is not stalled. Instead, the Endpoint Descriptor is put off the RunningEDReclamation list and is reclaimed at some frame number in the future. For “freeing” of an endpoint, its Endpoint Descriptor is not reclaimed at a specific time, just whenever the next Host Controller interrupt processing occurs. For other operations which required an interrupt Endpoint Descriptor to be removed, like canceling of a transfer descriptor, an interrupt is forced at next SOF to ensure timely cleanup. VOID UnscheduleIsochronousOrInterruptEndpoint ( IN PHCD_ENDPOINT Endpoint, IN BOOLEAN FreeED, IN BOOLEAN EndpointProcessingRequired ) { PHCD_DEVICE_DATA DeviceData; DeviceData = Endpoint->DeviceData; RemoveED(Endpoint, FreeED); // see sample code in Section 5.2.7.1.2. if (EndpointProcessingRequired) { DeviceData->HC-> HcInterruptEnable = HC_INT_SOF;// HC_INT_SOF; // interrupt on next SOF } } During response to an interrupt event, Host Controller Driver would reclaim the available running Endpoint Descriptor list. See Section 5.3 for more information on Host Controller Driver interrupt processing.
Appears in 1 contract
Sources: Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant