Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-09-02 Thread Peter Chen
On Tue, Sep 02, 2014 at 11:08:32AM +0200, Antoine Tenart wrote:
> Hi,
> 
> On Mon, Sep 01, 2014 at 09:13:43AM +0800, Peter Chen wrote:
> > On Fri, Aug 29, 2014 at 04:25:35PM +0200, Antoine Tenart wrote:
> > > On Tue, Aug 26, 2014 at 06:22:40PM +0800, Peter Chen wrote:
> > > > On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
> > > > 
> > > > If the common usb_otg and usb_phy struct still has another's pointer, 
> > > > you
> > > > may not need to add this patch.
> > > 
> > > Except if we want to access the OTG member when not using an USB PHY.
> > 
> > If there is no USB PHY, the probe at core.c will turn error.
> 
> I meant if we use a PHY from the common PHY framework (struct phy) and
> not one from the USB one (struct usb_phy). The 'struct phy' does not
> have a pointer to an OTG structure.
> 

Ok, agree.

-- 
Best Regards,
Peter Chen
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-09-02 Thread Antoine Tenart
Hi,

On Mon, Sep 01, 2014 at 09:13:43AM +0800, Peter Chen wrote:
> On Fri, Aug 29, 2014 at 04:25:35PM +0200, Antoine Tenart wrote:
> > On Tue, Aug 26, 2014 at 06:22:40PM +0800, Peter Chen wrote:
> > > On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
> > > 
> > > If the common usb_otg and usb_phy struct still has another's pointer, you
> > > may not need to add this patch.
> > 
> > Except if we want to access the OTG member when not using an USB PHY.
> 
> If there is no USB PHY, the probe at core.c will turn error.

I meant if we use a PHY from the common PHY framework (struct phy) and
not one from the USB one (struct usb_phy). The 'struct phy' does not
have a pointer to an OTG structure.

Antoine

-- 
Antoine Ténart, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-09-02 Thread Antoine Tenart
Hi,

On Mon, Sep 01, 2014 at 09:13:43AM +0800, Peter Chen wrote:
 On Fri, Aug 29, 2014 at 04:25:35PM +0200, Antoine Tenart wrote:
  On Tue, Aug 26, 2014 at 06:22:40PM +0800, Peter Chen wrote:
   On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
   
   If the common usb_otg and usb_phy struct still has another's pointer, you
   may not need to add this patch.
  
  Except if we want to access the OTG member when not using an USB PHY.
 
 If there is no USB PHY, the probe at core.c will turn error.

I meant if we use a PHY from the common PHY framework (struct phy) and
not one from the USB one (struct usb_phy). The 'struct phy' does not
have a pointer to an OTG structure.

Antoine

-- 
Antoine Ténart, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-09-02 Thread Peter Chen
On Tue, Sep 02, 2014 at 11:08:32AM +0200, Antoine Tenart wrote:
 Hi,
 
 On Mon, Sep 01, 2014 at 09:13:43AM +0800, Peter Chen wrote:
  On Fri, Aug 29, 2014 at 04:25:35PM +0200, Antoine Tenart wrote:
   On Tue, Aug 26, 2014 at 06:22:40PM +0800, Peter Chen wrote:
On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:

If the common usb_otg and usb_phy struct still has another's pointer, 
you
may not need to add this patch.
   
   Except if we want to access the OTG member when not using an USB PHY.
  
  If there is no USB PHY, the probe at core.c will turn error.
 
 I meant if we use a PHY from the common PHY framework (struct phy) and
 not one from the USB one (struct usb_phy). The 'struct phy' does not
 have a pointer to an OTG structure.
 

Ok, agree.

-- 
Best Regards,
Peter Chen
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-08-31 Thread Peter Chen
On Fri, Aug 29, 2014 at 04:25:35PM +0200, Antoine Tenart wrote:
> Hi,
> 
> On Tue, Aug 26, 2014 at 06:22:40PM +0800, Peter Chen wrote:
> > On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
> > 
> > If the common usb_otg and usb_phy struct still has another's pointer, you
> > may not need to add this patch.
> 
> Except if we want to access the OTG member when not using an USB PHY.

