blob: 042f116fcc5d70772abc840c2138320e37fe686d [file]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef __AM_MESON_VPU_H
#define __AM_MESON_VPU_H
#include <linux/amlogic/media/vout/vout_notify.h>
struct am_vout_mode {
char name[DRM_DISPLAY_MODE_LEN];
enum vmode_e mode;
int width, height, vrefresh;
unsigned int flags;
};
struct meson_vpu_crtc_func {
void (*init_default_reg)(void);
};
struct meson_vpu_data {
struct meson_vpu_crtc_func *crtc_func;
struct meson_vpu_pipeline_ops *pipe_ops;
struct meson_vpu_block_ops *osd_ops;
struct meson_vpu_block_ops *afbc_ops;
struct meson_vpu_block_ops *scaler_ops;
struct meson_vpu_block_ops *osdblend_ops;
struct meson_vpu_block_ops *hdr_ops;
struct meson_vpu_block_ops *dv_ops;
struct meson_vpu_block_ops *postblend_ops;
struct meson_vpu_block_ops *video_ops;
struct meson_vpu_block_ops *slice2ppc_ops;
int enc_method;
int slice_mode;
};
enum meson_vout_event {
EVENT_MODE_SET_START = 0,
EVENT_MODE_SET_FINISH = 1,
};
void meson_vout_notify_mode_change(int idx,
enum vmode_e mode, enum meson_vout_event event);
void meson_vout_update_mode_name(int idx, char *modename, char *ctx);
/*api in vout_server, for android-compatible.*/
int vout_set_uevent(unsigned int vout_event, int val);
int vout2_set_uevent(unsigned int vout_event, int val);
int vout3_set_uevent(unsigned int vout_event, int val);
int set_vout_mode_name(char *name);
int set_vout2_mode_name(char *name);
int set_vout3_mode_name(char *name);
#endif /* __AM_MESON_VPU_H */