devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kamil Debski <k.debski@samsung.com>
To: 'Olof Johansson' <olof@lixom.net>
Cc: linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	'Kyungmin Park' <kyungmin.park@samsung.com>,
	'Kishon Vijay Abraham I' <kishon@ti.com>,
	Tomasz Figa <t.figa@samsung.com>,
	Sylwester Nawrocki <s.nawrocki@samsung.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	'Vivek Gautam' <gautam.vivek@samsung.com>,
	mat.krawczuk@gmail.com, yulgon.kim@samsung.com,
	p.paneri@samsung.com, av.tikhomirov@samsung.com,
	'Jingoo Han' <jg1.han@samsung.com>,
	'Kumar Gala' <galak@codeaurora.org>,
	'Matt Porter' <matt.porter@linaro.org>,
	tjakobi@math.uni-bielefeld.de,
	'Alan Stern' <stern@rowland.harvard.edu>
Subject: RE: [PATCH v6 8/8] usb: ehci-exynos: Change to use phy provided by the generic phy framework
Date: Wed, 05 Feb 2014 16:57:20 +0100	[thread overview]
Message-ID: <054501cf228a$f45c61c0$dd152540$%debski@samsung.com> (raw)
In-Reply-To: <CAOesGMgKQrW=Rb6ZtpOVKAZ6dDzy82CzbmOJtKRb8x6JaS1QLg@mail.gmail.com>

Hi Olof,

Thank you for your review.

