| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- .. SPDX-License-Identifier: GPL-2.0
- =====================================
- Texas Instruments TPS6594 PFSM driver
- =====================================
- Author: Julien Panis (jpanis@baylibre.com)
- Overview
- ========
- Strictly speaking, PFSM (Pre-configurable Finite State Machine) is not
- hardware. It is a piece of code.
- 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.
- The PFSM driver can be used to trigger transitions between configured
- states. It also provides R/W access to the device registers.
- Supported chips
- ---------------
- - tps6594-q1
- - tps6593-q1
- - lp8764-q1
- Driver location
- ===============
- drivers/misc/tps6594-pfsm.c
- Driver type definitions
- =======================
- include/uapi/linux/tps6594_pfsm.h
- Driver IOCTLs
- =============
- :c:macro::`PMIC_GOTO_STANDBY`
- All device resources are powered down. The processor is off, and
- no voltage domains are energized.
- :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).
- :c:macro::`PMIC_UPDATE_PGM`
- Triggers a firmware update.
- :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.
- :c:macro::`PMIC_SET_MCU_ONLY_STATE`
- One of the operational modes.
- Only the power resources assigned to the MCU Safety Island are on.
- :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.
- Driver usage
- ============
- See available PFSMs::
- # ls /dev/pfsm*
- Dump the registers of pages 0 and 1::
- # hexdump -C /dev/pfsm-0-0x48
- See PFSM events::
- # cat /proc/interrupts
- Userspace code example
- ----------------------
- samples/pfsm/pfsm-wakeup.c
|