Lines Matching refs:solo_dev

38 static void solo_vin_config(struct solo_dev *solo_dev)  in solo_vin_config()  argument
40 solo_dev->vin_hstart = 8; in solo_vin_config()
41 solo_dev->vin_vstart = 2; in solo_vin_config()
43 solo_reg_write(solo_dev, SOLO_SYS_VCLK, in solo_vin_config()
54 solo_reg_write(solo_dev, SOLO_VI_ACT_I_P, in solo_vin_config()
55 SOLO_VI_H_START(solo_dev->vin_hstart) | in solo_vin_config()
56 SOLO_VI_V_START(solo_dev->vin_vstart) | in solo_vin_config()
57 SOLO_VI_V_STOP(solo_dev->vin_vstart + in solo_vin_config()
58 solo_dev->video_vsize)); in solo_vin_config()
60 solo_reg_write(solo_dev, SOLO_VI_ACT_I_S, in solo_vin_config()
61 SOLO_VI_H_START(solo_dev->vout_hstart) | in solo_vin_config()
62 SOLO_VI_V_START(solo_dev->vout_vstart) | in solo_vin_config()
63 SOLO_VI_V_STOP(solo_dev->vout_vstart + in solo_vin_config()
64 solo_dev->video_vsize)); in solo_vin_config()
66 solo_reg_write(solo_dev, SOLO_VI_ACT_P, in solo_vin_config()
71 solo_reg_write(solo_dev, SOLO_VI_CH_FORMAT, in solo_vin_config()
75 if (solo_dev->type == SOLO_DEV_6010) in solo_vin_config()
76 solo_reg_write(solo_dev, SOLO_VI_FMT_CFG, 0); in solo_vin_config()
78 solo_reg_write(solo_dev, SOLO_VI_FMT_CFG, 16 << 22); in solo_vin_config()
80 solo_reg_write(solo_dev, SOLO_VI_PAGE_SW, 2); in solo_vin_config()
82 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_NTSC) { in solo_vin_config()
83 solo_reg_write(solo_dev, SOLO_VI_PB_CONFIG, in solo_vin_config()
85 solo_reg_write(solo_dev, SOLO_VI_PB_RANGE_HV, in solo_vin_config()
87 solo_reg_write(solo_dev, SOLO_VI_PB_ACT_V, in solo_vin_config()
91 solo_reg_write(solo_dev, SOLO_VI_PB_CONFIG, in solo_vin_config()
93 solo_reg_write(solo_dev, SOLO_VI_PB_RANGE_HV, in solo_vin_config()
95 solo_reg_write(solo_dev, SOLO_VI_PB_ACT_V, in solo_vin_config()
99 solo_reg_write(solo_dev, SOLO_VI_PB_ACT_H, SOLO_VI_PB_HSTART(16) | in solo_vin_config()
103 static void solo_vout_config_cursor(struct solo_dev *dev) in solo_vout_config_cursor()
118 static void solo_vout_config(struct solo_dev *solo_dev) in solo_vout_config() argument
120 solo_dev->vout_hstart = 6; in solo_vout_config()
121 solo_dev->vout_vstart = 8; in solo_vout_config()
123 solo_reg_write(solo_dev, SOLO_VO_FMT_ENC, in solo_vout_config()
124 solo_dev->video_type | in solo_vout_config()
131 solo_reg_write(solo_dev, SOLO_VO_ACT_H, in solo_vout_config()
132 SOLO_VO_H_START(solo_dev->vout_hstart) | in solo_vout_config()
133 SOLO_VO_H_STOP(solo_dev->vout_hstart + in solo_vout_config()
134 solo_dev->video_hsize)); in solo_vout_config()
136 solo_reg_write(solo_dev, SOLO_VO_ACT_V, in solo_vout_config()
137 SOLO_VO_V_START(solo_dev->vout_vstart) | in solo_vout_config()
138 SOLO_VO_V_STOP(solo_dev->vout_vstart + in solo_vout_config()
139 solo_dev->video_vsize)); in solo_vout_config()
141 solo_reg_write(solo_dev, SOLO_VO_RANGE_HV, in solo_vout_config()
142 SOLO_VO_H_LEN(solo_dev->video_hsize) | in solo_vout_config()
143 SOLO_VO_V_LEN(solo_dev->video_vsize)); in solo_vout_config()
146 solo_reg_write(solo_dev, SOLO_VO_BORDER_LINE_COLOR, in solo_vout_config()
148 solo_reg_write(solo_dev, SOLO_VO_BORDER_FILL_COLOR, in solo_vout_config()
150 solo_reg_write(solo_dev, SOLO_VO_BKG_COLOR, in solo_vout_config()
153 solo_reg_write(solo_dev, SOLO_VO_DISP_ERASE, SOLO_VO_DISP_ERASE_ON); in solo_vout_config()
155 solo_reg_write(solo_dev, SOLO_VI_WIN_SW, 0); in solo_vout_config()
157 solo_reg_write(solo_dev, SOLO_VO_ZOOM_CTRL, 0); in solo_vout_config()
158 solo_reg_write(solo_dev, SOLO_VO_FREEZE_CTRL, 0); in solo_vout_config()
160 solo_reg_write(solo_dev, SOLO_VO_DISP_CTRL, SOLO_VO_DISP_ON | in solo_vout_config()
165 solo_vout_config_cursor(solo_dev); in solo_vout_config()
168 solo_reg_write(solo_dev, SOLO_VI_CH_ENA, in solo_vout_config()
169 (1 << solo_dev->nr_chans) - 1); in solo_vout_config()
172 static int solo_dma_vin_region(struct solo_dev *solo_dev, u32 off, in solo_dma_vin_region() argument
187 ret = solo_p2m_dma(solo_dev, 1, buf, in solo_dma_vin_region()
188 SOLO_MOTION_EXT_ADDR(solo_dev) + off + i, in solo_dma_vin_region()
199 int solo_set_motion_threshold(struct solo_dev *solo_dev, u8 ch, u16 val) in solo_set_motion_threshold() argument
201 if (ch > solo_dev->nr_chans) in solo_set_motion_threshold()
204 return solo_dma_vin_region(solo_dev, SOLO_MOT_FLAG_AREA + in solo_set_motion_threshold()
209 int solo_set_motion_block(struct solo_dev *solo_dev, u8 ch, in solo_set_motion_block() argument
224 ret |= solo_p2m_dma(solo_dev, 1, buf, in solo_set_motion_block()
225 SOLO_MOTION_EXT_ADDR(solo_dev) + off + y * size, in solo_set_motion_block()
236 static void solo_motion_config(struct solo_dev *solo_dev) in solo_motion_config() argument
240 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_motion_config()
242 solo_dma_vin_region(solo_dev, i * SOLO_MOT_FLAG_SIZE, 0x0000, in solo_motion_config()
246 solo_dma_vin_region(solo_dev, SOLO_MOT_FLAG_AREA + in solo_motion_config()
252 solo_set_motion_threshold(solo_dev, i, SOLO_DEF_MOT_THRESH); in solo_motion_config()
256 solo_reg_write(solo_dev, SOLO_VI_MOT_ADR, SOLO_VI_MOTION_EN(0) | in solo_motion_config()
257 (SOLO_MOTION_EXT_ADDR(solo_dev) >> 16)); in solo_motion_config()
258 solo_reg_write(solo_dev, SOLO_VI_MOT_CTRL, in solo_motion_config()
260 SOLO_VI_MOTION_SAMPLE_LENGTH(solo_dev->video_hsize / 16) in solo_motion_config()
264 solo_reg_write(solo_dev, SOLO_VI_MOTION_BORDER, 0); in solo_motion_config()
265 solo_reg_write(solo_dev, SOLO_VI_MOTION_BAR, 0); in solo_motion_config()
268 int solo_disp_init(struct solo_dev *solo_dev) in solo_disp_init() argument
272 solo_dev->video_hsize = 704; in solo_disp_init()
273 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_NTSC) { in solo_disp_init()
274 solo_dev->video_vsize = 240; in solo_disp_init()
275 solo_dev->fps = 30; in solo_disp_init()
277 solo_dev->video_vsize = 288; in solo_disp_init()
278 solo_dev->fps = 25; in solo_disp_init()
281 solo_vin_config(solo_dev); in solo_disp_init()
282 solo_motion_config(solo_dev); in solo_disp_init()
283 solo_vout_config(solo_dev); in solo_disp_init()
285 for (i = 0; i < solo_dev->nr_chans; i++) in solo_disp_init()
286 solo_reg_write(solo_dev, SOLO_VI_WIN_ON(i), 1); in solo_disp_init()
291 void solo_disp_exit(struct solo_dev *solo_dev) in solo_disp_exit() argument
295 solo_reg_write(solo_dev, SOLO_VO_DISP_CTRL, 0); in solo_disp_exit()
296 solo_reg_write(solo_dev, SOLO_VO_ZOOM_CTRL, 0); in solo_disp_exit()
297 solo_reg_write(solo_dev, SOLO_VO_FREEZE_CTRL, 0); in solo_disp_exit()
299 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_disp_exit()
300 solo_reg_write(solo_dev, SOLO_VI_WIN_CTRL0(i), 0); in solo_disp_exit()
301 solo_reg_write(solo_dev, SOLO_VI_WIN_CTRL1(i), 0); in solo_disp_exit()
302 solo_reg_write(solo_dev, SOLO_VI_WIN_ON(i), 0); in solo_disp_exit()
307 solo_reg_write(solo_dev, SOLO_VO_BORDER_X(i), 0); in solo_disp_exit()
310 solo_reg_write(solo_dev, SOLO_VO_BORDER_Y(i), 0); in solo_disp_exit()
312 solo_reg_write(solo_dev, SOLO_VO_BORDER_LINE_MASK, 0); in solo_disp_exit()
313 solo_reg_write(solo_dev, SOLO_VO_BORDER_FILL_MASK, 0); in solo_disp_exit()
315 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_CTRL(0), 0); in solo_disp_exit()
316 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_START(0), 0); in solo_disp_exit()
317 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_STOP(0), 0); in solo_disp_exit()
319 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_CTRL(1), 0); in solo_disp_exit()
320 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_START(1), 0); in solo_disp_exit()
321 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_STOP(1), 0); in solo_disp_exit()