2 * linux/include/linux/mfd/aat2870.h
4 * Copyright (c) 2011, NVIDIA Corporation.
5 * Author: Jin Park <jinyoungp@nvidia.com>
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * version 2 as published by the Free Software Foundation.
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
22 #ifndef __LINUX_MFD_AAT2870_H
23 #define __LINUX_MFD_AAT2870_H
25 #include <linux/debugfs.h>
26 #include <linux/i2c.h>
28 /* Register offsets */
29 #define AAT2870_BL_CH_EN 0x00
30 #define AAT2870_BLM 0x01
31 #define AAT2870_BLS 0x02
32 #define AAT2870_BL1 0x03
33 #define AAT2870_BL2 0x04
34 #define AAT2870_BL3 0x05
35 #define AAT2870_BL4 0x06
36 #define AAT2870_BL5 0x07
37 #define AAT2870_BL6 0x08
38 #define AAT2870_BL7 0x09
39 #define AAT2870_BL8 0x0A
40 #define AAT2870_FLR 0x0B
41 #define AAT2870_FM 0x0C
42 #define AAT2870_FS 0x0D
43 #define AAT2870_ALS_CFG0 0x0E
44 #define AAT2870_ALS_CFG1 0x0F
45 #define AAT2870_ALS_CFG2 0x10
46 #define AAT2870_AMB 0x11
47 #define AAT2870_ALS0 0x12
48 #define AAT2870_ALS1 0x13
49 #define AAT2870_ALS2 0x14
50 #define AAT2870_ALS3 0x15
51 #define AAT2870_ALS4 0x16
52 #define AAT2870_ALS5 0x17
53 #define AAT2870_ALS6 0x18
54 #define AAT2870_ALS7 0x19
55 #define AAT2870_ALS8 0x1A
56 #define AAT2870_ALS9 0x1B
57 #define AAT2870_ALSA 0x1C
58 #define AAT2870_ALSB 0x1D
59 #define AAT2870_ALSC 0x1E
60 #define AAT2870_ALSD 0x1F
61 #define AAT2870_ALSE 0x20
62 #define AAT2870_ALSF 0x21
63 #define AAT2870_SUB_SET 0x22
64 #define AAT2870_SUB_CTRL 0x23
65 #define AAT2870_LDO_AB 0x24
66 #define AAT2870_LDO_CD 0x25
67 #define AAT2870_LDO_EN 0x26
68 #define AAT2870_REG_NUM 0x27
79 /* Backlight channels */
80 #define AAT2870_BL_CH1 0x01
81 #define AAT2870_BL_CH2 0x02
82 #define AAT2870_BL_CH3 0x04
83 #define AAT2870_BL_CH4 0x08
84 #define AAT2870_BL_CH5 0x10
85 #define AAT2870_BL_CH6 0x20
86 #define AAT2870_BL_CH7 0x40
87 #define AAT2870_BL_CH8 0x80
88 #define AAT2870_BL_CH_ALL 0xFF
90 /* Backlight current magnitude (mA) */
91 enum aat2870_current
{
92 AAT2870_CURRENT_0_45
= 1,
100 AAT2870_CURRENT_7_20
,
101 AAT2870_CURRENT_8_10
,
102 AAT2870_CURRENT_9_00
,
103 AAT2870_CURRENT_9_90
,
104 AAT2870_CURRENT_10_8
,
105 AAT2870_CURRENT_11_7
,
106 AAT2870_CURRENT_12_6
,
107 AAT2870_CURRENT_13_5
,
108 AAT2870_CURRENT_14_4
,
109 AAT2870_CURRENT_15_3
,
110 AAT2870_CURRENT_16_2
,
111 AAT2870_CURRENT_17_1
,
112 AAT2870_CURRENT_18_0
,
113 AAT2870_CURRENT_18_9
,
114 AAT2870_CURRENT_19_8
,
115 AAT2870_CURRENT_20_7
,
116 AAT2870_CURRENT_21_6
,
117 AAT2870_CURRENT_22_5
,
118 AAT2870_CURRENT_23_4
,
119 AAT2870_CURRENT_24_3
,
120 AAT2870_CURRENT_25_2
,
121 AAT2870_CURRENT_26_1
,
122 AAT2870_CURRENT_27_0
,
126 struct aat2870_register
{
132 struct aat2870_data
{
134 struct i2c_client
*client
;
136 struct mutex io_lock
;
137 struct aat2870_register
*reg_cache
; /* register cache */
138 int en_pin
; /* enable GPIO pin (if < 0, ignore this value) */
141 /* init and uninit for platform specified */
142 int (*init
)(struct aat2870_data
*aat2870
);
143 void (*uninit
)(struct aat2870_data
*aat2870
);
145 /* i2c io funcntions */
146 int (*read
)(struct aat2870_data
*aat2870
, u8 addr
, u8
*val
);
147 int (*write
)(struct aat2870_data
*aat2870
, u8 addr
, u8 val
);
148 int (*update
)(struct aat2870_data
*aat2870
, u8 addr
, u8 mask
, u8 val
);
151 struct dentry
*dentry_root
;
152 struct dentry
*dentry_reg
;
155 struct aat2870_subdev_info
{
161 struct aat2870_platform_data
{
162 int en_pin
; /* enable GPIO pin (if < 0, ignore this value) */
164 struct aat2870_subdev_info
*subdevs
;
167 /* init and uninit for platform specified */
168 int (*init
)(struct aat2870_data
*aat2870
);
169 void (*uninit
)(struct aat2870_data
*aat2870
);
172 struct aat2870_bl_platform_data
{
173 /* backlight channels, default is AAT2870_BL_CH_ALL */
175 /* backlight current magnitude, default is AAT2870_CURRENT_27_9 */
177 /* maximum brightness, default is 255 */
181 #endif /* __LINUX_MFD_AAT2870_H */