| /* | |
| * Copyright 2004-2013, 2015 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 | |
| */ | |
| /*! | |
| * @defgroup VPU Video Processor Unit Driver | |
| */ | |
| /*! | |
| * @file linux/mxc_vpu.h | |
| * | |
| * @brief VPU system initialization and file operation definition | |
| * | |
| * @ingroup VPU | |
| */ | |
| #ifndef __LINUX_MXC_VPU_H__ | |
| #define __LINUX_MXC_VPU_H__ | |
| #include <linux/fs.h> | |
| struct mxc_vpu_platform_data { | |
| bool iram_enable; | |
| int iram_size; | |
| void (*reset) (void); | |
| void (*pg) (int); | |
| }; | |
| struct vpu_mem_desc { | |
| u32 size; | |
| dma_addr_t phy_addr; | |
| u32 cpu_addr; /* cpu address to free the dma mem */ | |
| u32 virt_uaddr; /* virtual user space address */ | |
| }; | |
| #define VPU_IOC_MAGIC 'V' | |
| #define VPU_IOC_PHYMEM_ALLOC _IO(VPU_IOC_MAGIC, 0) | |
| #define VPU_IOC_PHYMEM_FREE _IO(VPU_IOC_MAGIC, 1) | |
| #define VPU_IOC_WAIT4INT _IO(VPU_IOC_MAGIC, 2) | |
| #define VPU_IOC_PHYMEM_DUMP _IO(VPU_IOC_MAGIC, 3) | |
| #define VPU_IOC_REG_DUMP _IO(VPU_IOC_MAGIC, 4) | |
| #define VPU_IOC_IRAM_SETTING _IO(VPU_IOC_MAGIC, 6) | |
| #define VPU_IOC_CLKGATE_SETTING _IO(VPU_IOC_MAGIC, 7) | |
| #define VPU_IOC_GET_WORK_ADDR _IO(VPU_IOC_MAGIC, 8) | |
| #define VPU_IOC_REQ_VSHARE_MEM _IO(VPU_IOC_MAGIC, 9) | |
| #define VPU_IOC_SYS_SW_RESET _IO(VPU_IOC_MAGIC, 11) | |
| #define VPU_IOC_GET_SHARE_MEM _IO(VPU_IOC_MAGIC, 12) | |
| #define VPU_IOC_QUERY_BITWORK_MEM _IO(VPU_IOC_MAGIC, 13) | |
| #define VPU_IOC_SET_BITWORK_MEM _IO(VPU_IOC_MAGIC, 14) | |
| #define VPU_IOC_PHYMEM_CHECK _IO(VPU_IOC_MAGIC, 15) | |
| #define VPU_IOC_LOCK_DEV _IO(VPU_IOC_MAGIC, 16) | |
| #define BIT_CODE_RUN 0x000 | |
| #define BIT_CODE_DOWN 0x004 | |
| #define BIT_INT_CLEAR 0x00C | |
| #define BIT_INT_STATUS 0x010 | |
| #define BIT_CUR_PC 0x018 | |
| #define BIT_INT_REASON 0x174 | |
| #define MJPEG_PIC_STATUS_REG 0x3004 | |
| #define MBC_SET_SUBBLK_EN 0x4A0 | |
| #define BIT_WORK_CTRL_BUF_BASE 0x100 | |
| #define BIT_WORK_CTRL_BUF_REG(i) (BIT_WORK_CTRL_BUF_BASE + i * 4) | |
| #define BIT_CODE_BUF_ADDR BIT_WORK_CTRL_BUF_REG(0) | |
| #define BIT_WORK_BUF_ADDR BIT_WORK_CTRL_BUF_REG(1) | |
| #define BIT_PARA_BUF_ADDR BIT_WORK_CTRL_BUF_REG(2) | |
| #define BIT_BIT_STREAM_CTRL BIT_WORK_CTRL_BUF_REG(3) | |
| #define BIT_FRAME_MEM_CTRL BIT_WORK_CTRL_BUF_REG(4) | |
| #define BIT_BIT_STREAM_PARAM BIT_WORK_CTRL_BUF_REG(5) | |
| #ifndef CONFIG_SOC_IMX6Q | |
| #define BIT_RESET_CTRL 0x11C | |
| #else | |
| #define BIT_RESET_CTRL 0x128 | |
| #endif | |
| /* i could be 0, 1, 2, 3 */ | |
| #define BIT_RD_PTR_BASE 0x120 | |
| #define BIT_RD_PTR_REG(i) (BIT_RD_PTR_BASE + i * 8) | |
| #define BIT_WR_PTR_REG(i) (BIT_RD_PTR_BASE + i * 8 + 4) | |
| /* i could be 0, 1, 2, 3 */ | |
| #define BIT_FRM_DIS_FLG_BASE (cpu_is_mx51() ? 0x150 : 0x140) | |
| #define BIT_FRM_DIS_FLG_REG(i) (BIT_FRM_DIS_FLG_BASE + i * 4) | |
| #define BIT_BUSY_FLAG 0x160 | |
| #define BIT_RUN_COMMAND 0x164 | |
| #define BIT_INT_ENABLE 0x170 | |
| #define BITVAL_PIC_RUN 8 | |
| #define VPU_SLEEP_REG_VALUE 10 | |
| #define VPU_WAKE_REG_VALUE 11 | |
| int vl2cc_init(u32 vl2cc_hw_base); | |
| void vl2cc_enable(void); | |
| void vl2cc_flush(void); | |
| void vl2cc_disable(void); | |
| void vl2cc_cleanup(void); | |
| int vl2cc_init(u32 vl2cc_hw_base); | |
| void vl2cc_enable(void); | |
| void vl2cc_flush(void); | |
| void vl2cc_disable(void); | |
| void vl2cc_cleanup(void); | |
| #endif |