lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4C600171.5020405@canonical.com>
Date:	Mon, 09 Aug 2010 21:24:01 +0800
From:	Bryan Wu <bryan.wu@...onical.com>
To:	felipe.balbi@...ia.com, linux-usb@...r.kernel.org
CC:	david-b@...bell.net, kernel-team@...ts.ubuntu.com,
	linux-kernel@...r.kernel.org, ricardo.salveti@...onical.com,
	linux-omap@...r.kernel.org
Subject: Re: [PATCH] musb: move usb_add_hcd to the core init code from gadget
 code (v2)

Felipe,

Any comments on this patch?

Thanks a lot,
-Bryan


On 07/23/2010 10:36 PM, Bryan Wu wrote:
> BugLink: http://bugs.launchpad.net/bugs/608312
>
> v2:
> fix the building error on latest 2.6.35-rc kernel, since v1 was generated in
> 2.6.33 kernel.
>
> v1:
> usb_add_hcd was only called when we insmod the gadget class module or built-in
> that gadget class driver. If musb is configured as OTG controller, we need to
> insmod or built-in gadget class driver to make our Host mode fucntion works.
>
> In our Ubuntu system, normally we compiled all the gadget class drivers as
> modules. Then users can insmod the gadget modules as they want. But without the
> gadget class driver running, we needs host function to support common USB
> devices.
>
> This patch fix this issue and tested on omap3 beagle board and Gumstix board.
>
> Signed-off-by: Bryan Wu<bryan.wu@...onical.com>
> ---
>   drivers/usb/musb/musb_core.c   |   13 +++++--------
>   drivers/usb/musb/musb_gadget.c |   18 ------------------
>   2 files changed, 5 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
> index 3b795c5..1b6d74c 100644
> --- a/drivers/usb/musb/musb_core.c
> +++ b/drivers/usb/musb/musb_core.c
> @@ -1583,14 +1583,6 @@ irqreturn_t musb_interrupt(struct musb *musb)
>   		(devctl&  MUSB_DEVCTL_HM) ? "host" : "peripheral",
>   		musb->int_usb, musb->int_tx, musb->int_rx);
>
> -#ifdef CONFIG_USB_GADGET_MUSB_HDRC
> -	if (is_otg_enabled(musb) || is_peripheral_enabled(musb))
> -		if (!musb->gadget_driver) {
> -			DBG(5, "No gadget driver loaded\n");
> -			return IRQ_HANDLED;
> -		}
> -#endif
> -
>   	/* the core can interrupt us for multiple reasons; docs have
>   	 * a generic interrupt flowchart to follow
>   	 */
> @@ -2128,6 +2120,11 @@ bad_config:
>
>   		status = musb_gadget_setup(musb);
>
> +		if (is_otg_enabled(musb)) {
> +			status = usb_add_hcd(musb_to_hcd(musb), -1, 0);
> +			musb_start(musb);
> +		}
> +
>   		DBG(1, "%s mode, status %d, dev%02x\n",
>   			is_otg_enabled(musb) ? "OTG" : "PERIPHERAL",
>   			status,
> diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
> index 6fca870..9e55534 100644
> --- a/drivers/usb/musb/musb_gadget.c
> +++ b/drivers/usb/musb/musb_gadget.c
> @@ -1761,24 +1761,6 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
>   		otg_set_peripheral(musb->xceiv,&musb->g);
>
>   		spin_unlock_irqrestore(&musb->lock, flags);
> -
> -		if (is_otg_enabled(musb)) {
> -			DBG(3, "OTG startup...\n");
> -
> -			/* REVISIT:  funcall to other code, which also
> -			 * handles power budgeting ... this way also
> -			 * ensures HdrcStart is indirectly called.
> -			 */
> -			retval = usb_add_hcd(musb_to_hcd(musb), -1, 0);
> -			if (retval<  0) {
> -				DBG(1, "add_hcd failed, %d\n", retval);
> -				spin_lock_irqsave(&musb->lock, flags);
> -				otg_set_peripheral(musb->xceiv, NULL);
> -				musb->gadget_driver = NULL;
> -				musb->g.dev.driver = NULL;
> -				spin_unlock_irqrestore(&musb->lock, flags);
> -			}
> -		}
>   	}
>
>   	return retval;

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