Message ID | 20221129153914.2699041-1-cyndis@kapsi.fi |
---|---|
State | New |
Headers | show |
Series | thermal: tegra-bpmp: Check if BPMP supports trip points | expand |
On Thu, Jan 26, 2023 at 04:08:03PM +0100, Daniel Lezcano wrote: > > Hi Thierry, > > On 26/01/2023 15:52, Thierry Reding wrote: > > On Tue, Nov 29, 2022 at 05:39:14PM +0200, Mikko Perttunen wrote: > > > From: Mikko Perttunen <mperttunen@nvidia.com> > > > > > > Check if BPMP supports thermal trip points, and if not, > > > do not expose the .set_trips callback to the thermal core > > > framework. This can happen in virtualized environments > > > where asynchronous communication with VM BPMP drivers is not > > > available. > > > > > > Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> > > > --- > > > drivers/thermal/tegra/tegra-bpmp-thermal.c | 52 +++++++++++++++++++++- > > > 1 file changed, 51 insertions(+), 1 deletion(-) > > > > Applied, thanks. > > I prefer you provide an Acked-by and I take the thermal related patches. > Especially in this period where we are reworking the framework with the > thermal trip points ;) Sorry, my bad. I misread this as belonging to drivers/firmware/tegra which goes in via ARM SoC. I'll drop this from the Tegra tree. Feel free to pick this up: Acked-by: Thierry Reding <treding@nvidia.com>
On 26/01/2023 16:42, Thierry Reding wrote: > On Thu, Jan 26, 2023 at 04:08:03PM +0100, Daniel Lezcano wrote: >> >> Hi Thierry, >> >> On 26/01/2023 15:52, Thierry Reding wrote: >>> On Tue, Nov 29, 2022 at 05:39:14PM +0200, Mikko Perttunen wrote: >>>> From: Mikko Perttunen <mperttunen@nvidia.com> >>>> >>>> Check if BPMP supports thermal trip points, and if not, >>>> do not expose the .set_trips callback to the thermal core >>>> framework. This can happen in virtualized environments >>>> where asynchronous communication with VM BPMP drivers is not >>>> available. >>>> >>>> Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> >>>> --- >>>> drivers/thermal/tegra/tegra-bpmp-thermal.c | 52 +++++++++++++++++++++- >>>> 1 file changed, 51 insertions(+), 1 deletion(-) >>> >>> Applied, thanks. >> >> I prefer you provide an Acked-by and I take the thermal related patches. >> Especially in this period where we are reworking the framework with the >> thermal trip points ;) > > Sorry, my bad. I misread this as belonging to drivers/firmware/tegra > which goes in via ARM SoC. No worries ;) > I'll drop this from the Tegra tree. Feel free > to pick this up: Ok, thanks > Acked-by: Thierry Reding <treding@nvidia.com>
Hi Daniel, On 26/01/2023 16:07, Daniel Lezcano wrote: > On 26/01/2023 16:42, Thierry Reding wrote: >> On Thu, Jan 26, 2023 at 04:08:03PM +0100, Daniel Lezcano wrote: >>> >>> Hi Thierry, >>> >>> On 26/01/2023 15:52, Thierry Reding wrote: >>>> On Tue, Nov 29, 2022 at 05:39:14PM +0200, Mikko Perttunen wrote: >>>>> From: Mikko Perttunen <mperttunen@nvidia.com> >>>>> >>>>> Check if BPMP supports thermal trip points, and if not, >>>>> do not expose the .set_trips callback to the thermal core >>>>> framework. This can happen in virtualized environments >>>>> where asynchronous communication with VM BPMP drivers is not >>>>> available. >>>>> >>>>> Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> >>>>> --- >>>>> drivers/thermal/tegra/tegra-bpmp-thermal.c | 52 >>>>> +++++++++++++++++++++- >>>>> 1 file changed, 51 insertions(+), 1 deletion(-) >>>> >>>> Applied, thanks. >>> >>> I prefer you provide an Acked-by and I take the thermal related patches. >>> Especially in this period where we are reworking the framework with the >>> thermal trip points ;) >> >> Sorry, my bad. I misread this as belonging to drivers/firmware/tegra >> which goes in via ARM SoC. > > No worries ;) > >> I'll drop this from the Tegra tree. Feel free >> to pick this up: > > Ok, thanks > >> Acked-by: Thierry Reding <treding@nvidia.com> I don't see this one in -next. Are you able to pick this one up now? Thanks! Jon
On 03/04/2023 12:22, Jon Hunter wrote: > Hi Daniel, > > On 26/01/2023 16:07, Daniel Lezcano wrote: >> On 26/01/2023 16:42, Thierry Reding wrote: >>> On Thu, Jan 26, 2023 at 04:08:03PM +0100, Daniel Lezcano wrote: >>>> >>>> Hi Thierry, >>>> >>>> On 26/01/2023 15:52, Thierry Reding wrote: >>>>> On Tue, Nov 29, 2022 at 05:39:14PM +0200, Mikko Perttunen wrote: >>>>>> From: Mikko Perttunen <mperttunen@nvidia.com> >>>>>> >>>>>> Check if BPMP supports thermal trip points, and if not, >>>>>> do not expose the .set_trips callback to the thermal core >>>>>> framework. This can happen in virtualized environments >>>>>> where asynchronous communication with VM BPMP drivers is not >>>>>> available. >>>>>> >>>>>> Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> >>>>>> --- >>>>>> drivers/thermal/tegra/tegra-bpmp-thermal.c | 52 >>>>>> +++++++++++++++++++++- >>>>>> 1 file changed, 51 insertions(+), 1 deletion(-) >>>>> >>>>> Applied, thanks. >>>> >>>> I prefer you provide an Acked-by and I take the thermal related >>>> patches. >>>> Especially in this period where we are reworking the framework with the >>>> thermal trip points ;) >>> >>> Sorry, my bad. I misread this as belonging to drivers/firmware/tegra >>> which goes in via ARM SoC. >> >> No worries ;) >> >>> I'll drop this from the Tegra tree. Feel free >>> to pick this up: >> >> Ok, thanks >> >>> Acked-by: Thierry Reding <treding@nvidia.com> > > > I don't see this one in -next. Are you able to pick this one up now? Before going in -next, it will go through bleeding-edge then -next, logically tomorrow.
diff --git a/drivers/thermal/tegra/tegra-bpmp-thermal.c b/drivers/thermal/tegra/tegra-bpmp-thermal.c index 0b7a1a1948cb..c76e1ea62c8a 100644 --- a/drivers/thermal/tegra/tegra-bpmp-thermal.c +++ b/drivers/thermal/tegra/tegra-bpmp-thermal.c @@ -163,19 +163,69 @@ static int tegra_bpmp_thermal_get_num_zones(struct tegra_bpmp *bpmp, return 0; } +static int tegra_bpmp_thermal_trips_supported(struct tegra_bpmp *bpmp, bool *supported) +{ + struct mrq_thermal_host_to_bpmp_request req; + union mrq_thermal_bpmp_to_host_response reply; + struct tegra_bpmp_message msg; + int err; + + memset(&req, 0, sizeof(req)); + req.type = CMD_THERMAL_QUERY_ABI; + req.query_abi.type = CMD_THERMAL_SET_TRIP; + + memset(&msg, 0, sizeof(msg)); + msg.mrq = MRQ_THERMAL; + msg.tx.data = &req; + msg.tx.size = sizeof(req); + msg.rx.data = &reply; + msg.rx.size = sizeof(reply); + + err = tegra_bpmp_transfer(bpmp, &msg); + if (err) + return err; + + if (msg.rx.ret == 0) { + *supported = true; + return 0; + } else if (msg.rx.ret == -BPMP_ENODEV) { + *supported = false; + return 0; + } else { + return -EINVAL; + } +} + static const struct thermal_zone_device_ops tegra_bpmp_of_thermal_ops = { .get_temp = tegra_bpmp_thermal_get_temp, .set_trips = tegra_bpmp_thermal_set_trips, }; +static const struct thermal_zone_device_ops tegra_bpmp_of_thermal_ops_notrips = { + .get_temp = tegra_bpmp_thermal_get_temp, +}; + static int tegra_bpmp_thermal_probe(struct platform_device *pdev) { struct tegra_bpmp *bpmp = dev_get_drvdata(pdev->dev.parent); + const struct thermal_zone_device_ops *thermal_ops; struct tegra_bpmp_thermal *tegra; struct thermal_zone_device *tzd; unsigned int i, max_num_zones; + bool supported; int err; + err = tegra_bpmp_thermal_trips_supported(bpmp, &supported); + if (err) { + dev_err(&pdev->dev, "failed to determine if trip points are supported\n"); + return err; + } + + if (supported) + thermal_ops = &tegra_bpmp_of_thermal_ops; + else + thermal_ops = &tegra_bpmp_of_thermal_ops_notrips; + tegra = devm_kzalloc(&pdev->dev, sizeof(*tegra), GFP_KERNEL); if (!tegra) return -ENOMEM; @@ -213,7 +263,7 @@ static int tegra_bpmp_thermal_probe(struct platform_device *pdev) } tzd = devm_thermal_of_zone_register( - &pdev->dev, i, zone, &tegra_bpmp_of_thermal_ops); + &pdev->dev, i, zone, thermal_ops); if (IS_ERR(tzd)) { if (PTR_ERR(tzd) == -EPROBE_DEFER) return -EPROBE_DEFER;