All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/8] ehci-platform: add init() method to platform data
@ 2013-04-04 22:59 Sergei Shtylyov
  2013-04-05 14:43 ` Alan Stern
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Sergei Shtylyov @ 2013-04-04 22:59 UTC (permalink / raw)
  To: linux-sh

Sometimes there is a need to initialize some non-standard registers mapped to
the EHCI region before accessing the standard EHCI registers.  Add the init()
method to the 'ehci-platform' platform data for this purpose.

Suggested-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>

---
 drivers/usb/host/ehci-platform.c |    7 +++++++
 include/linux/usb/ehci_pdriver.h |    1 +
 2 files changed, 8 insertions(+)

Index: renesas/drivers/usb/host/ehci-platform.c
=================================--- renesas.orig/drivers/usb/host/ehci-platform.c
+++ renesas/drivers/usb/host/ehci-platform.c
@@ -110,6 +110,13 @@ static int ehci_platform_probe(struct pl
 		err = PTR_ERR(hcd->regs);
 		goto err_put_hcd;
 	}
+
+	if (pdata->init) {
+		err = pdata->init(dev, hcd->regs);
+		if (err < 0)
+			goto err_put_hcd;
+	}
+
 	err = usb_add_hcd(hcd, irq, IRQF_SHARED);
 	if (err)
 		goto err_put_hcd;
Index: renesas/include/linux/usb/ehci_pdriver.h
=================================--- renesas.orig/include/linux/usb/ehci_pdriver.h
+++ renesas/include/linux/usb/ehci_pdriver.h
@@ -50,6 +50,7 @@ struct usb_ehci_pdata {
 	/* Turn on only VBUS suspend power and hotplug detection,
 	 * turn off everything else */
 	void (*power_suspend)(struct platform_device *pdev);
+	int (*init)(struct platform_device *pdev, void __iomem *regs);
 };
 
 #endif /* __USB_CORE_EHCI_PDRIVER_H */

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/8] ehci-platform: add init() method to platform data
  2013-04-04 22:59 [PATCH 2/8] ehci-platform: add init() method to platform data Sergei Shtylyov
@ 2013-04-05 14:43 ` Alan Stern
  2013-04-05 20:40 ` Sergei Shtylyov
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Alan Stern @ 2013-04-05 14:43 UTC (permalink / raw)
  To: linux-sh

On Fri, 5 Apr 2013, Sergei Shtylyov wrote:

> Sometimes there is a need to initialize some non-standard registers mapped to
> the EHCI region before accessing the standard EHCI registers.  Add the init()
> method to the 'ehci-platform' platform data for this purpose.

"init" isn't such a good name for this.  It's too vague; there are
already a lot of initialization steps here.  How about "pre_setup"
instead?

> --- renesas.orig/drivers/usb/host/ehci-platform.c
> +++ renesas/drivers/usb/host/ehci-platform.c
> @@ -110,6 +110,13 @@ static int ehci_platform_probe(struct pl
>  		err = PTR_ERR(hcd->regs);
>  		goto err_put_hcd;
>  	}
> +
> +	if (pdata->init) {
> +		err = pdata->init(dev, hcd->regs);
> +		if (err < 0)
> +			goto err_put_hcd;
> +	}

Also, I think this code should go in the ehci_platform_reset() routine, 
just before the call to ehci_setup().  That way more of the setup will 
already have been carried out.

And instead of passing hcd->regs, wouldn't it be better to pass hcd?  
Other users of this interface might need to initialize something other 
than a non-standard register.

Alan Stern


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/8] ehci-platform: add init() method to platform data
  2013-04-04 22:59 [PATCH 2/8] ehci-platform: add init() method to platform data Sergei Shtylyov
  2013-04-05 14:43 ` Alan Stern
@ 2013-04-05 20:40 ` Sergei Shtylyov
  2013-04-05 20:48 ` Sergei Shtylyov
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Sergei Shtylyov @ 2013-04-05 20:40 UTC (permalink / raw)
  To: linux-sh

Hello.

