hwmon: (ntc_thermistor) Support B57330V2103 from EPCOS

This patch adds support for the ntc thermistor B57330V2103 from EPCOS.

Signed-off-by: Johannes Pointner <johannes.pointner@gmail.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Johannes Pointner 2014-07-01 08:05:52 +02:00 committed by Guenter Roeck
parent 3ef0bb6f76
commit ed67f0872b
5 changed files with 57 additions and 2 deletions

View File

@ -3,6 +3,7 @@ NTC Thermistor hwmon sensors
Requires node properties: Requires node properties:
- "compatible" value : one of - "compatible" value : one of
"epcos,b57330v2103"
"murata,ncp15wb473" "murata,ncp15wb473"
"murata,ncp18wb473" "murata,ncp18wb473"
"murata,ncp21wb473" "murata,ncp21wb473"

View File

@ -6,6 +6,11 @@ Supported thermistors from Murata:
Prefixes: 'ncp15wb473', 'ncp18wb473', 'ncp21wb473', 'ncp03wb473', 'ncp15wl333' Prefixes: 'ncp15wb473', 'ncp18wb473', 'ncp21wb473', 'ncp03wb473', 'ncp15wl333'
Datasheet: Publicly available at Murata Datasheet: Publicly available at Murata
Supported thermistors from EPCOS:
* EPCOS NTC Thermistors B57330V2103
Prefixes: b57330v2103
Datasheet: Publicly available at EPCOS
Other NTC thermistors can be supported simply by adding compensation Other NTC thermistors can be supported simply by adding compensation
tables; e.g., NCP15WL333 support is added by the table ncpXXwl333. tables; e.g., NCP15WL333 support is added by the table ncpXXwl333.

View File

@ -1073,7 +1073,7 @@ config SENSORS_NTC_THERMISTOR
Currently, this driver supports Currently, this driver supports
NCP15WB473, NCP18WB473, NCP21WB473, NCP03WB473, and NCP15WL333 NCP15WB473, NCP18WB473, NCP21WB473, NCP03WB473, and NCP15WL333
from Murata. from Murata and B57330V2103 from EPCOS.
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called ntc-thermistor. will be called ntc-thermistor.

View File

@ -51,6 +51,7 @@ static const struct platform_device_id ntc_thermistor_id[] = {
{ "ncp21wb473", TYPE_NCPXXWB473 }, { "ncp21wb473", TYPE_NCPXXWB473 },
{ "ncp03wb473", TYPE_NCPXXWB473 }, { "ncp03wb473", TYPE_NCPXXWB473 },
{ "ncp15wl333", TYPE_NCPXXWL333 }, { "ncp15wl333", TYPE_NCPXXWL333 },
{ "b57330v2103", TYPE_B57330V2103},
{ }, { },
}; };
@ -133,6 +134,47 @@ static const struct ntc_compensation ncpXXwl333[] = {
{ .temp_c = 125, .ohm = 707 }, { .temp_c = 125, .ohm = 707 },
}; };
/*
* The following compensation table is from the specification of EPCOS NTC
* Thermistors Datasheet
*/
static const struct ntc_compensation b57330v2103[] = {
{ .temp_c = -40, .ohm = 190030 },
{ .temp_c = -35, .ohm = 145360 },
{ .temp_c = -30, .ohm = 112060 },
{ .temp_c = -25, .ohm = 87041 },
{ .temp_c = -20, .ohm = 68104 },
{ .temp_c = -15, .ohm = 53665 },
{ .temp_c = -10, .ohm = 42576 },
{ .temp_c = -5, .ohm = 34001 },
{ .temp_c = 0, .ohm = 27326 },
{ .temp_c = 5, .ohm = 22096 },
{ .temp_c = 10, .ohm = 17973 },
{ .temp_c = 15, .ohm = 14703 },
{ .temp_c = 20, .ohm = 12090 },
{ .temp_c = 25, .ohm = 10000 },
{ .temp_c = 30, .ohm = 8311 },
{ .temp_c = 35, .ohm = 6941 },
{ .temp_c = 40, .ohm = 5825 },
{ .temp_c = 45, .ohm = 4911 },
{ .temp_c = 50, .ohm = 4158 },
{ .temp_c = 55, .ohm = 3536 },
{ .temp_c = 60, .ohm = 3019 },
{ .temp_c = 65, .ohm = 2588 },
{ .temp_c = 70, .ohm = 2227 },
{ .temp_c = 75, .ohm = 1924 },
{ .temp_c = 80, .ohm = 1668 },
{ .temp_c = 85, .ohm = 1451 },
{ .temp_c = 90, .ohm = 1266 },
{ .temp_c = 95, .ohm = 1108 },
{ .temp_c = 100, .ohm = 973 },
{ .temp_c = 105, .ohm = 857 },
{ .temp_c = 110, .ohm = 757 },
{ .temp_c = 115, .ohm = 671 },
{ .temp_c = 120, .ohm = 596 },
{ .temp_c = 125, .ohm = 531 },
};
struct ntc_data { struct ntc_data {
struct device *hwmon_dev; struct device *hwmon_dev;
struct ntc_thermistor_platform_data *pdata; struct ntc_thermistor_platform_data *pdata;
@ -173,6 +215,8 @@ static const struct of_device_id ntc_match[] = {
.data = &ntc_thermistor_id[3] }, .data = &ntc_thermistor_id[3] },
{ .compatible = "murata,ncp15wl333", { .compatible = "murata,ncp15wl333",
.data = &ntc_thermistor_id[4] }, .data = &ntc_thermistor_id[4] },
{ .compatible = "epcos,b57330v2103",
.data = &ntc_thermistor_id[5]},
/* Usage of vendor name "ntc" is deprecated */ /* Usage of vendor name "ntc" is deprecated */
{ .compatible = "ntc,ncp15wb473", { .compatible = "ntc,ncp15wb473",
@ -490,6 +534,10 @@ static int ntc_thermistor_probe(struct platform_device *pdev)
data->comp = ncpXXwl333; data->comp = ncpXXwl333;
data->n_comp = ARRAY_SIZE(ncpXXwl333); data->n_comp = ARRAY_SIZE(ncpXXwl333);
break; break;
case TYPE_B57330V2103:
data->comp = b57330v2103;
data->n_comp = ARRAY_SIZE(b57330v2103);
break;
default: default:
dev_err(&pdev->dev, "Unknown device type: %lu(%s)\n", dev_err(&pdev->dev, "Unknown device type: %lu(%s)\n",
pdev_id->driver_data, pdev_id->name); pdev_id->driver_data, pdev_id->name);
@ -546,7 +594,7 @@ static struct platform_driver ntc_thermistor_driver = {
module_platform_driver(ntc_thermistor_driver); module_platform_driver(ntc_thermistor_driver);
MODULE_DESCRIPTION("NTC Thermistor Driver from Murata"); MODULE_DESCRIPTION("NTC Thermistor Driver");
MODULE_AUTHOR("MyungJoo Ham <myungjoo.ham@samsung.com>"); MODULE_AUTHOR("MyungJoo Ham <myungjoo.ham@samsung.com>");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:ntc-thermistor"); MODULE_ALIAS("platform:ntc-thermistor");

View File

@ -26,6 +26,7 @@ struct iio_channel;
enum ntc_thermistor_type { enum ntc_thermistor_type {
TYPE_NCPXXWB473, TYPE_NCPXXWB473,
TYPE_NCPXXWL333, TYPE_NCPXXWL333,
TYPE_B57330V2103,
}; };
struct ntc_thermistor_platform_data { struct ntc_thermistor_platform_data {