LP8758 pre version
[mlp-open-source/kernel.git] / include / linux / platform_data / lp8758.h
1 /*
2  * Simple driver for Texas Instruments lp8758 Regulator chip
3  * Copyright (C) 2015 Texas Instruments
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation.
8  *
9  */
11 #ifndef __LINUX_LP8758_H
12 #define __LINUX_LP8758_H
14 #include <linux/regulator/consumer.h>
16 #define LP8758_NAME "lp8758"
17 #define LP8758_ADDR 0x60
19 enum lp8758_bucks {
20         LP8758_BUCK0 = 0,
21         LP8758_BUCK2,
22         LP8758_BUCK_MAX
23 };
25 enum lp8758_registers {
26         LP8758_REG_DEV_REV = 0x00,
27         LP8758_REG_OTP_REV = 0x01,
28         LP8758_REG_BUCK0_CTRL1 = 0x02,
29         LP8758_REG_BUCK0_CTRL2 = 0x03,
30         LP8758_REG_BUCK1_CTRL1 = 0x04,
31         LP8758_REG_BUCK1_CTRL2 = 0x05,
32         LP8758_REG_BUCK2_CTRL1 = 0x06,
33         LP8758_REG_BUCK2_CTRL2 = 0x07,
34         LP8758_REG_BUCK3_CTRL1 = 0x08,
35         LP8758_REG_BUCK3_CTRL2 = 0x09,
36         LP8758_REG_BUCK0_VOUT           = 0x0a,
37         LP8758_REG_BUCK0_FLOORVOUT      = 0x0b,
38         LP8758_REG_BUCK1_VOUT           = 0x0c,
39         LP8758_REG_BUCK1_FLOORVOUT      = 0x0d,
40         LP8758_REG_BUCK2_VOUT           = 0x0e,
41         LP8758_REG_BUCK2_FLOORVOUT      = 0x0f,
42         LP8758_REG_BUCK3_VOUT           = 0x10,
43         LP8758_REG_BUCK3_FLOORVOUT      = 0x11,
44         LP8758_REG_BUCK0_DELAY = 0x12,
45         LP8758_REG_BUCK1_DELAY = 0x13,
46         LP8758_REG_BUCK2_DELAY = 0x14,
47         LP8758_REG_BUCK3_DELAY = 0x15,
48         LP8758_REG_RESET = 0x16,
49         LP8758_REG_CONFIG = 0x17,
50         LP8758_REG_INT_TOP = 0x18,
51         LP8758_REG_INT_BUCK_0_1 = 0x19,
52         LP8758_REG_INT_BUCK_2_3 = 0x1a,
53         LP8758_REG_STAT_TOP = 0x1b,
54         LP8758_REG_STAT_BUCK_0_1 = 0x1c,
55         LP8758_REG_STAT_BUCK_2_3 = 0x1d,
56         LP8758_REG_MASK_TOP = 0x1e,
57         LP8758_REG_MASK_BUCK_0_1 = 0x1f,
58         LP8758_REG_MASK_BUCK_2_3 = 0x20,
59         LP8758_REG_SEL_I_LOAD = 0x21,
60         LP8758_REG_SEL_I_LOAD_2 = 0x22,
61         LP8758_REG_SEL_I_LOAD_1 = 0x23,
62         LP8758_REG_MAX = 0xff
63 };
65 #define LP8758_BUCK_EN_MASK 0x80
66 #define LP8758_BUCK_VOUT_MASK 0xff
68 /*
69  * PWR FAULT : power fault detected
70  * OCP : over current protect activated
71  * OVP : over voltage protect activated
72  * TEMP_WARN : thermal warning
73  * TEMP_SHDN : thermal shutdonw detected
74  * I_LOAD : current measured
75  */
76 #define LP8758_EVENT_PWR_FAULT REGULATOR_EVENT_FAIL
77 #define LP8758_EVENT_OCP REGULATOR_EVENT_OVER_CURRENT
78 #define LP8758_EVENT_OVP 0x10000
79 #define LP8758_EVENT_TEMP_WARN 0x2000
80 #define LP8758_EVENT_TEMP_SHDN REGULATOR_EVENT_OVER_TEMP
81 #define LP8758_EVENT_I_LOAD     0x40000
83 #define LP8758_BUCK0INT_MASK 0x10
84 #define LP8758_BUCK1INT_MASK 0x20
85 #define LP8758_BUCK2INT_MASK 0x40
86 #define LP8758_BUCK3INT_MASK 0x80
87 #define LP8758_OVERTEMP_MASK 0x08
88 #define LP8758_OVERCURRENT_MASK 0x01
90 #define LP8758_ILIM_MASK 0x38
91 #define LP8758_ILIM_SHIFT 3
93 /* struct lp8758 platform data
94  * @buck_data   : buck0~6 init voltage in uV
95  */
96 struct lp8758_platform_data {
98         struct regulator_init_data *buck_data[LP8758_BUCK_MAX];
99 };
101 #endif /* __LINUX_LP8758_H */