summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2025-10-11 20:26:19 +0800
committersakumisu <[email protected]>2025-10-27 17:40:42 +0800
commitf087e0777a293274dbdfe6012bba35c0f14f0217 (patch)
treed3984bee49c297b6711a7236ff7a865388a747c6
parent82487c80aa1bdb394ed80c12b5c1941aa52db4a7 (diff)
update(platform): remove CONFIG_USB_DCACHE_ENABLE, always check align size
Signed-off-by: sakumisu <[email protected]>
-rw-r--r--platform/fatfs/usbh_fatfs.c16
-rw-r--r--platform/rtthread/usbd_serial.c12
-rw-r--r--platform/rtthread/usbh_dfs.c15
-rw-r--r--platform/rtthread/usbh_serial.c27
4 files changed, 25 insertions, 45 deletions
diff --git a/platform/fatfs/usbh_fatfs.c b/platform/fatfs/usbh_fatfs.c
index 1d7aff38..abb7181b 100644
--- a/platform/fatfs/usbh_fatfs.c
+++ b/platform/fatfs/usbh_fatfs.c
@@ -34,7 +34,7 @@ int USB_disk_read(BYTE *buff, LBA_t sector, UINT count)
uint8_t *align_buf;
align_buf = (uint8_t *)buff;
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buff & (CONFIG_USB_ALIGN_SIZE - 1)) {
align_buf = (uint8_t *)aligned_alloc(CONFIG_USB_ALIGN_SIZE, count * active_msc_class->blocksize);
if (!align_buf) {
@@ -42,19 +42,19 @@ int USB_disk_read(BYTE *buff, LBA_t sector, UINT count)
return -USB_ERR_NOMEM;
}
}
-#endif
+
ret = usbh_msc_scsi_read10(active_msc_class, sector, align_buf, count);
if (ret < 0) {
ret = RES_ERROR;
} else {
ret = RES_OK;
}
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buff & (CONFIG_USB_ALIGN_SIZE - 1)) {
usb_memcpy(buff, align_buf, count * active_msc_class->blocksize);
free(align_buf);
}
-#endif
+
return ret;
}
@@ -64,7 +64,7 @@ int USB_disk_write(const BYTE *buff, LBA_t sector, UINT count)
uint8_t *align_buf;
align_buf = (uint8_t *)buff;
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buff & (CONFIG_USB_ALIGN_SIZE - 1)) {
align_buf = (uint8_t *)aligned_alloc(CONFIG_USB_ALIGN_SIZE, count * active_msc_class->blocksize);
if (!align_buf) {
@@ -73,18 +73,18 @@ int USB_disk_write(const BYTE *buff, LBA_t sector, UINT count)
}
usb_memcpy(align_buf, buff, count * active_msc_class->blocksize);
}
-#endif
+
ret = usbh_msc_scsi_write10(active_msc_class, sector, align_buf, count);
if (ret < 0) {
ret = RES_ERROR;
} else {
ret = RES_OK;
}
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buff & (CONFIG_USB_ALIGN_SIZE - 1)) {
free(align_buf);
}
-#endif
+
return ret;
}
diff --git a/platform/rtthread/usbd_serial.c b/platform/rtthread/usbd_serial.c
index aeb53a9b..2f6d484b 100644
--- a/platform/rtthread/usbd_serial.c
+++ b/platform/rtthread/usbd_serial.c
@@ -76,9 +76,8 @@ static rt_err_t usbd_serial_open(struct rt_device *dev, rt_uint16_t oflag)
serial = (struct usbd_serial *)dev;
- if (!usb_device_is_configured(serial->busid)) {
- USB_LOG_ERR("USB device is not configured\n");
- return -RT_EPERM;
+ while(!usb_device_is_configured(serial->busid)) {
+ rt_thread_mdelay(10);
}
usbd_ep_start_read(serial->busid, serial->out_ep,
@@ -123,9 +122,8 @@ static rt_ssize_t usbd_serial_write(struct rt_device *dev,
}
align_buf = (rt_uint8_t *)buffer;
-#ifdef CONFIG_USB_DCACHE_ENABLE
if ((uint32_t)buffer & (CONFIG_USB_ALIGN_SIZE - 1)) {
- align_buf = rt_malloc_align(size, CONFIG_USB_ALIGN_SIZE);
+ align_buf = rt_malloc_align(USB_ALIGN_UP(size, CONFIG_USB_ALIGN_SIZE), CONFIG_USB_ALIGN_SIZE);
if (!align_buf) {
USB_LOG_ERR("serial get align buf failed\n");
return 0;
@@ -133,7 +131,7 @@ static rt_ssize_t usbd_serial_write(struct rt_device *dev,
usb_memcpy(align_buf, buffer, size);
}
-#endif
+
usb_osal_sem_reset(serial->tx_done);
usbd_ep_start_write(serial->busid, serial->in_ep, align_buf, size);
ret = usb_osal_sem_take(serial->tx_done, 3000);
@@ -144,11 +142,9 @@ static rt_ssize_t usbd_serial_write(struct rt_device *dev,
ret = size;
}
-#ifdef CONFIG_USB_DCACHE_ENABLE
if ((uint32_t)buffer & (CONFIG_USB_ALIGN_SIZE - 1)) {
rt_free_align(align_buf);
}
-#endif
return ret;
}
diff --git a/platform/rtthread/usbh_dfs.c b/platform/rtthread/usbh_dfs.c
index 1344f539..77846665 100644
--- a/platform/rtthread/usbh_dfs.c
+++ b/platform/rtthread/usbh_dfs.c
@@ -38,7 +38,7 @@ static rt_ssize_t rt_udisk_read(rt_device_t dev, rt_off_t pos, void *buffer,
rt_uint8_t *align_buf;
align_buf = (rt_uint8_t *)buffer;
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buffer & (CONFIG_USB_ALIGN_SIZE - 1)) {
align_buf = rt_malloc_align(size * msc_class->blocksize, CONFIG_USB_ALIGN_SIZE);
if (!align_buf) {
@@ -47,18 +47,18 @@ static rt_ssize_t rt_udisk_read(rt_device_t dev, rt_off_t pos, void *buffer,
}
} else {
}
-#endif
+
ret = usbh_msc_scsi_read10(msc_class, pos, (uint8_t *)align_buf, size);
if (ret < 0) {
rt_kprintf("usb mass_storage read failed\n");
return 0;
}
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buffer & (CONFIG_USB_ALIGN_SIZE - 1)) {
usb_memcpy(buffer, align_buf, size * msc_class->blocksize);
rt_free_align(align_buf);
}
-#endif
+
return size;
}
@@ -70,7 +70,7 @@ static rt_ssize_t rt_udisk_write(rt_device_t dev, rt_off_t pos, const void *buff
rt_uint8_t *align_buf;
align_buf = (rt_uint8_t *)buffer;
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buffer & (CONFIG_USB_ALIGN_SIZE - 1)) {
align_buf = rt_malloc_align(size * msc_class->blocksize, CONFIG_USB_ALIGN_SIZE);
if (!align_buf) {
@@ -80,17 +80,16 @@ static rt_ssize_t rt_udisk_write(rt_device_t dev, rt_off_t pos, const void *buff
usb_memcpy(align_buf, buffer, size * msc_class->blocksize);
}
-#endif
+
ret = usbh_msc_scsi_write10(msc_class, pos, (uint8_t *)align_buf, size);
if (ret < 0) {
rt_kprintf("usb mass_storage write failed\n");
return 0;
}
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buffer & (CONFIG_USB_ALIGN_SIZE - 1)) {
rt_free_align(align_buf);
}
-#endif
return size;
}
diff --git a/platform/rtthread/usbh_serial.c b/platform/rtthread/usbh_serial.c
index cbfbc49e..912258e0 100644
--- a/platform/rtthread/usbh_serial.c
+++ b/platform/rtthread/usbh_serial.c
@@ -193,9 +193,9 @@ static rt_ssize_t usbh_serial_write(struct rt_device *dev,
serial = (struct usbh_serial *)dev;
align_buf = (rt_uint8_t *)buffer;
-#ifdef CONFIG_USB_DCACHE_ENABLE
+
if ((uint32_t)buffer & (CONFIG_USB_ALIGN_SIZE - 1)) {
- align_buf = rt_malloc_align(size, CONFIG_USB_ALIGN_SIZE);
+ align_buf = rt_malloc_align(USB_ALIGN_UP(size, CONFIG_USB_ALIGN_SIZE), CONFIG_USB_ALIGN_SIZE);
if (!align_buf) {
USB_LOG_ERR("serial get align buf failed\n");
return 0;
@@ -203,7 +203,6 @@ static rt_ssize_t usbh_serial_write(struct rt_device *dev,
usb_memcpy(align_buf, buffer, size);
}
-#endif
switch (serial->type) {
#if defined(PKG_CHERRYUSB_HOST_CDC_ACM) || defined(RT_CHERRYUSB_HOST_CDC_ACM)
@@ -211,10 +210,7 @@ static rt_ssize_t usbh_serial_write(struct rt_device *dev,
ret = usbh_cdc_acm_bulk_out_transfer((struct usbh_cdc_acm *)dev->user_data, (uint8_t *)align_buf, size, RT_WAITING_FOREVER);
if (ret < 0) {
USB_LOG_ERR("usbh_cdc_acm_bulk_out_transfer failed: %d\n", ret);
-#ifdef CONFIG_USB_DCACHE_ENABLE
- rt_free_align(align_buf);
-#endif
- return 0;
+ ret = 0;
}
break;
#endif
@@ -223,10 +219,7 @@ static rt_ssize_t usbh_serial_write(struct rt_device *dev,
ret = usbh_ftdi_bulk_out_transfer((struct usbh_ftdi *)dev->user_data, (uint8_t *)align_buf, size, RT_WAITING_FOREVER);
if (ret < 0) {
USB_LOG_ERR("usbh_ftdi_bulk_out_transfer failed: %d\n", ret);
-#ifdef CONFIG_USB_DCACHE_ENABLE
- rt_free_align(align_buf);
-#endif
- return 0;
+ ret = 0;
}
break;
#endif
@@ -235,10 +228,7 @@ static rt_ssize_t usbh_serial_write(struct rt_device *dev,
ret = usbh_ch34x_bulk_out_transfer((struct usbh_ch34x *)dev->user_data, (uint8_t *)align_buf, size, RT_WAITING_FOREVER);
if (ret < 0) {
USB_LOG_ERR("usbh_ch34x_bulk_out_transfer failed: %d\n", ret);
-#ifdef CONFIG_USB_DCACHE_ENABLE
- rt_free_align(align_buf);
-#endif
- return 0;
+ ret = 0;
}
break;
#endif
@@ -247,10 +237,7 @@ static rt_ssize_t usbh_serial_write(struct rt_device *dev,
ret = usbh_pl2303_bulk_out_transfer((struct usbh_pl2303 *)dev->user_data, (uint8_t *)align_buf, size, RT_WAITING_FOREVER);
if (ret < 0) {
USB_LOG_ERR("usbh_pl2303_bulk_out_transfer failed: %d\n", ret);
-#ifdef CONFIG_USB_DCACHE_ENABLE
- rt_free_align(align_buf);
-#endif
- return 0;
+ ret = 0;
}
break;
#endif
@@ -258,11 +245,9 @@ static rt_ssize_t usbh_serial_write(struct rt_device *dev,
break;
}
-#ifdef CONFIG_USB_DCACHE_ENABLE
if ((uint32_t)buffer & (CONFIG_USB_ALIGN_SIZE - 1)) {
rt_free_align(align_buf);
}
-#endif
return ret;
}