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;
|
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.
|
* @brief RX buffer offset register.
|
||||||
*/
|
*/
|
||||||
volatile uint32_t RXADDR;
|
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;
|
} stm32_usb_descriptor_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -195,7 +195,7 @@ CH_IRQ_HANDLER(Vector90) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Transaction mode.*/
|
/* Transaction mode.*/
|
||||||
n = USB_GET_DESCRIPTOR(ep)->TXCOUNT;
|
n = (size_t)USB_GET_DESCRIPTOR(ep)->TXCOUNT0;
|
||||||
epcp->in_state->txbuf += n;
|
epcp->in_state->txbuf += n;
|
||||||
epcp->in_state->txcnt += n;
|
epcp->in_state->txcnt += n;
|
||||||
epcp->in_state->txsize -= n;
|
epcp->in_state->txsize -= n;
|
||||||
|
@ -419,8 +419,8 @@ void usb_lld_init_endpoint(USBDriver *usbp, usbep_t ep) {
|
||||||
else
|
else
|
||||||
nblocks = ((((epcp->out_maxsize - 1) | 1) + 1) / 2) << 10;
|
nblocks = ((((epcp->out_maxsize - 1) | 1) + 1) / 2) << 10;
|
||||||
dp = USB_GET_DESCRIPTOR(ep);
|
dp = USB_GET_DESCRIPTOR(ep);
|
||||||
dp->TXCOUNT = 0;
|
dp->TXCOUNT0 = 0;
|
||||||
dp->RXCOUNT = nblocks;
|
dp->RXCOUNT0 = nblocks;
|
||||||
dp->TXADDR = pm_alloc(usbp, epcp->in_maxsize);
|
dp->TXADDR = pm_alloc(usbp, epcp->in_maxsize);
|
||||||
dp->RXADDR = pm_alloc(usbp, epcp->out_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;
|
(void)usbp;
|
||||||
udp = USB_GET_DESCRIPTOR(ep);
|
udp = USB_GET_DESCRIPTOR(ep);
|
||||||
pmap = USB_ADDR2PTR(udp->RXADDR);
|
pmap = USB_ADDR2PTR(udp->RXADDR);
|
||||||
count = udp->RXCOUNT & RXCOUNT_COUNT_MASK;
|
count = (size_t)udp->RXCOUNT0 & RXCOUNT_COUNT_MASK;
|
||||||
if (n > count)
|
if (n > count)
|
||||||
n = count;
|
n = count;
|
||||||
n = (n + 1) / 2;
|
n = (n + 1) / 2;
|
||||||
|
@ -583,7 +583,7 @@ void usb_lld_write_packet_buffer(USBDriver *usbp, usbep_t ep,
|
||||||
(void)usbp;
|
(void)usbp;
|
||||||
udp = USB_GET_DESCRIPTOR(ep);
|
udp = USB_GET_DESCRIPTOR(ep);
|
||||||
pmap = USB_ADDR2PTR(udp->TXADDR);
|
pmap = USB_ADDR2PTR(udp->TXADDR);
|
||||||
udp->TXCOUNT = n;
|
udp->TXCOUNT0 = (uint16_t)n;
|
||||||
n = (n + 1) / 2;
|
n = (n + 1) / 2;
|
||||||
while (n > 0) {
|
while (n > 0) {
|
||||||
*pmap++ = *(uint16_t *)buf;
|
*pmap++ = *(uint16_t *)buf;
|
||||||
|
|
Loading…
Reference in New Issue