If there is no USB PHY, the probe at core.c will turn error.
> 
> > > diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
> > > index 0b67d78dd953..0952d4adfa4c 100644
> > > --- a/drivers/usb/chipidea/host.c
> > > +++ b/drivers/usb/chipidea/host.c
> > > @@ -85,13 +85,11 @@ static int host_start(struct ci_hdrc *ci)
> > >   if (ret) {
> > >   goto disable_reg;
> > >   } else {
> > > - struct usb_otg *otg = ci->usb_phy->otg;
> > > + struct usb_otg *otg = >otg;
> > >  
> > >   ci->hcd = hcd;
> > > - if (otg) {
> > > - otg->host = >self;
> > > - hcd->self.otg_port = 1;
> > > - }
> > > + otg->host = >self;
> > > + hcd->self.otg_port = 1;
> > >   }
> > 
> > You may need use other way to identify if otg is supported or not
> 
> How would you do that?


ci_otg_is_fsm_mode(ci)

> 
> > > - otg->usb_phy = ci->usb_phy;
> > > - otg->gadget = >gadget;
> > > - ci->fsm.otg = otg;
> > > - ci->usb_phy->otg = ci->fsm.otg;
> > > + ci->otg.usb_phy = ci->usb_phy;
> > > + ci->fsm.otg = >otg;
> > >   ci->fsm.power_up = 1;
> > >   ci->fsm.id = hw_read_otgsc(ci, OTGSC_ID) ? 1 : 0;
> > >   ci->fsm.otg->state = OTG_STATE_UNDEFINED;
> > 
> > Why otg->gadget and ci->usb_phy->otg initialization are deleted?
> > At least, the parameters of usb_otg_state_string at your 7th patch uses it.
> 
> Sure, I'll fix this
> 
> Antoine
> 
> -- 
> Antoine Ténart, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com

-- 
Best Regards,
Peter Chen
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-08-31 Thread Peter Chen
On Fri, Aug 29, 2014 at 04:25:35PM +0200, Antoine Tenart wrote:
 Hi,
 
 On Tue, Aug 26, 2014 at 06:22:40PM +0800, Peter Chen wrote:
  On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
  
  If the common usb_otg and usb_phy struct still has another's pointer, you
  may not need to add this patch.
 
 Except if we want to access the OTG member when not using an USB PHY.

If there is no USB PHY, the probe at core.c will turn error.
 
   diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
   index 0b67d78dd953..0952d4adfa4c 100644
   --- a/drivers/usb/chipidea/host.c
   +++ b/drivers/usb/chipidea/host.c
   @@ -85,13 +85,11 @@ static int host_start(struct ci_hdrc *ci)
 if (ret) {
 goto disable_reg;
 } else {
   - struct usb_otg *otg = ci-usb_phy-otg;
   + struct usb_otg *otg = ci-otg;

 ci-hcd = hcd;
   - if (otg) {
   - otg-host = hcd-self;
   - hcd-self.otg_port = 1;
   - }
   + otg-host = hcd-self;
   + hcd-self.otg_port = 1;
 }
  
  You may need use other way to identify if otg is supported or not
 
 How would you do that?


ci_otg_is_fsm_mode(ci)

 
   - otg-usb_phy = ci-usb_phy;
   - otg-gadget = ci-gadget;
   - ci-fsm.otg = otg;
   - ci-usb_phy-otg = ci-fsm.otg;
   + ci-otg.usb_phy = ci-usb_phy;
   + ci-fsm.otg = ci-otg;
 ci-fsm.power_up = 1;
 ci-fsm.id = hw_read_otgsc(ci, OTGSC_ID) ? 1 : 0;
 ci-fsm.otg-state = OTG_STATE_UNDEFINED;
  
  Why otg-gadget and ci-usb_phy-otg initialization are deleted?
  At least, the parameters of usb_otg_state_string at your 7th patch uses it.
 
 Sure, I'll fix this
 
 Antoine
 
 -- 
 Antoine Ténart, Free Electrons
 Embedded Linux, Kernel and Android engineering
 http://free-electrons.com

-- 
Best Regards,
Peter Chen
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-08-29 Thread Antoine Tenart
Hi,

