From: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Alan Stern <stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org>
Cc: Tony Prisk <linux-ci5G2KO2hbZ+pU9mqzGVBQ@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-usb <linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH v3 1/2] ohci-platform: Add support for devicetree instantiation
Date: Fri, 10 Jan 2014 11:13:48 +0100 [thread overview]
Message-ID: <52CFC7DC.3010406@redhat.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1401091446310.1493-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
Hi,
On 01/09/2014 09:36 PM, Alan Stern wrote:
> On Thu, 9 Jan 2014, Hans de Goede wrote:
>
>> Add support for ohci-platform instantiation from devicetree, including
>> optionally getting clks and a phy from devicetree, and enabling / disabling
>> those on power_on / off.
>>
>> This should allow using ohci-platform from devicetree in various cases.
>> Specifically after this commit it can be used for the ohci controller found
>> on Allwinner sunxi SoCs.
>>
>> Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
>
> Looking pretty good. Still a couple of things to address...
>
>> +static struct usb_ohci_pdata ohci_platform_defaults = {
>> + .power_on = ohci_platform_power_on,
>> + .power_suspend = ohci_platform_power_off,
>> + .power_off = ohci_platform_power_off,
>> };
>
> I wonder if these routines couldn't be shared with non-DT setups. We
> could add an array of 3 struct clk pointers to the usb_ohci_pdata
> structure. Then if any of them are set, store these routines in the
> power_* pointers. (And likewise for ehci-platform.) Something to
> consider for a future patch...
I don't like automatically setting the power_ platform_data members much.
But I've already been thinking about moving the clks member to platform_data,
and simply exporting ohci_platform_power_* so that other drivers can use them
and put them in the platform_data members themselves. That is indeed something
for another patch though.
>> @@ -60,12 +128,24 @@ static int ohci_platform_probe(struct platform_device *dev)
>> struct usb_hcd *hcd;
>> struct resource *res_mem;
>> struct usb_ohci_pdata *pdata = dev_get_platdata(&dev->dev);
>> - int irq;
>> - int err = -ENOMEM;
>> + struct ohci_platform_priv *priv;
>> + int clk, irq, err;
>>
>> + /*
>> + * Use reasonable defaults so platforms don't have to provide these
>> + * with DT probing on ARM.
>> + */
>> if (!pdata) {
>> - WARN_ON(1);
>> - return -ENODEV;
>> + pdata = dev->dev.platform_data = &ohci_platform_defaults;
>
> This has a subtle bug. Consider what will happen if ohci-platform is
> loaded, then unloaded and loaded again.
Right, so we need to add a "dev->dev.platform_data == &ohci_platform_defaults"
check on remove an then set platform_data to NULL, good point, will fix in the
next version.
>
> The existing ehci-platform driver has this same bug. I definitely
> remember discussing at once or twice in the past, but evidently it has
> never been fixed.
If you agree with the above fix I'll also throw it into the next revision
of the ehci patch.
>
>> + /*
>> + * Right now device-tree probed devices don't get dma_mask set.
>> + * Since shared usb code relies on it, set it here for now.
>> + * Once we have dma capability bindings this can go away.
>> + */
>> + err = dma_coerce_mask_and_coherent(&dev->dev,
>> + DMA_BIT_MASK(32));
>> + if (err)
>> + return err;
>
> The ehci-platform driver does this even when platform data is present.
> I guess you should do the same thing here (and lose the comment).
>
> (Also, I dislike this alignment of the continuation line. IMO it's a
> bad idea to match up with some particular element of the preceding
> line. The style used in most of the USB stack is to indent
> continuation lines by two tab stops.)
Ok, will fix.
>
>> }
>>
>> if (usb_disabled())
>
> This test belongs at the start of the function. It is more fundamental
> than the stuff you inserted.
>
Ok, will fix.
>> @@ -83,17 +163,39 @@ static int ohci_platform_probe(struct platform_device *dev)
>> return -ENXIO;
>> }
>>
>> + hcd = usb_create_hcd(&ohci_platform_hc_driver, &dev->dev,
>> + dev_name(&dev->dev));
>> + if (!hcd)
>> + return -ENOMEM;
>> +
>> + priv = (struct ohci_platform_priv *)hcd_to_ohci(hcd)->priv;
>
> Please define an inline routine or a macro for this messy computation.
Ok, will fix.
Before I do a v4, one question:
Ma Haijun does not like the use of OHCI_MAX_CLKS:
>> +#define OHCI_MAX_CLKS 3
>
> I still recommend using of_count_phandle_with_args(np, "clocks",
> "#clock-cells") to determine the number of clocks or the existence of clocks
> property (-ENOENT)
His suggestion would mean dynamically allocating the clks array and having
clks_count variable. I still think this is a bit overkill, but I can do that for
v4 if you want, so what do you prefer ?
Regards,
Hans
next prev parent reply other threads:[~2014-01-10 10:13 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-09 17:57 [PATCH v3 0/2] ohci and ehci-platform clks, phy and dt support Hans de Goede
[not found] ` <1389290226-6971-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-09 17:57 ` [PATCH v3 1/2] ohci-platform: Add support for devicetree instantiation Hans de Goede
[not found] ` <1389290226-6971-2-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-09 18:07 ` Arnd Bergmann
2014-01-09 18:18 ` Hans de Goede
2014-01-09 20:14 ` Sergei Shtylyov
[not found] ` <52CF0326.1090407-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2014-01-09 19:48 ` Hans de Goede
[not found] ` <52CEFCFE.7080308-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-09 21:08 ` Sergei Shtylyov
[not found] ` <52CF0FB1.1010109-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2014-01-10 9:47 ` Hans de Goede
[not found] ` <52CFC1A8.4010505-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-10 22:02 ` Sergei Shtylyov
2014-01-09 20:36 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1401091446310.1493-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2014-01-10 10:13 ` Hans de Goede [this message]
[not found] ` <52CFC7DC.3010406-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-01-10 15:29 ` Alan Stern
2014-01-09 17:57 ` [PATCH v3 2/2] ehci-platform: Add support for clks and phy passed through devicetree Hans de Goede
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52CFC7DC.3010406@redhat.com \
--to=hdegoede-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-ci5G2KO2hbZ+pU9mqzGVBQ@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).