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