STM32: USB: reduce logging verbosity
[bertos.git] / bertos / cpu / cortex-m3 / drv / usb_stm32.c
index 52f208dcec413693386c078c4c7de28c3d1c827f..f314f99f2f17470190dd381434fb807447c3b73a 100644 (file)
@@ -1098,20 +1098,23 @@ ssize_t usb_ep_read(int ep, void *buffer, ssize_t size)
 {
        int ep_num = USB_EpLogToPhysAdd(ep);
 
-       if (UNLIKELY(!size))
-               return 0;
-       size = MIN(size, USB_RX_MAX_SIZE);
-       rx_done = false;
-       rx_size = 0;
-
        /* Non-blocking read for EP0 */
        if (ep_num == CTRL_ENP_OUT)
        {
                size = usb_size(size, setup_packet.wLength);
-               __usb_ep_write(ep_num, buffer, size,
-                               USB_StatusHandler);
+               if (!size)
+                       USB_StatusHandler(ep_num);
+               else
+                       __usb_ep_read(ep_num, buffer, size,
+                                       USB_StatusHandler);
                return size;
        }
+       if (UNLIKELY(!size))
+               return 0;
+       size = MIN(size, USB_RX_MAX_SIZE);
+       rx_done = false;
+       rx_size = 0;
+
        /* Blocking read */
        __usb_ep_read(ep_num, buffer, size, usb_ep_read_complete);
        while (!rx_done)
@@ -1140,20 +1143,23 @@ ssize_t usb_ep_write(int ep, const void *buffer, ssize_t size)
 {
        int ep_num = USB_EpLogToPhysAdd(ep);
 
-       if (UNLIKELY(!size))
-               return 0;
-       size = MIN(size, USB_TX_MAX_SIZE);
-       tx_done = false;
-       tx_size = 0;
-
        /* Non-blocking write for EP0 */
        if (ep_num == CTRL_ENP_IN)
        {
                size = usb_size(size, setup_packet.wLength);
-               __usb_ep_write(ep_num, buffer, size,
-                               USB_StatusHandler);
+               if (!size)
+                       USB_StatusHandler(ep_num);
+               else
+                       __usb_ep_write(ep_num, buffer, size,
+                                       USB_StatusHandler);
                return size;
        }
+       if (UNLIKELY(!size))
+               return 0;
+       size = MIN(size, USB_TX_MAX_SIZE);
+       tx_done = false;
+       tx_size = 0;
+
        /* Blocking write */
        __usb_ep_write(ep_num, buffer, size, usb_ep_write_complete);
        while (!tx_done)
@@ -1670,13 +1676,8 @@ static void usb_hw_reset(void)
        usb_set_address(0);
 
        /* Enable all the device interrupts */
-#if 0
        usb->CNTR = bmCTRM | bmRESETM | bmSOFM | bmERRM | bmPMAOVRM |
                        bmSUSPM | bmWKUPM;
-#else
-       /* XXX: disable frame interrupts for now (too much noise!) */
-       usb->CNTR = bmCTRM | bmRESETM | bmERRM | bmPMAOVRM | bmSUSPM | bmWKUPM;
-#endif
 }
 
 /* Handle a correct transfer under ISR */
@@ -1766,9 +1767,13 @@ static void usb_isr(void)
        }
        if (interrupt.SOF)
        {
+#if 0
+               /*
+                * XXX: disable logging of frame interrupts (too much noise!)
+                */
                uint16_t frame_nr = usb->FNR & 0x0fff;
-
                LOG_INFO("%s: frame %#x\n", __func__, frame_nr);
+#endif
                usb->ISTR = ~bmSOFM;
        }
        if (interrupt.WKUP)