88 lines
2.0 KiB
ReStructuredText
88 lines
2.0 KiB
ReStructuredText
|
.. 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
|