* usb, davinci: usb 2.0 problem on an am1808 based board
[not found] ` <4EC0F87B.4010104@denx.de>
@ 2012-05-04 10:10 ` Heiko Schocher
2012-05-17 6:37 ` Heiko Schocher
0 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2012-05-04 10:10 UTC (permalink / raw)
To: linux-arm-kernel
Hello,
a while ago (see discussion here:
http://comments.gmane.org/gmane.linux.usb.general/54505), I found this
"USB timing Bug" on an am1808 based board:
Heiko Schocher wrote:
> Hello Sergei,
[...]
> Sergei Shtylyov wrote:
>> Hello.
>>
>> On 11.11.2011 11:19, Felipe Balbi wrote:
>>
>>>> I try to bring up usb 2.0 support on an am1808 based
>>>> board and Linux version 3.1.0-rc10 and I am facing
>>>> some issues:
[...]
>>>> But if I add in drivers/usb/musb/da8xx.c
>>>> da8xx_musb_interrupt() a 10ms delay befor the
>>>> "if (status& (DA8XX_INTR_DRVVBUS<< DA8XX_INTR_USB_SHIFT)) {"
>>>> line usb works fine!
>>>> It also works without this timeout if I change the
>>>> "dev_dbg(musb->controller, "USB IRQ %08x\n", status);"
>>>> to
>>>> "printk(musb->controller, "USB IRQ %08x\n", status);"
>>>>
>>>> -> some timing issue, but I have no idea why!
>>>> (Maybe you have an idea?)
>>> unfortunately I don't know any details about DaVinci.
>> AM1808 is not exactly DaVinci, to be precise...
>>
>>> Sergei, are you able to help on this question ?
>> Maybe. :-)
>
> I hope it ;-)
now I digged deeper and found this patch, which solves the
problem (without adding a 10 ms delay):
-----------------------------
diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
index d32aa4d..6a6b17b 100644
--- a/drivers/usb/musb/da8xx.c
+++ b/drivers/usb/musb/da8xx.c
@@ -297,6 +297,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
unsigned long flags;
irqreturn_t ret = IRQ_NONE;
u32 status;
+ int flag = 1;
spin_lock_irqsave(&musb->lock, flags);
@@ -368,6 +363,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
musb->xceiv->default_a = 0;
musb->xceiv->state = OTG_STATE_B_IDLE;
portstate(musb->port1_status &= ~USB_PORT_STAT_POWER);
+ flag = 0;
}
dev_dbg(musb->controller, "VBUS %s (%s)%s, devctl %02x\n",
@@ -378,7 +374,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
ret = IRQ_HANDLED;
}
- if (musb->int_tx || musb->int_rx || musb->int_usb)
+ if (flag && ((musb->int_tx || musb->int_rx || musb->int_usb)))
ret |= musb_interrupt(musb);
eoi:
-----------------------------
If we get an DA8XX_INTR_DRVVBUS IRQ, in the else case
musb->xceiv->state = OTG_STATE_B_IDLE;
is set, but overwritten in the musb_interrupt() call, which results
in not starting the "Poll for ID change" timer ... as I am not an USB
expert, posting this intermediate result here, maybe someone have an
idea/explanation if this patch is the way to go, or what would be a
better solution?
bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
^ permalink raw reply related [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-04 10:10 ` usb, davinci: usb 2.0 problem on an am1808 based board Heiko Schocher
@ 2012-05-17 6:37 ` Heiko Schocher
2012-05-18 10:07 ` Manjunathappa, Prakash
0 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2012-05-17 6:37 UTC (permalink / raw)
To: linux-arm-kernel
Hello,
Heiko Schocher wrote:
> Hello,
>
> a while ago (see discussion here:
> http://comments.gmane.org/gmane.linux.usb.general/54505), I found this
> "USB timing Bug" on an am1808 based board:
>
> Heiko Schocher wrote:
>> Hello Sergei,
> [...]
>> Sergei Shtylyov wrote:
>>> Hello.
>>>
>>> On 11.11.2011 11:19, Felipe Balbi wrote:
>>>
>>>>> I try to bring up usb 2.0 support on an am1808 based
>>>>> board and Linux version 3.1.0-rc10 and I am facing
>>>>> some issues:
> [...]
>>>>> But if I add in drivers/usb/musb/da8xx.c
>>>>> da8xx_musb_interrupt() a 10ms delay befor the
>>>>> "if (status& (DA8XX_INTR_DRVVBUS<< DA8XX_INTR_USB_SHIFT)) {"
>>>>> line usb works fine!
>>>>> It also works without this timeout if I change the
>>>>> "dev_dbg(musb->controller, "USB IRQ %08x\n", status);"
>>>>> to
>>>>> "printk(musb->controller, "USB IRQ %08x\n", status);"
>>>>>
>>>>> -> some timing issue, but I have no idea why!
>>>>> (Maybe you have an idea?)
>>>> unfortunately I don't know any details about DaVinci.
>>> AM1808 is not exactly DaVinci, to be precise...
>>>
>>>> Sergei, are you able to help on this question ?
>>> Maybe. :-)
>> I hope it ;-)
>
> now I digged deeper and found this patch, which solves the
> problem (without adding a 10 ms delay):
>
> -----------------------------
> diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
> index d32aa4d..6a6b17b 100644
> --- a/drivers/usb/musb/da8xx.c
> +++ b/drivers/usb/musb/da8xx.c
> @@ -297,6 +297,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
> unsigned long flags;
> irqreturn_t ret = IRQ_NONE;
> u32 status;
> + int flag = 1;
>
> spin_lock_irqsave(&musb->lock, flags);
>
> @@ -368,6 +363,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
> musb->xceiv->default_a = 0;
> musb->xceiv->state = OTG_STATE_B_IDLE;
> portstate(musb->port1_status &= ~USB_PORT_STAT_POWER);
> + flag = 0;
> }
>
> dev_dbg(musb->controller, "VBUS %s (%s)%s, devctl %02x\n",
> @@ -378,7 +374,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
> ret = IRQ_HANDLED;
> }
>
> - if (musb->int_tx || musb->int_rx || musb->int_usb)
> + if (flag && ((musb->int_tx || musb->int_rx || musb->int_usb)))
> ret |= musb_interrupt(musb);
>
> eoi:
> -----------------------------
>
> If we get an DA8XX_INTR_DRVVBUS IRQ, in the else case
>
> musb->xceiv->state = OTG_STATE_B_IDLE;
>
> is set, but overwritten in the musb_interrupt() call, which results
> in not starting the "Poll for ID change" timer ... as I am not an USB
> expert, posting this intermediate result here, maybe someone have an
> idea/explanation if this patch is the way to go, or what would be a
> better solution?
ping? Some comments/ideas?
bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
^ permalink raw reply [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-17 6:37 ` Heiko Schocher
@ 2012-05-18 10:07 ` Manjunathappa, Prakash
2012-05-18 11:27 ` Sergei Shtylyov
2012-05-21 6:10 ` Heiko Schocher
0 siblings, 2 replies; 10+ messages in thread
From: Manjunathappa, Prakash @ 2012-05-18 10:07 UTC (permalink / raw)
To: linux-arm-kernel
Hi Heiko,
I do not know how putting delay helped MSC device detection.
Can you please check if MUSB is coming up in "b_idle" state(by
$cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode)?
State should move to b_peripheral on connecting gadget cable.
If you connect MSC device via mini-A connector, state should change to "a_host".
OTG timer is responsible for above state changes, can you please check if below
changes are present?
diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index 4da7492..a1a692e 100644
--- a/drivers/usb/musb/da8xx.c
+++ b/drivers/usb/musb/da8xx.c
@@ -76,6 +76,7 @@
#define DA8XX_INTR_TX_SHIFT 0
#define DA8XX_INTR_TX_MASK (DA8XX_USB_TX_EP_MASK << DA8XX_INTR_TX_SHIFT)
+#define A_WAIT_BCON_TIMEOUT 1100 /* in ms */
#define DA8XX_MENTOR_CORE_OFFSET 0x400
#define CFGCHIP2 IO_ADDRESS(DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP2_REG)
@@ -443,6 +444,7 @@ static int da8xx_musb_init(struct musb *musb)
rev, __raw_readl(CFGCHIP2),
musb_readb(reg_base, DA8XX_USB_CTRL_REG));
+ musb->a_wait_bcon = A_WAIT_BCON_TIMEOUT;
musb->isr = da8xx_musb_interrupt;
return 0;
fail:
Thanks,
Prakash
On Thu, May 17, 2012 at 12:07:23, Heiko Schocher wrote:
> Hello,
>
> Heiko Schocher wrote:
> > Hello,
> >
> > a while ago (see discussion here:
> > http://comments.gmane.org/gmane.linux.usb.general/54505), I found this
> > "USB timing Bug" on an am1808 based board:
> >
> > Heiko Schocher wrote:
> >> Hello Sergei,
> > [...]
> >> Sergei Shtylyov wrote:
> >>> Hello.
> >>>
> >>> On 11.11.2011 11:19, Felipe Balbi wrote:
> >>>
> >>>>> I try to bring up usb 2.0 support on an am1808 based
> >>>>> board and Linux version 3.1.0-rc10 and I am facing
> >>>>> some issues:
> > [...]
> >>>>> But if I add in drivers/usb/musb/da8xx.c
> >>>>> da8xx_musb_interrupt() a 10ms delay befor the
> >>>>> "if (status& (DA8XX_INTR_DRVVBUS<< DA8XX_INTR_USB_SHIFT)) {"
> >>>>> line usb works fine!
> >>>>> It also works without this timeout if I change the
> >>>>> "dev_dbg(musb->controller, "USB IRQ %08x\n", status);"
> >>>>> to
> >>>>> "printk(musb->controller, "USB IRQ %08x\n", status);"
> >>>>>
> >>>>> -> some timing issue, but I have no idea why!
> >>>>> (Maybe you have an idea?)
> >>>> unfortunately I don't know any details about DaVinci.
> >>> AM1808 is not exactly DaVinci, to be precise...
> >>>
> >>>> Sergei, are you able to help on this question ?
> >>> Maybe. :-)
> >> I hope it ;-)
> >
> > now I digged deeper and found this patch, which solves the
> > problem (without adding a 10 ms delay):
> >
> > -----------------------------
> > diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
> > index d32aa4d..6a6b17b 100644
> > --- a/drivers/usb/musb/da8xx.c
> > +++ b/drivers/usb/musb/da8xx.c
> > @@ -297,6 +297,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
> > unsigned long flags;
> > irqreturn_t ret = IRQ_NONE;
> > u32 status;
> > + int flag = 1;
> >
> > spin_lock_irqsave(&musb->lock, flags);
> >
> > @@ -368,6 +363,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
> > musb->xceiv->default_a = 0;
> > musb->xceiv->state = OTG_STATE_B_IDLE;
> > portstate(musb->port1_status &= ~USB_PORT_STAT_POWER);
> > + flag = 0;
> > }
> >
> > dev_dbg(musb->controller, "VBUS %s (%s)%s, devctl %02x\n",
> > @@ -378,7 +374,7 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
> > ret = IRQ_HANDLED;
> > }
> >
> > - if (musb->int_tx || musb->int_rx || musb->int_usb)
> > + if (flag && ((musb->int_tx || musb->int_rx || musb->int_usb)))
> > ret |= musb_interrupt(musb);
> >
> > eoi:
> > -----------------------------
> >
> > If we get an DA8XX_INTR_DRVVBUS IRQ, in the else case
> >
> > musb->xceiv->state = OTG_STATE_B_IDLE;
> >
> > is set, but overwritten in the musb_interrupt() call, which results
> > in not starting the "Poll for ID change" timer ... as I am not an USB
> > expert, posting this intermediate result here, maybe someone have an
> > idea/explanation if this patch is the way to go, or what would be a
> > better solution?
^ permalink raw reply [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-18 10:07 ` Manjunathappa, Prakash
@ 2012-05-18 11:27 ` Sergei Shtylyov
2012-05-21 10:12 ` Manjunathappa, Prakash
2012-05-21 6:10 ` Heiko Schocher
1 sibling, 1 reply; 10+ messages in thread
From: Sergei Shtylyov @ 2012-05-18 11:27 UTC (permalink / raw)
To: linux-arm-kernel
Hello.
On 18-05-2012 14:07, Manjunathappa, Prakash wrote:
> I do not know how putting delay helped MSC device detection.
> Can you please check if MUSB is coming up in "b_idle" state(by
> $cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode)?
> State should move to b_peripheral on connecting gadget cable.
> If you connect MSC device via mini-A connector, state should change to "a_host".
> OTG timer is responsible for above state changes, can you please check if below
> changes are present?
> diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index 4da7492..a1a692e 100644
> --- a/drivers/usb/musb/da8xx.c
> +++ b/drivers/usb/musb/da8xx.c
> @@ -76,6 +76,7 @@
> #define DA8XX_INTR_TX_SHIFT 0
> #define DA8XX_INTR_TX_MASK (DA8XX_USB_TX_EP_MASK<< DA8XX_INTR_TX_SHIFT)
>
> +#define A_WAIT_BCON_TIMEOUT 1100 /* in ms */
> #define DA8XX_MENTOR_CORE_OFFSET 0x400
>
> #define CFGCHIP2 IO_ADDRESS(DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP2_REG)
> @@ -443,6 +444,7 @@ static int da8xx_musb_init(struct musb *musb)
> rev, __raw_readl(CFGCHIP2),
> musb_readb(reg_base, DA8XX_USB_CTRL_REG));
>
> + musb->a_wait_bcon = A_WAIT_BCON_TIMEOUT;
> musb->isr = da8xx_musb_interrupt;
> return 0;
> fail:
This change shouldn't be needed as musb->a_wait_bcon is set in
musb_core.c::allocate_instance().
> Thanks,
> Prakash
WBR, Sergei
^ permalink raw reply [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-18 10:07 ` Manjunathappa, Prakash
2012-05-18 11:27 ` Sergei Shtylyov
@ 2012-05-21 6:10 ` Heiko Schocher
2012-05-21 10:18 ` Manjunathappa, Prakash
1 sibling, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2012-05-21 6:10 UTC (permalink / raw)
To: linux-arm-kernel
Hello Manjunathappa,
Manjunathappa, Prakash wrote:
> Hi Heiko,
>
> I do not know how putting delay helped MSC device detection.
> Can you please check if MUSB is coming up in "b_idle" state(by
> $cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode)?
> State should move to b_peripheral on connecting gadget cable.
We have connected the USB0_ID pin to ground -> host only mode, so
I could not try this.
> If you connect MSC device via mini-A connector, state should change to "a_host".
> OTG timer is responsible for above state changes, can you please check if below
> changes are present?
> diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index 4da7492..a1a692e 100644
> --- a/drivers/usb/musb/da8xx.c
> +++ b/drivers/usb/musb/da8xx.c
> @@ -76,6 +76,7 @@
> #define DA8XX_INTR_TX_SHIFT 0
> #define DA8XX_INTR_TX_MASK (DA8XX_USB_TX_EP_MASK << DA8XX_INTR_TX_SHIFT)
>
> +#define A_WAIT_BCON_TIMEOUT 1100 /* in ms */
> #define DA8XX_MENTOR_CORE_OFFSET 0x400
>
> #define CFGCHIP2 IO_ADDRESS(DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP2_REG)
> @@ -443,6 +444,7 @@ static int da8xx_musb_init(struct musb *musb)
> rev, __raw_readl(CFGCHIP2),
> musb_readb(reg_base, DA8XX_USB_CTRL_REG));
>
> + musb->a_wait_bcon = A_WAIT_BCON_TIMEOUT;
> musb->isr = da8xx_musb_interrupt;
> return 0;
> fail:
No, this change is not in current mainline ...
Added this patch, and I get:
$ make -s uImage
drivers/usb/musb/da8xx.c: In function 'da8xx_musb_init':
drivers/usb/musb/da8xx.c:448:22: error: 'A_WAIT_BCON_TIMEOUT' undeclared (first use in this function)
drivers/usb/musb/da8xx.c:448:22: note: each undeclared identifier is reported only once for each function it appears in
make[3]: *** [drivers/usb/musb/da8xx.o] Error 1
make[2]: *** [drivers/usb/musb] Error 2
make[1]: *** [drivers/usb] Error 2
make: *** [drivers] Error 2
$
Do you mean
musb->a_wait_bcon = OTG_TIME_A_WAIT_BCON;
? This is setup in musb_core.c::allocate_instance() as Sergei Shtylyov
already commented ... nevertheless tried with this define your patch,
and my USB stick gets detected too...
bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
^ permalink raw reply [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-18 11:27 ` Sergei Shtylyov
@ 2012-05-21 10:12 ` Manjunathappa, Prakash
0 siblings, 0 replies; 10+ messages in thread
From: Manjunathappa, Prakash @ 2012-05-21 10:12 UTC (permalink / raw)
To: linux-arm-kernel
Hi Sergei,
On Fri, May 18, 2012 at 16:57:41, Sergei Shtylyov wrote:
> Hello.
>
> On 18-05-2012 14:07, Manjunathappa, Prakash wrote:
>
> > I do not know how putting delay helped MSC device detection.
> > Can you please check if MUSB is coming up in "b_idle" state(by
> > $cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode)?
> > State should move to b_peripheral on connecting gadget cable.
> > If you connect MSC device via mini-A connector, state should change to "a_host".
> > OTG timer is responsible for above state changes, can you please check if below
> > changes are present?
> > diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index 4da7492..a1a692e 100644
> > --- a/drivers/usb/musb/da8xx.c
> > +++ b/drivers/usb/musb/da8xx.c
> > @@ -76,6 +76,7 @@
> > #define DA8XX_INTR_TX_SHIFT 0
> > #define DA8XX_INTR_TX_MASK (DA8XX_USB_TX_EP_MASK<< DA8XX_INTR_TX_SHIFT)
> >
> > +#define A_WAIT_BCON_TIMEOUT 1100 /* in ms */
> > #define DA8XX_MENTOR_CORE_OFFSET 0x400
> >
> > #define CFGCHIP2 IO_ADDRESS(DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP2_REG)
> > @@ -443,6 +444,7 @@ static int da8xx_musb_init(struct musb *musb)
> > rev, __raw_readl(CFGCHIP2),
> > musb_readb(reg_base, DA8XX_USB_CTRL_REG));
> >
> > + musb->a_wait_bcon = A_WAIT_BCON_TIMEOUT;
> > musb->isr = da8xx_musb_interrupt;
> > return 0;
> > fail:
>
> This change shouldn't be needed as musb->a_wait_bcon is set in
> musb_core.c::allocate_instance().
>
Yes, It worked even without above change.
Thanks,
Prakash
^ permalink raw reply [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-21 6:10 ` Heiko Schocher
@ 2012-05-21 10:18 ` Manjunathappa, Prakash
2012-05-22 7:22 ` Heiko Schocher
0 siblings, 1 reply; 10+ messages in thread
From: Manjunathappa, Prakash @ 2012-05-21 10:18 UTC (permalink / raw)
To: linux-arm-kernel
Hi Heiko,
On Mon, May 21, 2012 at 11:40:33, Heiko Schocher wrote:
> Hello Manjunathappa,
>
> Manjunathappa, Prakash wrote:
> > Hi Heiko,
> >
> > I do not know how putting delay helped MSC device detection.
> > Can you please check if MUSB is coming up in "b_idle" state(by
> > $cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode)?
> > State should move to b_peripheral on connecting gadget cable.
>
> We have connected the USB0_ID pin to ground -> host only mode, so
> I could not try this.
>
Ok, So it is coming up in which state, "$cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode"?
> > If you connect MSC device via mini-A connector, state should change to "a_host".
> > OTG timer is responsible for above state changes, can you please check if below
> > changes are present?
> > diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index 4da7492..a1a692e 100644
> > --- a/drivers/usb/musb/da8xx.c
> > +++ b/drivers/usb/musb/da8xx.c
> > @@ -76,6 +76,7 @@
> > #define DA8XX_INTR_TX_SHIFT 0
> > #define DA8XX_INTR_TX_MASK (DA8XX_USB_TX_EP_MASK << DA8XX_INTR_TX_SHIFT)
> >
> > +#define A_WAIT_BCON_TIMEOUT 1100 /* in ms */
> > #define DA8XX_MENTOR_CORE_OFFSET 0x400
> >
> > #define CFGCHIP2 IO_ADDRESS(DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP2_REG)
> > @@ -443,6 +444,7 @@ static int da8xx_musb_init(struct musb *musb)
> > rev, __raw_readl(CFGCHIP2),
> > musb_readb(reg_base, DA8XX_USB_CTRL_REG));
> >
> > + musb->a_wait_bcon = A_WAIT_BCON_TIMEOUT;
> > musb->isr = da8xx_musb_interrupt;
> > return 0;
> > fail:
>
> No, this change is not in current mainline ...
>
> Added this patch, and I get:
>
> $ make -s uImage
> drivers/usb/musb/da8xx.c: In function 'da8xx_musb_init':
> drivers/usb/musb/da8xx.c:448:22: error: 'A_WAIT_BCON_TIMEOUT' undeclared (first use in this function)
> drivers/usb/musb/da8xx.c:448:22: note: each undeclared identifier is reported only once for each function it appears in
> make[3]: *** [drivers/usb/musb/da8xx.o] Error 1
> make[2]: *** [drivers/usb/musb] Error 2
> make[1]: *** [drivers/usb] Error 2
> make: *** [drivers] Error 2
> $
>
> Do you mean
>
> musb->a_wait_bcon = OTG_TIME_A_WAIT_BCON;
>
> ? This is setup in musb_core.c::allocate_instance() as Sergei Shtylyov
> already commented ... nevertheless tried with this define your patch,
> and my USB stick gets detected too...
>
Does that mean issue got fixed or Do you still have delay in da8xx_musb_interrupt handler?
Thanks,
Prakash
^ permalink raw reply [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-21 10:18 ` Manjunathappa, Prakash
@ 2012-05-22 7:22 ` Heiko Schocher
2012-05-29 14:22 ` Heiko Schocher
0 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2012-05-22 7:22 UTC (permalink / raw)
To: linux-arm-kernel
Hello Manjunathappa,
Manjunathappa, Prakash wrote:
> Hi Heiko,
>
> On Mon, May 21, 2012 at 11:40:33, Heiko Schocher wrote:
>> Hello Manjunathappa,
>>
>> Manjunathappa, Prakash wrote:
>>> Hi Heiko,
>>>
>>> I do not know how putting delay helped MSC device detection.
>>> Can you please check if MUSB is coming up in "b_idle" state(by
>>> $cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode)?
>>> State should move to b_peripheral on connecting gadget cable.
>> We have connected the USB0_ID pin to ground -> host only mode, so
>> I could not try this.
>>
>
> Ok, So it is coming up in which state, "$cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode"?
without the delay in da8xx_musb_interrupt() and the
+ musb->a_wait_bcon = OTG_TIME_A_WAIT_BCON;
change:
booting Linux with USB stick attached shows:
root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
a_host
root at armv5te:~#
booting Linux without USB stick attached:
root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
a_wait_vrise
root at armv5te:~#
and connecting an usb stick:
root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
a_host
root at armv5te:~#
>>> If you connect MSC device via mini-A connector, state should change to "a_host".
>>> OTG timer is responsible for above state changes, can you please check if below
>>> changes are present?
>>> diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index 4da7492..a1a692e 100644
>>> --- a/drivers/usb/musb/da8xx.c
>>> +++ b/drivers/usb/musb/da8xx.c
>>> @@ -76,6 +76,7 @@
>>> #define DA8XX_INTR_TX_SHIFT 0
>>> #define DA8XX_INTR_TX_MASK (DA8XX_USB_TX_EP_MASK << DA8XX_INTR_TX_SHIFT)
>>>
>>> +#define A_WAIT_BCON_TIMEOUT 1100 /* in ms */
>>> #define DA8XX_MENTOR_CORE_OFFSET 0x400
>>>
>>> #define CFGCHIP2 IO_ADDRESS(DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP2_REG)
>>> @@ -443,6 +444,7 @@ static int da8xx_musb_init(struct musb *musb)
>>> rev, __raw_readl(CFGCHIP2),
>>> musb_readb(reg_base, DA8XX_USB_CTRL_REG));
>>>
>>> + musb->a_wait_bcon = A_WAIT_BCON_TIMEOUT;
>>> musb->isr = da8xx_musb_interrupt;
>>> return 0;
>>> fail:
>> No, this change is not in current mainline ...
>>
>> Added this patch, and I get:
>>
>> $ make -s uImage
>> drivers/usb/musb/da8xx.c: In function 'da8xx_musb_init':
>> drivers/usb/musb/da8xx.c:448:22: error: 'A_WAIT_BCON_TIMEOUT' undeclared (first use in this function)
>> drivers/usb/musb/da8xx.c:448:22: note: each undeclared identifier is reported only once for each function it appears in
>> make[3]: *** [drivers/usb/musb/da8xx.o] Error 1
>> make[2]: *** [drivers/usb/musb] Error 2
>> make[1]: *** [drivers/usb] Error 2
>> make: *** [drivers] Error 2
>> $
>>
>> Do you mean
>>
>> musb->a_wait_bcon = OTG_TIME_A_WAIT_BCON;
>>
>> ? This is setup in musb_core.c::allocate_instance() as Sergei Shtylyov
>> already commented ... nevertheless tried with this define your patch,
>> and my USB stick gets detected too...
>>
>
> Does that mean issue got fixed or Do you still have delay in da8xx_musb_interrupt handler?
Without the delay in the da8xx_musb_interrupt() ...
bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
^ permalink raw reply [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-22 7:22 ` Heiko Schocher
@ 2012-05-29 14:22 ` Heiko Schocher
2012-06-27 4:36 ` Heiko Schocher
0 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2012-05-29 14:22 UTC (permalink / raw)
To: linux-arm-kernel
Hello Manjunathappa,
On 22.05.2012 09:22, Heiko Schocher wrote:
> Hello Manjunathappa,
>
> Manjunathappa, Prakash wrote:
>> Hi Heiko,
>>
>> On Mon, May 21, 2012 at 11:40:33, Heiko Schocher wrote:
>>> Hello Manjunathappa,
>>>
>>> Manjunathappa, Prakash wrote:
>>>> Hi Heiko,
>>>>
>>>> I do not know how putting delay helped MSC device detection.
>>>> Can you please check if MUSB is coming up in "b_idle" state(by
>>>> $cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode)?
>>>> State should move to b_peripheral on connecting gadget cable.
>>> We have connected the USB0_ID pin to ground -> host only mode, so
>>> I could not try this.
>>>
>>
>> Ok, So it is coming up in which state, "$cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode"?
>
> without the delay in da8xx_musb_interrupt() and the
> + musb->a_wait_bcon = OTG_TIME_A_WAIT_BCON;
> change:
>
> booting Linux with USB stick attached shows:
> root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
> a_host
> root at armv5te:~#
>
> booting Linux without USB stick attached:
>
> root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
> a_wait_vrise
> root at armv5te:~#
>
> and connecting an usb stick:
>
> root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
> a_host
> root at armv5te:~#
>
>>>> If you connect MSC device via mini-A connector, state should change to "a_host".
>>>> OTG timer is responsible for above state changes, can you please check if below
>>>> changes are present?
>>>> diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index 4da7492..a1a692e 100644
>>>> --- a/drivers/usb/musb/da8xx.c
>>>> +++ b/drivers/usb/musb/da8xx.c
>>>> @@ -76,6 +76,7 @@
>>>> #define DA8XX_INTR_TX_SHIFT 0
>>>> #define DA8XX_INTR_TX_MASK (DA8XX_USB_TX_EP_MASK<< DA8XX_INTR_TX_SHIFT)
>>>>
>>>> +#define A_WAIT_BCON_TIMEOUT 1100 /* in ms */
>>>> #define DA8XX_MENTOR_CORE_OFFSET 0x400
>>>>
>>>> #define CFGCHIP2 IO_ADDRESS(DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP2_REG)
>>>> @@ -443,6 +444,7 @@ static int da8xx_musb_init(struct musb *musb)
>>>> rev, __raw_readl(CFGCHIP2),
>>>> musb_readb(reg_base, DA8XX_USB_CTRL_REG));
>>>>
>>>> + musb->a_wait_bcon = A_WAIT_BCON_TIMEOUT;
>>>> musb->isr = da8xx_musb_interrupt;
>>>> return 0;
>>>> fail:
>>> No, this change is not in current mainline ...
>>>
>>> Added this patch, and I get:
>>>
>>> $ make -s uImage
>>> drivers/usb/musb/da8xx.c: In function 'da8xx_musb_init':
>>> drivers/usb/musb/da8xx.c:448:22: error: 'A_WAIT_BCON_TIMEOUT' undeclared (first use in this function)
>>> drivers/usb/musb/da8xx.c:448:22: note: each undeclared identifier is reported only once for each function it appears in
>>> make[3]: *** [drivers/usb/musb/da8xx.o] Error 1
>>> make[2]: *** [drivers/usb/musb] Error 2
>>> make[1]: *** [drivers/usb] Error 2
>>> make: *** [drivers] Error 2
>>> $
>>>
>>> Do you mean
>>>
>>> musb->a_wait_bcon = OTG_TIME_A_WAIT_BCON;
>>>
>>> ? This is setup in musb_core.c::allocate_instance() as Sergei Shtylyov
>>> already commented ... nevertheless tried with this define your patch,
>>> and my USB stick gets detected too...
>>>
>>
>> Does that mean issue got fixed or Do you still have delay in da8xx_musb_interrupt handler?
>
> Without the delay in the da8xx_musb_interrupt() ...
ping!
How do we proceed here?
bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 10+ messages in thread
* usb, davinci: usb 2.0 problem on an am1808 based board
2012-05-29 14:22 ` Heiko Schocher
@ 2012-06-27 4:36 ` Heiko Schocher
0 siblings, 0 replies; 10+ messages in thread
From: Heiko Schocher @ 2012-06-27 4:36 UTC (permalink / raw)
To: linux-arm-kernel
Hello Manjunathappa,
On 29.05.2012 16:22, Heiko Schocher wrote:
> Hello Manjunathappa,
>
> On 22.05.2012 09:22, Heiko Schocher wrote:
>> Hello Manjunathappa,
>>
>> Manjunathappa, Prakash wrote:
>>> Hi Heiko,
>>>
>>> On Mon, May 21, 2012 at 11:40:33, Heiko Schocher wrote:
>>>> Hello Manjunathappa,
>>>>
>>>> Manjunathappa, Prakash wrote:
>>>>> Hi Heiko,
>>>>>
>>>>> I do not know how putting delay helped MSC device detection.
>>>>> Can you please check if MUSB is coming up in "b_idle" state(by
>>>>> $cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode)?
>>>>> State should move to b_peripheral on connecting gadget cable.
>>>> We have connected the USB0_ID pin to ground -> host only mode, so
>>>> I could not try this.
>>>>
>>>
>>> Ok, So it is coming up in which state, "$cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode"?
>>
>> without the delay in da8xx_musb_interrupt() and the
>> + musb->a_wait_bcon = OTG_TIME_A_WAIT_BCON;
>> change:
>>
>> booting Linux with USB stick attached shows:
>> root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
>> a_host
>> root at armv5te:~#
>>
>> booting Linux without USB stick attached:
>>
>> root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
>> a_wait_vrise
>> root at armv5te:~#
>>
>> and connecting an usb stick:
>>
>> root at armv5te:~# cat /sys/devices/platform/musb-da8xx/musb-hdrc/mode
>> a_host
>> root at armv5te:~#
>>
>>>>> If you connect MSC device via mini-A connector, state should change to "a_host".
>>>>> OTG timer is responsible for above state changes, can you please check if below
>>>>> changes are present?
>>>>> diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c index 4da7492..a1a692e 100644
>>>>> --- a/drivers/usb/musb/da8xx.c
>>>>> +++ b/drivers/usb/musb/da8xx.c
>>>>> @@ -76,6 +76,7 @@
>>>>> #define DA8XX_INTR_TX_SHIFT 0
>>>>> #define DA8XX_INTR_TX_MASK (DA8XX_USB_TX_EP_MASK<< DA8XX_INTR_TX_SHIFT)
>>>>>
>>>>> +#define A_WAIT_BCON_TIMEOUT 1100 /* in ms */
>>>>> #define DA8XX_MENTOR_CORE_OFFSET 0x400
>>>>>
>>>>> #define CFGCHIP2 IO_ADDRESS(DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP2_REG)
>>>>> @@ -443,6 +444,7 @@ static int da8xx_musb_init(struct musb *musb)
>>>>> rev, __raw_readl(CFGCHIP2),
>>>>> musb_readb(reg_base, DA8XX_USB_CTRL_REG));
>>>>>
>>>>> + musb->a_wait_bcon = A_WAIT_BCON_TIMEOUT;
>>>>> musb->isr = da8xx_musb_interrupt;
>>>>> return 0;
>>>>> fail:
>>>> No, this change is not in current mainline ...
>>>>
>>>> Added this patch, and I get:
>>>>
>>>> $ make -s uImage
>>>> drivers/usb/musb/da8xx.c: In function 'da8xx_musb_init':
>>>> drivers/usb/musb/da8xx.c:448:22: error: 'A_WAIT_BCON_TIMEOUT' undeclared (first use in this function)
>>>> drivers/usb/musb/da8xx.c:448:22: note: each undeclared identifier is reported only once for each function it appears in
>>>> make[3]: *** [drivers/usb/musb/da8xx.o] Error 1
>>>> make[2]: *** [drivers/usb/musb] Error 2
>>>> make[1]: *** [drivers/usb] Error 2
>>>> make: *** [drivers] Error 2
>>>> $
>>>>
>>>> Do you mean
>>>>
>>>> musb->a_wait_bcon = OTG_TIME_A_WAIT_BCON;
>>>>
>>>> ? This is setup in musb_core.c::allocate_instance() as Sergei Shtylyov
>>>> already commented ... nevertheless tried with this define your patch,
>>>> and my USB stick gets detected too...
>>>>
>>>
>>> Does that mean issue got fixed or Do you still have delay in da8xx_musb_interrupt handler?
>>
>> Without the delay in the da8xx_musb_interrupt() ...
>
> ping!
>
> How do we proceed here?
ping.
bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-06-27 4:36 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <4EBC9DF1.90604@denx.de>
[not found] ` <20111111091912.GB19090@legolas.emea.dhcp.ti.com>
[not found] ` <4EBEB29E.50705@mvista.com>
[not found] ` <4EC0F87B.4010104@denx.de>
2012-05-04 10:10 ` usb, davinci: usb 2.0 problem on an am1808 based board Heiko Schocher
2012-05-17 6:37 ` Heiko Schocher
2012-05-18 10:07 ` Manjunathappa, Prakash
2012-05-18 11:27 ` Sergei Shtylyov
2012-05-21 10:12 ` Manjunathappa, Prakash
2012-05-21 6:10 ` Heiko Schocher
2012-05-21 10:18 ` Manjunathappa, Prakash
2012-05-22 7:22 ` Heiko Schocher
2012-05-29 14:22 ` Heiko Schocher
2012-06-27 4:36 ` Heiko Schocher
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.