€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ!/translations/zh_CN/hwmon/mpq8646”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/zh_TW/hwmon/mpq8646”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/it_IT/hwmon/mpq8646”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ja_JP/hwmon/mpq8646”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ko_KR/hwmon/mpq8646”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/pt_BR/hwmon/mpq8646”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/sp_SP/hwmon/mpq8646”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ%SPDX-License-Identifier: GPL-2.0-only”h]”hŒ%SPDX-License-Identifier: GPL-2.0-only”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ;/var/lib/git/docbuild/linux/Documentation/hwmon/mpq8646.rst”h´Kubh¶)�”}”(hŒACopyright (c) 2026 Free Mobile - Vincent Jardin ”h]”hŒACopyright (c) 2026 Free Mobile - Vincent Jardin ”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒKernel driver mpq8646”h]”hŒKernel driver mpq8646”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒSupported chips:”h]”hŒSupported chips:”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhŒ block_quote”“”)�”}”(hŒ#* MPS MPQ8646 Prefix: 'mpq8646' ”h]”hŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hŒMPS MPQ8646 Prefix: 'mpq8646' ”h]”(hì)�”}”(hŒ MPS MPQ8646”h]”hŒ MPS MPQ8646”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hjubhì)�”}”(hŒPrefix: 'mpq8646'”h]”hŒPrefix: ‘mpq8646’”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jh³hÇh´K hhýubah}”(h]”h ]”h"]”h$]”h&]”uh1hûh³hÇh´K hhØh²hubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ+Author: - Vincent Jardin ”h]”(hŒterm”“”)�”}”(hŒAuthor:”h]”hŒAuthor:”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGh³hÇh´KhjCubhŒ definition”“”)�”}”(hhh]”j)�”}”(hhh]”j)�”}”(hŒ!Vincent Jardin ”h]”hì)�”}”(hŒ Vincent Jardin ”h]”(hŒVincent Jardin <”…”�”}”(hjch²hh³Nh´NubhŒ reference”“”)�”}”(hŒvjardin@free.fr”h]”hŒvjardin@free.fr”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:vjardin@free.fr”uh1jkhjcubhŒ>”…”�”}”(hjch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubah}”(h]”h ]”h"]”h$]”h&]”j4Œ-”uh1jh³hÇh´KhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jAh³hÇh´Khj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j<hhØh²hh³Nh´Nubh×)�”}”(hhh]”(hÜ)�”}”(hŒ Chip-identity”h]”hŒ Chip-identity”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj¦h²hh³hÇh´Kubhì)�”}”(hŒaSupport the boards that are designed with the MPS MPQ8646 probed thanks to``MFR_MODEL`` register.”h]”hŒaSupport the boards that are designed with the MPS MPQ8646 probed thanks to``MFR_MODEL`` register.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khj¦h²hubhì)�”}”(hŒ5This driver targets the MPQ8646 silicon specifically.”h]”hŒ5This driver targets the MPQ8646 silicon specifically.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khj¦h²hubeh}”(h]”Œ chip-identity”ah ]”h"]”Œ chip-identity”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kubh×)�”}”(hhh]”(hÜ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÛh²hh³hÇh´Kubhì)�”}”(hXFThe MPQ8646 is a fully integrated, PMBus-compatible, high-frequency, synchronous buck converter. It offers a compact solution that achieves up high Amps output current per phase, with excellent load and line regulation over a wide input supply range. The chip operates at high efficiency over a wide output current load range.”h]”hXFThe MPQ8646 is a fully integrated, PMBus-compatible, high-frequency, synchronous buck converter. It offers a compact solution that achieves up high Amps output current per phase, with excellent load and line regulation over a wide input supply range. The chip operates at high efficiency over a wide output current load range.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhjÛh²hubhì)�”}”(hŒTThe PMBus interface provides converter configurations and key parameters monitoring.”h]”hŒTThe PMBus interface provides converter configurations and key parameters monitoring.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K!hjÛh²hubhì)�”}”(hXGThe device adopts MPS's proprietary multi-phase digital constant-on-time (MCOT) control, which provides fast transient response and eases loop stabilization. The MCOT scheme also allows multiple devices or channels to be connected in parallel with excellent current sharing and phase interleaving for high-current applications.”h]”hXIThe device adopts MPS’s proprietary multi-phase digital constant-on-time (MCOT) control, which provides fast transient response and eases loop stabilization. The MCOT scheme also allows multiple devices or channels to be connected in parallel with excellent current sharing and phase interleaving for high-current applications.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K$hjÛh²hubhì)�”}”(hŒ±Fully integrated protection features include over-current protection (OCP), over-voltage protection (OVP), under-voltage protection (UVP), and over-temperature protection (OTP).”h]”hŒ±Fully integrated protection features include over-current protection (OCP), over-voltage protection (OVP), under-voltage protection (UVP), and over-temperature protection (OTP).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K+hjÛh²hubhì)�”}”(hŒThis device is compliant with:”h]”hŒThis device is compliant with:”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K/hjÛh²hubj)�”}”(hhh]”j)�”}”(hŒPMBus rev 1.3 interface. ”h]”hì)�”}”(hŒPMBus rev 1.3 interface.”h]”hŒPMBus rev 1.3 interface.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K1hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j4j“uh1jh³hÇh´K1hjÛh²hubhì)�”}”(hŒTThe driver exports the following attributes via the 'sysfs' files for input voltage:”h]”hŒXThe driver exports the following attributes via the ‘sysfs’ files for input voltage:”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K3hjÛh²hubj)�”}”(hhh]”(j)�”}”(hŒ in1_input”h]”hì)�”}”(hjfh]”hŒ in1_input”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K6hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjah²hh³hÇh´Nubj)�”}”(hŒ in1_label”h]”hì)�”}”(hj}h]”hŒ in1_label”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K7hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjah²hh³hÇh´Nubj)�”}”(hŒin1_max”h]”hì)�”}”(hj”h]”hŒin1_max”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K8hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjah²hh³hÇh´Nubj)�”}”(hŒ in1_max_alarm”h]”hì)�”}”(hj«h]”hŒ in1_max_alarm”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K9hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjah²hh³hÇh´Nubj)�”}”(hŒin1_min”h]”hì)�”}”(hjÂh]”hŒin1_min”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K:hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjah²hh³hÇh´Nubj)�”}”(hŒ in1_min_alarm”h]”hì)�”}”(hjÙh]”hŒ in1_min_alarm”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K;hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjah²hh³hÇh´Nubj)�”}”(hŒin1_crit”h]”hì)�”}”(hjðh]”hŒin1_crit”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K ``OPERATION`` (0x01)”h]”hì)�”}”(hj h]”(j‡)�”}”(hŒ``regulator_enable()``”h]”hŒregulator_enable()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjubhŒ / ”…”�”}”(hjh²hh³Nh´Nubj‡)�”}”(hŒ``regulator_disable()``”h]”hŒregulator_disable()”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjubhŒ -> ”…”�”}”(hjh²hh³Nh´Nubj‡)�”}”(hŒ ``OPERATION``”h]”hŒ OPERATION”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjubhŒ (0x01)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kvhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj)�”}”(hŒ6``regulator_set_voltage()`` -> ``VOUT_COMMAND`` (0x21)”h]”hì)�”}”(hjUh]”(j‡)�”}”(hŒ``regulator_set_voltage()``”h]”hŒregulator_set_voltage()”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjWubhŒ -> ”…”�”}”(hjWh²hh³Nh´Nubj‡)�”}”(hŒ``VOUT_COMMAND``”h]”hŒ VOUT_COMMAND”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjWubhŒ (0x21)”…”�”}”(hjWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KwhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj)�”}”(hŒ3``regulator_get_voltage()`` -> ``READ_VOUT`` (0x8B)”h]”hì)�”}”(hjŒh]”(j‡)�”}”(hŒ``regulator_get_voltage()``”h]”hŒregulator_get_voltage()”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjŽubhŒ -> ”…”�”}”(hjŽh²hh³Nh´Nubj‡)�”}”(hŒ ``READ_VOUT``”h]”hŒ READ_VOUT”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjŽubhŒ (0x8B)”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KxhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj)�”}”(hŒ7``regulator_is_enabled()`` -> ``OPERATION`` bit-decode ”h]”hì)�”}”(hŒ6``regulator_is_enabled()`` -> ``OPERATION`` bit-decode”h]”(j‡)�”}”(hŒ``regulator_is_enabled()``”h]”hŒregulator_is_enabled()”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÅubhŒ -> ”…”�”}”(hjÅh²hh³Nh´Nubj‡)�”}”(hŒ ``OPERATION``”h]”hŒ OPERATION”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÅubhŒ bit-decode”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KyhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j4j“uh1jh³hÇh´KvhjÄh²hubhì)�”}”(hŒ�The single regulator descriptor is named ``"vout"`` (page 0). For a multi-page configuration the descriptor table can be extended in the driver.”h]”(hŒ)The single regulator descriptor is named ”…”�”}”(hjÿh²hh³Nh´Nubj‡)�”}”(hŒ ``"vout"``”h]”hŒ"vout"”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÿubhŒ] (page 0). For a multi-page configuration the descriptor table can be extended in the driver.”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K{hjÄh²hubeh}”(h]”Œregulator-framework-integration”ah ]”h"]”Œregulator framework integration”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kpubh×)�”}”(hhh]”(hÜ)�”}”(hŒIn-driver alarm-poll fallback”h]”hŒIn-driver alarm-poll fallback”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj'h²hh³hÇh´K€ubhì)�”}”(hXOn boards where the chip's ``SMBALERT#`` pin is unavailable to the SoC, ``pmbus_core::pmbus_irq_setup`` cannot deliver SMBALERT-driven ``poll(POLLPRI)`` wakes or ``udev change@...`` events on the ``inX_alarm`` files. The driver provides a ``delayed_work``-based polling fallback that periodically invokes the pmbus core fault check, ``pmbus_check_and_notify_faults()``, which sends the notifications and then clears the latched faults, exactly like the ``SMBALERT#`` interrupt path. The frequency of polling is tunable:”h]”(hŒOn boards where the chip’s ”…”�”}”(hj8h²hh³Nh´Nubj‡)�”}”(hŒ ``SMBALERT#``”h]”hŒ SMBALERT#”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj8ubhŒ pin is unavailable to the SoC, ”…”�”}”(hj8h²hh³Nh´Nubj‡)�”}”(hŒ``pmbus_core::pmbus_irq_setup``”h]”hŒpmbus_core::pmbus_irq_setup”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj8ubhŒ cannot deliver SMBALERT-driven ”…”�”}”(hj8h²hh³Nh´Nubj‡)�”}”(hŒ``poll(POLLPRI)``”h]”hŒ poll(POLLPRI)”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj8ubhŒ wakes or ”…”�”}”(hj8h²hh³Nh´Nubj‡)�”}”(hŒ``udev change@...``”h]”hŒudev change@...”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj8ubhŒ events on the ”…”�”}”(hj8h²hh³Nh´Nubj‡)�”}”(hŒ ``inX_alarm``”h]”hŒ inX_alarm”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj8ubhŒ files. The driver provides a ”…”�”}”(hj8h²hh³Nh´Nubj‡)�”}”(hŒ``delayed_work``”h]”hŒ delayed_work”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj8ubhŒN-based polling fallback that periodically invokes the pmbus core fault check, ”…”�”}”(hj8h²hh³Nh´Nubj‡)�”}”(hŒ#``pmbus_check_and_notify_faults()``”h]”hŒpmbus_check_and_notify_faults()”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj8ubhŒU, which sends the notifications and then clears the latched faults, exactly like the ”…”�”}”(hj8h²hh³Nh´Nubj‡)�”}”(hŒ ``SMBALERT#``”h]”hŒ SMBALERT#”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj8ubhŒ5 interrupt path. The frequency of polling is tunable:”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K‚hj'h²hubhŒ literal_block”“”)�”}”(hŒC/sys/kernel/debug/i2c/i2c-/-/alarm_poll_interval_ms”h]”hŒC/sys/kernel/debug/i2c/i2c-/-/alarm_poll_interval_ms”…”�”}”hjØsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÖh³hÇh´KŽhj'h²hubhì)�”}”(hŒThe default is 1000 ms.”h]”hŒThe default is 1000 ms.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K�hj'h²hubhì)�”}”(hŒôSet it to 0 to disable. The worker self-suppresses when ``client->irq != 0`` (i.e. when DT supplies an ``interrupts = <...>`` property on the regulator node), so adding ``SMBALERT#`` wiring is a zero-driver-change uplift on a future board rev.”h]”(hŒ8Set it to 0 to disable. The worker self-suppresses when ”…”�”}”(hjôh²hh³Nh´Nubj‡)�”}”(hŒ``client->irq != 0``”h]”hŒclient->irq != 0”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjôubhŒ (i.e. when DT supplies an ”…”�”}”(hjôh²hh³Nh´Nubj‡)�”}”(hŒ``interrupts = <...>``”h]”hŒinterrupts = <...>”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjôubhŒ- property on the regulator node), so adding ”…”�”}”(hjôh²hh³Nh´Nubj‡)�”}”(hŒ ``SMBALERT#``”h]”hŒ SMBALERT#”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjôubhŒ= wiring is a zero-driver-change uplift on a future board rev.”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K’hj'h²hubeh}”(h]”Œin-driver-alarm-poll-fallback”ah ]”h"]”Œin-driver alarm-poll fallback”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K€ubh×)�”}”(hhh]”(hÜ)�”}”(hŒ!MPS post-mortem (PROTECTION_LAST)”h]”hŒ!MPS post-mortem (PROTECTION_LAST)”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj@ h²hh³hÇh´K™ubhì)�”}”(hŒ¾The MPQ8646 silicon keeps a single 16-bit NVM-backed record of the last protection event in ``PROTECTION_LAST`` (0xFB). It survives chip power/reset. The following debugfs entries expose it:”h]”(hŒ\The MPQ8646 silicon keeps a single 16-bit NVM-backed record of the last protection event in ”…”�”}”(hjQ h²hh³Nh´Nubj‡)�”}”(hŒ``PROTECTION_LAST``”h]”hŒPROTECTION_LAST”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjQ ubhŒO (0xFB). It survives chip power/reset. The following debugfs entries expose it:”…”�”}”(hjQ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K›hj@ h²hubj×)�”}”(hŒ‹/sys/kernel/debug/i2c/i2c-/-/protection_last (RO) /sys/kernel/debug/i2c/i2c-/-/status_decoded (RO)”h]”hŒ‹/sys/kernel/debug/i2c/i2c-/-/protection_last (RO) /sys/kernel/debug/i2c/i2c-/-/status_decoded (RO)”…”�”}”hjq sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÖh³hÇh´K¡hj@ h²hubhì)�”}”(hX.``protection_last`` decodes the 16-bit value based on the datasheet fault names (``INIT_FAULT``, ``NVM_CRC_ERROR``, ``NVM_FAULT``, ``OC_PHASE_FAULT``, ``OTP_SELF_FAULT``, ``SWITCH_PRD_FAULT``, ``VIN_OV_FAULT``, ``VOUT_OV_FAULT``, ``VOUT_UV_FAULT``, ``OC_TOT_FAULT``, ``VIN_UVLO_FAULT``, ``DRMOS_OTP``).”h]”(j‡)�”}”(hŒ``protection_last``”h]”hŒprotection_last”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ> decodes the 16-bit value based on the datasheet fault names (”…”�”}”(hj h²hh³Nh´Nubj‡)�”}”(hŒ``INIT_FAULT``”h]”hŒ INIT_FAULT”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”(hj h²hh³Nh´Nubj‡)�”}”(hŒ``NVM_CRC_ERROR``”h]”hŒ NVM_CRC_ERROR”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ ``NVM_FAULT``”h]”hŒ NVM_FAULT”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”(hj h²hh³Nh´Nubj‡)�”}”(hŒ``OC_PHASE_FAULT``”h]”hŒOC_PHASE_FAULT”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ``OTP_SELF_FAULT``”h]”hŒOTP_SELF_FAULT”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ``SWITCH_PRD_FAULT``”h]”hŒSWITCH_PRD_FAULT”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ``VIN_OV_FAULT``”h]”hŒ VIN_OV_FAULT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ``VOUT_OV_FAULT``”h]”hŒ VOUT_OV_FAULT”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ``VOUT_UV_FAULT``”h]”hŒ VOUT_UV_FAULT”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ``OC_TOT_FAULT``”h]”hŒ OC_TOT_FAULT”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ``VIN_UVLO_FAULT``”h]”hŒVIN_UVLO_FAULT”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ, ”…”�”}”hj sbj‡)�”}”(hŒ ``DRMOS_OTP``”h]”hŒ DRMOS_OTP”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj ubhŒ).”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K¤hj@ h²hubhì)�”}”(hŒÖ``status_decoded`` reads ``STATUS_WORD`` (0x79) and renders the 16 bits with MPS-extension labels (bit12 = ``NVM_SUMMARY``, bit8 = ``WATCH_DOG``, bit0 = ``DRMOS_FAULT``) instead of the PMBus 1.3 spec generic names.”h]”(j‡)�”}”(hŒ``status_decoded``”h]”hŒstatus_decoded”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjs ubhŒ reads ”…”�”}”(hjs h²hh³Nh´Nubj‡)�”}”(hŒ``STATUS_WORD``”h]”hŒ STATUS_WORD”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjs ubhŒC (0x79) and renders the 16 bits with MPS-extension labels (bit12 = ”…”�”}”(hjs h²hh³Nh´Nubj‡)�”}”(hŒ``NVM_SUMMARY``”h]”hŒ NVM_SUMMARY”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjs ubhŒ , bit8 = ”…”�”}”(hjs h²hh³Nh´Nubj‡)�”}”(hŒ ``WATCH_DOG``”h]”hŒ WATCH_DOG”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjs ubhŒ , bit0 = ”…”�”}”(hjs h²hh³Nh´Nubj‡)�”}”(hŒ``DRMOS_FAULT``”h]”hŒ DRMOS_FAULT”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjs ubhŒ.) instead of the PMBus 1.3 spec generic names.”…”�”}”(hjs h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kªhj@ h²hubeh}”(h]”Œmps-post-mortem-protection-last”ah ]”h"]”Œ!mps post-mortem (protection_last)”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K™ubh×)�”}”(hhh]”(hÜ)�”}”(hŒNVMEM snapshot”h]”hŒNVMEM snapshot”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjß h²hh³hÇh´K°ubhì)�”}”(hX!When ``CONFIG_NVMEM=y`` is set, the chip's NVM-backed observability registers are exposed as a single 16-byte read-only ``nvmem_device`` at ``/sys/bus/nvmem/devices//nvmem``. Layout (little-endian for 16-bit fields, zero-fill on per-entry read failure and for the reserved tail):”h]”(hŒWhen ”…”�”}”(hjð h²hh³Nh´Nubj‡)�”}”(hŒ``CONFIG_NVMEM=y``”h]”hŒCONFIG_NVMEM=y”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjð ubhŒc is set, the chip’s NVM-backed observability registers are exposed as a single 16-byte read-only ”…”�”}”(hjð h²hh³Nh´Nubj‡)�”}”(hŒ``nvmem_device``”h]”hŒ nvmem_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjð ubhŒ at ”…”�”}”(hjð h²hh³Nh´Nubj‡)�”}”(hŒ+``/sys/bus/nvmem/devices//nvmem``”h]”hŒ'/sys/bus/nvmem/devices//nvmem”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjð ubhŒj. Layout (little-endian for 16-bit fields, zero-fill on per-entry read failure and for the reserved tail):”…”�”}”(hjð h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K²hjß h²hubj×)�”}”(hŒùoffset 0..1 PROTECTION_LAST (0xFB) word offset 2..3 MFR_RETRY_TIMES (0xF4) word offset 4..5 MFR_CONFIG_ID (0xC0) word offset 6..7 MFR_VBOOT_CFG (0xFC) word offset 8 MFR_SILICON_REV (0xC3) byte offset 9..15 reserved (zero)”h]”hŒùoffset 0..1 PROTECTION_LAST (0xFB) word offset 2..3 MFR_RETRY_TIMES (0xF4) word offset 4..5 MFR_CONFIG_ID (0xC0) word offset 6..7 MFR_VBOOT_CFG (0xFC) word offset 8 MFR_SILICON_REV (0xC3) byte offset 9..15 reserved (zero)”…”�”}”hj4 sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÖh³hÇh´Kºhjß h²hubhì)�”}”(hŒBSuitable for single-``cat`` post-mortem capture by a fleet daemon.”h]”(hŒSuitable for single-”…”�”}”(hjB h²hh³Nh´Nubj‡)�”}”(hŒ``cat``”h]”hŒcat”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjB ubhŒ' post-mortem capture by a fleet daemon.”…”�”}”(hjB h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÁhjß h²hubeh}”(h]”Œnvmem-snapshot”ah ]”h"]”Œnvmem snapshot”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K°ubh×)�”}”(hhh]”(hÜ)�”}”(hŒDiagnostics and introspection”h]”hŒDiagnostics and introspection”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjj h²hh³hÇh´KÄubhì)�”}”(hX+When ``CONFIG_DEBUG_FS=y`` is set, the driver adds a read-only decode surface to the client's pmbus debugfs directory, ``/sys/kernel/debug/i2c/i2c-/-/``. The driver intentionally exposes no raw register poke/peek debugfs; use i2c-dev (``i2cget``/``i2cset``/``i2ctransfer``) for that.”h]”(hŒWhen ”…”�”}”(hj{ h²hh³Nh´Nubj‡)�”}”(hŒ``CONFIG_DEBUG_FS=y``”h]”hŒCONFIG_DEBUG_FS=y”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj{ ubhŒ_ is set, the driver adds a read-only decode surface to the client’s pmbus debugfs directory, ”…”�”}”(hj{ h²hh³Nh´Nubj‡)�”}”(hŒ1``/sys/kernel/debug/i2c/i2c-/-/``”h]”hŒ-/sys/kernel/debug/i2c/i2c-/-/”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj{ ubhŒS. The driver intentionally exposes no raw register poke/peek debugfs; use i2c-dev (”…”�”}”(hj{ h²hh³Nh´Nubj‡)�”}”(hŒ ``i2cget``”h]”hŒi2cget”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj{ ubhŒ/”…”�”}”(hj{ h²hh³Nh´Nubj‡)�”}”(hŒ ``i2cset``”h]”hŒi2cset”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj{ ubhŒ/”…”�”}”hj{ sbj‡)�”}”(hŒ``i2ctransfer``”h]”hŒ i2ctransfer”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj{ ubhŒ ) for that.”…”�”}”(hj{ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÆhjj h²hubhì)�”}”(hŒ%Identity / observability (read-only):”h]”hŒ%Identity / observability (read-only):”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÌhjj h²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jû hjø ubjü )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jû hjø ubjü )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1jû hjø ubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hì)�”}”(hŒFile”h]”hŒFile”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÏhj' ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj" ubj& )�”}”(hhh]”hì)�”}”(hŒPMBus / MFR cmd”h]”hŒPMBus / MFR cmd”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÏhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj" ubj& )�”}”(hhh]”hì)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÏhjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj" ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø ubhŒtbody”“”)�”}”(hhh]”(j! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``mfr_config_id``”h]”j‡)�”}”(hj… h]”hŒ mfr_config_id”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÑhj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj} ubj& )�”}”(hhh]”hì)�”}”(hŒ 0xC0 (word)”h]”hŒ 0xC0 (word)”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÑhj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj} ubj& )�”}”(hhh]”hì)�”}”(hŒboard / SKU NVM identifier”h]”hŒboard / SKU NVM identifier”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÑhj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj} ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjz ubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``mfr_config_code_rev``”h]”j‡)�”}”(hjÜ h]”hŒmfr_config_code_rev”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÒhj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÔ ubj& )�”}”(hhh]”hì)�”}”(hŒ 0xC1 (word)”h]”hŒ 0xC1 (word)”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÒhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÔ ubj& )�”}”(hhh]”hì)�”}”(hŒ8NVM image revision (PART_RECOG + config code rev fields)”h]”hŒ8NVM image revision (PART_RECOG + config code rev fields)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÒhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÔ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjz ubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``mfr_silicon_rev``”h]”j‡)�”}”(hj3 h]”hŒmfr_silicon_rev”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÔhj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj+ ubj& )�”}”(hhh]”hì)�”}”(hŒ 0xC3 (byte)”h]”hŒ 0xC3 (byte)”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÔhjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj+ ubj& )�”}”(hhh]”hì)�”}”(hŒ die revision”h]”hŒ die revision”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÔhje ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj+ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjz ubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``mfr_retry_times``”h]”j‡)�”}”(hjŠ h]”hŒmfr_retry_times”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÕhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj‚ ubj& )�”}”(hhh]”hì)�”}”(hŒ 0xF4 (word)”h]”hŒ 0xF4 (word)”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÕhj¥ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj‚ ubj& )�”}”(hhh]”hì)�”}”(hX per-fault-class recovery-mode configuration (NOT a retry count). Four 4-bit fields [15:12]=OTP, [11:8]=VOUT_OV, [7:4]=VOUT_UV, [3:0]=OCP. Each field: 0x0=latch-off, 0x1..0xE=retry N times then latch off, 0xF=hiccup (retry indefinitely). The chip exposes no in-NVM retry-event counter; track transitions externally if needed (poll ``protection_last`` or watch ``inX_alarm`` / ``temp1_alarm`` ``poll(POLLPRI)`` wakes).”h]”(hXJper-fault-class recovery-mode configuration (NOT a retry count). Four 4-bit fields [15:12]=OTP, [11:8]=VOUT_OV, [7:4]=VOUT_UV, [3:0]=OCP. Each field: 0x0=latch-off, 0x1..0xE=retry N times then latch off, 0xF=hiccup (retry indefinitely). The chip exposes no in-NVM retry-event counter; track transitions externally if needed (poll ”…”�”}”(hj¿ h²hh³Nh´Nubj‡)�”}”(hŒ``protection_last``”h]”hŒprotection_last”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj¿ ubhŒ or watch ”…”�”}”(hj¿ h²hh³Nh´Nubj‡)�”}”(hŒ ``inX_alarm``”h]”hŒ inX_alarm”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj¿ ubhŒ / ”…”�”}”(hj¿ h²hh³Nh´Nubj‡)�”}”(hŒ``temp1_alarm``”h]”hŒ temp1_alarm”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj¿ ubhŒ ”…”�”}”(hj¿ h²hh³Nh´Nubj‡)�”}”(hŒ``poll(POLLPRI)``”h]”hŒ poll(POLLPRI)”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj¿ ubhŒ wakes).”…”�”}”(hj¿ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÕhj¼ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj‚ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjz ubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``mfr_vboot_cfg``”h]”j‡)�”}”(hj)h]”hŒ mfr_vboot_cfg”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kåhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj!ubj& )�”}”(hhh]”hì)�”}”(hŒ 0xFC (word)”h]”hŒ 0xFC (word)”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KåhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj!ubj& )�”}”(hhh]”hì)�”}”(hŒADDR/VBOOT latched at POR”h]”hŒADDR/VBOOT latched at POR”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kåhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjz ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jx hjø ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jö hjó ubah}”(h]”h ]”h"]”h$]”h&]”uh1jñ hjj h²hh³hÇh´Nubhì)�”}”(hŒ Timing / UVLO knobs (read-only):”h]”hŒ Timing / UVLO knobs (read-only):”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kèhjj h²hubjò )�”}”(hhh]”j÷ )�”}”(hhh]”(jü )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jû hjœubjü )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jû hjœubjü )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1jû hjœubj )�”}”(hhh]”j! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒFile”h]”hŒFile”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KëhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÀubj& )�”}”(hhh]”hì)�”}”(hŒ PMBus cmd”h]”hŒ PMBus cmd”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KëhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÀubj& )�”}”(hhh]”hì)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Këhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœubjy )�”}”(hhh]”(j! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ ``vin_on``”h]”j‡)�”}”(hjh]”hŒvin_on”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kíhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubj& )�”}”(hhh]”hì)�”}”(hŒ 0x35 (word)”h]”hŒ 0x35 (word)”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kíhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubj& )�”}”(hhh]”hì)�”}”(hŒUVLO turn-on threshold”h]”hŒUVLO turn-on threshold”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KíhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ ``vin_off``”h]”j‡)�”}”(hjvh]”hŒvin_off”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kîhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjnubj& )�”}”(hhh]”hì)�”}”(hŒ 0x36 (word)”h]”hŒ 0x36 (word)”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kîhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjnubj& )�”}”(hhh]”hì)�”}”(hŒUVLO turn-off threshold”h]”hŒUVLO turn-off threshold”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kîhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ ``ton_delay``”h]”j‡)�”}”(hjÍh]”hŒ ton_delay”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KïhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÅubj& )�”}”(hhh]”hì)�”}”(hŒ 0x60 (word)”h]”hŒ 0x60 (word)”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kïhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÅubj& )�”}”(hhh]”hì)�”}”(hŒsoft-start delay”h]”hŒsoft-start delay”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kïhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ ``ton_rise``”h]”j‡)�”}”(hj$h]”hŒton_rise”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kðhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubj& )�”}”(hhh]”hì)�”}”(hŒ 0x61 (word)”h]”hŒ 0x61 (word)”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kðhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubj& )�”}”(hhh]”hì)�”}”(hŒsoft-start ramp time”h]”hŒsoft-start ramp time”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KðhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``toff_delay``”h]”j‡)�”}”(hj{h]”hŒ toff_delay”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kñhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjsubj& )�”}”(hhh]”hì)�”}”(hŒ 0x64 (word)”h]”hŒ 0x64 (word)”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kñhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjsubj& )�”}”(hhh]”hì)�”}”(hŒsoft-stop delay”h]”hŒsoft-stop delay”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kñhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ ``toff_fall``”h]”j‡)�”}”(hjÒh]”hŒ toff_fall”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KòhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÊubj& )�”}”(hhh]”hì)�”}”(hŒ 0x65 (word)”h]”hŒ 0x65 (word)”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kòhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÊubj& )�”}”(hhh]”hì)�”}”(hŒsoft-stop ramp time”h]”hŒsoft-stop ramp time”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jx hjœubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jö hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jñ hjj h²hh³hÇh´Nubhì)�”}”(hŒ�The only writable entry is ``alarm_poll_interval_ms`` (the alarm-poll worker cadence, see above), it is driver-local and never touches the chip.”h]”(hŒThe only writable entry is ”…”�”}”(hj4h²hh³Nh´Nubj‡)�”}”(hŒ``alarm_poll_interval_ms``”h]”hŒalarm_poll_interval_ms”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj4ubhŒ[ (the alarm-poll worker cadence, see above), it is driver-local and never touches the chip.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kõhjj h²hubeh}”(h]”Œdiagnostics-and-introspection”ah ]”h"]”Œdiagnostics and introspection”ah$]”h&]”uh1hÖhhØh²hh³hÇh´KÄubh×)�”}”(hhh]”(hÜ)�”}”(hŒUnsafe provisioning”h]”hŒUnsafe provisioning”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj\h²hh³hÇh´Kúubhì)�”}”(hXáAvailable only when ``CONFIG_SENSORS_MPQ8646_DEBUG_UNSAFE=y`` (``default n``, it is for boards bring up only). They WRITE to the regulator. On many designs the MPQ8646 powers the main CPU core rail, so a wrong write can brown out the board or persist a bad setpoint into finite-cycle NVM. WARNING: Some wrong register writes can and likely will physically damage or destroy the chip and/or the board. An explicit warning banner is printed at probe time when this option is enabled.”h]”(hŒAvailable only when ”…”�”}”(hjmh²hh³Nh´Nubj‡)�”}”(hŒ)``CONFIG_SENSORS_MPQ8646_DEBUG_UNSAFE=y``”h]”hŒ%CONFIG_SENSORS_MPQ8646_DEBUG_UNSAFE=y”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjmubhŒ (”…”�”}”(hjmh²hh³Nh´Nubj‡)�”}”(hŒ ``default n``”h]”hŒ default n”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjmubhX•, it is for boards bring up only). They WRITE to the regulator. On many designs the MPQ8646 powers the main CPU core rail, so a wrong write can brown out the board or persist a bad setpoint into finite-cycle NVM. WARNING: Some wrong register writes can and likely will physically damage or destroy the chip and/or the board. An explicit warning banner is printed at probe time when this option is enabled.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kühj\h²hubjò )�”}”(hhh]”j÷ )�”}”(hhh]”(jü )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jû hj¢ubjü )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jû hj¢ubjü )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K9uh1jû hj¢ubj )�”}”(hhh]”j! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒFile”h]”hŒFile”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÆubj& )�”}”(hhh]”hì)�”}”(hŒPMBus / MFR cmd”h]”hŒPMBus / MFR cmd”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÆubj& )�”}”(hhh]”hì)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¢ubjy )�”}”(hhh]”(j! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ ``store_all``”h]”j‡)�”}”(hj%h]”hŒ store_all”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubj& )�”}”(hhh]”hì)�”}”(hŒ0x15”h]”hŒ0x15”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubj& )�”}”(hhh]”hì)�”}”(hŒ3STORE_USER_ALL Send-Byte (commit RAM config to NVM)”h]”hŒ3STORE_USER_ALL Send-Byte (commit RAM config to NVM)”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``restore_all``”h]”j‡)�”}”(hj|h]”hŒ restore_all”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjtubj& )�”}”(hhh]”hì)�”}”(hŒ0x16”h]”hŒ0x16”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjtubj& )�”}”(hhh]”hì)�”}”(hŒ9RESTORE_USER_ALL Send-Byte (revert RAM to last-NVM image)”h]”hŒ9RESTORE_USER_ALL Send-Byte (revert RAM to last-NVM image)”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``clear_protection_last``”h]”j‡)�”}”(hjÓh]”hŒclear_protection_last”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjËubj& )�”}”(hhh]”hì)�”}”(hŒ0x08”h]”hŒ0x08”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjËubj& )�”}”(hhh]”hì)�”}”(hŒCLEAR_LAST_FAULT Send-Byte”h]”hŒCLEAR_LAST_FAULT Send-Byte”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``clear_protection_last_force``”h]”j‡)�”}”(hj*h]”hŒclear_protection_last_force”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj"ubj& )�”}”(hhh]”hì)�”}”(hŒ--”h]”hŒ--”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj"ubj& )�”}”(hhh]”hì)�”}”(hŒ!gated CLEAR_LAST_FAULT, see below”h]”hŒ!gated CLEAR_LAST_FAULT, see below”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``on_off_config``”h]”j‡)�”}”(hj�h]”hŒ on_off_config”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjyubj& )�”}”(hhh]”hì)�”}”(hŒ 0x02 (byte)”h]”hŒ 0x02 (byte)”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjyubj& )�”}”(hhh]”hì)�”}”(hŒ1PMBus vs CTRL-pin on/off source + active polarity”h]”hŒ1PMBus vs CTRL-pin on/off source + active polarity”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``vout_margin_high``”h]”j‡)�”}”(hjØh]”hŒvout_margin_high”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÐubj& )�”}”(hhh]”hì)�”}”(hŒ 0x25 (word)”h]”hŒ 0x25 (word)”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÐubj& )�”}”(hhh]”hì)�”}”(hŒmargin-high VOUT setpoint”h]”hŒmargin-high VOUT setpoint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``vout_margin_low``”h]”j‡)�”}”(hj/h]”hŒvout_margin_low”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj'ubj& )�”}”(hhh]”hì)�”}”(hŒ 0x26 (word)”h]”hŒ 0x26 (word)”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj'ubj& )�”}”(hhh]”hì)�”}”(hŒmargin-low VOUT setpoint”h]”hŒmargin-low VOUT setpoint”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``mfr_pmbus_lock``”h]”j‡)�”}”(hj†h]”hŒmfr_pmbus_lock”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj~ubj& )�”}”(hhh]”hì)�”}”(hŒ 0xEE (word)”h]”hŒ 0xEE (word)”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj~ubj& )�”}”(hhh]”hì)�”}”(hŒprogrammable PMBus write-lock”h]”hŒprogrammable PMBus write-lock”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj! )�”}”(hhh]”(j& )�”}”(hhh]”hì)�”}”(hŒ``mfr_product_rev_user``”h]”j‡)�”}”(hjÝh]”hŒmfr_product_rev_user”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÕubj& )�”}”(hhh]”hì)�”}”(hŒ 0xC2 (word)”h]”hŒ 0xC2 (word)”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÕubj& )�”}”(hhh]”hì)�”}”(hŒ"user-programmable product revision”h]”hŒ"user-programmable product revision”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jx hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jö hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jñ hj\h²hh³hÇh´Nubhì)�”}”(hŒ�``clear_protection_last`` writes ``CLEAR_LAST_FAULT`` (0x08) Send-Byte. The chip silently no-ops unless ``MFR_CFG_EXT`` (0xF5) bit[6] is set.”h]”(j‡)�”}”(hŒ``clear_protection_last``”h]”hŒclear_protection_last”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj?ubhŒ writes ”…”�”}”(hj?h²hh³Nh´Nubj‡)�”}”(hŒ``CLEAR_LAST_FAULT``”h]”hŒCLEAR_LAST_FAULT”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj?ubhŒ3 (0x08) Send-Byte. The chip silently no-ops unless ”…”�”}”(hj?h²hh³Nh´Nubj‡)�”}”(hŒ``MFR_CFG_EXT``”h]”hŒ MFR_CFG_EXT”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj?ubhŒ (0xF5) bit[6] is set.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj\h²hubhì)�”}”(hŒX``clear_protection_last_force`` performs the unlock with the following six-step dancing:”h]”(j‡)�”}”(hŒ``clear_protection_last_force``”h]”hŒclear_protection_last_force”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjubhŒ9 performs the unlock with the following six-step dancing:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj\h²hubhŒenumerated_list”“”)�”}”(hhh]”(j)�”}”(hŒDread ``WRITE_PROTECT`` (0x10) and ``MFR_CFG_EXT`` (0xF5) for restore”h]”hì)�”}”(hj¢h]”(hŒread ”…”�”}”(hj¤h²hh³Nh´Nubj‡)�”}”(hŒ``WRITE_PROTECT``”h]”hŒ WRITE_PROTECT”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj¤ubhŒ (0x10) and ”…”�”}”(hj¤h²hh³Nh´Nubj‡)�”}”(hŒ``MFR_CFG_EXT``”h]”hŒ MFR_CFG_EXT”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj¤ubhŒ (0xF5) for restore”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³hÇh´Nubj)�”}”(hŒclear ``WRITE_PROTECT`` if set”h]”hì)�”}”(hjÝh]”(hŒclear ”…”�”}”(hjßh²hh³Nh´Nubj‡)�”}”(hŒ``WRITE_PROTECT``”h]”hŒ WRITE_PROTECT”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjßubhŒ if set”…”�”}”(hjßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³hÇh´Nubj)�”}”(hŒ5set ``MFR_CFG_EXT`` bit[6] = 1, preserving other bits”h]”hì)�”}”(hjh]”(hŒset ”…”�”}”(hjh²hh³Nh´Nubj‡)�”}”(hŒ``MFR_CFG_EXT``”h]”hŒ MFR_CFG_EXT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjubhŒ" bit[6] = 1, preserving other bits”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³hÇh´Nubj)�”}”(hŒ send ``CLEAR_LAST_FAULT`` (0x08)”h]”hì)�”}”(hj/h]”(hŒsend ”…”�”}”(hj1h²hh³Nh´Nubj‡)�”}”(hŒ``CLEAR_LAST_FAULT``”h]”hŒCLEAR_LAST_FAULT”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj1ubhŒ (0x08)”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³hÇh´Nubj)�”}”(hŒarestore ``MFR_CFG_EXT`` (with retry to handle the chip's undocumented post-NVM-write busy window)”h]”hì)�”}”(hŒarestore ``MFR_CFG_EXT`` (with retry to handle the chip's undocumented post-NVM-write busy window)”h]”(hŒrestore ”…”�”}”(hjZh²hh³Nh´Nubj‡)�”}”(hŒ``MFR_CFG_EXT``”h]”hŒ MFR_CFG_EXT”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjZubhŒL (with retry to handle the chip’s undocumented post-NVM-write busy window)”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³hÇh´Nubj)�”}”(hŒrestore ``WRITE_PROTECT`` ”h]”hì)�”}”(hŒrestore ``WRITE_PROTECT``”h]”(hŒrestore ”…”�”}”(hj„h²hh³Nh´Nubj‡)�”}”(hŒ``WRITE_PROTECT``”h]”hŒ WRITE_PROTECT”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j›hj\h²hh³hÇh´Mubeh}”(h]”Œunsafe-provisioning”ah ]”h"]”Œunsafe provisioning”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kúubh×)�”}”(hhh]”(hÜ)�”}”(hŒ Devicetree”h]”hŒ Devicetree”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj¹h²hh³hÇh´M!ubhì)�”}”(hŒWThe driver uses ``compatible = "mps,mpq8646"``. There are some few optional properties:”h]”(hŒThe driver uses ”…”�”}”(hjÊh²hh³Nh´Nubj‡)�”}”(hŒ``compatible = "mps,mpq8646"``”h]”hŒcompatible = "mps,mpq8646"”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjÊubhŒ). There are some few optional properties:”…”�”}”(hjÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M#hj¹h²hubj)�”}”(hhh]”(j)�”}”(hŒ»``mps,vout-fb-divider-ratio-permille`` : it writes ``VOUT_SCALE_LOOP`` (0x29) at probe to compensate for an external resistor divider in the VOUT feedback path. The valid range is 11-bit.”h]”hì)�”}”(hŒ»``mps,vout-fb-divider-ratio-permille`` : it writes ``VOUT_SCALE_LOOP`` (0x29) at probe to compensate for an external resistor divider in the VOUT feedback path. The valid range is 11-bit.”h]”(j‡)�”}”(hŒ&``mps,vout-fb-divider-ratio-permille``”h]”hŒ"mps,vout-fb-divider-ratio-permille”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjñubhŒ : it writes ”…”�”}”(hjñh²hh³Nh´Nubj‡)�”}”(hŒ``VOUT_SCALE_LOOP``”h]”hŒVOUT_SCALE_LOOP”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hjñubhŒu (0x29) at probe to compensate for an external resistor divider in the VOUT feedback path. The valid range is 11-bit.”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M&hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêh²hh³hÇh´Nubj)�”}”(hŒÃ``interrupts = <...>`` : if the board routes the chip's ``SMBALERT#`` pin to a SoC GPIO, declaring it here lights up ``pmbus_core::pmbus_irq_setup`` and disables the in-driver alarm-poll fallback”h]”hì)�”}”(hŒÃ``interrupts = <...>`` : if the board routes the chip's ``SMBALERT#`` pin to a SoC GPIO, declaring it here lights up ``pmbus_core::pmbus_irq_setup`` and disables the in-driver alarm-poll fallback”h]”(j‡)�”}”(hŒ``interrupts = <...>``”h]”hŒinterrupts = <...>”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj)ubhŒ$ : if the board routes the chip’s ”…”�”}”(hj)h²hh³Nh´Nubj‡)�”}”(hŒ ``SMBALERT#``”h]”hŒ SMBALERT#”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj)ubhŒ0 pin to a SoC GPIO, declaring it here lights up ”…”�”}”(hj)h²hh³Nh´Nubj‡)�”}”(hŒ``pmbus_core::pmbus_irq_setup``”h]”hŒpmbus_core::pmbus_irq_setup”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j†hj)ubhŒ/ and disables the in-driver alarm-poll fallback”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M)hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j4j“uh1jh³hÇh´M&hj¹h²hubeh}”(h]”Œ devicetree”ah ]”h"]”Œ devicetree”ah$]”h&]”uh1hÖhhØh²hh³hÇh´M!ubeh}”(h]”Œkernel-driver-mpq8646”ah ]”h"]”Œkernel driver mpq8646”ah$]”h&]”uh1hÖhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”j% Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j§Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”•'}”(j‚jjØjÕjjjgjÁj¾j$j!j= j: jÜ jÙ jg jd jYjVj¶j³jzjwuŒ nametypes”}”(j‚‰j؉jj‰jÁ‰j$‰j= ‰jÜ ‰jg ‰jY‰j¶‰jz‰uh}”(jhØjÕj¦jgjÛj¾jmj!jÄj: j'jÙ j@ jd jß jVjj j³j\jwj¹uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”hŒsystem_message”“”)�”}”(hhh]”hì)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œline”M Œsource”hÇuh1j hjEubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.