Commit c4a3141d authored by Simon Glass's avatar Simon Glass
Browse files

dm: usb: Allow ECHI to hold private data for the controller

Add a private data pointer that clients of EHCI can use to access their
private information. This establishes a link between struct ehci_ctrl and
its associated controller data structure.

Signed-off-by: default avatarSimon Glass <>
Reviewed-by: default avatarMarek Vasut <>
parent 7338287d
......@@ -930,6 +930,16 @@ unknown:
return -1;
void ehci_set_controller_priv(int index, void *priv)
ehcic[index].priv = priv;
void *ehci_get_controller_priv(int index)
return ehcic[index].priv;
int usb_lowlevel_stop(int index)
......@@ -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);
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment