static int poseidon_check_mode_radio(struct poseidon *p) { int ret; u32 status; set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(HZ/2); ret = usb_set_interface(p->udev, 0, BULK_ALTERNATE_IFACE); if (ret < 0) goto out; ret = set_tuner_mode(p, TLG_MODE_FM_RADIO); if (ret != 0) goto out; ret = send_set_req(p, SGNL_SRC_SEL, TLG_SIG_SRC_ANTENNA, &status); ret = send_set_req(p, TUNER_AUD_ANA_STD, p->radio_data.pre_emphasis, &status); ret |= send_set_req(p, TUNER_AUD_MODE, TLG_TUNE_TVAUDIO_MODE_STEREO, &status); ret |= send_set_req(p, AUDIO_SAMPLE_RATE_SEL, ATV_AUDIO_RATE_48K, &status); ret |= send_set_req(p, TUNE_FREQ_SELECT, TUNER_FREQ_MIN_FM, &status); out: return ret; }
static int poseidon_check_mode_dvbt(struct poseidon *pd) { s32 ret = 0, cmd_status = 0; set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(HZ/4); ret = usb_set_interface(pd->udev, 0, BULK_ALTERNATE_IFACE); if (ret != 0) return ret; ret = set_tuner_mode(pd, TLG_MODE_CAPS_DVB_T); if (ret) return ret; /* signal source */ ret = send_set_req(pd, SGNL_SRC_SEL, TLG_SIG_SRC_ANTENNA, &cmd_status); if (ret|cmd_status) return ret; return 0; }