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