aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/i2c/adp8870.h
blob: 624dceccbd5b0f8199445c55ec031f5298458379 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/*
 * Definitions and platform data for Analog Devices
 * Backlight drivers ADP8870
 *
 * Copyright 2009-2010 Analog Devices Inc.
 *
 * Licensed under the GPL-2 or later.
 */

#ifndef __LINUX_I2C_ADP8870_H
#define __LINUX_I2C_ADP8870_H

#define ID_ADP8870		8870

#define ADP8870_MAX_BRIGHTNESS	0x7F
#define FLAG_OFFT_SHIFT 8

/*
 * LEDs subdevice platform data
 */

#define ADP8870_LED_DIS_BLINK	(0 << FLAG_OFFT_SHIFT)
#define ADP8870_LED_OFFT_600ms	(1 << FLAG_OFFT_SHIFT)
#define ADP8870_LED_OFFT_1200ms	(2 << FLAG_OFFT_SHIFT)
#define ADP8870_LED_OFFT_1800ms	(3 << FLAG_OFFT_SHIFT)

#define ADP8870_LED_ONT_200ms	0
#define ADP8870_LED_ONT_600ms	1
#define ADP8870_LED_ONT_800ms	2
#define ADP8870_LED_ONT_1200ms	3

#define ADP8870_LED_D7		(7)
#define ADP8870_LED_D6		(6)
#define ADP8870_LED_D5		(5)
#define ADP8870_LED_D4		(4)
#define ADP8870_LED_D3		(3)
#define ADP8870_LED_D2		(2)
#define ADP8870_LED_D1		(1)

/*
 * Backlight subdevice platform data
 */

#define ADP8870_BL_D7		(1 << 6)
#define ADP8870_BL_D6		(1 << 5)
#define ADP8870_BL_D5		(1 << 4)
#define ADP8870_BL_D4		(1 << 3)
#define ADP8870_BL_D3		(1 << 2)
#define ADP8870_BL_D2		(1 << 1)
#define ADP8870_BL_D1		(1 << 0)

#define ADP8870_FADE_T_DIS	0	/* Fade Timer Disabled */
#define ADP8870_FADE_T_300ms	1	/* 0.3 Sec */
#define ADP8870_FADE_T_600ms	2
#define ADP8870_FADE_T_900ms	3
#define ADP8870_FADE_T_1200ms	4
#define ADP8870_FADE_T_1500ms	5
#define ADP8870_FADE_T_1800ms	6
#define ADP8870_FADE_T_2100ms	7
#define ADP8870_FADE_T_2400ms	8
#define ADP8870_FADE_T_2700ms	9
#define ADP8870_FADE_T_3000ms	10
#define ADP8870_FADE_T_3500ms	11
#define ADP8870_FADE_T_4000ms	12
#define ADP8870_FADE_T_4500ms	13
#define ADP8870_FADE_T_5000ms	14
#define ADP8870_FADE_T_5500ms	15	/* 5.5 Sec */

#define ADP8870_FADE_LAW_LINEAR	0
#define ADP8870_FADE_LAW_SQUARE	1
#define ADP8870_FADE_LAW_CUBIC1	2
#define ADP8870_FADE_LAW_CUBIC2	3

#define ADP8870_BL_AMBL_FILT_80ms	0	/* Light sensor filter time */
#define ADP8870_BL_AMBL_FILT_160ms	1
#define ADP8870_BL_AMBL_FILT_320ms	2
#define ADP8870_BL_AMBL_FILT_640ms	3
#define ADP8870_BL_AMBL_FILT_1280ms	4
#define ADP8870_BL_AMBL_FILT_2560ms	5
#define ADP8870_BL_AMBL_FILT_5120ms	6
#define ADP8870_BL_AMBL_FILT_10240ms	7	/* 10.24 sec */

/*
 * Blacklight current 0..30mA
 */
#define ADP8870_BL_CUR_mA(I)		((I * 127) / 30)

/*
 * L2 comparator current 0..1106uA
 */
#define ADP8870_L2_COMP_CURR_uA(I)	((I * 255) / 1106)

/*
 * L3 comparator current 0..551uA
 */
#define ADP8870_L3_COMP_CURR_uA(I)	((I * 255) / 551)

/*
 * L4 comparator current 0..275uA
 */
#define ADP8870_L4_COMP_CURR_uA(I)	((I * 255) / 275)

/*
 * L5 comparator current 0..138uA
 */
#define ADP8870_L5_COMP_CURR_uA(I)	((I * 255) / 138)

struct adp8870_backlight_platform_data {
	u8 bl_led_assign;	/* 1 = Backlight 0 = Individual LED */
	u8 pwm_assign;		/* 1 = Enables PWM mode */

	u8 bl_fade_in;		/* Backlight Fade-In Timer */
	u8 bl_fade_out;		/* Backlight Fade-Out Timer */
	u8 bl_fade_law;		/* fade-on/fade-off transfer characteristic */

	u8 en_ambl_sens;	/* 1 = enable ambient light sensor */
	u8 abml_filt;		/* Light sensor filter time */

	u8 l1_daylight_max;	/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l1_daylight_dim;	/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l2_bright_max;	/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l2_bright_dim;	/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l3_office_max;	/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l3_office_dim;	/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l4_indoor_max;	/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l4_indor_dim;	/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l5_dark_max;		/* use BL_CUR_mA(I) 0 <= I <= 30 mA */
	u8 l5_dark_dim;		/* typ = 0, use BL_CUR_mA(I) 0 <= I <= 30 mA */

	u8 l2_trip;		/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
	u8 l2_hyst;		/* use L2_COMP_CURR_uA(I) 0 <= I <= 1106 uA */
	u8 l3_trip;		/* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */
	u8 l3_hyst;		/* use L3_COMP_CURR_uA(I) 0 <= I <= 551 uA */
	u8 l4_trip;		/* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */
	u8 l4_hyst;		/* use L4_COMP_CURR_uA(I) 0 <= I <= 275 uA */
	u8 l5_trip;		/* use L5_COMP_CURR_uA(I) 0 <= I <= 138 uA */
	u8 l5_hyst;		/* use L6_COMP_CURR_uA(I) 0 <= I <= 138 uA */

	/**
	 * Independent Current Sinks / LEDS
	 * Sinks not assigned to the Backlight can be exposed to
	 * user space using the LEDS CLASS interface
	 */

	int num_leds;
	struct led_info	*leds;
	u8 led_fade_in;		/* LED Fade-In Timer */
	u8 led_fade_out;	/* LED Fade-Out Timer */
	u8 led_fade_law;	/* fade-on/fade-off transfer characteristic */
	u8 led_on_time;
};

#endif /* __LINUX_I2C_ADP8870_H */