From f39467c396bfdfc7bca44fb59a79ef032a32b0cc Mon Sep 17 00:00:00 2001 From: Steve Evans Date: Sun, 29 Aug 2021 22:38:48 +0100 Subject: [PATCH] Use static definition for ClassData to support USB MSC DMA on G4 --- .../Class/MSC/Src/usbd_msc.c | 19 +++++++------------ .../Class/MSC/Src/usbd_msc.c | 9 +++------ .../Class/MSC/Src/usbd_msc.c | 9 +++------ .../Class/MSC/Src/usbd_msc.c | 11 +---------- 4 files changed, 14 insertions(+), 34 deletions(-) diff --git a/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c b/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c index 46b719fac5..47156a213c 100644 --- a/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c +++ b/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c @@ -283,6 +283,7 @@ __ALIGN_BEGIN uint8_t USBD_MSC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] * @} */ +static DMA_DATA_ZERO_INIT USBD_MSC_BOT_HandleTypeDef ClassData; /** @defgroup MSC_CORE_Private_Functions * @{ @@ -328,18 +329,12 @@ uint8_t USBD_MSC_Init (USBD_HandleTypeDef *pdev, USBD_EP_TYPE_BULK, MSC_MAX_FS_PACKET); } - pdev->pClassData = USBD_malloc(sizeof (USBD_MSC_BOT_HandleTypeDef)); - - if(pdev->pClassData == NULL) - { - ret = 1; - } - else - { - /* Init the BOT layer */ - MSC_BOT_Init(pdev); - ret = 0; - } + + pdev->pMSC_ClassData = (void *)&ClassData; + + /* Init the BOT layer */ + MSC_BOT_Init(pdev); + ret = 0; return ret; } diff --git a/lib/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c b/lib/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c index 7f9fd0cf6a..ec8efd57de 100755 --- a/lib/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c +++ b/lib/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c @@ -281,8 +281,9 @@ __ALIGN_BEGIN uint8_t USBD_MSC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] * @} */ +static DMA_DATA_ZERO_INIT USBD_MSC_BOT_HandleTypeDef ClassData; -/** @defgroup MSC_CORE_Private_Functions + /** @defgroup MSC_CORE_Private_Functions * @{ */ @@ -317,12 +318,8 @@ uint8_t USBD_MSC_Init (USBD_HandleTypeDef *pdev, uint8_t cfgidx) USBD_LL_OpenEP(pdev, MSC_EPIN_ADDR, USBD_EP_TYPE_BULK, MSC_MAX_FS_PACKET); pdev->ep_in[MSC_EPIN_ADDR & 0xFU].is_used = 1U; } - pdev->pMSC_ClassData = USBD_malloc(sizeof (USBD_MSC_BOT_HandleTypeDef)); - if(pdev->pMSC_ClassData == NULL) - { - return USBD_FAIL; - } + pdev->pMSC_ClassData = (void *)&ClassData; /* Init the BOT layer */ MSC_BOT_Init(pdev); diff --git a/lib/main/STM32G4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c b/lib/main/STM32G4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c index 7f9fd0cf6a..e26d84c612 100755 --- a/lib/main/STM32G4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c +++ b/lib/main/STM32G4/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c @@ -281,6 +281,7 @@ __ALIGN_BEGIN uint8_t USBD_MSC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] * @} */ +static DMA_DATA_ZERO_INIT USBD_MSC_BOT_HandleTypeDef ClassData; /** @defgroup MSC_CORE_Private_Functions * @{ @@ -297,6 +298,8 @@ uint8_t USBD_MSC_Init (USBD_HandleTypeDef *pdev, uint8_t cfgidx) { UNUSED(cfgidx); + pdev->pMSC_ClassData = (void *)&ClassData; + if(pdev->dev_speed == USBD_SPEED_HIGH) { /* Open EP OUT */ @@ -317,12 +320,6 @@ uint8_t USBD_MSC_Init (USBD_HandleTypeDef *pdev, uint8_t cfgidx) USBD_LL_OpenEP(pdev, MSC_EPIN_ADDR, USBD_EP_TYPE_BULK, MSC_MAX_FS_PACKET); pdev->ep_in[MSC_EPIN_ADDR & 0xFU].is_used = 1U; } - pdev->pMSC_ClassData = USBD_malloc(sizeof (USBD_MSC_BOT_HandleTypeDef)); - - if(pdev->pMSC_ClassData == NULL) - { - return USBD_FAIL; - } /* Init the BOT layer */ MSC_BOT_Init(pdev); diff --git a/lib/main/STM32H7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c b/lib/main/STM32H7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c index 298b5dac3b..e55c3cbe11 100644 --- a/lib/main/STM32H7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c +++ b/lib/main/STM32H7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c @@ -281,17 +281,8 @@ static DMA_DATA_ZERO_INIT USBD_MSC_BOT_HandleTypeDef ClassData; uint8_t USBD_MSC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) { UNUSED(cfgidx); - USBD_MSC_BOT_HandleTypeDef *hmsc; - hmsc = &ClassData; - - if (hmsc == NULL) - { - pdev->pMSC_ClassData = NULL; - return (uint8_t)USBD_EMEM; - } - - pdev->pMSC_ClassData = (void *)hmsc; + pdev->pMSC_ClassData = (void *)&ClassData; if (pdev->dev_speed == USBD_SPEED_HIGH) {