All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 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.