Merge pull request #3301 from Cacodemon345/usb-work

usb: Add infrastructure for interrupt descriptor polling
This commit is contained in:
Miran Grča
2023-05-03 13:51:01 +02:00
committed by GitHub
2 changed files with 14 additions and 0 deletions

View File

@@ -40,7 +40,9 @@ typedef struct usb_t
uint32_t ohci_mem_base;
mem_mapping_t ohci_mmio_mapping;
pc_timer_t ohci_frame_timer;
pc_timer_t ohci_interrupt_desc_poll_timer;
pc_timer_t ohci_port_reset_timer[2];
uint8_t ohci_interrupt_counter : 5;
usb_params_t* usb_params;
} usb_t;

View File

@@ -195,6 +195,17 @@ ohci_update_frame_counter(void* priv)
usb_t *dev = (usb_t *) priv;
}
void
ohci_poll_interrupt_descriptors(void* priv)
{
usb_t *dev = (usb_t *) priv;
/* TODO: Actually poll the interrupt descriptors. */
dev->ohci_interrupt_counter++;
timer_on_auto(&dev->ohci_interrupt_desc_poll_timer, 1000.);
}
void
ohci_port_reset_callback(void* priv)
{
@@ -470,6 +481,7 @@ usb_init_ext(const device_t *info, void* params)
timer_add(&dev->ohci_frame_timer, ohci_update_frame_counter, dev, 0); /* Unused for now, to be used for frame counting. */
timer_add(&dev->ohci_port_reset_timer[0], ohci_port_reset_callback, dev, 0);
timer_add(&dev->ohci_port_reset_timer[1], ohci_port_reset_callback_2, dev, 0);
timer_add(&dev->ohci_interrupt_desc_poll_timer, ohci_poll_interrupt_descriptors, dev, 0);
usb_reset(dev);
return dev;