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