From: Roger Quadros <rogerq@kernel.org> To: "Théo Lebrun" <theo.lebrun@bootlin.com>, "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>, "Rob Herring" <robh+dt@kernel.org>, "Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>, "Conor Dooley" <conor+dt@kernel.org>, "Peter Chen" <peter.chen@kernel.org>, "Pawel Laszczak" <pawell@cadence.com>, "Nishanth Menon" <nm@ti.com>, "Vignesh Raghavendra" <vigneshr@ti.com>, "Tero Kristo" <kristo@kernel.org> Cc: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>, "Grégory Clement" <gregory.clement@bootlin.com>, "Kevin Hilman" <khilman@kernel.org>, "Alan Stern" <stern@rowland.harvard.edu>, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v4 4/9] usb: cdns3-ti: support reset-on-resume behavior Date: Thu, 7 Mar 2024 14:34:31 +0200 [thread overview] Message-ID: <6f9c1ee1-3b3a-44e3-96c6-ae1bef52d51d@kernel.org> (raw) In-Reply-To: <20240307-j7200-usb-suspend-v4-4-5ec7615431f3@bootlin.com> On 07/03/2024 11:55, Théo Lebrun wrote: > Add match data support, with one boolean to indicate whether the > hardware resets after a system-wide suspend. If hardware resets, we > force execute ->runtime_resume() at system-wide resume to run the > hardware init sequence. > > No compatible exploits this functionality, just yet. > > Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com> > --- > drivers/usb/cdns3/cdns3-ti.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/drivers/usb/cdns3/cdns3-ti.c b/drivers/usb/cdns3/cdns3-ti.c > index 4c8a557e6a6f..f76327566798 100644 > --- a/drivers/usb/cdns3/cdns3-ti.c > +++ b/drivers/usb/cdns3/cdns3-ti.c > @@ -57,9 +57,14 @@ struct cdns_ti { > unsigned vbus_divider:1; > struct clk *usb2_refclk; > struct clk *lpm_clk; > + const struct cdns_ti_match_data *match_data; > int usb2_refclk_rate_code; > }; > > +struct cdns_ti_match_data { > + bool reset_on_resume; > +}; > + > static const int cdns_ti_rate_table[] = { /* in KHZ */ > 9600, > 10000, > @@ -101,6 +106,7 @@ static int cdns_ti_probe(struct platform_device *pdev) > platform_set_drvdata(pdev, data); > > data->dev = dev; > + data->match_data = device_get_match_data(dev); > > data->usbss = devm_platform_ioremap_resource(pdev, 0); > if (IS_ERR(data->usbss)) { > @@ -220,8 +226,29 @@ static int cdns_ti_runtime_resume(struct device *dev) > return 0; > } > > +static int cdns_ti_suspend(struct device *dev) > +{ > + struct cdns_ti *data = dev_get_drvdata(dev); > + > + if (data->match_data && data->match_data->reset_on_resume) > + return pm_runtime_force_suspend(dev); > + else > + return 0; > +} > + > +static int cdns_ti_resume(struct device *dev) > +{ > + struct cdns_ti *data = dev_get_drvdata(dev); > + Instead of this just do Reset and re-init here on affected platforms. This is after you remove reset/re-init code from .runtime_resume(). > + if (data->match_data && data->match_data->reset_on_resume) > + return pm_runtime_force_resume(dev); > + else > + return 0; > +} > + > static const struct dev_pm_ops cdns_ti_pm_ops = { > RUNTIME_PM_OPS(NULL, cdns_ti_runtime_resume, NULL) > + SYSTEM_SLEEP_PM_OPS(cdns_ti_suspend, cdns_ti_resume) > }; > > static const struct of_device_id cdns_ti_of_match[] = { > -- cheers, -roger _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Roger Quadros <rogerq@kernel.org> To: "Théo Lebrun" <theo.lebrun@bootlin.com>, "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>, "Rob Herring" <robh+dt@kernel.org>, "Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>, "Conor Dooley" <conor+dt@kernel.org>, "Peter Chen" <peter.chen@kernel.org>, "Pawel Laszczak" <pawell@cadence.com>, "Nishanth Menon" <nm@ti.com>, "Vignesh Raghavendra" <vigneshr@ti.com>, "Tero Kristo" <kristo@kernel.org> Cc: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>, "Grégory Clement" <gregory.clement@bootlin.com>, "Kevin Hilman" <khilman@kernel.org>, "Alan Stern" <stern@rowland.harvard.edu>, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v4 4/9] usb: cdns3-ti: support reset-on-resume behavior Date: Thu, 7 Mar 2024 14:34:31 +0200 [thread overview] Message-ID: <6f9c1ee1-3b3a-44e3-96c6-ae1bef52d51d@kernel.org> (raw) In-Reply-To: <20240307-j7200-usb-suspend-v4-4-5ec7615431f3@bootlin.com> On 07/03/2024 11:55, Théo Lebrun wrote: > Add match data support, with one boolean to indicate whether the > hardware resets after a system-wide suspend. If hardware resets, we > force execute ->runtime_resume() at system-wide resume to run the > hardware init sequence. > > No compatible exploits this functionality, just yet. > > Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com> > --- > drivers/usb/cdns3/cdns3-ti.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/drivers/usb/cdns3/cdns3-ti.c b/drivers/usb/cdns3/cdns3-ti.c > index 4c8a557e6a6f..f76327566798 100644 > --- a/drivers/usb/cdns3/cdns3-ti.c > +++ b/drivers/usb/cdns3/cdns3-ti.c > @@ -57,9 +57,14 @@ struct cdns_ti { > unsigned vbus_divider:1; > struct clk *usb2_refclk; > struct clk *lpm_clk; > + const struct cdns_ti_match_data *match_data; > int usb2_refclk_rate_code; > }; > > +struct cdns_ti_match_data { > + bool reset_on_resume; > +}; > + > static const int cdns_ti_rate_table[] = { /* in KHZ */ > 9600, > 10000, > @@ -101,6 +106,7 @@ static int cdns_ti_probe(struct platform_device *pdev) > platform_set_drvdata(pdev, data); > > data->dev = dev; > + data->match_data = device_get_match_data(dev); > > data->usbss = devm_platform_ioremap_resource(pdev, 0); > if (IS_ERR(data->usbss)) { > @@ -220,8 +226,29 @@ static int cdns_ti_runtime_resume(struct device *dev) > return 0; > } > > +static int cdns_ti_suspend(struct device *dev) > +{ > + struct cdns_ti *data = dev_get_drvdata(dev); > + > + if (data->match_data && data->match_data->reset_on_resume) > + return pm_runtime_force_suspend(dev); > + else > + return 0; > +} > + > +static int cdns_ti_resume(struct device *dev) > +{ > + struct cdns_ti *data = dev_get_drvdata(dev); > + Instead of this just do Reset and re-init here on affected platforms. This is after you remove reset/re-init code from .runtime_resume(). > + if (data->match_data && data->match_data->reset_on_resume) > + return pm_runtime_force_resume(dev); > + else > + return 0; > +} > + > static const struct dev_pm_ops cdns_ti_pm_ops = { > RUNTIME_PM_OPS(NULL, cdns_ti_runtime_resume, NULL) > + SYSTEM_SLEEP_PM_OPS(cdns_ti_suspend, cdns_ti_resume) > }; > > static const struct of_device_id cdns_ti_of_match[] = { > -- cheers, -roger
next prev parent reply other threads:[~2024-03-07 12:34 UTC|newest] Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-07 9:55 [PATCH v4 0/9] usb: cdns: fix suspend on J7200 by assuming reset-on-resume Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 9:55 ` [PATCH v4 1/9] dt-bindings: usb: ti,j721e-usb: fix compatible list Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 15:02 ` Rob Herring 2024-03-07 15:02 ` Rob Herring 2024-03-07 18:14 ` Conor Dooley 2024-03-07 18:14 ` Conor Dooley 2024-03-07 9:55 ` [PATCH v4 2/9] dt-bindings: usb: ti,j721e-usb: add ti,j7200-usb compatible Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 14:21 ` Rob Herring 2024-03-07 14:21 ` Rob Herring 2024-03-07 14:50 ` Théo Lebrun 2024-03-07 14:50 ` Théo Lebrun 2024-03-07 9:55 ` [PATCH v4 3/9] usb: cdns3-ti: move reg writes from probe into ->runtime_resume() Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 12:31 ` Roger Quadros 2024-03-07 12:31 ` Roger Quadros 2024-03-07 14:39 ` Théo Lebrun 2024-03-07 14:39 ` Théo Lebrun 2024-03-07 9:55 ` [PATCH v4 4/9] usb: cdns3-ti: support reset-on-resume behavior Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 12:34 ` Roger Quadros [this message] 2024-03-07 12:34 ` Roger Quadros 2024-03-08 21:58 ` Kevin Hilman 2024-03-08 21:58 ` Kevin Hilman 2024-03-14 13:40 ` Théo Lebrun 2024-03-14 13:40 ` Théo Lebrun 2024-03-07 9:55 ` [PATCH v4 5/9] usb: cdns3-ti: pass auxdata from match data to of_platform_populate() Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 12:38 ` Roger Quadros 2024-03-07 12:38 ` Roger Quadros 2024-03-07 14:47 ` Théo Lebrun 2024-03-07 14:47 ` Théo Lebrun 2024-03-07 9:55 ` [PATCH v4 6/9] usb: cdns3: add quirk to platform data for reset-on-resume Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 9:55 ` [PATCH v4 7/9] usb: cdns3-ti: add J7200 support with reset-on-resume behavior Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 9:55 ` [PATCH v4 8/9] arm64: dts: ti: k3-j7200: use J7200-specific USB compatible Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun 2024-03-07 9:55 ` [PATCH v4 9/9] arm64: dts: ti: k3-am64: add USB fallback compatible to J721E Théo Lebrun 2024-03-07 9:55 ` Théo Lebrun
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=6f9c1ee1-3b3a-44e3-96c6-ae1bef52d51d@kernel.org \ --to=rogerq@kernel.org \ --cc=conor+dt@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=gregory.clement@bootlin.com \ --cc=khilman@kernel.org \ --cc=kristo@kernel.org \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-usb@vger.kernel.org \ --cc=nm@ti.com \ --cc=pawell@cadence.com \ --cc=peter.chen@kernel.org \ --cc=robh+dt@kernel.org \ --cc=stern@rowland.harvard.edu \ --cc=theo.lebrun@bootlin.com \ --cc=thomas.petazzoni@bootlin.com \ --cc=vigneshr@ti.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: linkBe 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.