On 04/05/2013 06:43 PM, Alan Stern wrote:

>
>> Sometimes there is a need to initialize some non-standard registers mapped to
>> the EHCI region before accessing the standard EHCI registers.  Add the init()
>> method to the 'ehci-platform' platform data for this purpose.
> "init" isn't such a good name for this.  It's too vague; there are
> already a lot of initialization steps here.  How about "pre_setup"
> instead?

     Quite vague too. :-)
     But can't think of a better name...

>
>> --- renesas.orig/drivers/usb/host/ehci-platform.c
>> +++ renesas/drivers/usb/host/ehci-platform.c
>> @@ -110,6 +110,13 @@ static int ehci_platform_probe(struct pl
>>   		err = PTR_ERR(hcd->regs);
>>   		goto err_put_hcd;
>>   	}
>> +
>> +	if (pdata->init) {
>> +		err = pdata->init(dev, hcd->regs);
>> +		if (err < 0)
>> +			goto err_put_hcd;
>> +	}
> Also, I think this code should go in the ehci_platform_reset() routine,
> just before the call to ehci_setup().  That way more of the setup will
> already have been carried out.

     You're right, of course.

> And instead of passing hcd->regs, wouldn't it be better to pass hcd?

    I really don't know.

> Other users of this interface might need to initialize something other
> than a non-standard register.

    Hm, maybe... if passing 'struct usb_hcd *' would indeed help here. 
Do you think it's
worth passing 'struct platform_device *' along with it?

> Alan Stern
>

WBR, Sergei


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/8] ehci-platform: add init() method to platform data
  2013-04-04 22:59 [PATCH 2/8] ehci-platform: add init() method to platform data Sergei Shtylyov
  2013-04-05 14:43 ` Alan Stern
  2013-04-05 20:40 ` Sergei Shtylyov
@ 2013-04-05 20:48 ` Sergei Shtylyov
  2013-04-05 20:55 ` Alan Stern
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Sergei Shtylyov @ 2013-04-05 20:48 UTC (permalink / raw)
  To: linux-sh

On 04/06/2013 12:40 AM, Sergei Shtylyov wrote:

>
>> And instead of passing hcd->regs, wouldn't it be better to pass hcd?
>
>    I really don't know.
>
>> Other users of this interface might need to initialize something other
>> than a non-standard register.
>
>    Hm, maybe... if passing 'struct usb_hcd *' would indeed help here. 
> Do you think it's
> worth passing 'struct platform_device *' along with it?

    Probably not as it can be extracted from 'hcd->self.controller'...

WBR, Sergei


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/8] ehci-platform: add init() method to platform data
  2013-04-04 22:59 [PATCH 2/8] ehci-platform: add init() method to platform data Sergei Shtylyov
                   ` (2 preceding siblings ...)
  2013-04-05 20:48 ` Sergei Shtylyov
@ 2013-04-05 20:55 ` Alan Stern
  2013-04-05 20:56 ` Alan Stern
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Alan Stern @ 2013-04-05 20:55 UTC (permalink / raw)
  To: linux-sh

On Sat, 6 Apr 2013, Sergei Shtylyov wrote:

> > And instead of passing hcd->regs, wouldn't it be better to pass hcd?
> 
>     I really don't know.
> 
> > Other users of this interface might need to initialize something other
> > than a non-standard register.
> 
>     Hm, maybe... if passing 'struct usb_hcd *' would indeed help here. 
> Do you think it's
> worth passing 'struct platform_device *' along with it?

Yes.  After all, the routine being called is part of the platform code.

Alan Stern


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/8] ehci-platform: add init() method to platform data
  2013-04-04 22:59 [PATCH 2/8] ehci-platform: add init() method to platform data Sergei Shtylyov
                   ` (3 preceding siblings ...)
  2013-04-05 20:55 ` Alan Stern
