Lines Matching refs:av7110
75 static int write_ts_to_decoder(struct av7110 *av7110, int type, const u8 *buf, size_t len);
102 int av7110_av_start_record(struct av7110 *av7110, int av, in av7110_av_start_record() argument
108 dprintk(2, "av7110:%p, , dvb_demux_feed:%p\n", av7110, dvbdmxfeed); in av7110_av_start_record()
110 if (av7110->playing || (av7110->rec_mode & av)) in av7110_av_start_record()
112 av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Stop, 0); in av7110_av_start_record()
114 av7110->rec_mode |= av; in av7110_av_start_record()
116 switch (av7110->rec_mode) { in av7110_av_start_record()
118 dvb_filter_pes2ts_init(&av7110->p2t[0], in av7110_av_start_record()
122 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Record, 2, AudioPES, 0); in av7110_av_start_record()
126 dvb_filter_pes2ts_init(&av7110->p2t[1], in av7110_av_start_record()
130 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Record, 2, VideoPES, 0); in av7110_av_start_record()
134 dvb_filter_pes2ts_init(&av7110->p2t[0], in av7110_av_start_record()
138 dvb_filter_pes2ts_init(&av7110->p2t[1], in av7110_av_start_record()
142 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Record, 2, AV_PES, 0); in av7110_av_start_record()
148 int av7110_av_start_play(struct av7110 *av7110, int av) in av7110_av_start_play() argument
151 dprintk(2, "av7110:%p, \n", av7110); in av7110_av_start_play()
153 if (av7110->rec_mode) in av7110_av_start_play()
155 if (av7110->playing & av) in av7110_av_start_play()
158 av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Stop, 0); in av7110_av_start_play()
160 if (av7110->playing == RP_NONE) { in av7110_av_start_play()
161 av7110_ipack_reset(&av7110->ipack[0]); in av7110_av_start_play()
162 av7110_ipack_reset(&av7110->ipack[1]); in av7110_av_start_play()
165 av7110->playing |= av; in av7110_av_start_play()
166 switch (av7110->playing) { in av7110_av_start_play()
168 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Play, 2, AudioPES, 0); in av7110_av_start_play()
171 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Play, 2, VideoPES, 0); in av7110_av_start_play()
172 av7110->sinfo = 0; in av7110_av_start_play()
175 av7110->sinfo = 0; in av7110_av_start_play()
176 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Play, 2, AV_PES, 0); in av7110_av_start_play()
182 int av7110_av_stop(struct av7110 *av7110, int av) in av7110_av_stop() argument
185 dprintk(2, "av7110:%p, \n", av7110); in av7110_av_stop()
187 if (!(av7110->playing & av) && !(av7110->rec_mode & av)) in av7110_av_stop()
189 av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Stop, 0); in av7110_av_stop()
190 if (av7110->playing) { in av7110_av_stop()
191 av7110->playing &= ~av; in av7110_av_stop()
192 switch (av7110->playing) { in av7110_av_stop()
194 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Play, 2, AudioPES, 0); in av7110_av_stop()
197 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Play, 2, VideoPES, 0); in av7110_av_stop()
200 ret = av7110_set_vidmode(av7110, av7110->vidmode); in av7110_av_stop()
204 av7110->rec_mode &= ~av; in av7110_av_stop()
205 switch (av7110->rec_mode) { in av7110_av_stop()
207 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Record, 2, AudioPES, 0); in av7110_av_stop()
210 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Record, 2, VideoPES, 0); in av7110_av_stop()
266 int av7110_set_volume(struct av7110 *av7110, unsigned int volleft, in av7110_set_volume() argument
272 dprintk(2, "av7110:%p, \n", av7110); in av7110_set_volume()
274 av7110->mixer.volume_left = volleft; in av7110_set_volume()
275 av7110->mixer.volume_right = volright; in av7110_set_volume()
277 switch (av7110->adac_type) { in av7110_set_volume()
285 if ((err = SendDAC(av7110, 3, 0x80 + volleft))) in av7110_set_volume()
287 return SendDAC(av7110, 4, volright); in av7110_set_volume()
292 i2c_writereg(av7110, 0x20, 0x03, volleft); in av7110_set_volume()
293 i2c_writereg(av7110, 0x20, 0x04, volright); in av7110_set_volume()
301 msp_writereg(av7110, MSP_WR_DSP, 0x0001, balance << 8); in av7110_set_volume()
302 msp_writereg(av7110, MSP_WR_DSP, 0x0000, val); /* loudspeaker */ in av7110_set_volume()
303 msp_writereg(av7110, MSP_WR_DSP, 0x0006, val); /* headphonesr */ in av7110_set_volume()
311 msp_writereg(av7110, MSP_WR_DSP, 0x0001, balance << 8); in av7110_set_volume()
312 msp_writereg(av7110, MSP_WR_DSP, 0x0000, val); /* loudspeaker */ in av7110_set_volume()
319 int av7110_set_vidmode(struct av7110 *av7110, enum av7110_video_mode mode) in av7110_set_vidmode() argument
322 dprintk(2, "av7110:%p, \n", av7110); in av7110_set_vidmode()
324 ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, LoadVidCode, 1, mode); in av7110_set_vidmode()
326 if (!ret && !av7110->playing) { in av7110_set_vidmode()
327 ret = ChangePIDs(av7110, av7110->pids[DMX_PES_VIDEO], in av7110_set_vidmode()
328 av7110->pids[DMX_PES_AUDIO], in av7110_set_vidmode()
329 av7110->pids[DMX_PES_TELETEXT], in av7110_set_vidmode()
330 0, av7110->pids[DMX_PES_PCR]); in av7110_set_vidmode()
332 ret = av7110_fw_cmd(av7110, COMTYPE_PIDFILTER, Scan, 0); in av7110_set_vidmode()
349 static int get_video_format(struct av7110 *av7110, u8 *buf, int count) in get_video_format() argument
357 dprintk(2, "av7110:%p, \n", av7110); in get_video_format()
359 if (av7110->sinfo) in get_video_format()
369 ret = av7110_set_vidmode(av7110, sw2mode[sw]); in get_video_format()
372 av7110->sinfo = 1; in get_video_format()
409 struct av7110 *av7110 = (struct av7110 *) priv; in play_video_cb() local
410 dprintk(2, "av7110:%p, \n", av7110); in play_video_cb()
413 get_video_format(av7110, buf, count); in play_video_cb()
414 aux_ring_buffer_write(&av7110->avout, buf, count); in play_video_cb()
416 aux_ring_buffer_write(&av7110->aout, buf, count); in play_video_cb()
421 struct av7110 *av7110 = (struct av7110 *) priv; in play_audio_cb() local
422 dprintk(2, "av7110:%p, \n", av7110); in play_audio_cb()
424 aux_ring_buffer_write(&av7110->aout, buf, count); in play_audio_cb()
430 static ssize_t ts_play(struct av7110 *av7110, const char __user *buf, in ts_play() argument
439 rb = (type) ? &av7110->avout : &av7110->aout; in ts_play()
440 kb = av7110->kbuf[type]; in ts_play()
457 write_ts_to_decoder(av7110, type, kb, TS_SIZE); in ts_play()
466 #define FREE_COND (dvb_ringbuffer_free(&av7110->avout) >= 20 * 1024 && \
467 dvb_ringbuffer_free(&av7110->aout) >= 20 * 1024)
469 static ssize_t dvb_play(struct av7110 *av7110, const char __user *buf, in dvb_play() argument
473 dprintk(2, "av7110:%p, \n", av7110); in dvb_play()
475 if (!av7110->kbuf[type]) in dvb_play()
485 if (wait_event_interruptible(av7110->avout.queue, in dvb_play()
492 if (copy_from_user(av7110->kbuf[type], buf, n)) in dvb_play()
494 av7110_ipack_instant_repack(av7110->kbuf[type], n, in dvb_play()
495 &av7110->ipack[type]); in dvb_play()
502 static ssize_t dvb_play_kernel(struct av7110 *av7110, const u8 *buf, in dvb_play_kernel() argument
506 dprintk(2, "av7110:%p, \n", av7110); in dvb_play_kernel()
508 if (!av7110->kbuf[type]) in dvb_play_kernel()
518 if (wait_event_interruptible(av7110->avout.queue, in dvb_play_kernel()
525 av7110_ipack_instant_repack(buf, n, &av7110->ipack[type]); in dvb_play_kernel()
532 static ssize_t dvb_aplay(struct av7110 *av7110, const char __user *buf, in dvb_aplay() argument
536 dprintk(2, "av7110:%p, \n", av7110); in dvb_aplay()
538 if (!av7110->kbuf[type]) in dvb_aplay()
540 if (nonblock && dvb_ringbuffer_free(&av7110->aout) < 20 * 1024) in dvb_aplay()
544 if (dvb_ringbuffer_free(&av7110->aout) < 20 * 1024) { in dvb_aplay()
547 if (wait_event_interruptible(av7110->aout.queue, in dvb_aplay()
548 (dvb_ringbuffer_free(&av7110->aout) >= 20 * 1024))) in dvb_aplay()
554 if (copy_from_user(av7110->kbuf[type], buf, n)) in dvb_aplay()
556 av7110_ipack_instant_repack(av7110->kbuf[type], n, in dvb_aplay()
557 &av7110->ipack[type]); in dvb_aplay()
809 static int write_ts_to_decoder(struct av7110 *av7110, int type, const u8 *buf, size_t len) in write_ts_to_decoder() argument
811 struct ipack *ipack = &av7110->ipack[type]; in write_ts_to_decoder()
839 struct av7110 *av7110 = (struct av7110 *) demux->priv; in av7110_write_to_decoder() local
841 dprintk(2, "av7110:%p, \n", av7110); in av7110_write_to_decoder()
843 if (av7110->full_ts && demux->dmx.frontend->source != DMX_MEMORY_FE) in av7110_write_to_decoder()
848 if (av7110->audiostate.stream_source == AUDIO_SOURCE_MEMORY) in av7110_write_to_decoder()
852 if (av7110->videostate.stream_source == VIDEO_SOURCE_MEMORY) in av7110_write_to_decoder()
859 return write_ts_to_decoder(av7110, feed->pes_type, buf, len); in av7110_write_to_decoder()
867 void dvb_video_add_event(struct av7110 *av7110, struct video_event *event) in dvb_video_add_event() argument
869 struct dvb_video_events *events = &av7110->video_events; in dvb_video_add_event()
890 static int dvb_video_get_event (struct av7110 *av7110, struct video_event *event, int flags) in dvb_video_get_event() argument
892 struct dvb_video_events *events = &av7110->video_events; in dvb_video_get_event()
928 struct av7110 *av7110 = dvbdev->priv; in dvb_video_poll() local
931 dprintk(2, "av7110:%p, \n", av7110); in dvb_video_poll()
934 poll_wait(file, &av7110->avout.queue, wait); in dvb_video_poll()
936 poll_wait(file, &av7110->video_events.wait_queue, wait); in dvb_video_poll()
938 if (av7110->video_events.eventw != av7110->video_events.eventr) in dvb_video_poll()
942 if (av7110->playing) { in dvb_video_poll()
958 struct av7110 *av7110 = dvbdev->priv; in dvb_video_write() local
961 dprintk(2, "av7110:%p, \n", av7110); in dvb_video_write()
966 if (av7110->videostate.stream_source != VIDEO_SOURCE_MEMORY) in dvb_video_write()
972 return ts_play(av7110, buf, count, file->f_flags & O_NONBLOCK, 1); in dvb_video_write()
974 return dvb_play(av7110, buf, count, file->f_flags & O_NONBLOCK, 1); in dvb_video_write()
980 struct av7110 *av7110 = dvbdev->priv; in dvb_audio_poll() local
983 dprintk(2, "av7110:%p, \n", av7110); in dvb_audio_poll()
985 poll_wait(file, &av7110->aout.queue, wait); in dvb_audio_poll()
987 if (av7110->playing) { in dvb_audio_poll()
988 if (dvb_ringbuffer_free(&av7110->aout) >= 20 * 1024) in dvb_audio_poll()
1000 struct av7110 *av7110 = dvbdev->priv; in dvb_audio_write() local
1003 dprintk(2, "av7110:%p, \n", av7110); in dvb_audio_write()
1005 if (av7110->audiostate.stream_source != AUDIO_SOURCE_MEMORY) { in dvb_audio_write()
1013 return ts_play(av7110, buf, count, file->f_flags & O_NONBLOCK, 0); in dvb_audio_write()
1015 return dvb_aplay(av7110, buf, count, file->f_flags & O_NONBLOCK, 0); in dvb_audio_write()
1022 static int play_iframe(struct av7110 *av7110, char __user *buf, unsigned int len, int nonblock) in play_iframe() argument
1028 dprintk(2, "av7110:%p, \n", av7110); in play_iframe()
1033 if (!(av7110->playing & RP_VIDEO)) { in play_iframe()
1034 if (av7110_av_start_play(av7110, RP_VIDEO) < 0) in play_iframe()
1070 dvb_play_kernel(av7110, iframe_header, sizeof(iframe_header), 0, 1); in play_iframe()
1073 dvb_play(av7110, buf, len, 0, 1); in play_iframe()
1075 av7110_ipack_flush(&av7110->ipack[1]); in play_iframe()
1078 return vidcom(av7110, AV_VIDEO_CMD_FREEZE, 1); in play_iframe()
1102 static int dvb_compat_video_get_event(struct av7110 *av7110, in dvb_compat_video_get_event() argument
1108 ret = dvb_video_get_event(av7110, &ev, flags); in dvb_compat_video_get_event()
1124 struct av7110 *av7110 = dvbdev->priv; in dvb_video_ioctl() local
1128 dprintk(1, "av7110:%p, cmd=%04x\n", av7110,cmd); in dvb_video_ioctl()
1137 if (mutex_lock_interruptible(&av7110->ioctl_mutex)) in dvb_video_ioctl()
1142 av7110->videostate.play_state = VIDEO_STOPPED; in dvb_video_ioctl()
1143 if (av7110->videostate.stream_source == VIDEO_SOURCE_MEMORY) in dvb_video_ioctl()
1144 ret = av7110_av_stop(av7110, RP_VIDEO); in dvb_video_ioctl()
1146 ret = vidcom(av7110, AV_VIDEO_CMD_STOP, in dvb_video_ioctl()
1147 av7110->videostate.video_blank ? 0 : 1); in dvb_video_ioctl()
1149 av7110->trickmode = TRICK_NONE; in dvb_video_ioctl()
1153 av7110->trickmode = TRICK_NONE; in dvb_video_ioctl()
1154 if (av7110->videostate.play_state == VIDEO_FREEZED) { in dvb_video_ioctl()
1155 av7110->videostate.play_state = VIDEO_PLAYING; in dvb_video_ioctl()
1156 ret = vidcom(av7110, AV_VIDEO_CMD_PLAY, 0); in dvb_video_ioctl()
1160 if (av7110->videostate.stream_source == VIDEO_SOURCE_MEMORY) { in dvb_video_ioctl()
1161 if (av7110->playing == RP_AV) { in dvb_video_ioctl()
1162 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Stop, 0); in dvb_video_ioctl()
1165 av7110->playing &= ~RP_VIDEO; in dvb_video_ioctl()
1167 ret = av7110_av_start_play(av7110, RP_VIDEO); in dvb_video_ioctl()
1170 ret = vidcom(av7110, AV_VIDEO_CMD_PLAY, 0); in dvb_video_ioctl()
1172 av7110->videostate.play_state = VIDEO_PLAYING; in dvb_video_ioctl()
1176 av7110->videostate.play_state = VIDEO_FREEZED; in dvb_video_ioctl()
1177 if (av7110->playing & RP_VIDEO) in dvb_video_ioctl()
1178 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Pause, 0); in dvb_video_ioctl()
1180 ret = vidcom(av7110, AV_VIDEO_CMD_FREEZE, 1); in dvb_video_ioctl()
1182 av7110->trickmode = TRICK_FREEZE; in dvb_video_ioctl()
1186 if (av7110->playing & RP_VIDEO) in dvb_video_ioctl()
1187 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Continue, 0); in dvb_video_ioctl()
1189 ret = vidcom(av7110, AV_VIDEO_CMD_PLAY, 0); in dvb_video_ioctl()
1191 av7110->videostate.play_state = VIDEO_PLAYING; in dvb_video_ioctl()
1192 av7110->trickmode = TRICK_NONE; in dvb_video_ioctl()
1197 av7110->videostate.stream_source = (video_stream_source_t) arg; in dvb_video_ioctl()
1201 av7110->videostate.video_blank = (int) arg; in dvb_video_ioctl()
1205 memcpy(parg, &av7110->videostate, sizeof(struct video_status)); in dvb_video_ioctl()
1210 ret = dvb_compat_video_get_event(av7110, parg, file->f_flags); in dvb_video_ioctl()
1215 ret = dvb_video_get_event(av7110, parg, file->f_flags); in dvb_video_ioctl()
1219 memcpy(parg, &av7110->video_size, sizeof(video_size_t)); in dvb_video_ioctl()
1227 av7110->display_panscan = VID_PAN_SCAN_PREF; in dvb_video_ioctl()
1230 av7110->display_panscan = VID_VC_AND_PS_PREF; in dvb_video_ioctl()
1233 av7110->display_panscan = VID_CENTRE_CUT_PREF; in dvb_video_ioctl()
1240 av7110->videostate.display_format = format; in dvb_video_ioctl()
1241 ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetPanScanType, in dvb_video_ioctl()
1242 1, av7110->display_panscan); in dvb_video_ioctl()
1251 av7110->display_ar = arg; in dvb_video_ioctl()
1252 ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetMonitorType, in dvb_video_ioctl()
1261 av7110->videostate.stream_source = VIDEO_SOURCE_MEMORY; in dvb_video_ioctl()
1262 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); in dvb_video_ioctl()
1263 ret = play_iframe(av7110, compat_ptr(pic->iFrame), in dvb_video_ioctl()
1273 av7110->videostate.stream_source = VIDEO_SOURCE_MEMORY; in dvb_video_ioctl()
1274 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); in dvb_video_ioctl()
1275 ret = play_iframe(av7110, pic->iFrame, pic->size, in dvb_video_ioctl()
1282 if (av7110->playing & RP_VIDEO) in dvb_video_ioctl()
1283 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, in dvb_video_ioctl()
1286 ret = vidcom(av7110, AV_VIDEO_CMD_FFWD, arg); in dvb_video_ioctl()
1288 av7110->trickmode = TRICK_FAST; in dvb_video_ioctl()
1289 av7110->videostate.play_state = VIDEO_PLAYING; in dvb_video_ioctl()
1294 if (av7110->playing&RP_VIDEO) { in dvb_video_ioctl()
1295 if (av7110->trickmode != TRICK_SLOW) in dvb_video_ioctl()
1296 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Slow, 2, 0, 0); in dvb_video_ioctl()
1298 ret = vidcom(av7110, AV_VIDEO_CMD_SLOW, arg); in dvb_video_ioctl()
1300 ret = vidcom(av7110, AV_VIDEO_CMD_PLAY, 0); in dvb_video_ioctl()
1302 ret = vidcom(av7110, AV_VIDEO_CMD_STOP, 0); in dvb_video_ioctl()
1304 ret = vidcom(av7110, AV_VIDEO_CMD_SLOW, arg); in dvb_video_ioctl()
1307 av7110->trickmode = TRICK_SLOW; in dvb_video_ioctl()
1308 av7110->videostate.play_state = VIDEO_PLAYING; in dvb_video_ioctl()
1318 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); in dvb_video_ioctl()
1319 av7110_ipack_reset(&av7110->ipack[1]); in dvb_video_ioctl()
1320 if (av7110->playing == RP_AV) { in dvb_video_ioctl()
1321 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, in dvb_video_ioctl()
1325 if (av7110->trickmode == TRICK_FAST) in dvb_video_ioctl()
1326 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, in dvb_video_ioctl()
1328 if (av7110->trickmode == TRICK_SLOW) { in dvb_video_ioctl()
1329 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, in dvb_video_ioctl()
1332 ret = vidcom(av7110, AV_VIDEO_CMD_SLOW, arg); in dvb_video_ioctl()
1334 if (av7110->trickmode == TRICK_FREEZE) in dvb_video_ioctl()
1335 ret = vidcom(av7110, AV_VIDEO_CMD_STOP, 1); in dvb_video_ioctl()
1347 mutex_unlock(&av7110->ioctl_mutex); in dvb_video_ioctl()
1355 struct av7110 *av7110 = dvbdev->priv; in dvb_audio_ioctl() local
1359 dprintk(1, "av7110:%p, cmd=%04x\n", av7110,cmd); in dvb_audio_ioctl()
1365 if (mutex_lock_interruptible(&av7110->ioctl_mutex)) in dvb_audio_ioctl()
1370 if (av7110->audiostate.stream_source == AUDIO_SOURCE_MEMORY) in dvb_audio_ioctl()
1371 ret = av7110_av_stop(av7110, RP_AUDIO); in dvb_audio_ioctl()
1373 ret = audcom(av7110, AUDIO_CMD_MUTE); in dvb_audio_ioctl()
1375 av7110->audiostate.play_state = AUDIO_STOPPED; in dvb_audio_ioctl()
1379 if (av7110->audiostate.stream_source == AUDIO_SOURCE_MEMORY) in dvb_audio_ioctl()
1380 ret = av7110_av_start_play(av7110, RP_AUDIO); in dvb_audio_ioctl()
1382 ret = audcom(av7110, AUDIO_CMD_UNMUTE); in dvb_audio_ioctl()
1384 av7110->audiostate.play_state = AUDIO_PLAYING; in dvb_audio_ioctl()
1388 ret = audcom(av7110, AUDIO_CMD_MUTE); in dvb_audio_ioctl()
1390 av7110->audiostate.play_state = AUDIO_PAUSED; in dvb_audio_ioctl()
1394 if (av7110->audiostate.play_state == AUDIO_PAUSED) { in dvb_audio_ioctl()
1395 av7110->audiostate.play_state = AUDIO_PLAYING; in dvb_audio_ioctl()
1396 ret = audcom(av7110, AUDIO_CMD_UNMUTE | AUDIO_CMD_PCM16); in dvb_audio_ioctl()
1401 av7110->audiostate.stream_source = (audio_stream_source_t) arg; in dvb_audio_ioctl()
1406 ret = audcom(av7110, arg ? AUDIO_CMD_MUTE : AUDIO_CMD_UNMUTE); in dvb_audio_ioctl()
1408 av7110->audiostate.mute_state = (int) arg; in dvb_audio_ioctl()
1413 av7110->audiostate.AV_sync_state = (int) arg; in dvb_audio_ioctl()
1414 ret = audcom(av7110, arg ? AUDIO_CMD_SYNC_ON : AUDIO_CMD_SYNC_OFF); in dvb_audio_ioctl()
1418 if (FW_VERSION(av7110->arm_app) < 0x2621) in dvb_audio_ioctl()
1420 av7110->audiostate.bypass_mode = (int)arg; in dvb_audio_ioctl()
1424 av7110->audiostate.channel_select = (audio_channel_select_t) arg; in dvb_audio_ioctl()
1425 switch(av7110->audiostate.channel_select) { in dvb_audio_ioctl()
1427 ret = audcom(av7110, AUDIO_CMD_STEREO); in dvb_audio_ioctl()
1429 if (av7110->adac_type == DVB_ADAC_CRYSTAL) in dvb_audio_ioctl()
1430 i2c_writereg(av7110, 0x20, 0x02, 0x49); in dvb_audio_ioctl()
1431 else if (av7110->adac_type == DVB_ADAC_MSP34x5) in dvb_audio_ioctl()
1432 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0220); in dvb_audio_ioctl()
1436 ret = audcom(av7110, AUDIO_CMD_MONO_L); in dvb_audio_ioctl()
1438 if (av7110->adac_type == DVB_ADAC_CRYSTAL) in dvb_audio_ioctl()
1439 i2c_writereg(av7110, 0x20, 0x02, 0x4a); in dvb_audio_ioctl()
1440 else if (av7110->adac_type == DVB_ADAC_MSP34x5) in dvb_audio_ioctl()
1441 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0200); in dvb_audio_ioctl()
1445 ret = audcom(av7110, AUDIO_CMD_MONO_R); in dvb_audio_ioctl()
1447 if (av7110->adac_type == DVB_ADAC_CRYSTAL) in dvb_audio_ioctl()
1448 i2c_writereg(av7110, 0x20, 0x02, 0x45); in dvb_audio_ioctl()
1449 else if (av7110->adac_type == DVB_ADAC_MSP34x5) in dvb_audio_ioctl()
1450 msp_writereg(av7110, MSP_WR_DSP, 0x0008, 0x0210); in dvb_audio_ioctl()
1460 memcpy(parg, &av7110->audiostate, sizeof(struct audio_status)); in dvb_audio_ioctl()
1464 if (FW_VERSION(av7110->arm_app) < 0x2621) in dvb_audio_ioctl()
1472 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); in dvb_audio_ioctl()
1473 av7110_ipack_reset(&av7110->ipack[0]); in dvb_audio_ioctl()
1474 if (av7110->playing == RP_AV) in dvb_audio_ioctl()
1475 ret = av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, in dvb_audio_ioctl()
1485 ret = av7110_set_volume(av7110, amix->volume_left, amix->volume_right); in dvb_audio_ioctl()
1496 mutex_unlock(&av7110->ioctl_mutex); in dvb_audio_ioctl()
1504 struct av7110 *av7110 = dvbdev->priv; in dvb_video_open() local
1507 dprintk(2, "av7110:%p, \n", av7110); in dvb_video_open()
1513 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); in dvb_video_open()
1514 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); in dvb_video_open()
1515 av7110->video_blank = 1; in dvb_video_open()
1516 av7110->audiostate.AV_sync_state = 1; in dvb_video_open()
1517 av7110->videostate.stream_source = VIDEO_SOURCE_DEMUX; in dvb_video_open()
1520 av7110->video_events.eventr = av7110->video_events.eventw = 0; in dvb_video_open()
1529 struct av7110 *av7110 = dvbdev->priv; in dvb_video_release() local
1531 dprintk(2, "av7110:%p, \n", av7110); in dvb_video_release()
1534 av7110_av_stop(av7110, RP_VIDEO); in dvb_video_release()
1543 struct av7110 *av7110 = dvbdev->priv; in dvb_audio_open() local
1546 dprintk(2, "av7110:%p, \n", av7110); in dvb_audio_open()
1550 dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); in dvb_audio_open()
1551 av7110->audiostate.stream_source = AUDIO_SOURCE_DEMUX; in dvb_audio_open()
1558 struct av7110 *av7110 = dvbdev->priv; in dvb_audio_release() local
1560 dprintk(2, "av7110:%p, \n", av7110); in dvb_audio_release()
1562 av7110_av_stop(av7110, RP_AUDIO); in dvb_audio_release()
1612 int av7110_av_register(struct av7110 *av7110) in av7110_av_register() argument
1614 av7110->audiostate.AV_sync_state = 0; in av7110_av_register()
1615 av7110->audiostate.mute_state = 0; in av7110_av_register()
1616 av7110->audiostate.play_state = AUDIO_STOPPED; in av7110_av_register()
1617 av7110->audiostate.stream_source = AUDIO_SOURCE_DEMUX; in av7110_av_register()
1618 av7110->audiostate.channel_select = AUDIO_STEREO; in av7110_av_register()
1619 av7110->audiostate.bypass_mode = 0; in av7110_av_register()
1621 av7110->videostate.video_blank = 0; in av7110_av_register()
1622 av7110->videostate.play_state = VIDEO_STOPPED; in av7110_av_register()
1623 av7110->videostate.stream_source = VIDEO_SOURCE_DEMUX; in av7110_av_register()
1624 av7110->videostate.video_format = VIDEO_FORMAT_4_3; in av7110_av_register()
1625 av7110->videostate.display_format = VIDEO_LETTER_BOX; in av7110_av_register()
1626 av7110->display_ar = VIDEO_FORMAT_4_3; in av7110_av_register()
1627 av7110->display_panscan = VID_VC_AND_PS_PREF; in av7110_av_register()
1629 init_waitqueue_head(&av7110->video_events.wait_queue); in av7110_av_register()
1630 spin_lock_init(&av7110->video_events.lock); in av7110_av_register()
1631 av7110->video_events.eventw = av7110->video_events.eventr = 0; in av7110_av_register()
1632 av7110->video_events.overflow = 0; in av7110_av_register()
1633 memset(&av7110->video_size, 0, sizeof (video_size_t)); in av7110_av_register()
1635 dvb_register_device(&av7110->dvb_adapter, &av7110->video_dev, in av7110_av_register()
1636 &dvbdev_video, av7110, DVB_DEVICE_VIDEO, 0); in av7110_av_register()
1638 dvb_register_device(&av7110->dvb_adapter, &av7110->audio_dev, in av7110_av_register()
1639 &dvbdev_audio, av7110, DVB_DEVICE_AUDIO, 0); in av7110_av_register()
1644 void av7110_av_unregister(struct av7110 *av7110) in av7110_av_unregister() argument
1646 dvb_unregister_device(av7110->audio_dev); in av7110_av_unregister()
1647 dvb_unregister_device(av7110->video_dev); in av7110_av_unregister()
1650 int av7110_av_init(struct av7110 *av7110) in av7110_av_init() argument
1656 struct ipack *ipack = av7110->ipack + i; in av7110_av_init()
1664 ipack->data = av7110; in av7110_av_init()
1667 dvb_ringbuffer_init(&av7110->avout, av7110->iobuf, AVOUTLEN); in av7110_av_init()
1668 dvb_ringbuffer_init(&av7110->aout, av7110->iobuf + AVOUTLEN, AOUTLEN); in av7110_av_init()
1670 av7110->kbuf[0] = (u8 *)(av7110->iobuf + AVOUTLEN + AOUTLEN + BMPLEN); in av7110_av_init()
1671 av7110->kbuf[1] = av7110->kbuf[0] + 2 * IPACKS; in av7110_av_init()
1676 void av7110_av_exit(struct av7110 *av7110) in av7110_av_exit() argument
1678 av7110_ipack_free(&av7110->ipack[0]); in av7110_av_exit()
1679 av7110_ipack_free(&av7110->ipack[1]); in av7110_av_exit()