1*dce54888SJulien Panis.. SPDX-License-Identifier: GPL-2.0 2*dce54888SJulien Panis 3*dce54888SJulien Panis===================================== 4*dce54888SJulien PanisTexas Instruments TPS6594 PFSM driver 5*dce54888SJulien Panis===================================== 6*dce54888SJulien Panis 7*dce54888SJulien PanisAuthor: Julien Panis (jpanis@baylibre.com) 8*dce54888SJulien Panis 9*dce54888SJulien PanisOverview 10*dce54888SJulien Panis======== 11*dce54888SJulien Panis 12*dce54888SJulien PanisStrictly speaking, PFSM (Pre-configurable Finite State Machine) is not 13*dce54888SJulien Panishardware. It is a piece of code. 14*dce54888SJulien Panis 15*dce54888SJulien PanisThe TPS6594 PMIC (Power Management IC) integrates a state machine which 16*dce54888SJulien Panismanages operational modes. Depending on the current operational mode, 17*dce54888SJulien Panissome voltage domains remain energized while others can be off. 18*dce54888SJulien Panis 19*dce54888SJulien PanisThe PFSM driver can be used to trigger transitions between configured 20*dce54888SJulien Panisstates. It also provides R/W access to the device registers. 21*dce54888SJulien Panis 22*dce54888SJulien PanisSupported chips 23*dce54888SJulien Panis--------------- 24*dce54888SJulien Panis 25*dce54888SJulien Panis- tps6594-q1 26*dce54888SJulien Panis- tps6593-q1 27*dce54888SJulien Panis- lp8764-q1 28*dce54888SJulien Panis 29*dce54888SJulien PanisDriver location 30*dce54888SJulien Panis=============== 31*dce54888SJulien Panis 32*dce54888SJulien Panisdrivers/misc/tps6594-pfsm.c 33*dce54888SJulien Panis 34*dce54888SJulien PanisDriver type definitions 35*dce54888SJulien Panis======================= 36*dce54888SJulien Panis 37*dce54888SJulien Panisinclude/uapi/linux/tps6594_pfsm.h 38*dce54888SJulien Panis 39*dce54888SJulien PanisDriver IOCTLs 40*dce54888SJulien Panis============= 41*dce54888SJulien Panis 42*dce54888SJulien Panis:c:macro::`PMIC_GOTO_STANDBY` 43*dce54888SJulien PanisAll device resources are powered down. The processor is off, and 44*dce54888SJulien Panisno voltage domains are energized. 45*dce54888SJulien Panis 46*dce54888SJulien Panis:c:macro::`PMIC_GOTO_LP_STANDBY` 47*dce54888SJulien PanisThe digital and analog functions of the PMIC, which are not 48*dce54888SJulien Panisrequired to be always-on, are turned off (low-power). 49*dce54888SJulien Panis 50*dce54888SJulien Panis:c:macro::`PMIC_UPDATE_PGM` 51*dce54888SJulien PanisTriggers a firmware update. 52*dce54888SJulien Panis 53*dce54888SJulien Panis:c:macro::`PMIC_SET_ACTIVE_STATE` 54*dce54888SJulien PanisOne of the operational modes. 55*dce54888SJulien PanisThe PMICs are fully functional and supply power to all PDN loads. 56*dce54888SJulien PanisAll voltage domains are energized in both MCU and Main processor 57*dce54888SJulien Panissections. 58*dce54888SJulien Panis 59*dce54888SJulien Panis:c:macro::`PMIC_SET_MCU_ONLY_STATE` 60*dce54888SJulien PanisOne of the operational modes. 61*dce54888SJulien PanisOnly the power resources assigned to the MCU Safety Island are on. 62*dce54888SJulien Panis 63*dce54888SJulien Panis:c:macro::`PMIC_SET_RETENTION_STATE` 64*dce54888SJulien PanisOne of the operational modes. 65*dce54888SJulien PanisDepending on the triggers set, some DDR/GPIO voltage domains can 66*dce54888SJulien Panisremain energized, while all other domains are off to minimize 67*dce54888SJulien Panistotal system power. 68*dce54888SJulien Panis 69*dce54888SJulien PanisDriver usage 70*dce54888SJulien Panis============ 71*dce54888SJulien Panis 72*dce54888SJulien PanisSee available PFSMs:: 73*dce54888SJulien Panis 74*dce54888SJulien Panis # ls /dev/pfsm* 75*dce54888SJulien Panis 76*dce54888SJulien PanisDump the registers of pages 0 and 1:: 77*dce54888SJulien Panis 78*dce54888SJulien Panis # hexdump -C /dev/pfsm-0-0x48 79*dce54888SJulien Panis 80*dce54888SJulien PanisSee PFSM events:: 81*dce54888SJulien Panis 82*dce54888SJulien Panis # cat /proc/interrupts 83*dce54888SJulien Panis 84*dce54888SJulien PanisUserspace code example 85*dce54888SJulien Panis---------------------- 86*dce54888SJulien Panis 87*dce54888SJulien Panissamples/pfsm/pfsm-wakeup.c 88