Parcourir la source

Merge pull request #1159 from hathach/fix-warnings

Increase compiler warnings flags
Ha Thach il y a 4 ans
Parent
commit
ffde3bd33d
72 fichiers modifiés avec 206 ajouts et 220 suppressions
  1. 4 4
      examples/device/cdc_msc/src/msc_disk.c
  2. 1 1
      examples/device/cdc_msc/src/usb_descriptors.c
  3. 3 0
      examples/device/cdc_msc_freertos/Makefile
  4. 3 0
      examples/device/hid_composite_freertos/Makefile
  5. 2 0
      examples/device/net_lwip_webserver/Makefile
  6. 7 6
      examples/device/uac2_headset/src/main.c
  7. 2 2
      examples/device/video_capture/src/main.c
  8. 2 2
      examples/device/webusb_serial/src/main.c
  9. 2 1
      examples/host/cdc_msc_hid/Makefile
  10. 2 1
      examples/host/hid_controller/Makefile
  11. 3 1
      examples/make.mk
  12. 2 2
      hw/bsp/board.c
  13. 3 0
      hw/bsp/d5035_01/board.mk
  14. 1 1
      hw/bsp/ea4088qs/board.mk
  15. 1 1
      hw/bsp/ea4357/board.mk
  16. 7 2
      hw/bsp/fomu/fomu.c
  17. 1 1
      hw/bsp/frdm_k32l2b/frdm_k32l2b.c
  18. 1 1
      hw/bsp/frdm_kl25z/frdm_kl25z.c
  19. 1 1
      hw/bsp/gd32vf103/family.c
  20. 1 1
      hw/bsp/imxrt/family.c
  21. 1 1
      hw/bsp/lpc15/family.mk
  22. 1 1
      hw/bsp/lpc18/family.mk
  23. 1 1
      hw/bsp/lpc54/family.c
  24. 1 1
      hw/bsp/lpc55/family.c
  25. 1 1
      hw/bsp/lpcxpresso1769/board.mk
  26. 1 1
      hw/bsp/mbed1768/board.mk
  27. 1 1
      hw/bsp/mm32/family.mk
  28. 1 1
      hw/bsp/ngx4330/board.mk
  29. 1 13
      hw/bsp/nrf/family.mk
  30. 1 13
      hw/bsp/nutiny_nuc121s/board.mk
  31. 1 16
      hw/bsp/nutiny_nuc126v/board.mk
  32. 1 16
      hw/bsp/nutiny_sdk_nuc120/board.mk
  33. 1 1
      hw/bsp/rx/boards/gr_citrus/gr_citrus.c
  34. 1 1
      hw/bsp/rx/boards/rx65n_target/rx65n_target.c
  35. 3 0
      hw/bsp/samd11/family.mk
  36. 3 0
      hw/bsp/samd21/family.mk
  37. 2 1
      hw/bsp/samd51/family.mk
  38. 2 0
      hw/bsp/same54xplainedpro/board.mk
  39. 1 1
      hw/bsp/same70_qmtech/board.mk
  40. 1 1
      hw/bsp/same70_xplained/board.mk
  41. 1 1
      hw/bsp/samg55xplained/board.mk
  42. 3 0
      hw/bsp/saml2x/family.mk
  43. 1 1
      hw/bsp/stm32f0/family.c
  44. 1 1
      hw/bsp/stm32f0/family.mk
  45. 1 1
      hw/bsp/stm32f4/family.c
  46. 1 1
      hw/bsp/stm32f7/family.c
  47. 1 1
      hw/bsp/stm32h7/family.c
  48. 1 1
      hw/bsp/stm32l4r5nucleo/stm32l4r5nucleo.c
  49. 1 1
      src/class/cdc/cdc_device.c
  50. 1 1
      src/class/cdc/cdc_host.c
  51. 1 1
      src/class/dfu/dfu_device.c
  52. 6 6
      src/class/hid/hid_device.c
  53. 1 0
      src/class/midi/midi_device.c
  54. 1 1
      src/class/msc/msc_device.c
  55. 1 1
      src/class/msc/msc_host.c
  56. 18 22
      src/class/usbtmc/usbtmc_device.c
  57. 0 6
      src/class/usbtmc/usbtmc_device.h
  58. 11 8
      src/class/video/video_device.c
  59. 2 3
      src/common/tusb_common.h
  60. 2 2
      src/common/tusb_fifo.c
  61. 21 18
      src/device/usbd.c
  62. 29 22
      src/host/usbh.c
  63. 1 1
      src/portable/dialog/da146xx/dcd_da146xx.c
  64. 3 3
      src/portable/ehci/ehci.c
  65. 2 2
      src/portable/nordic/nrf5x/dcd_nrf5x.c
  66. 6 1
      src/portable/nuvoton/nuc505/dcd_nuc505.c
  67. 1 1
      src/portable/nxp/transdimension/dcd_transdimension.c
  68. 2 2
      src/portable/renesas/usba/dcd_usba.c
  69. 1 1
      src/portable/sony/cxd56/dcd_cxd56.c
  70. 2 2
      src/portable/st/synopsys/dcd_synopsys.c
  71. 6 6
      src/portable/valentyusb/eptri/dcd_eptri.c
  72. 2 3
      src/tusb.c

+ 4 - 4
examples/device/cdc_msc/src/msc_disk.c

@@ -194,7 +194,7 @@ int32_t tud_msc_read10_cb(uint8_t lun, uint32_t lba, uint32_t offset, void* buff
   uint8_t const* addr = msc_disk[lba] + offset;
   uint8_t const* addr = msc_disk[lba] + offset;
   memcpy(buffer, addr, bufsize);
   memcpy(buffer, addr, bufsize);
 
 
-  return bufsize;
+  return (int32_t) bufsize;
 }
 }
 
 
 bool tud_msc_is_writable_cb (uint8_t lun)
 bool tud_msc_is_writable_cb (uint8_t lun)
@@ -224,7 +224,7 @@ int32_t tud_msc_write10_cb(uint8_t lun, uint32_t lba, uint32_t offset, uint8_t*
   (void) lba; (void) offset; (void) buffer;
   (void) lba; (void) offset; (void) buffer;
 #endif
 #endif
 
 
-  return bufsize;
+  return (int32_t) bufsize;
 }
 }
 
 
 // Callback invoked when received an SCSI command not in built-in list below
 // Callback invoked when received an SCSI command not in built-in list below
@@ -263,14 +263,14 @@ int32_t tud_msc_scsi_cb (uint8_t lun, uint8_t const scsi_cmd[16], void* buffer,
   {
   {
     if(in_xfer)
     if(in_xfer)
     {
     {
-      memcpy(buffer, response, resplen);
+      memcpy(buffer, response, (size_t) resplen);
     }else
     }else
     {
     {
       // SCSI output
       // SCSI output
     }
     }
   }
   }
 
 
-  return resplen;
+  return (int32_t) resplen;
 }
 }
 
 
 #endif
 #endif

+ 1 - 1
examples/device/cdc_msc/src/usb_descriptors.c

@@ -261,7 +261,7 @@ uint16_t const* tud_descriptor_string_cb(uint8_t index, uint16_t langid)
     const char* str = string_desc_arr[index];
     const char* str = string_desc_arr[index];
 
 
     // Cap at max char
     // Cap at max char
-    chr_count = strlen(str);
+    chr_count = (uint8_t) strlen(str);
     if ( chr_count > 31 ) chr_count = 31;
     if ( chr_count > 31 ) chr_count = 31;
 
 
     // Convert ASCII string into UTF-16
     // Convert ASCII string into UTF-16

+ 3 - 0
examples/device/cdc_msc_freertos/Makefile

