|
@@ -248,6 +248,7 @@ struct ehci_ctrl {
|
|
|
uint32_t *periodic_list;
|
|
|
int periodic_schedules;
|
|
|
int ntds;
|
|
|
+ void *priv; /* client's private data */
|
|
|
};
|
|
|
|
|
|
/* Weak functions that drivers can override */
|
|
@@ -256,6 +257,26 @@ void ehci_set_usbmode(int index);
|
|
|
void ehci_powerup_fixup(uint32_t *status_reg, uint32_t *reg);
|
|
|
uint32_t *ehci_get_portsc_register(struct ehci_hcor *hcor, int port);
|
|
|
|
|
|
+/**
|
|
|
+ * ehci_set_controller_priv() - Set up private data for the controller
|
|
|
+ *
|
|
|
+ * This function can be called in ehci_hcd_init() to tell the EHCI layer
|
|
|
+ * about the controller's private data pointer. Then in the above functions
|
|
|
+ * this can be accessed given the struct ehci_ctrl pointer.
|
|
|
+ *
|
|
|
+ * @index: Controller number to set
|
|
|
+ * @priv: Controller pointer
|
|
|
+ */
|
|
|
+void ehci_set_controller_priv(int index, void *priv);
|
|
|
+
|
|
|
+/**
|
|
|
+ * ehci_get_controller_priv() - Get controller private data
|
|
|
+ *
|
|
|
+ * @index Controller number to get
|
|
|
+ * @return controller pointer for this index
|
|
|
+ */
|
|
|
+void *ehci_get_controller_priv(int index);
|
|
|
+
|
|
|
/* Low level init functions */
|
|
|
int ehci_hcd_init(int index, enum usb_init_type init,
|
|
|
struct ehci_hccr **hccr, struct ehci_hcor **hcor);
|