cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

core.h (3559B)


      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	S5M8751X,
     40	S5M8763X,
     41	S5M8767X,
     42	S2MPA01,
     43	S2MPS11X,
     44	S2MPS13X,
     45	S2MPS14X,
     46	S2MPS15X,
     47	S2MPU02,
     48};
     49
     50/**
     51 * struct sec_pmic_dev - s2m/s5m master device for sub-drivers
     52 * @dev:		Master device of the chip
     53 * @pdata:		Platform data populated with data from DTS
     54 *			or board files
     55 * @regmap_pmic:	Regmap associated with PMIC's I2C address
     56 * @i2c:		I2C client of the main driver
     57 * @device_type:	Type of device, matches enum sec_device_type
     58 * @irq_base:		Base IRQ number for device, required for IRQs
     59 * @irq:		Generic IRQ number for device
     60 * @irq_data:		Runtime data structure for IRQ controller
     61 * @wakeup:		Whether or not this is a wakeup device
     62 */
     63struct sec_pmic_dev {
     64	struct device *dev;
     65	struct sec_platform_data *pdata;
     66	struct regmap *regmap_pmic;
     67	struct i2c_client *i2c;
     68
     69	unsigned long device_type;
     70	int irq;
     71	struct regmap_irq_chip_data *irq_data;
     72};
     73
     74int sec_irq_init(struct sec_pmic_dev *sec_pmic);
     75void sec_irq_exit(struct sec_pmic_dev *sec_pmic);
     76int sec_irq_resume(struct sec_pmic_dev *sec_pmic);
     77
     78struct sec_platform_data {
     79	struct sec_regulator_data	*regulators;
     80	struct sec_opmode_data		*opmode;
     81	int				num_regulators;
     82
     83	int				buck_gpios[3];
     84	int				buck_ds[3];
     85	unsigned int			buck2_voltage[8];
     86	bool				buck2_gpiodvs;
     87	unsigned int			buck3_voltage[8];
     88	bool				buck3_gpiodvs;
     89	unsigned int			buck4_voltage[8];
     90	bool				buck4_gpiodvs;
     91
     92	int				buck_default_idx;
     93	int				buck_ramp_delay;
     94
     95	bool				buck2_ramp_enable;
     96	bool				buck3_ramp_enable;
     97	bool				buck4_ramp_enable;
     98
     99	int				buck2_init;
    100	int				buck3_init;
    101	int				buck4_init;
    102	/* Whether or not manually set PWRHOLD to low during shutdown. */
    103	bool				manual_poweroff;
    104	/* Disable the WRSTBI (buck voltage warm reset) when probing? */
    105	bool				disable_wrstbi;
    106};
    107
    108/**
    109 * sec_regulator_data - regulator data
    110 * @id: regulator id
    111 * @initdata: regulator init data (contraints, supplies, ...)
    112 */
    113struct sec_regulator_data {
    114	int				id;
    115	struct regulator_init_data	*initdata;
    116	struct device_node		*reg_node;
    117	struct gpio_desc		*ext_control_gpiod;
    118};
    119
    120/*
    121 * sec_opmode_data - regulator operation mode data
    122 * @id: regulator id
    123 * @mode: regulator operation mode
    124 */
    125struct sec_opmode_data {
    126	int id;
    127	unsigned int mode;
    128};
    129
    130/*
    131 * samsung regulator operation mode
    132 * SEC_OPMODE_OFF	Regulator always OFF
    133 * SEC_OPMODE_ON	Regulator always ON
    134 * SEC_OPMODE_LOWPOWER  Regulator is on in low-power mode
    135 * SEC_OPMODE_SUSPEND   Regulator is changed by PWREN pin
    136 *			If PWREN is high, regulator is on
    137 *			If PWREN is low, regulator is off
    138 */
    139
    140enum sec_opmode {
    141	SEC_OPMODE_OFF,
    142	SEC_OPMODE_ON,
    143	SEC_OPMODE_LOWPOWER,
    144	SEC_OPMODE_SUSPEND,
    145};
    146
    147#endif /*  __LINUX_MFD_SEC_CORE_H */