Re: [PATCH v3 1/5] thermal: of: Extend of-thermal.c to provide number of trip points

From: Lukasz Majewski
Date: Mon Dec 08 2014 - 19:20:18 EST


On Mon, 8 Dec 2014 15:52:49 -0400
Eduardo Valentin <edubezval@xxxxxxxxx> wrote:

Hi Eduardo,

> On Mon, Dec 08, 2014 at 06:04:17PM +0100, Lukasz Majewski wrote:
> > This patch extends the of-thermal.c to provide information about
> > number of available trip points.
> >
> > Signed-off-by: Lukasz Majewski <l.majewski@xxxxxxxxxxx>
> > ---
> > Changes for v3:
> > - Exporting of_thermal_get_ntrips symbol as a GPL
> > - Fix build error when CONFIG_THERMAL_OF is disabled
> >
> > Changes for v2:
> > - Provide detailed (doxygen like) description of the
> > of_thermal_get_ntrips() method
> > - Check for data pointer not being NULL
> > ---
> > drivers/thermal/of-thermal.c | 21 +++++++++++++++++++++
> > drivers/thermal/thermal_core.h | 5 +++++
> > 2 files changed, 26 insertions(+)
> >
> > diff --git a/drivers/thermal/of-thermal.c
> > b/drivers/thermal/of-thermal.c index b7982f0..7facd23 100644
> > --- a/drivers/thermal/of-thermal.c
> > +++ b/drivers/thermal/of-thermal.c
> > @@ -112,6 +112,27 @@ static int of_thermal_get_temp(struct
> > thermal_zone_device *tz, return
> > data->ops->get_temp(data->sensor_data, temp); }
> >
> > +/**
> > + * of_thermal_get_ntrips - function to export number of available
> > trip
> > + * points.
> > + * @tz: pointer to a thermal zone
> > + *
> > + * This function is a globally visible wrapper to get number of
> > trip points
> > + * stored in the local struct __thermal_zone
> > + *
> > + * Return: number of available trip points, -ENODEV when data not
> > available
> > + */
> > +int of_thermal_get_ntrips(struct thermal_zone_device *tz)
> > +{
> > + struct __thermal_zone *data = tz->devdata;
> > +
> > + if (!data || IS_ERR(data))
> > + return -ENODEV;
> > +
> > + return data->ntrips;
> > +}
> > +EXPORT_SYMBOL_GPL(of_thermal_get_ntrips);
> > +
> > static int of_thermal_get_trend(struct thermal_zone_device *tz,
> > int trip, enum thermal_trend *trend)
> > {
> > diff --git a/drivers/thermal/thermal_core.h
> > b/drivers/thermal/thermal_core.h index d15d243..1cc5041 100644
> > --- a/drivers/thermal/thermal_core.h
> > +++ b/drivers/thermal/thermal_core.h
> > @@ -89,9 +89,14 @@ static inline void
> > thermal_gov_user_space_unregister(void) {} #ifdef CONFIG_THERMAL_OF
> > int of_parse_thermal_zones(void);
> > void of_thermal_destroy_zones(void);
> > +int of_thermal_get_ntrips(struct thermal_zone_device *);
>
> Lukasz,
>
> Here is a question that applies to all patches in this series adding
> functions in this header.
>
> i suppose you intend to use these new functions in driver code, right?

Yes, right.

> Add them here, will limit their usage to code inside drivers/thermal.

This is my intention - at least for now the use case is to configure the
thermal driver (i.e. Exynos TMU). Other drivers (e.g. TI) can benefit
from this code too.

>
> Shouldn't these new APIs be declared under include/linux/thermal.h?

I'd prefer to leave this API in ./drivers/thermal and move them to
./include/linux/thermal.h only when other parts of the kernel require
it.

>
> This way, they can be be available to other parts of the kernel too.
>
>
> > #else
> > static inline int of_parse_thermal_zones(void) { return 0; }
> > static inline void of_thermal_destroy_zones(void) { }
> > +static inline int of_thermal_get_ntrips(struct thermal_zone_device
> > *tz) +{
> > + return 0;
> > +}
> > #endif
> >
> > #endif /* __THERMAL_CORE_H__ */
> > --
> > 2.0.0.rc2
> >

Best Regards,

Lukasz Majewski

Attachment: pgpjhAbwYXexG.pgp
Description: OpenPGP digital signature