@@ -29,6 +29,9 @@ SRC_C += \
 	$(FREERTOS_SRC)/timers.c \
 	$(FREERTOS_SRC)/timers.c \
 	$(subst ../../../,,$(wildcard ../../../$(FREERTOS_SRC)/portable/GCC/$(FREERTOS_PORT)/*.c))
 	$(subst ../../../,,$(wildcard ../../../$(FREERTOS_SRC)/portable/GCC/$(FREERTOS_PORT)/*.c))
 
 
+# Suppress FreeRTOS warnings
+CFLAGS += -Wno-error=cast-qual
+
 # FreeRTOS (lto + Os) linker issue
 # FreeRTOS (lto + Os) linker issue
 LDFLAGS += -Wl,--undefined=vTaskSwitchContext
 LDFLAGS += -Wl,--undefined=vTaskSwitchContext
 
 

+ 3 - 0
examples/device/hid_composite_freertos/Makefile

@@ -28,6 +28,9 @@ SRC_C += \
 	$(FREERTOS_SRC)/timers.c \
 	$(FREERTOS_SRC)/timers.c \
 	$(subst ../../../,,$(wildcard ../../../$(FREERTOS_SRC)/portable/GCC/$(FREERTOS_PORT)/*.c))
 	$(subst ../../../,,$(wildcard ../../../$(FREERTOS_SRC)/portable/GCC/$(FREERTOS_PORT)/*.c))
 
 
+# Suppress FreeRTOS warnings
+CFLAGS += -Wno-error=cast-qual
+
 # FreeRTOS (lto + Os) linker issue
 # FreeRTOS (lto + Os) linker issue
 LDFLAGS += -Wl,--undefined=vTaskSwitchContext
 LDFLAGS += -Wl,--undefined=vTaskSwitchContext
 
 

+ 2 - 0
examples/device/net_lwip_webserver/Makefile

@@ -3,7 +3,9 @@ DEPS_SUBMODULES += lib/lwip
 include ../../../tools/top.mk
 include ../../../tools/top.mk
 include ../../make.mk
 include ../../make.mk
 
 
+# suppress warning caused by lwip
 CFLAGS += \
 CFLAGS += \
+  -Wno-error=null-dereference \
   -Wno-error=unused-parameter \
   -Wno-error=unused-parameter \
   -Wno-error=unused-variable
   -Wno-error=unused-variable
 
 

+ 7 - 6
examples/device/uac2_headset/src/main.c

@@ -36,11 +36,12 @@
 
 
 // List of supported sample rates
 // List of supported sample rates
 #if defined(__RX__)
 #if defined(__RX__)
-const uint32_t sample_rates[]       = {44100, 48000};
+  const uint32_t sample_rates[] = {44100, 48000};
 #else
 #else
-const uint32_t sample_rates[]       = {44100, 48000, 88200, 96000};
+  const uint32_t sample_rates[] = {44100, 48000, 88200, 96000};
 #endif
 #endif
-uint32_t       current_sample_rate  = 44100;
+
+uint32_t current_sample_rate  = 44100;
 
 
 #define N_SAMPLE_RATES  TU_ARRAY_SIZE(sample_rates)
 #define N_SAMPLE_RATES  TU_ARRAY_SIZE(sample_rates)
 
 
@@ -202,7 +203,7 @@ static bool tud_audio_clock_set_request(uint8_t rhport, audio_control_request_t
   {
   {
     TU_VERIFY(request->wLength == sizeof(audio_control_cur_4_t));
     TU_VERIFY(request->wLength == sizeof(audio_control_cur_4_t));
 
 
-    current_sample_rate = ((audio_control_cur_4_t *)buf)->bCur;
+    current_sample_rate = ((audio_control_cur_4_t const *)buf)->bCur;
 
 
     TU_LOG1("Clock set current freq: %d\r\n", current_sample_rate);
     TU_LOG1("Clock set current freq: %d\r\n", current_sample_rate);
 
 
@@ -264,7 +265,7 @@ static bool tud_audio_feature_unit_set_request(uint8_t rhport, audio_control_req
   {
   {
     TU_VERIFY(request->wLength == sizeof(audio_control_cur_1_t));
     TU_VERIFY(request->wLength == sizeof(audio_control_cur_1_t));
 
 
-    mute[request->bChannelNumber] = ((audio_control_cur_1_t *)buf)->bCur;
+    mute[request->bChannelNumber] = ((audio_control_cur_1_t const *)buf)->bCur;
 
 
     TU_LOG1("Set channel %d Mute: %d\r\n", request->bChannelNumber, mute[request->bChannelNumber]);
     TU_LOG1("Set channel %d Mute: %d\r\n", request->bChannelNumber, mute[request->bChannelNumber]);
 
 
@@ -295,7 +296,7 @@ static bool tud_audio_feature_unit_set_request(uint8_t rhport, audio_control_req
 // Invoked when audio class specific get request received for an entity
 // Invoked when audio class specific get request received for an entity
 bool tud_audio_get_req_entity_cb(uint8_t rhport, tusb_control_request_t const *p_request)
 bool tud_audio_get_req_entity_cb(uint8_t rhport, tusb_control_request_t const *p_request)
 {
 {
-  audio_control_request_t *request = (audio_control_request_t *)p_request;
+  audio_control_request_t const *request = (audio_control_request_t const *)p_request;
 
 
   if (request->bEntityID == UAC2_ENTITY_CLOCK)
   if (request->bEntityID == UAC2_ENTITY_CLOCK)
     return tud_audio_clock_get_request(rhport, request);
     return tud_audio_clock_get_request(rhport, request);

+ 2 - 2
examples/device/video_capture/src/main.c

@@ -166,7 +166,7 @@ void video_task(void)
     already_sent = 1;
     already_sent = 1;
     start_ms = board_millis();
     start_ms = board_millis();
 #ifdef CFG_EXAMPLE_VIDEO_READONLY
 #ifdef CFG_EXAMPLE_VIDEO_READONLY
-    tud_video_n_frame_xfer(0, 0, (void*)&frame_buffer[(frame_num % (FRAME_WIDTH / 2)) * 4],
+    tud_video_n_frame_xfer(0, 0, (void*)(uintptr_t) &frame_buffer[(frame_num % (FRAME_WIDTH / 2)) * 4],
                            FRAME_WIDTH * FRAME_HEIGHT * 16/8);
                            FRAME_WIDTH * FRAME_HEIGHT * 16/8);
 #else
 #else
     fill_color_bar(frame_buffer, frame_num);
     fill_color_bar(frame_buffer, frame_num);
@@ -180,7 +180,7 @@ void video_task(void)
   start_ms += interval_ms;
   start_ms += interval_ms;
 
 
 #ifdef CFG_EXAMPLE_VIDEO_READONLY
 #ifdef CFG_EXAMPLE_VIDEO_READONLY
-  tud_video_n_frame_xfer(0, 0, (void*)&frame_buffer[(frame_num % (FRAME_WIDTH / 2)) * 4],
+  tud_video_n_frame_xfer(0, 0, (void*)(uintptr_t) &frame_buffer[(frame_num % (FRAME_WIDTH / 2)) * 4],
                          FRAME_WIDTH * FRAME_HEIGHT * 16/8);
                          FRAME_WIDTH * FRAME_HEIGHT * 16/8);
 #else
 #else
   fill_color_bar(frame_buffer, frame_num);
   fill_color_bar(frame_buffer, frame_num);

+ 2 - 2
examples/device/webusb_serial/src/main.c

@@ -179,7 +179,7 @@ bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_requ
         case VENDOR_REQUEST_WEBUSB:
         case VENDOR_REQUEST_WEBUSB:
           // match vendor request in BOS descriptor
           // match vendor request in BOS descriptor
           // Get landing page url
           // Get landing page url
-          return tud_control_xfer(rhport, request, (void*) &desc_url, desc_url.bLength);
+          return tud_control_xfer(rhport, request, (void*)(uintptr_t) &desc_url, desc_url.bLength);
 
 
         case VENDOR_REQUEST_MICROSOFT:
         case VENDOR_REQUEST_MICROSOFT:
           if ( request->wIndex == 7 )
           if ( request->wIndex == 7 )
@@ -188,7 +188,7 @@ bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_requ
             uint16_t total_len;
             uint16_t total_len;
             memcpy(&total_len, desc_ms_os_20+8, 2);
             memcpy(&total_len, desc_ms_os_20+8, 2);
 
 
-            return tud_control_xfer(rhport, request, (void*) desc_ms_os_20, total_len);
+            return tud_control_xfer(rhport, request, (void*)(uintptr_t) desc_ms_os_20, total_len);
           }else
           }else
           {
           {
             return false;
             return false;

+ 2 - 1
examples/host/cdc_msc_hid/Makefile

@@ -9,7 +9,8 @@ INC += \
 EXAMPLE_SOURCE += $(wildcard src/*.c)
 EXAMPLE_SOURCE += $(wildcard src/*.c)
 SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
 SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
 
 
-CFLAGS += -Wno-error=cast-align
+# TODO: suppress warning caused by host stack
+CFLAGS += -Wno-error=cast-align -Wno-error=null-dereference
 
 
 # TinyUSB Host Stack source
 # TinyUSB Host Stack source
 SRC_C += \
 SRC_C += \

+ 2 - 1
examples/host/hid_controller/Makefile

@@ -12,7 +12,8 @@ EXAMPLE_SOURCE += \
 	
 	
 SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
 SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
 
 
-CFLAGS += -Wno-error=cast-align
+# TODO: suppress warning caused by host stack
+CFLAGS += -Wno-error=cast-align -Wno-error=null-dereference
 
 
 # TinyUSB Host Stack source
 # TinyUSB Host Stack source
 SRC_C += \
 SRC_C += \

+ 3 - 1
examples/make.mk

@@ -104,7 +104,9 @@ CFLAGS += \
   -Wmissing-format-attribute \
   -Wmissing-format-attribute \
   -Wunreachable-code \
   -Wunreachable-code \
   -Wcast-align \
   -Wcast-align \
-  -Wcast-function-type
+  -Wcast-function-type \
+  -Wcast-qual \
+  -Wnull-dereference
 
 
 # Debugging/Optimization
 # Debugging/Optimization
 ifeq ($(DEBUG), 1)
 ifeq ($(DEBUG), 1)

+ 2 - 2
hw/bsp/board.c

@@ -135,13 +135,13 @@ TU_ATTR_USED int sys_read (int fhdl, char *buf, size_t count)
 TU_ATTR_USED int sys_write (int fhdl, const void *buf, size_t count)
 TU_ATTR_USED int sys_write (int fhdl, const void *buf, size_t count)
 {
 {
   (void) fhdl;
   (void) fhdl;
-  return board_uart_write(buf, count);
+  return board_uart_write(buf, (int) count);
 }
 }
 
 
 TU_ATTR_USED int sys_read (int fhdl, char *buf, size_t count)
 TU_ATTR_USED int sys_read (int fhdl, char *buf, size_t count)
 {
 {
   (void) fhdl;
   (void) fhdl;
-  return board_uart_read((uint8_t*) buf, count);
+  return board_uart_read((uint8_t*) buf, (int) count);
 }
 }
 
 
 #endif
 #endif

+ 3 - 0
hw/bsp/d5035_01/board.mk

@@ -18,6 +18,9 @@ CFLAGS += \
   -DSVC_Handler=SVCall_Handler \
   -DSVC_Handler=SVCall_Handler \
   -DHWREV=$(HWREV)
   -DHWREV=$(HWREV)
 
 
+# suppress warning caused by vendor mcu driver
+CFLAGS += -Wno-error=cast-qual
+
 # All source paths should be relative to the top level.
 # All source paths should be relative to the top level.
 LD_FILE = hw/bsp/$(BOARD)/same51j19a_flash.ld
 LD_FILE = hw/bsp/$(BOARD)/same51j19a_flash.ld
 
 

+ 1 - 1
hw/bsp/ea4088qs/board.mk

@@ -14,7 +14,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_LPC40XX
   -DCFG_TUSB_MCU=OPT_MCU_LPC40XX
 
 
 # mcu driver cause following warnings
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=strict-prototypes -Wno-error=unused-parameter
+CFLAGS += -Wno-error=strict-prototypes -Wno-error=unused-parameter -Wno-error=cast-qual
 
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc40xx/lpc_chip_40xx
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc40xx/lpc_chip_40xx
 
 

+ 1 - 1
hw/bsp/ea4357/board.mk

@@ -13,7 +13,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_LPC43XX
   -DCFG_TUSB_MCU=OPT_MCU_LPC43XX
 
 
 # mcu driver cause following warnings
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=unused-parameter -Wno-error=strict-prototypes
+CFLAGS += -Wno-error=unused-parameter -Wno-error=strict-prototypes  -Wno-error=cast-qual
 
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc43xx/lpc_chip_43xx
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc43xx/lpc_chip_43xx
 
 

+ 7 - 2
hw/bsp/fomu/fomu.c

@@ -101,9 +101,14 @@ int board_uart_read(uint8_t* buf, int len)
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
   int32_t offset = 0;
   int32_t offset = 0;
+  uint8_t const* buf8 = (uint8_t const*) buf;
   for (offset = 0; offset < len; offset++)
   for (offset = 0; offset < len; offset++)
-    if (! (messible_status_read() & CSR_MESSIBLE_STATUS_FULL_OFFSET))
-      messible_in_write(((uint8_t *)buf)[offset]);
+  {
+    if (!(messible_status_read() & CSR_MESSIBLE_STATUS_FULL_OFFSET))
+    {
+      messible_in_write(buf8[offset]);
+    }
+  }
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
hw/bsp/frdm_k32l2b/frdm_k32l2b.c

@@ -122,7 +122,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  LPUART_WriteBlocking(UART_PORT, (uint8_t*)buf, len);
+  LPUART_WriteBlocking(UART_PORT, (uint8_t const*) buf, len);
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
hw/bsp/frdm_kl25z/frdm_kl25z.c

@@ -153,7 +153,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  LPSCI_WriteBlocking(UART_PORT, (uint8_t*)buf, len);
+  LPSCI_WriteBlocking(UART_PORT, (uint8_t const*) buf, len);
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
hw/bsp/gd32vf103/family.c

@@ -158,7 +158,7 @@ int board_uart_write(void const* buf, int len) {
 #if defined(UART_DEV)
 #if defined(UART_DEV)
   int txsize = len;
   int txsize = len;
   while (txsize--) {
   while (txsize--) {
-    usart_write(UART_DEV, *(uint8_t*)buf);
+    usart_write(UART_DEV, *(uint8_t const*)buf);
     buf++;
     buf++;
   }
   }
   return len;
   return len;

+ 1 - 1
hw/bsp/imxrt/family.c

@@ -172,7 +172,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  LPUART_WriteBlocking(UART_PORT, (uint8_t*)buf, len);
+  LPUART_WriteBlocking(UART_PORT, (uint8_t const*)buf, len);
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
hw/bsp/lpc15/family.mk

@@ -15,7 +15,7 @@ CFLAGS += \
   -DCFG_TUSB_MEM_ALIGN='__attribute__((aligned(64)))' 
   -DCFG_TUSB_MEM_ALIGN='__attribute__((aligned(64)))' 
 
 
 # mcu driver cause following warnings
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=strict-prototypes -Wno-error=unused-parameter -Wno-error=unused-variable
+CFLAGS += -Wno-error=strict-prototypes -Wno-error=unused-parameter -Wno-error=unused-variable -Wno-error=cast-qual
 
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc15xx/lpc_chip_15xx
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc15xx/lpc_chip_15xx
 
 

+ 1 - 1
hw/bsp/lpc18/family.mk

@@ -13,7 +13,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_LPC18XX
   -DCFG_TUSB_MCU=OPT_MCU_LPC18XX
 
 
 # mcu driver cause following warnings
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=unused-parameter -Wno-error=strict-prototypes
+CFLAGS += -Wno-error=unused-parameter -Wno-error=strict-prototypes -Wno-error=cast-qual
 
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc18xx/lpc_chip_18xx
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc18xx/lpc_chip_18xx
 
 

+ 1 - 1
hw/bsp/lpc54/family.c

@@ -210,7 +210,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  USART_WriteBlocking(UART_DEV, (uint8_t *)buf, len);
+  USART_WriteBlocking(UART_DEV, (uint8_t const *) buf, len);
   return 0;
   return 0;
 }
 }
 
 

+ 1 - 1
hw/bsp/lpc55/family.c

@@ -265,7 +265,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  USART_WriteBlocking(UART_DEV, (uint8_t *)buf, len);
+  USART_WriteBlocking(UART_DEV, (uint8_t const *) buf, len);
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
hw/bsp/lpcxpresso1769/board.mk

@@ -12,7 +12,7 @@ CFLAGS += \
   -DRTC_EV_SUPPORT=0
   -DRTC_EV_SUPPORT=0
 
 
 # lpc_types.h cause following errors
 # lpc_types.h cause following errors
-CFLAGS += -Wno-error=strict-prototypes
+CFLAGS += -Wno-error=strict-prototypes -Wno-error=cast-qual
 
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc175x_6x/lpc_chip_175x_6x
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc175x_6x/lpc_chip_175x_6x
 
 

+ 1 - 1
hw/bsp/mbed1768/board.mk

@@ -12,7 +12,7 @@ CFLAGS += \
   -DRTC_EV_SUPPORT=0
   -DRTC_EV_SUPPORT=0
 
 
 # startup.c and lpc_types.h cause following errors
 # startup.c and lpc_types.h cause following errors
-CFLAGS += -Wno-error=strict-prototypes
+CFLAGS += -Wno-error=strict-prototypes -Wno-error=cast-qual
 
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc175x_6x/lpc_chip_175x_6x
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc175x_6x/lpc_chip_175x_6x
 
 

+ 1 - 1
hw/bsp/mm32/family.mk

@@ -14,7 +14,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_MM32F327X 
   -DCFG_TUSB_MCU=OPT_MCU_MM32F327X 
 
 
 # suppress warning caused by vendor mcu driver
 # suppress warning caused by vendor mcu driver
-CFLAGS += -Wno-error=unused-parameter -Wno-error=maybe-uninitialized
+CFLAGS += -Wno-error=unused-parameter -Wno-error=maybe-uninitialized -Wno-error=cast-qual
 
 
 SRC_C += \
 SRC_C += \
 	src/portable/mindmotion/mm32/dcd_mm32f327x_otg.c \
 	src/portable/mindmotion/mm32/dcd_mm32f327x_otg.c \

+ 1 - 1
hw/bsp/ngx4330/board.mk

@@ -13,7 +13,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_LPC43XX
   -DCFG_TUSB_MCU=OPT_MCU_LPC43XX
 
 
 # mcu driver cause following warnings
 # mcu driver cause following warnings
-CFLAGS += -Wno-error=strict-prototypes -Wno-error=unused-parameter
+CFLAGS += -Wno-error=strict-prototypes -Wno-error=unused-parameter -Wno-error=cast-qual
 
 
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc43xx/lpc_chip_43xx
 MCU_DIR = hw/mcu/nxp/lpcopen/lpc43xx/lpc_chip_43xx
 
 

+ 1 - 13
hw/bsp/nrf/family.mk

@@ -14,19 +14,7 @@ CFLAGS += \
   -DCONFIG_GPIO_AS_PINRESET
   -DCONFIG_GPIO_AS_PINRESET
 
 
 # suppress warning caused by vendor mcu driver
 # suppress warning caused by vendor mcu driver
-CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align
-
-# due to tusb_hal_nrf_power_event
-GCCVERSION = $(firstword $(subst ., ,$(shell arm-none-eabi-gcc -dumpversion)))
-ifeq ($(CMDEXE),1)
-  ifeq ($(shell if $(GCCVERSION) geq 8 echo 1), 1)
-  CFLAGS += -Wno-error=cast-function-type
-  endif
-else
-  ifeq ($(shell expr $(GCCVERSION) \>= 8), 1)
-  CFLAGS += -Wno-error=cast-function-type
-  endif
-endif
+CFLAGS += -Wno-error=undef -Wno-error=unused-parameter -Wno-error=cast-align -Wno-error=cast-qual
 
 
 # All source paths should be relative to the top level.
 # All source paths should be relative to the top level.
 LD_FILE ?= hw/bsp/nrf/boards/$(BOARD)/nrf52840_s140_v6.ld
 LD_FILE ?= hw/bsp/nrf/boards/$(BOARD)/nrf52840_s140_v6.ld

+ 1 - 13
hw/bsp/nutiny_nuc121s/board.mk

@@ -16,24 +16,12 @@ LD_FILE = hw/bsp/$(BOARD)/nuc121_flash.ld
 SRC_C += \
 SRC_C += \
   src/portable/nuvoton/nuc121/dcd_nuc121.c \
   src/portable/nuvoton/nuc121/dcd_nuc121.c \
   hw/mcu/nuvoton/nuc121_125/Device/Nuvoton/NUC121/Source/system_NUC121.c \
   hw/mcu/nuvoton/nuc121_125/Device/Nuvoton/NUC121/Source/system_NUC121.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/adc.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/bpwm.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/clk.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/clk.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/fmc.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/fmc.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/gpio.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/gpio.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/i2c.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/pdma.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/pwm.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/spi_i2s.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/sys.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/sys.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/timer.c \
   hw/mcu/nuvoton/nuc121_125/StdDriver/src/timer.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/uart.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/usbd.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/usci_i2c.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/usci_spi.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/usci_uart.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/wdt.c \
-  hw/mcu/nuvoton/nuc121_125/StdDriver/src/wwdt.c
+  hw/mcu/nuvoton/nuc121_125/StdDriver/src/uart.c
 
 
 SRC_S += \
 SRC_S += \
   hw/mcu/nuvoton/nuc121_125/Device/Nuvoton/NUC121/Source/GCC/startup_NUC121.S
   hw/mcu/nuvoton/nuc121_125/Device/Nuvoton/NUC121/Source/GCC/startup_NUC121.S

+ 1 - 16
hw/bsp/nutiny_nuc126v/board.mk

@@ -17,28 +17,13 @@ LD_FILE = hw/bsp/$(BOARD)/nuc126_flash.ld
 SRC_C += \
 SRC_C += \
   src/portable/nuvoton/nuc121/dcd_nuc121.c \
   src/portable/nuvoton/nuc121/dcd_nuc121.c \
   hw/mcu/nuvoton/nuc126/Device/Nuvoton/NUC126/Source/system_NUC126.c \
   hw/mcu/nuvoton/nuc126/Device/Nuvoton/NUC126/Source/system_NUC126.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/acmp.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/adc.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/clk.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/clk.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/crc.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/crc.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/ebi.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/fmc.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/gpio.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/gpio.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/pdma.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/pwm.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/rtc.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/rtc.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/sc.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/scuart.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/spi.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/sys.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/sys.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/timer.c \
   hw/mcu/nuvoton/nuc126/StdDriver/src/timer.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/timer_pwm.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/uart.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/usbd.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/usci_spi.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/usci_uart.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/wdt.c \
-  hw/mcu/nuvoton/nuc126/StdDriver/src/wwdt.c
+  hw/mcu/nuvoton/nuc126/StdDriver/src/uart.c
 
 
 SRC_S += \
 SRC_S += \
   hw/mcu/nuvoton/nuc126/Device/Nuvoton/NUC126/Source/GCC/startup_NUC126.S
   hw/mcu/nuvoton/nuc126/Device/Nuvoton/NUC126/Source/GCC/startup_NUC126.S

+ 1 - 16
hw/bsp/nutiny_sdk_nuc120/board.mk

@@ -15,26 +15,11 @@ LD_FILE = hw/bsp/nutiny_sdk_nuc120/nuc120_flash.ld
 SRC_C += \
 SRC_C += \
   src/portable/nuvoton/nuc120/dcd_nuc120.c \
   src/portable/nuvoton/nuc120/dcd_nuc120.c \
   hw/mcu/nuvoton/nuc100_120/Device/Nuvoton/NUC100Series/Source/system_NUC100Series.c \
   hw/mcu/nuvoton/nuc100_120/Device/Nuvoton/NUC100Series/Source/system_NUC100Series.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/acmp.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/adc.c \
   hw/mcu/nuvoton/nuc100_120/StdDriver/src/clk.c \
   hw/mcu/nuvoton/nuc100_120/StdDriver/src/clk.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/crc.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/fmc.c \
   hw/mcu/nuvoton/nuc100_120/StdDriver/src/gpio.c \
   hw/mcu/nuvoton/nuc100_120/StdDriver/src/gpio.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/i2c.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/i2s.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/pdma.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/ps2.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/pwm.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/rtc.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/sc.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/spi.c \
   hw/mcu/nuvoton/nuc100_120/StdDriver/src/sys.c \
   hw/mcu/nuvoton/nuc100_120/StdDriver/src/sys.c \
   hw/mcu/nuvoton/nuc100_120/StdDriver/src/timer.c \
   hw/mcu/nuvoton/nuc100_120/StdDriver/src/timer.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/uart.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/usbd.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/wdt.c \
-  hw/mcu/nuvoton/nuc100_120/StdDriver/src/wwdt.c
+  hw/mcu/nuvoton/nuc100_120/StdDriver/src/uart.c
 
 
 SRC_S += \
 SRC_S += \
   hw/mcu/nuvoton/nuc100_120/Device/Nuvoton/NUC100Series/Source/GCC/startup_NUC100Series.S
   hw/mcu/nuvoton/nuc100_120/Device/Nuvoton/NUC100Series/Source/GCC/startup_NUC100Series.S

+ 1 - 1
hw/bsp/rx/boards/gr_citrus/gr_citrus.c

@@ -228,7 +228,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const *buf, int len)
 int board_uart_write(void const *buf, int len)
 {
 {
-  sci0_buf[0].buf = (uint8_t*)buf;
+  sci0_buf[0].buf = (uint8_t*)(uintptr_t) buf;
   sci0_buf[0].cnt = len;
   sci0_buf[0].cnt = len;
   SCI0.SCR.BYTE |= SCI_SCR_TE | SCI_SCR_TIE;
   SCI0.SCR.BYTE |= SCI_SCR_TE | SCI_SCR_TIE;
   while (SCI0.SCR.BIT.TE) ;
   while (SCI0.SCR.BIT.TE) ;

+ 1 - 1
hw/bsp/rx/boards/rx65n_target/rx65n_target.c

@@ -273,7 +273,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const *buf, int len)
 int board_uart_write(void const *buf, int len)
 {
 {
-  sci_buf[0].buf = (uint8_t*)buf;
+  sci_buf[0].buf = (uint8_t*)(uintptr_t) buf;
   sci_buf[0].cnt = len;
   sci_buf[0].cnt = len;
   SCI5.SCR.BYTE |= SCI_SCR_TE | SCI_SCR_TIE;
   SCI5.SCR.BYTE |= SCI_SCR_TE | SCI_SCR_TIE;
   while (SCI5.SCR.BIT.TE) ;
   while (SCI5.SCR.BIT.TE) ;

+ 3 - 0
hw/bsp/samd11/family.mk

@@ -11,6 +11,9 @@ CFLAGS += \
   -DOSC32K_OVERWRITE_CALIBRATION=0 \
   -DOSC32K_OVERWRITE_CALIBRATION=0 \
   -DCFG_TUSB_MCU=OPT_MCU_SAMD11
   -DCFG_TUSB_MCU=OPT_MCU_SAMD11
 
 
+# suppress warning caused by vendor mcu driver
+CFLAGS += -Wno-error=cast-qual
+
 SRC_C += \
 SRC_C += \
 	src/portable/microchip/samd/dcd_samd.c \
 	src/portable/microchip/samd/dcd_samd.c \
 	hw/mcu/microchip/samd11/gcc/gcc/startup_samd11.c \
 	hw/mcu/microchip/samd11/gcc/gcc/startup_samd11.c \

+ 3 - 0
hw/bsp/samd21/family.mk

@@ -12,6 +12,9 @@ CFLAGS += \
   -DCONF_DFLL_OVERWRITE_CALIBRATION=0 \
   -DCONF_DFLL_OVERWRITE_CALIBRATION=0 \
   -DCFG_TUSB_MCU=OPT_MCU_SAMD21
   -DCFG_TUSB_MCU=OPT_MCU_SAMD21
 
 
+# suppress warning caused by vendor mcu driver
+CFLAGS += -Wno-error=cast-qual
+
 SRC_C += \
 SRC_C += \
 	src/portable/microchip/samd/dcd_samd.c \
 	src/portable/microchip/samd/dcd_samd.c \
 	hw/mcu/microchip/samd21/gcc/gcc/startup_samd21.c \
 	hw/mcu/microchip/samd21/gcc/gcc/startup_samd21.c \

+ 2 - 1
hw/bsp/samd51/family.mk

@@ -13,7 +13,8 @@ CFLAGS += \
   -nostdlib -nostartfiles \
   -nostdlib -nostartfiles \
   -DCFG_TUSB_MCU=OPT_MCU_SAMD51
   -DCFG_TUSB_MCU=OPT_MCU_SAMD51
 
 
-CFLAGS += -Wno-error=undef
+# suppress warning caused by vendor mcu driver
+CFLAGS += -Wno-error=cast-qual
 
 
 SRC_C += \
 SRC_C += \
 	src/portable/microchip/samd/dcd_samd.c \
 	src/portable/microchip/samd/dcd_samd.c \

+ 2 - 0
hw/bsp/same54xplainedpro/board.mk

@@ -15,6 +15,8 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_SAME5X \
   -DCFG_TUSB_MCU=OPT_MCU_SAME5X \
   -DBOARD_NAME="\"Microchip SAM E54 Xplained Pro\""
   -DBOARD_NAME="\"Microchip SAM E54 Xplained Pro\""
 
 
+# suppress warning caused by vendor mcu driver
+CFLAGS += -Wno-error=cast-qual
 
 
 # All source paths should be relative to the top level.
 # All source paths should be relative to the top level.
 LD_FILE = hw/bsp/$(BOARD)/same54p20a_flash.ld
 LD_FILE = hw/bsp/$(BOARD)/same54p20a_flash.ld

+ 1 - 1
hw/bsp/same70_qmtech/board.mk

@@ -11,7 +11,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_SAMX7X
   -DCFG_TUSB_MCU=OPT_MCU_SAMX7X
 
 
 # suppress following warnings from mcu driver
 # suppress following warnings from mcu driver
-CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align
+CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align -Wno-error=cast-qual
 
 
 ASF_DIR = hw/mcu/microchip/same70
 ASF_DIR = hw/mcu/microchip/same70
 
 

+ 1 - 1
hw/bsp/same70_xplained/board.mk

@@ -11,7 +11,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_SAMX7X
   -DCFG_TUSB_MCU=OPT_MCU_SAMX7X
 
 
 # suppress following warnings from mcu driver
 # suppress following warnings from mcu driver
-CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align
+CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align -Wno-error=cast-qual
 
 
 ASF_DIR = hw/mcu/microchip/same70
 ASF_DIR = hw/mcu/microchip/same70
 
 

+ 1 - 1
hw/bsp/samg55xplained/board.mk

@@ -12,7 +12,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_SAMG
   -DCFG_TUSB_MCU=OPT_MCU_SAMG
 
 
 # suppress following warnings from mcu driver
 # suppress following warnings from mcu driver
-CFLAGS += -Wno-error=undef
+CFLAGS += -Wno-error=undef -Wno-error=cast-qual -Wno-error=null-dereference
 
 
 ASF_DIR = hw/mcu/microchip/samg55
 ASF_DIR = hw/mcu/microchip/samg55
 
 

+ 3 - 0
hw/bsp/saml2x/family.mk

@@ -13,6 +13,9 @@ CFLAGS += \
   -DCONF_OSC32K_CALIB_ENABLE=0 \
   -DCONF_OSC32K_CALIB_ENABLE=0 \
   -DCFG_TUSB_MCU=OPT_MCU_SAML22
   -DCFG_TUSB_MCU=OPT_MCU_SAML22
 
 
+# suppress warning caused by vendor mcu driver
+CFLAGS += -Wno-error=cast-qual
+
 SRC_C += \
 SRC_C += \
 	src/portable/microchip/samd/dcd_samd.c \
 	src/portable/microchip/samd/dcd_samd.c \
 	$(MCU_DIR)/gcc/gcc/startup_$(SAML_VARIANT).c \
 	$(MCU_DIR)/gcc/gcc/startup_$(SAML_VARIANT).c \

+ 1 - 1
hw/bsp/stm32f0/family.c

@@ -134,7 +134,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  HAL_UART_Transmit(&UartHandle, (uint8_t*) buf, len, 0xffff);
+  HAL_UART_Transmit(&UartHandle, (uint8_t*)(uintptr_t) buf, len, 0xffff);
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
hw/bsp/stm32f0/family.mk

@@ -18,7 +18,7 @@ CFLAGS += \
   -DCFG_TUSB_MCU=OPT_MCU_STM32F0
   -DCFG_TUSB_MCU=OPT_MCU_STM32F0
 
 
 # suppress warning caused by vendor mcu driver
 # suppress warning caused by vendor mcu driver
-CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align
+CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-align -Wno-error=cast-qual
 
 
 SRC_C += \
 SRC_C += \
   src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c \
   src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c \

+ 1 - 1
hw/bsp/stm32f4/family.c

@@ -160,7 +160,7 @@ int board_uart_read(uint8_t* buf, int len)
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
 #ifdef UART_DEV
 #ifdef UART_DEV
-  HAL_UART_Transmit(&UartHandle, (uint8_t*) buf, len, 0xffff);
+  HAL_UART_Transmit(&UartHandle, (uint8_t*)(uintptr_t) buf, len, 0xffff);
   return len;
   return len;
 #else
 #else
   (void) buf; (void) len; (void) UartHandle;
   (void) buf; (void) len; (void) UartHandle;

+ 1 - 1
hw/bsp/stm32f7/family.c

@@ -284,7 +284,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  HAL_UART_Transmit(&UartHandle, (uint8_t*) buf, len, 0xffff);
+  HAL_UART_Transmit(&UartHandle, (uint8_t*)(uintptr_t) buf, len, 0xffff);
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
hw/bsp/stm32h7/family.c

@@ -237,7 +237,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  HAL_UART_Transmit(&UartHandle, (uint8_t*) buf, len, 0xffff);
+  HAL_UART_Transmit(&UartHandle, (uint8_t*)(uintptr_t) buf, len, 0xffff);
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
hw/bsp/stm32l4r5nucleo/stm32l4r5nucleo.c

@@ -257,7 +257,7 @@ int board_uart_read(uint8_t* buf, int len)
 
 
 int board_uart_write(void const * buf, int len)
 int board_uart_write(void const * buf, int len)
 {
 {
-  HAL_UART_Transmit(&UartHandle, (uint8_t*) buf, len, 0xffff);
+  HAL_UART_Transmit(&UartHandle, (uint8_t*)(uintptr_t) buf, len, 0xffff);
   return len;
   return len;
 }
 }
 
 

+ 1 - 1
src/class/cdc/cdc_device.c

@@ -229,7 +229,7 @@ void cdcd_init(void)
   {
   {
     cdcd_interface_t* p_cdc = &_cdcd_itf[i];
     cdcd_interface_t* p_cdc = &_cdcd_itf[i];
 
 
-    p_cdc->wanted_char = -1;
+    p_cdc->wanted_char = (char) -1;
 
 
     // default line coding is : stop bit = 1, parity = none, data bits = 8
     // default line coding is : stop bit = 1, parity = none, data bits = 8
     p_cdc->line_coding.bit_rate  = 115200;
     p_cdc->line_coding.bit_rate  = 115200;

+ 1 - 1
src/class/cdc/cdc_host.c

@@ -105,7 +105,7 @@ bool tuh_cdc_send(uint8_t dev_addr, void const * p_data, uint32_t length, bool i
   uint8_t const ep_out = cdch_data[dev_addr-1].ep_out;
   uint8_t const ep_out = cdch_data[dev_addr-1].ep_out;
   if ( usbh_edpt_busy(dev_addr, ep_out) ) return false;
   if ( usbh_edpt_busy(dev_addr, ep_out) ) return false;
 
 
-  return usbh_edpt_xfer(dev_addr, ep_out, (void *) p_data, length);
+  return usbh_edpt_xfer(dev_addr, ep_out, (void*)(uintptr_t) p_data, length);
 }
 }
 
 
 bool tuh_cdc_receive(uint8_t dev_addr, void * p_buffer, uint32_t length, bool is_notify)
 bool tuh_cdc_receive(uint8_t dev_addr, void * p_buffer, uint32_t length, bool is_notify)

+ 1 - 1
src/class/dfu/dfu_device.c

@@ -190,7 +190,7 @@ uint16_t dfu_moded_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc,
   _dfu_ctx.attrs = func_desc->bAttributes;
   _dfu_ctx.attrs = func_desc->bAttributes;
 
 
   // CFG_TUD_DFU_XFER_BUFSIZE has to be set to the buffer size used in TUD_DFU_DESCRIPTOR
   // CFG_TUD_DFU_XFER_BUFSIZE has to be set to the buffer size used in TUD_DFU_DESCRIPTOR
-  uint16_t const transfer_size = tu_le16toh( tu_unaligned_read16((uint8_t*) func_desc + offsetof(tusb_desc_dfu_functional_t, wTransferSize)) );
+  uint16_t const transfer_size = tu_le16toh( tu_unaligned_read16((uint8_t const*) func_desc + offsetof(tusb_desc_dfu_functional_t, wTransferSize)) );
   TU_ASSERT(transfer_size <= CFG_TUD_DFU_XFER_BUFSIZE, drv_len);
   TU_ASSERT(transfer_size <= CFG_TUD_DFU_XFER_BUFSIZE, drv_len);
 
 
   return drv_len;
   return drv_len;

+ 6 - 6
src/class/hid/hid_device.c

@@ -206,8 +206,8 @@ uint16_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, uint1
 
 
   //------------- HID descriptor -------------//
   //------------- HID descriptor -------------//
   p_desc = tu_desc_next(p_desc);
   p_desc = tu_desc_next(p_desc);
+  TU_ASSERT(HID_DESC_TYPE_HID == tu_desc_type(p_desc), 0);
   p_hid->hid_descriptor = (tusb_hid_descriptor_hid_t const *) p_desc;
   p_hid->hid_descriptor = (tusb_hid_descriptor_hid_t const *) p_desc;
-  TU_ASSERT(HID_DESC_TYPE_HID == p_hid->hid_descriptor->bDescriptorType, 0);
 
 
   //------------- Endpoint Descriptor -------------//
   //------------- Endpoint Descriptor -------------//
   p_desc = tu_desc_next(p_desc);
   p_desc = tu_desc_next(p_desc);
@@ -216,10 +216,10 @@ uint16_t hidd_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, uint1
   if ( desc_itf->bInterfaceSubClass == HID_SUBCLASS_BOOT ) p_hid->itf_protocol = desc_itf->bInterfaceProtocol;
   if ( desc_itf->bInterfaceSubClass == HID_SUBCLASS_BOOT ) p_hid->itf_protocol = desc_itf->bInterfaceProtocol;
 
 
   p_hid->protocol_mode = HID_PROTOCOL_REPORT; // Per Specs: default is report mode
   p_hid->protocol_mode = HID_PROTOCOL_REPORT; // Per Specs: default is report mode
-  p_hid->itf_num   = desc_itf->bInterfaceNumber;
+  p_hid->itf_num       = desc_itf->bInterfaceNumber;
 
 
   // Use offsetof to avoid pointer to the odd/misaligned address
   // Use offsetof to avoid pointer to the odd/misaligned address
-  memcpy(&p_hid->report_desc_len, (uint8_t*) p_hid->hid_descriptor + offsetof(tusb_hid_descriptor_hid_t, wReportLength), 2);
+  p_hid->report_desc_len = tu_unaligned_read16((uint8_t const*) p_hid->hid_descriptor + offsetof(tusb_hid_descriptor_hid_t, wReportLength));
 
 
   // Prepare for output endpoint
   // Prepare for output endpoint
   if (p_hid->ep_out)
   if (p_hid->ep_out)
@@ -256,13 +256,13 @@ bool hidd_control_xfer_cb (uint8_t rhport, uint8_t stage, tusb_control_request_t
 
 
       if (request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_HID)
       if (request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_HID)
       {
       {
-        TU_VERIFY(p_hid->hid_descriptor != NULL);
-        TU_VERIFY(tud_control_xfer(rhport, request, (void*) p_hid->hid_descriptor, p_hid->hid_descriptor->bLength));
+        TU_VERIFY(p_hid->hid_descriptor);
+        TU_VERIFY(tud_control_xfer(rhport, request, (void*)(uintptr_t) p_hid->hid_descriptor, p_hid->hid_descriptor->bLength));
       }
       }
       else if (request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_REPORT)
       else if (request->bRequest == TUSB_REQ_GET_DESCRIPTOR && desc_type == HID_DESC_TYPE_REPORT)
       {
       {
         uint8_t const * desc_report = tud_hid_descriptor_report_cb(hid_itf);
         uint8_t const * desc_report = tud_hid_descriptor_report_cb(hid_itf);
-        tud_control_xfer(rhport, request, (void*) desc_report, p_hid->report_desc_len);
+        tud_control_xfer(rhport, request, (void*)(uintptr_t) desc_report, p_hid->report_desc_len);
       }
       }
       else
       else
       {
       {

+ 1 - 0
src/class/midi/midi_device.c

@@ -433,6 +433,7 @@ uint16_t midid_open(uint8_t rhport, tusb_desc_interface_t const * desc_itf, uint
       break;
       break;
     }
     }
   }
   }
+  TU_ASSERT(p_midi);
 
 
   p_midi->itf_num = desc_midi->bInterfaceNumber;
   p_midi->itf_num = desc_midi->bInterfaceNumber;
   (void) p_midi->itf_num;
   (void) p_midi->itf_num;

+ 1 - 1
src/class/msc/msc_device.c

@@ -152,7 +152,7 @@ static inline uint16_t rdwr10_get_blocksize(msc_cbw_t const* cbw)
   // invalid block count
   // invalid block count
   if (block_count == 0) return 0;
   if (block_count == 0) return 0;
 
 
-  return cbw->total_bytes / block_count;
+  return (uint16_t) (cbw->total_bytes / block_count);
 }
 }
 
 
 uint8_t rdwr10_validate_cmd(msc_cbw_t const* cbw)
 uint8_t rdwr10_validate_cmd(msc_cbw_t const* cbw)

+ 1 - 1
src/class/msc/msc_host.c

@@ -263,7 +263,7 @@ bool tuh_msc_write10(uint8_t dev_addr, uint8_t lun, void const * buffer, uint32_
 
 
   memcpy(cbw.command, &cmd_write10, cbw.cmd_len);
   memcpy(cbw.command, &cmd_write10, cbw.cmd_len);
 
 
-  return tuh_msc_scsi_command(dev_addr, &cbw, (void*) buffer, complete_cb);
+  return tuh_msc_scsi_command(dev_addr, &cbw, (void*)(uintptr_t) buffer, complete_cb);
 }
 }
 
 
 #if 0
 #if 0

+ 18 - 22
src/class/usbtmc/usbtmc_device.c

@@ -1,10 +1,3 @@
-/*
- * usbtmc.c
- *
- *  Created on: Sep 9, 2019
- *      Author: nconrad
- */
-
 /*
 /*
  * The MIT License (MIT)
  * The MIT License (MIT)
  *
  *
@@ -205,7 +198,7 @@ bool tud_usbtmc_transmit_dev_msg_data(
   {
   {
     TU_ASSERT(usbtmc_state.capabilities->bmDevCapabilities.canEndBulkInOnTermChar);
     TU_ASSERT(usbtmc_state.capabilities->bmDevCapabilities.canEndBulkInOnTermChar);
     TU_ASSERT(termCharRequested);
     TU_ASSERT(termCharRequested);
-    TU_ASSERT(((uint8_t*)data)[len-1u] == termChar);
+    TU_ASSERT(((uint8_t const*)data)[len-1u] == termChar);
   }
   }
 #endif
 #endif
 
 
@@ -228,7 +221,7 @@ bool tud_usbtmc_transmit_dev_msg_data(
   memcpy((uint8_t*)(usbtmc_state.ep_bulk_in_buf) + headerLen, data, dataLen);
   memcpy((uint8_t*)(usbtmc_state.ep_bulk_in_buf) + headerLen, data, dataLen);
   usbtmc_state.transfer_size_remaining = len - dataLen;
   usbtmc_state.transfer_size_remaining = len - dataLen;
   usbtmc_state.transfer_size_sent = dataLen;
   usbtmc_state.transfer_size_sent = dataLen;
-  usbtmc_state.devInBuffer = (uint8_t*)data + (dataLen);
+  usbtmc_state.devInBuffer = (uint8_t const*) data + (dataLen);
 
 
   bool stateChanged =
   bool stateChanged =
       atomicChangeState(STATE_TX_REQUESTED, (packetLen >= txBufLen) ? STATE_TX_INITIATED : STATE_TX_SHORTED);
       atomicChangeState(STATE_TX_REQUESTED, (packetLen >= txBufLen) ? STATE_TX_INITIATED : STATE_TX_SHORTED);
@@ -508,13 +501,13 @@ bool usbtmcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint
     case STATE_ABORTING_BULK_OUT:
     case STATE_ABORTING_BULK_OUT:
       TU_VERIFY(false);
       TU_VERIFY(false);
       return false; // Should be stalled by now, shouldn't have received a packet.
       return false; // Should be stalled by now, shouldn't have received a packet.
+
     case STATE_TX_REQUESTED:
     case STATE_TX_REQUESTED:
     case STATE_TX_INITIATED:
     case STATE_TX_INITIATED:
     case STATE_ABORTING_BULK_IN:
     case STATE_ABORTING_BULK_IN:
     case STATE_ABORTING_BULK_IN_SHORTED:
     case STATE_ABORTING_BULK_IN_SHORTED:
     case STATE_ABORTING_BULK_IN_ABORTED:
     case STATE_ABORTING_BULK_IN_ABORTED:
     default:
     default:
-
       TU_VERIFY(false);
       TU_VERIFY(false);
     }
     }
   }
   }
@@ -528,16 +521,16 @@ bool usbtmcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint
 
 
     case STATE_TX_INITIATED:
     case STATE_TX_INITIATED:
       if(usbtmc_state.transfer_size_remaining >=sizeof(usbtmc_state.ep_bulk_in_buf))
       if(usbtmc_state.transfer_size_remaining >=sizeof(usbtmc_state.ep_bulk_in_buf))
-    {
-        // FIXME! This removes const below!
-        TU_VERIFY( usbd_edpt_xfer(rhport, usbtmc_state.ep_bulk_in,
-            (void*)usbtmc_state.devInBuffer,sizeof(usbtmc_state.ep_bulk_in_buf)));
-        usbtmc_state.devInBuffer += sizeof(usbtmc_state.ep_bulk_in_buf);
-        usbtmc_state.transfer_size_remaining -= sizeof(usbtmc_state.ep_bulk_in_buf);
-        usbtmc_state.transfer_size_sent += sizeof(usbtmc_state.ep_bulk_in_buf);
-    }
-    else // last packet
-    {
+      {
+          // FIXME! This removes const below!
+          TU_VERIFY( usbd_edpt_xfer(rhport, usbtmc_state.ep_bulk_in,
+              (void*)(uintptr_t) usbtmc_state.devInBuffer, sizeof(usbtmc_state.ep_bulk_in_buf)));
+          usbtmc_state.devInBuffer += sizeof(usbtmc_state.ep_bulk_in_buf);
+          usbtmc_state.transfer_size_remaining -= sizeof(usbtmc_state.ep_bulk_in_buf);
+          usbtmc_state.transfer_size_sent += sizeof(usbtmc_state.ep_bulk_in_buf);
+      }
+      else // last packet
+      {
       size_t packetLen = usbtmc_state.transfer_size_remaining;
       size_t packetLen = usbtmc_state.transfer_size_remaining;
       memcpy(usbtmc_state.ep_bulk_in_buf, usbtmc_state.devInBuffer, usbtmc_state.transfer_size_remaining);
       memcpy(usbtmc_state.ep_bulk_in_buf, usbtmc_state.devInBuffer, usbtmc_state.transfer_size_remaining);
         usbtmc_state.transfer_size_sent += sizeof(usbtmc_state.transfer_size_remaining);
         usbtmc_state.transfer_size_sent += sizeof(usbtmc_state.transfer_size_remaining);
@@ -550,15 +543,18 @@ bool usbtmcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint
         }
         }
       }
       }
       return true;
       return true;
+
     case STATE_ABORTING_BULK_IN:
     case STATE_ABORTING_BULK_IN:
       // need to send short packet  (ZLP?)
       // need to send short packet  (ZLP?)
       TU_VERIFY( usbd_edpt_xfer(rhport, usbtmc_state.ep_bulk_in, usbtmc_state.ep_bulk_in_buf,(uint16_t)0u));
       TU_VERIFY( usbd_edpt_xfer(rhport, usbtmc_state.ep_bulk_in, usbtmc_state.ep_bulk_in_buf,(uint16_t)0u));
       usbtmc_state.state = STATE_ABORTING_BULK_IN_SHORTED;
       usbtmc_state.state = STATE_ABORTING_BULK_IN_SHORTED;
       return true;
       return true;
+
     case STATE_ABORTING_BULK_IN_SHORTED:
     case STATE_ABORTING_BULK_IN_SHORTED:
       /* Done. :)*/
       /* Done. :)*/
       usbtmc_state.state = STATE_ABORTING_BULK_IN_ABORTED;
       usbtmc_state.state = STATE_ABORTING_BULK_IN_ABORTED;
-    return true;
+      return true;
+
     default:
     default:
       TU_ASSERT(false);
       TU_ASSERT(false);
       return false;
       return false;
@@ -787,7 +783,7 @@ bool usbtmcd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request
     {
     {
       TU_VERIFY(request->bmRequestType == 0xA1); // in,class,interface
       TU_VERIFY(request->bmRequestType == 0xA1); // in,class,interface
       TU_VERIFY(request->wLength == sizeof(*(usbtmc_state.capabilities)));
       TU_VERIFY(request->wLength == sizeof(*(usbtmc_state.capabilities)));
-      TU_VERIFY(tud_control_xfer(rhport, request, (void*)usbtmc_state.capabilities, sizeof(*usbtmc_state.capabilities)));
+      TU_VERIFY(tud_control_xfer(rhport, request, (void*)(uintptr_t) usbtmc_state.capabilities, sizeof(*usbtmc_state.capabilities)));
       return true;
       return true;
     }
     }
   // USBTMC Optional Requests
   // USBTMC Optional Requests

+ 0 - 6
src/class/usbtmc/usbtmc_device.h

@@ -1,9 +1,3 @@
-/*
- * usbtmc_device.h
- *
- *  Created on: Sep 10, 2019
- *      Author: nconrad
- */
 /*
 /*
  * The MIT License (MIT)
  * The MIT License (MIT)
  *
  *

+ 11 - 8
src/class/video/video_device.c

@@ -638,8 +638,9 @@ static int handle_video_ctl_std_req(uint8_t rhport, uint8_t stage,
         tusb_desc_vc_itf_t const *vc = _get_desc_vc(&_videod_itf[ctl_idx]);
         tusb_desc_vc_itf_t const *vc = _get_desc_vc(&_videod_itf[ctl_idx]);
         TU_VERIFY(vc, VIDEO_ERROR_UNKNOWN);
         TU_VERIFY(vc, VIDEO_ERROR_UNKNOWN);
 
 
-        TU_VERIFY(tud_control_xfer(rhport, request, (void*)&vc->std.bAlternateSetting, sizeof(vc->std.bAlternateSetting)),
-                  VIDEO_ERROR_UNKNOWN);
+        uint8_t alt_num = vc->std.bAlternateSetting;
+
+        TU_VERIFY(tud_control_xfer(rhport, request, &alt_num, sizeof(alt_num)), VIDEO_ERROR_UNKNOWN);
       }
       }
       return VIDEO_ERROR_NONE;
       return VIDEO_ERROR_NONE;
 
 
@@ -690,7 +691,7 @@ static int handle_video_ctl_cs_req(uint8_t rhport, uint8_t stage,
           if (stage == CONTROL_STAGE_SETUP)
           if (stage == CONTROL_STAGE_SETUP)
           {
           {
             TU_VERIFY(1 == request->wLength, VIDEO_ERROR_UNKNOWN);
             TU_VERIFY(1 == request->wLength, VIDEO_ERROR_UNKNOWN);
-            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)&_cap_get_set, sizeof(_cap_get_set)), VIDEO_ERROR_UNKNOWN);
+            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)(uintptr_t) &_cap_get_set, sizeof(_cap_get_set)), VIDEO_ERROR_UNKNOWN);
           }
           }
           return VIDEO_ERROR_NONE;
           return VIDEO_ERROR_NONE;
 
 
@@ -710,7 +711,7 @@ static int handle_video_ctl_cs_req(uint8_t rhport, uint8_t stage,
         case VIDEO_REQUEST_GET_INFO:
         case VIDEO_REQUEST_GET_INFO:
           if (stage == CONTROL_STAGE_SETUP)
           if (stage == CONTROL_STAGE_SETUP)
           {
           {
-            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)&_cap_get, sizeof(_cap_get)), VIDEO_ERROR_UNKNOWN);
+            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)(uintptr_t) &_cap_get, sizeof(_cap_get)), VIDEO_ERROR_UNKNOWN);
           }
           }
           return VIDEO_ERROR_NONE;
           return VIDEO_ERROR_NONE;
 
 
@@ -761,7 +762,9 @@ static int handle_video_stm_std_req(uint8_t rhport, uint8_t stage,
         TU_VERIFY(1 == request->wLength, VIDEO_ERROR_UNKNOWN);
         TU_VERIFY(1 == request->wLength, VIDEO_ERROR_UNKNOWN);
         tusb_desc_vs_itf_t const *vs = _get_desc_vs(self);
         tusb_desc_vs_itf_t const *vs = _get_desc_vs(self);
         TU_VERIFY(vs, VIDEO_ERROR_UNKNOWN);
         TU_VERIFY(vs, VIDEO_ERROR_UNKNOWN);
-        TU_VERIFY(tud_control_xfer(rhport, request, (void*)&vs->std.bAlternateSetting, sizeof(vs->std.bAlternateSetting)), VIDEO_ERROR_UNKNOWN);
+        uint8_t alt_num = vs->std.bAlternateSetting;
+
+        TU_VERIFY(tud_control_xfer(rhport, request, &alt_num, sizeof(alt_num)), VIDEO_ERROR_UNKNOWN);
       }
       }
       return VIDEO_ERROR_NONE;
       return VIDEO_ERROR_NONE;
 
 
@@ -801,7 +804,7 @@ static int handle_video_stm_cs_req(uint8_t rhport, uint8_t stage,
         case VIDEO_REQUEST_GET_INFO:
         case VIDEO_REQUEST_GET_INFO:
           if (stage == CONTROL_STAGE_SETUP)
           if (stage == CONTROL_STAGE_SETUP)
           {
           {
-            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)&_cap_get, sizeof(_cap_get)), VIDEO_ERROR_UNKNOWN);
+            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)(uintptr_t) &_cap_get, sizeof(_cap_get)), VIDEO_ERROR_UNKNOWN);
           }
           }
           return VIDEO_ERROR_NONE;
           return VIDEO_ERROR_NONE;
 
 
@@ -857,7 +860,7 @@ static int handle_video_stm_cs_req(uint8_t rhport, uint8_t stage,
           if (stage == CONTROL_STAGE_SETUP)
           if (stage == CONTROL_STAGE_SETUP)
           {
           {
             TU_VERIFY(1 == request->wLength, VIDEO_ERROR_UNKNOWN);
             TU_VERIFY(1 == request->wLength, VIDEO_ERROR_UNKNOWN);
-            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)&_cap_get_set, sizeof(_cap_get_set)), VIDEO_ERROR_UNKNOWN);
+            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)(uintptr_t) &_cap_get_set, sizeof(_cap_get_set)), VIDEO_ERROR_UNKNOWN);
           }
           }
           return VIDEO_ERROR_NONE;
           return VIDEO_ERROR_NONE;
 
 
@@ -900,7 +903,7 @@ static int handle_video_stm_cs_req(uint8_t rhport, uint8_t stage,
           if (stage == CONTROL_STAGE_SETUP)
           if (stage == CONTROL_STAGE_SETUP)
           {
           {
             TU_VERIFY(1 == request->wLength, VIDEO_ERROR_UNKNOWN);
             TU_VERIFY(1 == request->wLength, VIDEO_ERROR_UNKNOWN);
-            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)&_cap_get_set, sizeof(_cap_get_set)), VIDEO_ERROR_UNKNOWN);
+            TU_VERIFY(tud_control_xfer(rhport, request, (uint8_t*)(uintptr_t) &_cap_get_set, sizeof(_cap_get_set)), VIDEO_ERROR_UNKNOWN);
           }
           }
           return VIDEO_ERROR_NONE;
           return VIDEO_ERROR_NONE;
 
 

+ 2 - 3
src/common/tusb_common.h

@@ -161,7 +161,6 @@ static inline uint8_t tu_log2(uint32_t value)
 #if TUP_ARCH_STRICT_ALIGN
 #if TUP_ARCH_STRICT_ALIGN
 
 
 // Rely on compiler to generate correct code for unaligned access
 // Rely on compiler to generate correct code for unaligned access
-
 typedef struct { uint16_t val; } TU_ATTR_PACKED tu_unaligned_uint16_t;
 typedef struct { uint16_t val; } TU_ATTR_PACKED tu_unaligned_uint16_t;
 typedef struct { uint32_t val; } TU_ATTR_PACKED tu_unaligned_uint32_t;
 typedef struct { uint32_t val; } TU_ATTR_PACKED tu_unaligned_uint32_t;
 
 
@@ -227,8 +226,8 @@ TU_ATTR_ALWAYS_INLINE static inline void tu_unaligned_write16(void* mem, uint16_
 #else
 #else
 
 
 // MCU that could access unaligned memory natively
 // MCU that could access unaligned memory natively
-TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_unaligned_read32  (const void* mem           ) { return *((uint32_t*) mem);  }
-TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_unaligned_read16  (const void* mem           ) { return *((uint16_t*) mem);  }
+TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_unaligned_read32  (const void* mem) { return *((uint32_t const *) mem); }
+TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_unaligned_read16  (const void* mem) { return *((uint16_t const *) mem); }
 
 
 TU_ATTR_ALWAYS_INLINE static inline void     tu_unaligned_write32 (void* mem, uint32_t value ) { *((uint32_t*) mem) = value; }
 TU_ATTR_ALWAYS_INLINE static inline void     tu_unaligned_write32 (void* mem, uint32_t value ) { *((uint32_t*) mem) = value; }
 TU_ATTR_ALWAYS_INLINE static inline void     tu_unaligned_write16 (void* mem, uint16_t value ) { *((uint16_t*) mem) = value; }
 TU_ATTR_ALWAYS_INLINE static inline void     tu_unaligned_write16 (void* mem, uint16_t value ) { *((uint16_t*) mem) = value; }

+ 2 - 2
src/common/tusb_fifo.c

@@ -102,7 +102,7 @@ static inline uint16_t _ff_mod(uint16_t idx, uint16_t depth)
 // TODO generalize with configurable 1 byte or 4 byte each read
 // TODO generalize with configurable 1 byte or 4 byte each read
 static void _ff_push_const_addr(uint8_t * ff_buf, const void * app_buf, uint16_t len)
 static void _ff_push_const_addr(uint8_t * ff_buf, const void * app_buf, uint16_t len)
 {
 {
-  volatile uint32_t * rx_fifo = (volatile uint32_t *) app_buf;
+  volatile const uint32_t * rx_fifo = (volatile const uint32_t *) app_buf;
 
 
   // Reading full available 32 bit words from const app address
   // Reading full available 32 bit words from const app address
   uint16_t full_words = len >> 2;
   uint16_t full_words = len >> 2;
@@ -201,7 +201,7 @@ static void _ff_push_n(tu_fifo_t* f, void const * app_buf, uint16_t n, uint16_t
         ff_buf += nLin_4n_bytes;
         ff_buf += nLin_4n_bytes;
 
 
         // There could be odd 1-3 bytes before the wrap-around boundary
         // There could be odd 1-3 bytes before the wrap-around boundary
-        volatile uint32_t * rx_fifo = (volatile uint32_t *) app_buf;
+        volatile const uint32_t * rx_fifo = (volatile const uint32_t *) app_buf;
         uint8_t rem = nLin_bytes & 0x03;
         uint8_t rem = nLin_bytes & 0x03;
         if (rem > 0)
         if (rem > 0)
         {
         {

+ 21 - 18
src/device/usbd.c

@@ -990,21 +990,23 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const
     {
     {
       TU_LOG2(" Device\r\n");
       TU_LOG2(" Device\r\n");
 
 
-      uint16_t len = sizeof(tusb_desc_device_t);
+      void* desc_device = (void*) (uintptr_t) tud_descriptor_device_cb();
 
 
-      // Only send up to EP0 Packet Size if not addressed and host requested more data
-      // that device descriptor has.
+      // Only response with exactly 1 Packet if: not addressed and host requested more data than device descriptor has.
       // This only happens with the very first get device descriptor and EP0 size = 8 or 16.
       // This only happens with the very first get device descriptor and EP0 size = 8 or 16.
       if ((CFG_TUD_ENDPOINT0_SIZE < sizeof(tusb_desc_device_t)) && !_usbd_dev.addressed &&
       if ((CFG_TUD_ENDPOINT0_SIZE < sizeof(tusb_desc_device_t)) && !_usbd_dev.addressed &&
-          ((tusb_control_request_t*) p_request)->wLength > sizeof(tusb_desc_device_t))
+          ((tusb_control_request_t const*) p_request)->wLength > sizeof(tusb_desc_device_t))
       {
       {
-        len = CFG_TUD_ENDPOINT0_SIZE;
-
         // Hack here: we modify the request length to prevent usbd_control response with zlp
         // Hack here: we modify the request length to prevent usbd_control response with zlp
-        ((tusb_control_request_t*) p_request)->wLength = CFG_TUD_ENDPOINT0_SIZE;
-      }
+        // since we are responding with 1 packet & less data than wLength.
+        tusb_control_request_t mod_request = *p_request;
+        mod_request.wLength = CFG_TUD_ENDPOINT0_SIZE;
 
 
-      return tud_control_xfer(rhport, p_request, (void*) tud_descriptor_device_cb(), len);
+        return tud_control_xfer(rhport, &mod_request, desc_device, CFG_TUD_ENDPOINT0_SIZE);
+      }else
+      {
+        return tud_control_xfer(rhport, p_request, desc_device, sizeof(tusb_desc_device_t));
+      }
     }
     }
     break;
     break;
 
 
@@ -1015,10 +1017,11 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const
       // requested by host if USB > 2.0 ( i.e 2.1 or 3.x )
       // requested by host if USB > 2.0 ( i.e 2.1 or 3.x )
       if (!tud_descriptor_bos_cb) return false;
       if (!tud_descriptor_bos_cb) return false;
 
 
-      tusb_desc_bos_t const* desc_bos = (tusb_desc_bos_t const*) tud_descriptor_bos_cb();
+      uintptr_t desc_bos = (uintptr_t) tud_descriptor_bos_cb();
+      TU_ASSERT(desc_bos);
 
 
       // Use offsetof to avoid pointer to the odd/misaligned address
       // Use offsetof to avoid pointer to the odd/misaligned address
-      uint16_t const total_len = tu_le16toh( tu_unaligned_read16((uint8_t*) desc_bos + offsetof(tusb_desc_bos_t, wTotalLength)) );
+      uint16_t const total_len = tu_le16toh( tu_unaligned_read16((const void*) (desc_bos + offsetof(tusb_desc_bos_t, wTotalLength))) );
 
 
       return tud_control_xfer(rhport, p_request, (void*) desc_bos, total_len);
       return tud_control_xfer(rhport, p_request, (void*) desc_bos, total_len);
     }
     }
@@ -1027,24 +1030,24 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const
     case TUSB_DESC_CONFIGURATION:
     case TUSB_DESC_CONFIGURATION:
     case TUSB_DESC_OTHER_SPEED_CONFIG:
     case TUSB_DESC_OTHER_SPEED_CONFIG:
     {
     {
-      tusb_desc_configuration_t const* desc_config;
+      uintptr_t desc_config;
 
 
       if ( desc_type == TUSB_DESC_CONFIGURATION )
       if ( desc_type == TUSB_DESC_CONFIGURATION )
       {
       {
         TU_LOG2(" Configuration[%u]\r\n", desc_index);
         TU_LOG2(" Configuration[%u]\r\n", desc_index);
-        desc_config = (tusb_desc_configuration_t const*) tud_descriptor_configuration_cb(desc_index);
+        desc_config = (uintptr_t) tud_descriptor_configuration_cb(desc_index);
       }else
       }else
       {
       {
         // Host only request this after getting Device Qualifier descriptor
         // Host only request this after getting Device Qualifier descriptor
         TU_LOG2(" Other Speed Configuration\r\n");
         TU_LOG2(" Other Speed Configuration\r\n");
         TU_VERIFY( tud_descriptor_other_speed_configuration_cb );
         TU_VERIFY( tud_descriptor_other_speed_configuration_cb );
-        desc_config = (tusb_desc_configuration_t const*) tud_descriptor_other_speed_configuration_cb(desc_index);
+        desc_config = (uintptr_t) tud_descriptor_other_speed_configuration_cb(desc_index);
       }
       }
 
 
       TU_ASSERT(desc_config);
       TU_ASSERT(desc_config);
 
 
       // Use offsetof to avoid pointer to the odd/misaligned address
       // Use offsetof to avoid pointer to the odd/misaligned address
-      uint16_t const total_len = tu_le16toh( tu_unaligned_read16((uint8_t*) desc_config + offsetof(tusb_desc_configuration_t, wTotalLength)) );
+      uint16_t const total_len = tu_le16toh( tu_unaligned_read16((const void*) (desc_config + offsetof(tusb_desc_configuration_t, wTotalLength))) );
 
 
       return tud_control_xfer(rhport, p_request, (void*) desc_config, total_len);
       return tud_control_xfer(rhport, p_request, (void*) desc_config, total_len);
     }
     }
@@ -1055,11 +1058,11 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const
       TU_LOG2(" String[%u]\r\n", desc_index);
       TU_LOG2(" String[%u]\r\n", desc_index);
 
 
       // String Descriptor always uses the desc set from user
       // String Descriptor always uses the desc set from user
-      uint8_t const* desc_str = (uint8_t const*) tud_descriptor_string_cb(desc_index, p_request->wIndex);
+      uint8_t const* desc_str = (uint8_t const*) tud_descriptor_string_cb(desc_index, tu_le16toh(p_request->wIndex));
       TU_VERIFY(desc_str);
       TU_VERIFY(desc_str);
 
 
       // first byte of descriptor is its size
       // first byte of descriptor is its size
-      return tud_control_xfer(rhport, p_request, (void*) desc_str, desc_str[0]);
+      return tud_control_xfer(rhport, p_request, (void*) (uintptr_t) desc_str, tu_desc_len(desc_str));
     }
     }
     break;
     break;
 
 
@@ -1073,7 +1076,7 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const
       TU_VERIFY(desc_qualifier);
       TU_VERIFY(desc_qualifier);
 
 
       // first byte of descriptor is its size
       // first byte of descriptor is its size
-      return tud_control_xfer(rhport, p_request, (void*) desc_qualifier, desc_qualifier[0]);
+      return tud_control_xfer(rhport, p_request, (void*) (uintptr_t) desc_qualifier, tu_desc_len(desc_qualifier));
     }
     }
     break;
     break;
 
 

+ 29 - 22
src/host/usbh.c

@@ -53,13 +53,39 @@
 // USBH-HCD common data structure
 // USBH-HCD common data structure
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 
 
+// device0 struct must be strictly a subset of normal device struct
+typedef struct
+{
+  // port
+  uint8_t rhport;
+  uint8_t hub_addr;
+  uint8_t hub_port;
+  uint8_t speed;
+
+  volatile struct TU_ATTR_PACKED
+  {
+    uint8_t connected    : 1;
+    uint8_t addressed    : 1;
+    uint8_t configured   : 1;
+    uint8_t suspended    : 1;
+  };
+} usbh_dev0_t;
+
 typedef struct {
 typedef struct {
-  //------------- port -------------//
+  // port
   uint8_t rhport;
   uint8_t rhport;
   uint8_t hub_addr;
   uint8_t hub_addr;
   uint8_t hub_port;
   uint8_t hub_port;
   uint8_t speed;
   uint8_t speed;
 
 
+  volatile struct TU_ATTR_PACKED
+  {
+    uint8_t connected    : 1;
+    uint8_t addressed    : 1;
+    uint8_t configured   : 1;
+    uint8_t suspended    : 1;
+  };
+
   //------------- device descriptor -------------//
   //------------- device descriptor -------------//
   uint16_t vid;
   uint16_t vid;
   uint16_t pid;
   uint16_t pid;
@@ -73,14 +99,6 @@ typedef struct {
   // uint8_t interface_count; // bNumInterfaces alias
   // uint8_t interface_count; // bNumInterfaces alias
 
 
   //------------- device -------------//
   //------------- device -------------//
-  struct TU_ATTR_PACKED
-  {
-    uint8_t connected    : 1;
-    uint8_t addressed    : 1;
-    uint8_t configured   : 1;
-    uint8_t suspended    : 1;
-  };
-
   volatile uint8_t state;            // device state, value from enum tusbh_device_state_t
   volatile uint8_t state;            // device state, value from enum tusbh_device_state_t
 
 
   uint8_t itf2drv[16];               // map interface number to driver (0xff is invalid)
   uint8_t itf2drv[16];               // map interface number to driver (0xff is invalid)
@@ -103,16 +121,6 @@ typedef struct {
 
 
 } usbh_device_t;
 } usbh_device_t;
 
 
-typedef struct
-{
-  uint8_t rhport;
-  uint8_t hub_addr;
-  uint8_t hub_port;
-  uint8_t speed;
-
-  volatile uint8_t connected;
-} usbh_dev0_t;
-
 
 
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // MACRO CONSTANT TYPEDEF
 // MACRO CONSTANT TYPEDEF
@@ -894,11 +902,10 @@ static bool enum_get_9byte_config_desc_complete(uint8_t dev_addr, tusb_control_r
   TU_ASSERT(XFER_RESULT_SUCCESS == result);
   TU_ASSERT(XFER_RESULT_SUCCESS == result);
 
 
   // TODO not enough buffer to hold configuration descriptor
   // TODO not enough buffer to hold configuration descriptor
-  tusb_desc_configuration_t const * desc_config = (tusb_desc_configuration_t const*) _usbh_ctrl_buf;
-  uint16_t total_len;
+  uint8_t const * desc_config = _usbh_ctrl_buf;
 
 
   // Use offsetof to avoid pointer to the odd/misaligned address
   // Use offsetof to avoid pointer to the odd/misaligned address
-  memcpy(&total_len, (uint8_t*) desc_config + offsetof(tusb_desc_configuration_t, wTotalLength), 2);
+  uint16_t const total_len = tu_le16toh( tu_unaligned_read16(desc_config + offsetof(tusb_desc_configuration_t, wTotalLength)) );
 
 
   TU_ASSERT(total_len <= CFG_TUH_ENUMERATION_BUFSIZE);
   TU_ASSERT(total_len <= CFG_TUH_ENUMERATION_BUFSIZE);
 
 

+ 1 - 1
src/portable/dialog/da146xx/dcd_da146xx.c

@@ -140,7 +140,7 @@ typedef struct
     __IOM uint32_t USB_RXC2_REG;                 /*!< (@ 0x000000DC) Receive Command Register 2    */
     __IOM uint32_t USB_RXC2_REG;                 /*!< (@ 0x000000DC) Receive Command Register 2    */
     __IOM uint32_t USB_RXC3_REG;                 /*!< (@ 0x000000FC) Receive Command Register 3    */
     __IOM uint32_t USB_RXC3_REG;                 /*!< (@ 0x000000FC) Receive Command Register 3    */
   };
   };
