• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/media/dvb/firewire/

Lines Matching refs:fdtv

218 static int avc_write(struct firedtv *fdtv)
222 fdtv->avc_reply_received = false;
226 debug_fcp(fdtv->avc_data, fdtv->avc_data_length);
228 err = fdtv->backend->write(fdtv, FCP_COMMAND_REGISTER,
229 fdtv->avc_data, fdtv->avc_data_length);
231 dev_err(fdtv->device, "FCP command write failed\n");
240 if (wait_event_timeout(fdtv->avc_wait,
241 fdtv->avc_reply_received,
245 dev_err(fdtv->device, "FCP response timed out\n");
259 int avc_recv(struct firedtv *fdtv, void *data, size_t length)
269 fdtv_handle_rc(fdtv, r->operand[4] << 8 | r->operand[5]);
270 schedule_work(&fdtv->remote_ctrl_work);
273 if (is_register_rc((void *)fdtv->avc_data))
277 dev_info(fdtv->device,
283 if (fdtv->avc_reply_received) {
284 dev_err(fdtv->device, "out-of-order AVC response, ignored\n");
288 memcpy(fdtv->avc_data, data, length);
289 fdtv->avc_data_length = length;
291 fdtv->avc_reply_received = true;
292 wake_up(&fdtv->avc_wait);
297 static int add_pid_filter(struct firedtv *fdtv, u8 *operand)
302 if (test_bit(i, &fdtv->channel_active)) {
305 operand[pos++] = (fdtv->channel_pid[i] >> 8) & 0x1f;
306 operand[pos++] = fdtv->channel_pid[i] & 0xff;
321 static int avc_tuner_tuneqpsk(struct firedtv *fdtv,
324 struct avc_command_frame *c = (void *)fdtv->avc_data;
331 if (fdtv->type == FIREDTV_DVB_S2)
356 if (fdtv->voltage == 0xff)
358 else if (fdtv->voltage == SEC_VOLTAGE_18) /* polarisation */
363 if (fdtv->tone == 0xff)
365 else if (fdtv->tone == SEC_TONE_ON) /* band */
370 if (fdtv->type == FIREDTV_DVB_S2) {
381 static int avc_tuner_dsd_dvb_c(struct firedtv *fdtv,
384 struct avc_command_frame *c = (void *)fdtv->avc_data;
446 return 22 + add_pid_filter(fdtv, &c->operand[22]);
449 static int avc_tuner_dsd_dvb_t(struct firedtv *fdtv,
453 struct avc_command_frame *c = (void *)fdtv->avc_data;
548 return 17 + add_pid_filter(fdtv, &c->operand[17]);
551 int avc_tuner_dsd(struct firedtv *fdtv,
554 struct avc_command_frame *c = (void *)fdtv->avc_data;
557 mutex_lock(&fdtv->avc_mutex);
560 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
562 switch (fdtv->type) {
564 case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fdtv, params); break;
565 case FIREDTV_DVB_C: pos = avc_tuner_dsd_dvb_c(fdtv, params); break;
566 case FIREDTV_DVB_T: pos = avc_tuner_dsd_dvb_t(fdtv, params); break;
572 fdtv->avc_data_length = ALIGN(3 + pos, 4);
573 ret = avc_write(fdtv);
574 mutex_unlock(&fdtv->avc_mutex);
582 int avc_tuner_set_pids(struct firedtv *fdtv, unsigned char pidc, u16 pid[])
584 struct avc_command_frame *c = (void *)fdtv->avc_data;
590 mutex_lock(&fdtv->avc_mutex);
593 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
615 fdtv->avc_data_length = ALIGN(3 + pos, 4);
616 ret = avc_write(fdtv);
619 mutex_unlock(&fdtv->avc_mutex);
627 int avc_tuner_get_ts(struct firedtv *fdtv)
629 struct avc_command_frame *c = (void *)fdtv->avc_data;
632 mutex_lock(&fdtv->avc_mutex);
635 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
638 sl = fdtv->type == FIREDTV_DVB_T ? 0x0c : 0x11;
654 fdtv->avc_data_length = fdtv->type == FIREDTV_DVB_T ? 24 : 28;
655 ret = avc_write(fdtv);
658 mutex_unlock(&fdtv->avc_mutex);
666 int avc_identify_subunit(struct firedtv *fdtv)
668 struct avc_command_frame *c = (void *)fdtv->avc_data;
669 struct avc_response_frame *r = (void *)fdtv->avc_data;
672 mutex_lock(&fdtv->avc_mutex);
675 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
687 fdtv->avc_data_length = 12;
688 ret = avc_write(fdtv);
695 dev_err(fdtv->device, "cannot read subunit identifier\n");
699 mutex_unlock(&fdtv->avc_mutex);
706 int avc_tuner_status(struct firedtv *fdtv, struct firedtv_tuner_status *stat)
708 struct avc_command_frame *c = (void *)fdtv->avc_data;
709 struct avc_response_frame *r = (void *)fdtv->avc_data;
712 mutex_lock(&fdtv->avc_mutex);
715 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
727 fdtv->avc_data_length = 12;
728 ret = avc_write(fdtv);
734 dev_err(fdtv->device, "cannot read tuner status\n");
741 dev_err(fdtv->device, "got invalid tuner status\n");
780 mutex_unlock(&fdtv->avc_mutex);
785 int avc_lnb_control(struct firedtv *fdtv, char voltage, char burst,
789 struct avc_command_frame *c = (void *)fdtv->avc_data;
790 struct avc_response_frame *r = (void *)fdtv->avc_data;
793 mutex_lock(&fdtv->avc_mutex);
796 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
817 fdtv->avc_data_length = ALIGN(3 + pos, 4);
818 ret = avc_write(fdtv);
823 dev_err(fdtv->device, "LNB control failed\n");
827 mutex_unlock(&fdtv->avc_mutex);
832 int avc_register_remote_control(struct firedtv *fdtv)
834 struct avc_command_frame *c = (void *)fdtv->avc_data;
837 mutex_lock(&fdtv->avc_mutex);
849 fdtv->avc_data_length = 8;
850 ret = avc_write(fdtv);
853 mutex_unlock(&fdtv->avc_mutex);
860 struct firedtv *fdtv =
864 avc_register_remote_control(fdtv);
883 int avc_ca_app_info(struct firedtv *fdtv, char *app_info, unsigned int *len)
885 struct avc_command_frame *c = (void *)fdtv->avc_data;
886 struct avc_response_frame *r = (void *)fdtv->avc_data;
889 mutex_lock(&fdtv->avc_mutex);
892 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
903 fdtv->avc_data_length = 12;
904 ret = avc_write(fdtv);
918 mutex_unlock(&fdtv->avc_mutex);
923 int avc_ca_info(struct firedtv *fdtv, char *app_info, unsigned int *len)
925 struct avc_command_frame *c = (void *)fdtv->avc_data;
926 struct avc_response_frame *r = (void *)fdtv->avc_data;
929 mutex_lock(&fdtv->avc_mutex);
932 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
943 fdtv->avc_data_length = 12;
944 ret = avc_write(fdtv);
958 mutex_unlock(&fdtv->avc_mutex);
963 int avc_ca_reset(struct firedtv *fdtv)
965 struct avc_command_frame *c = (void *)fdtv->avc_data;
968 mutex_lock(&fdtv->avc_mutex);
971 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
984 fdtv->avc_data_length = 12;
985 ret = avc_write(fdtv);
988 mutex_unlock(&fdtv->avc_mutex);
993 int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length)
995 struct avc_command_frame *c = (void *)fdtv->avc_data;
996 struct avc_response_frame *r = (void *)fdtv->avc_data;
1009 mutex_lock(&fdtv->avc_mutex);
1012 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
1016 dev_info(fdtv->device, "forcing list_management to ONLY\n");
1058 dev_err(fdtv->device,
1080 dev_err(fdtv->device, "invalid pmt_cmd_id %d "
1103 fdtv->avc_data_length = ALIGN(3 + write_pos, 4);
1104 ret = avc_write(fdtv);
1109 dev_err(fdtv->device,
1114 mutex_unlock(&fdtv->avc_mutex);
1119 int avc_ca_get_time_date(struct firedtv *fdtv, int *interval)
1121 struct avc_command_frame *c = (void *)fdtv->avc_data;
1122 struct avc_response_frame *r = (void *)fdtv->avc_data;
1125 mutex_lock(&fdtv->avc_mutex);
1128 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
1139 fdtv->avc_data_length = 12;
1140 ret = avc_write(fdtv);
1147 mutex_unlock(&fdtv->avc_mutex);
1152 int avc_ca_enter_menu(struct firedtv *fdtv)
1154 struct avc_command_frame *c = (void *)fdtv->avc_data;
1157 mutex_lock(&fdtv->avc_mutex);
1160 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
1171 fdtv->avc_data_length = 12;
1172 ret = avc_write(fdtv);
1175 mutex_unlock(&fdtv->avc_mutex);
1180 int avc_ca_get_mmi(struct firedtv *fdtv, char *mmi_object, unsigned int *len)
1182 struct avc_command_frame *c = (void *)fdtv->avc_data;
1183 struct avc_response_frame *r = (void *)fdtv->avc_data;
1186 mutex_lock(&fdtv->avc_mutex);
1189 c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
1200 fdtv->avc_data_length = 12;
1201 ret = avc_write(fdtv);
1209 mutex_unlock(&fdtv->avc_mutex);
1216 static int cmp_read(struct firedtv *fdtv, u64 addr, __be32 *data)
1220 mutex_lock(&fdtv->avc_mutex);
1222 ret = fdtv->backend->read(fdtv, addr, data);
1224 dev_err(fdtv->device, "CMP: read I/O error\n");
1226 mutex_unlock(&fdtv->avc_mutex);
1231 static int cmp_lock(struct firedtv *fdtv, u64 addr, __be32 data[])
1235 mutex_lock(&fdtv->avc_mutex);
1238 memcpy(fdtv->avc_data, data, 8);
1240 ret = fdtv->backend->lock(fdtv, addr, fdtv->avc_data);
1242 dev_err(fdtv->device, "CMP: lock I/O error\n");
1244 memcpy(data, fdtv->avc_data, 8);
1246 mutex_unlock(&fdtv->avc_mutex);
1271 int cmp_establish_pp_connection(struct firedtv *fdtv, int plug, int channel)
1278 ret = cmp_read(fdtv, opcr_address, opcr);
1284 dev_err(fdtv->device, "CMP: output offline\n");
1292 dev_err(fdtv->device, "CMP: cannot change channel\n");
1295 dev_info(fdtv->device, "CMP: overlaying connection\n");
1311 ret = cmp_lock(fdtv, opcr_address, opcr);
1325 void cmp_break_pp_connection(struct firedtv *fdtv, int plug, int channel)
1331 if (cmp_read(fdtv, opcr_address, opcr) < 0)
1337 dev_err(fdtv->device, "CMP: no connection to break\n");
1347 if (cmp_lock(fdtv, opcr_address, opcr) < 0)