Message ID | 1574604530-9024-2-git-send-email-akinobu.mita@gmail.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | add header file for kelvin to/from Celsius conversion helpers | expand |
On Sun, Nov 24, 2019 at 4:09 PM Akinobu Mita <akinobu.mita@gmail.com> wrote: > > There are several helper macros to convert kelvin to/from Celsius in > <linux/thermal.h> for thermal drivers. These are useful for any other > drivers or subsystems, but it's odd to include <linux/thermal.h> just for > the helpers. > > This adds a new <linux/temperature.h> that provides the equivalent inline > functions for any drivers or subsystems. It is intended to replace the > helpers in <linux/thermal.h>. > > Cc: Sujith Thomas <sujith.thomas@intel.com> > Cc: Darren Hart <dvhart@infradead.org> > Cc: Andy Shevchenko <andy@infradead.org> > Cc: Zhang Rui <rui.zhang@intel.com> > Cc: Eduardo Valentin <edubezval@gmail.com> > Cc: Daniel Lezcano <daniel.lezcano@linaro.org> > Cc: Amit Kucheria <amit.kucheria@verdurent.com> > Cc: Jean Delvare <jdelvare@suse.com> > Cc: Guenter Roeck <linux@roeck-us.net> > Cc: Keith Busch <kbusch@kernel.org> > Cc: Jens Axboe <axboe@fb.com> > Cc: Christoph Hellwig <hch@lst.de> > Cc: Sagi Grimberg <sagi@grimberg.me> > Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> > --- > include/linux/temperature.h | 39 +++++++++++++++++++++++++++++++++++++++ > include/linux/thermal.h | 1 + > --- a/include/linux/thermal.h > +++ b/include/linux/thermal.h > @@ -14,6 +14,7 @@ > #include <linux/idr.h> > #include <linux/device.h> > #include <linux/sysfs.h> > +#include <linux/temperature.h> > #include <linux/workqueue.h> > #include <uapi/linux/thermal.h> I don't see any users of it. Why did you include?
2019年11月24日(日) 23:57 Andy Shevchenko <andy.shevchenko@gmail.com>: > > On Sun, Nov 24, 2019 at 4:09 PM Akinobu Mita <akinobu.mita@gmail.com> wrote: > > > > There are several helper macros to convert kelvin to/from Celsius in > > <linux/thermal.h> for thermal drivers. These are useful for any other > > drivers or subsystems, but it's odd to include <linux/thermal.h> just for > > the helpers. > > > > This adds a new <linux/temperature.h> that provides the equivalent inline > > functions for any drivers or subsystems. It is intended to replace the > > helpers in <linux/thermal.h>. > > > > Cc: Sujith Thomas <sujith.thomas@intel.com> > > Cc: Darren Hart <dvhart@infradead.org> > > Cc: Andy Shevchenko <andy@infradead.org> > > Cc: Zhang Rui <rui.zhang@intel.com> > > Cc: Eduardo Valentin <edubezval@gmail.com> > > Cc: Daniel Lezcano <daniel.lezcano@linaro.org> > > Cc: Amit Kucheria <amit.kucheria@verdurent.com> > > Cc: Jean Delvare <jdelvare@suse.com> > > Cc: Guenter Roeck <linux@roeck-us.net> > > Cc: Keith Busch <kbusch@kernel.org> > > Cc: Jens Axboe <axboe@fb.com> > > Cc: Christoph Hellwig <hch@lst.de> > > Cc: Sagi Grimberg <sagi@grimberg.me> > > Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> > > --- > > include/linux/temperature.h | 39 +++++++++++++++++++++++++++++++++++++++ > > > include/linux/thermal.h | 1 + > > > > --- a/include/linux/thermal.h > > +++ b/include/linux/thermal.h > > @@ -14,6 +14,7 @@ > > #include <linux/idr.h> > > #include <linux/device.h> > > #include <linux/sysfs.h> > > +#include <linux/temperature.h> > > #include <linux/workqueue.h> > > #include <uapi/linux/thermal.h> > > I don't see any users of it. Why did you include? The rest of this patch series starts using it. I decided to include <linux/temperature.h> from <linux/thermal.h> because the existing <linux/thermal.h> provides the conversion helpers. However, not all of the thermal drivers require these conversion helpers, so we can change to include <linux/temperature.h> from each thermal driver instead of including it from <linux/thermal.h>. Which way do you prefer?
On Mon, Nov 25, 2019 at 4:30 PM Akinobu Mita <akinobu.mita@gmail.com> wrote: > 2019年11月24日(日) 23:57 Andy Shevchenko <andy.shevchenko@gmail.com>: > > On Sun, Nov 24, 2019 at 4:09 PM Akinobu Mita <akinobu.mita@gmail.com> wrote: > > > include/linux/thermal.h | 1 + > > > --- a/include/linux/thermal.h > > > +++ b/include/linux/thermal.h > > > @@ -14,6 +14,7 @@ > > > #include <linux/idr.h> > > > #include <linux/device.h> > > > #include <linux/sysfs.h> > > > +#include <linux/temperature.h> > > > #include <linux/workqueue.h> > > > #include <uapi/linux/thermal.h> > > > > I don't see any users of it. Why did you include? > > The rest of this patch series starts using it. > > I decided to include <linux/temperature.h> from <linux/thermal.h> because > the existing <linux/thermal.h> provides the conversion helpers. > > However, not all of the thermal drivers require these conversion helpers, > so we can change to include <linux/temperature.h> from each thermal driver > instead of including it from <linux/thermal.h>. > > Which way do you prefer? I think users should include new header explicitly.
diff --git a/include/linux/temperature.h b/include/linux/temperature.h new file mode 100644 index 0000000..d7e2aed --- /dev/null +++ b/include/linux/temperature.h @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_TEMPERATURE_H +#define _LINUX_TEMPERATURE_H + +#include <linux/kernel.h> + +#define ABSOLUTE_ZERO_MILLICELSIUS -273150 + +static inline long kelvin_to_millicelsius(long t) +{ + return t * 1000 + ABSOLUTE_ZERO_MILLICELSIUS; +} + +static inline long millicelsius_to_kelvin(long t) +{ + return DIV_ROUND_CLOSEST(t - ABSOLUTE_ZERO_MILLICELSIUS, 1000); +} + +static inline long deci_kelvin_to_celsius(long t) +{ + return DIV_ROUND_CLOSEST(t * 100 + ABSOLUTE_ZERO_MILLICELSIUS, 1000); +} + +static inline long celsius_to_deci_kelvin(long t) +{ + return t * 10 - DIV_ROUND_CLOSEST(ABSOLUTE_ZERO_MILLICELSIUS, 100); +} + +static inline long deci_kelvin_to_millicelsius(long t) +{ + return t * 100 + ABSOLUTE_ZERO_MILLICELSIUS; +} + +static inline long millicelsius_to_deci_kelvin(long t) +{ + return DIV_ROUND_CLOSEST(t - ABSOLUTE_ZERO_MILLICELSIUS, 100); +} + +#endif /* _LINUX_TEMPERATURE_H */ diff --git a/include/linux/thermal.h b/include/linux/thermal.h index e45659c..ed549e4 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -14,6 +14,7 @@ #include <linux/idr.h> #include <linux/device.h> #include <linux/sysfs.h> +#include <linux/temperature.h> #include <linux/workqueue.h> #include <uapi/linux/thermal.h>
There are several helper macros to convert kelvin to/from Celsius in <linux/thermal.h> for thermal drivers. These are useful for any other drivers or subsystems, but it's odd to include <linux/thermal.h> just for the helpers. This adds a new <linux/temperature.h> that provides the equivalent inline functions for any drivers or subsystems. It is intended to replace the helpers in <linux/thermal.h>. Cc: Sujith Thomas <sujith.thomas@intel.com> Cc: Darren Hart <dvhart@infradead.org> Cc: Andy Shevchenko <andy@infradead.org> Cc: Zhang Rui <rui.zhang@intel.com> Cc: Eduardo Valentin <edubezval@gmail.com> Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: Amit Kucheria <amit.kucheria@verdurent.com> Cc: Jean Delvare <jdelvare@suse.com> Cc: Guenter Roeck <linux@roeck-us.net> Cc: Keith Busch <kbusch@kernel.org> Cc: Jens Axboe <axboe@fb.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> --- include/linux/temperature.h | 39 +++++++++++++++++++++++++++++++++++++++ include/linux/thermal.h | 1 + 2 files changed, 40 insertions(+) create mode 100644 include/linux/temperature.h