]>
Commit | Line | Data |
---|---|---|
e542b7f0 ŁM |
1 | /* |
2 | * Copyright (C) 2011 Samsung Electronics | |
3 | * Lukasz Majewski <[email protected]> | |
4 | * | |
5 | * See file CREDITS for list of people who contributed to this | |
6 | * project. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or | |
9 | * modify it under the terms of the GNU General Public License as | |
10 | * published by the Free Software Foundation; either version 2 of | |
11 | * the License, or (at your option) any later version. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, | |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | * GNU General Public License for more details. | |
17 | * | |
18 | * You should have received a copy of the GNU General Public License | |
19 | * along with this program; if not, write to the Free Software | |
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | * MA 02111-1307 USA | |
22 | */ | |
23 | ||
24 | #ifndef __CORE_PMIC_H_ | |
25 | #define __CORE_PMIC_H_ | |
26 | ||
27 | enum { PMIC_I2C, PMIC_SPI, }; | |
28 | enum { I2C_PMIC, I2C_NUM, }; | |
29 | enum { PMIC_READ, PMIC_WRITE, }; | |
30 | ||
31 | struct p_i2c { | |
32 | unsigned char addr; | |
33 | unsigned char *buf; | |
34 | unsigned char tx_num; | |
35 | }; | |
36 | ||
37 | struct p_spi { | |
38 | unsigned int cs; | |
39 | unsigned int mode; | |
40 | unsigned int bitlen; | |
41 | unsigned int clk; | |
42 | unsigned int flags; | |
43 | u32 (*prepare_tx)(u32 reg, u32 *val, u32 write); | |
44 | }; | |
45 | ||
46 | struct pmic { | |
47 | const char *name; | |
48 | unsigned char bus; | |
49 | unsigned char interface; | |
50 | unsigned char number_of_regs; | |
51 | union hw { | |
52 | struct p_i2c i2c; | |
53 | struct p_spi spi; | |
54 | } hw; | |
55 | }; | |
56 | ||
57 | int pmic_init(void); | |
ed5157e8 | 58 | int pmic_dialog_init(void); |
e542b7f0 ŁM |
59 | int check_reg(u32 reg); |
60 | struct pmic *get_pmic(void); | |
61 | int pmic_probe(struct pmic *p); | |
62 | int pmic_reg_read(struct pmic *p, u32 reg, u32 *val); | |
63 | int pmic_reg_write(struct pmic *p, u32 reg, u32 val); | |
64 | int pmic_set_output(struct pmic *p, u32 reg, int ldo, int on); | |
65 | ||
66 | #define pmic_i2c_addr (p->hw.i2c.addr) | |
67 | #define pmic_i2c_tx_num (p->hw.i2c.tx_num) | |
68 | ||
69 | #define pmic_spi_bitlen (p->hw.spi.bitlen) | |
70 | #define pmic_spi_flags (p->hw.spi.flags) | |
71 | ||
72 | #endif /* __CORE_PMIC_H_ */ |