/* * Copyright (c) 2016 Freescale Semiconductor, Inc. * Copyright 2017 NXP * * SPDX-License-Identifier: GPL-2.0+ */ #ifndef IMXDPUV1_BE_H #define IMXDPUV1_BE_H struct fetch_unit { uint32_t in_pipeline; uint32_t control; uint32_t burst_buf; uint32_t buf_address; uint32_t buf_attributes; uint32_t buf_dimension; uint32_t color_bits; uint32_t color_shift; uint32_t layer_offset; uint32_t clip_offset; uint32_t clip_dimension; uint32_t const_color; uint32_t layer_property; uint32_t frame_dimension; uint32_t frame_resample; }; struct store_unit { uint32_t in_pipeline; uint32_t control; uint32_t burst_buf; uint32_t buf_address; uint32_t buf_attributes; uint32_t buf_dimension; uint32_t frame_offset; uint32_t color_bits; uint32_t color_shift; }; struct rop_unit { uint32_t in_pipeline; uint32_t control; }; struct matrix_unit { uint32_t in_pipeline; uint32_t control; }; struct hscaler_unit { uint32_t in_pipeline; uint32_t control; uint32_t setup1; uint32_t setup2; }; struct vscaler_unit { uint32_t in_pipeline; uint32_t control; uint32_t setup1; uint32_t setup2; uint32_t setup3; uint32_t setup4; uint32_t setup5; }; struct blitblend_unit { uint32_t in_pipeline; uint32_t control; uint32_t const_color; uint32_t red_func; uint32_t green_func; uint32_t blue_func; uint32_t alpha_func; uint32_t blend_mode1; uint32_t blend_mode2; }; struct engcfg_unit { uint32_t fetchpersp9_dynamic; uint32_t fetchdecode9_dynamic; uint32_t rop9_dynamic; uint32_t matrix9_dynamic; uint32_t hscaler9_dynamic; uint32_t vscaler9_dynamic; uint32_t blitblend9_dynamic; uint32_t store9_dynamic; }; struct be_blit_cfg { struct fetch_unit fetch_decode; struct fetch_unit fetch_persp; struct fetch_unit fetch_eco; struct store_unit store; struct rop_unit rop; struct matrix_unit matrix; struct hscaler_unit hscaler; struct vscaler_unit vscaler; struct blitblend_unit blitblend; struct engcfg_unit engcfg; }; /* PRIVATE DATA */ struct imxdpuv1_info { /*reg */ void __iomem *base; }; #define IMXDPUV1_IOC_MAGIC 'i' #define IMXDPUV1_IOC_BLIT _IOW(IMXDPUV1_IOC_MAGIC, 1, struct be_blit_cfg) #define IMXDPUV1_IOC_WAIT _IO(IMXDPUV1_IOC_MAGIC, 2) void imxdpuv1_be_irq_handler(int8_t imxdpuv1_id, int8_t irq); int imxdpuv1_be_init(int8_t imxdpuv1_id, void __iomem *imxdpuv1_base); int imxdpuv1_be_blit(struct imxdpuv1_info *imxdpu, struct be_blit_cfg *cfg); int imxdpuv1_be_wait_shadow_load(struct imxdpuv1_info *imxdpu); int imxdpuv1_be_wait_complete(struct imxdpuv1_info *imxdpu); int imxdpuv1_be_load(struct imxdpuv1_info *imxdpu, void __user *p); int imxdpuv1_be_wait(struct imxdpuv1_info *imxdpu); #endif