All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Balbi <felipe.balbi@nokia.com>
To: Felipe Balbi <felipe.balbi@nokia.com>
Cc: ext Peter Barada <peterb@logicpd.com>,
	"Pandita, Vikram" <vikram.pandita@ti.com>,
	"Gadiyar, Anand" <gadiyar@ti.com>,
	linux-omap <linux-omap@vger.kernel.org>
Subject: Re: Question regarding MUSB and dynamic fifo sizing
Date: Sat, 8 Aug 2009 10:17:05 +0300	[thread overview]
Message-ID: <20090808071705.GA11844@nokia.com> (raw)
In-Reply-To: <20090808064313.GA11613@nokia.com>

Hi,

On Sat, Aug 08, 2009 at 09:43:13AM +0300, Felipe Balbi wrote:
> On Fri, Aug 07, 2009 at 10:17:12PM +0200, Balbi Felipe (Nokia-D/Helsinki) wrote:
> > On Fri, Aug 07, 2009 at 09:22:33PM +0200, ext Peter Barada wrote:
> > > Someting strange is going on.  If I boot with the MUSB->OTG adapter ->
> > > thumbdrive plugged in, and then modprobe the driver, it finds the
> > > thumbdrive.  I can then remove/reinsert the OTG adapter -> thumbdrive
> > > multiple times, and each time it is enumerated.
> > > 
> > > If I boot w/o the OTG adapter -> thumbdrive plugged in, modprobe the
> > > musb driver, and then plug in the OTG adaptor ->thumbdrive, it is not
> > > enumerated.
> > > 
> > > Any idea why I need the OTG adapter -> thumbdrive plugged in at kernel
> > > boot for it to enumerate the thumbdrive?
> > 
> > which board are you using ?
> 
> ok, got you. it's 35xx-based with twl4030.
> 
> when you plug the micro-a cable, see on drivers/usb/otg/twl4030-usb.c
> what happens. You should have a print about the link status, see if that
> is ID.
> 
> Then try something like this patch:
> 
> diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
> index 9e3e7a5..4bc5b7f 100644
> --- a/drivers/usb/otg/twl4030-usb.c
> +++ b/drivers/usb/otg/twl4030-usb.c
> @@ -246,6 +246,8 @@ enum linkstat {
>  };
>  
>  struct twl4030_usb {
> +	/* used for driving or not vbus */
> +	struct work_struct	work;
>  	struct otg_transceiver	otg;
>  	struct device		*dev;

forgot to add the drive_vbus field here. Better patch right below

====== cut here =====

diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
index 9e3e7a5..2a2cc8e 100644
--- a/drivers/usb/otg/twl4030-usb.c
+++ b/drivers/usb/otg/twl4030-usb.c
@@ -246,6 +246,8 @@ enum linkstat {
 };
 
 struct twl4030_usb {
+	/* used for driving or not vbus */
+	struct work_struct	work;
 	struct otg_transceiver	otg;
 	struct device		*dev;
 
@@ -264,6 +266,7 @@ struct twl4030_usb {
 	u8			linkstat;
 	u8			asleep;
 	bool			irq_enabled;
+	bool			drive_vbus;
 };
 
 /* internal define on top of container_of */
@@ -347,6 +350,18 @@ twl4030_usb_clear_bits(struct twl4030_usb *twl, u8 reg, u8 bits)
 
 /*-------------------------------------------------------------------------*/
 
+static void twl4030_vbus_work(struct work_struct *work)
+{
+	struct twl4030_usb	*twl = container_of(work, twl4030_usb, work);
+
+	if (twl->driver_vbus)
+		(void) twl4030_usb_set_bits(twl, TWL4030_OTG_CTRL,
+				TWL4030_OTG_DRVVBUS);
+	else
+		(void) twl4030_usb_set_bits(twl, TWL4030_OTG_CTRL,
+				TWL4030_OTG_DRVVBUS);
+}
+
 static enum linkstat twl4030_usb_linkstat(struct twl4030_usb *twl)
 {
 	int	status;
@@ -386,12 +401,16 @@ static enum linkstat twl4030_usb_linkstat(struct twl4030_usb *twl)
 	if (linkstat == USB_LINK_ID) {
 		twl->otg.default_a = true;
 		twl->otg.state = OTG_STATE_A_IDLE;
+		twl->drive_vbus = true;
 	} else {
 		twl->otg.default_a = false;
 		twl->otg.state = OTG_STATE_B_IDLE;
+		twl->drive_vbus = false;
 	}
 	spin_unlock_irq(&twl->lock);
 
+	schedule_work(&twl->vbus_work);
+
 	return linkstat;
 }
 
@@ -668,6 +687,8 @@ static int __devinit twl4030_usb_probe(struct platform_device *pdev)
 	if (!twl)
 		return -ENOMEM;
 
+	INIT_WORK(&twl->work, twl4030_vbus_work);
+
 	twl->dev		= &pdev->dev;
 	twl->irq		= platform_get_irq(pdev, 0);
 	twl->otg.dev		= twl->dev;

-- 
balbi

  reply	other threads:[~2009-08-08  7:16 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-06 20:10 Question regarding MUSB and dynamic fifo sizing Peter Barada
2009-08-06 20:11 ` Gadiyar, Anand
2009-08-07 17:23   ` Peter Barada
2009-08-07 17:25     ` Pandita, Vikram
2009-08-07 17:55       ` Peter Barada
2009-08-07 19:22       ` Peter Barada
2009-08-07 20:17         ` Felipe Balbi
2009-08-08  6:43           ` Felipe Balbi
2009-08-08  7:17             ` Felipe Balbi [this message]
2009-08-10 14:33               ` Peter Barada
2009-08-10 16:16                 ` Felipe Balbi
2009-08-10 17:00                   ` Peter Barada
2009-08-10 17:02                     ` Felipe Balbi
2009-08-10 17:28                       ` Peter Barada
2009-08-10 18:48                         ` Felipe Balbi
2009-08-10 20:42                           ` Peter Barada
2009-08-11  6:33                             ` Felipe Balbi
2009-08-11 15:21                               ` Peter Barada
2009-08-11 20:51                                 ` Felipe Balbi
2009-08-11 21:17                                   ` Peter Barada
2009-08-11 21:17                                     ` Felipe Balbi
2009-08-20 16:29                                       ` Peter Barada
2009-08-08  3:04         ` Gupta, Ajay Kumar
2009-08-08  5:03           ` Pandita, Vikram

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090808071705.GA11844@nokia.com \
    --to=felipe.balbi@nokia.com \
    --cc=gadiyar@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=peterb@logicpd.com \
    --cc=vikram.pandita@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.