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
|