1sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/translations/zh_CN/hwmon/pmbusmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/zh_TW/hwmon/pmbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/it_IT/hwmon/pmbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ja_JP/hwmon/pmbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ko_KR/hwmon/pmbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/pt_BR/hwmon/pmbusmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/sp_SP/hwmon/pmbusmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hKernel driver pmbush]hKernel driver pmbus}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh9/var/lib/git/docbuild/linux/Documentation/hwmon/pmbus.rsthKubh paragraph)}(hSupported chips:h]hSupported chips:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh block_quote)}(hX* Flex BMR310, BMR453, BMR454, BMR456, BMR457, BMR458, BMR480, BMR490, BMR491, BMR492 Prefixes: 'bmr310', 'bmr453', 'bmr454', 'bmr456', 'bmr457', 'bmr458', 'bmr480', 'bmr490', 'bmr491', 'bmr492' Addresses scanned: - Datasheets: https://flexpowermodules.com/products * ON Semiconductor ADP4000, NCP4200, NCP4208 Prefixes: 'adp4000', 'ncp4200', 'ncp4208' Addresses scanned: - Datasheets: https://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDF https://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF https://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF * Lineage Power Prefixes: 'mdt040', 'pdt003', 'pdt006', 'pdt012', 'udt020' Addresses scanned: - Datasheets: http://www.lineagepower.com/oem/pdf/PDT003A0X.pdf http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf * Texas Instruments TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25 Prefixes: 'tps40400', 'tps544b20', 'tps544b25', 'tps544c20', 'tps544c25' Addresses scanned: - Datasheets: https://www.ti.com/lit/gpn/tps40400 https://www.ti.com/lit/gpn/tps544b20 https://www.ti.com/lit/gpn/tps544b25 https://www.ti.com/lit/gpn/tps544c20 https://www.ti.com/lit/gpn/tps544c25 * Maxim MAX20796 Prefix: 'max20796' Addresses scanned: - Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/MAX20796.pdf * Generic PMBus devices Prefix: 'pmbus' Addresses scanned: - Datasheet: n.a. h]h bullet_list)}(hhh](h list_item)}(hXFlex BMR310, BMR453, BMR454, BMR456, BMR457, BMR458, BMR480, BMR490, BMR491, BMR492 Prefixes: 'bmr310', 'bmr453', 'bmr454', 'bmr456', 'bmr457', 'bmr458', 'bmr480', 'bmr490', 'bmr491', 'bmr492' Addresses scanned: - Datasheets: https://flexpowermodules.com/products h](h)}(hSFlex BMR310, BMR453, BMR454, BMR456, BMR457, BMR458, BMR480, BMR490, BMR491, BMR492h]hSFlex BMR310, BMR453, BMR454, BMR456, BMR457, BMR458, BMR480, BMR490, BMR491, BMR492}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubh)}(hlPrefixes: 'bmr310', 'bmr453', 'bmr454', 'bmr456', 'bmr457', 'bmr458', 'bmr480', 'bmr490', 'bmr491', 'bmr492'h]hPrefixes: ‘bmr310’, ‘bmr453’, ‘bmr454’, ‘bmr456’, ‘bmr457’, ‘bmr458’, ‘bmr480’, ‘bmr490’, ‘bmr491’, ‘bmr492’}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubh)}(hAddresses scanned: -h]hAddresses scanned: -}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubh)}(h Datasheets:h]h Datasheets:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubh)}(h'https://flexpowermodules.com/products h]h)}(h%https://flexpowermodules.com/productsh]h reference)}(hj*h]h%https://flexpowermodules.com/products}(hj.hhhNhNubah}(h]h ]h"]h$]h&]refurij*uh1j,hj(ubah}(h]h ]h"]h$]h&]uh1hhhhKhj$ubah}(h]h ]h"]h$]h&]uh1hhhhKhhubeh}(h]h ]h"]h$]h&]uh1hhhubh)}(hXAON Semiconductor ADP4000, NCP4200, NCP4208 Prefixes: 'adp4000', 'ncp4200', 'ncp4208' Addresses scanned: - Datasheets: https://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDF https://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF https://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF h](h)}(h*ON Semiconductor ADP4000, NCP4200, NCP4208h]h*ON Semiconductor ADP4000, NCP4200, NCP4208}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjNubh)}(h)Prefixes: 'adp4000', 'ncp4200', 'ncp4208'h]h5Prefixes: ‘adp4000’, ‘ncp4200’, ‘ncp4208’}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjNubh)}(hAddresses scanned: -h]hAddresses scanned: -}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjNubh)}(h Datasheets:h]h Datasheets:}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjNubh)}(hhttps://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDF https://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF https://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF h](h)}(h8https://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDFh]j-)}(hjh]h8https://www.onsemi.com/pub_link/Collateral/ADP4000-D.PDF}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j,hjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(h8https://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDFh]j-)}(hjh]h8https://www.onsemi.com/pub_link/Collateral/NCP4200-D.PDF}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j,hjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hFhttps://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDFh]j-)}(hjh]hFhttps://www.onsemi.com/pub_link/Collateral/JUNE%202009-%20REV.%200.PDF}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j,hjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjNubeh}(h]h ]h"]h$]h&]uh1hhhubh)}(hXLineage Power Prefixes: 'mdt040', 'pdt003', 'pdt006', 'pdt012', 'udt020' Addresses scanned: - Datasheets: http://www.lineagepower.com/oem/pdf/PDT003A0X.pdf http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf h](h)}(h Lineage Powerh]h Lineage Power}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjubh)}(h:Prefixes: 'mdt040', 'pdt003', 'pdt006', 'pdt012', 'udt020'h]hNPrefixes: ‘mdt040’, ‘pdt003’, ‘pdt006’, ‘pdt012’, ‘udt020’}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hjubh)}(hAddresses scanned: -h]hAddresses scanned: -}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjubh)}(h Datasheets:h]h Datasheets:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjubh)}(hhttp://www.lineagepower.com/oem/pdf/PDT003A0X.pdf http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf h](h)}(h1http://www.lineagepower.com/oem/pdf/PDT003A0X.pdfh]j-)}(hj$h]h1http://www.lineagepower.com/oem/pdf/PDT003A0X.pdf}(hj&hhhNhNubah}(h]h ]h"]h$]h&]refurij$uh1j,hj"ubah}(h]h ]h"]h$]h&]uh1hhhhK)hjubh)}(h1http://www.lineagepower.com/oem/pdf/PDT006A0X.pdfh]j-)}(hj<h]h1http://www.lineagepower.com/oem/pdf/PDT006A0X.pdf}(hj>hhhNhNubah}(h]h ]h"]h$]h&]refurij<uh1j,hj:ubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubh)}(h1http://www.lineagepower.com/oem/pdf/PDT012A0X.pdfh]j-)}(hjTh]h1http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf}(hjVhhhNhNubah}(h]h ]h"]h$]h&]refurijTuh1j,hjRubah}(h]h ]h"]h$]h&]uh1hhhhK-hjubh)}(h1http://www.lineagepower.com/oem/pdf/UDT020A0X.pdfh]j-)}(hjlh]h1http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf}(hjnhhhNhNubah}(h]h ]h"]h$]h&]refurijluh1j,hjjubah}(h]h ]h"]h$]h&]uh1hhhhK/hjubh)}(h1http://www.lineagepower.com/oem/pdf/MDT040A0X.pdfh]j-)}(hjh]h1http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j,hjubah}(h]h ]h"]h$]h&]uh1hhhhK1hjubeh}(h]h ]h"]h$]h&]uh1hhhhK)hjubeh}(h]h ]h"]h$]h&]uh1hhhubh)}(hXTexas Instruments TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25 Prefixes: 'tps40400', 'tps544b20', 'tps544b25', 'tps544c20', 'tps544c25' Addresses scanned: - Datasheets: https://www.ti.com/lit/gpn/tps40400 https://www.ti.com/lit/gpn/tps544b20 https://www.ti.com/lit/gpn/tps544b25 https://www.ti.com/lit/gpn/tps544c20 https://www.ti.com/lit/gpn/tps544c25 h](h)}(hFTexas Instruments TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25h]hFTexas Instruments TPS40400, TPS544B20, TPS544B25, TPS544C20, TPS544C25}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjubh)}(hHPrefixes: 'tps40400', 'tps544b20', 'tps544b25', 'tps544c20', 'tps544c25'h]h\Prefixes: ‘tps40400’, ‘tps544b20’, ‘tps544b25’, ‘tps544c20’, ‘tps544c25’}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubh)}(hAddresses scanned: -h]hAddresses scanned: -}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hjubh)}(h Datasheets:h]h Datasheets:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjubh)}(hhttps://www.ti.com/lit/gpn/tps40400 https://www.ti.com/lit/gpn/tps544b20 https://www.ti.com/lit/gpn/tps544b25 https://www.ti.com/lit/gpn/tps544c20 https://www.ti.com/lit/gpn/tps544c25 h](h)}(h#https://www.ti.com/lit/gpn/tps40400h]j-)}(hjh]h#https://www.ti.com/lit/gpn/tps40400}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j,hjubah}(h]h ]h"]h$]h&]uh1hhhhK;hjubh)}(h$https://www.ti.com/lit/gpn/tps544b20h]j-)}(hjh]h$https://www.ti.com/lit/gpn/tps544b20}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j,hjubah}(h]h ]h"]h$]h&]uh1hhhhK=hjubh)}(h$https://www.ti.com/lit/gpn/tps544b25h]j-)}(hjh]h$https://www.ti.com/lit/gpn/tps544b25}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j,hjubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubh)}(h$https://www.ti.com/lit/gpn/tps544c20h]j-)}(hj0h]h$https://www.ti.com/lit/gpn/tps544c20}(hj2hhhNhNubah}(h]h ]h"]h$]h&]refurij0uh1j,hj.ubah}(h]h ]h"]h$]h&]uh1hhhhKAhjubh)}(h$https://www.ti.com/lit/gpn/tps544c25h]j-)}(hjHh]h$https://www.ti.com/lit/gpn/tps544c25}(hjJhhhNhNubah}(h]h ]h"]h$]h&]refurijHuh1j,hjFubah}(h]h ]h"]h$]h&]uh1hhhhKChjubeh}(h]h ]h"]h$]h&]uh1hhhhK;hjubeh}(h]h ]h"]h$]h&]uh1hhhubh)}(hMaxim MAX20796 Prefix: 'max20796' Addresses scanned: - Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/MAX20796.pdf h](h)}(hMaxim MAX20796h]hMaxim MAX20796}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjjubh)}(hPrefix: 'max20796'h]hPrefix: ‘max20796’}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjjubh)}(hAddresses scanned: -h]hAddresses scanned: -}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjjubh)}(h Datasheet:h]h Datasheet:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjjubh)}(hQhttps://www.analog.com/media/en/technical-documentation/data-sheets/MAX20796.pdf h]h)}(hPhttps://www.analog.com/media/en/technical-documentation/data-sheets/MAX20796.pdfh]j-)}(hjh]hPhttps://www.analog.com/media/en/technical-documentation/data-sheets/MAX20796.pdf}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j,hjubah}(h]h ]h"]h$]h&]uh1hhhhKMhjubah}(h]h ]h"]h$]h&]uh1hhhhKMhjjubeh}(h]h ]h"]h$]h&]uh1hhhubh)}(hOGeneric PMBus devices Prefix: 'pmbus' Addresses scanned: - Datasheet: n.a. h](h)}(hGeneric PMBus devicesh]hGeneric PMBus devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjubh)}(hPrefix: 'pmbus'h]hPrefix: ‘pmbus’}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjubh)}(hAddresses scanned: -h]hAddresses scanned: -}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjubh)}(hDatasheet: n.a.h]hDatasheet: n.a.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubeh}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]bullet*uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h*Author: Guenter Roeck h](hAuthor: Guenter Roeck <}(hjhhhNhNubj-)}(hlinux@roeck-us.neth]hlinux@roeck-us.net}(hj&hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:linux@roeck-us.netuh1j,hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKXhhhhubh)}(hhh](h)}(h Descriptionh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hhhhhK\ubh)}(hThis driver supports hardware monitoring for various PMBus compliant devices. It supports voltage, current, power, and temperature sensors as supported by the device.h]hThis driver supports hardware monitoring for various PMBus compliant devices. It supports voltage, current, power, and temperature sensors as supported by the device.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hj@hhubh)}(hNEach monitored channel has its own high and low limits, plus a critical limit.h]hNEach monitored channel has its own high and low limits, plus a critical limit.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhj@hhubh)}(h /sys/bus/i2c/devices/i2c-1/new_deviceh]hL$ modprobe pmbus $ echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device}hjsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1jhhhKshjhhubeh}(h] usage-notesah ]h"] usage notesah$]h&]uh1hhhhhhhhKiubh)}(hhh](h)}(hPlatform data supporth]hPlatform data support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKxubh)}(hSupport for additional PMBus chips can be added by defining chip parameters in a new chip specific driver file. For example, (untested) code to add support for Emerson DS1200 power modules might look as follows::h]hSupport for additional PMBus chips can be added by defining chip parameters in a new chip specific driver file. For example, (untested) code to add support for Emerson DS1200 power modules might look as follows:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKzhjhhubj)}(hXstatic struct pmbus_driver_info ds1200_info = { .pages = 1, /* Note: All other sensors are in linear mode */ .direct[PSC_VOLTAGE_OUT] = true, .direct[PSC_TEMPERATURE] = true, .direct[PSC_CURRENT_OUT] = true, .m[PSC_VOLTAGE_IN] = 1, .b[PSC_VOLTAGE_IN] = 0, .R[PSC_VOLTAGE_IN] = 3, .m[PSC_VOLTAGE_OUT] = 1, .b[PSC_VOLTAGE_OUT] = 0, .R[PSC_VOLTAGE_OUT] = 3, .m[PSC_TEMPERATURE] = 1, .b[PSC_TEMPERATURE] = 0, .R[PSC_TEMPERATURE] = 3, .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_PIN | PMBUS_HAVE_POUT | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12, }; static int ds1200_probe(struct i2c_client *client) { return pmbus_do_probe(client, &ds1200_info); } static const struct i2c_device_id ds1200_id[] = { {"ds1200"}, {} }; MODULE_DEVICE_TABLE(i2c, ds1200_id); /* This is the driver that will be inserted */ static struct i2c_driver ds1200_driver = { .driver = { .name = "ds1200", }, .probe = ds1200_probe, .id_table = ds1200_id, }; static int __init ds1200_init(void) { return i2c_add_driver(&ds1200_driver); } static void __exit ds1200_exit(void) { i2c_del_driver(&ds1200_driver); }h]hXstatic struct pmbus_driver_info ds1200_info = { .pages = 1, /* Note: All other sensors are in linear mode */ .direct[PSC_VOLTAGE_OUT] = true, .direct[PSC_TEMPERATURE] = true, .direct[PSC_CURRENT_OUT] = true, .m[PSC_VOLTAGE_IN] = 1, .b[PSC_VOLTAGE_IN] = 0, .R[PSC_VOLTAGE_IN] = 3, .m[PSC_VOLTAGE_OUT] = 1, .b[PSC_VOLTAGE_OUT] = 0, .R[PSC_VOLTAGE_OUT] = 3, .m[PSC_TEMPERATURE] = 1, .b[PSC_TEMPERATURE] = 0, .R[PSC_TEMPERATURE] = 3, .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_PIN | PMBUS_HAVE_POUT | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12, }; static int ds1200_probe(struct i2c_client *client) { return pmbus_do_probe(client, &ds1200_info); } static const struct i2c_device_id ds1200_id[] = { {"ds1200"}, {} }; MODULE_DEVICE_TABLE(i2c, ds1200_id); /* This is the driver that will be inserted */ static struct i2c_driver ds1200_driver = { .driver = { .name = "ds1200", }, .probe = ds1200_probe, .id_table = ds1200_id, }; static int __init ds1200_init(void) { return i2c_add_driver(&ds1200_driver); } static void __exit ds1200_exit(void) { i2c_del_driver(&ds1200_driver); }}hjsbah}(h]h ]h"]h$]h&]jjuh1jhhhK~hjhhubeh}(h]platform-data-supportah ]h"]platform data supportah$]h&]uh1hhhhhhhhKxubh)}(hhh](h)}(h Sysfs entriesh]h Sysfs entries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hX2When probing the chip, the driver identifies which PMBus registers are supported, and determines available sensors from this information. Attribute files only exist if respective sensors are supported by the chip. Labels are provided to inform the user about the sensor associated with a given sysfs entry.h]hX2When probing the chip, the driver identifies which PMBus registers are supported, and determines available sensors from this information. Attribute files only exist if respective sensors are supported by the chip. Labels are provided to inform the user about the sensor associated with a given sysfs entry.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hbThe following attributes are supported. Limits are read-write; all other attributes are read-only.h]hbThe following attributes are supported. Limits are read-write; all other attributes are read-only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1j6hj3ubj7)}(hhh]h}(h]h ]h"]h$]h&]colwidthK8uh1j6hj3ubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(h inX_inputh]h inX_input}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hhh]h)}(h6Measured voltage. From READ_VIN or READ_VOUT register.h]h6Measured voltage. From READ_VIN or READ_VOUT register.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjoubah}(h]h ]h"]h$]h&]uh1jVhjSubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hinX_minh]hinX_min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(hGMinimum Voltage. From VIN_UV_WARN_LIMIT or VOUT_UV_WARN_LIMIT register.h]hGMinimum Voltage. From VIN_UV_WARN_LIMIT or VOUT_UV_WARN_LIMIT register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hinX_maxh]hinX_max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(hGMaximum voltage. From VIN_OV_WARN_LIMIT or VOUT_OV_WARN_LIMIT register.h]hGMaximum voltage. From VIN_OV_WARN_LIMIT or VOUT_OV_WARN_LIMIT register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h inX_lcrith]h inX_lcrit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(hRCritical minimum Voltage. From VIN_UV_FAULT_LIMIT or VOUT_UV_FAULT_LIMIT register.h]hRCritical minimum Voltage. From VIN_UV_FAULT_LIMIT or VOUT_UV_FAULT_LIMIT register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hinX_crith]hinX_crit}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4ubah}(h]h ]h"]h$]h&]uh1jVhj1ubjW)}(hhh]h)}(hRCritical maximum voltage. From VIN_OV_FAULT_LIMIT or VOUT_OV_FAULT_LIMIT register.h]hRCritical maximum voltage. From VIN_OV_FAULT_LIMIT or VOUT_OV_FAULT_LIMIT register.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjKubah}(h]h ]h"]h$]h&]uh1jVhj1ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h inX_min_alarmh]h inX_min_alarm}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjkubah}(h]h ]h"]h$]h&]uh1jVhjhubjW)}(hhh]h)}(h2Voltage low alarm. From VOLTAGE_UV_WARNING status.h]h2Voltage low alarm. From VOLTAGE_UV_WARNING status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjhubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h inX_max_alarmh]h inX_max_alarm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(h3Voltage high alarm. From VOLTAGE_OV_WARNING status.h]h3Voltage high alarm. From VOLTAGE_OV_WARNING status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hinX_lcrit_alarmh]hinX_lcrit_alarm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(h9Voltage critical low alarm. From VOLTAGE_UV_FAULT status.h]h9Voltage critical low alarm. From VOLTAGE_UV_FAULT status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hinX_crit_alarmh]hinX_crit_alarm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hhh]h)}(h:Voltage critical high alarm. From VOLTAGE_OV_FAULT status.h]h:Voltage critical high alarm. From VOLTAGE_OV_FAULT status.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h inX_labelh]h inX_label}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGubah}(h]h ]h"]h$]h&]uh1jVhjDubjW)}(hhh]h)}(h"vin", "vcap", or "voutY"h]h%“vin”, “vcap”, or “voutY”}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^ubah}(h]h ]h"]h$]h&]uh1jVhjDubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h inX_rated_minh]h inX_rated_min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj~ubah}(h]h ]h"]h$]h&]uh1jVhj{ubjW)}(hhh]h)}(hAMinimum rated voltage. From MFR_VIN_MIN or MFR_VOUT_MIN register.h]hAMinimum rated voltage. From MFR_VIN_MIN or MFR_VOUT_MIN register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhj{ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h inX_rated_maxh]h inX_rated_max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(hAMaximum rated voltage. From MFR_VIN_MAX or MFR_VOUT_MAX register.h]hAMaximum rated voltage. From MFR_VIN_MAX or MFR_VOUT_MAX register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h currX_inputh]h currX_input}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(h6Measured current. From READ_IIN or READ_IOUT register.h]h6Measured current. From READ_IIN or READ_IOUT register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h currX_maxh]h currX_max}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj#ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hhh]h)}(hGMaximum current. From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT register.h]hGMaximum current. From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT register.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj:ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h currX_lcrith]h currX_lcrit}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjZubah}(h]h ]h"]h$]h&]uh1jVhjWubjW)}(hhh]h)}(hCCritical minimum output current. From IOUT_UC_FAULT_LIMIT register.h]hCCritical minimum output current. From IOUT_UC_FAULT_LIMIT register.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjqubah}(h]h ]h"]h$]h&]uh1jVhjWubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h currX_crith]h currX_crit}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(hRCritical maximum current. From IIN_OC_FAULT_LIMIT or IOUT_OC_FAULT_LIMIT register.h]hRCritical maximum current. From IIN_OC_FAULT_LIMIT or IOUT_OC_FAULT_LIMIT register.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h currX_alarmh]h currX_alarm}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(hBCurrent high alarm. From IIN_OC_WARNING or IOUT_OC_WARNING status.h]hBCurrent high alarm. From IIN_OC_WARNING or IOUT_OC_WARNING status.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hcurrX_max_alarmh]hcurrX_max_alarm}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hhh]h)}(hHCurrent high alarm. From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT status.h]hHCurrent high alarm. From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT status.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hcurrX_lcrit_alarmh]hcurrX_lcrit_alarm}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj6 ubah}(h]h ]h"]h$]h&]uh1jVhj3 ubjW)}(hhh]h)}(h=Output current critical low alarm. From IOUT_UC_FAULT status.h]h=Output current critical low alarm. From IOUT_UC_FAULT status.}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjM ubah}(h]h ]h"]h$]h&]uh1jVhj3 ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hcurrX_crit_alarmh]hcurrX_crit_alarm}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjm ubah}(h]h ]h"]h$]h&]uh1jVhjj ubjW)}(hhh]h)}(hGCurrent critical high alarm. From IIN_OC_FAULT or IOUT_OC_FAULT status.h]hGCurrent critical high alarm. From IIN_OC_FAULT or IOUT_OC_FAULT status.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhjj ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h currX_labelh]h currX_label}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hhh]h)}(hj"iin", "iinY", "iinY.Z", "ioutY", or "ioutY.Z", where Y reflects the page number and Z reflects the phase.h]h~“iin”, “iinY”, “iinY.Z”, “ioutY”, or “ioutY.Z”, where Y reflects the page number and Z reflects the phase.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hcurrX_rated_maxh]hcurrX_rated_max}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hhh]h)}(hAMaximum rated current. From MFR_IIN_MAX or MFR_IOUT_MAX register.h]hAMaximum rated current. From MFR_IIN_MAX or MFR_IOUT_MAX register.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h powerX_inputh]h powerX_input}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hhh]h)}(h4Measured power. From READ_PIN or READ_POUT register.h]h4Measured power. From READ_PIN or READ_POUT register.}(hj, hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj) ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h powerX_caph]h powerX_cap}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjI ubah}(h]h ]h"]h$]h&]uh1jVhjF ubjW)}(hhh]h)}(h)Output power cap. From POUT_MAX register.h]h)Output power cap. From POUT_MAX register.}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj` ubah}(h]h ]h"]h$]h&]uh1jVhjF ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h powerX_maxh]h powerX_max}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj} ubjW)}(hhh]h)}(hCPower limit. From PIN_OP_WARN_LIMIT or POUT_OP_WARN_LIMIT register.h]hCPower limit. From PIN_OP_WARN_LIMIT or POUT_OP_WARN_LIMIT register.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj} ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h powerX_crith]h powerX_crit}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hhh]h)}(h?Critical output power limit. From POUT_OP_FAULT_LIMIT register.h]h?Critical output power limit. From POUT_OP_FAULT_LIMIT register.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(h powerX_alarmh]h powerX_alarm}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hhh]h)}(h@Power high alarm. From PIN_OP_WARNING or POUT_OP_WARNING status.h]h@Power high alarm. From PIN_OP_WARNING or POUT_OP_WARNING status.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(hhh](jW)}(hhh]h)}(hpowerX_crit_alarmh]hpowerX_crit_alarm}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj% ubah}(h]h ]h"]h$]h&]uh1jVhj" ubjW)}(hhh]h)}(h