Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / video / auo_k190xfb.h
1 /*
2 * Definitions for AUO-K190X framebuffer drivers
3 *
4 * Copyright (C) 2012 Heiko Stuebner <heiko@sntech.de>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10
11 #ifndef _LINUX_VIDEO_AUO_K190XFB_H_
12 #define _LINUX_VIDEO_AUO_K190XFB_H_
13
14 /* Controller standby command needs a param */
15 #define AUOK190X_QUIRK_STANDBYPARAM (1 << 0)
16
17 /* Controller standby is completely broken */
18 #define AUOK190X_QUIRK_STANDBYBROKEN (1 << 1)
19
20 /*
21 * Resolutions for the displays
22 */
23 #define AUOK190X_RESOLUTION_800_600 0
24 #define AUOK190X_RESOLUTION_1024_768 1
25 #define AUOK190X_RESOLUTION_600_800 4
26 #define AUOK190X_RESOLUTION_768_1024 5
27
28 /*
29 * struct used by auok190x. board specific stuff comes from *board
30 */
31 struct auok190xfb_par {
32 struct fb_info *info;
33 struct auok190x_board *board;
34
35 struct regulator *regulator;
36
37 struct mutex io_lock;
38 struct delayed_work work;
39 wait_queue_head_t waitq;
40 int resolution;
41 int rotation;
42 int consecutive_threshold;
43 int update_cnt;
44
45 /* panel and controller informations */
46 int epd_type;
47 int panel_size_int;
48 int panel_size_float;
49 int panel_model;
50 int tcon_version;
51 int lut_version;
52
53 /* individual controller callbacks */
54 void (*update_partial)(struct auok190xfb_par *par, u16 y1, u16 y2);
55 void (*update_all)(struct auok190xfb_par *par);
56 bool (*need_refresh)(struct auok190xfb_par *par);
57 void (*init)(struct auok190xfb_par *par);
58 void (*recover)(struct auok190xfb_par *par);
59
60 int update_mode; /* mode to use for updates */
61 int last_mode; /* update mode last used */
62 int flash;
63
64 /* power management */
65 int autosuspend_delay;
66 bool standby;
67 bool manual_standby;
68 };
69
70 /**
71 * Board specific platform-data
72 * @init: initialize the controller interface
73 * @cleanup: cleanup the controller interface
74 * @wait_for_rdy: wait until the controller is not busy anymore
75 * @set_ctl: change an interface control
76 * @set_hdb: write a value to the data register
77 * @get_hdb: read a value from the data register
78 * @setup_irq: method to setup the irq handling on the busy gpio
79 * @gpio_nsleep: sleep gpio
80 * @gpio_nrst: reset gpio
81 * @gpio_nbusy: busy gpio
82 * @resolution: one of the AUOK190X_RESOLUTION constants
83 * @rotation: rotation of the framebuffer
84 * @quirks: controller quirks to honor
85 * @fps: frames per second for defio
86 */
87 struct auok190x_board {
88 int (*init)(struct auok190xfb_par *);
89 void (*cleanup)(struct auok190xfb_par *);
90 int (*wait_for_rdy)(struct auok190xfb_par *);
91
92 void (*set_ctl)(struct auok190xfb_par *, unsigned char, u8);
93 void (*set_hdb)(struct auok190xfb_par *, u16);
94 u16 (*get_hdb)(struct auok190xfb_par *);
95
96 int (*setup_irq)(struct fb_info *);
97
98 int gpio_nsleep;
99 int gpio_nrst;
100 int gpio_nbusy;
101
102 int resolution;
103 int quirks;
104 int fps;
105 };
106
107 #endif