378ae8a04c6a081265b22722c84d2631bcd82b58
4 * copyright (c) 2011 Samsung Electronics Co., Ltd
5 * http://www.samsung.com
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
14 #ifndef __LINUX_MFD_SEC_CORE_H
15 #define __LINUX_MFD_SEC_CORE_H
17 enum sec_device_type
{
25 * struct sec_pmic_dev - s5m87xx master device for sub-drivers
26 * @dev: master device of the chip (can be used to access platform data)
27 * @pdata: pointer to private data used to pass platform data to child
28 * @i2c: i2c client private data for regulator
29 * @rtc: i2c client private data for rtc
30 * @iolock: mutex for serializing io access
31 * @irqlock: mutex for buslock
32 * @irq_base: base IRQ number for sec-pmic, required for IRQs
33 * @irq: generic IRQ number for s5m87xx
34 * @ono: power onoff IRQ number for s5m87xx
35 * @irq_masks_cur: currently active value
36 * @irq_masks_cache: cached hardware value
37 * @type: indicate which s5m87xx "variant" is used
41 struct sec_platform_data
*pdata
;
42 struct regmap
*regmap
;
43 struct i2c_client
*i2c
;
44 struct i2c_client
*rtc
;
49 struct regmap_irq_chip_data
*irq_data
;
56 int sec_irq_init(struct sec_pmic_dev
*sec_pmic
);
57 void sec_irq_exit(struct sec_pmic_dev
*sec_pmic
);
58 int sec_irq_resume(struct sec_pmic_dev
*sec_pmic
);
60 extern int sec_reg_read(struct sec_pmic_dev
*sec_pmic
, u8 reg
, void *dest
);
61 extern int sec_bulk_read(struct sec_pmic_dev
*sec_pmic
, u8 reg
, int count
, u8
*buf
);
62 extern int sec_reg_write(struct sec_pmic_dev
*sec_pmic
, u8 reg
, u8 value
);
63 extern int sec_bulk_write(struct sec_pmic_dev
*sec_pmic
, u8 reg
, int count
, u8
*buf
);
64 extern int sec_reg_update(struct sec_pmic_dev
*sec_pmic
, u8 reg
, u8 val
, u8 mask
);
66 struct sec_platform_data
{
67 struct sec_regulator_data
*regulators
;
68 struct sec_opmode_data
*opmode
;
73 int (*cfg_pmic_irq
)(void);
77 bool buck_voltage_lock
;
81 unsigned int buck2_voltage
[8];
83 unsigned int buck3_voltage
[8];
85 unsigned int buck4_voltage
[8];
95 int buck2_default_idx
;
96 int buck3_default_idx
;
97 int buck4_default_idx
;
101 int buck2_ramp_delay
;
102 int buck34_ramp_delay
;
103 int buck5_ramp_delay
;
104 int buck16_ramp_delay
;
105 int buck7810_ramp_delay
;
106 int buck9_ramp_delay
;
108 bool buck2_ramp_enable
;
109 bool buck3_ramp_enable
;
110 bool buck4_ramp_enable
;
111 bool buck6_ramp_enable
;
119 * sec_regulator_data - regulator data
121 * @initdata: regulator init data (contraints, supplies, ...)
123 struct sec_regulator_data
{
125 struct regulator_init_data
*initdata
;
126 struct device_node
*reg_node
;
130 * sec_opmode_data - regulator operation mode data
132 * @mode: regulator operation mode
134 struct sec_opmode_data
{
140 * samsung regulator operation mode
141 * SEC_OPMODE_OFF Regulator always OFF
142 * SEC_OPMODE_ON Regulator always ON
143 * SEC_OPMODE_LOWPOWER Regulator is on in low-power mode
144 * SEC_OPMODE_SUSPEND Regulator is changed by PWREN pin
145 * If PWREN is high, regulator is on
146 * If PWREN is low, regulator is off
156 #endif /* __LINUX_MFD_SEC_CORE_H */
This page took 0.050902 seconds and 4 git commands to generate.