All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>,
	devicetree@vger.kernel.org, robh+dt@kernel.org,
	pawel.moll@arm.com, mark.rutland@arm.com,
	ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
	grant.likely@linaro.org
Cc: linux-sh@vger.kernel.org, magnus.damm@gmail.com,
	linux-doc@vger.kernel.org, rdunlap@infradead.org
Subject: Re: [PATCH v3] phy: Renesas R-Car Gen2 PHY driver
Date: Fri, 23 May 2014 10:37:32 +0000	[thread overview]
Message-ID: <537F221C.10700@ti.com> (raw)
In-Reply-To: <537D2770.2040605@cogentembedded.com>

Hi,

On Thursday 22 May 2014 03:53 AM, Sergei Shtylyov wrote:
> Hello.
> 
> On 04/23/2014 02:02 PM, Kishon Vijay Abraham I wrote:
> 
>>>>> This PHY, though formally being a part of Renesas USBHS controller, contains
>>>>> the
>>>>> UGCTRL2 register that controls multiplexing of the USB ports (Renesas calls
>>>>> them
>>>>> channels) to the different USB controllers: channel 0 can be connected to
>>>>> either
>>>>> PCI EHCI/OHCI or USBHS controllers, channel 2 can be connected to PCI
>>>>> EHCI/OHCI
>>>>> or xHCI controllers.
> 
>>>>> This is a new driver for this USB PHY currently already supported under
>>>>> drivers/
>>>>> usb/phy/. The reason for writing the new driver was the requirement that the
>>>>> multiplexing of USB channels to the controller be dynamic, depending on what
>>>>> USB drivers are loaded,  rather than static as provided by the old driver.
>>>>> The infrastructure provided by drivers/phy/phy-core.c seems to fit that
>>>>> purpose
>>>>> ideally. The new driver only supports device tree probing for now.
> 
>>>>> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> 
>>> [...]
> 
>>>>> Index: linux-phy/drivers/phy/phy-rcar-gen2.c
>>>>> =================================>>>>> --- /dev/null
>>>>> +++ linux-phy/drivers/phy/phy-rcar-gen2.c
>>>>> @@ -0,0 +1,283 @@
> 
>>> [...]
> 
>>>>> +static int rcar_gen2_phy_probe(struct platform_device *pdev)
>>>>> +{
> 
>>> [...]
> 
>>>>> +    drv->phys[0][0].select_mask  = USBHS_UGCTRL2_USB0SEL;
>>>>> +    drv->phys[0][0].select_value = USBHS_UGCTRL2_USB0SEL_PCI;
>>>>> +    drv->phys[0][1].select_mask  = USBHS_UGCTRL2_USB0SEL;
>>>>> +    drv->phys[0][1].select_value = USBHS_UGCTRL2_USB0SEL_HS_USB;
>>>>> +    drv->phys[2][0].select_mask  = USBHS_UGCTRL2_USB2SEL;
>>>>> +    drv->phys[2][0].select_value = USBHS_UGCTRL2_USB2SEL_PCI;
>>>>> +    drv->phys[2][1].select_mask  = USBHS_UGCTRL2_USB2SEL;
>>>>> +    drv->phys[2][1].select_value = USBHS_UGCTRL2_USB2SEL_USB30;
>>>>> +
>>>>> +    for (i = 0; i < NUM_USB_CHANNELS; i++) {
> 
>>>> Instead of hard coding the number of channels,
> 
>>>     It's hard coded in the hardware. We can even decrease that number to 2 as
> 
>> right, that's why thought dt should have that information.
> 
>    So you want a dedicated property for that or you meant something else?
> 
>>> for the channel #1 we have nothing to do, regardless of whether it's present or
>>> not...
> 
>>>> we can model the channels (PHYs) as sub-nodes of the main PHY
> 
>>>     Hm, I don't think such representation would be adequate: the channels
>>> themselves do not usually correspond to any particular PHY, that's why I used
>>> #phy-cells = <2>.
> 
>>>> in dt and use it to create individual PHYs.
> 
>>>     Well, we probably can... however, I fail to see any immediate gain from
>>> it here...
>>>     I have to ask why you've selected this particular driver for such DT
>>> representation experiments, despite it not being the first one supporting
>>> multiple PHYs?
> 
>> just that it didn't strike before.. but I think all multiple PHYs should be
>> modelled this way.
> 
>    I've basically reimplemented the driver to parse the info from the subnodes
> and it's now became larger in size, not smaller. :-/ Overall, I'm not content
> with the changes, nor do I think such a change in the DT representation was a
> great idea...

I've seen someone posted a patch with subnodes and that wasn't looking too bad.
Do you mind posting your patch in the list?

Cheers
Kishon

WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>,
	devicetree@vger.kernel.org, robh+dt@kernel.org,
	pawel.moll@arm.com, mark.rutland@arm.com,
	ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
	grant.likely@linaro.org
Cc: linux-sh@vger.kernel.org, magnus.damm@gmail.com,
	linux-doc@vger.kernel.org, rdunlap@infradead.org
Subject: Re: [PATCH v3] phy: Renesas R-Car Gen2 PHY driver
Date: Fri, 23 May 2014 15:55:32 +0530	[thread overview]
Message-ID: <537F221C.10700@ti.com> (raw)
In-Reply-To: <537D2770.2040605@cogentembedded.com>

Hi,

On Thursday 22 May 2014 03:53 AM, Sergei Shtylyov wrote:
> Hello.
> 
> On 04/23/2014 02:02 PM, Kishon Vijay Abraham I wrote:
> 
>>>>> This PHY, though formally being a part of Renesas USBHS controller, contains
>>>>> the
>>>>> UGCTRL2 register that controls multiplexing of the USB ports (Renesas calls
>>>>> them
>>>>> channels) to the different USB controllers: channel 0 can be connected to
>>>>> either
>>>>> PCI EHCI/OHCI or USBHS controllers, channel 2 can be connected to PCI
>>>>> EHCI/OHCI
>>>>> or xHCI controllers.
> 
>>>>> This is a new driver for this USB PHY currently already supported under
>>>>> drivers/
>>>>> usb/phy/. The reason for writing the new driver was the requirement that the
>>>>> multiplexing of USB channels to the controller be dynamic, depending on what
>>>>> USB drivers are loaded,  rather than static as provided by the old driver.
>>>>> The infrastructure provided by drivers/phy/phy-core.c seems to fit that
>>>>> purpose
>>>>> ideally. The new driver only supports device tree probing for now.
> 
>>>>> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> 
>>> [...]
> 
>>>>> Index: linux-phy/drivers/phy/phy-rcar-gen2.c
>>>>> ===================================================================
>>>>> --- /dev/null
>>>>> +++ linux-phy/drivers/phy/phy-rcar-gen2.c
>>>>> @@ -0,0 +1,283 @@
> 
>>> [...]
> 
>>>>> +static int rcar_gen2_phy_probe(struct platform_device *pdev)
>>>>> +{
> 
>>> [...]
> 
>>>>> +    drv->phys[0][0].select_mask  = USBHS_UGCTRL2_USB0SEL;
>>>>> +    drv->phys[0][0].select_value = USBHS_UGCTRL2_USB0SEL_PCI;
>>>>> +    drv->phys[0][1].select_mask  = USBHS_UGCTRL2_USB0SEL;
>>>>> +    drv->phys[0][1].select_value = USBHS_UGCTRL2_USB0SEL_HS_USB;
>>>>> +    drv->phys[2][0].select_mask  = USBHS_UGCTRL2_USB2SEL;
>>>>> +    drv->phys[2][0].select_value = USBHS_UGCTRL2_USB2SEL_PCI;
>>>>> +    drv->phys[2][1].select_mask  = USBHS_UGCTRL2_USB2SEL;
>>>>> +    drv->phys[2][1].select_value = USBHS_UGCTRL2_USB2SEL_USB30;
>>>>> +
>>>>> +    for (i = 0; i < NUM_USB_CHANNELS; i++) {
> 
>>>> Instead of hard coding the number of channels,
> 
>>>     It's hard coded in the hardware. We can even decrease that number to 2 as
> 
>> right, that's why thought dt should have that information.
> 
>    So you want a dedicated property for that or you meant something else?
> 
>>> for the channel #1 we have nothing to do, regardless of whether it's present or
>>> not...
> 
>>>> we can model the channels (PHYs) as sub-nodes of the main PHY
> 
>>>     Hm, I don't think such representation would be adequate: the channels
>>> themselves do not usually correspond to any particular PHY, that's why I used
>>> #phy-cells = <2>.
> 
>>>> in dt and use it to create individual PHYs.
> 
>>>     Well, we probably can... however, I fail to see any immediate gain from
>>> it here...
>>>     I have to ask why you've selected this particular driver for such DT
>>> representation experiments, despite it not being the first one supporting
>>> multiple PHYs?
> 
>> just that it didn't strike before.. but I think all multiple PHYs should be
>> modelled this way.
> 
>    I've basically reimplemented the driver to parse the info from the subnodes
> and it's now became larger in size, not smaller. :-/ Overall, I'm not content
> with the changes, nor do I think such a change in the DT representation was a
> great idea...

I've seen someone posted a patch with subnodes and that wasn't looking too bad.
Do you mind posting your patch in the list?

Cheers
Kishon

  reply	other threads:[~2014-05-23 10:37 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-12  0:15 [PATCH v3] phy: Renesas R-Car Gen2 PHY driver Sergei Shtylyov
2014-04-12  0:15 ` Sergei Shtylyov
2014-04-14  5:53 ` Kishon Vijay Abraham I
2014-04-14  5:54   ` Kishon Vijay Abraham I
2014-04-21 20:13   ` Sergei Shtylyov
2014-04-21 20:13     ` Sergei Shtylyov
2014-04-23 10:02     ` Kishon Vijay Abraham I
2014-04-23 10:14       ` Kishon Vijay Abraham I
2014-05-21 22:23       ` Sergei Shtylyov
2014-05-21 22:23         ` Sergei Shtylyov
2014-05-23 10:25         ` Kishon Vijay Abraham I [this message]
2014-05-23 10:37           ` Kishon Vijay Abraham I
2014-05-23 23:30           ` Sergei Shtylyov
2014-05-23 23:30             ` Sergei Shtylyov

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=537F221C.10700@ti.com \
    --to=kishon@ti.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=grant.likely@linaro.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=rdunlap@infradead.org \
    --cc=robh+dt@kernel.org \
    --cc=sergei.shtylyov@cogentembedded.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 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.