From: Hans de Goede <hdegoede@redhat.com>
To: Chen-Yu Tsai <wens@csie.org>, linux-sunxi <linux-sunxi@googlegroups.com>
Cc: Emilio Lopez <emilio@elopez.com.ar>,
Mike Turquette <mturquette@linaro.org>,
stern@rowland.harvard.edu, Kishon Vijay Abraham I <kishon@ti.com>,
Boris Brezillon <boris@free-electrons.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
linux-usb <linux-usb@vger.kernel.org>,
kevin.z.m.zh@gmail.com, sunny@allwinnertech.com,
Shuge <shuge@allwinnertech.com>,
zhuzhenhua@allwinnertech.com,
Maxime Ripard <maxime.ripard@free-electrons.com>
Subject: Re: [linux-sunxi] [PATCH v2 3/7] phy: usb: sunxi: Introduce Allwinner A31 USB PHY support
Date: Mon, 12 May 2014 13:59:06 +0200 [thread overview]
Message-ID: <5370B78A.7060709@redhat.com> (raw)
In-Reply-To: <CAGb2v65Pstk6MqEeK838VUpNXw2cQH8K66Oo4oG3__zzWO3pig@mail.gmail.com>
Hi,
On 05/12/2014 11:14 AM, Chen-Yu Tsai wrote:
> Hi,
>
> On Sat, May 10, 2014 at 8:56 PM, Maxime Ripard
> <maxime.ripard@free-electrons.com> wrote:
>> The USB phy controller in the A31 differs mostly from the older controllers
>> because it has a clock dedicated for each phy, while the older ones were having
>> a single clock for all the phys.
>>
>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>> drivers/phy/phy-sun4i-usb.c | 35 ++++++++++++++++++++++++++---------
>> 1 file changed, 26 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/phy/phy-sun4i-usb.c b/drivers/phy/phy-sun4i-usb.c
>> index e6e6c4ba7145..8bd89430d945 100644
>> --- a/drivers/phy/phy-sun4i-usb.c
>> +++ b/drivers/phy/phy-sun4i-usb.c
>> @@ -61,7 +61,6 @@
>> #define MAX_PHYS 3
>>
>> struct sun4i_usb_phy_data {
>> - struct clk *clk;
>> void __iomem *base;
>> struct mutex mutex;
>> int num_phys;
>> @@ -71,6 +70,7 @@ struct sun4i_usb_phy_data {
>> void __iomem *pmu;
>> struct regulator *vbus;
>> struct reset_control *reset;
>> + struct clk *clk;
>> int index;
>> } phys[MAX_PHYS];
>> };
>> @@ -146,13 +146,13 @@ static int sun4i_usb_phy_init(struct phy *_phy)
>> struct sun4i_usb_phy_data *data = to_sun4i_usb_phy_data(phy);
>> int ret;
>>
>> - ret = clk_prepare_enable(data->clk);
>> + ret = clk_prepare_enable(phy->clk);
>> if (ret)
>> return ret;
>>
>> ret = reset_control_deassert(phy->reset);
>> if (ret) {
>> - clk_disable_unprepare(data->clk);
>> + clk_disable_unprepare(phy->clk);
>> return ret;
>> }
>>
>> @@ -170,11 +170,10 @@ static int sun4i_usb_phy_init(struct phy *_phy)
>> static int sun4i_usb_phy_exit(struct phy *_phy)
>> {
>> struct sun4i_usb_phy *phy = phy_get_drvdata(_phy);
>> - struct sun4i_usb_phy_data *data = to_sun4i_usb_phy_data(phy);
>>
>> sun4i_usb_phy_passby(phy, 0);
>> reset_control_assert(phy->reset);
>> - clk_disable_unprepare(data->clk);
>> + clk_disable_unprepare(phy->clk);
>>
>> return 0;
>> }
>> @@ -228,8 +227,10 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
>> struct phy_provider *phy_provider;
>> struct reset_control *reset;
>> struct regulator *vbus;
>> + bool dedicated_clocks;
>
> No default?
>
>> struct resource *res;
>> struct phy *phy;
>> + struct clk *clk;
>> char name[16];
>> int i;
>>
>> @@ -249,15 +250,20 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
>> else
>> data->disc_thresh = 2;
>>
>> + if (of_device_is_compatible(np, "allwinner,sun6i-a31-usb-phy"))
>> + dedicated_clocks = true;
>> +
>
> dedicated_clocks is more than likely to be true from leftover data
> on the stack. This results in the usb phy driver probe failing, and
> the usb host drivers left in perpetual probe deferral on my Cubietruck.
>
> Adding an else section fixes this.
Good catch, fixed this in the sunxi-devel branch for now (until Maxime sends a new version).
Regards,
Hans
WARNING: multiple messages have this Message-ID (diff)
From: hdegoede@redhat.com (Hans de Goede)
To: linux-arm-kernel@lists.infradead.org
Subject: [linux-sunxi] [PATCH v2 3/7] phy: usb: sunxi: Introduce Allwinner A31 USB PHY support
Date: Mon, 12 May 2014 13:59:06 +0200 [thread overview]
Message-ID: <5370B78A.7060709@redhat.com> (raw)
In-Reply-To: <CAGb2v65Pstk6MqEeK838VUpNXw2cQH8K66Oo4oG3__zzWO3pig@mail.gmail.com>
Hi,
On 05/12/2014 11:14 AM, Chen-Yu Tsai wrote:
> Hi,
>
> On Sat, May 10, 2014 at 8:56 PM, Maxime Ripard
> <maxime.ripard@free-electrons.com> wrote:
>> The USB phy controller in the A31 differs mostly from the older controllers
>> because it has a clock dedicated for each phy, while the older ones were having
>> a single clock for all the phys.
>>
>> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>> drivers/phy/phy-sun4i-usb.c | 35 ++++++++++++++++++++++++++---------
>> 1 file changed, 26 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/phy/phy-sun4i-usb.c b/drivers/phy/phy-sun4i-usb.c
>> index e6e6c4ba7145..8bd89430d945 100644
>> --- a/drivers/phy/phy-sun4i-usb.c
>> +++ b/drivers/phy/phy-sun4i-usb.c
>> @@ -61,7 +61,6 @@
>> #define MAX_PHYS 3
>>
>> struct sun4i_usb_phy_data {
>> - struct clk *clk;
>> void __iomem *base;
>> struct mutex mutex;
>> int num_phys;
>> @@ -71,6 +70,7 @@ struct sun4i_usb_phy_data {
>> void __iomem *pmu;
>> struct regulator *vbus;
>> struct reset_control *reset;
>> + struct clk *clk;
>> int index;
>> } phys[MAX_PHYS];
>> };
>> @@ -146,13 +146,13 @@ static int sun4i_usb_phy_init(struct phy *_phy)
>> struct sun4i_usb_phy_data *data = to_sun4i_usb_phy_data(phy);
>> int ret;
>>
>> - ret = clk_prepare_enable(data->clk);
>> + ret = clk_prepare_enable(phy->clk);
>> if (ret)
>> return ret;
>>
>> ret = reset_control_deassert(phy->reset);
>> if (ret) {
>> - clk_disable_unprepare(data->clk);
>> + clk_disable_unprepare(phy->clk);
>> return ret;
>> }
>>
>> @@ -170,11 +170,10 @@ static int sun4i_usb_phy_init(struct phy *_phy)
>> static int sun4i_usb_phy_exit(struct phy *_phy)
>> {
>> struct sun4i_usb_phy *phy = phy_get_drvdata(_phy);
>> - struct sun4i_usb_phy_data *data = to_sun4i_usb_phy_data(phy);
>>
>> sun4i_usb_phy_passby(phy, 0);
>> reset_control_assert(phy->reset);
>> - clk_disable_unprepare(data->clk);
>> + clk_disable_unprepare(phy->clk);
>>
>> return 0;
>> }
>> @@ -228,8 +227,10 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
>> struct phy_provider *phy_provider;
>> struct reset_control *reset;
>> struct regulator *vbus;
>> + bool dedicated_clocks;
>
> No default?
>
>> struct resource *res;
>> struct phy *phy;
>> + struct clk *clk;
>> char name[16];
>> int i;
>>
>> @@ -249,15 +250,20 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
>> else
>> data->disc_thresh = 2;
>>
>> + if (of_device_is_compatible(np, "allwinner,sun6i-a31-usb-phy"))
>> + dedicated_clocks = true;
>> +
>
> dedicated_clocks is more than likely to be true from leftover data
> on the stack. This results in the usb phy driver probe failing, and
> the usb host drivers left in perpetual probe deferral on my Cubietruck.
>
> Adding an else section fixes this.
Good catch, fixed this in the sunxi-devel branch for now (until Maxime sends a new version).
Regards,
Hans
next prev parent reply other threads:[~2014-05-12 11:59 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-10 12:56 [PATCH v2 0/7] Add Allwinner A31 USB support Maxime Ripard
2014-05-10 12:56 ` Maxime Ripard
2014-05-10 12:56 ` [PATCH v2 1/7] clk: sunxi: Implement A31 USB clock Maxime Ripard
2014-05-10 12:56 ` Maxime Ripard
2014-05-10 12:56 ` [PATCH v2 2/7] ARM: sun6i: Add the USB clocks to the DTSI Maxime Ripard
2014-05-10 12:56 ` Maxime Ripard
2014-05-10 12:56 ` [PATCH v2 3/7] phy: usb: sunxi: Introduce Allwinner A31 USB PHY support Maxime Ripard
2014-05-10 12:56 ` Maxime Ripard
2014-05-12 9:14 ` [linux-sunxi] " Chen-Yu Tsai
2014-05-12 9:14 ` Chen-Yu Tsai
2014-05-12 11:59 ` Hans de Goede [this message]
2014-05-12 11:59 ` Hans de Goede
2014-05-12 12:24 ` Kishon Vijay Abraham I
2014-05-12 12:24 ` Kishon Vijay Abraham I
2014-05-12 12:27 ` Hans de Goede
2014-05-12 12:27 ` Hans de Goede
2014-05-12 15:04 ` Maxime Ripard
2014-05-12 15:04 ` Maxime Ripard
2014-05-10 12:56 ` [PATCH v2 4/7] usb: ehci-platform: add optional reset controller retrieval Maxime Ripard
2014-05-10 12:56 ` Maxime Ripard
2014-05-10 14:35 ` Alan Stern
2014-05-10 14:35 ` Alan Stern
2014-05-12 14:30 ` Maxime Ripard
2014-05-12 14:30 ` Maxime Ripard
2014-05-10 12:56 ` [PATCH v2 5/7] usb: ohci-platform: Enable optional use of reset controller Maxime Ripard
2014-05-10 12:56 ` Maxime Ripard
2014-05-10 12:56 ` [PATCH v2 6/7] ARM: sun6i: dt: Add support for the USB controllers Maxime Ripard
2014-05-10 12:56 ` Maxime Ripard
2014-05-10 12:56 ` [PATCH v2 7/7] ARM: sunxi: dt: add APP4-EVB1 board support Maxime Ripard
2014-05-10 12:56 ` Maxime Ripard
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=5370B78A.7060709@redhat.com \
--to=hdegoede@redhat.com \
--cc=boris@free-electrons.com \
--cc=emilio@elopez.com.ar \
--cc=kevin.z.m.zh@gmail.com \
--cc=kishon@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@googlegroups.com \
--cc=linux-usb@vger.kernel.org \
--cc=maxime.ripard@free-electrons.com \
--cc=mturquette@linaro.org \
--cc=shuge@allwinnertech.com \
--cc=stern@rowland.harvard.edu \
--cc=sunny@allwinnertech.com \
--cc=wens@csie.org \
--cc=zhuzhenhua@allwinnertech.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.