All of lore.kernel.org
 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 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.