On Tue, Aug 26, 2014 at 06:22:40PM +0800, Peter Chen wrote:
> On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
> 
> If the common usb_otg and usb_phy struct still has another's pointer, you
> may not need to add this patch.

Except if we want to access the OTG member when not using an USB PHY.

> > diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
> > index 0b67d78dd953..0952d4adfa4c 100644
> > --- a/drivers/usb/chipidea/host.c
> > +++ b/drivers/usb/chipidea/host.c
> > @@ -85,13 +85,11 @@ static int host_start(struct ci_hdrc *ci)
> > if (ret) {
> > goto disable_reg;
> > } else {
> > -   struct usb_otg *otg = ci->usb_phy->otg;
> > +   struct usb_otg *otg = >otg;
> >  
> > ci->hcd = hcd;
> > -   if (otg) {
> > -   otg->host = >self;
> > -   hcd->self.otg_port = 1;
> > -   }
> > +   otg->host = >self;
> > +   hcd->self.otg_port = 1;
> > }
> 
> You may need use other way to identify if otg is supported or not

How would you do that?

> > -   otg->usb_phy = ci->usb_phy;
> > -   otg->gadget = >gadget;
> > -   ci->fsm.otg = otg;
> > -   ci->usb_phy->otg = ci->fsm.otg;
> > +   ci->otg.usb_phy = ci->usb_phy;
> > +   ci->fsm.otg = >otg;
> > ci->fsm.power_up = 1;
> > ci->fsm.id = hw_read_otgsc(ci, OTGSC_ID) ? 1 : 0;
> > ci->fsm.otg->state = OTG_STATE_UNDEFINED;
> 
> Why otg->gadget and ci->usb_phy->otg initialization are deleted?
> At least, the parameters of usb_otg_state_string at your 7th patch uses it.

Sure, I'll fix this

Antoine

-- 
Antoine Ténart, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-08-29 Thread Antoine Tenart
Hi,

On Tue, Aug 26, 2014 at 06:22:40PM +0800, Peter Chen wrote:
 On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
 
 If the common usb_otg and usb_phy struct still has another's pointer, you
 may not need to add this patch.

Except if we want to access the OTG member when not using an USB PHY.

  diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
  index 0b67d78dd953..0952d4adfa4c 100644
  --- a/drivers/usb/chipidea/host.c
  +++ b/drivers/usb/chipidea/host.c
  @@ -85,13 +85,11 @@ static int host_start(struct ci_hdrc *ci)
  if (ret) {
  goto disable_reg;
  } else {
  -   struct usb_otg *otg = ci-usb_phy-otg;
  +   struct usb_otg *otg = ci-otg;
   
  ci-hcd = hcd;
  -   if (otg) {
  -   otg-host = hcd-self;
  -   hcd-self.otg_port = 1;
  -   }
  +   otg-host = hcd-self;
  +   hcd-self.otg_port = 1;
  }
 
 You may need use other way to identify if otg is supported or not

How would you do that?

  -   otg-usb_phy = ci-usb_phy;
  -   otg-gadget = ci-gadget;
  -   ci-fsm.otg = otg;
  -   ci-usb_phy-otg = ci-fsm.otg;
  +   ci-otg.usb_phy = ci-usb_phy;
  +   ci-fsm.otg = ci-otg;
  ci-fsm.power_up = 1;
  ci-fsm.id = hw_read_otgsc(ci, OTGSC_ID) ? 1 : 0;
  ci-fsm.otg-state = OTG_STATE_UNDEFINED;
 
 Why otg-gadget and ci-usb_phy-otg initialization are deleted?
 At least, the parameters of usb_otg_state_string at your 7th patch uses it.

Sure, I'll fix this

Antoine

-- 
Antoine Ténart, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-08-26 Thread Peter Chen
On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
> Move the usb_otg member from struct usb_phy to struct ci_hdrc. Rework
> its initialization taking in account this modification.
> 

If the common usb_otg and usb_phy struct still has another's pointer, you
may not need to add this patch.

