]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/video/mxc/mxc_dispdrv.h
8c8877c06ddc0ef29597b34438113f94452b087d
[karo-tx-linux.git] / drivers / video / mxc / mxc_dispdrv.h
1 /*
2  * Copyright (C) 2011-2013 Freescale Semiconductor, Inc. All Rights Reserved.
3  */
4
5 /*
6  * The code contained herein is licensed under the GNU General Public
7  * License. You may obtain a copy of the GNU General Public License
8  * Version 2 or later at the following locations:
9  *
10  * http://www.opensource.org/licenses/gpl-license.html
11  * http://www.gnu.org/copyleft/gpl.html
12  */
13 #ifndef __MXC_DISPDRV_H__
14 #define __MXC_DISPDRV_H__
15 #include <linux/fb.h>
16 #include <video/display_timing.h>
17
18 struct mxc_dispdrv_handle {
19         struct mxc_dispdrv_driver *drv;
20 };
21
22 struct mxc_dispdrv_setting {
23         /*input-feedback parameter*/
24         struct fb_info *fbi;
25         int if_fmt;
26         int default_bpp;
27         char *dft_mode_str;
28
29         /*feedback parameter*/
30         int dev_id;
31         int disp_id;
32         enum display_flags disp_flags;
33 };
34
35 struct mxc_dispdrv_driver {
36         const char *name;
37         int (*init) (struct mxc_dispdrv_handle *, struct mxc_dispdrv_setting *);
38         /* deferred operations after dev_id and disp_id pass usage check */
39         int (*post_init) (struct mxc_dispdrv_handle *, int dev_id, int disp_id);
40         void (*deinit) (struct mxc_dispdrv_handle *);
41         /* display driver enable function for extension */
42         int (*enable) (struct mxc_dispdrv_handle *);
43         /* display driver disable function, called at early part of fb_blank */
44         void (*disable) (struct mxc_dispdrv_handle *);
45         /* display driver setup function, called at early part of fb_set_par */
46         int (*setup) (struct mxc_dispdrv_handle *, struct fb_info *fbi);
47 };
48
49 struct mxc_dispdrv_handle *mxc_dispdrv_register(struct mxc_dispdrv_driver *drv);
50 int mxc_dispdrv_unregister(struct mxc_dispdrv_handle *handle);
51 struct mxc_dispdrv_handle *mxc_dispdrv_gethandle(char *name,
52         struct mxc_dispdrv_setting *setting);
53 void mxc_dispdrv_puthandle(struct mxc_dispdrv_handle *handle);
54 int mxc_dispdrv_setdata(struct mxc_dispdrv_handle *handle, void *data);
55 void *mxc_dispdrv_getdata(struct mxc_dispdrv_handle *handle);
56 #endif