1 /* 2 * linux-5.4/drivers/media/platform/sunxi-vin/top_reg.h 3 * 4 * Copyright (c) 2007-2017 Allwinnertech Co., Ltd. 5 * 6 * This software is licensed under the terms of the GNU General Public 7 * License version 2, as published by the Free Software Foundation, and 8 * may be copied, distributed, and modified under those terms. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 */ 16 17 #ifndef __CSIC__TOP__REG__H__ 18 #define __CSIC__TOP__REG__H__ 19 20 #include <linux/types.h> 21 22 #define MAX_CSIC_TOP_NUM 2 23 24 /*register value*/ 25 26 /*register data struct*/ 27 28 struct csic_feature_list { 29 unsigned int dma_num; 30 unsigned int vipp_num; 31 unsigned int isp_num; 32 unsigned int ncsi_num; 33 unsigned int mcsi_num; 34 unsigned int parser_num; 35 }; 36 37 struct csic_version { 38 unsigned int ver_big; 39 unsigned int ver_small; 40 }; 41 42 enum csic_mulp_cs { 43 CSIC_MULF_DMA0_CS = 0x1, 44 CSIC_MULF_DMA1_CS = 0x2, 45 CSIC_MULF_DMA2_CS = 0x4, 46 CSIC_MULF_DMA3_CS = 0x8, 47 CSIC_MULF_DMA4_CS = 0x10, 48 CSIC_MULF_DMA5_CS = 0x20, 49 CSIC_MULF_DMA6_CS = 0x40, 50 CSIC_MULF_DMA7_CS = 0x80, 51 CSIC_MULF_ALL_CS = 0xFF, 52 }; 53 54 enum csis_mulp_int { 55 MULF_DONE = 0X1, 56 MULF_ERR = 0x2, 57 MULF_ALL = 0x3, 58 }; 59 60 struct cisc_mulp_int_status { 61 bool mulf_done; 62 bool mulf_err; 63 }; 64 65 /* 66 * functions about top register 67 */ 68 int csic_top_set_base_addr(unsigned int sel, unsigned long addr); 69 void csic_top_enable(unsigned int sel); 70 void csic_top_disable(unsigned int sel); 71 void csic_isp_bridge_enable(unsigned int sel); 72 void csic_isp_bridge_disable(unsigned int sel); 73 void csic_top_sram_pwdn(unsigned int sel, unsigned int en); 74 void csic_top_version_read_en(unsigned int sel, unsigned int en); 75 void csic_isp_input_select(unsigned int sel, unsigned int isp, unsigned int in, 76 unsigned int psr, unsigned int ch); 77 void csic_vipp_input_select(unsigned int sel, unsigned int vipp, 78 unsigned int isp, unsigned int ch); 79 void csic_dma_input_select(unsigned int sel, unsigned int dma, 80 unsigned int parser, unsigned int ch); 81 void csic_feature_list_get(unsigned int sel, struct csic_feature_list *fl); 82 void csic_version_get(unsigned int sel, struct csic_version *v); 83 void csic_mbus_req_mex_set(unsigned int sel, unsigned int data); 84 void csic_mulp_mode_en(unsigned int sel, unsigned int en); 85 void csic_mulp_dma_cs(unsigned int sel, enum csic_mulp_cs cs); 86 void csic_mulp_int_enable(unsigned int sel, enum csis_mulp_int interrupt); 87 void csic_mulp_int_disable(unsigned int sel, enum csis_mulp_int interrupt); 88 void csic_mulp_int_get_status(unsigned int sel, struct cisc_mulp_int_status *status); 89 void csic_mulp_int_clear_status(unsigned int sel, enum csis_mulp_int interrupt); 90 void csic_ptn_generation_en(unsigned int sel, unsigned int en); 91 void csic_ptn_control(unsigned int sel, int mode, int dw, int port); 92 void csic_ptn_length(unsigned int sel, unsigned int len); 93 void csic_ptn_addr(unsigned int sel, unsigned long dma_addr); 94 void csic_ptn_size(unsigned int sel, unsigned int w, unsigned int h); 95 96 /* 97 * functions about ccu register 98 */ 99 int csic_ccu_set_base_addr(unsigned long addr); 100 void csic_ccu_clk_gating_enable(void); 101 void csic_ccu_clk_gating_disable(void); 102 void csic_ccu_mcsi_clk_mode(unsigned int mode); 103 void csic_ccu_mcsi_combo_clk_en(unsigned int sel, unsigned int en); 104 void csic_ccu_mcsi_mipi_clk_en(unsigned int sel, unsigned int en); 105 void csic_ccu_mcsi_parser_clk_en(unsigned int sel, unsigned int en); 106 void csic_ccu_misp_isp_clk_en(unsigned int sel, unsigned int en); 107 void csic_ccu_mcsi_post_clk_enable(unsigned int sel); 108 void csic_ccu_mcsi_post_clk_disable(unsigned int sel); 109 void csic_ccu_bk_clk_en(unsigned int sel, unsigned int en); 110 void csic_ccu_vipp_clk_en(unsigned int sel, unsigned int en); 111 112 #endif /* __CSIC__TOP__REG__H__ */ 113