Remove lagacy IPP driver
- This driver isn't used anymore so remove it. Marek is preparing new one which includes completely rewritten API so this driver will be replaced with the new version[1] later. And cleanups. [1] https://patches.linaro.org/cover/118386/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJaStDkAAoJEFc4NIkMQxK4E0sP/iVMboqiKeZQuagJGu+Qi0eL VTe9wVFZJMFsHL6dDdVTTpZUul9bE05RufKLjQyA6ZxqgQd5lohu+fw3Q+ImQrzl zPLvX4OTxeq56CFWQt0WslTo3LsXlIUJ/LxqVq0Tr/ipmjRAd6F8H67UXtetoJhb 39Omm0HtTgloO4OYTR9RzK9XsuZ5a8PiUN8NsH8qR2ZrUBgsEDrPsj6tTP8jj93M 9qwLgD58e3kWiWilIZH7bqA29TQAfTNwbenjzZhkYSrNsq6EcvjPDsZxeWET1jFW m6QYs+glfYxNujE6Y/gelWOYA7CLCT38wDMTMTWYUY3m5Vqa8SnqHJycsjCrQmNf aIRk+0Ou8xqeydirMhKPVVPryo98P6sIXE4R7tIFnTQ71a1WzoECXLA2eQ7t/MGu CSAFovUCnYVxcqh2jSnBOuauYPb9a8RkRgtoGw0l5R5FpveUuLC1B04NQ+DKcQHQ YaLzhnTY4j+5u2E6Io7LfmyaLLa9ZEJfzp5K7+41cguLu6KknTDVxmvD36HyNIkH hfnalbOwlitLuViNLFGpGPv7ByvigaMTUBp1DtE3Oqc1YXZjgRZ+dDrrXv277yql 3u1+OLCf2sGDrJ6XSz00E8oPDsvxTI1jNxUfMOMN2eZhHwhlYsRrxWnizr+P0JmP 30zX80D0o1aGpl/baKav =pWLW -----END PGP SIGNATURE----- Merge tag 'exynos-drm-next-for-v4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next Remove lagacy IPP driver - This driver isn't used anymore so remove it. Marek is preparing new one which includes completely rewritten API so this driver will be replaced with the new version[1] later. And cleanups. [1] https://patches.linaro.org/cover/118386/ * tag 'exynos-drm-next-for-v4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: drm/exynos: ipp: Remove Exynos DRM IPP subsystem drm/exynos/decon: Add include guard to the Exynos7 header drm/exynos/decon: Move headers from global to local place drm/exynos: decon5433: Remove unnecessary platform_get_resource() error check
This commit is contained in:
commit
4ef0bef2ec
@ -95,26 +95,21 @@ config DRM_EXYNOS_G2D
|
||||
help
|
||||
Choose this option if you want to use Exynos G2D for DRM.
|
||||
|
||||
config DRM_EXYNOS_IPP
|
||||
bool "Image Post Processor"
|
||||
help
|
||||
Choose this option if you want to use IPP feature for DRM.
|
||||
|
||||
config DRM_EXYNOS_FIMC
|
||||
bool "FIMC"
|
||||
depends on DRM_EXYNOS_IPP && MFD_SYSCON
|
||||
depends on BROKEN && MFD_SYSCON
|
||||
help
|
||||
Choose this option if you want to use Exynos FIMC for DRM.
|
||||
|
||||
config DRM_EXYNOS_ROTATOR
|
||||
bool "Rotator"
|
||||
depends on DRM_EXYNOS_IPP
|
||||
depends on BROKEN
|
||||
help
|
||||
Choose this option if you want to use Exynos Rotator for DRM.
|
||||
|
||||
config DRM_EXYNOS_GSC
|
||||
bool "GScaler"
|
||||
depends on DRM_EXYNOS_IPP && ARCH_EXYNOS5 && VIDEO_SAMSUNG_EXYNOS_GSC=n
|
||||
depends on BROKEN && ARCH_EXYNOS5 && VIDEO_SAMSUNG_EXYNOS_GSC=n
|
||||
help
|
||||
Choose this option if you want to use Exynos GSC for DRM.
|
||||
|
||||
|
@ -18,7 +18,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_MIXER) += exynos_mixer.o
|
||||
exynosdrm-$(CONFIG_DRM_EXYNOS_HDMI) += exynos_hdmi.o
|
||||
exynosdrm-$(CONFIG_DRM_EXYNOS_VIDI) += exynos_drm_vidi.o
|
||||
exynosdrm-$(CONFIG_DRM_EXYNOS_G2D) += exynos_drm_g2d.o
|
||||
exynosdrm-$(CONFIG_DRM_EXYNOS_IPP) += exynos_drm_ipp.o
|
||||
exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC) += exynos_drm_fimc.o
|
||||
exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR) += exynos_drm_rotator.o
|
||||
exynosdrm-$(CONFIG_DRM_EXYNOS_GSC) += exynos_drm_gsc.o
|
||||
|
@ -21,13 +21,12 @@
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
#include <video/exynos5433_decon.h>
|
||||
|
||||
#include "exynos_drm_drv.h"
|
||||
#include "exynos_drm_crtc.h"
|
||||
#include "exynos_drm_fb.h"
|
||||
#include "exynos_drm_plane.h"
|
||||
#include "exynos_drm_iommu.h"
|
||||
#include "regs-decon5433.h"
|
||||
|
||||
#define DSD_CFG_MUX 0x1004
|
||||
#define DSD_CFG_MUX_TE_UNMASK_GLOBAL BIT(13)
|
||||
@ -744,11 +743,6 @@ static int exynos5433_decon_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!res) {
|
||||
dev_err(dev, "cannot find IO resource\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
ctx->addr = devm_ioremap_resource(dev, res);
|
||||
if (IS_ERR(ctx->addr)) {
|
||||
dev_err(dev, "ioremap failed\n");
|
||||
|
@ -25,13 +25,13 @@
|
||||
|
||||
#include <video/of_display_timing.h>
|
||||
#include <video/of_videomode.h>
|
||||
#include <video/exynos7_decon.h>
|
||||
|
||||
#include "exynos_drm_crtc.h"
|
||||
#include "exynos_drm_plane.h"
|
||||
#include "exynos_drm_drv.h"
|
||||
#include "exynos_drm_fb.h"
|
||||
#include "exynos_drm_iommu.h"
|
||||
#include "regs-decon7.h"
|
||||
|
||||
/*
|
||||
* DECON stands for Display and Enhancement controller.
|
||||
|
@ -29,7 +29,6 @@
|
||||
#include "exynos_drm_plane.h"
|
||||
#include "exynos_drm_vidi.h"
|
||||
#include "exynos_drm_g2d.h"
|
||||
#include "exynos_drm_ipp.h"
|
||||
#include "exynos_drm_iommu.h"
|
||||
|
||||
#define DRIVER_NAME "exynos"
|
||||
@ -109,14 +108,6 @@ static const struct drm_ioctl_desc exynos_ioctls[] = {
|
||||
DRM_AUTH | DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(EXYNOS_G2D_EXEC, exynos_g2d_exec_ioctl,
|
||||
DRM_AUTH | DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(EXYNOS_IPP_GET_PROPERTY, exynos_drm_ipp_get_property,
|
||||
DRM_AUTH | DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(EXYNOS_IPP_SET_PROPERTY, exynos_drm_ipp_set_property,
|
||||
DRM_AUTH | DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(EXYNOS_IPP_QUEUE_BUF, exynos_drm_ipp_queue_buf,
|
||||
DRM_AUTH | DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF_DRV(EXYNOS_IPP_CMD_CTRL, exynos_drm_ipp_cmd_ctrl,
|
||||
DRM_AUTH | DRM_RENDER_ALLOW),
|
||||
};
|
||||
|
||||
static const struct file_operations exynos_drm_driver_fops = {
|
||||
@ -256,9 +247,6 @@ static struct exynos_drm_driver_info exynos_drm_drivers[] = {
|
||||
DRV_PTR(rotator_driver, CONFIG_DRM_EXYNOS_ROTATOR),
|
||||
}, {
|
||||
DRV_PTR(gsc_driver, CONFIG_DRM_EXYNOS_GSC),
|
||||
}, {
|
||||
DRV_PTR(ipp_driver, CONFIG_DRM_EXYNOS_IPP),
|
||||
DRM_VIRTUAL_DEVICE
|
||||
}, {
|
||||
&exynos_drm_platform_driver,
|
||||
DRM_VIRTUAL_DEVICE
|
||||
|
@ -188,7 +188,6 @@ struct exynos_drm_g2d_private {
|
||||
|
||||
struct drm_exynos_file_private {
|
||||
struct exynos_drm_g2d_private *g2d_priv;
|
||||
struct device *ipp_dev;
|
||||
};
|
||||
|
||||
/*
|
||||
@ -291,6 +290,5 @@ extern struct platform_driver g2d_driver;
|
||||
extern struct platform_driver fimc_driver;
|
||||
extern struct platform_driver rotator_driver;
|
||||
extern struct platform_driver gsc_driver;
|
||||
extern struct platform_driver ipp_driver;
|
||||
extern struct platform_driver mic_driver;
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,252 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2012 Samsung Electronics Co., Ltd.
|
||||
*
|
||||
* Authors:
|
||||
* Eunchul Kim <chulspro.kim@samsung.com>
|
||||
* Jinyoung Jeon <jy0.jeon@samsung.com>
|
||||
* Sangmin Lee <lsmin.lee@samsung.com>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _EXYNOS_DRM_IPP_H_
|
||||
#define _EXYNOS_DRM_IPP_H_
|
||||
|
||||
#define for_each_ipp_ops(pos) \
|
||||
for (pos = 0; pos < EXYNOS_DRM_OPS_MAX; pos++)
|
||||
#define for_each_ipp_planar(pos) \
|
||||
for (pos = 0; pos < EXYNOS_DRM_PLANAR_MAX; pos++)
|
||||
|
||||
#define IPP_GET_LCD_WIDTH _IOR('F', 302, int)
|
||||
#define IPP_GET_LCD_HEIGHT _IOR('F', 303, int)
|
||||
#define IPP_SET_WRITEBACK _IOW('F', 304, u32)
|
||||
|
||||
/* definition of state */
|
||||
enum drm_exynos_ipp_state {
|
||||
IPP_STATE_IDLE,
|
||||
IPP_STATE_START,
|
||||
IPP_STATE_STOP,
|
||||
};
|
||||
|
||||
/*
|
||||
* A structure of command work information.
|
||||
* @work: work structure.
|
||||
* @ippdrv: current work ippdrv.
|
||||
* @c_node: command node information.
|
||||
* @ctrl: command control.
|
||||
*/
|
||||
struct drm_exynos_ipp_cmd_work {
|
||||
struct work_struct work;
|
||||
struct exynos_drm_ippdrv *ippdrv;
|
||||
struct drm_exynos_ipp_cmd_node *c_node;
|
||||
enum drm_exynos_ipp_ctrl ctrl;
|
||||
};
|
||||
|
||||
/*
|
||||
* A structure of command node.
|
||||
*
|
||||
* @list: list head to command queue information.
|
||||
* @event_list: list head of event.
|
||||
* @mem_list: list head to source,destination memory queue information.
|
||||
* @lock: lock for synchronization of access to ioctl.
|
||||
* @mem_lock: lock for synchronization of access to memory nodes.
|
||||
* @event_lock: lock for synchronization of access to scheduled event.
|
||||
* @start_complete: completion of start of command.
|
||||
* @stop_complete: completion of stop of command.
|
||||
* @property: property information.
|
||||
* @start_work: start command work structure.
|
||||
* @stop_work: stop command work structure.
|
||||
* @event_work: event work structure.
|
||||
* @state: state of command node.
|
||||
* @filp: associated file pointer.
|
||||
*/
|
||||
struct drm_exynos_ipp_cmd_node {
|
||||
struct list_head list;
|
||||
struct list_head event_list;
|
||||
struct list_head mem_list[EXYNOS_DRM_OPS_MAX];
|
||||
struct mutex lock;
|
||||
struct mutex mem_lock;
|
||||
struct mutex event_lock;
|
||||
struct completion start_complete;
|
||||
struct completion stop_complete;
|
||||
struct drm_exynos_ipp_property property;
|
||||
struct drm_exynos_ipp_cmd_work *start_work;
|
||||
struct drm_exynos_ipp_cmd_work *stop_work;
|
||||
struct drm_exynos_ipp_event_work *event_work;
|
||||
enum drm_exynos_ipp_state state;
|
||||
struct drm_file *filp;
|
||||
};
|
||||
|
||||
/*
|
||||
* A structure of buffer information.
|
||||
*
|
||||
* @handles: Y, Cb, Cr each gem object handle.
|
||||
* @base: Y, Cb, Cr each planar address.
|
||||
*/
|
||||
struct drm_exynos_ipp_buf_info {
|
||||
unsigned long handles[EXYNOS_DRM_PLANAR_MAX];
|
||||
dma_addr_t base[EXYNOS_DRM_PLANAR_MAX];
|
||||
};
|
||||
|
||||
/*
|
||||
* A structure of wb setting information.
|
||||
*
|
||||
* @enable: enable flag for wb.
|
||||
* @refresh: HZ of the refresh rate.
|
||||
*/
|
||||
struct drm_exynos_ipp_set_wb {
|
||||
__u32 enable;
|
||||
__u32 refresh;
|
||||
};
|
||||
|
||||
/*
|
||||
* A structure of event work information.
|
||||
*
|
||||
* @work: work structure.
|
||||
* @ippdrv: current work ippdrv.
|
||||
* @buf_id: id of src, dst buffer.
|
||||
*/
|
||||
struct drm_exynos_ipp_event_work {
|
||||
struct work_struct work;
|
||||
struct exynos_drm_ippdrv *ippdrv;
|
||||
u32 buf_id[EXYNOS_DRM_OPS_MAX];
|
||||
};
|
||||
|
||||
/*
|
||||
* A structure of source,destination operations.
|
||||
*
|
||||
* @set_fmt: set format of image.
|
||||
* @set_transf: set transform(rotations, flip).
|
||||
* @set_size: set size of region.
|
||||
* @set_addr: set address for dma.
|
||||
*/
|
||||
struct exynos_drm_ipp_ops {
|
||||
int (*set_fmt)(struct device *dev, u32 fmt);
|
||||
int (*set_transf)(struct device *dev,
|
||||
enum drm_exynos_degree degree,
|
||||
enum drm_exynos_flip flip, bool *swap);
|
||||
int (*set_size)(struct device *dev, int swap,
|
||||
struct drm_exynos_pos *pos, struct drm_exynos_sz *sz);
|
||||
int (*set_addr)(struct device *dev,
|
||||
struct drm_exynos_ipp_buf_info *buf_info, u32 buf_id,
|
||||
enum drm_exynos_ipp_buf_type buf_type);
|
||||
};
|
||||
|
||||
/*
|
||||
* A structure of ipp driver.
|
||||
*
|
||||
* @drv_list: list head for registed sub driver information.
|
||||
* @parent_dev: parent device information.
|
||||
* @dev: platform device.
|
||||
* @drm_dev: drm device.
|
||||
* @dedicated: dedicated ipp device.
|
||||
* @ops: source, destination operations.
|
||||
* @event_workq: event work queue.
|
||||
* @c_node: current command information.
|
||||
* @cmd_list: list head for command information.
|
||||
* @cmd_lock: lock for synchronization of access to cmd_list.
|
||||
* @prop_list: property informations of current ipp driver.
|
||||
* @check_property: check property about format, size, buffer.
|
||||
* @reset: reset ipp block.
|
||||
* @start: ipp each device start.
|
||||
* @stop: ipp each device stop.
|
||||
* @sched_event: work schedule handler.
|
||||
*/
|
||||
struct exynos_drm_ippdrv {
|
||||
struct list_head drv_list;
|
||||
struct device *parent_dev;
|
||||
struct device *dev;
|
||||
struct drm_device *drm_dev;
|
||||
bool dedicated;
|
||||
struct exynos_drm_ipp_ops *ops[EXYNOS_DRM_OPS_MAX];
|
||||
struct workqueue_struct *event_workq;
|
||||
struct drm_exynos_ipp_cmd_node *c_node;
|
||||
struct list_head cmd_list;
|
||||
struct mutex cmd_lock;
|
||||
struct drm_exynos_ipp_prop_list prop_list;
|
||||
|
||||
int (*check_property)(struct device *dev,
|
||||
struct drm_exynos_ipp_property *property);
|
||||
int (*reset)(struct device *dev);
|
||||
int (*start)(struct device *dev, enum drm_exynos_ipp_cmd cmd);
|
||||
void (*stop)(struct device *dev, enum drm_exynos_ipp_cmd cmd);
|
||||
void (*sched_event)(struct work_struct *work);
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DRM_EXYNOS_IPP
|
||||
extern int exynos_drm_ippdrv_register(struct exynos_drm_ippdrv *ippdrv);
|
||||
extern int exynos_drm_ippdrv_unregister(struct exynos_drm_ippdrv *ippdrv);
|
||||
extern int exynos_drm_ipp_get_property(struct drm_device *drm_dev, void *data,
|
||||
struct drm_file *file);
|
||||
extern int exynos_drm_ipp_set_property(struct drm_device *drm_dev, void *data,
|
||||
struct drm_file *file);
|
||||
extern int exynos_drm_ipp_queue_buf(struct drm_device *drm_dev, void *data,
|
||||
struct drm_file *file);
|
||||
extern int exynos_drm_ipp_cmd_ctrl(struct drm_device *drm_dev, void *data,
|
||||
struct drm_file *file);
|
||||
extern int exynos_drm_ippnb_register(struct notifier_block *nb);
|
||||
extern int exynos_drm_ippnb_unregister(struct notifier_block *nb);
|
||||
extern int exynos_drm_ippnb_send_event(unsigned long val, void *v);
|
||||
extern void ipp_sched_cmd(struct work_struct *work);
|
||||
extern void ipp_sched_event(struct work_struct *work);
|
||||
|
||||
#else
|
||||
static inline int exynos_drm_ippdrv_register(struct exynos_drm_ippdrv *ippdrv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int exynos_drm_ippdrv_unregister(struct exynos_drm_ippdrv *ippdrv)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int exynos_drm_ipp_get_property(struct drm_device *drm_dev,
|
||||
void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENOTTY;
|
||||
}
|
||||
|
||||
static inline int exynos_drm_ipp_set_property(struct drm_device *drm_dev,
|
||||
void *data,
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
return -ENOTTY;
|
||||
}
|
||||
|
||||
static inline int exynos_drm_ipp_queue_buf(struct drm_device *drm_dev,
|
||||
void *data,
|
||||
struct drm_file *file)
|
||||
{
|
||||
return -ENOTTY;
|
||||
}
|
||||
|
||||
static inline int exynos_drm_ipp_cmd_ctrl(struct drm_device *drm_dev,
|
||||
void *data,
|
||||
struct drm_file *file)
|
||||
{
|
||||
return -ENOTTY;
|
||||
}
|
||||
|
||||
static inline int exynos_drm_ippnb_register(struct notifier_block *nb)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int exynos_drm_ippnb_unregister(struct notifier_block *nb)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int exynos_drm_ippnb_send_event(unsigned long val, void *v)
|
||||
{
|
||||
return -ENOTTY;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _EXYNOS_DRM_IPP_H_ */
|
||||
|
@ -6,8 +6,8 @@
|
||||
* published by the Free Software Foundationr
|
||||
*/
|
||||
|
||||
#ifndef EXYNOS_REGS_DECON_H
|
||||
#define EXYNOS_REGS_DECON_H
|
||||
#ifndef EXYNOS_REGS_DECON5433_H
|
||||
#define EXYNOS_REGS_DECON5433_H
|
||||
|
||||
/* Exynos543X DECON */
|
||||
#define DECON_VIDCON0 0x0000
|
||||
@ -206,4 +206,4 @@
|
||||
#define CRCCTRL_CRCEN (0x1 << 0)
|
||||
#define CRCCTRL_MASK (0x7)
|
||||
|
||||
#endif /* EXYNOS_REGS_DECON_H */
|
||||
#endif /* EXYNOS_REGS_DECON5433_H */
|
@ -1,5 +1,4 @@
|
||||
/* include/video/exynos7_decon.h
|
||||
*
|
||||
/*
|
||||
* Copyright (c) 2014 Samsung Electronics Co., Ltd.
|
||||
* Author: Ajay Kumar <ajaykumar.rs@samsung.com>
|
||||
*
|
||||
@ -9,6 +8,9 @@
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef EXYNOS_REGS_DECON7_H
|
||||
#define EXYNOS_REGS_DECON7_H
|
||||
|
||||
/* VIDCON0 */
|
||||
#define VIDCON0 0x00
|
||||
|
||||
@ -347,3 +349,5 @@
|
||||
|
||||
#define DECON_UPDATE_SLAVE_SYNC (1 << 4)
|
||||
#define DECON_UPDATE_STANDALONE_F (1 << 0)
|
||||
|
||||
#endif /* EXYNOS_REGS_DECON7_H */
|
@ -135,172 +135,6 @@ struct drm_exynos_g2d_exec {
|
||||
__u64 async;
|
||||
};
|
||||
|
||||
enum drm_exynos_ops_id {
|
||||
EXYNOS_DRM_OPS_SRC,
|
||||
EXYNOS_DRM_OPS_DST,
|
||||
EXYNOS_DRM_OPS_MAX,
|
||||
};
|
||||
|
||||
struct drm_exynos_sz {
|
||||
__u32 hsize;
|
||||
__u32 vsize;
|
||||
};
|
||||
|
||||
struct drm_exynos_pos {
|
||||
__u32 x;
|
||||
__u32 y;
|
||||
__u32 w;
|
||||
__u32 h;
|
||||
};
|
||||
|
||||
enum drm_exynos_flip {
|
||||
EXYNOS_DRM_FLIP_NONE = (0 << 0),
|
||||
EXYNOS_DRM_FLIP_VERTICAL = (1 << 0),
|
||||
EXYNOS_DRM_FLIP_HORIZONTAL = (1 << 1),
|
||||
EXYNOS_DRM_FLIP_BOTH = EXYNOS_DRM_FLIP_VERTICAL |
|
||||
EXYNOS_DRM_FLIP_HORIZONTAL,
|
||||
};
|
||||
|
||||
enum drm_exynos_degree {
|
||||
EXYNOS_DRM_DEGREE_0,
|
||||
EXYNOS_DRM_DEGREE_90,
|
||||
EXYNOS_DRM_DEGREE_180,
|
||||
EXYNOS_DRM_DEGREE_270,
|
||||
};
|
||||
|
||||
enum drm_exynos_planer {
|
||||
EXYNOS_DRM_PLANAR_Y,
|
||||
EXYNOS_DRM_PLANAR_CB,
|
||||
EXYNOS_DRM_PLANAR_CR,
|
||||
EXYNOS_DRM_PLANAR_MAX,
|
||||
};
|
||||
|
||||
/**
|
||||
* A structure for ipp supported property list.
|
||||
*
|
||||
* @version: version of this structure.
|
||||
* @ipp_id: id of ipp driver.
|
||||
* @count: count of ipp driver.
|
||||
* @writeback: flag of writeback supporting.
|
||||
* @flip: flag of flip supporting.
|
||||
* @degree: flag of degree information.
|
||||
* @csc: flag of csc supporting.
|
||||
* @crop: flag of crop supporting.
|
||||
* @scale: flag of scale supporting.
|
||||
* @refresh_min: min hz of refresh.
|
||||
* @refresh_max: max hz of refresh.
|
||||
* @crop_min: crop min resolution.
|
||||
* @crop_max: crop max resolution.
|
||||
* @scale_min: scale min resolution.
|
||||
* @scale_max: scale max resolution.
|
||||
*/
|
||||
struct drm_exynos_ipp_prop_list {
|
||||
__u32 version;
|
||||
__u32 ipp_id;
|
||||
__u32 count;
|
||||
__u32 writeback;
|
||||
__u32 flip;
|
||||
__u32 degree;
|
||||
__u32 csc;
|
||||
__u32 crop;
|
||||
__u32 scale;
|
||||
__u32 refresh_min;
|
||||
__u32 refresh_max;
|
||||
__u32 reserved;
|
||||
struct drm_exynos_sz crop_min;
|
||||
struct drm_exynos_sz crop_max;
|
||||
struct drm_exynos_sz scale_min;
|
||||
struct drm_exynos_sz scale_max;
|
||||
};
|
||||
|
||||
/**
|
||||
* A structure for ipp config.
|
||||
*
|
||||
* @ops_id: property of operation directions.
|
||||
* @flip: property of mirror, flip.
|
||||
* @degree: property of rotation degree.
|
||||
* @fmt: property of image format.
|
||||
* @sz: property of image size.
|
||||
* @pos: property of image position(src-cropped,dst-scaler).
|
||||
*/
|
||||
struct drm_exynos_ipp_config {
|
||||
__u32 ops_id;
|
||||
__u32 flip;
|
||||
__u32 degree;
|
||||
__u32 fmt;
|
||||
struct drm_exynos_sz sz;
|
||||
struct drm_exynos_pos pos;
|
||||
};
|
||||
|
||||
enum drm_exynos_ipp_cmd {
|
||||
IPP_CMD_NONE,
|
||||
IPP_CMD_M2M,
|
||||
IPP_CMD_WB,
|
||||
IPP_CMD_OUTPUT,
|
||||
IPP_CMD_MAX,
|
||||
};
|
||||
|
||||
/**
|
||||
* A structure for ipp property.
|
||||
*
|
||||
* @config: source, destination config.
|
||||
* @cmd: definition of command.
|
||||
* @ipp_id: id of ipp driver.
|
||||
* @prop_id: id of property.
|
||||
* @refresh_rate: refresh rate.
|
||||
*/
|
||||
struct drm_exynos_ipp_property {
|
||||
struct drm_exynos_ipp_config config[EXYNOS_DRM_OPS_MAX];
|
||||
__u32 cmd;
|
||||
__u32 ipp_id;
|
||||
__u32 prop_id;
|
||||
__u32 refresh_rate;
|
||||
};
|
||||
|
||||
enum drm_exynos_ipp_buf_type {
|
||||
IPP_BUF_ENQUEUE,
|
||||
IPP_BUF_DEQUEUE,
|
||||
};
|
||||
|
||||
/**
|
||||
* A structure for ipp buffer operations.
|
||||
*
|
||||
* @ops_id: operation directions.
|
||||
* @buf_type: definition of buffer.
|
||||
* @prop_id: id of property.
|
||||
* @buf_id: id of buffer.
|
||||
* @handle: Y, Cb, Cr each planar handle.
|
||||
* @user_data: user data.
|
||||
*/
|
||||
struct drm_exynos_ipp_queue_buf {
|
||||
__u32 ops_id;
|
||||
__u32 buf_type;
|
||||
__u32 prop_id;
|
||||
__u32 buf_id;
|
||||
__u32 handle[EXYNOS_DRM_PLANAR_MAX];
|
||||
__u32 reserved;
|
||||
__u64 user_data;
|
||||
};
|
||||
|
||||
enum drm_exynos_ipp_ctrl {
|
||||
IPP_CTRL_PLAY,
|
||||
IPP_CTRL_STOP,
|
||||
IPP_CTRL_PAUSE,
|
||||
IPP_CTRL_RESUME,
|
||||
IPP_CTRL_MAX,
|
||||
};
|
||||
|
||||
/**
|
||||
* A structure for ipp start/stop operations.
|
||||
*
|
||||
* @prop_id: id of property.
|
||||
* @ctrl: definition of control.
|
||||
*/
|
||||
struct drm_exynos_ipp_cmd_ctrl {
|
||||
__u32 prop_id;
|
||||
__u32 ctrl;
|
||||
};
|
||||
|
||||
#define DRM_EXYNOS_GEM_CREATE 0x00
|
||||
#define DRM_EXYNOS_GEM_MAP 0x01
|
||||
/* Reserved 0x03 ~ 0x05 for exynos specific gem ioctl */
|
||||
@ -312,11 +146,7 @@ struct drm_exynos_ipp_cmd_ctrl {
|
||||
#define DRM_EXYNOS_G2D_SET_CMDLIST 0x21
|
||||
#define DRM_EXYNOS_G2D_EXEC 0x22
|
||||
|
||||
/* IPP - Image Post Processing */
|
||||
#define DRM_EXYNOS_IPP_GET_PROPERTY 0x30
|
||||
#define DRM_EXYNOS_IPP_SET_PROPERTY 0x31
|
||||
#define DRM_EXYNOS_IPP_QUEUE_BUF 0x32
|
||||
#define DRM_EXYNOS_IPP_CMD_CTRL 0x33
|
||||
/* Reserved 0x30 ~ 0x33 for obsolete Exynos IPP ioctls */
|
||||
|
||||
#define DRM_IOCTL_EXYNOS_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + \
|
||||
DRM_EXYNOS_GEM_CREATE, struct drm_exynos_gem_create)
|
||||
@ -335,18 +165,8 @@ struct drm_exynos_ipp_cmd_ctrl {
|
||||
#define DRM_IOCTL_EXYNOS_G2D_EXEC DRM_IOWR(DRM_COMMAND_BASE + \
|
||||
DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec)
|
||||
|
||||
#define DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + \
|
||||
DRM_EXYNOS_IPP_GET_PROPERTY, struct drm_exynos_ipp_prop_list)
|
||||
#define DRM_IOCTL_EXYNOS_IPP_SET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + \
|
||||
DRM_EXYNOS_IPP_SET_PROPERTY, struct drm_exynos_ipp_property)
|
||||
#define DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF DRM_IOWR(DRM_COMMAND_BASE + \
|
||||
DRM_EXYNOS_IPP_QUEUE_BUF, struct drm_exynos_ipp_queue_buf)
|
||||
#define DRM_IOCTL_EXYNOS_IPP_CMD_CTRL DRM_IOWR(DRM_COMMAND_BASE + \
|
||||
DRM_EXYNOS_IPP_CMD_CTRL, struct drm_exynos_ipp_cmd_ctrl)
|
||||
|
||||
/* EXYNOS specific events */
|
||||
#define DRM_EXYNOS_G2D_EVENT 0x80000000
|
||||
#define DRM_EXYNOS_IPP_EVENT 0x80000001
|
||||
|
||||
struct drm_exynos_g2d_event {
|
||||
struct drm_event base;
|
||||
@ -357,16 +177,6 @@ struct drm_exynos_g2d_event {
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct drm_exynos_ipp_event {
|
||||
struct drm_event base;
|
||||
__u64 user_data;
|
||||
__u32 tv_sec;
|
||||
__u32 tv_usec;
|
||||
__u32 prop_id;
|
||||
__u32 reserved;
|
||||
__u32 buf_id[EXYNOS_DRM_OPS_MAX];
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user