Lines Matching refs:st
137 static int bcm3510_hab_get_response(struct bcm3510_state *st, u8 *buf, int len) in bcm3510_hab_get_response() argument
143 if ((ret = bcm3510_writeB(st,0xa6,v)) < 0) in bcm3510_hab_get_response()
147 if ((ret = bcm3510_readB(st,0xa7,&v)) < 0) in bcm3510_hab_get_response()
154 static int bcm3510_hab_send_request(struct bcm3510_state *st, u8 *buf, int len) in bcm3510_hab_send_request() argument
162 if ((ret = bcm3510_readB(st,0xa8,&v)) < 0) in bcm3510_hab_send_request()
167 bcm3510_writeB(st,0xa8,v); in bcm3510_hab_send_request()
174 if ((ret = bcm3510_writeB(st,0xa6,hab)) < 0) in bcm3510_hab_send_request()
179 if ((ret = bcm3510_writeB(st,0xa7,hab)) < 0) in bcm3510_hab_send_request()
186 if ((ret = bcm3510_writeB(st,0xa8,v)) < 0) in bcm3510_hab_send_request()
194 if ((ret = bcm3510_readB(st,0xa8,&v)) < 0) in bcm3510_hab_send_request()
205 static int bcm3510_do_hab_cmd(struct bcm3510_state *st, u8 cmd, u8 msgid, u8 *obuf, u8 olen, u8 *ib… in bcm3510_do_hab_cmd() argument
228 if (mutex_lock_interruptible(&st->hab_mutex) < 0) in bcm3510_do_hab_cmd()
231 if ((ret = bcm3510_hab_send_request(st, ob, olen+2)) < 0 || in bcm3510_do_hab_cmd()
232 (ret = bcm3510_hab_get_response(st, ib, ilen+2)) < 0) in bcm3510_do_hab_cmd()
241 mutex_unlock(&st->hab_mutex); in bcm3510_do_hab_cmd()
247 static int bcm3510_is_ap_ready(struct bcm3510_state *st)
252 if ((ret = bcm3510_readB(st,0xa8,&hab)) < 0 ||
253 (ret = bcm3510_readB(st,0xa2,&ap) < 0))
265 static int bcm3510_bert_reset(struct bcm3510_state *st) in bcm3510_bert_reset() argument
270 if ((ret = bcm3510_readB(st,0xfa,&b)) < 0) in bcm3510_bert_reset()
273 b.BERCTL_fa.RESYNC = 0; bcm3510_writeB(st,0xfa,b); in bcm3510_bert_reset()
274 b.BERCTL_fa.RESYNC = 1; bcm3510_writeB(st,0xfa,b); in bcm3510_bert_reset()
275 b.BERCTL_fa.RESYNC = 0; bcm3510_writeB(st,0xfa,b); in bcm3510_bert_reset()
276 b.BERCTL_fa.CNTCTL = 1; b.BERCTL_fa.BITCNT = 1; bcm3510_writeB(st,0xfa,b); in bcm3510_bert_reset()
282 static int bcm3510_refresh_state(struct bcm3510_state *st) in bcm3510_refresh_state() argument
284 if (time_after(jiffies,st->next_status_check)) { in bcm3510_refresh_state()
285 …bcm3510_do_hab_cmd(st, CMD_STATUS, MSGID_STATUS1, NULL,0, (u8 *)&st->status1, sizeof(st->status1)); in bcm3510_refresh_state()
286 …bcm3510_do_hab_cmd(st, CMD_STATUS, MSGID_STATUS2, NULL,0, (u8 *)&st->status2, sizeof(st->status2)); in bcm3510_refresh_state()
287 st->next_status_check = jiffies + (st->status_check_interval*HZ)/1000; in bcm3510_refresh_state()
294 struct bcm3510_state* st = fe->demodulator_priv; in bcm3510_read_status() local
295 bcm3510_refresh_state(st); in bcm3510_read_status()
298 if (st->status1.STATUS1.RECEIVER_LOCK) in bcm3510_read_status()
301 if (st->status1.STATUS1.FEC_LOCK) in bcm3510_read_status()
304 if (st->status1.STATUS1.OUT_PLL_LOCK) in bcm3510_read_status()
308 st->status_check_interval = 1500; in bcm3510_read_status()
310 st->status_check_interval = 500; in bcm3510_read_status()
318 struct bcm3510_state* st = fe->demodulator_priv; in bcm3510_read_ber() local
319 bcm3510_refresh_state(st); in bcm3510_read_ber()
321 *ber = (st->status2.LDBER0 << 16) | (st->status2.LDBER1 << 8) | st->status2.LDBER2; in bcm3510_read_ber()
327 struct bcm3510_state* st = fe->demodulator_priv; in bcm3510_read_unc() local
328 bcm3510_refresh_state(st); in bcm3510_read_unc()
329 *unc = (st->status2.LDUERC0 << 8) | st->status2.LDUERC1; in bcm3510_read_unc()
335 struct bcm3510_state* st = fe->demodulator_priv; in bcm3510_read_signal_strength() local
338 bcm3510_refresh_state(st); in bcm3510_read_signal_strength()
339 t = st->status2.SIGNAL; in bcm3510_read_signal_strength()
355 struct bcm3510_state* st = fe->demodulator_priv; in bcm3510_read_snr() local
356 bcm3510_refresh_state(st); in bcm3510_read_snr()
358 *snr = st->status1.SNR_EST0*1000 + ((st->status1.SNR_EST1*1000) >> 8); in bcm3510_read_snr()
363 static int bcm3510_tuner_cmd(struct bcm3510_state* st,u8 bc, u16 n, u8 a) in bcm3510_tuner_cmd() argument
449 return bcm3510_do_hab_cmd(st,CMD_TUNE, MSGID_TUNE,(u8 *) &c,sizeof(c), NULL, 0); in bcm3510_tuner_cmd()
452 static int bcm3510_set_freq(struct bcm3510_state* st,u32 freq) in bcm3510_set_freq() argument
490 return bcm3510_tuner_cmd(st,bc,n,a); in bcm3510_set_freq()
498 struct bcm3510_state* st = fe->demodulator_priv; in bcm3510_set_frontend() local
560 bcm3510_do_hab_cmd(st, CMD_ACQUIRE, MSGID_EXT_TUNER_ACQUIRE, (u8 *) &cmd, sizeof(cmd), NULL, 0); in bcm3510_set_frontend()
565 bcm3510_do_hab_cmd(st, CMD_STATE_CONTROL, MSGID_BERT_CONTROL, (u8 *) &bert, sizeof(bert), NULL, 0); in bcm3510_set_frontend()
566 bcm3510_do_hab_cmd(st, CMD_STATE_CONTROL, MSGID_BERT_SET, (u8 *) &bert, sizeof(bert), NULL, 0); in bcm3510_set_frontend()
568 bcm3510_bert_reset(st); in bcm3510_set_frontend()
570 ret = bcm3510_set_freq(st, c->frequency); in bcm3510_set_frontend()
574 memset(&st->status1,0,sizeof(st->status1)); in bcm3510_set_frontend()
575 memset(&st->status2,0,sizeof(st->status2)); in bcm3510_set_frontend()
576 st->status_check_interval = 500; in bcm3510_set_frontend()
609 static int bcm3510_write_ram(struct bcm3510_state *st, u16 addr, const u8 *b, in bcm3510_write_ram() argument
617 if ((ret = bcm3510_writeB(st,0xa9,vH)) < 0) return ret; in bcm3510_write_ram()
618 if ((ret = bcm3510_writeB(st,0xaa,vL)) < 0) return ret; in bcm3510_write_ram()
622 if ((ret = bcm3510_writeB(st,0xab,vD)) < 0) in bcm3510_write_ram()
631 struct bcm3510_state* st = fe->demodulator_priv; in bcm3510_download_firmware() local
638 if ((ret = st->config->request_firmware(fe, &fw, BCM3510_DEFAULT_FIRMWARE)) < 0) { in bcm3510_download_firmware()
649 if ((ret = bcm3510_write_ram(st,addr,&b[i+4],len)) < 0) { in bcm3510_download_firmware()
660 static int bcm3510_check_firmware_version(struct bcm3510_state *st) in bcm3510_check_firmware_version() argument
663 bcm3510_do_hab_cmd(st,CMD_GET_VERSION_INFO,MSGID_GET_VERSION_INFO,NULL,0,(u8*)&ver,sizeof(ver)); in bcm3510_check_firmware_version()
678 static int bcm3510_reset(struct bcm3510_state *st) in bcm3510_reset() argument
684 bcm3510_readB(st,0xa0,&v); v.HCTL1_a0.RESET = 1; in bcm3510_reset()
685 if ((ret = bcm3510_writeB(st,0xa0,v)) < 0) in bcm3510_reset()
691 if ((ret = bcm3510_readB(st,0xa2,&v)) < 0) in bcm3510_reset()
701 static int bcm3510_clear_reset(struct bcm3510_state *st) in bcm3510_clear_reset() argument
708 if ((ret = bcm3510_writeB(st,0xa0,v)) < 0) in bcm3510_clear_reset()
714 if ((ret = bcm3510_readB(st,0xa2,&v)) < 0) in bcm3510_clear_reset()
725 static int bcm3510_init_cold(struct bcm3510_state *st) in bcm3510_init_cold() argument
731 if ((ret = bcm3510_readB(st,0xa2,&v)) < 0) in bcm3510_init_cold()
739 if ((ret = bcm3510_reset(st)) < 0) in bcm3510_init_cold()
745 if ((ret = bcm3510_writeB(st,0x2e,v)) < 0) in bcm3510_init_cold()
749 if ((ret = bcm3510_download_firmware(&st->frontend)) < 0 || in bcm3510_init_cold()
750 (ret = bcm3510_clear_reset(st)) < 0) in bcm3510_init_cold()
760 struct bcm3510_state* st = fe->demodulator_priv; in bcm3510_init() local
765 if ((ret = bcm3510_readB(st,0xca,&j)) < 0) in bcm3510_init()
773 if ((ret = bcm3510_init_cold(st)) < 0) in bcm3510_init()
777 bcm3510_check_firmware_version(st); in bcm3510_init()
785 bcm3510_do_hab_cmd(st,CMD_AUTO_PARAM,MSGID_SET_RF_AGC_SEL,(u8 *)&c,sizeof(c),NULL,0); in bcm3510_init()