All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jochen Sprickerhof <jochen@sprickerhof.de>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Anand Moon <linux.amoon@gmail.com>,
	Linux USB Mailing List <linux-usb@vger.kernel.org>,
	linux-samsung-soc@vger.kernel.org,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Mathias Nyman <mathias.nyman@intel.com>,
	Felipe Balbi <balbi@kernel.org>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	Krzysztof Kozlowski <krzk@kernel.org>
Subject: Re: [PATCH v2 1/2] usb: core: phy: add support for PHY calibration
Date: Sun, 28 Jul 2019 17:57:57 +0200	[thread overview]
Message-ID: <20190728155757.GE10770@vis> (raw)
In-Reply-To: <CANAwSgR3kdZsDn-x9FwynAPtVEf4ci0BfiGPr1NzJ-a1n5B_Ng@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3658 bytes --]

Hi Marek,

thanks for working on this!

Tested on my XU4
Tested-by: Jochen Sprickerhof <jochen@sprickerhof.de>

* Anand Moon <linux.amoon@gmail.com> [2019-07-23 00:30]:
>Hi Marek,
>
>On Fri, 19 Jul 2019 at 13:43, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
>>
>> Some PHYs (for example Exynos5 USB3.0 DRD PHY) require calibration to be
>> done after every USB HCD reset. Generic PHY framework has been already
>> extended with phy_calibrate() function in commit 36914111e682 ("drivers:
>> phy: add calibrate method"). This patch adds support for it to generic
>> PHY handling code in USB HCD core.
>>
>
>Tested on my XU3 / XU4 / HC1
>Tested-by: Anand Moon <linux.amoon@gmail.com>
>
>
>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
>> ---
>>  drivers/usb/core/hcd.c |  7 +++++++
>>  drivers/usb/core/phy.c | 21 +++++++++++++++++++++
>>  drivers/usb/core/phy.h |  1 +
>>  3 files changed, 29 insertions(+)
>>
>> diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
>> index 88533938ce19..b89936c1df23 100644
>> --- a/drivers/usb/core/hcd.c
>> +++ b/drivers/usb/core/hcd.c
>> @@ -2291,6 +2291,9 @@ int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg)
>>         hcd->state = HC_STATE_RESUMING;
>>         status = hcd->driver->bus_resume(hcd);
>>         clear_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags);
>> +       if (status == 0)
>> +               status = usb_phy_roothub_calibrate(hcd->phy_roothub);
>> +
>>         if (status == 0) {
>>                 struct usb_device *udev;
>>                 int port1;
>> @@ -2864,6 +2867,10 @@ int usb_add_hcd(struct usb_hcd *hcd,
>>         }
>>         hcd->rh_pollable = 1;
>>
>> +       retval = usb_phy_roothub_calibrate(hcd->phy_roothub);
>> +       if (retval)
>> +               goto err_hcd_driver_setup;
>> +
>>         /* NOTE: root hub and controller capabilities may not be the same */
>>         if (device_can_wakeup(hcd->self.controller)
>>                         && device_can_wakeup(&hcd->self.root_hub->dev))
>> diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c
>> index 7580493b867a..fb1588e7c282 100644
>> --- a/drivers/usb/core/phy.c
>> +++ b/drivers/usb/core/phy.c
>> @@ -151,6 +151,27 @@ int usb_phy_roothub_set_mode(struct usb_phy_roothub *phy_roothub,
>>  }
>>  EXPORT_SYMBOL_GPL(usb_phy_roothub_set_mode);
>>
>> +int usb_phy_roothub_calibrate(struct usb_phy_roothub *phy_roothub)
>> +{
>> +       struct usb_phy_roothub *roothub_entry;
>> +       struct list_head *head;
>> +       int err;
>> +
>> +       if (!phy_roothub)
>> +               return 0;
>> +
>> +       head = &phy_roothub->list;
>> +
>> +       list_for_each_entry(roothub_entry, head, list) {
>> +               err = phy_calibrate(roothub_entry->phy);
>> +               if (err)
>> +                       return err;
>> +       }
>> +
>> +       return 0;
>> +}
>> +EXPORT_SYMBOL_GPL(usb_phy_roothub_calibrate);
>> +
>>  int usb_phy_roothub_power_on(struct usb_phy_roothub *phy_roothub)
>>  {
>>         struct usb_phy_roothub *roothub_entry;
>> diff --git a/drivers/usb/core/phy.h b/drivers/usb/core/phy.h
>> index dad564e2d2d4..20a267cd986b 100644
>> --- a/drivers/usb/core/phy.h
>> +++ b/drivers/usb/core/phy.h
>> @@ -18,6 +18,7 @@ int usb_phy_roothub_exit(struct usb_phy_roothub *phy_roothub);
>>
>>  int usb_phy_roothub_set_mode(struct usb_phy_roothub *phy_roothub,
>>                              enum phy_mode mode);
>> +int usb_phy_roothub_calibrate(struct usb_phy_roothub *phy_roothub);
>>  int usb_phy_roothub_power_on(struct usb_phy_roothub *phy_roothub);
>>  void usb_phy_roothub_power_off(struct usb_phy_roothub *phy_roothub);
>>
>> --
>> 2.17.1
>>
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2019-07-28 15:57 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20190719081224eucas1p1729ccaba8affe5a7ff65296519bcfe95@eucas1p1.samsung.com>
2019-07-19  8:12 ` [PATCH v2 0/2] Fix USB3.0 DRD PHY calibration issues (DWC3/XHCI) on Exynos542x SoCs Marek Szyprowski
2019-07-19  8:13   ` [PATCH v2 1/2] usb: core: phy: add support for PHY calibration Marek Szyprowski
2019-07-22 19:00     ` Anand Moon
2019-07-28 15:57       ` Jochen Sprickerhof [this message]
2019-07-19  8:13   ` [PATCH v2 2/2] usb: dwc3: remove generic PHY calibrate() calls Marek Szyprowski
2019-07-22 19:00     ` Anand Moon
2019-07-28 15:58       ` Jochen Sprickerhof

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=20190728155757.GE10770@vis \
    --to=jochen@sprickerhof.de \
    --cc=b.zolnierkie@samsung.com \
    --cc=balbi@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=krzk@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux.amoon@gmail.com \
    --cc=m.szyprowski@samsung.com \
    --cc=mathias.nyman@intel.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.