From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Wed, 25 Mar 2015 12:22:19 -0600 Subject: [U-Boot] [PATCH v2 31/80] dm: usb: Allow ECHI to hold private data for the controller In-Reply-To: <1427307788-7496-1-git-send-email-sjg@chromium.org> References: <1427307788-7496-1-git-send-email-sjg@chromium.org> Message-ID: <1427307788-7496-32-git-send-email-sjg@chromium.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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: Simon Glass --- Changes in v2: None drivers/usb/host/ehci-hcd.c | 10 ++++++++++ drivers/usb/host/ehci.h | 21 +++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index fed3942..d85308f 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -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) { ehci_shutdown(&ehcic[index]); diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index ec4d6b0..d538bb6 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h @@ -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); -- 2.2.0.rc0.207.ga3a616c