> From: Olof Johansson [mailto:olof@lixom.net]
> Sent: Wednesday, January 29, 2014 9:55 PM
> 
> Hi,
> 
> On Wed, Jan 29, 2014 at 9:29 AM, Kamil Debski <k.debski@samsung.com>
> wrote:
> > Change the phy provider used from the old one using the USB phy
> > framework to a new one using the Generic phy framework.
> >
> > Signed-off-by: Kamil Debski <k.debski@samsung.com>
> > ---
> >  .../devicetree/bindings/usb/exynos-usb.txt         |   13 +++
> >  drivers/usb/host/ehci-exynos.c                     |   97
> +++++++++++++-------
> >  2 files changed, 76 insertions(+), 34 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/usb/exynos-usb.txt
> > b/Documentation/devicetree/bindings/usb/exynos-usb.txt
> > index d967ba1..25e199a 100644
> > --- a/Documentation/devicetree/bindings/usb/exynos-usb.txt
> > +++ b/Documentation/devicetree/bindings/usb/exynos-usb.txt
> > @@ -12,6 +12,10 @@ Required properties:
> >   - interrupts: interrupt number to the cpu.
> >   - clocks: from common clock binding: handle to usb clock.
> >   - clock-names: from common clock binding: Shall be "usbhost".
> > +  - port: if in the SoC there are EHCI phys, they should be listed
> here.
> > +One phy per port. Each port should have its reg entry with a
> > +consecutive number. Also it should contain phys and phy-names
> entries
> > +specifying the phy used by the port.
> >
> >  Optional properties:
> >   - samsung,vbus-gpio:  if present, specifies the GPIO that @@ -27,6
> > +31,15 @@ Example:
> >
> >                 clocks = <&clock 285>;
> >                 clock-names = "usbhost";
> > +
> > +               #address-cells = <1>;
> > +               #size-cells = <0>;
> > +               port@0 {
> > +                   reg = <0>;
> > +                   phys = <&usb2phy 1>;
> > +                   phy-names = "host";
> > +                   status = "disabled";
> > +               };
> >         };
> >
> >  OHCI
> 
> [...]
> 
> > @@ -102,14 +132,26 @@ static int exynos_ehci_probe(struct
> platform_device *pdev)
> >                                         "samsung,exynos5440-ehci"))
> >                 goto skip_phy;
> >
> > -       phy = devm_usb_get_phy(&pdev->dev, USB_PHY_TYPE_USB2);
> > -       if (IS_ERR(phy)) {
> > -               usb_put_hcd(hcd);
> > -               dev_warn(&pdev->dev, "no platform data or transceiver
> defined\n");
> > -               return -EPROBE_DEFER;
> > -       } else {
> > -               exynos_ehci->phy = phy;
> > -               exynos_ehci->otg = phy->otg;
> > +       for_each_available_child_of_node(pdev->dev.of_node, child) {
> > +               err = of_property_read_u32(child, "reg",
> &phy_number);
> > +               if (err) {
> > +                       dev_err(&pdev->dev, "Failed to parse device
> tree\n");
> > +                       of_node_put(child);
> > +                       return err;
> > +               }
> > +               if (phy_number >= PHY_NUMBER) {
> > +                       dev_err(&pdev->dev, "Failed to parse device
> tree - number out of range\n");
> > +                       of_node_put(child);
> > +                       return -EINVAL;
> > +               }
> > +               phy = devm_of_phy_get(&pdev->dev, child, 0);
> > +               of_node_put(child);
> > +               if (IS_ERR(phy)) {
> > +                       dev_err(&pdev->dev, "Failed to get phy number
> %d",
> > +
> phy_number);
> > +                       return PTR_ERR(phy);
> > +               }
> > +               exynos_ehci->phy[phy_number] = phy;
> 
> this looks like it is now breaking older device trees, where ports
> might not be described. Since device tree interfaces need to be
> backwards compatible, you still need to handle the old case of not
> having ports described.
> 
> There are two ways of doing this:
> 
> 1. Fall back to the old behavior if there are no ports 2. Use a new
> compatible value for the new model with port subnodes, and if the old
> compatible value is used, then fall back to the old behavior.
> 
> I'm guessing (1) might be easiest since you can check for the presence
> of #address-cells to tell if this is just an old style node, or if it's
> a new-style node without any ports below it.

The ultimate goal is to remove the old phy driver. Unfortunately
this has to be synced with the new USB3 phy driver by Vivek Gautam. I think
he
is also close to completion. What about this case? In the end the old driver
will be removed and no longer be supported. Having backward compatibility in
mind, it is possible to have the old and the new phy driver together in one
kernel release. But do we want to have two drivers doing the same thing at
the same time?

Best wishes,
-- 
Kamil Debski
Samsung R&D Institute Poland

  reply	other threads:[~2014-02-05 15:57 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-29 17:29 [PATCH v6 0/8] phy: Add new Exynos USB 2.0 PHY driver Kamil Debski
2014-01-29 17:29 ` [PATCH v6 1/8] phy: core: Add an exported of_phy_get function Kamil Debski
2014-01-29 17:29 ` [PATCH v6 2/8] phy: core: Add devm_of_phy_get to phy-core Kamil Debski
2014-01-29 17:29 ` [PATCH v6 3/8] dts: Add usb2phy to Exynos 4 Kamil Debski
2014-01-29 20:50   ` Olof Johansson
2014-02-05 15:57     ` Kamil Debski
2014-01-29 17:29 ` [PATCH v6 4/8] dts: Add usb2phy to Exynos 5250 Kamil Debski
2014-01-29 17:29 ` [PATCH v6 5/8] phy: Add new Exynos USB PHY driver Kamil Debski
     [not found]   ` <1391016574-25237-6-git-send-email-k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-03-03 14:27     ` Kishon Vijay Abraham I
     [not found]       ` <53149155.4010209-l0cyMroinI0@public.gmane.org>
2014-03-03 15:07         ` Kamil Debski
     [not found] ` <1391016574-25237-1-git-send-email-k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-01-29 17:29   ` [PATCH v6 6/8] phy: Add support for S5PV210 to the " Kamil Debski
2014-01-29 17:29 ` [PATCH v6 7/8] phy: Add Exynos 5250 support to the Exynos USB 2.0 " Kamil Debski
2014-01-29 17:29 ` [PATCH v6 8/8] usb: ehci-exynos: Change to use phy provided by the generic phy framework Kamil Debski
2014-01-29 20:42   ` Alan Stern
2014-02-04 15:06     ` Tomasz Figa
2014-02-05 15:57     ` Kamil Debski
     [not found]       ` <054301cf228a$eb58a480$c209ed80$%debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-02-05 19:55         ` Alan Stern
     [not found]   ` <1391016574-25237-9-git-send-email-k.debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-01-29 20:55     ` Olof Johansson
2014-02-05 15:57       ` Kamil Debski [this message]
     [not found]         ` <054501cf228a$f45c61c0$dd152540$%debski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-02-05 17:30           ` Olof Johansson
2014-03-03 14:37             ` Tomasz Figa

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='054501cf228a$f45c61c0$dd152540$%debski@samsung.com' \
    --to=k.debski@samsung.com \
    --cc=av.tikhomirov@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=gautam.vivek@samsung.com \
    --cc=jg1.han@samsung.com \
    --cc=kishon@ti.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mat.krawczuk@gmail.com \
    --cc=matt.porter@linaro.org \
    --cc=olof@lixom.net \
    --cc=p.paneri@samsung.com \
    --cc=s.nawrocki@samsung.com \
    --cc=stern@rowland.harvard.edu \
    --cc=t.figa@samsung.com \
    --cc=tjakobi@math.uni-bielefeld.de \
    --cc=yulgon.kim@samsung.com \
    /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).