devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sergei.shtylyov-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
To: Petr Kulhavy <petr-Qh/3xLP0EvwAvxtiuMwx3w@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 14:20:39 +0300	[thread overview]
Message-ID: <56B87A07.1060103@cogentembedded.com> (raw)
In-Reply-To: <56B85DB6.9030605-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>

On 2/8/2016 12:19 PM, Petr Kulhavy 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.

    He has submitted a patch to do that.

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

    And the patch is against 3.17? You should only submit patches against the 
recent kernel. In this case, against the -next branch of Felipe's repo on 
kernel.org.

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

    The CFGCHIP2 register controls the PHY in practice. The code manipulating 
it should be moved to a PHY driver.

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

    OK, just thought I'd let you know.

>>> 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
>>> +~~~~~~~~~~~~~
>>> +
>>> +Rquired 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)...

    So I'd suggest "ti,da830-musb".

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

    Wildcards are not allowed in the "compatible" prop. People here told you 
the same.

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

    Even twice, in omap2430.c and musb_dsps.c. omap2430.c even parses 
non-prefixed props, ew...

> All the other MUSBs specify these parameters in the DT. Do you want to make an
> exception?

    I'd prefer doing it that way, sure.

[...]
>>> @@ -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

    Refering me to the AM18xx TRM when I asked for just correctly naming the 
SI unit is strange. :-)

>> [...]
>>> @@ -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?

    Define this function in musb_core.c.

>> [...]
>>> @@ -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?

    musb_core.c again.

>>
>> [...]
>>> +        /* 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.

    Why are you not using CFGCHIP2 macro in this file as the rest of the code 
does?

> Regards
> Petr

MBR, Sergei

--
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 11:20 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
     [not found]         ` <56B85DB6.9030605-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org>
2016-02-08 11:20           ` Sergei Shtylyov [this message]
     [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=56B87A07.1060103@cogentembedded.com \
    --to=sergei.shtylyov-m4dtvfq/zs1mrggop+s0pdbpr1lh4cv8@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=petr-Qh/3xLP0EvwAvxtiuMwx3w@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@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).