Lines Matching refs:solo_dev
33 static void solo_capture_config(struct solo_dev *solo_dev) in solo_capture_config() argument
40 solo_reg_write(solo_dev, SOLO_CAP_BASE, in solo_capture_config()
41 SOLO_CAP_MAX_PAGE((SOLO_CAP_EXT_SIZE(solo_dev) in solo_capture_config()
43 | SOLO_CAP_BASE_ADDR(SOLO_CAP_EXT_ADDR(solo_dev) >> 16)); in solo_capture_config()
46 if (solo_dev->type == SOLO_DEV_6110) { in solo_capture_config()
49 solo_reg_write(solo_dev, SOLO_CAP_BTW, in solo_capture_config()
53 solo_reg_write(solo_dev, SOLO_CAP_BTW, in solo_capture_config()
59 width = solo_dev->video_hsize; in solo_capture_config()
60 height = solo_dev->video_vsize; in solo_capture_config()
61 solo_reg_write(solo_dev, SOLO_DIM_SCALE1, in solo_capture_config()
67 width = solo_dev->video_hsize / 2; in solo_capture_config()
68 height = solo_dev->video_vsize; in solo_capture_config()
69 solo_reg_write(solo_dev, SOLO_DIM_SCALE2, in solo_capture_config()
75 width = solo_dev->video_hsize / 2; in solo_capture_config()
76 height = solo_dev->video_vsize / 2; in solo_capture_config()
77 solo_reg_write(solo_dev, SOLO_DIM_SCALE3, in solo_capture_config()
83 width = solo_dev->video_hsize / 3; in solo_capture_config()
84 height = solo_dev->video_vsize / 3; in solo_capture_config()
85 solo_reg_write(solo_dev, SOLO_DIM_SCALE4, in solo_capture_config()
91 width = solo_dev->video_hsize / 4; in solo_capture_config()
92 height = solo_dev->video_vsize / 2; in solo_capture_config()
93 solo_reg_write(solo_dev, SOLO_DIM_SCALE5, in solo_capture_config()
101 solo_reg_write(solo_dev, SOLO_DIM_PROG, in solo_capture_config()
107 solo_reg_write(solo_dev, SOLO_VE_OSD_CH, 0); in solo_capture_config()
108 solo_reg_write(solo_dev, SOLO_VE_OSD_BASE, SOLO_EOSD_EXT_ADDR >> 16); in solo_capture_config()
109 solo_reg_write(solo_dev, SOLO_VE_OSD_CLR, in solo_capture_config()
112 if (solo_dev->type == SOLO_DEV_6010) in solo_capture_config()
113 solo_reg_write(solo_dev, SOLO_VE_OSD_OPT, in solo_capture_config()
116 solo_reg_write(solo_dev, SOLO_VE_OSD_OPT, SOLO_VE_OSD_V_DOUBLE in solo_capture_config()
120 buf = kzalloc(SOLO_EOSD_EXT_SIZE(solo_dev), GFP_KERNEL); in solo_capture_config()
124 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_capture_config()
125 solo_p2m_dma(solo_dev, 1, buf, in solo_capture_config()
127 (SOLO_EOSD_EXT_SIZE(solo_dev) * i), in solo_capture_config()
128 SOLO_EOSD_EXT_SIZE(solo_dev), 0, 0); in solo_capture_config()
138 struct solo_dev *solo_dev = solo_enc->solo_dev; in solo_osd_print() local
149 reg = solo_reg_read(solo_dev, SOLO_VE_OSD_CH); in solo_osd_print()
166 solo_p2m_dma(solo_dev, 1, buf, in solo_osd_print()
167 SOLO_EOSD_EXT_ADDR_CHAN(solo_dev, solo_enc->ch), in solo_osd_print()
174 solo_reg_write(solo_dev, SOLO_VE_OSD_CH, reg); in solo_osd_print()
181 void solo_s_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch, in solo_s_jpeg_qp() argument
190 if (solo_dev->type == SOLO_DEV_6010) in solo_s_jpeg_qp()
203 spin_lock_irqsave(&solo_dev->jpeg_qp_lock, flags); in solo_s_jpeg_qp()
205 solo_dev->jpeg_qp[idx] &= ~(3 << ch); in solo_s_jpeg_qp()
206 solo_dev->jpeg_qp[idx] |= (qp & 3) << ch; in solo_s_jpeg_qp()
208 solo_reg_write(solo_dev, reg, solo_dev->jpeg_qp[idx]); in solo_s_jpeg_qp()
210 spin_unlock_irqrestore(&solo_dev->jpeg_qp_lock, flags); in solo_s_jpeg_qp()
213 int solo_g_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch) in solo_g_jpeg_qp() argument
217 if (solo_dev->type == SOLO_DEV_6010) in solo_g_jpeg_qp()
231 return (solo_dev->jpeg_qp[idx] >> ch) & 3; in solo_g_jpeg_qp()
236 static void solo_jpeg_config(struct solo_dev *solo_dev) in solo_jpeg_config() argument
238 if (solo_dev->type == SOLO_DEV_6010) { in solo_jpeg_config()
239 solo_reg_write(solo_dev, SOLO_VE_JPEG_QP_TBL, in solo_jpeg_config()
242 solo_reg_write(solo_dev, SOLO_VE_JPEG_QP_TBL, in solo_jpeg_config()
246 spin_lock_init(&solo_dev->jpeg_qp_lock); in solo_jpeg_config()
249 solo_dev->jpeg_qp[0] = solo_dev->jpeg_qp[1] = SOLO_QP_INIT; in solo_jpeg_config()
250 solo_reg_write(solo_dev, SOLO_VE_JPEG_QP_CH_L, SOLO_QP_INIT); in solo_jpeg_config()
251 solo_reg_write(solo_dev, SOLO_VE_JPEG_QP_CH_H, SOLO_QP_INIT); in solo_jpeg_config()
253 solo_reg_write(solo_dev, SOLO_VE_JPEG_CFG, in solo_jpeg_config()
254 (SOLO_JPEG_EXT_SIZE(solo_dev) & 0xffff0000) | in solo_jpeg_config()
255 ((SOLO_JPEG_EXT_ADDR(solo_dev) >> 16) & 0x0000ffff)); in solo_jpeg_config()
256 solo_reg_write(solo_dev, SOLO_VE_JPEG_CTRL, 0xffffffff); in solo_jpeg_config()
257 if (solo_dev->type == SOLO_DEV_6110) { in solo_jpeg_config()
258 solo_reg_write(solo_dev, SOLO_VE_JPEG_CFG1, in solo_jpeg_config()
263 static void solo_mp4e_config(struct solo_dev *solo_dev) in solo_mp4e_config() argument
268 solo_reg_write(solo_dev, SOLO_VE_CFG0, in solo_mp4e_config()
270 SOLO_VE_BLOCK_SIZE(SOLO_MP4E_EXT_SIZE(solo_dev) >> 16) | in solo_mp4e_config()
271 SOLO_VE_BLOCK_BASE(SOLO_MP4E_EXT_ADDR(solo_dev) >> 16)); in solo_mp4e_config()
276 if (solo_dev->type != SOLO_DEV_6010) { in solo_mp4e_config()
278 (SOLO_MP4E_EXT_SIZE(solo_dev) >> 24) & 0x0f); in solo_mp4e_config()
280 (SOLO_JPEG_EXT_SIZE(solo_dev) >> 24) & 0x0f); in solo_mp4e_config()
282 solo_reg_write(solo_dev, SOLO_VE_CFG1, cfg); in solo_mp4e_config()
284 solo_reg_write(solo_dev, SOLO_VE_WMRK_POLY, 0); in solo_mp4e_config()
285 solo_reg_write(solo_dev, SOLO_VE_VMRK_INIT_KEY, 0); in solo_mp4e_config()
286 solo_reg_write(solo_dev, SOLO_VE_WMRK_STRL, 0); in solo_mp4e_config()
287 if (solo_dev->type == SOLO_DEV_6110) in solo_mp4e_config()
288 solo_reg_write(solo_dev, SOLO_VE_WMRK_ENABLE, 0); in solo_mp4e_config()
289 solo_reg_write(solo_dev, SOLO_VE_ENCRYP_POLY, 0); in solo_mp4e_config()
290 solo_reg_write(solo_dev, SOLO_VE_ENCRYP_INIT, 0); in solo_mp4e_config()
292 solo_reg_write(solo_dev, SOLO_VE_ATTR, in solo_mp4e_config()
297 SOLO_DCT_INTERVAL(solo_dev->type == SOLO_DEV_6010 ? 9 : 10)); in solo_mp4e_config()
299 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_mp4e_config()
300 solo_reg_write(solo_dev, SOLO_VE_CH_REF_BASE(i), in solo_mp4e_config()
301 (SOLO_EREF_EXT_ADDR(solo_dev) + in solo_mp4e_config()
303 solo_reg_write(solo_dev, SOLO_VE_CH_REF_BASE_E(i), in solo_mp4e_config()
304 (SOLO_EREF_EXT_ADDR(solo_dev) + in solo_mp4e_config()
308 if (solo_dev->type == SOLO_DEV_6110) { in solo_mp4e_config()
309 solo_reg_write(solo_dev, SOLO_VE_COMPT_MOT, 0x00040008); in solo_mp4e_config()
311 for (i = 0; i < solo_dev->nr_chans; i++) in solo_mp4e_config()
312 solo_reg_write(solo_dev, SOLO_VE_CH_MOT(i), 0x100); in solo_mp4e_config()
316 int solo_enc_init(struct solo_dev *solo_dev) in solo_enc_init() argument
320 solo_capture_config(solo_dev); in solo_enc_init()
321 solo_mp4e_config(solo_dev); in solo_enc_init()
322 solo_jpeg_config(solo_dev); in solo_enc_init()
324 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_enc_init()
325 solo_reg_write(solo_dev, SOLO_CAP_CH_SCALE(i), 0); in solo_enc_init()
326 solo_reg_write(solo_dev, SOLO_CAP_CH_COMP_ENA_E(i), 0); in solo_enc_init()
332 void solo_enc_exit(struct solo_dev *solo_dev) in solo_enc_exit() argument
336 for (i = 0; i < solo_dev->nr_chans; i++) { in solo_enc_exit()
337 solo_reg_write(solo_dev, SOLO_CAP_CH_SCALE(i), 0); in solo_enc_exit()
338 solo_reg_write(solo_dev, SOLO_CAP_CH_COMP_ENA_E(i), 0); in solo_enc_exit()