mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 20:02:17 +00:00
![Michael Walle](/assets/img/avatar_default.png)
Some temperature and voltage sensors use a polynomial to convert between raw data points and actual temperature or voltage. The polynomial is usually the result of a curve fitting of the diode characteristic. The BT1 PVT hwmon driver already uses such a polynonmial calculation which is rather generic. Move it to lib/ so other drivers can reuse it. Signed-off-by: Michael Walle <michael@walle.cc> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20220401214032.3738095-2-michael@walle.cc Signed-off-by: Guenter Roeck <linux@roeck-us.net>
35 lines
814 B
C
35 lines
814 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2020 BAIKAL ELECTRONICS, JSC
|
|
*/
|
|
|
|
#ifndef _POLYNOMIAL_H
|
|
#define _POLYNOMIAL_H
|
|
|
|
/*
|
|
* struct polynomial_term - one term descriptor of a polynomial
|
|
* @deg: degree of the term.
|
|
* @coef: multiplication factor of the term.
|
|
* @divider: distributed divider per each degree.
|
|
* @divider_leftover: divider leftover, which couldn't be redistributed.
|
|
*/
|
|
struct polynomial_term {
|
|
unsigned int deg;
|
|
long coef;
|
|
long divider;
|
|
long divider_leftover;
|
|
};
|
|
|
|
/*
|
|
* struct polynomial - a polynomial descriptor
|
|
* @total_divider: total data divider.
|
|
* @terms: polynomial terms, last term must have degree of 0
|
|
*/
|
|
struct polynomial {
|
|
long total_divider;
|
|
struct polynomial_term terms[];
|
|
};
|
|
|
|
long polynomial_calc(const struct polynomial *poly, long data);
|
|
|
|
#endif
|