From: Guenter Roeck <linux@roeck-us.net>
To: Frank Wang <frank.wang@rock-chips.com>,
Guenter Roeck <groeck@google.com>
Cc: "Heiko Stübner" <heiko@sntech.de>,
"Douglas Anderson" <dianders@chromium.org>,
"Guenter Roeck" <groeck@chromium.org>,
jwerner@chromium.org, kishon@ti.com, robh+dt@kernel.org,
pawel.moll@arm.com, mark.rutland@arm.com,
ijc+devicetree@hellion.org.uk,
"Kumar Gala" <galak@codeaurora.org>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-usb@vger.kernel.org, linux-rockchip@lists.infradead.org,
"Ziyuan Xu" <xzy.xu@rock-chips.com>,
"Kever Yang" <kever.yang@rock-chips.com>,
"Tao Huang" <huangtao@rock-chips.com>,
william.wu@rock-chips.com
Subject: Re: [PATCH v5 2/2] phy: rockchip-inno-usb2: add a new driver for Rockchip usb2phy
Date: Thu, 16 Jun 2016 06:12:14 -0700 [thread overview]
Message-ID: <5762A5AE.5030400@roeck-us.net> (raw)
In-Reply-To: <328485b0-2c5d-5d5e-a21b-6a26e487a923@rock-chips.com>
On 06/15/2016 06:47 PM, Frank Wang wrote:
> Hi Guenter & Heiko,
>
> On 2016/6/15 23:47, Guenter Roeck wrote:
>> On Tue, Jun 14, 2016 at 6:14 PM, Frank Wang <frank.wang@rock-chips.com> wrote:
>>> Hi Heiko & Guenter,
>>>
>>>
>>> On 2016/6/14 22:00, Heiko Stübner wrote:
>>>> Am Dienstag, 14. Juni 2016, 06:50:31 schrieb Guenter Roeck:
>>>>> On Tue, Jun 14, 2016 at 6:27 AM, Heiko Stübner <heiko@sntech.de> wrote:
>>>>>> Am Montag, 13. Juni 2016, 10:10:10 schrieb Frank Wang:
>>>>>>> The newer SoCs (rk3366, rk3399) take a different usb-phy IP block
>>>>>>> than rk3288 and before, and most of phy-related registers are also
>>>>>>> different from the past, so a new phy driver is required necessarily.
>>>>>>>
>>>>>>> Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
>>>>>>> ---
>>>> [...]
>>>>
>>>>>>> +static int rockchip_usb2phy_init(struct phy *phy)
>>>>>>> +{
>>>>>>> + struct rockchip_usb2phy_port *rport = phy_get_drvdata(phy);
>>>>>>> + struct rockchip_usb2phy *rphy = dev_get_drvdata(phy->dev.parent);
>>>>>>> + int ret;
>>>>>>> +
>>>>>>>
>>>>>> if (!rport->port_cfg)
>>>>>> return 0;
>>>>>>
>>>>>> Otherwise the currently empty otg-port will cause null-pointer
>>>>>> dereferences
>>>>>> when it gets assigned in the devicetree already.
>>>>> Not really, at least not here - that port should not have port_id set
>>>>> to USB2PHY_PORT_HOST.
>>>>>
>>>>> Does it even make sense to instantiate the otg port ? Is it going to
>>>>> do anything without port configuration ?
>>>> Ok, that would be the other option - not creating the phy in the driver.
>>>
>>> Well, I will put this conditional inside *_host_port_init(), if it is an
>>> empty, the phy-device should not be created.
>>> Something like the following:
>>>
>>> --- a/drivers/phy/phy-rockchip-inno-usb2.c
>>> +++ b/drivers/phy/phy-rockchip-inno-usb2.c
>>> @@ -483,9 +483,13 @@ static int rockchip_usb2phy_host_port_init(struct
>>> rockchip_usb2phy *rphy,
>>> {
>>> int ret;
>>>
>>> - rport->port_id = USB2PHY_PORT_HOST;
>>> rport->port_cfg = &rphy->phy_cfg->port_cfgs[USB2PHY_PORT_HOST];
>>> + if (!rport->port_cfg) {
>>> + dev_err(rphy->dev, "no host port-config provided.\n");
>>> + return -EINVAL;
>>> + }
>> This would never be NULL. At issue is that you don't assign port_cfg
>> if the port is _not_ a host port.
>
> Sorry, I made a mistake. How about something like the following:
>
Yes, that should work. Just keep in mind that there could always be
a port named "something-port", so you'll always need some kind of check
(and possibly return an error if a port with a wrong name is provided).
Thanks,
Guenter
> @@ -574,6 +579,15 @@ static int rockchip_usb2phy_probe(struct platform_device *pdev)
> struct rockchip_usb2phy_port *rport = &rphy->ports[index];
> struct phy *phy;
>
> + /*
> + * This driver aim to support both otg-port and host-port,
> + * but unfortunately, the otg part is not ready in current,
> + * so this comments and below codes are interim, which should
> + * be removed after otg-port is supplied soon.
> + */
> + if (of_node_cmp(child_np->name, "host-port"))
> + goto next_child;
> +
> phy = devm_phy_create(dev, child_np, &rockchip_usb2phy_ops);
> if (IS_ERR(phy)) {
> dev_err(dev, "failed to create phy\n");
> @@ -582,17 +596,13 @@ static int rockchip_usb2phy_probe(struct platform_device *pdev)
> }
>
> rport->phy = phy;
> -
> - /* initialize otg/host port separately */
> - if (!of_node_cmp(child_np->name, "host-port")) {
> - ret = rockchip_usb2phy_host_port_init(rphy, rport,
> - child_np);
> - if (ret)
> - goto put_child;
> - }
> -
> phy_set_drvdata(rport->phy, rport);
>
> + ret = rockchip_usb2phy_host_port_init(rphy, rport, child_np);
> + if (ret)
> + goto put_child;
> +
> +next_child:
> /* to prevent out of boundary */
> if (++index >= rphy->phy_cfg->num_ports)
> break;
>
>
> BR.
> Frank
>
>
next prev parent reply other threads:[~2016-06-16 13:12 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-13 2:10 [PATCH v5 0/2] Add a new Rockchip usb2 phy driver Frank Wang
2016-06-13 2:10 ` Frank Wang
2016-06-13 2:10 ` [PATCH v5 1/2] Documentation: bindings: add DT documentation for Rockchip USB2PHY Frank Wang
[not found] ` <1465783810-18756-2-git-send-email-frank.wang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-06-13 8:38 ` Heiko Stübner
2016-06-13 8:38 ` Heiko Stübner
2016-06-14 13:28 ` Heiko Stübner
2016-06-14 13:28 ` Heiko Stübner
2016-06-15 1:24 ` Frank Wang
2016-06-15 1:24 ` Frank Wang
2016-06-14 22:26 ` Rob Herring
2016-06-14 22:26 ` Rob Herring
2016-06-13 2:10 ` [PATCH v5 2/2] phy: rockchip-inno-usb2: add a new driver for Rockchip usb2phy Frank Wang
[not found] ` <1465783810-18756-3-git-send-email-frank.wang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-06-14 13:27 ` Heiko Stübner
2016-06-14 13:27 ` Heiko Stübner
2016-06-14 13:50 ` Guenter Roeck
2016-06-14 13:50 ` Guenter Roeck
[not found] ` <CABXOdTfzDeg3KOmEkJkeUWs76wFind89D-bSrs=7-jSxmdhSHQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-14 14:00 ` Heiko Stübner
2016-06-14 14:00 ` Heiko Stübner
2016-06-15 1:14 ` Frank Wang
2016-06-15 1:14 ` Frank Wang
2016-06-15 15:47 ` Guenter Roeck
[not found] ` <CABXOdTdD-DFjzZszvTBoxviwsdu=HZSRy5iTzrkgOjg5qae05Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-16 1:47 ` Frank Wang
2016-06-16 1:47 ` Frank Wang
2016-06-16 13:12 ` Guenter Roeck [this message]
[not found] ` <5762A5AE.5030400-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2016-06-17 0:57 ` Frank Wang
2016-06-17 0:57 ` Frank Wang
2016-06-15 3:23 ` Frank Wang
2016-06-15 3:23 ` Frank Wang
2016-06-15 9:04 ` Heiko Stübner
2016-06-15 10:58 ` Frank Wang
2016-06-15 18:49 ` Heiko Stübner
2016-06-17 11:54 ` Kishon Vijay Abraham I
2016-06-17 11:54 ` Kishon Vijay Abraham I
[not found] ` <5763E506.1060500-l0cyMroinI0@public.gmane.org>
2016-06-17 16:46 ` Heiko Stübner
2016-06-17 16:46 ` Heiko Stübner
2016-06-29 14:14 ` Kishon Vijay Abraham I
2016-06-29 14:14 ` Kishon Vijay Abraham I
[not found] ` <5773D7DC.9050902-l0cyMroinI0@public.gmane.org>
2016-06-29 14:27 ` Heiko Stuebner
2016-06-29 14:27 ` Heiko Stuebner
2016-06-14 14:52 ` Guenter Roeck
[not found] ` <57601A1D.9020803-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2016-06-14 15:20 ` Heiko Stübner
2016-06-14 15:20 ` Heiko Stübner
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=5762A5AE.5030400@roeck-us.net \
--to=linux@roeck-us.net \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=frank.wang@rock-chips.com \
--cc=galak@codeaurora.org \
--cc=groeck@chromium.org \
--cc=groeck@google.com \
--cc=heiko@sntech.de \
--cc=huangtao@rock-chips.com \
--cc=ijc+devicetree@hellion.org.uk \
--cc=jwerner@chromium.org \
--cc=kever.yang@rock-chips.com \
--cc=kishon@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-usb@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=william.wu@rock-chips.com \
--cc=xzy.xu@rock-chips.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.