summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-11-28 16:56:14 +0700
committerhathach <[email protected]>2018-11-28 17:02:46 +0700
commit4a521d50853e17de552f6f4110b83c0154118999 (patch)
tree064c57404f4ed945584492c70415aa266cacc3c3 /src
parent04ad5da8201525c813b0a19473c467aeb45fa4d7 (diff)
clean up
Diffstat (limited to 'src')
-rw-r--r--src/portable/nxp/lpc17xx/dcd_lpc175x_6x.c85
1 files changed, 41 insertions, 44 deletions
diff --git a/src/portable/nxp/lpc17xx/dcd_lpc175x_6x.c b/src/portable/nxp/lpc17xx/dcd_lpc175x_6x.c
index a509e0a70..b8c53c2b9 100644
--- a/src/portable/nxp/lpc17xx/dcd_lpc175x_6x.c
+++ b/src/portable/nxp/lpc17xx/dcd_lpc175x_6x.c
@@ -60,10 +60,10 @@ typedef struct ATTR_ALIGNED(4)
uint16_t : 1; ///< reserved
uint16_t isochronous : 1; // is an iso endpoint
uint16_t max_packet_size : 11;
- volatile uint16_t buffer_length; // bytes for non-iso, number of packets for iso endpoint
+ volatile uint16_t buflen; // bytes for non-iso, number of packets for iso endpoint
//------------- Word 2 -------------//
- volatile uint32_t buffer_addr;
+ volatile uint32_t buffer;
//------------- Word 3 -------------//
volatile uint16_t retired : 1; // initialized to zero
@@ -358,8 +358,8 @@ void dd_xfer_init(dma_desc_t* p_dd, void* buffer, uint16_t total_bytes)
{
p_dd->next = 0;
p_dd->next_valid = 0;
- p_dd->buffer_addr = (uint32_t) buffer;
- p_dd->buffer_length = total_bytes;
+ p_dd->buffer = (uint32_t) buffer;
+ p_dd->buflen = total_bytes;
p_dd->status = DD_STATUS_NOT_SERVICED;
p_dd->iso_last_packet_valid = 0;
p_dd->present_count = 0;
@@ -445,43 +445,39 @@ static void control_xfer_isr(uint8_t rhport)
uint32_t const ep_int_status = LPC_USB->USBEpIntSt & LPC_USB->USBEpIntEn;
// LPC_USB->USBEpIntClr = ep_int_status; // acknowledge interrupt TODO cannot immediately acknowledge setup packet
- //------------- Setup Received-------------//
- if ( (ep_int_status & BIT_(0)) &&
- (sie_read(SIE_CMDCODE_ENDPOINT_SELECT+0, 1) & SIE_SELECT_ENDPOINT_SETUP_RECEIVED_MASK) )
+ // Control out complete
+ if ( ep_int_status & BIT_(0) )
{
- (void) sie_read(SIE_CMDCODE_ENDPOINT_SELECT_CLEAR_INTERRUPT+0, 1); // clear setup bit
+ if (sie_read(SIE_CMDCODE_ENDPOINT_SELECT+0, 1) & SIE_SELECT_ENDPOINT_SETUP_RECEIVED_MASK)
+ {
+ // Setup received
+ (void) sie_read(SIE_CMDCODE_ENDPOINT_SELECT_CLEAR_INTERRUPT+0, 1); // clear setup bit
- uint8_t setup_packet[8];
- control_ep_read(setup_packet, 8); // TODO read before clear setup above
+ uint8_t setup_packet[8];
+ control_ep_read(setup_packet, 8); // TODO read before clear setup above
- dcd_event_setup_received(rhport, setup_packet, true);
- }
- else if (ep_int_status & 0x03)
- {
- // Control out complete
- if ( ep_int_status & BIT_(0) )
+ dcd_event_setup_received(rhport, setup_packet, true);
+ }
+ else if ( _dcd.control.out_buffer )
{
- if ( _dcd.control.out_buffer )
- {
- // software queued transfer previously
- uint8_t received = control_ep_read(_dcd.control.out_buffer, _dcd.control.out_bytes);
+ // software queued transfer previously
+ uint8_t received = control_ep_read(_dcd.control.out_buffer, _dcd.control.out_bytes);
- _dcd.control.out_buffer = NULL;
- _dcd.control.out_bytes = 0;
+ _dcd.control.out_buffer = NULL;
+ _dcd.control.out_bytes = 0;
- dcd_event_xfer_complete(rhport, 0, received, XFER_RESULT_SUCCESS, true);
- }else
- {
- // mark as received
- _dcd.control.out_received = true;
- }
+ dcd_event_xfer_complete(rhport, 0, received, XFER_RESULT_SUCCESS, true);
+ }else
+ {
+ // hardware auto ack packet -> mark as received
+ _dcd.control.out_received = true;
}
+ }
// Control In complete
- if ( ep_int_status & BIT_(1) )
- {
- dcd_event_xfer_complete(rhport, TUSB_DIR_IN_MASK, _dcd.control.in_bytes, XFER_RESULT_SUCCESS, true);
- }
+ if ( ep_int_status & BIT_(1) )
+ {
+ dcd_event_xfer_complete(rhport, TUSB_DIR_IN_MASK, _dcd.control.in_bytes, XFER_RESULT_SUCCESS, true);
}
LPC_USB->USBEpIntClr = ep_int_status; // acknowledge interrupt TODO cannot immediately acknowledge setup packet
@@ -491,27 +487,28 @@ void hal_dcd_isr(uint8_t rhport)
{
(void) rhport;
- uint32_t const device_int_status = LPC_USB->USBDevIntSt & LPC_USB->USBDevIntEn;
- LPC_USB->USBDevIntClr = device_int_status;// Acknowledge handled interrupt
+ uint32_t const dev_int_status = LPC_USB->USBDevIntSt & LPC_USB->USBDevIntEn;
+ LPC_USB->USBDevIntClr = dev_int_status;// Acknowledge handled interrupt
// Bus event
- if (device_int_status & DEV_INT_DEVICE_STATUS_MASK)
+ if (dev_int_status & DEV_INT_DEVICE_STATUS_MASK)
{
- uint8_t const dev_status_reg = sie_read(SIE_CMDCODE_DEVICE_STATUS, 1);
- if (dev_status_reg & SIE_DEV_STATUS_RESET_MASK)
+ uint8_t const dev_status = sie_read(SIE_CMDCODE_DEVICE_STATUS, 1);
+ if (dev_status & SIE_DEV_STATUS_RESET_MASK)
{
bus_reset();
dcd_event_bus_signal(rhport, DCD_EVENT_BUS_RESET, true);
}
- if (dev_status_reg & SIE_DEV_STATUS_CONNECT_CHANGE_MASK)
- { // device is disconnected, require using VBUS (P1_30)
+ if (dev_status & SIE_DEV_STATUS_CONNECT_CHANGE_MASK)
+ {
+ // device is disconnected, require using VBUS (P1_30)
dcd_event_bus_signal(rhport, DCD_EVENT_UNPLUGGED, true);
}
- if (dev_status_reg & SIE_DEV_STATUS_SUSPEND_CHANGE_MASK)
+ if (dev_status & SIE_DEV_STATUS_SUSPEND_CHANGE_MASK)
{
- if (dev_status_reg & SIE_DEV_STATUS_SUSPEND_MASK)
+ if (dev_status & SIE_DEV_STATUS_SUSPEND_MASK)
{
dcd_event_bus_signal(rhport, DCD_EVENT_SUSPENDED, true);
}
@@ -524,7 +521,7 @@ void hal_dcd_isr(uint8_t rhport)
}
// Control Endpoint
- if (device_int_status & DEV_INT_ENDPOINT_SLOW_MASK)
+ if (dev_int_status & DEV_INT_ENDPOINT_SLOW_MASK)
{
control_xfer_isr(rhport);
}
@@ -534,13 +531,13 @@ void hal_dcd_isr(uint8_t rhport)
if (dma_int_status & DMA_INT_END_OF_XFER_MASK)
{
- uint32_t eot_int = LPC_USB->USBEoTIntSt;
+ uint32_t const eot_int = LPC_USB->USBEoTIntSt;
LPC_USB->USBEoTIntClr = eot_int; // acknowledge interrupt source
normal_xfer_isr(rhport, eot_int);
}
- if ( (device_int_status & DEV_INT_ERROR_MASK) || (dma_int_status & DMA_INT_ERROR_MASK) )
+ if ( (dev_int_status & DEV_INT_ERROR_MASK) || (dma_int_status & DMA_INT_ERROR_MASK) )
{
uint32_t error_status = sie_read(SIE_CMDCODE_READ_ERROR_STATUS, 1);
(void) error_status;