Prepare infrastructure for background USB transfers

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-08-21 16:09:43 +02:00
parent bcfa613bc4
commit 3ee4474e8d
6 changed files with 606 additions and 451 deletions

View file

@ -30,6 +30,7 @@ typedef struct grub_usb_controller_dev *grub_usb_controller_dev_t;
typedef enum
{
GRUB_USB_ERR_NONE,
GRUB_USB_ERR_WAIT,
GRUB_USB_ERR_INTERNAL,
GRUB_USB_ERR_STALL,
GRUB_USB_ERR_DATA,
@ -97,6 +98,7 @@ grub_usb_err_t
grub_usb_root_hub (grub_usb_controller_t controller);
/* XXX: All handled by libusb for now. */
struct grub_usb_controller_dev
{
@ -105,9 +107,15 @@ struct grub_usb_controller_dev
int (*iterate) (int (*hook) (grub_usb_controller_t dev));
grub_usb_err_t (*transfer) (grub_usb_controller_t dev,
grub_usb_transfer_t transfer,
int timeout, grub_size_t *actual);
grub_usb_err_t (*setup_transfer) (grub_usb_controller_t dev,
grub_usb_transfer_t transfer);
grub_usb_err_t (*check_transfer) (grub_usb_controller_t dev,
grub_usb_transfer_t transfer,
grub_size_t *actual);
grub_usb_err_t (*cancel_transfer) (grub_usb_controller_t dev,
grub_usb_transfer_t transfer);
int (*hubports) (grub_usb_controller_t dev);

View file

@ -62,6 +62,8 @@ struct grub_usb_transfer
int last_trans;
/* Index of last processed transaction in OHCI/UHCI driver. */
void *controller_data;
};
typedef struct grub_usb_transfer *grub_usb_transfer_t;