]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/video/mxc/mxc_dispdrv.h
video: mxc: search for display-timings in the mxcfb node, rather than ldb or mxc_lcdif
[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         struct fb_videomode *fbmode;
35 };
36
37 struct mxc_dispdrv_driver {
38         const char *name;
39         int (*init) (struct mxc_dispdrv_handle *, struct mxc_dispdrv_setting *);
40         /* deferred operations after dev_id and disp_id pass usage check */
41         int (*post_init) (struct mxc_dispdrv_handle *, int dev_id, int disp_id);
42         void (*deinit) (struct mxc_dispdrv_handle *);
43         /* display driver enable function for extension */
44         int (*enable) (struct mxc_dispdrv_handle *);
45         /* display driver disable function, called at early part of fb_blank */
46         void (*disable) (struct mxc_dispdrv_handle *);
47         /* display driver setup function, called at early part of fb_set_par */
48         int (*setup) (struct mxc_dispdrv_handle *, struct fb_info *fbi);
49 };
50
51 struct mxc_dispdrv_handle *mxc_dispdrv_register(struct mxc_dispdrv_driver *drv);
52 int mxc_dispdrv_unregister(struct mxc_dispdrv_handle *handle);
53 struct mxc_dispdrv_handle *mxc_dispdrv_gethandle(char *name,
54         struct mxc_dispdrv_setting *setting);
55 void mxc_dispdrv_puthandle(struct mxc_dispdrv_handle *handle);
56 int mxc_dispdrv_setdata(struct mxc_dispdrv_handle *handle, void *data);
57 void *mxc_dispdrv_getdata(struct mxc_dispdrv_handle *handle);
58 #endif