MLK-11318-5: video: mxsfb: porting mxsfb driver to imx_4.1.y branch
Porting mxsfb driver to imx_4.1.y branch. Signed-off-by: Fancy Fang <chen.fang@freescale.com> Also added dependency to FB_MXC_SYNC_PANEL to fix imx_v6_v7_deconfig build during 4.14 rebase. This was initially a small part of commit fe2905013882 ("MLK-15048-2: video: Add proper config dependencies") Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>pull/10/head
parent
ffdb9c2bff
commit
489d06f277
|
@ -224,6 +224,7 @@ CONFIG_VIDEO_CODA=y
|
|||
CONFIG_RADIO_SI476X=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_FB_MXS=y
|
||||
CONFIG_FB_MXC_SYNC_PANEL=y
|
||||
CONFIG_LCD_CLASS_DEVICE=y
|
||||
CONFIG_LCD_L4F00242T03=y
|
||||
CONFIG_LCD_PLATFORM=y
|
||||
|
@ -298,10 +299,10 @@ CONFIG_RTC_DRV_MXC=y
|
|||
CONFIG_RTC_DRV_SNVS=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_FSL_EDMA=y
|
||||
CONFIG_MXC_PXP_V2=y
|
||||
CONFIG_MXC_PXP_V3=y
|
||||
CONFIG_IMX_SDMA=y
|
||||
CONFIG_MXS_DMA=y
|
||||
CONFIG_MXC_PXP_V2=y
|
||||
CONFIG_MXC_PXP_V3=y
|
||||
CONFIG_DMATEST=m
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_STAGING_MEDIA=y
|
||||
|
|
|
@ -2407,6 +2407,7 @@ config FB_JZ4740
|
|||
config FB_MXS
|
||||
tristate "MXS LCD framebuffer support"
|
||||
depends on FB && (ARCH_MXS || ARCH_MXC)
|
||||
depends on FB_MXC_SYNC_PANEL
|
||||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
|
@ -2455,6 +2456,10 @@ source "drivers/video/fbdev/omap/Kconfig"
|
|||
source "drivers/video/fbdev/omap2/Kconfig"
|
||||
source "drivers/video/fbdev/mmp/Kconfig"
|
||||
|
||||
if ARCH_MXC
|
||||
source "drivers/video/fbdev/mxc/Kconfig"
|
||||
endif
|
||||
|
||||
config FB_SH_MOBILE_MERAM
|
||||
tristate "SuperH Mobile MERAM read ahead support"
|
||||
depends on (SUPERH || ARCH_SHMOBILE)
|
||||
|
|
|
@ -33,6 +33,7 @@ obj-$(CONFIG_FB_KYRO) += kyro/
|
|||
obj-$(CONFIG_FB_SAVAGE) += savage/
|
||||
obj-$(CONFIG_FB_GEODE) += geode/
|
||||
obj-$(CONFIG_FB_MBX) += mbx/
|
||||
obj-$(CONFIG_FB_MXC) += mxc/
|
||||
obj-$(CONFIG_FB_NEOMAGIC) += neofb.o
|
||||
obj-$(CONFIG_FB_3DFX) += tdfxfb.o
|
||||
obj-$(CONFIG_FB_CONTROL) += controlfb.o
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
config FB_MXC
|
||||
tristate "MXC Framebuffer support"
|
||||
depends on FB
|
||||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
select FB_MODE_HELPERS
|
||||
default y
|
||||
help
|
||||
This is a framebuffer device for the MXC LCD Controller.
|
||||
See <http://www.linux-fbdev.org/> for information on framebuffer
|
||||
devices.
|
||||
|
||||
If you plan to use the LCD display with your MXC system, say
|
||||
Y here.
|
||||
|
||||
config FB_MXC_SYNC_PANEL
|
||||
depends on FB_MXC
|
||||
tristate "Synchronous Panel Framebuffer"
|
|
@ -0,0 +1 @@
|
|||
obj-$(CONFIG_FB_MXC_SYNC_PANEL) += mxc_dispdrv.o
|
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright (C) 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 __CRTC__
|
||||
#define __CRTC__
|
||||
|
||||
enum crtc {
|
||||
CRTC_IPU_DI0,
|
||||
CRTC_IPU_DI1,
|
||||
CRTC_IPU1_DI0,
|
||||
CRTC_IPU1_DI1,
|
||||
CRTC_IPU2_DI0,
|
||||
CRTC_IPU2_DI1,
|
||||
CRTC_LCDIF,
|
||||
CRTC_LCDIF1,
|
||||
CRTC_LCDIF2,
|
||||
CRTC_MAX,
|
||||
};
|
||||
|
||||
struct ipu_di_crtc_map {
|
||||
enum crtc crtc;
|
||||
int ipu_id;
|
||||
int ipu_di;
|
||||
};
|
||||
|
||||
static const struct ipu_di_crtc_map ipu_di_crtc_maps[] = {
|
||||
{CRTC_IPU1_DI0, 0 , 0}, {CRTC_IPU1_DI1, 0 , 1},
|
||||
{CRTC_IPU2_DI0, 1 , 0}, {CRTC_IPU2_DI1, 1 , 1},
|
||||
};
|
||||
|
||||
static inline int ipu_di_to_crtc(struct device *dev, int ipu_id,
|
||||
int ipu_di, enum crtc *crtc)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
for (; i < ARRAY_SIZE(ipu_di_crtc_maps); i++)
|
||||
if (ipu_di_crtc_maps[i].ipu_id == ipu_id &&
|
||||
ipu_di_crtc_maps[i].ipu_di == ipu_di) {
|
||||
*crtc = ipu_di_crtc_maps[i].crtc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
dev_err(dev, "failed to get valid ipu di crtc "
|
||||
"ipu_id %d, ipu_di %d\n", ipu_id, ipu_di);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,148 @@
|
|||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
/*!
|
||||
* @file mxc_dispdrv.c
|
||||
* @brief mxc display driver framework.
|
||||
*
|
||||
* A display device driver could call mxc_dispdrv_register(drv) in its dev_probe() function.
|
||||
* Move all dev_probe() things into mxc_dispdrv_driver->init(), init() function should init
|
||||
* and feedback setting;
|
||||
* Move all dev_remove() things into mxc_dispdrv_driver->deinit();
|
||||
* Move all dev_suspend() things into fb_notifier for SUSPEND, if there is;
|
||||
* Move all dev_resume() things into fb_notifier for RESUME, if there is;
|
||||
*
|
||||
* mxc fb driver could call mxc_dispdrv_gethandle(name, setting) before a fb
|
||||
* need be added, with fbi param passing by setting, after
|
||||
* mxc_dispdrv_gethandle() return, FB driver should get the basic setting
|
||||
* about fbi info and crtc.
|
||||
*
|
||||
* @ingroup Framebuffer
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/string.h>
|
||||
#include "mxc_dispdrv.h"
|
||||
|
||||
static LIST_HEAD(dispdrv_list);
|
||||
static DEFINE_MUTEX(dispdrv_lock);
|
||||
|
||||
struct mxc_dispdrv_entry {
|
||||
/* Note: drv always the first element */
|
||||
struct mxc_dispdrv_driver *drv;
|
||||
bool active;
|
||||
void *priv;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct mxc_dispdrv_handle *mxc_dispdrv_register(struct mxc_dispdrv_driver *drv)
|
||||
{
|
||||
struct mxc_dispdrv_entry *new;
|
||||
|
||||
mutex_lock(&dispdrv_lock);
|
||||
|
||||
new = kzalloc(sizeof(struct mxc_dispdrv_entry), GFP_KERNEL);
|
||||
if (!new) {
|
||||
mutex_unlock(&dispdrv_lock);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
new->drv = drv;
|
||||
list_add_tail(&new->list, &dispdrv_list);
|
||||
|
||||
mutex_unlock(&dispdrv_lock);
|
||||
|
||||
return (struct mxc_dispdrv_handle *)new;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_dispdrv_register);
|
||||
|
||||
int mxc_dispdrv_unregister(struct mxc_dispdrv_handle *handle)
|
||||
{
|
||||
struct mxc_dispdrv_entry *entry = (struct mxc_dispdrv_entry *)handle;
|
||||
|
||||
if (entry) {
|
||||
mutex_lock(&dispdrv_lock);
|
||||
list_del(&entry->list);
|
||||
mutex_unlock(&dispdrv_lock);
|
||||
kfree(entry);
|
||||
return 0;
|
||||
} else
|
||||
return -EINVAL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_dispdrv_unregister);
|
||||
|
||||
struct mxc_dispdrv_handle *mxc_dispdrv_gethandle(char *name,
|
||||
struct mxc_dispdrv_setting *setting)
|
||||
{
|
||||
int ret, found = 0;
|
||||
struct mxc_dispdrv_entry *entry;
|
||||
|
||||
mutex_lock(&dispdrv_lock);
|
||||
list_for_each_entry(entry, &dispdrv_list, list) {
|
||||
if (!strcmp(entry->drv->name, name) && (entry->drv->init)) {
|
||||
ret = entry->drv->init((struct mxc_dispdrv_handle *)
|
||||
entry, setting);
|
||||
if (ret >= 0) {
|
||||
entry->active = true;
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
mutex_unlock(&dispdrv_lock);
|
||||
|
||||
return found ? (struct mxc_dispdrv_handle *)entry:ERR_PTR(-ENODEV);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_dispdrv_gethandle);
|
||||
|
||||
void mxc_dispdrv_puthandle(struct mxc_dispdrv_handle *handle)
|
||||
{
|
||||
struct mxc_dispdrv_entry *entry = (struct mxc_dispdrv_entry *)handle;
|
||||
|
||||
mutex_lock(&dispdrv_lock);
|
||||
if (entry && entry->active && entry->drv->deinit) {
|
||||
entry->drv->deinit(handle);
|
||||
entry->active = false;
|
||||
}
|
||||
mutex_unlock(&dispdrv_lock);
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_dispdrv_puthandle);
|
||||
|
||||
int mxc_dispdrv_setdata(struct mxc_dispdrv_handle *handle, void *data)
|
||||
{
|
||||
struct mxc_dispdrv_entry *entry = (struct mxc_dispdrv_entry *)handle;
|
||||
|
||||
if (entry) {
|
||||
entry->priv = data;
|
||||
return 0;
|
||||
} else
|
||||
return -EINVAL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_dispdrv_setdata);
|
||||
|
||||
void *mxc_dispdrv_getdata(struct mxc_dispdrv_handle *handle)
|
||||
{
|
||||
struct mxc_dispdrv_entry *entry = (struct mxc_dispdrv_entry *)handle;
|
||||
|
||||
if (entry) {
|
||||
return entry->priv;
|
||||
} else
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_dispdrv_getdata);
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* 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 <linux/fb.h>
|
||||
#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
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright 2004-2013 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The code contained herein is licensed under the GNU Lesser General
|
||||
* Public License. You may obtain a copy of the GNU Lesser General
|
||||
* Public License Version 2.1 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/lgpl-license.html
|
||||
* http://www.gnu.org/copyleft/lgpl.html
|
||||
*/
|
||||
|
||||
/*
|
||||
* @file linux/mxcfb.h
|
||||
*
|
||||
* @brief Global header file for the MXC Frame buffer
|
||||
*
|
||||
* @ingroup Framebuffer
|
||||
*/
|
||||
#ifndef __LINUX_MXCFB_H__
|
||||
#define __LINUX_MXCFB_H__
|
||||
|
||||
#include <uapi/linux/mxcfb.h>
|
||||
|
||||
extern struct fb_videomode mxcfb_modedb[];
|
||||
extern int mxcfb_modedb_sz;
|
||||
|
||||
enum {
|
||||
MXC_DISP_SPEC_DEV = 0,
|
||||
MXC_DISP_DDC_DEV = 1,
|
||||
};
|
||||
|
||||
enum {
|
||||
MXCFB_REFRESH_OFF,
|
||||
MXCFB_REFRESH_AUTO,
|
||||
MXCFB_REFRESH_PARTIAL,
|
||||
};
|
||||
|
||||
int mxcfb_set_refresh_mode(struct fb_info *fbi, int mode,
|
||||
struct mxcfb_rect *update_region);
|
||||
int mxc_elcdif_frame_addr_setup(dma_addr_t phys);
|
||||
void mxcfb_elcdif_register_mode(const struct fb_videomode *modedb,
|
||||
int num_modes, int dev_mode);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,198 @@
|
|||
/*
|
||||
* Copyright (C) 2013-2015 Freescale Semiconductor, Inc. All Rights Reserved
|
||||
*/
|
||||
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @file uapi/linux/mxcfb.h
|
||||
*
|
||||
* @brief Global header file for the MXC frame buffer
|
||||
*
|
||||
* @ingroup Framebuffer
|
||||
*/
|
||||
#ifndef __ASM_ARCH_MXCFB_H__
|
||||
#define __ASM_ARCH_MXCFB_H__
|
||||
|
||||
#include <linux/fb.h>
|
||||
|
||||
#define FB_SYNC_OE_LOW_ACT 0x80000000
|
||||
#define FB_SYNC_CLK_LAT_FALL 0x40000000
|
||||
#define FB_SYNC_DATA_INVERT 0x20000000
|
||||
#define FB_SYNC_CLK_IDLE_EN 0x10000000
|
||||
#define FB_SYNC_SHARP_MODE 0x08000000
|
||||
#define FB_SYNC_SWAP_RGB 0x04000000
|
||||
#define FB_ACCEL_TRIPLE_FLAG 0x00000000
|
||||
#define FB_ACCEL_DOUBLE_FLAG 0x00000001
|
||||
|
||||
struct mxcfb_gbl_alpha {
|
||||
int enable;
|
||||
int alpha;
|
||||
};
|
||||
|
||||
struct mxcfb_loc_alpha {
|
||||
int enable;
|
||||
int alpha_in_pixel;
|
||||
unsigned long alpha_phy_addr0;
|
||||
unsigned long alpha_phy_addr1;
|
||||
};
|
||||
|
||||
struct mxcfb_color_key {
|
||||
int enable;
|
||||
__u32 color_key;
|
||||
};
|
||||
|
||||
struct mxcfb_pos {
|
||||
__u16 x;
|
||||
__u16 y;
|
||||
};
|
||||
|
||||
struct mxcfb_gamma {
|
||||
int enable;
|
||||
int constk[16];
|
||||
int slopek[16];
|
||||
};
|
||||
|
||||
struct mxcfb_gpu_split_fmt {
|
||||
struct fb_var_screeninfo var;
|
||||
unsigned long offset;
|
||||
};
|
||||
|
||||
struct mxcfb_rect {
|
||||
__u32 top;
|
||||
__u32 left;
|
||||
__u32 width;
|
||||
__u32 height;
|
||||
};
|
||||
|
||||
#define GRAYSCALE_8BIT 0x1
|
||||
#define GRAYSCALE_8BIT_INVERTED 0x2
|
||||
#define GRAYSCALE_4BIT 0x3
|
||||
#define GRAYSCALE_4BIT_INVERTED 0x4
|
||||
|
||||
#define AUTO_UPDATE_MODE_REGION_MODE 0
|
||||
#define AUTO_UPDATE_MODE_AUTOMATIC_MODE 1
|
||||
|
||||
#define UPDATE_SCHEME_SNAPSHOT 0
|
||||
#define UPDATE_SCHEME_QUEUE 1
|
||||
#define UPDATE_SCHEME_QUEUE_AND_MERGE 2
|
||||
|
||||
#define UPDATE_MODE_PARTIAL 0x0
|
||||
#define UPDATE_MODE_FULL 0x1
|
||||
|
||||
#define WAVEFORM_MODE_GLR16 4
|
||||
#define WAVEFORM_MODE_GLD16 5
|
||||
#define WAVEFORM_MODE_AUTO 257
|
||||
|
||||
#define TEMP_USE_AMBIENT 0x1000
|
||||
|
||||
#define EPDC_FLAG_ENABLE_INVERSION 0x01
|
||||
#define EPDC_FLAG_FORCE_MONOCHROME 0x02
|
||||
#define EPDC_FLAG_USE_CMAP 0x04
|
||||
#define EPDC_FLAG_USE_ALT_BUFFER 0x100
|
||||
#define EPDC_FLAG_TEST_COLLISION 0x200
|
||||
#define EPDC_FLAG_GROUP_UPDATE 0x400
|
||||
#define EPDC_FLAG_USE_DITHERING_Y1 0x2000
|
||||
#define EPDC_FLAG_USE_DITHERING_Y4 0x4000
|
||||
#define EPDC_FLAG_USE_REGAL 0x8000
|
||||
|
||||
enum mxcfb_dithering_mode {
|
||||
EPDC_FLAG_USE_DITHERING_PASSTHROUGH = 0x0,
|
||||
EPDC_FLAG_USE_DITHERING_FLOYD_STEINBERG,
|
||||
EPDC_FLAG_USE_DITHERING_ATKINSON,
|
||||
EPDC_FLAG_USE_DITHERING_ORDERED,
|
||||
EPDC_FLAG_USE_DITHERING_QUANT_ONLY,
|
||||
EPDC_FLAG_USE_DITHERING_MAX,
|
||||
};
|
||||
|
||||
#define FB_POWERDOWN_DISABLE -1
|
||||
|
||||
struct mxcfb_alt_buffer_data {
|
||||
__u32 phys_addr;
|
||||
__u32 width; /* width of entire buffer */
|
||||
__u32 height; /* height of entire buffer */
|
||||
struct mxcfb_rect alt_update_region; /* region within buffer to update */
|
||||
};
|
||||
|
||||
struct mxcfb_update_data {
|
||||
struct mxcfb_rect update_region;
|
||||
__u32 waveform_mode;
|
||||
__u32 update_mode;
|
||||
__u32 update_marker;
|
||||
int temp;
|
||||
unsigned int flags;
|
||||
int dither_mode;
|
||||
int quant_bit;
|
||||
struct mxcfb_alt_buffer_data alt_buffer_data;
|
||||
};
|
||||
|
||||
struct mxcfb_update_marker_data {
|
||||
__u32 update_marker;
|
||||
__u32 collision_test;
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure used to define waveform modes for driver
|
||||
* Needed for driver to perform auto-waveform selection
|
||||
*/
|
||||
struct mxcfb_waveform_modes {
|
||||
int mode_init;
|
||||
int mode_du;
|
||||
int mode_gc4;
|
||||
int mode_gc8;
|
||||
int mode_gc16;
|
||||
int mode_gc32;
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure used to define a 5*3 matrix of parameters for
|
||||
* setting IPU DP CSC module related to this framebuffer.
|
||||
*/
|
||||
struct mxcfb_csc_matrix {
|
||||
int param[5][3];
|
||||
};
|
||||
|
||||
#define MXCFB_WAIT_FOR_VSYNC _IOW('F', 0x20, u_int32_t)
|
||||
#define MXCFB_SET_GBL_ALPHA _IOW('F', 0x21, struct mxcfb_gbl_alpha)
|
||||
#define MXCFB_SET_CLR_KEY _IOW('F', 0x22, struct mxcfb_color_key)
|
||||
#define MXCFB_SET_OVERLAY_POS _IOWR('F', 0x24, struct mxcfb_pos)
|
||||
#define MXCFB_GET_FB_IPU_CHAN _IOR('F', 0x25, u_int32_t)
|
||||
#define MXCFB_SET_LOC_ALPHA _IOWR('F', 0x26, struct mxcfb_loc_alpha)
|
||||
#define MXCFB_SET_LOC_ALP_BUF _IOW('F', 0x27, unsigned long)
|
||||
#define MXCFB_SET_GAMMA _IOW('F', 0x28, struct mxcfb_gamma)
|
||||
#define MXCFB_GET_FB_IPU_DI _IOR('F', 0x29, u_int32_t)
|
||||
#define MXCFB_GET_DIFMT _IOR('F', 0x2A, u_int32_t)
|
||||
#define MXCFB_GET_FB_BLANK _IOR('F', 0x2B, u_int32_t)
|
||||
#define MXCFB_SET_DIFMT _IOW('F', 0x2C, u_int32_t)
|
||||
#define MXCFB_CSC_UPDATE _IOW('F', 0x2D, struct mxcfb_csc_matrix)
|
||||
#define MXCFB_SET_GPU_SPLIT_FMT _IOW('F', 0x2F, struct mxcfb_gpu_split_fmt)
|
||||
#define MXCFB_SET_PREFETCH _IOW('F', 0x30, int)
|
||||
#define MXCFB_GET_PREFETCH _IOR('F', 0x31, int)
|
||||
|
||||
/* IOCTLs for E-ink panel updates */
|
||||
#define MXCFB_SET_WAVEFORM_MODES _IOW('F', 0x2B, struct mxcfb_waveform_modes)
|
||||
#define MXCFB_SET_TEMPERATURE _IOW('F', 0x2C, int32_t)
|
||||
#define MXCFB_SET_AUTO_UPDATE_MODE _IOW('F', 0x2D, __u32)
|
||||
#define MXCFB_SEND_UPDATE _IOW('F', 0x2E, struct mxcfb_update_data)
|
||||
#define MXCFB_WAIT_FOR_UPDATE_COMPLETE _IOWR('F', 0x2F, struct mxcfb_update_marker_data)
|
||||
#define MXCFB_SET_PWRDOWN_DELAY _IOW('F', 0x30, int32_t)
|
||||
#define MXCFB_GET_PWRDOWN_DELAY _IOR('F', 0x31, int32_t)
|
||||
#define MXCFB_SET_UPDATE_SCHEME _IOW('F', 0x32, __u32)
|
||||
#define MXCFB_GET_WORK_BUFFER _IOWR('F', 0x34, unsigned long)
|
||||
#define MXCFB_DISABLE_EPDC_ACCESS _IO('F', 0x35)
|
||||
#define MXCFB_ENABLE_EPDC_ACCESS _IO('F', 0x36)
|
||||
#endif
|
Loading…
Reference in New Issue