Hi, On Wed, Feb 19, 2014 at 05:48:49AM +0000, Peter Chen wrote: > > On Mon, Jan 20, 2014 at 10:00:15AM +0800, Li Jun wrote: > > > This patch adds HNP polling operation function for OTG fsm. > > > > > > Signed-off-by: Li Jun <b47624@xxxxxxxxxxxxx> > > > --- > > > drivers/usb/phy/phy-fsm-usb.c | 2 ++ > > > include/linux/usb/otg-fsm.h | 9 +++++++++ > > > 2 files changed, 11 insertions(+), 0 deletions(-) > > > > > > diff --git a/drivers/usb/phy/phy-fsm-usb.c > > > b/drivers/usb/phy/phy-fsm-usb.c index c47e5a6..ef91961 100644 > > > --- a/drivers/usb/phy/phy-fsm-usb.c > > > +++ b/drivers/usb/phy/phy-fsm-usb.c > > > @@ -169,6 +169,7 @@ static int otg_set_state(struct otg_fsm *fsm, enum > > usb_otg_state new_state) > > > otg_set_protocol(fsm, PROTO_HOST); > > > usb_bus_start_enum(fsm->otg->host, > > > fsm->otg->host->otg_port); > > > + otg_start_hnp_polling(fsm); > > > break; > > > case OTG_STATE_A_IDLE: > > > otg_drv_vbus(fsm, 0); > > > @@ -203,6 +204,7 @@ static int otg_set_state(struct otg_fsm *fsm, enum > > usb_otg_state new_state) > > > */ > > > if (!fsm->a_bus_req || fsm->a_suspend_req_inf) > > > otg_add_timer(fsm, A_WAIT_ENUM); > > > + otg_start_hnp_polling(fsm); > > > break; > > > case OTG_STATE_A_SUSPEND: > > > otg_drv_vbus(fsm, 1); > > > diff --git a/include/linux/usb/otg-fsm.h b/include/linux/usb/otg-fsm.h > > > index b6ba1bf..79c6ee8 100644 > > > --- a/include/linux/usb/otg-fsm.h > > > +++ b/include/linux/usb/otg-fsm.h > > > @@ -127,6 +127,7 @@ struct otg_fsm_ops { > > > void (*start_pulse)(struct otg_fsm *fsm); > > > void (*start_adp_prb)(struct otg_fsm *fsm); > > > void (*start_adp_sns)(struct otg_fsm *fsm); > > > + void (*start_hnp_polling)(struct otg_fsm *fsm); > > > > why ? HNP polling is a generic operation, is it not ? Which means you > > shouldn't need to add this function pointer here, just implement a > > generic helper function, ideally in usb-common.c > > > > Only OTG capable device will use hnp polling, why it is a generic > operation? Is this a serious question ? Look at what you're patching here. You're already patching the OTG layer so you know that *all* users are OTG capable. What I meant, however, is that the implementation of start_hnp_polling() will be the same for every HNP-capable controller, since that's just a generic USB GetStatus request. Place that in drivers/usb/usb-common.c wrapped around CONFIG_OTG ifdef and you're good to go. -- balbi
Attachment:
signature.asc
Description: Digital signature