From: Vinod Koul <vkoul@kernel.org>
To: Li Chen <lchen@ambarella.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>,
Philipp Zabel <p.zabel@pengutronix.de>,
Swapnil Jakhade <sjakhade@cadence.com>,
"linux-phy@lists.infradead.org" <linux-phy@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Dan Carpenter <dan.carpenter@oracle.com>
Subject: Re: [EXT] Re: [PATCH] Revert "phy: cadence-torrent: Do not configure SERDES if it's already configured"
Date: Thu, 23 Dec 2021 18:14:31 +0530 [thread overview]
Message-ID: <YcRvL85x9Q1dkvRn@matsya> (raw)
In-Reply-To: <CH2PR19MB4024714657D84812E6F16A77A07E9@CH2PR19MB4024.namprd19.prod.outlook.com>
On 23-12-21, 06:27, Li Chen wrote:
> Hi, Vinod
>
> > -----Original Message-----
> > From: Vinod Koul [mailto:vkoul@kernel.org]
> > Sent: Thursday, December 23, 2021 1:27 PM
> > To: Li Chen
> > Cc: Kishon Vijay Abraham I; Philipp Zabel; Swapnil Jakhade; linux-
> > phy@lists.infradead.org; linux-kernel@vger.kernel.org; Dan Carpenter
> > Subject: [EXT] Re: [PATCH] Revert "phy: cadence-torrent: Do not configure
> > SERDES if it's already configured"
> >
> > On 26-11-21, 05:06, Li Chen wrote:
> > > This reverts commit
> > > b69d39f68419("phy: cadence-torrent: Do not configure SERDES if it's already
> > configured")
> >
> > space between commit id and open brace...
> >
> > >
> > > our soc will hang on any regmap field read before reset.
> >
> > okay, in this case the right fix would be to keep track of reset in SW
> > and still skip reset if it is already configured?
> >
>
> I should be grateful if you would give me more details of reset in SW.
Store the reset state in a driver variable reset and use that for
finding already_configured rather than reading a hw value
>
> > >
> > > Signed-off-by: Li Chen <lchen@ambarella.com>
> > > ---
> > > drivers/phy/cadence/phy-cadence-torrent.c | 31 +++++++----------------
> > > 1 file changed, 9 insertions(+), 22 deletions(-)
> > >
> > > diff --git a/drivers/phy/cadence/phy-cadence-torrent.c
> > b/drivers/phy/cadence/phy-cadence-torrent.c
> > > index 415ace64adc5c..e57e0b1523aff 100644
> > > --- a/drivers/phy/cadence/phy-cadence-torrent.c
> > > +++ b/drivers/phy/cadence/phy-cadence-torrent.c
> > > @@ -2031,11 +2031,6 @@ static int cdns_torrent_noop_phy_on(struct phy
> > *phy)
> > > return 0;
> > > }
> > >
> > > -static const struct phy_ops noop_ops = {
> > > - .power_on = cdns_torrent_noop_phy_on,
> > > - .owner = THIS_MODULE,
> > > -};
> > > -
> > > static
> > > int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
> > > {
> > > @@ -2282,7 +2277,6 @@ static int cdns_torrent_phy_probe(struct
> > platform_device *pdev)
> > > struct device_node *child;
> > > int ret, subnodes, node = 0, i;
> > > u32 total_num_lanes = 0;
> > > - int already_configured;
> > > u8 init_dp_regmap = 0;
> > > u32 phy_type;
> > >
> > > @@ -2321,20 +2315,16 @@ static int cdns_torrent_phy_probe(struct
> > platform_device *pdev)
> > > if (ret)
> > > return ret;
> > >
> > > - regmap_field_read(cdns_phy->phy_pma_cmn_ctrl_1,
> > &already_configured);
> > > -
> > > - if (!already_configured) {
> > > - ret = cdns_torrent_reset(cdns_phy);
> > > - if (ret)
> > > - goto clk_cleanup;
> > > + ret = cdns_torrent_reset(cdns_phy);
> > > + if (ret)
> > > + goto clk_cleanup;
> > >
> > > - ret = cdns_torrent_clk(cdns_phy);
> > > - if (ret)
> > > - goto clk_cleanup;
> > > + ret = cdns_torrent_clk(cdns_phy);
> > > + if (ret)
> > > + goto clk_cleanup;
> > >
> > > /* Enable APB */
> > > - reset_control_deassert(cdns_phy->apb_rst);
> > > - }
> > > + reset_control_deassert(cdns_phy->apb_rst);
> > >
> > > for_each_available_child_of_node(dev->of_node, child) {
> > > struct phy *gphy;
> > > @@ -2404,10 +2394,7 @@ static int cdns_torrent_phy_probe(struct
> > platform_device *pdev)
> > > of_property_read_u32(child, "cdns,ssc-mode",
> > > &cdns_phy->phys[node].ssc_mode);
> > >
> > > - if (!already_configured)
> > > - gphy = devm_phy_create(dev, child,
> > &cdns_torrent_phy_ops);
> > > - else
> > > - gphy = devm_phy_create(dev, child, &noop_ops);
> > > + gphy = devm_phy_create(dev, child, &cdns_torrent_phy_ops);
> > > if (IS_ERR(gphy)) {
> > > ret = PTR_ERR(gphy);
> > > goto put_child;
> > > @@ -2490,7 +2477,7 @@ static int cdns_torrent_phy_probe(struct
> > platform_device *pdev)
> > > goto put_lnk_rst;
> > > }
> > >
> > > - if (cdns_phy->nsubnodes > 1 && !already_configured) {
> > > + if (cdns_phy->nsubnodes > 1) {
> > > ret = cdns_torrent_phy_configure_multilink(cdns_phy);
> > > if (ret)
> > > goto put_lnk_rst;
> > > --
> > > 2.33.1
> > >
> > >
> > >
> > **************************************************************
> > ********
> > > This email and attachments contain Ambarella Proprietary and/or Confidential
> > Information and is intended solely for the use of the individual(s) to whom it is
> > addressed. Any unauthorized review, use, disclosure, distribute, copy, or print is
> > prohibited. If you are not an intended recipient, please contact the sender by
> > reply email and destroy all copies of the original message. Thank you.
You do realize this is not OK in public emails... Pls fix
> >
> > Aha!!!
> >
> > Okay destroyed this now!
> >
> > --
> > ~Vinod
> >
> > ##############################################################
> > ########
> > This EXTERNAL email has been scanned by Proofpoint Email Protect service.
>
> Regards,
> Li
--
~Vinod
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vkoul@kernel.org>
To: Li Chen <lchen@ambarella.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>,
Philipp Zabel <p.zabel@pengutronix.de>,
Swapnil Jakhade <sjakhade@cadence.com>,
"linux-phy@lists.infradead.org" <linux-phy@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Dan Carpenter <dan.carpenter@oracle.com>
Subject: Re: [EXT] Re: [PATCH] Revert "phy: cadence-torrent: Do not configure SERDES if it's already configured"
Date: Thu, 23 Dec 2021 18:14:31 +0530 [thread overview]
Message-ID: <YcRvL85x9Q1dkvRn@matsya> (raw)
In-Reply-To: <CH2PR19MB4024714657D84812E6F16A77A07E9@CH2PR19MB4024.namprd19.prod.outlook.com>
On 23-12-21, 06:27, Li Chen wrote:
> Hi, Vinod
>
> > -----Original Message-----
> > From: Vinod Koul [mailto:vkoul@kernel.org]
> > Sent: Thursday, December 23, 2021 1:27 PM
> > To: Li Chen
> > Cc: Kishon Vijay Abraham I; Philipp Zabel; Swapnil Jakhade; linux-
> > phy@lists.infradead.org; linux-kernel@vger.kernel.org; Dan Carpenter
> > Subject: [EXT] Re: [PATCH] Revert "phy: cadence-torrent: Do not configure
> > SERDES if it's already configured"
> >
> > On 26-11-21, 05:06, Li Chen wrote:
> > > This reverts commit
> > > b69d39f68419("phy: cadence-torrent: Do not configure SERDES if it's already
> > configured")
> >
> > space between commit id and open brace...
> >
> > >
> > > our soc will hang on any regmap field read before reset.
> >
> > okay, in this case the right fix would be to keep track of reset in SW
> > and still skip reset if it is already configured?
> >
>
> I should be grateful if you would give me more details of reset in SW.
Store the reset state in a driver variable reset and use that for
finding already_configured rather than reading a hw value
>
> > >
> > > Signed-off-by: Li Chen <lchen@ambarella.com>
> > > ---
> > > drivers/phy/cadence/phy-cadence-torrent.c | 31 +++++++----------------
> > > 1 file changed, 9 insertions(+), 22 deletions(-)
> > >
> > > diff --git a/drivers/phy/cadence/phy-cadence-torrent.c
> > b/drivers/phy/cadence/phy-cadence-torrent.c
> > > index 415ace64adc5c..e57e0b1523aff 100644
> > > --- a/drivers/phy/cadence/phy-cadence-torrent.c
> > > +++ b/drivers/phy/cadence/phy-cadence-torrent.c
> > > @@ -2031,11 +2031,6 @@ static int cdns_torrent_noop_phy_on(struct phy
> > *phy)
> > > return 0;
> > > }
> > >
> > > -static const struct phy_ops noop_ops = {
> > > - .power_on = cdns_torrent_noop_phy_on,
> > > - .owner = THIS_MODULE,
> > > -};
> > > -
> > > static
> > > int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy)
> > > {
> > > @@ -2282,7 +2277,6 @@ static int cdns_torrent_phy_probe(struct
> > platform_device *pdev)
> > > struct device_node *child;
> > > int ret, subnodes, node = 0, i;
> > > u32 total_num_lanes = 0;
> > > - int already_configured;
> > > u8 init_dp_regmap = 0;
> > > u32 phy_type;
> > >
> > > @@ -2321,20 +2315,16 @@ static int cdns_torrent_phy_probe(struct
> > platform_device *pdev)
> > > if (ret)
> > > return ret;
> > >
> > > - regmap_field_read(cdns_phy->phy_pma_cmn_ctrl_1,
> > &already_configured);
> > > -
> > > - if (!already_configured) {
> > > - ret = cdns_torrent_reset(cdns_phy);
> > > - if (ret)
> > > - goto clk_cleanup;
> > > + ret = cdns_torrent_reset(cdns_phy);
> > > + if (ret)
> > > + goto clk_cleanup;
> > >
> > > - ret = cdns_torrent_clk(cdns_phy);
> > > - if (ret)
> > > - goto clk_cleanup;
> > > + ret = cdns_torrent_clk(cdns_phy);
> > > + if (ret)
> > > + goto clk_cleanup;
> > >
> > > /* Enable APB */
> > > - reset_control_deassert(cdns_phy->apb_rst);
> > > - }
> > > + reset_control_deassert(cdns_phy->apb_rst);
> > >
> > > for_each_available_child_of_node(dev->of_node, child) {
> > > struct phy *gphy;
> > > @@ -2404,10 +2394,7 @@ static int cdns_torrent_phy_probe(struct
> > platform_device *pdev)
> > > of_property_read_u32(child, "cdns,ssc-mode",
> > > &cdns_phy->phys[node].ssc_mode);
> > >
> > > - if (!already_configured)
> > > - gphy = devm_phy_create(dev, child,
> > &cdns_torrent_phy_ops);
> > > - else
> > > - gphy = devm_phy_create(dev, child, &noop_ops);
> > > + gphy = devm_phy_create(dev, child, &cdns_torrent_phy_ops);
> > > if (IS_ERR(gphy)) {
> > > ret = PTR_ERR(gphy);
> > > goto put_child;
> > > @@ -2490,7 +2477,7 @@ static int cdns_torrent_phy_probe(struct
> > platform_device *pdev)
> > > goto put_lnk_rst;
> > > }
> > >
> > > - if (cdns_phy->nsubnodes > 1 && !already_configured) {
> > > + if (cdns_phy->nsubnodes > 1) {
> > > ret = cdns_torrent_phy_configure_multilink(cdns_phy);
> > > if (ret)
> > > goto put_lnk_rst;
> > > --
> > > 2.33.1
> > >
> > >
> > >
> > **************************************************************
> > ********
> > > This email and attachments contain Ambarella Proprietary and/or Confidential
> > Information and is intended solely for the use of the individual(s) to whom it is
> > addressed. Any unauthorized review, use, disclosure, distribute, copy, or print is
> > prohibited. If you are not an intended recipient, please contact the sender by
> > reply email and destroy all copies of the original message. Thank you.
You do realize this is not OK in public emails... Pls fix
> >
> > Aha!!!
> >
> > Okay destroyed this now!
> >
> > --
> > ~Vinod
> >
> > ##############################################################
> > ########
> > This EXTERNAL email has been scanned by Proofpoint Email Protect service.
>
> Regards,
> Li
--
~Vinod
next prev parent reply other threads:[~2021-12-23 12:44 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-26 5:06 [PATCH] Revert "phy: cadence-torrent: Do not configure SERDES if it's already configured" Li Chen
2021-11-26 5:06 ` Li Chen
2021-12-23 5:27 ` Vinod Koul
2021-12-23 5:27 ` Vinod Koul
2021-12-23 6:27 ` [EXT] " Li Chen
2021-12-23 6:27 ` Li Chen
2021-12-23 12:44 ` Vinod Koul [this message]
2021-12-23 12:44 ` Vinod Koul
2021-12-31 8:10 ` Li Chen
2021-12-31 8:10 ` Li Chen
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=YcRvL85x9Q1dkvRn@matsya \
--to=vkoul@kernel.org \
--cc=dan.carpenter@oracle.com \
--cc=kishon@ti.com \
--cc=lchen@ambarella.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=p.zabel@pengutronix.de \
--cc=sjakhade@cadence.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.