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 */