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