> Signed-off-by: Antoine Ténart 
> ---
>  drivers/usb/chipidea/ci.h  |  1 +
>  drivers/usb/chipidea/host.c|  8 +++-
>  drivers/usb/chipidea/otg_fsm.c | 15 ++-
>  3 files changed, 6 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
> index b2caa1772712..dac5ab6adfa2 100644
> --- a/drivers/usb/chipidea/ci.h
> +++ b/drivers/usb/chipidea/ci.h
> @@ -177,6 +177,7 @@ struct ci_hdrc {
>   struct ci_role_driver   *roles[CI_ROLE_END];
>   enum ci_rolerole;
>   boolis_otg;
> + struct usb_otg  otg;
>   struct otg_fsm  fsm;
>   struct ci_otg_fsm_timer_list*fsm_timer;
>   struct work_struct  work;
> diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
> index 0b67d78dd953..0952d4adfa4c 100644
> --- a/drivers/usb/chipidea/host.c
> +++ b/drivers/usb/chipidea/host.c
> @@ -85,13 +85,11 @@ static int host_start(struct ci_hdrc *ci)
>   if (ret) {
>   goto disable_reg;
>   } else {
> - struct usb_otg *otg = ci->usb_phy->otg;
> + struct usb_otg *otg = >otg;
>  
>   ci->hcd = hcd;
> - if (otg) {
> - otg->host = >self;
> - hcd->self.otg_port = 1;
> - }
> + otg->host = >self;
> + hcd->self.otg_port = 1;
>   }

You may need use other way to identify if otg is supported or not

>  
>   if (ci->platdata->flags & CI_HDRC_DISABLE_STREAMING)
> diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c
> index 8a64ce87364e..7eb86863fb3c 100644
> --- a/drivers/usb/chipidea/otg_fsm.c
> +++ b/drivers/usb/chipidea/otg_fsm.c
> @@ -778,20 +778,9 @@ void ci_hdrc_otg_fsm_start(struct ci_hdrc *ci)
>  int ci_hdrc_otg_fsm_init(struct ci_hdrc *ci)
>  {
>   int retval = 0;
> - struct usb_otg *otg;
>  
> - otg = devm_kzalloc(ci->dev,
> - sizeof(struct usb_otg), GFP_KERNEL);
> - if (!otg) {
> - dev_err(ci->dev,
> - "Failed to allocate usb_otg structure for ci hdrc otg!\n");
> - return -ENOMEM;
> - }
> -
> - otg->usb_phy = ci->usb_phy;
> - otg->gadget = >gadget;
> - ci->fsm.otg = otg;
> - ci->usb_phy->otg = ci->fsm.otg;
> + ci->otg.usb_phy = ci->usb_phy;
> + ci->fsm.otg = >otg;
>   ci->fsm.power_up = 1;
>   ci->fsm.id = hw_read_otgsc(ci, OTGSC_ID) ? 1 : 0;
>   ci->fsm.otg->state = OTG_STATE_UNDEFINED;

Why otg->gadget and ci->usb_phy->otg initialization are deleted?
At least, the parameters of usb_otg_state_string at your 7th patch uses it.

-- 
Best Regards,
Peter Chen
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-08-26 Thread Peter Chen
On Fri, Aug 22, 2014 at 05:50:19PM +0200, Antoine Ténart wrote:
 Move the usb_otg member from struct usb_phy to struct ci_hdrc. Rework
 its initialization taking in account this modification.
 

If the common usb_otg and usb_phy struct still has another's pointer, you
may not need to add this patch.

 Signed-off-by: Antoine Ténart antoine.ten...@free-electrons.com
 ---
  drivers/usb/chipidea/ci.h  |  1 +
  drivers/usb/chipidea/host.c|  8 +++-
  drivers/usb/chipidea/otg_fsm.c | 15 ++-
  3 files changed, 6 insertions(+), 18 deletions(-)
 
 diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
 index b2caa1772712..dac5ab6adfa2 100644
 --- a/drivers/usb/chipidea/ci.h
 +++ b/drivers/usb/chipidea/ci.h
 @@ -177,6 +177,7 @@ struct ci_hdrc {
   struct ci_role_driver   *roles[CI_ROLE_END];
   enum ci_rolerole;
   boolis_otg;
 + struct usb_otg  otg;
   struct otg_fsm  fsm;
   struct ci_otg_fsm_timer_list*fsm_timer;
   struct work_struct  work;
 diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
 index 0b67d78dd953..0952d4adfa4c 100644
 --- a/drivers/usb/chipidea/host.c
 +++ b/drivers/usb/chipidea/host.c
 @@ -85,13 +85,11 @@ static int host_start(struct ci_hdrc *ci)
   if (ret) {
   goto disable_reg;
   } else {
 - struct usb_otg *otg = ci-usb_phy-otg;
 + struct usb_otg *otg = ci-otg;
  
   ci-hcd = hcd;
 - if (otg) {
 - otg-host = hcd-self;
 - hcd-self.otg_port = 1;
 - }
 + otg-host = hcd-self;
 + hcd-self.otg_port = 1;
   }

You may need use other way to identify if otg is supported or not

  
   if (ci-platdata-flags  CI_HDRC_DISABLE_STREAMING)
 diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c
 index 8a64ce87364e..7eb86863fb3c 100644
 --- a/drivers/usb/chipidea/otg_fsm.c
 +++ b/drivers/usb/chipidea/otg_fsm.c
 @@ -778,20 +778,9 @@ void ci_hdrc_otg_fsm_start(struct ci_hdrc *ci)
  int ci_hdrc_otg_fsm_init(struct ci_hdrc *ci)
  {
   int retval = 0;
 - struct usb_otg *otg;
  
 - otg = devm_kzalloc(ci-dev,
 - sizeof(struct usb_otg), GFP_KERNEL);
 - if (!otg) {
 - dev_err(ci-dev,
 - Failed to allocate usb_otg structure for ci hdrc otg!\n);
 - return -ENOMEM;
 - }
 -
 - otg-usb_phy = ci-usb_phy;
 - otg-gadget = ci-gadget;
 - ci-fsm.otg = otg;
 - ci-usb_phy-otg = ci-fsm.otg;
 + ci-otg.usb_phy = ci-usb_phy;
 + ci-fsm.otg = ci-otg;
   ci-fsm.power_up = 1;
   ci-fsm.id = hw_read_otgsc(ci, OTGSC_ID) ? 1 : 0;
   ci-fsm.otg-state = OTG_STATE_UNDEFINED;

Why otg-gadget and ci-usb_phy-otg initialization are deleted?
At least, the parameters of usb_otg_state_string at your 7th patch uses it.

-- 
Best Regards,
Peter Chen
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-08-22 Thread Antoine Ténart
Move the usb_otg member from struct usb_phy to struct ci_hdrc. Rework
its initialization taking in account this modification.

Signed-off-by: Antoine Ténart 
---
 drivers/usb/chipidea/ci.h  |  1 +
 drivers/usb/chipidea/host.c|  8 +++-
 drivers/usb/chipidea/otg_fsm.c | 15 ++-
 3 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
index b2caa1772712..dac5ab6adfa2 100644
--- a/drivers/usb/chipidea/ci.h
+++ b/drivers/usb/chipidea/ci.h
@@ -177,6 +177,7 @@ struct ci_hdrc {
struct ci_role_driver   *roles[CI_ROLE_END];
enum ci_rolerole;
boolis_otg;
+   struct usb_otg  otg;
struct otg_fsm  fsm;
struct ci_otg_fsm_timer_list*fsm_timer;
struct work_struct  work;
diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
index 0b67d78dd953..0952d4adfa4c 100644
--- a/drivers/usb/chipidea/host.c
+++ b/drivers/usb/chipidea/host.c
@@ -85,13 +85,11 @@ static int host_start(struct ci_hdrc *ci)
if (ret) {
goto disable_reg;
} else {
-   struct usb_otg *otg = ci->usb_phy->otg;
+   struct usb_otg *otg = >otg;
 
ci->hcd = hcd;
-   if (otg) {
-   otg->host = >self;
-   hcd->self.otg_port = 1;
-   }
+   otg->host = >self;
+   hcd->self.otg_port = 1;
}
 
if (ci->platdata->flags & CI_HDRC_DISABLE_STREAMING)
diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c
index 8a64ce87364e..7eb86863fb3c 100644
--- a/drivers/usb/chipidea/otg_fsm.c
+++ b/drivers/usb/chipidea/otg_fsm.c
@@ -778,20 +778,9 @@ void ci_hdrc_otg_fsm_start(struct ci_hdrc *ci)
 int ci_hdrc_otg_fsm_init(struct ci_hdrc *ci)
 {
int retval = 0;
-   struct usb_otg *otg;
 
-   otg = devm_kzalloc(ci->dev,
-   sizeof(struct usb_otg), GFP_KERNEL);
-   if (!otg) {
-   dev_err(ci->dev,
-   "Failed to allocate usb_otg structure for ci hdrc otg!\n");
-   return -ENOMEM;
-   }
-
-   otg->usb_phy = ci->usb_phy;
-   otg->gadget = >gadget;
-   ci->fsm.otg = otg;
-   ci->usb_phy->otg = ci->fsm.otg;
+   ci->otg.usb_phy = ci->usb_phy;
+   ci->fsm.otg = >otg;
ci->fsm.power_up = 1;
ci->fsm.id = hw_read_otgsc(ci, OTGSC_ID) ? 1 : 0;
ci->fsm.otg->state = OTG_STATE_UNDEFINED;
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v3 8/9] usb: chipidea: move usb_otg into struct ci_hdrc

2014-08-22 Thread Antoine Ténart
Move the usb_otg member from struct usb_phy to struct ci_hdrc. Rework
its initialization taking in account this modification.

Signed-off-by: Antoine Ténart antoine.ten...@free-electrons.com
---
 drivers/usb/chipidea/ci.h  |  1 +
 drivers/usb/chipidea/host.c|  8 +++-
 drivers/usb/chipidea/otg_fsm.c | 15 ++-
 3 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
index b2caa1772712..dac5ab6adfa2 100644
--- a/drivers/usb/chipidea/ci.h
+++ b/drivers/usb/chipidea/ci.h
@@ -177,6 +177,7 @@ struct ci_hdrc {
struct ci_role_driver   *roles[CI_ROLE_END];
enum ci_rolerole;
boolis_otg;
+   struct usb_otg  otg;
struct otg_fsm  fsm;
struct ci_otg_fsm_timer_list*fsm_timer;
struct work_struct  work;
diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
index 0b67d78dd953..0952d4adfa4c 100644
--- a/drivers/usb/chipidea/host.c
+++ b/drivers/usb/chipidea/host.c
@@ -85,13 +85,11 @@ static int host_start(struct ci_hdrc *ci)
if (ret) {
goto disable_reg;
} else {
-   struct usb_otg *otg = ci-usb_phy-otg;
+   struct usb_otg *otg = ci-otg;
 
ci-hcd = hcd;
-   if (otg) {
-   otg-host = hcd-self;
-   hcd-self.otg_port = 1;
-   }
+   otg-host = hcd-self;
+   hcd-self.otg_port = 1;
}
 
if (ci-platdata-flags  CI_HDRC_DISABLE_STREAMING)
diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c
index 8a64ce87364e..7eb86863fb3c 100644
--- a/drivers/usb/chipidea/otg_fsm.c
+++ b/drivers/usb/chipidea/otg_fsm.c
@@ -778,20 +778,9 @@ void ci_hdrc_otg_fsm_start(struct ci_hdrc *ci)
 int ci_hdrc_otg_fsm_init(struct ci_hdrc *ci)
 {
int retval = 0;
-   struct usb_otg *otg;
 
-   otg = devm_kzalloc(ci-dev,
-   sizeof(struct usb_otg), GFP_KERNEL);
-   if (!otg) {
-   dev_err(ci-dev,
-   Failed to allocate usb_otg structure for ci hdrc otg!\n);
-   return -ENOMEM;
-   }
-
-   otg-usb_phy = ci-usb_phy;
-   otg-gadget = ci-gadget;
-   ci-fsm.otg = otg;
-   ci-usb_phy-otg = ci-fsm.otg;
+   ci-otg.usb_phy = ci-usb_phy;
+   ci-fsm.otg = ci-otg;
ci-fsm.power_up = 1;
ci-fsm.id = hw_read_otgsc(ci, OTGSC_ID) ? 1 : 0;
ci-fsm.otg-state = OTG_STATE_UNDEFINED;
-- 
1.9.1

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/