Staging: android: binder: Allow using highmem for binder buffers
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / olpc_dcon / olpc_dcon.h
CommitLineData
eecb3e4e
AS
1#ifndef OLPC_DCON_H_
2#define OLPC_DCON_H_
3
bbe963f1
AS
4#include <linux/notifier.h>
5#include <linux/workqueue.h>
6
eecb3e4e
AS
7/* DCON registers */
8
9#define DCON_REG_ID 0
10#define DCON_REG_MODE 1
11
12#define MODE_PASSTHRU (1<<0)
13#define MODE_SLEEP (1<<1)
14#define MODE_SLEEP_AUTO (1<<2)
15#define MODE_BL_ENABLE (1<<3)
16#define MODE_BLANK (1<<4)
17#define MODE_CSWIZZLE (1<<5)
18#define MODE_COL_AA (1<<6)
19#define MODE_MONO_LUMA (1<<7)
20#define MODE_SCAN_INT (1<<8)
21#define MODE_CLOCKDIV (1<<9)
22#define MODE_DEBUG (1<<14)
23#define MODE_SELFTEST (1<<15)
24
25#define DCON_REG_HRES 2
26#define DCON_REG_HTOTAL 3
27#define DCON_REG_HSYNC_WIDTH 4
28#define DCON_REG_VRES 5
29#define DCON_REG_VTOTAL 6
30#define DCON_REG_VSYNC_WIDTH 7
31#define DCON_REG_TIMEOUT 8
32#define DCON_REG_SCAN_INT 9
33#define DCON_REG_BRIGHT 10
34
eecb3e4e
AS
35/* Status values */
36
37#define DCONSTAT_SCANINT 0
38#define DCONSTAT_SCANINT_DCON 1
39#define DCONSTAT_DISPLAYLOAD 2
40#define DCONSTAT_MISSED 3
41
42/* Source values */
43
44#define DCON_SOURCE_DCON 0
45#define DCON_SOURCE_CPU 1
46
eecb3e4e
AS
47/* Interrupt */
48#define DCON_IRQ 6
49
bbe963f1
AS
50struct dcon_priv {
51 struct i2c_client *client;
52 struct fb_info *fbinfo;
c59eef17 53 struct backlight_device *bl_dev;
bbe963f1
AS
54
55 struct work_struct switch_source;
56 struct notifier_block reboot_nb;
57 struct notifier_block fbevent_nb;
58
59 /* Shadow register for the DCON_REG_MODE register */
60 u8 disp_mode;
61
c59eef17
AS
62 /* The current backlight value - this saves us some smbus traffic */
63 u8 bl_val;
64
bbe963f1
AS
65 /* Current source, initialized at probe time */
66 int curr_src;
67
68 /* Desired source */
69 int pending_src;
70
309ef2a2
AS
71 /* Variables used during switches */
72 bool switched;
73 struct timespec irq_time;
74 struct timespec load_time;
75
bbe963f1
AS
76 /* Current output type; true == mono, false == color */
77 bool mono;
78 bool asleep;
79 /* This get set while controlling fb blank state from the driver */
80 bool ignore_fb_events;
81};
82
097cd83a 83struct dcon_platform_data {
bbe963f1 84 int (*init)(struct dcon_priv *);
097cd83a
AS
85 void (*bus_stabilize_wiggle)(void);
86 void (*set_dconload)(int);
91762057 87 int (*read_status)(u8 *);
097cd83a
AS
88};
89
90#include <linux/interrupt.h>
91
097cd83a 92extern irqreturn_t dcon_interrupt(int irq, void *id);
097cd83a
AS
93
94#ifdef CONFIG_FB_OLPC_DCON_1
95extern struct dcon_platform_data dcon_pdata_xo_1;
96#endif
97
98#ifdef CONFIG_FB_OLPC_DCON_1_5
99extern struct dcon_platform_data dcon_pdata_xo_1_5;
100#endif
101
eecb3e4e 102#endif