mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-16 21:01:31 +00:00
Must save and restore the endpoint/pipe interrupt enable flags during reconfiguration of all endpoints/pipes in the Endpoint_ConfigureEndpoint() and Pipe_ConfigurePipe() routines.
This commit is contained in:
parent
ebdb1b37ca
commit
6e011f88d9
@ -55,16 +55,19 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
|
|||||||
#else
|
#else
|
||||||
uint8_t UECFG0XTemp[ENDPOINT_TOTAL_ENDPOINTS];
|
uint8_t UECFG0XTemp[ENDPOINT_TOTAL_ENDPOINTS];
|
||||||
uint8_t UECFG1XTemp[ENDPOINT_TOTAL_ENDPOINTS];
|
uint8_t UECFG1XTemp[ENDPOINT_TOTAL_ENDPOINTS];
|
||||||
|
uint8_t UEIENXTemp[ENDPOINT_TOTAL_ENDPOINTS];
|
||||||
|
|
||||||
for (uint8_t EPNum = 0; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
|
for (uint8_t EPNum = 0; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
|
||||||
{
|
{
|
||||||
Endpoint_SelectEndpoint(EPNum);
|
Endpoint_SelectEndpoint(EPNum);
|
||||||
UECFG0XTemp[EPNum] = UECFG0X;
|
UECFG0XTemp[EPNum] = UECFG0X;
|
||||||
UECFG1XTemp[EPNum] = UECFG1X;
|
UECFG1XTemp[EPNum] = UECFG1X;
|
||||||
|
UEIENXTemp[EPNum] = UEIENX;
|
||||||
}
|
}
|
||||||
|
|
||||||
UECFG0XTemp[Number] = UECFG0XData;
|
UECFG0XTemp[Number] = UECFG0XData;
|
||||||
UECFG1XTemp[Number] = UECFG1XData;
|
UECFG1XTemp[Number] = UECFG1XData;
|
||||||
|
UEIENXTemp[Number] = 0;
|
||||||
|
|
||||||
for (uint8_t EPNum = 1; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
|
for (uint8_t EPNum = 1; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
|
||||||
{
|
{
|
||||||
@ -85,6 +88,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
|
|||||||
|
|
||||||
UECFG0X = UECFG0XTemp[EPNum];
|
UECFG0X = UECFG0XTemp[EPNum];
|
||||||
UECFG1X = UECFG1XTemp[EPNum];
|
UECFG1X = UECFG1XTemp[EPNum];
|
||||||
|
UEIENX = UEIENXTemp[EPNum];
|
||||||
|
|
||||||
if (!(Endpoint_IsConfigured()))
|
if (!(Endpoint_IsConfigured()))
|
||||||
return false;
|
return false;
|
||||||
|
@ -49,6 +49,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||||||
uint8_t UPCFG2XTemp[PIPE_TOTAL_PIPES];
|
uint8_t UPCFG2XTemp[PIPE_TOTAL_PIPES];
|
||||||
uint8_t UPCONXTemp[PIPE_TOTAL_PIPES];
|
uint8_t UPCONXTemp[PIPE_TOTAL_PIPES];
|
||||||
uint8_t UPINRQXTemp[PIPE_TOTAL_PIPES];
|
uint8_t UPINRQXTemp[PIPE_TOTAL_PIPES];
|
||||||
|
uint8_t UPIENXTemp[PIPE_TOTAL_PIPES];
|
||||||
|
|
||||||
for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)
|
for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)
|
||||||
{
|
{
|
||||||
@ -58,6 +59,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||||||
UPCFG2XTemp[PNum] = UPCFG2X;
|
UPCFG2XTemp[PNum] = UPCFG2X;
|
||||||
UPCONXTemp[PNum] = UPCONX;
|
UPCONXTemp[PNum] = UPCONX;
|
||||||
UPINRQXTemp[PNum] = UPINRQX;
|
UPINRQXTemp[PNum] = UPINRQX;
|
||||||
|
UPIENXTemp[PNum] = UPIENX;
|
||||||
}
|
}
|
||||||
|
|
||||||
UPCFG0XTemp[Number] = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
|
UPCFG0XTemp[Number] = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
|
||||||
@ -65,6 +67,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||||||
UPCFG2XTemp[Number] = 0;
|
UPCFG2XTemp[Number] = 0;
|
||||||
UPCONXTemp[Number] = (1 << INMODE);
|
UPCONXTemp[Number] = (1 << INMODE);
|
||||||
UPINRQXTemp[Number] = 0;
|
UPINRQXTemp[Number] = 0;
|
||||||
|
UPIENXTemp[Number] = 0;
|
||||||
|
|
||||||
for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)
|
for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)
|
||||||
{
|
{
|
||||||
@ -88,6 +91,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||||||
UPCFG2X = UPCFG2XTemp[PNum];
|
UPCFG2X = UPCFG2XTemp[PNum];
|
||||||
UPCONX |= UPCONXTemp[PNum];
|
UPCONX |= UPCONXTemp[PNum];
|
||||||
UPINRQX = UPINRQXTemp[PNum];
|
UPINRQX = UPINRQXTemp[PNum];
|
||||||
|
UPIENX = UPIENXTemp[PNum];
|
||||||
|
|
||||||
if (!(Pipe_IsConfigured()))
|
if (!(Pipe_IsConfigured()))
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user