-} EPx_REGS;
+} volatile EPx_REGS;
 
 
 #define EP_REGS(first_ep_reg) (EPx_REGS*)(&USB->first_ep_reg)
 #define EP_REGS(first_ep_reg) (EPx_REGS*)(&USB->first_ep_reg)
 
 

+ 3 - 3
src/portable/ehci/ehci.c

@@ -128,7 +128,7 @@ static inline ehci_qtd_t* qtd_find_free (void);
 static inline ehci_qtd_t* qtd_next (ehci_qtd_t const * p_qtd);
 static inline ehci_qtd_t* qtd_next (ehci_qtd_t const * p_qtd);
 static inline void qtd_insert_to_qhd (ehci_qhd_t *p_qhd, ehci_qtd_t *p_qtd_new);
 static inline void qtd_insert_to_qhd (ehci_qhd_t *p_qhd, ehci_qtd_t *p_qtd_new);
 static inline void qtd_remove_1st_from_qhd (ehci_qhd_t *p_qhd);
 static inline void qtd_remove_1st_from_qhd (ehci_qhd_t *p_qhd);
-static void qtd_init (ehci_qtd_t* p_qtd, void* buffer, uint16_t total_bytes);
+static void qtd_init (ehci_qtd_t* p_qtd, void const* buffer, uint16_t total_bytes);
 
 
 static inline void list_insert (ehci_link_t *current, ehci_link_t *new, uint8_t new_type);
 static inline void list_insert (ehci_link_t *current, ehci_link_t *new, uint8_t new_type);
 static inline ehci_link_t* list_next (ehci_link_t *p_link_pointer);
 static inline ehci_link_t* list_next (ehci_link_t *p_link_pointer);
