/*
 * 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
'/><input type='hidden' name='id2' value='d4e85477cc3f1b2ca445cdf14b285238ea0d5516'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><div class='diffstat-header'><a href='/cgit.cgi/linux/net-next.git/diff/?id=e5fbd977641c92a3a2b559bb5ebb425458e3efe8&amp;id2=d4e85477cc3f1b2ca445cdf14b285238ea0d5516'>Diffstat</a></div><table summary='diffstat' class='diffstat'>