/**************************************************************************** * * The MIT License (MIT) * * Copyright (c) 2020 VeriSilicon Holdings Co., Ltd. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * ***************************************************************************** * * The GPL License (GPL) * * Copyright (c) 2020 VeriSilicon Holdings Co., Ltd. * * 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; * ***************************************************************************** * * Note: This software is released under dual MIT and GPL licenses. A * recipient may use this file under the terms of either the MIT license or * GPL License. If you wish to use only one license not the other, you can * indicate your decision by deleting one of the above license notices in your * version of this file. * *****************************************************************************/ #ifndef _DWE_IOC_H_ #define _DWE_IOC_H_ #include "dw200_subdev.h" #include "dwe_regs.h" #include "vse_regs.h" enum { DWEIOC_RESET = 0x100, DWEIOC_S_PARAMS, DWEIOC_ENABLE_BUS, DWEIOC_DISABLE_BUS, DWEIOC_DISABLE_IRQ, DWEIOC_CLEAR_IRQ, DWEIOC_READ_IRQ, DWEIOC_START_DMA_READ, DWEIOC_SET_BUFFER, DWEIOC_SET_LUT, DWEIOC_START, // vse VSEIOC_RESET, VSEIOC_S_PARAMS, VSEIOC_U_BUFFER, VSEIOC_U_MI_INFO, VSEIOC_MASK_IRQ, VSEIOC_READ_IRQ, VSEIOC_CLEAR_IRQ, VSEIOC_START_DMA_READ, DW200IOC_LOCK, // 113 DW200IOC_UNLOCK, DW200IOC_UPDATECURR, DW200IOC_VISYS_RESET, DW200IOC_GET_RESERVE_ADDR, DW200IOC_RUNTIME_RESUME, DW200IOC_RUNTIME_SUSPEND, }; typedef struct dw_src_addr { u64 y_addr; u64 uv_addr; } dw_src_addr_t; long dw200_priv_ioctl(struct dw200_subdev *dev, unsigned int cmd, void *args); int dwe_reset(struct dw200_subdev *dev); int dwe_s_params(struct dw200_subdev *dev); int dwe_enable_bus(struct dw200_subdev *dev, bool enable); int dwe_disable_irq(struct dw200_subdev *dev); int dwe_clear_irq(struct dw200_subdev *dev, u32 mis); int dwe_clear_irq_1(struct dw200_subdev *dev); int dwe_read_irq(struct dw200_subdev *dev, u32 *ret); int dwe_start_dma_read(struct dw200_subdev *dev, dw_src_addr_t src_addr); int dwe_set_buffer(struct dw200_subdev *dev, u64 addr); int dwe_set_lut(struct dw200_subdev *dev, u64 addr); int vse_reset(struct dw200_subdev *dev); int vse_s_params(struct dw200_subdev *dev); int vse_update_mi_info(struct dw200_subdev *dev); int vse_mask_irq(struct dw200_subdev *dev, u32 mask); int vse_clear_irq(struct dw200_subdev *dev, u32 mis); int vse_read_irq(struct dw200_subdev *dev, u32 *ret); /* dma input pa */ int vse_start_dma_read(struct dw200_subdev *dev, u64 addr); /* mi output pa */ int vse_update_buffers(struct dw200_subdev *dev, u64 *addr); void visys_reset(void); #endif // _DWE_IOC_H_