1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-02 10:08:11 +00:00

Kernel: Convert dbgprintf()/klog() => dbgln()/dmesgln() in UHCI code

This commit is contained in:
Andreas Kling 2021-02-17 16:30:55 +01:00
parent e4d84b5e79
commit 40e5210036
3 changed files with 27 additions and 21 deletions

View file

@ -106,9 +106,9 @@ UHCIController::UHCIController(PCI::Address address, PCI::ID id)
: PCI::Device(address) : PCI::Device(address)
, m_io_base(PCI::get_BAR4(pci_address()) & ~1) , m_io_base(PCI::get_BAR4(pci_address()) & ~1)
{ {
klog() << "UHCI: Controller found " << id << " @ " << address; dmesgln("UHCI: Controller found {} @ {}", id, address);
klog() << "UHCI: I/O base " << m_io_base; dmesgln("UHCI: I/O base {}", m_io_base);
klog() << "UHCI: Interrupt line: " << PCI::get_interrupt_line(pci_address()); dmesgln("UHCI: Interrupt line: {}", PCI::get_interrupt_line(pci_address()));
reset(); reset();
start(); start();
@ -200,8 +200,6 @@ void UHCIController::create_structures()
#endif #endif
} }
kprintf("Done!\n");
m_free_td_pool.resize(MAXIMUM_NUMBER_OF_TDS); m_free_td_pool.resize(MAXIMUM_NUMBER_OF_TDS);
for (size_t i = 0; i < m_free_td_pool.size(); i++) { for (size_t i = 0; i < m_free_td_pool.size(); i++) {
auto placement_addr = reinterpret_cast<void*>(m_td_pool->vaddr().offset(PAGE_SIZE).get() + (i * sizeof(Kernel::USB::TransferDescriptor))); auto placement_addr = reinterpret_cast<void*>(m_td_pool->vaddr().offset(PAGE_SIZE).get() + (i * sizeof(Kernel::USB::TransferDescriptor)));
@ -364,7 +362,7 @@ void UHCIController::do_debug_transfer()
auto data_td = allocate_transfer_descriptor(); auto data_td = allocate_transfer_descriptor();
auto response_td = allocate_transfer_descriptor(); auto response_td = allocate_transfer_descriptor();
kprintf("BUFFER PHYSICAL ADDRESS = 0x%08x\n", m_td_buffer_region->physical_page(0)->paddr().get()); dbgln("BUFFER PHYSICAL ADDRESS = {}", m_td_buffer_region->physical_page(0)->paddr());
setup_packet* packet = reinterpret_cast<setup_packet*>(m_td_buffer_region->vaddr().as_ptr()); setup_packet* packet = reinterpret_cast<setup_packet*>(m_td_buffer_region->vaddr().as_ptr());
packet->bmRequestType = 0x81; packet->bmRequestType = 0x81;
@ -400,7 +398,7 @@ void UHCIController::do_debug_transfer()
void UHCIController::spawn_port_proc() void UHCIController::spawn_port_proc()
{ {
RefPtr<Thread> usb_hotplug_thread; RefPtr<Thread> usb_hotplug_thread;
timespec sleep_time; timespec sleep_time {};
sleep_time.tv_sec = 1; sleep_time.tv_sec = 1;
Process::create_kernel_process(usb_hotplug_thread, "UHCIHotplug", [&, sleep_time] { Process::create_kernel_process(usb_hotplug_thread, "UHCIHotplug", [&, sleep_time] {
@ -414,7 +412,7 @@ void UHCIController::spawn_port_proc()
port_data = read_portsc1(); port_data = read_portsc1();
if (port_data & UHCI_PORTSC_CONNECT_STATUS_CHANGED) { if (port_data & UHCI_PORTSC_CONNECT_STATUS_CHANGED) {
if (port_data & UHCI_PORTSC_CURRRENT_CONNECT_STATUS) { if (port_data & UHCI_PORTSC_CURRRENT_CONNECT_STATUS) {
klog() << "UHCI: Device attach detected on Root Port 1!"; dmesgln("UHCI: Device attach detected on Root Port 1!");
// Reset the port // Reset the port
port_data = read_portsc1(); port_data = read_portsc1();
@ -428,21 +426,21 @@ void UHCIController::spawn_port_proc()
write_portsc1(port_data & (~UHCI_PORTSC_PORT_ENABLE_CHANGED | ~UHCI_PORTSC_CONNECT_STATUS_CHANGED)); write_portsc1(port_data & (~UHCI_PORTSC_PORT_ENABLE_CHANGED | ~UHCI_PORTSC_CONNECT_STATUS_CHANGED));
} else { } else {
klog() << "UHCI: Device detach detected on Root Port 1!"; dmesgln("UHCI: Device detach detected on Root Port 1!");
} }
port_data = read_portsc1(); port_data = read_portsc1();
write_portsc1(port_data | UHCI_PORTSC_PORT_ENABLED); write_portsc1(port_data | UHCI_PORTSC_PORT_ENABLED);
kprintf("port should be enabled now: 0x%x\n", read_portsc1()); dbgln("port should be enabled now: {:#04x}\n", read_portsc1());
do_debug_transfer(); do_debug_transfer();
} }
} else { } else {
port_data = UHCIController::the().read_portsc2(); port_data = UHCIController::the().read_portsc2();
if (port_data & UHCI_PORTSC_CONNECT_STATUS_CHANGED) { if (port_data & UHCI_PORTSC_CONNECT_STATUS_CHANGED) {
if (port_data & UHCI_PORTSC_CURRRENT_CONNECT_STATUS) { if (port_data & UHCI_PORTSC_CURRRENT_CONNECT_STATUS) {
klog() << "UHCI: Device attach detected on Root Port 2!"; dmesgln("UHCI: Device attach detected on Root Port 2!");
} else { } else {
klog() << "UHCI: Device detach detected on Root Port 2!"; dmesgln("UHCI: Device detach detected on Root Port 2!");
} }
UHCIController::the().write_portsc2( UHCIController::the().write_portsc2(
@ -461,10 +459,10 @@ void UHCIController::handle_irq(const RegisterState&)
if (!read_usbsts()) if (!read_usbsts())
return; return;
#if UHCI_DEBUG if constexpr (UHCI_DEBUG) {
klog() << "UHCI: Interrupt happened!"; dbgln("UHCI: Interrupt happened!");
klog() << "Value of USBSTS: " << read_usbsts(); dbgln("Value of USBSTS: {:#04x}", read_usbsts());
#endif }
} }
} }

View file

@ -124,12 +124,10 @@ struct alignas(16) TransferDescriptor final {
void print() void print()
{ {
// FIXME: Use dbgln() or klog() when we have something working. dbgln("UHCI: TD({}) @ {}: link_ptr={}, status={}, token={}, buffer_ptr={}", this, m_paddr, m_link_ptr, (u32)m_control_status, m_token, m_buffer_ptr);
// We're using kprintf() for now because the output stands out from the rest of the text in the log
kprintf("UHCI: TD(%p) @ 0x%08x: link_ptr=0x%08x, status=0x%08x, token=0x%08x, buffer_ptr=0x%08x\n", this, m_paddr, m_link_ptr, m_control_status, m_token, m_buffer_ptr);
// Now let's print the flags! // Now let's print the flags!
kprintf("UHCI: TD(%p) @ 0x%08x: link_ptr=%s%s%s, status=%s%s%s%s%s%s%s\n", dbgln("UHCI: TD({}) @ {}: link_ptr={}{}{}, status={}{}{}{}{}{}{}",
this, this,
m_paddr, m_paddr,
(last_in_chain()) ? "T " : "", (last_in_chain()) ? "T " : "",
@ -266,7 +264,7 @@ struct alignas(16) QueueHead {
void print() void print()
{ {
kprintf("UHCI: QH(%p) @ 0x%08x: link_ptr=0x%08x, element_link_ptr=0x%08x\n", this, m_paddr, m_link_ptr, m_element_link_ptr); dbgln("UHCI: QH({}) @ {}: link_ptr={}, element_link_ptr={}", this, m_paddr, m_link_ptr, (FlatPtr)m_element_link_ptr);
} }
private: private:

View file

@ -255,3 +255,13 @@ struct AK::Formatter<Kernel::PCI::Address> : Formatter<FormatString> {
"PCI [{:04x}:{:02x}:{:02x}:{:02x}]", value.seg(), value.bus(), value.device(), value.function()); "PCI [{:04x}:{:02x}:{:02x}:{:02x}]", value.seg(), value.bus(), value.device(), value.function());
} }
}; };
template<>
struct AK::Formatter<Kernel::PCI::ID> : Formatter<FormatString> {
void format(FormatBuilder& builder, Kernel::PCI::ID value)
{
return Formatter<FormatString>::format(
builder,
"PCI::ID [{:04x}:{:04x}]", value.vendor_id, value.device_id);
}
};