• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
108