xref: /linux/drivers/hwmon/pmbus/e50sn12051.c (revision 9611c0ce215a66770ccbe5c126bf57ba8c31bcad)
1*98be2444SColin Huang // SPDX-License-Identifier: GPL-2.0-or-later
2*98be2444SColin Huang /*
3*98be2444SColin Huang  * Hardware monitoring driver for E50SN12051
4*98be2444SColin Huang  */
5*98be2444SColin Huang 
6*98be2444SColin Huang #include <linux/i2c.h>
7*98be2444SColin Huang #include <linux/module.h>
8*98be2444SColin Huang #include <linux/mod_devicetable.h>
9*98be2444SColin Huang #include "pmbus.h"
10*98be2444SColin Huang 
11*98be2444SColin Huang static struct pmbus_driver_info e50sn12051_info = {
12*98be2444SColin Huang 	.pages = 1,
13*98be2444SColin Huang 	.format[PSC_VOLTAGE_IN] = linear,
14*98be2444SColin Huang 	.format[PSC_VOLTAGE_OUT] = linear,
15*98be2444SColin Huang 	.format[PSC_CURRENT_OUT] = linear,
16*98be2444SColin Huang 	.format[PSC_TEMPERATURE] = linear,
17*98be2444SColin Huang 	.func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT |
18*98be2444SColin Huang 		   PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
19*98be2444SColin Huang 		   PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
20*98be2444SColin Huang 		   PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
21*98be2444SColin Huang };
22*98be2444SColin Huang 
23*98be2444SColin Huang static const struct i2c_device_id e50sn12051_id[] = { { "e50sn12051", 0 }, {} };
24*98be2444SColin Huang MODULE_DEVICE_TABLE(i2c, e50sn12051_id);
25*98be2444SColin Huang 
26*98be2444SColin Huang static const struct of_device_id e50sn12051_of_match[] = {
27*98be2444SColin Huang 	{ .compatible = "delta,e50sn12051" },
28*98be2444SColin Huang 	{},
29*98be2444SColin Huang };
30*98be2444SColin Huang MODULE_DEVICE_TABLE(of, e50sn12051_of_match);
31*98be2444SColin Huang 
32*98be2444SColin Huang static int e50sn12051_probe(struct i2c_client *client)
33*98be2444SColin Huang {
34*98be2444SColin Huang 	return pmbus_do_probe(client, &e50sn12051_info);
35*98be2444SColin Huang }
36*98be2444SColin Huang 
37*98be2444SColin Huang static struct i2c_driver e50sn12051_driver = {
38*98be2444SColin Huang 	.driver = {
39*98be2444SColin Huang 		.name = "e50sn12051",
40*98be2444SColin Huang 		.of_match_table = e50sn12051_of_match,
41*98be2444SColin Huang 	},
42*98be2444SColin Huang 	.probe = e50sn12051_probe,
43*98be2444SColin Huang 
44*98be2444SColin Huang 	.id_table = e50sn12051_id,
45*98be2444SColin Huang };
46*98be2444SColin Huang 
47*98be2444SColin Huang module_i2c_driver(e50sn12051_driver);
48*98be2444SColin Huang 
49*98be2444SColin Huang MODULE_AUTHOR("Kevin Chang <kevin.chang2@amd.com>");
50*98be2444SColin Huang MODULE_DESCRIPTION("PMBus driver for E50SN12051");
51*98be2444SColin Huang MODULE_LICENSE("GPL");
52*98be2444SColin Huang MODULE_IMPORT_NS("PMBUS");
53