Blame view

include/video/auo_k190xfb.h 2.79 KB
81f7e3824   Eric Lee   Initial Release, ...
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
  /*
   * Definitions for AUO-K190X framebuffer drivers
   *
   * Copyright (C) 2012 Heiko Stuebner <heiko@sntech.de>
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   */
  
  #ifndef _LINUX_VIDEO_AUO_K190XFB_H_
  #define _LINUX_VIDEO_AUO_K190XFB_H_
  
  /* Controller standby command needs a param */
  #define AUOK190X_QUIRK_STANDBYPARAM	(1 << 0)
  
  /* Controller standby is completely broken */
  #define AUOK190X_QUIRK_STANDBYBROKEN	(1 << 1)
  
  /*
   * Resolutions for the displays
   */
  #define AUOK190X_RESOLUTION_800_600		0
  #define AUOK190X_RESOLUTION_1024_768		1
  #define AUOK190X_RESOLUTION_600_800		4
  #define AUOK190X_RESOLUTION_768_1024		5
  
  /*
   * struct used by auok190x. board specific stuff comes from *board
   */
  struct auok190xfb_par {
  	struct fb_info *info;
  	struct auok190x_board *board;
  
  	struct regulator *regulator;
  
  	struct mutex io_lock;
  	struct delayed_work work;
  	wait_queue_head_t waitq;
  	int resolution;
  	int rotation;
  	int consecutive_threshold;
  	int update_cnt;
  
  	/* panel and controller informations */
  	int epd_type;
  	int panel_size_int;
  	int panel_size_float;
  	int panel_model;
  	int tcon_version;
  	int lut_version;
  
  	/* individual controller callbacks */
  	void (*update_partial)(struct auok190xfb_par *par, u16 y1, u16 y2);
  	void (*update_all)(struct auok190xfb_par *par);
  	bool (*need_refresh)(struct auok190xfb_par *par);
  	void (*init)(struct auok190xfb_par *par);
  	void (*recover)(struct auok190xfb_par *par);
  
  	int update_mode; /* mode to use for updates */
  	int last_mode; /* update mode last used */
  	int flash;
  
  	/* power management */
  	int autosuspend_delay;
  	bool standby;
  	bool manual_standby;
  };
  
  /**
   * Board specific platform-data
   * @init:		initialize the controller interface
   * @cleanup:		cleanup the controller interface
   * @wait_for_rdy:	wait until the controller is not busy anymore
   * @set_ctl:		change an interface control
   * @set_hdb:		write a value to the data register
   * @get_hdb:		read a value from the data register
   * @setup_irq:		method to setup the irq handling on the busy gpio
   * @gpio_nsleep:	sleep gpio
   * @gpio_nrst:		reset gpio
   * @gpio_nbusy:		busy gpio
   * @resolution:		one of the AUOK190X_RESOLUTION constants
   * @rotation:		rotation of the framebuffer
   * @quirks:		controller quirks to honor
   * @fps:		frames per second for defio
   */
  struct auok190x_board {
  	int (*init)(struct auok190xfb_par *);
  	void (*cleanup)(struct auok190xfb_par *);
  	int (*wait_for_rdy)(struct auok190xfb_par *);
  
  	void (*set_ctl)(struct auok190xfb_par *, unsigned char, u8);
  	void (*set_hdb)(struct auok190xfb_par *, u16);
  	u16 (*get_hdb)(struct auok190xfb_par *);
  
  	int (*setup_irq)(struct fb_info *);
  
  	int gpio_nsleep;
  	int gpio_nrst;
  	int gpio_nbusy;
  
  	int resolution;
  	int quirks;
  	int fps;
  };
  
  #endif