-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
hwmon: (pmbus) Add support for MAX20751
MAX20751 is a multiphase power controller with internal buck converter. It uses VR12.0 to report the output voltage. This requires an explicit driver, since the VR version can not be auto-detected. The chip supports a manufacturer specific command to fine-tune the output voltage. This command is not currently supported. Signed-off-by: Guenter Roeck <linux@roeck-us.net>
- Loading branch information
Guenter Roeck
committed
Aug 9, 2015
1 parent
068c227
commit 1f61cab
Showing
5 changed files
with
159 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
Kernel driver max20751 | ||
====================== | ||
|
||
Supported chips: | ||
* maxim MAX20751 | ||
Prefix: 'max20751' | ||
Addresses scanned: - | ||
Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX20751.pdf | ||
Application note: http://pdfserv.maximintegrated.com/en/an/AN5941.pdf | ||
|
||
Author: Guenter Roeck <linux@roeck-us.net> | ||
|
||
|
||
Description | ||
----------- | ||
|
||
This driver supports MAX20751 Multiphase Master with PMBus Interface | ||
and Internal Buck Converter. | ||
|
||
The driver is a client driver to the core PMBus driver. | ||
Please see Documentation/hwmon/pmbus for details on PMBus client drivers. | ||
|
||
|
||
Usage Notes | ||
----------- | ||
|
||
This driver does not auto-detect devices. You will have to instantiate the | ||
devices explicitly. Please see Documentation/i2c/instantiating-devices for | ||
details. | ||
|
||
|
||
Platform data support | ||
--------------------- | ||
|
||
The driver supports standard PMBus driver platform data. | ||
|
||
|
||
Sysfs entries | ||
------------- | ||
|
||
The following attributes are supported. | ||
|
||
in1_label "vin1" | ||
in1_input Measured voltage. | ||
in1_min Minimum input voltage. | ||
in1_max Maximum input voltage. | ||
in1_lcrit Critical minimum input voltage. | ||
in1_crit Critical maximum input voltage. | ||
in1_min_alarm Input voltage low alarm. | ||
in1_lcrit_alarm Input voltage critical low alarm. | ||
in1_min_alarm Input voltage low alarm. | ||
in1_max_alarm Input voltage high alarm. | ||
|
||
in2_label "vout1" | ||
in2_input Measured voltage. | ||
in2_min Minimum output voltage. | ||
in2_max Maximum output voltage. | ||
in2_lcrit Critical minimum output voltage. | ||
in2_crit Critical maximum output voltage. | ||
in2_min_alarm Output voltage low alarm. | ||
in2_lcrit_alarm Output voltage critical low alarm. | ||
in2_min_alarm Output voltage low alarm. | ||
in2_max_alarm Output voltage high alarm. | ||
|
||
curr1_input Measured output current. | ||
curr1_label "iout1" | ||
curr1_max Maximum output current. | ||
curr1_alarm Current high alarm. | ||
|
||
temp1_input Measured temperature. | ||
temp1_max Maximum temperature. | ||
temp1_crit Critical high temperature. | ||
temp1_max_alarm Chip temperature high alarm. | ||
temp1_crit_alarm Chip temperature critical high alarm. | ||
|
||
power1_input Output power. | ||
power1_label "pout1" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/* | ||
* Hardware monitoring driver for Maxim MAX20751 | ||
* | ||
* Copyright (c) 2015 Guenter Roeck | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/module.h> | ||
#include <linux/init.h> | ||
#include <linux/err.h> | ||
#include <linux/i2c.h> | ||
#include "pmbus.h" | ||
|
||
static struct pmbus_driver_info max20751_info = { | ||
.pages = 1, | ||
.format[PSC_VOLTAGE_IN] = linear, | ||
.format[PSC_VOLTAGE_OUT] = vid, | ||
.vrm_version = vr12, | ||
.format[PSC_TEMPERATURE] = linear, | ||
.format[PSC_CURRENT_OUT] = linear, | ||
.format[PSC_POWER] = linear, | ||
.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | | ||
PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | | ||
PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | | ||
PMBUS_HAVE_POUT, | ||
}; | ||
|
||
static int max20751_probe(struct i2c_client *client, | ||
const struct i2c_device_id *id) | ||
{ | ||
return pmbus_do_probe(client, id, &max20751_info); | ||
} | ||
|
||
static const struct i2c_device_id max20751_id[] = { | ||
{"max20751", 0}, | ||
{} | ||
}; | ||
|
||
MODULE_DEVICE_TABLE(i2c, max20751_id); | ||
|
||
static struct i2c_driver max20751_driver = { | ||
.driver = { | ||
.name = "max20751", | ||
}, | ||
.probe = max20751_probe, | ||
.remove = pmbus_do_remove, | ||
.id_table = max20751_id, | ||
}; | ||
|
||
module_i2c_driver(max20751_driver); | ||
|
||
MODULE_AUTHOR("Guenter Roeck <linux@roeck-us.net>"); | ||
MODULE_DESCRIPTION("PMBus driver for Maxim MAX20751"); | ||
MODULE_LICENSE("GPL"); |