• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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