From: "Pritam Manohar Sutar" <pritam.sutar@samsung.com>
To: "'Krzysztof Kozlowski'" <krzk@kernel.org>,
"'Neil Armstrong'" <neil.armstrong@linaro.org>,
<vkoul@kernel.org>, <kishon@kernel.org>, <robh@kernel.org>,
<krzk+dt@kernel.org>, <conor+dt@kernel.org>,
<alim.akhtar@samsung.com>, <andre.draszik@linaro.org>,
<peter.griffin@linaro.org>, <kauschluss@disroot.org>,
<m.szyprowski@samsung.com>, <s.nawrocki@samsung.com>
Cc: <linux-phy@lists.infradead.org>, <devicetree@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-samsung-soc@vger.kernel.org>, <rosa.pila@samsung.com>,
<dev.tailor@samsung.com>, <faraz.ata@samsung.com>,
<muhammed.ali@samsung.com>, <selvarasu.g@samsung.com>
Subject: RE: [PATCH v2 2/2] phy: exyons5-usbdrd: support HS phy for ExynosAutov920
Date: Wed, 21 May 2025 12:40:32 +0530 [thread overview]
Message-ID: <000201dbca1f$737647d0$5a62d770$@samsung.com> (raw)
In-Reply-To: <1f63af35-7d10-434b-b802-115611ce2ed6@kernel.org>
Hi Krzysztof,
> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: 20 May 2025 01:13 PM
> To: Neil Armstrong <neil.armstrong@linaro.org>; Pritam Manohar Sutar
> <pritam.sutar@samsung.com>; vkoul@kernel.org; kishon@kernel.org;
> robh@kernel.org; krzk+dt@kernel.org; conor+dt@kernel.org;
> alim.akhtar@samsung.com; andre.draszik@linaro.org; peter.griffin@linaro.org;
> kauschluss@disroot.org; m.szyprowski@samsung.com;
> s.nawrocki@samsung.com
> Cc: linux-phy@lists.infradead.org; devicetree@vger.kernel.org; linux-
> kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-samsung-
> soc@vger.kernel.org; rosa.pila@samsung.com; dev.tailor@samsung.com;
> faraz.ata@samsung.com; muhammed.ali@samsung.com;
> selvarasu.g@samsung.com
> Subject: Re: [PATCH v2 2/2] phy: exyons5-usbdrd: support HS phy for
> ExynosAutov920
>
> On 20/05/2025 09:39, neil.armstrong@linaro.org wrote:
> >> diff --git a/drivers/phy/samsung/phy-exynos5-usbdrd.c
> >> b/drivers/phy/samsung/phy-exynos5-usbdrd.c
> >> index 634c4310c660..b440b56c6595 100644
> >> --- a/drivers/phy/samsung/phy-exynos5-usbdrd.c
> >> +++ b/drivers/phy/samsung/phy-exynos5-usbdrd.c
> >> @@ -177,6 +177,9 @@
> >> #define HSPHYPLLTUNE_PLL_P_TUNE GENMASK(3,
> 0)
> >>
> >> /* Exynos850: USB DRD PHY registers */
> >> +#define EXYNOSAUTOv920_DRD_CTRL_VER 0x00
> >> +#define CTRL_VER_MAJOR_VERSION GENMASK(31,
> 24)
> >> +
> >> #define EXYNOS850_DRD_LINKCTRL 0x04
> >> #define LINKCTRL_FORCE_RXELECIDLE BIT(18)
> >> #define LINKCTRL_FORCE_PHYSTATUS BIT(17)
> >> @@ -1772,6 +1775,10 @@ static const char * const
> exynos5_regulator_names[] = {
> >> "vbus", "vbus-boost",
> >> };
> >>
> >> +static const char * const exynosautov920_clk_names[] = {
> >> + "ext_xtal",
> >> +};
> >> +
> >> static const struct exynos5_usbdrd_phy_drvdata exynos5420_usbdrd_phy =
> {
> >> .phy_cfg = phy_cfg_exynos5,
> >> .phy_ops = &exynos5_usbdrd_phy_ops,
> >> @@ -1847,6 +1854,81 @@ static const struct exynos5_usbdrd_phy_drvdata
> exynos850_usbdrd_phy = {
> >> .n_regulators = ARRAY_SIZE(exynos5_regulator_names),
> >> };
> >>
> >> +static void exynosautov920_usbdrd_utmi_init(struct
> >> +exynos5_usbdrd_phy *phy_drd) {
> >> + u32 version;
> >> +
> >> + version = readl(phy_drd->reg_phy +
> EXYNOSAUTOv920_DRD_CTRL_VER);
> >> + dev_info(phy_drd->dev, "usbphy: version:0x%x\n", version);
> >
> > Please do not add mode info to boot log, use dev_dbg instead.
>
> Just drop entirely, not even worth dbg (see coding style, driver development
> debugging guide). It is fixed per given compatible, isn't it? If not, there is entire
> commit msg to explain unusual things.
This SoC has a single USB 3.1 DRD combo v400 phy and three USB2.0 DRD phy v303
controllers those only support the UTMI+ interface. Currently, supporting only
v303 phy in this patch-set, and planning v400 phy later (soon). Same may be
also updated in commit message.
If there's any issue in phy init, dbg print is needed to debug which phy caused it.
>
> >
> >> +
> >> + if (FIELD_GET(CTRL_VER_MAJOR_VERSION, version) == 0x3)
> >> + /* utmi init for exynosautov920 HS phy */
> >> + exynos850_usbdrd_utmi_init(phy_drd);
> >> +}
> >> +
> >> +static int exynosautov920_usbdrd_phy_init(struct phy *phy) {
> >> + struct phy_usb_instance *inst = phy_get_drvdata(phy);
> >> + struct exynos5_usbdrd_phy *phy_drd = to_usbdrd_phy(inst);
> >> + int ret = 0;
> >> +
> >> + ret = clk_bulk_prepare_enable(phy_drd->drv_data->n_clks, phy_drd-
> >clks);
> >> + if (ret)
> >> + return ret;
> >> +
> >> + /* UTMI or PIPE3 specific init */
> >> + inst->phy_cfg->phy_init(phy_drd);
> >> +
> >> + clk_bulk_disable_unprepare(phy_drd->drv_data->n_clks,
> >> +phy_drd->clks);
> >> +
> >> + return 0;
> >> +}
> >> +
> >> +static void exynosautov920_v3p1_phy_dis(struct phy *phy) {
> >> + struct phy_usb_instance *inst = phy_get_drvdata(phy);
> >> + struct exynos5_usbdrd_phy *phy_drd = to_usbdrd_phy(inst);
> >> + void __iomem *reg_phy = phy_drd->reg_phy;
> >> + u32 version;
> >> +
> >> + version = readl(reg_phy + EXYNOSAUTOv920_DRD_CTRL_VER);
> >> +
> >> + if (FIELD_GET(CTRL_VER_MAJOR_VERSION, version) == 0x3)
> >> + exynos850_usbdrd_phy_exit(phy);
> >> +}
> >> +
> >> +static int exynosautov920_usbdrd_phy_exit(struct phy *phy) {
> >> + struct phy_usb_instance *inst = phy_get_drvdata(phy);
> >> +
> >> + if (inst->phy_cfg->id == EXYNOS5_DRDPHY_UTMI)
> >> + exynosautov920_v3p1_phy_dis(phy);
> >> +
> >> + return 0;
> >> +}
> >> +
> >> +static const struct phy_ops exynosautov920_usbdrd_phy_ops = {
> >> + .init = exynosautov920_usbdrd_phy_init,
> >> + .exit = exynosautov920_usbdrd_phy_exit,
> >
> > <snip>
> >
> >> + .id = EXYNOS5_DRDPHY_UTMI,
> >> + .phy_init = exynosautov920_usbdrd_utmi_init,
> >
> > <snip>
> >
> >> + }, {
> >> + .compatible = "samsung,exynosautov920-usb31drd-phy",
> >> + .data = &exynosautov920_usb31drd_phy
> >
> > All those new ops are only called when matching this compatible, it it
> > really necessary to check the version ? is there
> > "samsung,exynosautov920-usb31drd-phy" PHYs with version different from 3
> in the wild ?
>
>
> Yeah, this looks like downstream code. Anyway this would need explanation in
> the commit msg.
Commit msg can be updated as mentioned below
" This SoC has a single USB 3.1 DRD combo v400 phy that supports
both UTMI+ (HS) and PIPE3 (SS) and three USB2.0 DRD v303 phy
controllers those only support the UTMI+ (HS) interface.
Support only HS phy in this commit which is very similar to what
the existing Exynos850 supports.
Support combo phy later (soon) and this is out of scope of this commit.
Add required change in phy driver to support HS phy for this SoC."
>
> Best regards,
> Krzysztof
Thank you,
Pritam
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
next prev parent reply other threads:[~2025-05-21 8:31 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20250516101757epcas5p368f98b909ff50c91700358f65228e066@epcas5p3.samsung.com>
2025-05-16 10:26 ` [PATCH v2 0/2] initial usbdrd phy support for Exynosautov920 soc Pritam Manohar Sutar
2025-05-16 10:26 ` [PATCH v2 1/2] dt-bindings: phy: samsung,usb3-drd-phy: add dt-schema for ExynosAutov920 Pritam Manohar Sutar
2025-05-20 7:45 ` Krzysztof Kozlowski
2025-05-21 6:48 ` Pritam Manohar Sutar
2025-05-21 8:44 ` Krzysztof Kozlowski
2025-05-21 11:08 ` Pritam Manohar Sutar
2025-05-16 10:26 ` [PATCH v2 2/2] phy: exyons5-usbdrd: support HS phy " Pritam Manohar Sutar
2025-05-20 7:39 ` neil.armstrong
2025-05-20 7:42 ` Krzysztof Kozlowski
2025-05-21 7:10 ` Pritam Manohar Sutar [this message]
2025-05-21 8:47 ` Krzysztof Kozlowski
2025-05-21 8:58 ` Krzysztof Kozlowski
2025-05-21 6:56 ` Pritam Manohar Sutar
2025-05-21 12:56 ` 'Neil Armstrong'
2025-05-21 12:58 ` Krzysztof Kozlowski
2025-05-22 7:22 ` Neil Armstrong
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='000201dbca1f$737647d0$5a62d770$@samsung.com' \
--to=pritam.sutar@samsung.com \
--cc=alim.akhtar@samsung.com \
--cc=andre.draszik@linaro.org \
--cc=conor+dt@kernel.org \
--cc=dev.tailor@samsung.com \
--cc=devicetree@vger.kernel.org \
--cc=faraz.ata@samsung.com \
--cc=kauschluss@disroot.org \
--cc=kishon@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=muhammed.ali@samsung.com \
--cc=neil.armstrong@linaro.org \
--cc=peter.griffin@linaro.org \
--cc=robh@kernel.org \
--cc=rosa.pila@samsung.com \
--cc=s.nawrocki@samsung.com \
--cc=selvarasu.g@samsung.com \
--cc=vkoul@kernel.org \
/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