File Index
Files and directories
Sign in
FILE

core.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/mfd/samsung/core.h C
  1/* SPDX-License-Identifier: GPL-2.0+ */
  2/*
  3 * Copyright (c) 2011 Samsung Electronics Co., Ltd
  4 *              http://www.samsung.com
  5 */
  6
  7#ifndef __LINUX_MFD_SEC_CORE_H
  8#define __LINUX_MFD_SEC_CORE_H
  9
 10/* Macros to represent minimum voltages for LDO/BUCK */
 11#define MIN_3000_MV		3000000
 12#define MIN_2500_MV		2500000
 13#define MIN_2000_MV		2000000
 14#define MIN_1800_MV		1800000
 15#define MIN_1500_MV		1500000
 16#define MIN_1400_MV		1400000
 17#define MIN_1000_MV		1000000
 18
 19#define MIN_900_MV		900000
 20#define MIN_850_MV		850000
 21#define MIN_800_MV		800000
 22#define MIN_750_MV		750000
 23#define MIN_650_MV		650000
 24#define MIN_600_MV		600000
 25#define MIN_500_MV		500000
 26
 27/* Ramp delay in uV/us */
 28#define RAMP_DELAY_12_MVUS	12000
 29
 30/* Macros to represent steps for LDO/BUCK */
 31#define STEP_50_MV		50000
 32#define STEP_25_MV		25000
 33#define STEP_12_5_MV		12500
 34#define STEP_6_25_MV		6250
 35
 36struct gpio_desc;
 37
 38enum sec_device_type {
 39	S5M8767X,
 40	S2DOS05,
 41	S2MPA01,
 42	S2MPG10,
 43	S2MPS11X,
 44	S2MPS13X,
 45	S2MPS14X,
 46	S2MPS15X,
 47	S2MPU02,
 48	S2MPU05,
 49};
 50
 51/**
 52 * struct sec_pmic_dev - s2m/s5m master device for sub-drivers
 53 * @dev:		Master device of the chip
 54 * @pdata:		Platform data populated with data from DTS
 55 *			or board files
 56 * @regmap_pmic:	Regmap associated with PMIC's I2C address
 57 * @i2c:		I2C client of the main driver
 58 * @device_type:	Type of device, matches enum sec_device_type
 59 * @irq_base:		Base IRQ number for device, required for IRQs
 60 * @irq:		Generic IRQ number for device
 61 * @irq_data:		Runtime data structure for IRQ controller
 62 * @wakeup:		Whether or not this is a wakeup device
 63 */
 64struct sec_pmic_dev {
 65	struct device *dev;
 66	struct sec_platform_data *pdata;
 67	struct regmap *regmap_pmic;
 68	struct i2c_client *i2c;
 69
 70	int device_type;
 71	int irq;
 72	struct regmap_irq_chip_data *irq_data;
 73};
 74
 75struct sec_platform_data {
 76	struct sec_regulator_data	*regulators;
 77	struct sec_opmode_data		*opmode;
 78	int				num_regulators;
 79
 80	int				buck_gpios[3];
 81	int				buck_ds[3];
 82	unsigned int			buck2_voltage[8];
 83	bool				buck2_gpiodvs;
 84	unsigned int			buck3_voltage[8];
 85	bool				buck3_gpiodvs;
 86	unsigned int			buck4_voltage[8];
 87	bool				buck4_gpiodvs;
 88
 89	int				buck_default_idx;
 90	int				buck_ramp_delay;
 91
 92	bool				buck2_ramp_enable;
 93	bool				buck3_ramp_enable;
 94	bool				buck4_ramp_enable;
 95
 96	int				buck2_init;
 97	int				buck3_init;
 98	int				buck4_init;
 99	/* Whether or not manually set PWRHOLD to low during shutdown. */
100	bool				manual_poweroff;
101	/* Disable the WRSTBI (buck voltage warm reset) when probing? */
102	bool				disable_wrstbi;
103};
104
105/**
106 * sec_regulator_data - regulator data
107 * @id: regulator id
108 * @initdata: regulator init data (contraints, supplies, ...)
109 */
110struct sec_regulator_data {
111	int				id;
112	struct regulator_init_data	*initdata;
113	struct device_node		*reg_node;
114	struct gpio_desc		*ext_control_gpiod;
115};
116
117/*
118 * sec_opmode_data - regulator operation mode data
119 * @id: regulator id
120 * @mode: regulator operation mode
121 */
122struct sec_opmode_data {
123	int id;
124	unsigned int mode;
125};
126
127/*
128 * samsung regulator operation mode
129 * SEC_OPMODE_OFF	Regulator always OFF
130 * SEC_OPMODE_ON	Regulator always ON
131 * SEC_OPMODE_LOWPOWER  Regulator is on in low-power mode
132 * SEC_OPMODE_SUSPEND   Regulator is changed by PWREN pin
133 *			If PWREN is high, regulator is on
134 *			If PWREN is low, regulator is off
135 */
136
137enum sec_opmode {
138	SEC_OPMODE_OFF,
139	SEC_OPMODE_ON,
140	SEC_OPMODE_LOWPOWER,
141	SEC_OPMODE_SUSPEND,
142};
143
144#endif /*  __LINUX_MFD_SEC_CORE_H */
~/ Read-only file preview.