• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3   * isp500_reg_cfg.c
4   *
5   * Copyright (c) 2007-2017 Allwinnertech Co., Ltd.
6   *
7   * This software is licensed under the terms of the GNU General Public
8   * License version 2, as published by the Free Software Foundation, and
9   * may be copied, distributed, and modified under those terms.
10   *
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU General Public License for more details.
15   *
16   */
17 
18 #include <linux/io.h>
19 #include <linux/kernel.h>
20 #include "isp500_reg.h"
21 #include "isp500_reg_cfg.h"
22 
23 #define ISP500_MAX_NUM 2
24 
25 /*
26  *
27  *  Load ISP register variables
28  *
29  */
30 struct isp500_reg {
31 	ISP_FE_CFG_REG_t *isp_fe_cfg;
32 	ISP_FE_CTRL_REG_t *isp_fe_ctrl;
33 	ISP_FE_INT_EN_REG_t *isp_fe_int_en;
34 	ISP_FE_INT_STA_REG_t *isp_fe_int_sta;
35 	ISP_DBG_OUTPUT_REG_t *isp_dbg_output;
36 	ISP_LINE_INT_NUM_REG_t *isp_line_int_num;
37 	ISP_ROT_OF_CFG_REG_t *isp_rot_of_cfg;
38 	ISP_REG_LOAD_ADDR_REG_t *isp_reg_load_addr;
39 	ISP_REG_SAVED_ADDR_REG_t *isp_reg_saved_addr;
40 	ISP_LUT_LENS_GAMMA_ADDR_REG_t *isp_lut_lens_gamma_addr;
41 	ISP_DRC_ADDR_REG_t *isp_drc_addr;
42 	ISP_STATISTICS_ADDR_REG_t *isp_statistics_addr;
43 	ISP_VER_CFG_REG_t *isp_ver_cfg;
44 	ISP_SRAM_RW_OFFSET_REG_t *isp_sram_rw_offset;
45 	ISP_SRAM_RW_DATA_REG_t *isp_sram_rw_data;
46 	unsigned int *isp_s0_fmerr_cnt;
47 	unsigned int *isp_s0_hb_cnt;
48 
49 	ISP_FE_CTRL_REG_t *isp_update_flag;
50 	ISP_EN_REG_t *isp_en;
51 	ISP_MODE_REG_t *isp_mode;
52 	ISP_OB_SIZE_REG_t *isp_ob_size;
53 	ISP_OB_VALID_REG_t *isp_ob_valid;
54 	ISP_OB_VALID_START_REG_t *isp_ob_valid_start;
55 
56 	unsigned int *isp_wdr_exp_addr0;
57 	unsigned int *isp_wdr_exp_addr1;
58 	unsigned int *isp_d3d_rec_addr0;
59 	unsigned int *isp_d3d_rec_addr1;
60 };
61 
62 struct isp500_reg isp_regs[ISP500_MAX_NUM];
63 
64 /*
65  * Register Address
66  */
67 
bsp_isp_map_reg_addr(unsigned long id,unsigned long isp_reg_base)68 void bsp_isp_map_reg_addr(unsigned long id, unsigned long isp_reg_base)
69 {
70 	isp_regs[id].isp_fe_cfg = (ISP_FE_CFG_REG_t *) (isp_reg_base + ISP_FE_CFG_REG_OFF);
71 	isp_regs[id].isp_fe_ctrl = (ISP_FE_CTRL_REG_t *) (isp_reg_base + ISP_FE_CTRL_REG_OFF);
72 	isp_regs[id].isp_fe_int_en = (ISP_FE_INT_EN_REG_t *) (isp_reg_base + ISP_FE_INT_EN_REG_OFF);
73 	isp_regs[id].isp_fe_int_sta = (ISP_FE_INT_STA_REG_t *) (isp_reg_base + ISP_FE_INT_STA_REG_OFF);
74 	isp_regs[id].isp_dbg_output = (ISP_DBG_OUTPUT_REG_t *) (isp_reg_base + ISP_DBG_OUTPUT_REG_OFF);
75 	isp_regs[id].isp_line_int_num = (ISP_LINE_INT_NUM_REG_t *) (isp_reg_base + ISP_LINE_INT_NUM_REG_OFF);
76 	isp_regs[id].isp_rot_of_cfg = (ISP_ROT_OF_CFG_REG_t *) (isp_reg_base + ISP_ROT_OF_CFG_REG_OFF);
77 	isp_regs[id].isp_reg_load_addr = (ISP_REG_LOAD_ADDR_REG_t *) (isp_reg_base + ISP_REG_LOAD_ADDR_REG_OFF);
78 	isp_regs[id].isp_reg_saved_addr = (ISP_REG_SAVED_ADDR_REG_t *) (isp_reg_base + ISP_REG_SAVED_ADDR_REG_OFF);
79 
80 	isp_regs[id].isp_lut_lens_gamma_addr = (ISP_LUT_LENS_GAMMA_ADDR_REG_t *) (isp_reg_base + ISP_LUT_LENS_GAMMA_ADDR_REG_OFF);
81 	isp_regs[id].isp_drc_addr = (ISP_DRC_ADDR_REG_t *) (isp_reg_base + ISP_DRC_ADDR_REG_OFF);
82 	isp_regs[id].isp_statistics_addr = (ISP_STATISTICS_ADDR_REG_t *) (isp_reg_base + ISP_STATISTICS_ADDR_REG_OFF);
83 	isp_regs[id].isp_ver_cfg = (ISP_VER_CFG_REG_t *) (isp_reg_base + ISP_VER_CFG_REG_OFF);
84 
85 	isp_regs[id].isp_sram_rw_offset = (ISP_SRAM_RW_OFFSET_REG_t *) (isp_reg_base + ISP_SRAM_RW_OFFSET_REG_OFF);
86 	isp_regs[id].isp_sram_rw_data = (ISP_SRAM_RW_DATA_REG_t *) (isp_reg_base + ISP_SRAM_RW_DATA_REG_OFF);
87 
88 	isp_regs[id].isp_s0_fmerr_cnt = (unsigned int *) (isp_reg_base + 0x5c);
89 	isp_regs[id].isp_s0_hb_cnt = (unsigned int *) (isp_reg_base + 0x60);
90 #ifdef USE_DEF_PARA
91 	isp_regs[id].isp_en = (ISP_EN_REG_t *) (isp_reg_base + ISP_EN_REG_OFF);
92 	isp_regs[id].isp_mode = (ISP_MODE_REG_t *) (isp_reg_base + ISP_MODE_REG_OFF);
93 	isp_regs[id].isp_ob_size = (ISP_OB_SIZE_REG_t *) (isp_reg_base + ISP_OB_SIZE_REG_OFF);
94 	isp_regs[id].isp_ob_valid = (ISP_OB_VALID_REG_t *) (isp_reg_base + ISP_OB_VALID_REG_OFF);
95 	isp_regs[id].isp_ob_valid_start = (ISP_OB_VALID_START_REG_t *) (isp_reg_base + ISP_OB_VALID_START_REG_OFF);
96 
97 	isp_regs[id].isp_wdr_exp_addr0 = (unsigned int *) (isp_reg_base + ISP_WDR_EXP_ADDR0_REG);
98 	isp_regs[id].isp_wdr_exp_addr1 = (unsigned int *) (isp_reg_base + ISP_WDR_EXP_ADDR1_REG);
99 	isp_regs[id].isp_d3d_rec_addr0 = (unsigned int *) (isp_reg_base + ISP_D3D_REC_ADDR0_REG);
100 	isp_regs[id].isp_d3d_rec_addr1 = (unsigned int *) (isp_reg_base + ISP_D3D_REC_ADDR1_REG);
101 #endif
102 }
103 
104 /*
105  * Load DRAM Register Address
106  */
107 
bsp_isp_map_load_dram_addr(unsigned long id,unsigned long isp_load_dram_base)108 void bsp_isp_map_load_dram_addr(unsigned long id, unsigned long isp_load_dram_base)
109 {
110 #ifndef USE_DEF_PARA
111 	isp_regs[id].isp_update_flag = (ISP_FE_CTRL_REG_t *) (isp_load_dram_base + ISP_FE_CTRL_REG_OFF);
112 	isp_regs[id].isp_en = (ISP_EN_REG_t *) (isp_load_dram_base + ISP_EN_REG_OFF);
113 	isp_regs[id].isp_mode = (ISP_MODE_REG_t *) (isp_load_dram_base + ISP_MODE_REG_OFF);
114 	isp_regs[id].isp_ob_size = (ISP_OB_SIZE_REG_t *) (isp_load_dram_base + ISP_OB_SIZE_REG_OFF);
115 	isp_regs[id].isp_ob_valid = (ISP_OB_VALID_REG_t *) (isp_load_dram_base + ISP_OB_VALID_REG_OFF);
116 	isp_regs[id].isp_ob_valid_start = (ISP_OB_VALID_START_REG_t *) (isp_load_dram_base + ISP_OB_VALID_START_REG_OFF);
117 
118 	isp_regs[id].isp_wdr_exp_addr0 = (unsigned int *) (isp_load_dram_base + ISP_WDR_EXP_ADDR0_REG);
119 	isp_regs[id].isp_wdr_exp_addr1 = (unsigned int *) (isp_load_dram_base + ISP_WDR_EXP_ADDR1_REG);
120 	isp_regs[id].isp_d3d_rec_addr0 = (unsigned int *) (isp_load_dram_base + ISP_D3D_REC_ADDR0_REG);
121 	isp_regs[id].isp_d3d_rec_addr1 = (unsigned int *) (isp_load_dram_base + ISP_D3D_REC_ADDR1_REG);
122 #endif
123 }
124 
125 /*
126  * Saved DRAM Register Address
127  */
bsp_isp_map_saved_dram_addr(unsigned long id,unsigned long base)128 void bsp_isp_map_saved_dram_addr(unsigned long id, unsigned long base)
129 {
130 
131 }
132 
bsp_isp_enable(unsigned long id,int enable)133 void bsp_isp_enable(unsigned long id, int enable)
134 {
135 	isp_regs[id].isp_fe_cfg->bits.isp_enable = enable;
136 }
137 
bsp_isp_ch_enable(unsigned long id,int ch,int enable)138 void bsp_isp_ch_enable(unsigned long id, int ch, int enable)
139 {
140 	switch (ch) {
141 	case 0:
142 		isp_regs[id].isp_fe_cfg->bits.isp_ch0_en = enable;
143 		break;
144 	case 1:
145 		isp_regs[id].isp_fe_cfg->bits.isp_ch1_en = enable;
146 		break;
147 	case 2:
148 		isp_regs[id].isp_fe_cfg->bits.isp_ch2_en = enable;
149 		break;
150 	case 3:
151 		isp_regs[id].isp_fe_cfg->bits.isp_ch3_en = enable;
152 		break;
153 	default:
154 		isp_regs[id].isp_fe_cfg->bits.isp_ch0_en = enable;
155 		break;
156 	}
157 }
158 
bsp_isp_wdr_ch_seq(unsigned long id,int seq)159 void bsp_isp_wdr_ch_seq(unsigned long id, int seq)
160 {
161 	switch (seq) {
162 	case 0:
163 		isp_regs[id].isp_fe_cfg->bits.wdr_ch_seq = 0;
164 		break;
165 	case 1:
166 		isp_regs[id].isp_fe_cfg->bits.wdr_ch_seq = 1;
167 		break;
168 	default:
169 		isp_regs[id].isp_fe_cfg->bits.wdr_ch_seq = 0;
170 		break;
171 	}
172 }
bsp_isp_set_para_ready(unsigned long id,enum ready_flag ready)173 void bsp_isp_set_para_ready(unsigned long id, enum ready_flag ready)
174 {
175 #ifndef USE_DEF_PARA
176 	if (ready == PARA_READY)
177 		isp_regs[id].isp_fe_ctrl->bits.para_ready = 1;
178 	else
179 		isp_regs[id].isp_fe_ctrl->bits.para_ready = 0;
180 #endif
181 }
182 
bsp_isp_get_para_ready(unsigned long id)183 unsigned int bsp_isp_get_para_ready(unsigned long id)
184 {
185 	return isp_regs[id].isp_fe_ctrl->bits.para_ready;
186 }
187 
bsp_isp_update_table(unsigned long id,unsigned short table_update)188 void bsp_isp_update_table(unsigned long id, unsigned short table_update)
189 {
190 	if (table_update & LINEAR_UPDATE)
191 		isp_regs[id].isp_fe_ctrl->bits.linear_update = 1;
192 	else
193 		isp_regs[id].isp_fe_ctrl->bits.linear_update = 0;
194 
195 	if (table_update & LENS_UPDATE)
196 		isp_regs[id].isp_fe_ctrl->bits.lens_update = 1;
197 	else
198 		isp_regs[id].isp_fe_ctrl->bits.lens_update = 0;
199 
200 	if (table_update & GAMMA_UPDATE)
201 		isp_regs[id].isp_fe_ctrl->bits.gamma_update = 1;
202 	else
203 		isp_regs[id].isp_fe_ctrl->bits.gamma_update = 0;
204 
205 	if (table_update & DRC_UPDATE)
206 		isp_regs[id].isp_fe_ctrl->bits.drc_update = 1;
207 	else
208 		isp_regs[id].isp_fe_ctrl->bits.drc_update = 0;
209 
210 	if (table_update & DISC_UPDATE)
211 		isp_regs[id].isp_fe_ctrl->bits.disc_update = 1;
212 	else
213 		isp_regs[id].isp_fe_ctrl->bits.disc_update = 0;
214 
215 	if (table_update & SATU_UPDATE)
216 		isp_regs[id].isp_fe_ctrl->bits.satu_update = 1;
217 	else
218 		isp_regs[id].isp_fe_ctrl->bits.satu_update = 0;
219 
220 	if (table_update & WDR_UPDATE)
221 		isp_regs[id].isp_fe_ctrl->bits.wdr_update = 1;
222 	else
223 		isp_regs[id].isp_fe_ctrl->bits.wdr_update = 0;
224 
225 	if (table_update & TDNF_UPDATE)
226 		isp_regs[id].isp_fe_ctrl->bits.tdnf_update = 1;
227 	else
228 		isp_regs[id].isp_fe_ctrl->bits.tdnf_update = 0;
229 
230 	if (table_update & PLTM_UPDATE)
231 		isp_regs[id].isp_fe_ctrl->bits.pltm_update = 1;
232 	else
233 		isp_regs[id].isp_fe_ctrl->bits.pltm_update = 0;
234 
235 	if (table_update & CEM_UPDATE)
236 		isp_regs[id].isp_fe_ctrl->bits.cem_update = 1;
237 	else
238 		isp_regs[id].isp_fe_ctrl->bits.cem_update = 0;
239 
240 	if (table_update & CONTRAST_UPDATE)
241 		isp_regs[id].isp_fe_ctrl->bits.contrast_update = 1;
242 	else
243 		isp_regs[id].isp_fe_ctrl->bits.contrast_update = 0;
244 }
bsp_isp_capture_start(unsigned long id)245 void bsp_isp_capture_start(unsigned long id)
246 {
247 	isp_regs[id].isp_fe_ctrl->bits.cap_en = 1;
248 }
249 
bsp_isp_capture_stop(unsigned long id)250 void bsp_isp_capture_stop(unsigned long id)
251 {
252 	isp_regs[id].isp_fe_ctrl->bits.cap_en = 0;
253 }
254 
bsp_isp_irq_enable(unsigned long id,unsigned int irq_flag)255 void bsp_isp_irq_enable(unsigned long id, unsigned int irq_flag)
256 {
257 	isp_regs[id].isp_fe_int_en->dwval |= irq_flag;
258 }
259 
bsp_isp_irq_disable(unsigned long id,unsigned int irq_flag)260 void bsp_isp_irq_disable(unsigned long id, unsigned int irq_flag)
261 {
262 	isp_regs[id].isp_fe_int_en->dwval &= ~irq_flag;
263 }
264 
bsp_isp_int_get_enable(unsigned long id)265 int bsp_isp_int_get_enable(unsigned long id)
266 {
267 	return isp_regs[id].isp_fe_int_en->dwval;
268 }
269 
bsp_isp_get_irq_status(unsigned long id,unsigned int irq_flag)270 unsigned int bsp_isp_get_irq_status(unsigned long id, unsigned int irq_flag)
271 {
272 	return isp_regs[id].isp_fe_int_sta->dwval & irq_flag;
273 }
274 
bsp_isp_clr_irq_status(unsigned long id,unsigned int irq_flag)275 void bsp_isp_clr_irq_status(unsigned long id, unsigned int irq_flag)
276 {
277 	isp_regs[id].isp_fe_int_sta->dwval = irq_flag;
278 }
279 
bsp_isp_debug_output_cfg(unsigned long id,int enable,int output_sel)280 void bsp_isp_debug_output_cfg(unsigned long id, int enable, int output_sel)
281 {
282 	isp_regs[id].isp_dbg_output->bits.debug_en = enable;
283 	isp_regs[id].isp_dbg_output->bits.debug_sel = output_sel;
284 }
285 
bsp_isp_set_para_ready_mode(unsigned long id,int enable)286 void bsp_isp_set_para_ready_mode(unsigned long id, int enable)
287 {
288 }
289 
bsp_isp_set_line_int_num(unsigned long id,unsigned int line_num)290 void bsp_isp_set_line_int_num(unsigned long id, unsigned int line_num)
291 {
292 	isp_regs[id].isp_line_int_num->bits.line_int_num = line_num;
293 }
bsp_isp_set_last_blank_cycle(unsigned long id,unsigned int last_blank_cycle)294 void bsp_isp_set_last_blank_cycle(unsigned long id, unsigned int last_blank_cycle)
295 {
296 	isp_regs[id].isp_line_int_num->bits.last_blank_cycle = last_blank_cycle;
297 }
298 
bsp_isp_set_speed_mode(unsigned long id,unsigned int speed_mode)299 void bsp_isp_set_speed_mode(unsigned long id, unsigned int speed_mode)
300 {
301 	isp_regs[id].isp_rot_of_cfg->bits.speed_mode = speed_mode;
302 }
303 
bsp_isp_set_load_addr(unsigned long id,unsigned long addr)304 void bsp_isp_set_load_addr(unsigned long id, unsigned long addr)
305 {
306 	isp_regs[id].isp_reg_load_addr->dwval = addr >> ISP_ADDR_BIT_R_SHIFT;
307 }
308 
bsp_isp_set_saved_addr(unsigned long id,unsigned long addr)309 void bsp_isp_set_saved_addr(unsigned long id, unsigned long addr)
310 {
311 	isp_regs[id].isp_reg_saved_addr->dwval = addr >> ISP_ADDR_BIT_R_SHIFT;
312 }
313 
bsp_isp_set_table_addr(unsigned long id,enum isp_input_tables table,unsigned long addr)314 void bsp_isp_set_table_addr(unsigned long id, enum isp_input_tables table,
315 				      unsigned long addr)
316 {
317 	switch (table) {
318 	case LENS_GAMMA_TABLE:
319 		isp_regs[id].isp_lut_lens_gamma_addr->dwval = addr >> ISP_ADDR_BIT_R_SHIFT;
320 		break;
321 	case DRC_TABLE:
322 		isp_regs[id].isp_drc_addr->dwval = addr >> ISP_ADDR_BIT_R_SHIFT;
323 		break;
324 	default:
325 		break;
326 	}
327 }
328 
bsp_isp_set_statistics_addr(unsigned long id,unsigned long addr)329 void bsp_isp_set_statistics_addr(unsigned long id, unsigned long addr)
330 {
331 	isp_regs[id].isp_statistics_addr->dwval = addr >> ISP_ADDR_BIT_R_SHIFT;
332 }
333 
bsp_isp_get_isp_ver(unsigned long id,unsigned int * major,unsigned int * minor)334 unsigned int bsp_isp_get_isp_ver(unsigned long id, unsigned int *major, unsigned int *minor)
335 {
336 	*major = isp_regs[id].isp_ver_cfg->bits.major_ver;
337 	*minor = isp_regs[id].isp_ver_cfg->bits.minor_ver;
338 	return isp_regs[id].isp_ver_cfg->dwval;
339 }
340 
bsp_isp_ver_read_en(unsigned long id,unsigned int en)341 void bsp_isp_ver_read_en(unsigned long id, unsigned int en)
342 {
343 	isp_regs[id].isp_fe_cfg->bits.isp_ver_read_en = en;
344 }
345 
bsp_isp_get_s0_ch_fmerr_cnt(unsigned long id,struct isp_size * size)346 void bsp_isp_get_s0_ch_fmerr_cnt(unsigned long id, struct isp_size *size)
347 {
348 	int input = readl(isp_regs[id].isp_s0_fmerr_cnt);
349 	size->width = input & 0xffff;
350 	size->height = (input >> 16) & 0xffff;
351 }
352 
bsp_isp_get_s0_ch_hb_cnt(unsigned long id,unsigned int * hb_max,unsigned int * hb_min)353 void bsp_isp_get_s0_ch_hb_cnt(unsigned long id, unsigned int *hb_max, unsigned int *hb_min)
354 {
355 	int blank = readl(isp_regs[id].isp_s0_hb_cnt);
356 	*hb_max = (blank >> 16) & 0xffff;
357 	*hb_min = blank & 0xffff;
358 }
359 
bsp_isp_module_enable(unsigned long id,unsigned int modules)360 void bsp_isp_module_enable(unsigned long id, unsigned int modules)
361 {
362 	isp_regs[id].isp_en->dwval |= modules;
363 }
364 
bsp_isp_module_disable(unsigned long id,unsigned int modules)365 void bsp_isp_module_disable(unsigned long id, unsigned int modules)
366 {
367 	isp_regs[id].isp_en->dwval &= ~modules;
368 }
369 
bsp_isp_set_wdr_mode(unsigned long id,unsigned int wdr_mode)370 void bsp_isp_set_wdr_mode(unsigned long id, unsigned int wdr_mode)
371 {
372 	if (wdr_mode == 1) {/*dol*/
373 		isp_regs[id].isp_mode->bits.wdr_mode = 0;
374 		isp_regs[id].isp_mode->bits.wdr_dol_mode = 1;
375 	} else if (wdr_mode == 2) {/*comanding*/
376 		isp_regs[id].isp_mode->bits.wdr_mode = 1;
377 		isp_regs[id].isp_mode->bits.wdr_dol_mode = 1;
378 	} else {
379 		isp_regs[id].isp_mode->bits.wdr_mode = 0;
380 		isp_regs[id].isp_mode->bits.wdr_dol_mode = 0;
381 	}
382 }
383 
bsp_isp_set_input_fmt(unsigned long id,unsigned int fmt)384 void bsp_isp_set_input_fmt(unsigned long id, unsigned int fmt)
385 {
386 	isp_regs[id].isp_mode->bits.input_fmt = fmt;
387 }
388 
bsp_isp_set_ob(unsigned long id,struct isp_size * black,struct isp_size * valid,struct coor * xy)389 void bsp_isp_set_ob(unsigned long id, struct isp_size *black,
390 		struct isp_size *valid, struct coor *xy)
391 {
392 	isp_regs[id].isp_ob_size->bits.ob_width = black->width;
393 	isp_regs[id].isp_ob_size->bits.ob_height = black->height;
394 	isp_regs[id].isp_ob_valid->bits.ob_valid_width = valid->width;
395 	isp_regs[id].isp_ob_valid->bits.ob_valid_height = valid->height;
396 	isp_regs[id].isp_ob_valid_start->bits.ob_hor_start = xy->hor;
397 	isp_regs[id].isp_ob_valid_start->bits.ob_ver_start = xy->ver;
398 }
399 
bsp_isp_set_size(unsigned long id,struct isp_size_settings * size)400 void bsp_isp_set_size(unsigned long id, struct isp_size_settings *size)
401 {
402 	bsp_isp_set_ob(id, &size->ob_black, &size->ob_valid, &size->ob_start);
403 }
404 
bsp_isp_load_update_flag(unsigned long id)405 unsigned int bsp_isp_load_update_flag(unsigned long id)
406 {
407 	return isp_regs[id].isp_update_flag->dwval;
408 }
409 
bsp_isp_set_wdr_addr0(unsigned long id,dma_addr_t addr)410 void bsp_isp_set_wdr_addr0(unsigned long id, dma_addr_t addr)
411 {
412 	writel(addr >> ISP_ADDR_BIT_R_SHIFT, isp_regs[id].isp_wdr_exp_addr0);
413 }
414 
bsp_isp_set_wdr_addr1(unsigned long id,dma_addr_t addr)415 void bsp_isp_set_wdr_addr1(unsigned long id, dma_addr_t addr)
416 {
417 	writel(addr >> ISP_ADDR_BIT_R_SHIFT, isp_regs[id].isp_wdr_exp_addr1);
418 }
419 
bsp_isp_set_d3d_addr0(unsigned long id,dma_addr_t addr)420 void bsp_isp_set_d3d_addr0(unsigned long id, dma_addr_t addr)
421 {
422 	writel(addr >> ISP_ADDR_BIT_R_SHIFT, isp_regs[id].isp_d3d_rec_addr0);
423 }
424 
bsp_isp_set_d3d_addr1(unsigned long id,dma_addr_t addr)425 void bsp_isp_set_d3d_addr1(unsigned long id, dma_addr_t addr)
426 {
427 	writel(addr >> ISP_ADDR_BIT_R_SHIFT, isp_regs[id].isp_d3d_rec_addr1);
428 }
429 
bsp_isp_set_fifo_mode(unsigned long id,unsigned int mode)430 void bsp_isp_set_fifo_mode(unsigned long id, unsigned int mode)
431 {
432  }
433 
bsp_isp_min_ddr_size(unsigned long id,unsigned int size)434 void bsp_isp_min_ddr_size(unsigned long id, unsigned int size)
435 {
436 }
437 
bsp_isp_fifo_raw_write(unsigned long id,unsigned int depth)438 void bsp_isp_fifo_raw_write(unsigned long id, unsigned int depth)
439 {
440 }
441 
bsp_isp_k_min_ddr_size(unsigned long id,unsigned int size)442 void bsp_isp_k_min_ddr_size(unsigned long id, unsigned int size)
443 {
444 }
445 
446