Hi

> -----Original Message-----
> From: Peter Chen [mailto:hzpeterc...@gmail.com]
> Sent: Monday, January 25, 2016 3:46 PM
> To: Jun Li <jun...@nxp.com>
> Cc: Peter Chen <peter.c...@nxp.com>; ba...@ti.com;
> gre...@linuxfoundation.org; linux-usb@vger.kernel.org
> Subject: Re: [PATCH v5 10/10] usb: chipidea: otg: add A idle to B
> disconnect timer
> 
> On Tue, Jan 19, 2016 at 01:45:38PM +0800, Li Jun wrote:
> > B-device detects that bus is idle for more than TB_AIDL_BDIS min and
> > begins HNP by turning off pullup on DP, this allows the bus to
> > discharge to the SE0 state. This timer was missed and failed with PET
> test:
> > 6.8.5 B-UUT HNP of USB OTG and EH automated compliance plan v1.2, this
> > patch is to fix this timing issue.
> >
> > Signed-off-by: Li Jun <jun...@nxp.com>
> > ---
> >  drivers/usb/chipidea/otg_fsm.c | 12 ++++++++++--
> > drivers/usb/chipidea/otg_fsm.h |  2 ++
> >  include/linux/usb/otg-fsm.h    |  1 +
> >  3 files changed, 13 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/usb/chipidea/otg_fsm.c
> > b/drivers/usb/chipidea/otg_fsm.c index c71e5fa..71381d2 100644
> > --- a/drivers/usb/chipidea/otg_fsm.c
> > +++ b/drivers/usb/chipidea/otg_fsm.c
> > @@ -209,6 +209,7 @@ static unsigned otg_timer_ms[] = {
> >     TA_AIDL_BDIS,
> >     TB_ASE0_BRST,
> >     TA_BIDL_ADIS,
> > +   TB_AIDL_BDIS,
> >     TB_SE0_SRP,
> >     TB_SRP_FAIL,
> >     0,
> > @@ -320,6 +321,12 @@ static int a_bidl_adis_tmout(struct ci_hdrc *ci)
> >     return 0;
> >  }
> >
> > +static int b_aidl_bdis_tmout(struct ci_hdrc *ci) {
> > +   ci->fsm.a_bus_suspend = 1;
> > +   return 0;
> > +}
> > +
> >  static int b_se0_srp_tmout(struct ci_hdrc *ci)  {
> >     ci->fsm.b_se0_srp = 1;
> > @@ -364,6 +371,7 @@ static int (*otg_timer_handlers[])(struct ci_hdrc *)
> = {
> >     a_aidl_bdis_tmout,      /* A_AIDL_BDIS */
> >     b_ase0_brst_tmout,      /* B_ASE0_BRST */
> >     a_bidl_adis_tmout,      /* A_BIDL_ADIS */
> > +   b_aidl_bdis_tmout,      /* B_AIDL_BDIS */
> >     b_se0_srp_tmout,        /* B_SE0_SRP */
> >     b_srp_fail_tmout,       /* B_SRP_FAIL */
> >     NULL,                   /* A_WAIT_ENUM */
> > @@ -657,9 +665,9 @@ static void ci_otg_fsm_event(struct ci_hdrc *ci)
> >             break;
> >     case OTG_STATE_B_PERIPHERAL:
> >             if ((intr_sts & USBi_SLI) && port_conn && otg_bsess_vld) {
> > -                   fsm->a_bus_suspend = 1;
> > -                   ci_otg_queue_work(ci);
> > +                   ci_otg_add_timer(ci, B_AIDL_BDIS);
> >             } else if (intr_sts & USBi_PCI) {
> > +                   ci_otg_del_timer(ci, B_AIDL_BDIS);
> >                     if (fsm->a_bus_suspend == 1)
> >                             fsm->a_bus_suspend = 0;
> >             }
> > diff --git a/drivers/usb/chipidea/otg_fsm.h
> > b/drivers/usb/chipidea/otg_fsm.h index 2689375..9f71910 100644
> > --- a/drivers/usb/chipidea/otg_fsm.h
> > +++ b/drivers/usb/chipidea/otg_fsm.h
> > @@ -62,6 +62,8 @@
> >  /* SSEND time before SRP */
> >  #define TB_SSEND_SRP         (1500)        /* minimum 1.5 sec, 
> > section:5.1.2
> */
> >
> > +#define TB_AIDL_BDIS         (20)  /* 4ms ~ 150ms, section 5.2.1 */
> > +
> >  #ifdef CONFIG_USB_OTG_FSM
> >
> >  int ci_hdrc_otg_fsm_init(struct ci_hdrc *ci); diff --git
> > a/include/linux/usb/otg-fsm.h b/include/linux/usb/otg-fsm.h index
> > 3059a95..24198e1 100644
> > --- a/include/linux/usb/otg-fsm.h
> > +++ b/include/linux/usb/otg-fsm.h
> > @@ -60,6 +60,7 @@ enum otg_fsm_timer {
> >     A_AIDL_BDIS,
> >     B_ASE0_BRST,
> >     A_BIDL_ADIS,
> > +   B_AIDL_BDIS,
> >
> >     /* Auxiliary timers */
> >     B_SE0_SRP,
> > --
> > 1.9.1
> >
> 
> Would you split this as two patches since one is for common
> changes, but the others are for specific drivers?

Sure, I will split it to be 2 patches and send out.

Li Jun
> 
> --
> 
> Best Regards,
> Peter Chen
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to