Re: [PATCHv4 07/48] thermal: core: move passive attr to tz->device.groups

From: Zhang Rui
Date: Thu Jun 16 2016 - 00:16:21 EST


On å, 2016-06-16 at 11:27 +0800, Zhang Rui wrote:
> On ä, 2016-05-30 at 23:18 -0700, Eduardo Valentin wrote:
> >
> > This patch moves the passive attribute to tz->device.groups. Moving
> > the
> > passive attribute also requires a .is_visible() callback
> > implementation
> > for its attribute group.
> >
> > The logic behind the visibility of passive attribute is kept the
> > same.
> > We only expose the passive attribute if the thermal driver has
> > exposed
> > at least one passive trip point.
> >
> No, the passive attribute is only present for zones in which the
> passive cooling policy is not supported by native thermal driver.
>
> >
> > Cc: Zhang Rui <rui.zhang@xxxxxxxxx>
> > Cc: linux-pm@xxxxxxxxxxxxxxx
> > Cc: linux-kernel@xxxxxxxxxxxxxxx
> > Signed-off-by: Eduardo Valentin <edubezval@xxxxxxxxx>
> > ---
> > Âdrivers/thermal/thermal_core.c | 42
> > +++++++++++++++++++++++++++++++++---------
> > Â1 file changed, 33 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/thermal/thermal_core.c
> > b/drivers/thermal/thermal_core.c
> > index 19fea9e..efc190c 100644
> > --- a/drivers/thermal/thermal_core.c
> > +++ b/drivers/thermal/thermal_core.c
> > @@ -1056,9 +1056,42 @@ static struct attribute_group
> > thermal_zone_mode_attribute_group = {
> > Â .is_visible = thermal_zone_mode_is_visible,
> > Â};
> > Â
> > +/* We expose passive only if passive trips are present */
> > +static struct attribute *thermal_zone_passive_attrs[] = {
> > + &dev_attr_passive.attr,
> > + NULL,
> > +};
> > +
> > +static umode_t thermal_zone_passive_is_visible(struct kobject
> > *kobj,
> > + ÂÂÂÂÂÂÂstruct attribute
> > *attr,
> > + ÂÂÂÂÂÂÂint attrno)
> > +{
> > + struct device *dev = container_of(kobj, struct device,
> > kobj);
> > + struct thermal_zone_device *tz;
> > + enum thermal_trip_type trip_type;
> > + int count;
> > +
> > + tz = container_of(dev, struct thermal_zone_device,
> > device);
> > +
> > + for (count = 0; count < tz->trips; count++) {
> > + tz->ops->get_trip_type(tz, count, &trip_type);
> > +
> > + if (trip_type == THERMAL_TRIP_PASSIVE)
> > + return attr->mode;
> we should
> return 0;
> >
> > + }
> > +
> > + return 0;
> and
> return attr->mode;
>
refreshed patch attached, please review.