diff --git a/port/raspberrypi/rp2xxx/src/hal/usb.zig b/port/raspberrypi/rp2xxx/src/hal/usb.zig index a64c0f95f..d846bed48 100644 --- a/port/raspberrypi/rp2xxx/src/hal/usb.zig +++ b/port/raspberrypi/rp2xxx/src/hal/usb.zig @@ -254,6 +254,8 @@ pub fn F(comptime config: UsbConfig) type { // TODO: assert!(UsbDir::of_endpoint_addr(ep.descriptor.endpoint_address) == UsbDir::In); const ep = hardware_endpoint_get_by_address(ep_addr); + // wait for controller to give processor ownership of the buffer before writing it. + while (ep.buffer_control.?.read().AVAILABLE_0 == 1) {} // TODO: please fixme: https://github.com/ZigEmbeddedGroup/microzig/issues/452 std.mem.copyForwards(u8, ep.data_buffer[0..buffer.len], buffer);