From: Petr Kulhavy <petr-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
To: Sergei Shtylyov
<sergei.shtylyov-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>,
Felipe Balbi <balbi-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 1/1] Drivers: USB: DA8xx MUSB: added DT support
Date: Mon, 8 Feb 2016 10:19:50 +0100 [thread overview]
Message-ID: <56B85DB6.9030605@barix.com> (raw)
In-Reply-To: <56B67351.1030604-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
Hello,
On 06.02.2016 23:27, Sergei Shtylyov wrote:
> [Changed Felipe's address to the kernel.org one, so thta he can
> read this too. :-)]
He should also update the MAINTAINERS file with his new address.
>> TI DA8xx MUSB driver equipped with DeviceTree support.
>> Tested with AM1808 board and USB2.0 (OTG) in host mode.
>
> Have you notices "depends on BROKEN" in Kconfig, BTW?
Honestly, I don't see any "depends on BROKEN". However I do build with
the 3.17 kernel.
> Felipe wants the PHY specific parts moved to a PHY driver...
>
I was wondering about a PHY driver too. However the AM1808 has no
standalone PHY module like e.g. the AM335x does. The PHY together with
the USB core are integrated into a single block and there is only a
little control through the SYSCFG registers.
And that change has nothing to do with DT support - it's a structural
change of the da8xx USB and platform drivers.
That's why I didn't go for that.
>> Signed-off-by: Petr Kulhavy <petr-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
>> ---
>> .../devicetree/bindings/usb/da8xx-usb.txt | 63 ++++++++
>> drivers/usb/musb/da8xx.c | 162
>> +++++++++++++++++++++
>> include/linux/platform_data/usb-davinci.h | 3 +-
>> 3 files changed, 227 insertions(+), 1 deletion(-)
>> create mode 100644 Documentation/devicetree/bindings/usb/da8xx-usb.txt
>>
>> diff --git a/Documentation/devicetree/bindings/usb/da8xx-usb.txt
>> b/Documentation/devicetree/bindings/usb/da8xx-usb.txt
>> new file mode 100644
>> index 0000000..69c0961
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/usb/da8xx-usb.txt
>> @@ -0,0 +1,63 @@
>> +TI DA8xx MUSB
>> +~~~~~~~~~~~~~
>> +
>> +Required properties:
>> +~~~~~~~~~~~~~~~~~~~~
>> + - compatible : Should be "ti,da8xx-musb"
>
> No way. You'l probably need to select a lowest common denominator
> model. I don't remember offhand but I don't think DA850 (AM1808) is
> different from DA830 (AM170x)...
>
I just did what the guys here on the mailing list told me. I'm getting a
bit confused now what is the right approach then...
>> +
>> + - interrupts: USB interrupt number
>> +
>> + - interrupt-names: should be set to "mc"
>> +
>> + - dr_mode: The USB operation mode. Should be one of "host",
>> "peripheral" or "otg".
>> +
>> + - mentor,power : Specifies the maximum current in milli-ampers the
>> controller can
>> + supply in host mode. The maximum configurable value is 510mA.
>> +
>> + - mentor,num-eps : Valid only in host mode. Specifies the number of
>> target endpoints
>> + supported by the controller. For DA8xx it is "5".
>
> That number should actually be deducible from the "compatible"
> prop. I'm not sure it's a good idea to specify this in DT... although
> TI have done this once already, for OMAPs...
All the other MUSBs specify these parameters in the DT. Do you want to
make an exception?
>> +
>> + - ti,phy20-refclock-frequency : Integer. Defines the USB 2.0 PHY
>> reference clock input
>> + frequency in Hz in case the clock is generated by the internal
>> PLL.
>> + Supported values are 12MHz, 13MHz, 19.2MHz, 20MHz, 24MHz,
>> 26MHz, 38.4MHz, 40MHz, 48MHz
>
> Ugh. At least these both are something board specific indeed...
See above.
>
>> @@ -134,6 +139,35 @@ static inline void phy_off(void)
>> __raw_writel(cfgchip2, CFGCHIP2);
>> }
>>
>> +/* converts PHY refclk frequency in HZ into USB0REF_FREQ config value
>
> It's Hz, no?
Nope, see the spruh82a.pdf
>
> [...]
>> @@ -527,6 +561,35 @@ static const struct platform_device_info
>> da8xx_dev_info = {
>> .dma_mask = DMA_BIT_MASK(32),
>> };
>>
>> +static int get_musb_port_mode(struct device_node *np)
>> +{
>> + enum usb_dr_mode mode;
>> +
>> + mode = of_usb_get_dr_mode(np);
>> + switch (mode) {
>> + case USB_DR_MODE_HOST:
>> + return MUSB_HOST;
>> +
>> + case USB_DR_MODE_PERIPHERAL:
>> + return MUSB_PERIPHERAL;
>> +
>> + case USB_DR_MODE_OTG:
>> + return MUSB_OTG;
>> +
>> + default:
>> + return MUSB_UNDEFINED;
>> + }
>> +}
>
> This is clearly MUSB generic code.
So what does it mean?
> [...]
>> @@ -560,6 +624,95 @@ static int da8xx_probe(struct platform_device
>> *pdev)
>> glue->dev = &pdev->dev;
>> glue->clk = clk;
>>
>> + if (IS_ENABLED(CONFIG_OF) && np) {
>> + struct musb_hdrc_config *config;
>> + struct musb_hdrc_platform_data *data;
>> + u32 phy20_refclock_freq, phy20_clkmux_cfg;
> [...]
>> + pdata->mode = get_musb_port_mode(np);
>> + config->num_eps = get_int_prop(np, "mentor,num-eps");
>> + config->ram_bits = get_int_prop(np, "mentor,ram-bits");
>> + /* the "mentor,power" value is in milli-amps, whereas
>> + * the mentor configuration is in 2mA units
>> + */
>> + pdata->power = get_int_prop(np, "mentor,power") / 2;
>> + config->multipoint = of_property_read_bool(np,
>> + "mentor,multipoint");
>
> These props are MUSB generic. Parsing them in each glue separately
> doesn't make much sense...
What do you suggest then?
>
> [...]
>> + /* optional parameter reference clock frequency */
>> + if (!of_property_read_u32(np, "ti,phy20-clkmux-cfg",
>> + &phy20_clkmux_cfg)) {
>> + u32 cfgchip2;
>> +
>> + /*
>> + * Select internal reference clock for USB 2.0 PHY
>> + * and use it as a clock source for USB 1.1 PHY
>> + * (this is the default setting anyway).
>> + */
>> +
>> + cfgchip2 = __raw_readl(
>> + DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
>
> That's why a PHY driver is needed. DA8XX_SYSCFG2_VIRT() shouldn't
> be used outside arch/arm/mach-davinci/.
>
See above.
Regards
Petr
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-02-08 9:19 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-05 17:34 [PATCH 1/1] Drivers: USB: DA8xx MUSB: added DT support Petr Kulhavy
[not found] ` <1454693676-20211-1-git-send-email-petr-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-05 22:22 ` Arnd Bergmann
2016-02-05 23:55 ` Petr Kulhavy
[not found] ` <CAEP=dzCDWTC1p1=gJebmLUQGqw+H8=T5wFNUbLBOh-uX=uuvLA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-06 21:48 ` Sergei Shtylyov
2016-02-08 13:04 ` Petr Kulhavy
[not found] ` <56B89256.9050708-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-08 13:34 ` Arnd Bergmann
2016-02-06 22:27 ` Sergei Shtylyov
[not found] ` <56B67351.1030604-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-02-08 9:19 ` Petr Kulhavy [this message]
[not found] ` <56B85DB6.9030605-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-08 11:20 ` Sergei Shtylyov
[not found] ` <56B87A07.1060103-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-02-08 11:48 ` Petr Kulhavy
[not found] ` <56B88098.1070309-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-08 12:25 ` Sergei Shtylyov
[not found] ` <56B8891C.3080409-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-02-08 12:49 ` Petr Kulhavy
[not found] ` <56B88ED5.9000104-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-08 13:49 ` Sergei Shtylyov
2016-02-08 15:32 ` Petr Kulhavy
[not found] ` <56B8B515.5080106-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-08 17:55 ` Sergei Shtylyov
[not found] ` <56B8D676.1050809-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-02-09 8:30 ` Petr Kulhavy
[not found] ` <56B9A3C1.4000600-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-09 10:50 ` Sergei Shtylyov
[not found] ` <56B9C46B.30708-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-02-10 11:26 ` Petr Kulhavy
[not found] ` <56BB1E5F.4050100-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-10 14:07 ` Sergei Shtylyov
[not found] ` <56BB4418.4090403-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-02-10 14:12 ` Sergei Shtylyov
[not found] ` <56BB4553.30707-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-02-10 14:29 ` Petr Kulhavy
2016-02-08 11:47 ` Sergei Shtylyov
2016-02-08 19:49 ` Rob Herring
2016-02-08 19:59 ` Sergei Shtylyov
-- strict thread matches above, loose matches on Subject: below --
2016-02-04 13:00 Petr Kulhavy
[not found] ` <1454590807-26566-1-git-send-email-petr-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-04 13:37 ` Arnd Bergmann
2016-02-04 16:17 ` Petr Kulhavy
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=56B85DB6.9030605@barix.com \
--to=petr-qh/3xlp0evwavxtiumwx3w@public.gmane.org \
--cc=balbi-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=sergei.shtylyov-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@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).