/* * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. All Rights Reserved. */ /* * The code contained herein is licensed under the GNU General Public * License. You may obtain a copy of the GNU General Public License * Version 2 or later at the following locations: * * http://www.opensource.org/licenses/gpl-license.html * http://www.gnu.org/copyleft/gpl.html */ #ifndef __MXC_DISPDRV_H__ #define __MXC_DISPDRV_H__ #include #include "crtc.h" struct mxc_dispdrv_handle { struct mxc_dispdrv_driver *drv; }; struct mxc_dispdrv_setting { /*input-feedback parameter*/ struct fb_info *fbi; int if_fmt; int default_bpp; char *dft_mode_str; /* feedback parameter */ enum crtc crtc; }; struct mxc_dispdrv_driver { const char *name; int (*init) (struct mxc_dispdrv_handle *, struct mxc_dispdrv_setting *); void (*deinit) (struct mxc_dispdrv_handle *); /* display driver enable function for extension */ int (*enable) (struct mxc_dispdrv_handle *, struct fb_info *); /* display driver disable function, called at early part of fb_blank */ void (*disable) (struct mxc_dispdrv_handle *, struct fb_info *); /* display driver setup function, called at early part of fb_set_par */ int (*setup) (struct mxc_dispdrv_handle *, struct fb_info *fbi); }; struct mxc_dispdrv_handle *mxc_dispdrv_register(struct mxc_dispdrv_driver *drv); int mxc_dispdrv_unregister(struct mxc_dispdrv_handle *handle); struct mxc_dispdrv_handle *mxc_dispdrv_gethandle(char *name, struct mxc_dispdrv_setting *setting); void mxc_dispdrv_puthandle(struct mxc_dispdrv_handle *handle); int mxc_dispdrv_setdata(struct mxc_dispdrv_handle *handle, void *data); void *mxc_dispdrv_getdata(struct mxc_dispdrv_handle *handle); #endif