From fa030075c228390741e450664506892d317c0038 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 6 Sep 2021 19:26:28 +0700 Subject: [PATCH 1/3] Revert "Fix for MSC during stage STATUS" This reverts commit 2e23f3dd7287186445aeab39108f81c51644ed77. --- src/class/msc/msc_device.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/class/msc/msc_device.c b/src/class/msc/msc_device.c index 71875b014..6b3a392a8 100644 --- a/src/class/msc/msc_device.c +++ b/src/class/msc/msc_device.c @@ -601,10 +601,10 @@ bool mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t // skip status if epin is currently stalled, will do it when received Clear Stall request if ( !usbd_edpt_stalled(rhport, p_msc->ep_in) ) { - if ( (p_msc->total_len > p_msc->xferred_len) && is_data_in(p_cbw->dir) ) + if ( (p_cbw->total_bytes > p_msc->xferred_len) && is_data_in(p_cbw->dir) ) { // 6.7 The 13 Cases: case 5 (Hi > Di): STALL before status - TU_LOG(MSC_DEBUG, " SCSI case 5 (Hi > Di): %lu > %lu\r\n", p_msc->total_len, p_msc->xferred_len); + TU_LOG(MSC_DEBUG, " SCSI case 5 (Hi > Di): %lu > %lu\r\n", p_cbw->total_bytes, p_msc->xferred_len); usbd_edpt_stall(rhport, p_msc->ep_in); }else { From f47e5402fa928c5a0cd581c894e9e18c3dfcbdfb Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 7 Sep 2021 13:30:51 +0700 Subject: [PATCH 2/3] add msc workaround for cxd56 --- examples/make.mk | 1 + hw/bsp/spresense/board.mk | 3 ++- src/class/msc/msc_device.c | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/examples/make.mk b/examples/make.mk index 9daf60e35..24f8c5572 100644 --- a/examples/make.mk +++ b/examples/make.mk @@ -61,6 +61,7 @@ GDB = $(CROSS_COMPILE)gdb OBJCOPY = $(CROSS_COMPILE)objcopy SIZE = $(CROSS_COMPILE)size MKDIR = mkdir +PYTHON = python ifeq ($(CMDEXE),1) CP = copy diff --git a/hw/bsp/spresense/board.mk b/hw/bsp/spresense/board.mk index a46c42bd6..ba291e817 100644 --- a/hw/bsp/spresense/board.mk +++ b/hw/bsp/spresense/board.mk @@ -70,4 +70,5 @@ $(BUILD)/$(PROJECT).spk: $(MKSPK) # flash flash: $(BUILD)/$(PROJECT).spk - @$(TOP)/hw/mcu/sony/cxd56/tools/flash_writer.py -s -c $(SERIAL) -d -b 115200 -n $< + @echo FLASH $< + @$(PYTHON) $(TOP)/hw/mcu/sony/cxd56/tools/flash_writer.py -s -c $(SERIAL) -d -b 115200 -n $< diff --git a/src/class/msc/msc_device.c b/src/class/msc/msc_device.c index 6b3a392a8..0fd592129 100644 --- a/src/class/msc/msc_device.c +++ b/src/class/msc/msc_device.c @@ -611,6 +611,17 @@ bool mscd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t TU_ASSERT( send_csw(rhport, p_msc) ); } } + + #if TU_CHECK_MCU(CXD56) + // WORKAROUND: cxd56 has its own nuttx usb stack which does not forward Set/ClearFeature(Endpoint) to DCD. + // There is no way for us to know when EP is un-stall, therefore we will unconditionally un-stall here and + // hope everything will work + if ( usbd_edpt_stalled(rhport, p_msc->ep_in) ) + { + usbd_edpt_clear_stall(rhport, p_msc->ep_in); + send_csw(rhport, p_msc); + } + #endif } return true; From 785cdf67f0e03a456fd2dfad7b769b094f7e07ce Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 7 Sep 2021 17:43:45 +0700 Subject: [PATCH 3/3] default PYTHON to python3 on linux, and python on windows --- examples/make.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/make.mk b/examples/make.mk index 24f8c5572..c894d35f4 100644 --- a/examples/make.mk +++ b/examples/make.mk @@ -61,15 +61,16 @@ GDB = $(CROSS_COMPILE)gdb OBJCOPY = $(CROSS_COMPILE)objcopy SIZE = $(CROSS_COMPILE)size MKDIR = mkdir -PYTHON = python ifeq ($(CMDEXE),1) CP = copy RM = del + PYTHON = python else SED = sed CP = cp RM = rm + PYTHON = python3 endif #-------------- Source files and compiler flags --------------