Lines Matching refs:client
79 static void sms_board_dvb3_event(struct smsdvb_client_t *client, in sms_board_dvb3_event() argument
82 struct smscore_device_t *coredev = client->coredev; in sms_board_dvb3_event()
97 if (client->event_fe_state != DVB3_EVENT_FE_LOCK) { in sms_board_dvb3_event()
98 client->event_fe_state = DVB3_EVENT_FE_LOCK; in sms_board_dvb3_event()
104 if (client->event_fe_state != DVB3_EVENT_FE_UNLOCK) { in sms_board_dvb3_event()
105 client->event_fe_state = DVB3_EVENT_FE_UNLOCK; in sms_board_dvb3_event()
111 if (client->event_unc_state != DVB3_EVENT_UNC_OK) { in sms_board_dvb3_event()
112 client->event_unc_state = DVB3_EVENT_UNC_OK; in sms_board_dvb3_event()
118 if (client->event_unc_state != DVB3_EVENT_UNC_ERR) { in sms_board_dvb3_event()
119 client->event_unc_state = DVB3_EVENT_UNC_ERR; in sms_board_dvb3_event()
133 struct smsdvb_client_t *client = in smsdvb_stats_not_ready() local
135 struct smscore_device_t *coredev = client->coredev; in smsdvb_stats_not_ready()
226 static void smsdvb_update_tx_params(struct smsdvb_client_t *client, in smsdvb_update_tx_params() argument
229 struct dvb_frontend *fe = &client->frontend; in smsdvb_update_tx_params()
233 client->fe_status = sms_to_status(p->is_demod_locked, 0); in smsdvb_update_tx_params()
243 static void smsdvb_update_per_slices(struct smsdvb_client_t *client, in smsdvb_update_per_slices() argument
246 struct dvb_frontend *fe = &client->frontend; in smsdvb_update_per_slices()
250 client->fe_status = sms_to_status(p->is_demod_locked, p->is_rf_locked); in smsdvb_update_per_slices()
264 client->last_per = c->block_error.stat[0].uvalue; in smsdvb_update_per_slices()
279 client->legacy_per = tmp; in smsdvb_update_per_slices()
282 static void smsdvb_update_dvb_stats(struct smsdvb_client_t *client, in smsdvb_update_dvb_stats() argument
285 struct dvb_frontend *fe = &client->frontend; in smsdvb_update_dvb_stats()
288 if (client->prt_dvb_stats) in smsdvb_update_dvb_stats()
289 client->prt_dvb_stats(client->debug_data, p); in smsdvb_update_dvb_stats()
291 client->fe_status = sms_to_status(p->is_demod_locked, p->is_rf_locked); in smsdvb_update_dvb_stats()
295 client->fe_status = sms_to_status(p->is_demod_locked, 0); in smsdvb_update_dvb_stats()
318 client->last_per = c->block_error.stat[0].uvalue; in smsdvb_update_dvb_stats()
331 client->legacy_ber = p->ber; in smsdvb_update_dvb_stats()
334 static void smsdvb_update_isdbt_stats(struct smsdvb_client_t *client, in smsdvb_update_isdbt_stats() argument
337 struct dvb_frontend *fe = &client->frontend; in smsdvb_update_isdbt_stats()
342 if (client->prt_isdb_stats) in smsdvb_update_isdbt_stats()
343 client->prt_isdb_stats(client->debug_data, p); in smsdvb_update_isdbt_stats()
345 client->fe_status = sms_to_status(p->is_demod_locked, p->is_rf_locked); in smsdvb_update_isdbt_stats()
384 client->last_per = c->block_error.stat[0].uvalue; in smsdvb_update_isdbt_stats()
430 static void smsdvb_update_isdbt_stats_ex(struct smsdvb_client_t *client, in smsdvb_update_isdbt_stats_ex() argument
433 struct dvb_frontend *fe = &client->frontend; in smsdvb_update_isdbt_stats_ex()
438 if (client->prt_isdb_stats_ex) in smsdvb_update_isdbt_stats_ex()
439 client->prt_isdb_stats_ex(client->debug_data, p); in smsdvb_update_isdbt_stats_ex()
443 client->fe_status = sms_to_status(p->is_demod_locked, 0); in smsdvb_update_isdbt_stats_ex()
468 client->last_per = c->block_error.stat[0].uvalue; in smsdvb_update_isdbt_stats_ex()
520 struct smsdvb_client_t *client = (struct smsdvb_client_t *) context; in smsdvb_onresponse() local
524 struct dvb_frontend *fe = &client->frontend; in smsdvb_onresponse()
534 if (client->feed_users && client->has_tuned) in smsdvb_onresponse()
535 dvb_dmx_swfilter(&client->demux, p, in smsdvb_onresponse()
541 complete(&client->tune_done); in smsdvb_onresponse()
545 client->fe_status = FE_HAS_SIGNAL | FE_HAS_CARRIER | in smsdvb_onresponse()
553 client->fe_status = 0; in smsdvb_onresponse()
559 smsdvb_update_tx_params(client, p); in smsdvb_onresponse()
565 smsdvb_update_per_slices(client, p); in smsdvb_onresponse()
571 switch (smscore_get_device_mode(client->coredev)) { in smsdvb_onresponse()
574 smsdvb_update_isdbt_stats(client, p); in smsdvb_onresponse()
578 smsdvb_update_dvb_stats(client, p + sizeof(u32)); in smsdvb_onresponse()
587 smsdvb_update_isdbt_stats_ex(client, p + sizeof(u32)); in smsdvb_onresponse()
593 smscore_putbuffer(client->coredev, cb); in smsdvb_onresponse()
596 if (client->fe_status & FE_HAS_LOCK) { in smsdvb_onresponse()
597 sms_board_dvb3_event(client, DVB3_EVENT_FE_LOCK); in smsdvb_onresponse()
598 if (client->last_per == c->block_error.stat[0].uvalue) in smsdvb_onresponse()
599 sms_board_dvb3_event(client, DVB3_EVENT_UNC_OK); in smsdvb_onresponse()
601 sms_board_dvb3_event(client, DVB3_EVENT_UNC_ERR); in smsdvb_onresponse()
602 client->has_tuned = true; in smsdvb_onresponse()
605 client->has_tuned = false; in smsdvb_onresponse()
606 sms_board_dvb3_event(client, DVB3_EVENT_FE_UNLOCK); in smsdvb_onresponse()
608 complete(&client->stats_done); in smsdvb_onresponse()
614 static void smsdvb_unregister_client(struct smsdvb_client_t *client) in smsdvb_unregister_client() argument
618 list_del(&client->entry); in smsdvb_unregister_client()
620 smsdvb_debugfs_release(client); in smsdvb_unregister_client()
621 smscore_unregister_client(client->smsclient); in smsdvb_unregister_client()
622 dvb_unregister_frontend(&client->frontend); in smsdvb_unregister_client()
623 dvb_dmxdev_release(&client->dmxdev); in smsdvb_unregister_client()
624 dvb_dmx_release(&client->demux); in smsdvb_unregister_client()
625 dvb_unregister_adapter(&client->adapter); in smsdvb_unregister_client()
626 kfree(client); in smsdvb_unregister_client()
640 struct smsdvb_client_t *client = in smsdvb_start_feed() local
647 client->feed_users++; in smsdvb_start_feed()
656 return smsclient_sendrequest(client->smsclient, in smsdvb_start_feed()
662 struct smsdvb_client_t *client = in smsdvb_stop_feed() local
669 client->feed_users--; in smsdvb_stop_feed()
678 return smsclient_sendrequest(client->smsclient, in smsdvb_stop_feed()
682 static int smsdvb_sendrequest_and_wait(struct smsdvb_client_t *client, in smsdvb_sendrequest_and_wait() argument
688 rc = smsclient_sendrequest(client->smsclient, buffer, size); in smsdvb_sendrequest_and_wait()
697 static int smsdvb_send_statistics_request(struct smsdvb_client_t *client) in smsdvb_send_statistics_request() argument
703 if (client->get_stats_jiffies && in smsdvb_send_statistics_request()
704 (!time_after(jiffies, client->get_stats_jiffies))) in smsdvb_send_statistics_request()
706 client->get_stats_jiffies = jiffies + msecs_to_jiffies(100); in smsdvb_send_statistics_request()
713 switch (smscore_get_device_mode(client->coredev)) { in smsdvb_send_statistics_request()
719 if (client->coredev->fw_version >= 0x800) in smsdvb_send_statistics_request()
728 rc = smsdvb_sendrequest_and_wait(client, &msg, sizeof(msg), in smsdvb_send_statistics_request()
729 &client->stats_done); in smsdvb_send_statistics_request()
734 static inline int led_feedback(struct smsdvb_client_t *client) in led_feedback() argument
736 if (!(client->fe_status & FE_HAS_LOCK)) in led_feedback()
737 return sms_board_led_feedback(client->coredev, SMS_LED_OFF); in led_feedback()
739 return sms_board_led_feedback(client->coredev, in led_feedback()
740 (client->legacy_ber == 0) ? in led_feedback()
747 struct smsdvb_client_t *client; in smsdvb_read_status() local
748 client = container_of(fe, struct smsdvb_client_t, frontend); in smsdvb_read_status()
750 rc = smsdvb_send_statistics_request(client); in smsdvb_read_status()
752 *stat = client->fe_status; in smsdvb_read_status()
754 led_feedback(client); in smsdvb_read_status()
762 struct smsdvb_client_t *client; in smsdvb_read_ber() local
764 client = container_of(fe, struct smsdvb_client_t, frontend); in smsdvb_read_ber()
766 rc = smsdvb_send_statistics_request(client); in smsdvb_read_ber()
768 *ber = client->legacy_ber; in smsdvb_read_ber()
770 led_feedback(client); in smsdvb_read_ber()
780 struct smsdvb_client_t *client; in smsdvb_read_signal_strength() local
782 client = container_of(fe, struct smsdvb_client_t, frontend); in smsdvb_read_signal_strength()
784 rc = smsdvb_send_statistics_request(client); in smsdvb_read_signal_strength()
793 led_feedback(client); in smsdvb_read_signal_strength()
802 struct smsdvb_client_t *client; in smsdvb_read_snr() local
804 client = container_of(fe, struct smsdvb_client_t, frontend); in smsdvb_read_snr()
806 rc = smsdvb_send_statistics_request(client); in smsdvb_read_snr()
811 led_feedback(client); in smsdvb_read_snr()
820 struct smsdvb_client_t *client; in smsdvb_read_ucblocks() local
822 client = container_of(fe, struct smsdvb_client_t, frontend); in smsdvb_read_ucblocks()
824 rc = smsdvb_send_statistics_request(client); in smsdvb_read_ucblocks()
828 led_feedback(client); in smsdvb_read_ucblocks()
847 struct smsdvb_client_t *client = in smsdvb_dvbt_set_frontend() local
857 client->fe_status = 0; in smsdvb_dvbt_set_frontend()
858 client->event_fe_state = -1; in smsdvb_dvbt_set_frontend()
859 client->event_unc_state = -1; in smsdvb_dvbt_set_frontend()
889 ret = sms_board_lna_control(client->coredev, 0); in smsdvb_dvbt_set_frontend()
894 ret = smsdvb_sendrequest_and_wait(client, &msg, sizeof(msg), in smsdvb_dvbt_set_frontend()
895 &client->tune_done); in smsdvb_dvbt_set_frontend()
903 sms_board_lna_control(client->coredev, 1); in smsdvb_dvbt_set_frontend()
906 return smsdvb_sendrequest_and_wait(client, &msg, sizeof(msg), in smsdvb_dvbt_set_frontend()
907 &client->tune_done); in smsdvb_dvbt_set_frontend()
913 struct smsdvb_client_t *client = in smsdvb_isdbt_set_frontend() local
915 int board_id = smscore_get_board_id(client->coredev); in smsdvb_isdbt_set_frontend()
960 ret = sms_board_lna_control(client->coredev, 0); in smsdvb_isdbt_set_frontend()
965 ret = smsdvb_sendrequest_and_wait(client, &msg, sizeof(msg), in smsdvb_isdbt_set_frontend()
966 &client->tune_done); in smsdvb_isdbt_set_frontend()
974 sms_board_lna_control(client->coredev, 1); in smsdvb_isdbt_set_frontend()
976 return smsdvb_sendrequest_and_wait(client, &msg, sizeof(msg), in smsdvb_isdbt_set_frontend()
977 &client->tune_done); in smsdvb_isdbt_set_frontend()
983 struct smsdvb_client_t *client = in smsdvb_set_frontend() local
985 struct smscore_device_t *coredev = client->coredev; in smsdvb_set_frontend()
991 client->has_tuned = false; in smsdvb_set_frontend()
1013 struct smsdvb_client_t *client = in smsdvb_init() local
1016 sms_board_power(client->coredev, 1); in smsdvb_init()
1018 sms_board_dvb3_event(client, DVB3_EVENT_INIT); in smsdvb_init()
1024 struct smsdvb_client_t *client = in smsdvb_sleep() local
1027 sms_board_led_feedback(client->coredev, SMS_LED_OFF); in smsdvb_sleep()
1028 sms_board_power(client->coredev, 0); in smsdvb_sleep()
1030 sms_board_dvb3_event(client, DVB3_EVENT_SLEEP); in smsdvb_sleep()
1076 struct smsdvb_client_t *client; in smsdvb_hotplug() local
1082 client = kzalloc(sizeof(struct smsdvb_client_t), GFP_KERNEL); in smsdvb_hotplug()
1083 if (!client) { in smsdvb_hotplug()
1089 rc = dvb_register_adapter(&client->adapter, in smsdvb_hotplug()
1099 client->demux.dmx.capabilities = DMX_TS_FILTERING; in smsdvb_hotplug()
1100 client->demux.filternum = 32; /* todo: nova ??? */ in smsdvb_hotplug()
1101 client->demux.feednum = 32; in smsdvb_hotplug()
1102 client->demux.start_feed = smsdvb_start_feed; in smsdvb_hotplug()
1103 client->demux.stop_feed = smsdvb_stop_feed; in smsdvb_hotplug()
1105 rc = dvb_dmx_init(&client->demux); in smsdvb_hotplug()
1112 client->dmxdev.filternum = 32; in smsdvb_hotplug()
1113 client->dmxdev.demux = &client->demux.dmx; in smsdvb_hotplug()
1114 client->dmxdev.capabilities = 0; in smsdvb_hotplug()
1116 rc = dvb_dmxdev_init(&client->dmxdev, &client->adapter); in smsdvb_hotplug()
1123 memcpy(&client->frontend.ops, &smsdvb_fe_ops, in smsdvb_hotplug()
1129 client->frontend.ops.delsys[0] = SYS_DVBT; in smsdvb_hotplug()
1133 client->frontend.ops.delsys[0] = SYS_ISDBT; in smsdvb_hotplug()
1137 rc = dvb_register_frontend(&client->adapter, &client->frontend); in smsdvb_hotplug()
1147 params.context = client; in smsdvb_hotplug()
1149 rc = smscore_register_client(coredev, ¶ms, &client->smsclient); in smsdvb_hotplug()
1155 client->coredev = coredev; in smsdvb_hotplug()
1157 init_completion(&client->tune_done); in smsdvb_hotplug()
1158 init_completion(&client->stats_done); in smsdvb_hotplug()
1162 list_add(&client->entry, &g_smsdvb_clients); in smsdvb_hotplug()
1166 client->event_fe_state = -1; in smsdvb_hotplug()
1167 client->event_unc_state = -1; in smsdvb_hotplug()
1168 sms_board_dvb3_event(client, DVB3_EVENT_HOTPLUG); in smsdvb_hotplug()
1173 if (smsdvb_debugfs_create(client) < 0) in smsdvb_hotplug()
1179 dvb_unregister_frontend(&client->frontend); in smsdvb_hotplug()
1182 dvb_dmxdev_release(&client->dmxdev); in smsdvb_hotplug()
1185 dvb_dmx_release(&client->demux); in smsdvb_hotplug()
1188 dvb_unregister_adapter(&client->adapter); in smsdvb_hotplug()
1191 kfree(client); in smsdvb_hotplug()