Lines Matching refs:solo_dev
29 static void solo_vin_config(struct solo_dev *solo_dev) in solo_vin_config() argument
31 solo_dev->vin_hstart = 8; in solo_vin_config()
32 solo_dev->vin_vstart = 2; in solo_vin_config()
34 solo_reg_write(solo_dev, SOLO_SYS_VCLK, in solo_vin_config()
45 solo_reg_write(solo_dev, SOLO_VI_ACT_I_P, in solo_vin_config()
46 SOLO_VI_H_START(solo_dev->vin_hstart) | in solo_vin_config()
47 SOLO_VI_V_START(solo_dev->vin_vstart) | in solo_vin_config()
48 SOLO_VI_V_STOP(solo_dev->vin_vstart + in solo_vin_config()
49 solo_dev->video_vsize)); in solo_vin_config()
51 solo_reg_write(solo_dev, SOLO_VI_ACT_I_S, in solo_vin_config()
52 SOLO_VI_H_START(solo_dev->vout_hstart) | in solo_vin_config()
53 SOLO_VI_V_START(solo_dev->vout_vstart) | in solo_vin_config()
54 SOLO_VI_V_STOP(solo_dev->vout_vstart + in solo_vin_config()
55 solo_dev->video_vsize)); in solo_vin_config()
57 solo_reg_write(solo_dev, SOLO_VI_ACT_P, in solo_vin_config()
62 solo_reg_write(solo_dev, SOLO_VI_CH_FORMAT, in solo_vin_config()
66 if (solo_dev->type == SOLO_DEV_6010) in solo_vin_config()
67 solo_reg_write(solo_dev, SOLO_VI_FMT_CFG, 0); in solo_vin_config()
69 solo_reg_write(solo_dev, SOLO_VI_FMT_CFG, 16 << 22); in solo_vin_config()
71 solo_reg_write(solo_dev, SOLO_VI_PAGE_SW, 2); in solo_vin_config()
73 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_NTSC) { in solo_vin_config()
74 solo_reg_write(solo_dev, SOLO_VI_PB_CONFIG, in solo_vin_config()
76 solo_reg_write(solo_dev, SOLO_VI_PB_RANGE_HV, in solo_vin_config()
78 solo_reg_write(solo_dev, SOLO_VI_PB_ACT_V, in solo_vin_config()
82 solo_reg_write(solo_dev, SOLO_VI_PB_CONFIG, in solo_vin_config()
84 solo_reg_write(solo_dev, SOLO_VI_PB_RANGE_HV, in solo_vin_config()
86 solo_reg_write(solo_dev, SOLO_VI_PB_ACT_V, in solo_vin_config()
90 solo_reg_write(solo_dev, SOLO_VI_PB_ACT_H, SOLO_VI_PB_HSTART(16) | in solo_vin_config()
94 static void solo_vout_config_cursor(struct solo_dev *dev) in solo_vout_config_cursor()
109 static void solo_vout_config(struct solo_dev *solo_dev) in solo_vout_config() argument
111 solo_dev->vout_hstart = 6; in solo_vout_config()
112 solo_dev->vout_vstart = 8; in solo_vout_config()
114 solo_reg_write(solo_dev, SOLO_VO_FMT_ENC, in solo_vout_config()
115 solo_dev->video_type | in solo_vout_config()
122 solo_reg_write(solo_dev, SOLO_VO_ACT_H, in solo_vout_config()
123 SOLO_VO_H_START(solo_dev->vout_hstart) | in solo_vout_config()
124 SOLO_VO_H_STOP(solo_dev->vout_hstart + in solo_vout_config()
125 solo_dev->video_hsize)); in solo_vout_config()
127 solo_reg_write(solo_dev, SOLO_VO_ACT_V, in solo_vout_config()
128 SOLO_VO_V_START(solo_dev->vout_vstart) | in solo_vout_config()
129 SOLO_VO_V_STOP(solo_dev->vout_vstart + in solo_vout_config()
130 solo_dev->video_vsize)); in solo_vout_config()
132 solo_reg_write(solo_dev, SOLO_VO_RANGE_HV, in solo_vout_config()
133 SOLO_VO_H_LEN(solo_dev->video_hsize) | in solo_vout_config()
134 SOLO_VO_V_LEN(solo_dev->video_vsize)); in solo_vout_config()
137 solo_reg_write(solo_dev, SOLO_VO_BORDER_LINE_COLOR, in solo_vout_config()
139 solo_reg_write(solo_dev, SOLO_VO_BORDER_FILL_COLOR, in solo_vout_config()
141 solo_reg_write(solo_dev, SOLO_VO_BKG_COLOR, in solo_vout_config()
144 solo_reg_write(solo_dev, SOLO_VO_DISP_ERASE, SOLO_VO_DISP_ERASE_ON); in solo_vout_config()
146 solo_reg_write(solo_dev, SOLO_VI_WIN_SW, 0); in solo_vout_config()
148 solo_reg_write(solo_dev, SOLO_VO_ZOOM_CTRL, 0); in solo_vout_config()
149 solo_reg_write(solo_dev, SOLO_VO_FREEZE_CTRL, 0); in solo_vout_config()
151 solo_reg_write(solo_dev, SOLO_VO_DISP_CTRL, SOLO_VO_DISP_ON | in solo_vout_config()
156 solo_vout_config_cursor(solo_dev); in solo_vout_config()
159 solo_reg_write(solo_dev, SOLO_VI_CH_ENA, in solo_vout_config()
160 (1 << solo_dev->nr_chans) - 1); in solo_vout_config()
163 static int solo_dma_vin_region(struct solo_dev *solo_dev, u32 off, in solo_dma_vin_region() argument
178 ret = solo_p2m_dma(solo_dev, 1, buf, in solo_dma_vin_region()
179 SOLO_MOTION_EXT_ADDR(solo_dev) + off + i, in solo_dma_vin_region()
190 int solo_set_motion_threshold(struct solo_dev *solo_dev, u8 ch, u16 val) in solo_set_motion_threshold() argument
192 if (ch > solo_dev->nr_chans) in solo_set_motion_threshold()
195 return solo_dma_vin_region(solo_dev, SOLO_MOT_FLAG_AREA + in solo_set_motion_threshold()
200 int solo_set_motion_block(struct solo_dev *solo_dev, u8 ch, in solo_set_motion_block() argument
215 ret |= solo_p2m_dma(solo_dev, 1, buf, in solo_set_motion_block()
216 SOLO_MOTION_EXT_ADDR(solo_dev) + off + y * size, in solo_set_motion_block()
227 static void solo_motion_config(struct solo_dev *solo_dev) in solo_motion_config() argument
231 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_motion_config()
233 solo_dma_vin_region(solo_dev, i * SOLO_MOT_FLAG_SIZE, 0x0000, in solo_motion_config()
237 solo_dma_vin_region(solo_dev, SOLO_MOT_FLAG_AREA + in solo_motion_config()
243 solo_set_motion_threshold(solo_dev, i, SOLO_DEF_MOT_THRESH); in solo_motion_config()
247 solo_reg_write(solo_dev, SOLO_VI_MOT_ADR, SOLO_VI_MOTION_EN(0) | in solo_motion_config()
248 (SOLO_MOTION_EXT_ADDR(solo_dev) >> 16)); in solo_motion_config()
249 solo_reg_write(solo_dev, SOLO_VI_MOT_CTRL, in solo_motion_config()
251 SOLO_VI_MOTION_SAMPLE_LENGTH(solo_dev->video_hsize / 16) in solo_motion_config()
255 solo_reg_write(solo_dev, SOLO_VI_MOTION_BORDER, 0); in solo_motion_config()
256 solo_reg_write(solo_dev, SOLO_VI_MOTION_BAR, 0); in solo_motion_config()
259 int solo_disp_init(struct solo_dev *solo_dev) in solo_disp_init() argument
263 solo_dev->video_hsize = 704; in solo_disp_init()
264 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_NTSC) { in solo_disp_init()
265 solo_dev->video_vsize = 240; in solo_disp_init()
266 solo_dev->fps = 30; in solo_disp_init()
268 solo_dev->video_vsize = 288; in solo_disp_init()
269 solo_dev->fps = 25; in solo_disp_init()
272 solo_vin_config(solo_dev); in solo_disp_init()
273 solo_motion_config(solo_dev); in solo_disp_init()
274 solo_vout_config(solo_dev); in solo_disp_init()
276 for (i = 0; i < solo_dev->nr_chans; i++) in solo_disp_init()
277 solo_reg_write(solo_dev, SOLO_VI_WIN_ON(i), 1); in solo_disp_init()
282 void solo_disp_exit(struct solo_dev *solo_dev) in solo_disp_exit() argument
286 solo_reg_write(solo_dev, SOLO_VO_DISP_CTRL, 0); in solo_disp_exit()
287 solo_reg_write(solo_dev, SOLO_VO_ZOOM_CTRL, 0); in solo_disp_exit()
288 solo_reg_write(solo_dev, SOLO_VO_FREEZE_CTRL, 0); in solo_disp_exit()
290 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_disp_exit()
291 solo_reg_write(solo_dev, SOLO_VI_WIN_CTRL0(i), 0); in solo_disp_exit()
292 solo_reg_write(solo_dev, SOLO_VI_WIN_CTRL1(i), 0); in solo_disp_exit()
293 solo_reg_write(solo_dev, SOLO_VI_WIN_ON(i), 0); in solo_disp_exit()
298 solo_reg_write(solo_dev, SOLO_VO_BORDER_X(i), 0); in solo_disp_exit()
301 solo_reg_write(solo_dev, SOLO_VO_BORDER_Y(i), 0); in solo_disp_exit()
303 solo_reg_write(solo_dev, SOLO_VO_BORDER_LINE_MASK, 0); in solo_disp_exit()
304 solo_reg_write(solo_dev, SOLO_VO_BORDER_FILL_MASK, 0); in solo_disp_exit()
306 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_CTRL(0), 0); in solo_disp_exit()
307 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_START(0), 0); in solo_disp_exit()
308 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_STOP(0), 0); in solo_disp_exit()
310 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_CTRL(1), 0); in solo_disp_exit()
311 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_START(1), 0); in solo_disp_exit()
312 solo_reg_write(solo_dev, SOLO_VO_RECTANGLE_STOP(1), 0); in solo_disp_exit()