Lines Matching refs:solo_dev
24 static void solo_capture_config(struct solo_dev *solo_dev) in solo_capture_config() argument
31 solo_reg_write(solo_dev, SOLO_CAP_BASE, in solo_capture_config()
32 SOLO_CAP_MAX_PAGE((SOLO_CAP_EXT_SIZE(solo_dev) in solo_capture_config()
34 | SOLO_CAP_BASE_ADDR(SOLO_CAP_EXT_ADDR(solo_dev) >> 16)); in solo_capture_config()
37 if (solo_dev->type == SOLO_DEV_6110) { in solo_capture_config()
40 solo_reg_write(solo_dev, SOLO_CAP_BTW, in solo_capture_config()
44 solo_reg_write(solo_dev, SOLO_CAP_BTW, in solo_capture_config()
50 width = solo_dev->video_hsize; in solo_capture_config()
51 height = solo_dev->video_vsize; in solo_capture_config()
52 solo_reg_write(solo_dev, SOLO_DIM_SCALE1, in solo_capture_config()
58 width = solo_dev->video_hsize / 2; in solo_capture_config()
59 height = solo_dev->video_vsize; in solo_capture_config()
60 solo_reg_write(solo_dev, SOLO_DIM_SCALE2, in solo_capture_config()
66 width = solo_dev->video_hsize / 2; in solo_capture_config()
67 height = solo_dev->video_vsize / 2; in solo_capture_config()
68 solo_reg_write(solo_dev, SOLO_DIM_SCALE3, in solo_capture_config()
74 width = solo_dev->video_hsize / 3; in solo_capture_config()
75 height = solo_dev->video_vsize / 3; in solo_capture_config()
76 solo_reg_write(solo_dev, SOLO_DIM_SCALE4, in solo_capture_config()
82 width = solo_dev->video_hsize / 4; in solo_capture_config()
83 height = solo_dev->video_vsize / 2; in solo_capture_config()
84 solo_reg_write(solo_dev, SOLO_DIM_SCALE5, in solo_capture_config()
92 solo_reg_write(solo_dev, SOLO_DIM_PROG, in solo_capture_config()
98 solo_reg_write(solo_dev, SOLO_VE_OSD_CH, 0); in solo_capture_config()
99 solo_reg_write(solo_dev, SOLO_VE_OSD_BASE, SOLO_EOSD_EXT_ADDR >> 16); in solo_capture_config()
100 solo_reg_write(solo_dev, SOLO_VE_OSD_CLR, in solo_capture_config()
103 if (solo_dev->type == SOLO_DEV_6010) in solo_capture_config()
104 solo_reg_write(solo_dev, SOLO_VE_OSD_OPT, in solo_capture_config()
107 solo_reg_write(solo_dev, SOLO_VE_OSD_OPT, SOLO_VE_OSD_V_DOUBLE in solo_capture_config()
111 buf = kzalloc(SOLO_EOSD_EXT_SIZE(solo_dev), GFP_KERNEL); in solo_capture_config()
115 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_capture_config()
116 solo_p2m_dma(solo_dev, 1, buf, in solo_capture_config()
118 (SOLO_EOSD_EXT_SIZE(solo_dev) * i), in solo_capture_config()
119 SOLO_EOSD_EXT_SIZE(solo_dev), 0, 0); in solo_capture_config()
129 struct solo_dev *solo_dev = solo_enc->solo_dev; in solo_osd_print() local
140 reg = solo_reg_read(solo_dev, SOLO_VE_OSD_CH); in solo_osd_print()
157 solo_p2m_dma(solo_dev, 1, buf, in solo_osd_print()
158 SOLO_EOSD_EXT_ADDR_CHAN(solo_dev, solo_enc->ch), in solo_osd_print()
165 solo_reg_write(solo_dev, SOLO_VE_OSD_CH, reg); in solo_osd_print()
172 void solo_s_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch, in solo_s_jpeg_qp() argument
181 if (solo_dev->type == SOLO_DEV_6010) in solo_s_jpeg_qp()
194 spin_lock_irqsave(&solo_dev->jpeg_qp_lock, flags); in solo_s_jpeg_qp()
196 solo_dev->jpeg_qp[idx] &= ~(3 << ch); in solo_s_jpeg_qp()
197 solo_dev->jpeg_qp[idx] |= (qp & 3) << ch; in solo_s_jpeg_qp()
199 solo_reg_write(solo_dev, reg, solo_dev->jpeg_qp[idx]); in solo_s_jpeg_qp()
201 spin_unlock_irqrestore(&solo_dev->jpeg_qp_lock, flags); in solo_s_jpeg_qp()
204 int solo_g_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch) in solo_g_jpeg_qp() argument
208 if (solo_dev->type == SOLO_DEV_6010) in solo_g_jpeg_qp()
222 return (solo_dev->jpeg_qp[idx] >> ch) & 3; in solo_g_jpeg_qp()
227 static void solo_jpeg_config(struct solo_dev *solo_dev) in solo_jpeg_config() argument
229 if (solo_dev->type == SOLO_DEV_6010) { in solo_jpeg_config()
230 solo_reg_write(solo_dev, SOLO_VE_JPEG_QP_TBL, in solo_jpeg_config()
233 solo_reg_write(solo_dev, SOLO_VE_JPEG_QP_TBL, in solo_jpeg_config()
237 spin_lock_init(&solo_dev->jpeg_qp_lock); in solo_jpeg_config()
240 solo_dev->jpeg_qp[0] = solo_dev->jpeg_qp[1] = SOLO_QP_INIT; in solo_jpeg_config()
241 solo_reg_write(solo_dev, SOLO_VE_JPEG_QP_CH_L, SOLO_QP_INIT); in solo_jpeg_config()
242 solo_reg_write(solo_dev, SOLO_VE_JPEG_QP_CH_H, SOLO_QP_INIT); in solo_jpeg_config()
244 solo_reg_write(solo_dev, SOLO_VE_JPEG_CFG, in solo_jpeg_config()
245 (SOLO_JPEG_EXT_SIZE(solo_dev) & 0xffff0000) | in solo_jpeg_config()
246 ((SOLO_JPEG_EXT_ADDR(solo_dev) >> 16) & 0x0000ffff)); in solo_jpeg_config()
247 solo_reg_write(solo_dev, SOLO_VE_JPEG_CTRL, 0xffffffff); in solo_jpeg_config()
248 if (solo_dev->type == SOLO_DEV_6110) { in solo_jpeg_config()
249 solo_reg_write(solo_dev, SOLO_VE_JPEG_CFG1, in solo_jpeg_config()
254 static void solo_mp4e_config(struct solo_dev *solo_dev) in solo_mp4e_config() argument
259 solo_reg_write(solo_dev, SOLO_VE_CFG0, in solo_mp4e_config()
261 SOLO_VE_BLOCK_SIZE(SOLO_MP4E_EXT_SIZE(solo_dev) >> 16) | in solo_mp4e_config()
262 SOLO_VE_BLOCK_BASE(SOLO_MP4E_EXT_ADDR(solo_dev) >> 16)); in solo_mp4e_config()
267 if (solo_dev->type != SOLO_DEV_6010) { in solo_mp4e_config()
269 (SOLO_MP4E_EXT_SIZE(solo_dev) >> 24) & 0x0f); in solo_mp4e_config()
271 (SOLO_JPEG_EXT_SIZE(solo_dev) >> 24) & 0x0f); in solo_mp4e_config()
273 solo_reg_write(solo_dev, SOLO_VE_CFG1, cfg); in solo_mp4e_config()
275 solo_reg_write(solo_dev, SOLO_VE_WMRK_POLY, 0); in solo_mp4e_config()
276 solo_reg_write(solo_dev, SOLO_VE_VMRK_INIT_KEY, 0); in solo_mp4e_config()
277 solo_reg_write(solo_dev, SOLO_VE_WMRK_STRL, 0); in solo_mp4e_config()
278 if (solo_dev->type == SOLO_DEV_6110) in solo_mp4e_config()
279 solo_reg_write(solo_dev, SOLO_VE_WMRK_ENABLE, 0); in solo_mp4e_config()
280 solo_reg_write(solo_dev, SOLO_VE_ENCRYP_POLY, 0); in solo_mp4e_config()
281 solo_reg_write(solo_dev, SOLO_VE_ENCRYP_INIT, 0); in solo_mp4e_config()
283 solo_reg_write(solo_dev, SOLO_VE_ATTR, in solo_mp4e_config()
288 SOLO_DCT_INTERVAL(solo_dev->type == SOLO_DEV_6010 ? 9 : 10)); in solo_mp4e_config()
290 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_mp4e_config()
291 solo_reg_write(solo_dev, SOLO_VE_CH_REF_BASE(i), in solo_mp4e_config()
292 (SOLO_EREF_EXT_ADDR(solo_dev) + in solo_mp4e_config()
294 solo_reg_write(solo_dev, SOLO_VE_CH_REF_BASE_E(i), in solo_mp4e_config()
295 (SOLO_EREF_EXT_ADDR(solo_dev) + in solo_mp4e_config()
299 if (solo_dev->type == SOLO_DEV_6110) { in solo_mp4e_config()
300 solo_reg_write(solo_dev, SOLO_VE_COMPT_MOT, 0x00040008); in solo_mp4e_config()
302 for (i = 0; i < solo_dev->nr_chans; i++) in solo_mp4e_config()
303 solo_reg_write(solo_dev, SOLO_VE_CH_MOT(i), 0x100); in solo_mp4e_config()
307 int solo_enc_init(struct solo_dev *solo_dev) in solo_enc_init() argument
311 solo_capture_config(solo_dev); in solo_enc_init()
312 solo_mp4e_config(solo_dev); in solo_enc_init()
313 solo_jpeg_config(solo_dev); in solo_enc_init()
315 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_enc_init()
316 solo_reg_write(solo_dev, SOLO_CAP_CH_SCALE(i), 0); in solo_enc_init()
317 solo_reg_write(solo_dev, SOLO_CAP_CH_COMP_ENA_E(i), 0); in solo_enc_init()
323 void solo_enc_exit(struct solo_dev *solo_dev) in solo_enc_exit() argument
327 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_enc_exit()
328 solo_reg_write(solo_dev, SOLO_CAP_CH_SCALE(i), 0); in solo_enc_exit()
329 solo_reg_write(solo_dev, SOLO_CAP_CH_COMP_ENA_E(i), 0); in solo_enc_exit()