[U-Boot] [PATCH] dm: usb: Make usb_lowlevel_init set the default ops pointer
Simon Glass
sjg at chromium.org
Fri Apr 17 23:28:30 CEST 2015
Hi Tom,
On 17 April 2015 at 14:31, Tom Rini <trini at konsulko.com> wrote:
> In order to switch to a set of function pointers for certain operations
> we need to ensure that the defaults are first set so that they can be
> overriden as needed by SoC/board specific code.
>
> Signed-off-by: Tom Rini <trini at konsulko.com>
> ---
> drivers/usb/host/ehci-hcd.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> index 79cf3b3..e7c438c 100644
> --- a/drivers/usb/host/ehci-hcd.c
> +++ b/drivers/usb/host/ehci-hcd.c
> @@ -945,9 +945,7 @@ const struct ehci_ops default_ehci_ops = {
>
> static void ehci_setup_ops(struct ehci_ctrl *ctrl, const struct ehci_ops *ops)
> {
> - if (!ops) {
> - ctrl->ops = default_ehci_ops;
> - } else {
Do we need to remove this? I think this will break when driver model
is used, if NULL is passed in to select the default ops.
> + if (ops) {
> ctrl->ops = *ops;
> if (!ctrl->ops.set_usb_mode)
> ctrl->ops.set_usb_mode = ehci_set_usbmode;
> @@ -1095,6 +1093,12 @@ int usb_lowlevel_init(int index, enum usb_init_type init, void **controller)
> uint tweaks = 0;
> int rc;
>
> + /**
> + * Set ops to default_ehci_ops, ehci_hcd_init should call
> + * ehci_set_controller_priv to change any of these function pointers.
> + */
> + ctrl->ops = default_ehci_ops;
> +
OK what I missed is that lots of things call ehci_hcd_init(). I only
changed a few to call ehci_set_controller_priv().
> rc = ehci_hcd_init(index, init, &ctrl->hccr, &ctrl->hcor);
> if (rc)
> return rc;
> --
> 1.7.9.5
>
Regards,
Simon
More information about the U-Boot
mailing list