@@ -392,7 +392,7 @@ bool hcd_setup_send(uint8_t rhport, uint8_t dev_addr, uint8_t const setup_packet
   ehci_qhd_t* qhd = &ehci_data.control[dev_addr].qhd;
   ehci_qhd_t* qhd = &ehci_data.control[dev_addr].qhd;
   ehci_qtd_t* td  = &ehci_data.control[dev_addr].qtd;
   ehci_qtd_t* td  = &ehci_data.control[dev_addr].qtd;
 
 
-  qtd_init(td, (void*) setup_packet, 8);
+  qtd_init(td, setup_packet, 8);
   td->pid          = EHCI_PID_SETUP;
   td->pid          = EHCI_PID_SETUP;
   td->int_on_complete = 1;
   td->int_on_complete = 1;
   td->next.terminate  = 1;
   td->next.terminate  = 1;
@@ -857,7 +857,7 @@ static void qhd_init(ehci_qhd_t *p_qhd, uint8_t dev_addr, tusb_desc_endpoint_t c
   }
   }
 }
 }
 
 
-static void qtd_init(ehci_qtd_t* p_qtd, void* buffer, uint16_t total_bytes)
+static void qtd_init(ehci_qtd_t* p_qtd, void const* buffer, uint16_t total_bytes)
 {
 {
   tu_memclr(p_qtd, sizeof(ehci_qtd_t));
   tu_memclr(p_qtd, sizeof(ehci_qtd_t));
 
 

+ 2 - 2
src/portable/nordic/nrf5x/dcd_nrf5x.c

@@ -125,7 +125,7 @@ static void edpt_dma_start(volatile uint32_t* reg_startep)
     if (is_in_isr())
     if (is_in_isr())
     {
     {
       // Called within ISR, use usbd task to defer later
       // Called within ISR, use usbd task to defer later
-      usbd_defer_func( (osal_task_func_t) edpt_dma_start, (void*) reg_startep, true );
+      usbd_defer_func((osal_task_func_t) edpt_dma_start, (void*) (uintptr_t) reg_startep, true);
       return;
       return;
     }
     }
     else
     else
@@ -773,7 +773,7 @@ void dcd_int_handler(uint8_t rhport)
           if ( _dcd.dma_pending )
           if ( _dcd.dma_pending )
           {
           {
             // use usbd task to defer later
             // use usbd task to defer later
-            usbd_defer_func( (osal_task_func_t) start_ep0_task, (void*) &NRF_USBD->TASKS_EP0RCVOUT, true );
+            usbd_defer_func((osal_task_func_t) start_ep0_task, (void*) (uintptr_t) &NRF_USBD->TASKS_EP0RCVOUT, true);
           }else
           }else
           {
           {
             start_ep0_task(&NRF_USBD->TASKS_EP0RCVOUT);
             start_ep0_task(&NRF_USBD->TASKS_EP0RCVOUT);

+ 6 - 1
src/portable/nuvoton/nuc505/dcd_nuc505.c

@@ -144,7 +144,9 @@ static USBD_EP_T *ep_entry(uint8_t ep_addr, bool add)
   enum ep_enum ep_index;
   enum ep_enum ep_index;
   struct xfer_ctl_t *xfer;
   struct xfer_ctl_t *xfer;
 
 
-  for (ep_index = PERIPH_EPA, xfer = &xfer_table[PERIPH_EPA], ep = USBD->EP; ep_index < PERIPH_MAX_EP; ep_index++, xfer++, ep++)
+  for (ep_index = PERIPH_EPA, xfer = &xfer_table[PERIPH_EPA], ep = USBD->EP;
+       ep_index < PERIPH_MAX_EP;
+       ep_index++, xfer++, ep++)
   {
   {
     if (add)
     if (add)
     {
     {
@@ -396,6 +398,7 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t to
     /* mine the data for the information we need */
     /* mine the data for the information we need */
     tusb_dir_t dir = tu_edpt_dir(ep_addr);
     tusb_dir_t dir = tu_edpt_dir(ep_addr);
     USBD_EP_T *ep = ep_entry(ep_addr, false);
     USBD_EP_T *ep = ep_entry(ep_addr, false);
+    TU_ASSERT(ep);
     struct xfer_ctl_t *xfer = &xfer_table[ep - USBD->EP];
     struct xfer_ctl_t *xfer = &xfer_table[ep - USBD->EP];
 
 
     /* store away the information we'll needing now and later */
     /* store away the information we'll needing now and later */
@@ -457,6 +460,7 @@ void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr)
   if (tu_edpt_number(ep_addr))
   if (tu_edpt_number(ep_addr))
   {
   {
     USBD_EP_T *ep = ep_entry(ep_addr, false);
     USBD_EP_T *ep = ep_entry(ep_addr, false);
+    TU_ASSERT(ep, );
     ep->EPRSPCTL = (ep->EPRSPCTL & 0xf7) | USBD_EPRSPCTL_HALT_Msk;
     ep->EPRSPCTL = (ep->EPRSPCTL & 0xf7) | USBD_EPRSPCTL_HALT_Msk;
   }
   }
   else
   else
@@ -472,6 +476,7 @@ void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr)
   if (tu_edpt_number(ep_addr))
   if (tu_edpt_number(ep_addr))
   {
   {
     USBD_EP_T *ep = ep_entry(ep_addr, false);
     USBD_EP_T *ep = ep_entry(ep_addr, false);
+    TU_ASSERT(ep, );
     ep->EPRSPCTL = USBD_EPRSPCTL_TOGGLE_Msk;
     ep->EPRSPCTL = USBD_EPRSPCTL_TOGGLE_Msk;
   }
   }
 }
 }

+ 1 - 1
src/portable/nxp/transdimension/dcd_transdimension.c

@@ -636,7 +636,7 @@ void dcd_int_handler(uint8_t rhport)
       // 23.10.10.2 Operational model for setup transfers
       // 23.10.10.2 Operational model for setup transfers
       dcd_reg->ENDPTSETUPSTAT = dcd_reg->ENDPTSETUPSTAT;
       dcd_reg->ENDPTSETUPSTAT = dcd_reg->ENDPTSETUPSTAT;
 
 
-      dcd_event_setup_received(rhport, (uint8_t*) &_dcd_data.qhd[0][0].setup_request, true);
+      dcd_event_setup_received(rhport, (uint8_t*)(uintptr_t) &_dcd_data.qhd[0][0].setup_request, true);
     }
     }
 
 
     // 23.10.12.3 Failed QTD also get ENDPTCOMPLETE set
     // 23.10.12.3 Failed QTD also get ENDPTCOMPLETE set

+ 2 - 2
src/portable/renesas/usba/dcd_usba.c

@@ -259,7 +259,7 @@ static inline void pipe_wait_for_ready(unsigned num)
 
 
 static void pipe_write_packet(void *buf, volatile void *fifo, unsigned len)
 static void pipe_write_packet(void *buf, volatile void *fifo, unsigned len)
 {
 {
-  hw_fifo_t *reg = (hw_fifo_t*)fifo;
+  volatile hw_fifo_t *reg = (volatile hw_fifo_t*) fifo;
   uintptr_t addr = (uintptr_t)buf;
   uintptr_t addr = (uintptr_t)buf;
   while (len >= 2) {
   while (len >= 2) {
     reg->u16 = *(const uint16_t *)addr;
     reg->u16 = *(const uint16_t *)addr;
@@ -275,7 +275,7 @@ static void pipe_write_packet(void *buf, volatile void *fifo, unsigned len)
 static void pipe_read_packet(void *buf, volatile void *fifo, unsigned len)
 static void pipe_read_packet(void *buf, volatile void *fifo, unsigned len)
 {
 {
   uint8_t *p   = (uint8_t*)buf;
   uint8_t *p   = (uint8_t*)buf;
-  uint8_t *reg = (uint8_t*)fifo;  /* byte access is always at base register address */
+  volatile uint8_t *reg = (volatile uint8_t*)fifo;  /* byte access is always at base register address */
   while (len--) *p++ = *reg;
   while (len--) *p++ = *reg;
 }
 }
 
 

+ 1 - 1
src/portable/sony/cxd56/dcd_cxd56.c

@@ -134,7 +134,7 @@ static int _dcd_setup(FAR struct usbdevclass_driver_s *driver, FAR struct usbdev
   if (usbdcd_driver.setup_processed)
   if (usbdcd_driver.setup_processed)
   {
   {
     usbdcd_driver.setup_processed = false;
     usbdcd_driver.setup_processed = false;
-    dcd_event_setup_received(0, (uint8_t *) ctrl, true);
+    dcd_event_setup_received(0, (uint8_t const *) ctrl, true);
   }
   }
   else
   else
   {
   {

+ 2 - 2
src/portable/st/synopsys/dcd_synopsys.c

@@ -976,7 +976,7 @@ static void handle_rxflvl_ints(uint8_t rhport, USB_OTG_OUTEndpointTypeDef * out_
       if (xfer->ff)
       if (xfer->ff)
       {
       {
         // Ring buffer
         // Ring buffer
-        tu_fifo_write_n_const_addr_full_words(xfer->ff, (const void *) rx_fifo, bcnt);
+        tu_fifo_write_n_const_addr_full_words(xfer->ff, (const void *)(uintptr_t) rx_fifo, bcnt);
       }
       }
       else
       else
       {
       {
@@ -1096,7 +1096,7 @@ static void handle_epin_ints(uint8_t rhport, USB_OTG_DeviceTypeDef * dev, USB_OT
           if (xfer->ff)
           if (xfer->ff)
           {
           {
             usb_fifo_t tx_fifo = FIFO_BASE(rhport, n);
             usb_fifo_t tx_fifo = FIFO_BASE(rhport, n);
-            tu_fifo_read_n_const_addr_full_words(xfer->ff, (void *) tx_fifo, packet_size);
+            tu_fifo_read_n_const_addr_full_words(xfer->ff, (void *)(uintptr_t) tx_fifo, packet_size);
           }
           }
           else
           else
           {
           {

+ 6 - 6
src/portable/valentyusb/eptri/dcd_eptri.c

@@ -314,13 +314,13 @@ static void dcd_reset(void)
   usb_in_ctrl_write(1 << CSR_USB_IN_CTRL_RESET_OFFSET);
   usb_in_ctrl_write(1 << CSR_USB_IN_CTRL_RESET_OFFSET);
   usb_out_ctrl_write(1 << CSR_USB_OUT_CTRL_RESET_OFFSET);
   usb_out_ctrl_write(1 << CSR_USB_OUT_CTRL_RESET_OFFSET);
 
 
-  memset((void *)rx_buffer, 0, sizeof(rx_buffer));
-  memset((void *)rx_buffer_max, 0, sizeof(rx_buffer_max));
-  memset((void *)rx_buffer_offset, 0, sizeof(rx_buffer_offset));
+  memset((void *)(uintptr_t) rx_buffer, 0, sizeof(rx_buffer));
+  memset((void *)(uintptr_t) rx_buffer_max, 0, sizeof(rx_buffer_max));
+  memset((void *)(uintptr_t) rx_buffer_offset, 0, sizeof(rx_buffer_offset));
 
 
-  memset((void *)tx_buffer, 0, sizeof(tx_buffer));
-  memset((void *)tx_buffer_max, 0, sizeof(tx_buffer_max));
-  memset((void *)tx_buffer_offset, 0, sizeof(tx_buffer_offset));
+  memset((void *)(uintptr_t) tx_buffer, 0, sizeof(tx_buffer));
+  memset((void *)(uintptr_t) tx_buffer_max, 0, sizeof(tx_buffer_max));
+  memset((void *)(uintptr_t) tx_buffer_offset, 0, sizeof(tx_buffer_offset));
   tx_ep = 0;
   tx_ep = 0;
   tx_active = false;
   tx_active = false;
 
 

+ 2 - 3
src/tusb.c

@@ -109,9 +109,9 @@ bool tu_edpt_validate(tusb_desc_endpoint_t const * desc_ep, tusb_speed_t speed)
 void tu_edpt_bind_driver(uint8_t ep2drv[][2], tusb_desc_interface_t const* desc_itf, uint16_t desc_len, uint8_t driver_id)
 void tu_edpt_bind_driver(uint8_t ep2drv[][2], tusb_desc_interface_t const* desc_itf, uint16_t desc_len, uint8_t driver_id)
 {
 {
   uint8_t const* p_desc = (uint8_t const*) desc_itf;
   uint8_t const* p_desc = (uint8_t const*) desc_itf;
-  uint16_t len = 0;
+  uint8_t const* desc_end = p_desc + desc_len;
 
 
-  while( len < desc_len )
+  while( p_desc < desc_end )
   {
   {
     if ( TUSB_DESC_ENDPOINT == tu_desc_type(p_desc) )
     if ( TUSB_DESC_ENDPOINT == tu_desc_type(p_desc) )
     {
     {
@@ -121,7 +121,6 @@ void tu_edpt_bind_driver(uint8_t ep2drv[][2], tusb_desc_interface_t const* desc_
       ep2drv[tu_edpt_number(ep_addr)][tu_edpt_dir(ep_addr)] = driver_id;
       ep2drv[tu_edpt_number(ep_addr)][tu_edpt_dir(ep_addr)] = driver_id;
     }
     }
 
 
-    len   += (uint16_t) tu_desc_len(p_desc);
     p_desc = tu_desc_next(p_desc);
     p_desc = tu_desc_next(p_desc);
   }
   }
 }
 }