usbds only set zlt on write

This commit is contained in:
ITotalJustice
2025-06-02 18:00:40 +01:00
parent 298be4a344
commit ea943088e5

View File

@@ -293,12 +293,14 @@ Result UsbDs::WaitTransferCompletion(UsbSessionEndpoint ep, u64 timeout) {
} }
Result UsbDs::TransferAsync(UsbSessionEndpoint ep, void *buffer, u32 remaining, u32 size, u32 *out_urb_id) { Result UsbDs::TransferAsync(UsbSessionEndpoint ep, void *buffer, u32 remaining, u32 size, u32 *out_urb_id) {
if (ep == UsbSessionEndpoint_In) {
if (remaining == size && !(size % (u32)m_max_packet_size)) { if (remaining == size && !(size % (u32)m_max_packet_size)) {
log_write("[USBDS] SetZlt(true)\n"); log_write("[USBDS] SetZlt(true)\n");
R_TRY(usbDsEndpoint_SetZlt(m_endpoints[ep], true)); R_TRY(usbDsEndpoint_SetZlt(m_endpoints[ep], true));
} else { } else {
R_TRY(usbDsEndpoint_SetZlt(m_endpoints[ep], false)); R_TRY(usbDsEndpoint_SetZlt(m_endpoints[ep], false));
} }
}
return usbDsEndpoint_PostBufferAsync(m_endpoints[ep], buffer, size, out_urb_id); return usbDsEndpoint_PostBufferAsync(m_endpoints[ep], buffer, size, out_urb_id);
} }