Kernel: Fix USB FS device default max packet size

Apparently this is a common non spec compliant issue on many
controllers/devices.

thanks @sasdallas
This commit is contained in:
Bananymous 2025-08-08 17:39:50 +03:00
parent ee3f10313a
commit 7e472a9c1d
1 changed files with 11 additions and 2 deletions

View File

@ -40,10 +40,9 @@ namespace Kernel
switch (m_speed_class)
{
case USB::SpeedClass::LowSpeed:
case USB::SpeedClass::FullSpeed:
m_endpoints[0].max_packet_size = 8;
is_ls_or_fs_device_on_hs_hub = m_info.parent_hub && (m_info.parent_hub->speed_class() == USB::SpeedClass::HighSpeed);
break;
case USB::SpeedClass::FullSpeed:
case USB::SpeedClass::HighSpeed:
m_endpoints[0].max_packet_size = 64;
break;
@ -53,6 +52,16 @@ namespace Kernel
default: ASSERT_NOT_REACHED();
}
switch (m_speed_class)
{
case USB::SpeedClass::LowSpeed:
case USB::SpeedClass::FullSpeed:
is_ls_or_fs_device_on_hs_hub = m_info.parent_hub && (m_info.parent_hub->speed_class() == USB::SpeedClass::HighSpeed);
break;
default:
break;
}
m_input_context = TRY(DMARegion::create(33 * context_size));
memset(reinterpret_cast<void*>(m_input_context->vaddr()), 0, m_input_context->size());