€•¾6Œ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/misc-devices/tps6594-pfsm”Œ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/misc-devices/tps6594-pfsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/misc-devices/tps6594-pfsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/misc-devices/tps6594-pfsm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/misc-devices/tps6594-pfsm”Œ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/misc-devices/tps6594-pfsm”Œ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/misc-devices/tps6594-pfsm”Œ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”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒG/var/lib/git/docbuild/linux/Documentation/misc-devices/tps6594-pfsm.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ%Texas Instruments TPS6594 PFSM driver”h]”hŒ%Texas Instruments TPS6594 PFSM driver”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒ*Author: Julien Panis (jpanis@baylibre.com)”h]”(hŒAuthor: Julien Panis (”…””}”(hhßh²hh³Nh´NubhŒ reference”“”)”}”(hŒjpanis@baylibre.com”h]”hŒjpanis@baylibre.com”…””}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:jpanis@baylibre.com”uh1hçhhßubhŒ)”…””}”(hhßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒOverview”h]”hŒOverview”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K ubhÞ)”}”(hŒgStrictly speaking, PFSM (Pre-configurable Finite State Machine) is not hardware. It is a piece of code.”h]”hŒgStrictly speaking, PFSM (Pre-configurable Finite State Machine) is not hardware. It is a piece of code.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hjh²hubhÞ)”}”(hŒÌThe TPS6594 PMIC (Power Management IC) integrates a state machine which manages operational modes. Depending on the current operational mode, some voltage domains remain energized while others can be off.”h]”hŒÌThe TPS6594 PMIC (Power Management IC) integrates a state machine which manages operational modes. Depending on the current operational mode, some voltage domains remain energized while others can be off.”…””}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjh²hubhÞ)”}”(hŒ‚The PFSM driver can be used to trigger transitions between configured states. It also provides R/W access to the device registers.”h]”hŒ‚The PFSM driver can be used to trigger transitions between configured states. It also provides R/W access to the device registers.”…””}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒSupported chips”h]”hŒSupported chips”…””}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj>h²hh³hÇh´KubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒ tps6594-q1”h]”hÞ)”}”(hjXh]”hŒ tps6594-q1”…””}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jThjQh²hh³hÇh´NubjU)”}”(hŒ tps6593-q1”h]”hÞ)”}”(hjoh]”hŒ tps6593-q1”…””}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jThjQh²hh³hÇh´NubjU)”}”(hŒ lp8764-q1 ”h]”hÞ)”}”(hŒ lp8764-q1”h]”hŒ lp8764-q1”…””}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jThjQh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jOh³hÇh´Khj>h²hubeh}”(h]”Œsupported-chips”ah ]”h"]”Œsupported chips”ah$]”h&]”uh1hÈhjh²hh³hÇh´Kubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)”}”(hhh]”(hÎ)”}”(hŒDriver location”h]”hŒDriver location”…””}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj´h²hh³hÇh´KubhÞ)”}”(hŒdrivers/misc/tps6594-pfsm.c”h]”hŒdrivers/misc/tps6594-pfsm.c”…””}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hj´h²hubeh}”(h]”Œdriver-location”ah ]”h"]”Œdriver location”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒDriver type definitions”h]”hŒDriver type definitions”…””}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÛh²hh³hÇh´K#ubhÞ)”}”(hŒ!include/uapi/linux/tps6594_pfsm.h”h]”hŒ!include/uapi/linux/tps6594_pfsm.h”…””}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K%hjÛh²hubeh}”(h]”Œdriver-type-definitions”ah ]”h"]”Œdriver type definitions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K#ubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Driver IOCTLs”h]”hŒ Driver IOCTLs”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K(ubhÞ)”}”(hŒ:c:macro:`PMIC_GOTO_STANDBY` All device resources are powered down. The processor is off, and no voltage domains are energized.”h]”(h)”}”(hŒ:c:macro:`PMIC_GOTO_STANDBY`”h]”hŒliteral”“”)”}”(hjh]”hŒPMIC_GOTO_STANDBY”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-macro”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œmisc-devices/tps6594-pfsm”Œ refdomain”j(Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰Œ reftarget”ŒPMIC_GOTO_STANDBY”uh1hh³hÇh´K*hjubhŒc All device resources are powered down. The processor is off, and no voltage domains are energized.”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K*hjh²hubhÞ)”}”(hŒ‘:c:macro:`PMIC_GOTO_LP_STANDBY` The digital and analog functions of the PMIC, which are not required to be always-on, are turned off (low-power).”h]”(h)”}”(hŒ:c:macro:`PMIC_GOTO_LP_STANDBY`”h]”j)”}”(hjLh]”hŒPMIC_GOTO_LP_STANDBY”…””}”(hjNh²hh³Nh´Nubah}”(h]”h ]”(j'j(Œc-macro”eh"]”h$]”h&]”uh1jhjJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j4Œ refdomain”j(Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰j:ŒPMIC_GOTO_LP_STANDBY”uh1hh³hÇh´K.hjFubhŒr The digital and analog functions of the PMIC, which are not required to be always-on, are turned off (low-power).”…””}”(hjFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K.hjh²hubhÞ)”}”(hŒ6:c:macro:`PMIC_UPDATE_PGM` Triggers a firmware update.”h]”(h)”}”(hŒ:c:macro:`PMIC_UPDATE_PGM`”h]”j)”}”(hjyh]”hŒPMIC_UPDATE_PGM”…””}”(hj{h²hh³Nh´Nubah}”(h]”h ]”(j'j(Œc-macro”eh"]”h$]”h&]”uh1jhjwubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j4Œ refdomain”j(Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰j:ŒPMIC_UPDATE_PGM”uh1hh³hÇh´K2hjsubhŒ Triggers a firmware update.”…””}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K2hjh²hubhÞ)”}”(hŒË:c:macro:`PMIC_SET_ACTIVE_STATE` One of the operational modes. The PMICs are fully functional and supply power to all PDN loads. All voltage domains are energized in both MCU and Main processor sections.”h]”(h)”}”(hŒ :c:macro:`PMIC_SET_ACTIVE_STATE`”h]”j)”}”(hj¦h]”hŒPMIC_SET_ACTIVE_STATE”…””}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”(j'j(Œc-macro”eh"]”h$]”h&]”uh1jhj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j4Œ refdomain”j(Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰j:ŒPMIC_SET_ACTIVE_STATE”uh1hh³hÇh´K5hj ubhŒ« One of the operational modes. The PMICs are fully functional and supply power to all PDN loads. All voltage domains are energized in both MCU and Main processor sections.”…””}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K5hjh²hubhÞ)”}”(hŒƒ:c:macro:`PMIC_SET_MCU_ONLY_STATE` One of the operational modes. Only the power resources assigned to the MCU Safety Island are on.”h]”(h)”}”(hŒ":c:macro:`PMIC_SET_MCU_ONLY_STATE`”h]”j)”}”(hjÓh]”hŒPMIC_SET_MCU_ONLY_STATE”…””}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”(j'j(Œc-macro”eh"]”h$]”h&]”uh1jhjÑubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j4Œ refdomain”j(Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰j:ŒPMIC_SET_MCU_ONLY_STATE”uh1hh³hÇh´K;hjÍubhŒa One of the operational modes. Only the power resources assigned to the MCU Safety Island are on.”…””}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K;hjh²hubhÞ)”}”(hŒÔ:c:macro:`PMIC_SET_RETENTION_STATE` One of the operational modes. Depending on the triggers set, some DDR/GPIO voltage domains can remain energized, while all other domains are off to minimize total system power.”h]”(h)”}”(hŒ#:c:macro:`PMIC_SET_RETENTION_STATE`”h]”j)”}”(hjh]”hŒPMIC_SET_RETENTION_STATE”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j'j(Œc-macro”eh"]”h$]”h&]”uh1jhjþubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j4Œ refdomain”j(Œreftype”Œmacro”Œ refexplicit”‰Œrefwarn”‰j:ŒPMIC_SET_RETENTION_STATE”uh1hh³hÇh´K?hjúubhŒ± One of the operational modes. Depending on the triggers set, some DDR/GPIO voltage domains can remain energized, while all other domains are off to minimize total system power.”…””}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K?hjh²hubeh}”(h]”Œ driver-ioctls”ah ]”h"]”Œ driver ioctls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K(ubhÉ)”}”(hhh]”(hÎ)”}”(hŒ Driver usage”h]”hŒ Driver usage”…””}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj/h²hh³hÇh´KFubhÞ)”}”(hŒSee available PFSMs::”h]”hŒSee available PFSMs:”…””}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KHhj/h²hubhŒ literal_block”“”)”}”(hŒ# ls /dev/pfsm*”h]”hŒ# ls /dev/pfsm*”…””}”hjPsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jNh³hÇh´KJhj/h²hubhÞ)”}”(hŒ%Dump the registers of pages 0 and 1::”h]”hŒ$Dump the registers of pages 0 and 1:”…””}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KLhj/h²hubjO)”}”(hŒ# hexdump -C /dev/pfsm-0-0x48”h]”hŒ# hexdump -C /dev/pfsm-0-0x48”…””}”hjlsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jNh³hÇh´KNhj/h²hubhÞ)”}”(hŒSee PFSM events::”h]”hŒSee PFSM events:”…””}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhj/h²hubjO)”}”(hŒ# cat /proc/interrupts”h]”hŒ# cat /proc/interrupts”…””}”hjˆsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jNh³hÇh´KRhj/h²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒUserspace code example”h]”hŒUserspace code example”…””}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj–h²hh³hÇh´KUubhÞ)”}”(hŒsamples/pfsm/pfsm-wakeup.c”h]”hŒsamples/pfsm/pfsm-wakeup.c”…””}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KWhj–h²hubeh}”(h]”Œuserspace-code-example”ah ]”h"]”Œuserspace code example”ah$]”h&]”uh1hÈhj/h²hh³hÇh´KUubeh}”(h]”Œ driver-usage”ah ]”h"]”Œ driver usage”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KFubeh}”(h]”Œ%texas-instruments-tps6594-pfsm-driver”ah ]”h"]”Œ%texas instruments tps6594 pfsm driver”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”Œentry”Œ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ÊjÇj±j®j©j¦jØjÕjÿjüj,j)jÂj¿jºj·uŒ nametypes”}”(jʉj±‰j©‰j؉jÿ‰j,‰j‰jº‰uh}”(jÇhÊj®jj¦j>jÕj´jüjÛj)jj¿j/j·j–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”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.