From ce49c71fc40c23e575d76a798b6309c795810e20 Mon Sep 17 00:00:00 2001 From: Jeremy Dick Date: Mon, 3 Nov 2025 12:38:15 -0600 Subject: [PATCH] hal: renesas: ra: Fix zero length packets not being sent for pipe0 Fix zero length packets not being sent for pipe0 Signed-off-by: Jeremy Dick --- drivers/ra/fsp/src/r_usb_device/r_usb_device.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/ra/fsp/src/r_usb_device/r_usb_device.c b/drivers/ra/fsp/src/r_usb_device/r_usb_device.c index ca0456e8..afc656b4 100644 --- a/drivers/ra/fsp/src/r_usb_device/r_usb_device.c +++ b/drivers/ra/fsp/src/r_usb_device/r_usb_device.c @@ -1133,9 +1133,11 @@ static inline fsp_err_t process_pipe0_xfer (usbd_instance_ctrl_t * const p_ctrl, bool hs_module = USB_IS_USBHS(p_ctrl->p_cfg->module_number); volatile uint16_t * cfifosel = hs_module ? &R_USB_HS0->CFIFOSEL : &R_USB_FS0->CFIFOSEL; volatile uint16_t * dcpctr = hs_module ? &R_USB_HS0->DCPCTR : &R_USB_FS0->DCPCTR; + volatile uint16_t * cfifoctr = hs_module ? &R_USB_HS0->CFIFOCTR : &R_USB_FS0->CFIFOCTR; #else volatile uint16_t * cfifosel = &R_USB_FS0->CFIFOSEL; volatile uint16_t * dcpctr = &R_USB_FS0->DCPCTR; + volatile uint16_t * cfifoctr = &R_USB_FS0->CFIFOCTR; #endif const uint8_t dir = USB_GET_EP_DIR(ep_addr); @@ -1174,7 +1176,12 @@ static inline fsp_err_t process_pipe0_xfer (usbd_instance_ctrl_t * const p_ctrl, { /* ZLP */ pipe->buf = NULL; - *dcpctr = R_USB_DCPCTR_CCPL_Msk | R_USB_PIPE_CTR_PID_BUF; + if (USB_EP_CONTROL_IN == ep_addr) + { + *cfifoctr = R_USB_CFIFOCTR_BVAL_Msk; + } + + *dcpctr = R_USB_DCPCTR_CCPL_Msk | R_USB_PIPE_CTR_PID_BUF; } return FSP_SUCCESS;