Merge branch develop-3.10
[firefly-linux-kernel-4.4.55.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