@ 2013-04-05 20:56 ` Alan Stern
  2013-04-05 20:59 ` Sergei Shtylyov
  2013-04-05 21:15 ` Alan Stern
  6 siblings, 0 replies; 8+ messages in thread
From: Alan Stern @ 2013-04-05 20:56 UTC (permalink / raw)
  To: linux-sh

On Sat, 6 Apr 2013, Sergei Shtylyov wrote:

> On 04/06/2013 12:40 AM, Sergei Shtylyov wrote:
> 
> >
> >> And instead of passing hcd->regs, wouldn't it be better to pass hcd?
> >
> >    I really don't know.
> >
> >> Other users of this interface might need to initialize something other
> >> than a non-standard register.
> >
> >    Hm, maybe... if passing 'struct usb_hcd *' would indeed help here. 
> > Do you think it's
> > worth passing 'struct platform_device *' along with it?
> 
>     Probably not as it can be extracted from 'hcd->self.controller'...

It's up to you.  Generally I think it's easier to pass an extra 
argument than to force the function being called to dig it out.

Alan Stern


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/8] ehci-platform: add init() method to platform data
  2013-04-04 22:59 [PATCH 2/8] ehci-platform: add init() method to platform data Sergei Shtylyov
                   ` (4 preceding siblings ...)
  2013-04-05 20:56 ` Alan Stern
@ 2013-04-05 20:59 ` Sergei Shtylyov
  2013-04-05 21:15 ` Alan Stern
  6 siblings, 0 replies; 8+ messages in thread
From: Sergei Shtylyov @ 2013-04-05 20:59 UTC (permalink / raw)
  To: linux-sh

On 04/06/2013 12:56 AM, Alan Stern wrote:

>>>> And instead of passing hcd->regs, wouldn't it be better to pass hcd?
>>>     I really don't know.
>>>
>>>> Other users of this interface might need to initialize something other
>>>> than a non-standard register.
>>>     Hm, maybe... if passing 'struct usb_hcd *' would indeed help here.
>>> Do you think it's
>>> worth passing 'struct platform_device *' along with it?
>>      Probably not as it can be extracted from 'hcd->self.controller'...
> It's up to you.  Generally I think it's easier to pass an extra
> argument than to force the function being called to dig it out.

    Note that in our use case we don't even need this argument.

> Alan Stern

WBR, Sergei


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/8] ehci-platform: add init() method to platform data
  2013-04-04 22:59 [PATCH 2/8] ehci-platform: add init() method to platform data Sergei Shtylyov
                   ` (5 preceding siblings ...)
  2013-04-05 20:59 ` Sergei Shtylyov
@ 2013-04-05 21:15 ` Alan Stern
  6 siblings, 0 replies; 8+ messages in thread
From: Alan Stern @ 2013-04-05 21:15 UTC (permalink / raw)
  To: linux-sh

On Sat, 6 Apr 2013, Sergei Shtylyov wrote:

> On 04/06/2013 12:56 AM, Alan Stern wrote:
> 
> >>>> And instead of passing hcd->regs, wouldn't it be better to pass hcd?
> >>>     I really don't know.
> >>>
> >>>> Other users of this interface might need to initialize something other
> >>>> than a non-standard register.
> >>>     Hm, maybe... if passing 'struct usb_hcd *' would indeed help here.
> >>> Do you think it's
> >>> worth passing 'struct platform_device *' along with it?
> >>      Probably not as it can be extracted from 'hcd->self.controller'...
> > It's up to you.  Generally I think it's easier to pass an extra
> > argument than to force the function being called to dig it out.
> 
>     Note that in our use case we don't even need this argument.

Okay, then don't pass it.

Alan Stern


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-04-05 21:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-04 22:59 [PATCH 2/8] ehci-platform: add init() method to platform data Sergei Shtylyov
2013-04-05 14:43 ` Alan Stern
2013-04-05 20:40 ` Sergei Shtylyov
2013-04-05 20:48 ` Sergei Shtylyov
2013-04-05 20:55 ` Alan Stern
2013-04-05 20:56 ` Alan Stern
2013-04-05 20:59 ` Sergei Shtylyov
2013-04-05 21:15 ` Alan Stern

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.