xref: /linux/include/uapi/linux/tps6594_pfsm.h (revision cdd5b5a9761fd66d17586e4f4ba6588c70e640ea)
1*a0df3ef0SJulien Panis /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*a0df3ef0SJulien Panis /*
3*a0df3ef0SJulien Panis  * Userspace ABI for TPS6594 PMIC Pre-configurable Finite State Machine
4*a0df3ef0SJulien Panis  *
5*a0df3ef0SJulien Panis  * Copyright (C) 2023 BayLibre Incorporated - https://www.baylibre.com/
6*a0df3ef0SJulien Panis  */
7*a0df3ef0SJulien Panis 
8*a0df3ef0SJulien Panis #ifndef __TPS6594_PFSM_H
9*a0df3ef0SJulien Panis #define __TPS6594_PFSM_H
10*a0df3ef0SJulien Panis 
11*a0df3ef0SJulien Panis #include <linux/const.h>
12*a0df3ef0SJulien Panis #include <linux/ioctl.h>
13*a0df3ef0SJulien Panis #include <linux/types.h>
14*a0df3ef0SJulien Panis 
15*a0df3ef0SJulien Panis /**
16*a0df3ef0SJulien Panis  * struct pmic_state_opt - PMIC state options
17*a0df3ef0SJulien Panis  * @gpio_retention: if enabled, power rails associated with GPIO retention remain active
18*a0df3ef0SJulien Panis  * @ddr_retention: if enabled, power rails associated with DDR retention remain active
19*a0df3ef0SJulien Panis  * @mcu_only_startup_dest: if enabled, startup destination state is MCU_ONLY
20*a0df3ef0SJulien Panis  */
21*a0df3ef0SJulien Panis struct pmic_state_opt {
22*a0df3ef0SJulien Panis 	__u8 gpio_retention;
23*a0df3ef0SJulien Panis 	__u8 ddr_retention;
24*a0df3ef0SJulien Panis 	__u8 mcu_only_startup_dest;
25*a0df3ef0SJulien Panis };
26*a0df3ef0SJulien Panis 
27*a0df3ef0SJulien Panis /* Commands */
28*a0df3ef0SJulien Panis #define PMIC_BASE			'P'
29*a0df3ef0SJulien Panis 
30*a0df3ef0SJulien Panis #define PMIC_GOTO_STANDBY		_IO(PMIC_BASE, 0)
31*a0df3ef0SJulien Panis #define PMIC_GOTO_LP_STANDBY		_IO(PMIC_BASE, 1)
32*a0df3ef0SJulien Panis #define PMIC_UPDATE_PGM			_IO(PMIC_BASE, 2)
33*a0df3ef0SJulien Panis #define PMIC_SET_ACTIVE_STATE		_IO(PMIC_BASE, 3)
34*a0df3ef0SJulien Panis #define PMIC_SET_MCU_ONLY_STATE		_IOW(PMIC_BASE, 4, struct pmic_state_opt)
35*a0df3ef0SJulien Panis #define PMIC_SET_RETENTION_STATE	_IOW(PMIC_BASE, 5, struct pmic_state_opt)
36*a0df3ef0SJulien Panis 
37*a0df3ef0SJulien Panis #endif /*  __TPS6594_PFSM_H */
38