git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3455 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
71ff7f78d2
commit
113f63e33f
|
@ -80,17 +80,25 @@ typedef struct {
|
|||
*/
|
||||
volatile uint32_t TXADDR;
|
||||
/**
|
||||
* @brief TX counter register.
|
||||
* @brief TX counter register 0.
|
||||
*/
|
||||
volatile uint32_t TXCOUNT;
|
||||
volatile uint16_t TXCOUNT0;
|
||||
/**
|
||||
* @brief TX counter register 1.
|
||||
*/
|
||||
volatile uint16_t TXCOUNT1;
|
||||
/**
|
||||
* @brief RX buffer offset register.
|
||||
*/
|
||||
volatile uint32_t RXADDR;
|
||||
/**
|
||||
* @brief RX counter register.
|
||||
* @brief RX counter register 0.
|
||||
*/
|
||||
volatile uint32_t RXCOUNT;
|
||||
volatile uint16_t RXCOUNT0;
|
||||
/**
|
||||
* @brief RX counter register 1.
|
||||
*/
|
||||
volatile uint16_t RXCOUNT1;
|
||||
} stm32_usb_descriptor_t;
|
||||
|
||||
/**
|
||||
|
|
|
@ -195,7 +195,7 @@ CH_IRQ_HANDLER(Vector90) {
|
|||
}
|
||||
else {
|
||||
/* Transaction mode.*/
|
||||
n = USB_GET_DESCRIPTOR(ep)->TXCOUNT;
|
||||
n = (size_t)USB_GET_DESCRIPTOR(ep)->TXCOUNT0;
|
||||
epcp->in_state->txbuf += n;
|
||||
epcp->in_state->txcnt += n;
|
||||
epcp->in_state->txsize -= n;
|
||||
|
@ -419,10 +419,10 @@ void usb_lld_init_endpoint(USBDriver *usbp, usbep_t ep) {
|
|||
else
|
||||
nblocks = ((((epcp->out_maxsize - 1) | 1) + 1) / 2) << 10;
|
||||
dp = USB_GET_DESCRIPTOR(ep);
|
||||
dp->TXCOUNT = 0;
|
||||
dp->RXCOUNT = nblocks;
|
||||
dp->TXADDR = pm_alloc(usbp, epcp->in_maxsize);
|
||||
dp->RXADDR = pm_alloc(usbp, epcp->out_maxsize);
|
||||
dp->TXCOUNT0 = 0;
|
||||
dp->RXCOUNT0 = nblocks;
|
||||
dp->TXADDR = pm_alloc(usbp, epcp->in_maxsize);
|
||||
dp->RXADDR = pm_alloc(usbp, epcp->out_maxsize);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -549,7 +549,7 @@ size_t usb_lld_read_packet_buffer(USBDriver *usbp, usbep_t ep,
|
|||
(void)usbp;
|
||||
udp = USB_GET_DESCRIPTOR(ep);
|
||||
pmap = USB_ADDR2PTR(udp->RXADDR);
|
||||
count = udp->RXCOUNT & RXCOUNT_COUNT_MASK;
|
||||
count = (size_t)udp->RXCOUNT0 & RXCOUNT_COUNT_MASK;
|
||||
if (n > count)
|
||||
n = count;
|
||||
n = (n + 1) / 2;
|
||||
|
@ -583,7 +583,7 @@ void usb_lld_write_packet_buffer(USBDriver *usbp, usbep_t ep,
|
|||
(void)usbp;
|
||||
udp = USB_GET_DESCRIPTOR(ep);
|
||||
pmap = USB_ADDR2PTR(udp->TXADDR);
|
||||
udp->TXCOUNT = n;
|
||||
udp->TXCOUNT0 = (uint16_t)n;
|
||||
n = (n + 1) / 2;
|
||||
while (n > 0) {
|
||||
*pmap++ = *(uint16_t *)buf;
|
||||
|
|
Loading…
Reference in New Issue