Lines Matching refs:dev

48 static int af9033_wr_regs(struct af9033_dev *dev, u32 reg, const u8 *val,  in af9033_wr_regs()  argument
55 .addr = dev->client->addr, in af9033_wr_regs()
63 dev_warn(&dev->client->dev, in af9033_wr_regs()
74 ret = i2c_transfer(dev->client->adapter, msg, 1); in af9033_wr_regs()
78 dev_warn(&dev->client->dev, "i2c wr failed=%d reg=%06x len=%d\n", in af9033_wr_regs()
87 static int af9033_rd_regs(struct af9033_dev *dev, u32 reg, u8 *val, int len) in af9033_rd_regs() argument
94 .addr = dev->client->addr, in af9033_rd_regs()
99 .addr = dev->client->addr, in af9033_rd_regs()
106 ret = i2c_transfer(dev->client->adapter, msg, 2); in af9033_rd_regs()
110 dev_warn(&dev->client->dev, "i2c rd failed=%d reg=%06x len=%d\n", in af9033_rd_regs()
120 static int af9033_wr_reg(struct af9033_dev *dev, u32 reg, u8 val) in af9033_wr_reg() argument
122 return af9033_wr_regs(dev, reg, &val, 1); in af9033_wr_reg()
126 static int af9033_rd_reg(struct af9033_dev *dev, u32 reg, u8 *val) in af9033_rd_reg() argument
128 return af9033_rd_regs(dev, reg, val, 1); in af9033_rd_reg()
132 static int af9033_wr_reg_mask(struct af9033_dev *dev, u32 reg, u8 val, in af9033_wr_reg_mask() argument
140 ret = af9033_rd_regs(dev, reg, &tmp, 1); in af9033_wr_reg_mask()
149 return af9033_wr_regs(dev, reg, &val, 1); in af9033_wr_reg_mask()
153 static int af9033_rd_reg_mask(struct af9033_dev *dev, u32 reg, u8 *val, in af9033_rd_reg_mask() argument
159 ret = af9033_rd_regs(dev, reg, &tmp, 1); in af9033_rd_reg_mask()
176 static int af9033_wr_reg_val_tab(struct af9033_dev *dev, in af9033_wr_reg_val_tab() argument
183 dev_dbg(&dev->client->dev, "tab_len=%d\n", tab_len); in af9033_wr_reg_val_tab()
186 dev_warn(&dev->client->dev, "tab len %d is too big\n", tab_len); in af9033_wr_reg_val_tab()
194 ret = af9033_wr_regs(dev, tab[i].reg - j, buf, j + 1); in af9033_wr_reg_val_tab()
207 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_wr_reg_val_tab()
212 static u32 af9033_div(struct af9033_dev *dev, u32 a, u32 b, u32 x) in af9033_div() argument
216 dev_dbg(&dev->client->dev, "a=%d b=%d x=%d\n", a, b, x); in af9033_div()
233 dev_dbg(&dev->client->dev, "a=%d b=%d x=%d r=%d r=%x\n", a, b, x, r, r); in af9033_div()
240 struct af9033_dev *dev = fe->demodulator_priv; in af9033_init() local
249 { 0x00f641, dev->cfg.tuner, 0xff }, in af9033_init()
268 { 0x80f985, dev->ts_mode_serial, 0x01 }, in af9033_init()
269 { 0x80f986, dev->ts_mode_parallel, 0x01 }, in af9033_init()
272 { 0x800045, dev->cfg.adc_multiplier, 0xff }, in af9033_init()
276 clock_cw = af9033_div(dev, dev->cfg.clock, 1000000ul, 19ul); in af9033_init()
282 dev_dbg(&dev->client->dev, "clock=%d clock_cw=%08x\n", in af9033_init()
283 dev->cfg.clock, clock_cw); in af9033_init()
285 ret = af9033_wr_regs(dev, 0x800025, buf, 4); in af9033_init()
291 if (clock_adc_lut[i].clock == dev->cfg.clock) in af9033_init()
295 dev_err(&dev->client->dev, in af9033_init()
297 dev->cfg.clock); in af9033_init()
301 adc_cw = af9033_div(dev, clock_adc_lut[i].adc, 1000000ul, 19ul); in af9033_init()
306 dev_dbg(&dev->client->dev, "adc=%d adc_cw=%06x\n", in af9033_init()
309 ret = af9033_wr_regs(dev, 0x80f1cd, buf, 3); in af9033_init()
315 ret = af9033_wr_reg_mask(dev, tab[i].reg, tab[i].val, in af9033_init()
322 if (dev->cfg.dyn0_clk) { in af9033_init()
323 ret = af9033_wr_reg(dev, 0x80fba8, 0x00); in af9033_init()
329 if (dev->cfg.ts_mode == AF9033_TS_MODE_USB) { in af9033_init()
330 ret = af9033_wr_reg_mask(dev, 0x80f9a5, 0x00, 0x01); in af9033_init()
334 ret = af9033_wr_reg_mask(dev, 0x80f9b5, 0x01, 0x01); in af9033_init()
338 ret = af9033_wr_reg_mask(dev, 0x80f990, 0x00, 0x01); in af9033_init()
342 ret = af9033_wr_reg_mask(dev, 0x80f9b5, 0x00, 0x01); in af9033_init()
348 dev_dbg(&dev->client->dev, "load ofsm settings\n"); in af9033_init()
349 switch (dev->cfg.tuner) { in af9033_init()
368 ret = af9033_wr_reg_val_tab(dev, init, len); in af9033_init()
373 dev_dbg(&dev->client->dev, "load tuner specific settings\n"); in af9033_init()
374 switch (dev->cfg.tuner) { in af9033_init()
424 dev_dbg(&dev->client->dev, "unsupported tuner ID=%d\n", in af9033_init()
425 dev->cfg.tuner); in af9033_init()
430 ret = af9033_wr_reg_val_tab(dev, init, len); in af9033_init()
434 if (dev->cfg.ts_mode == AF9033_TS_MODE_SERIAL) { in af9033_init()
435 ret = af9033_wr_reg_mask(dev, 0x00d91c, 0x01, 0x01); in af9033_init()
439 ret = af9033_wr_reg_mask(dev, 0x00d917, 0x00, 0x01); in af9033_init()
443 ret = af9033_wr_reg_mask(dev, 0x00d916, 0x00, 0x01); in af9033_init()
448 switch (dev->cfg.tuner) { in af9033_init()
452 ret = af9033_wr_reg(dev, 0x800000, 0x01); in af9033_init()
457 dev->bandwidth_hz = 0; /* force to program all parameters */ in af9033_init()
472 schedule_delayed_work(&dev->stat_work, msecs_to_jiffies(2000)); in af9033_init()
477 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_init()
484 struct af9033_dev *dev = fe->demodulator_priv; in af9033_sleep() local
489 cancel_delayed_work_sync(&dev->stat_work); in af9033_sleep()
491 ret = af9033_wr_reg(dev, 0x80004c, 1); in af9033_sleep()
495 ret = af9033_wr_reg(dev, 0x800000, 0); in af9033_sleep()
500 ret = af9033_rd_reg(dev, 0x80004c, &tmp); in af9033_sleep()
507 dev_dbg(&dev->client->dev, "loop=%d\n", i); in af9033_sleep()
514 ret = af9033_wr_reg_mask(dev, 0x80fb24, 0x08, 0x08); in af9033_sleep()
519 if (dev->cfg.ts_mode == AF9033_TS_MODE_SERIAL) { in af9033_sleep()
521 ret = af9033_wr_reg_mask(dev, 0x00d917, 0x00, 0x01); in af9033_sleep()
525 ret = af9033_wr_reg_mask(dev, 0x00d916, 0x01, 0x01); in af9033_sleep()
533 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_sleep()
551 struct af9033_dev *dev = fe->demodulator_priv; in af9033_set_frontend() local
557 dev_dbg(&dev->client->dev, "frequency=%d bandwidth_hz=%d\n", in af9033_set_frontend()
572 dev_dbg(&dev->client->dev, "invalid bandwidth_hz\n"); in af9033_set_frontend()
582 if (c->bandwidth_hz != dev->bandwidth_hz) { in af9033_set_frontend()
584 if (coeff_lut[i].clock == dev->cfg.clock && in af9033_set_frontend()
590 dev_err(&dev->client->dev, in af9033_set_frontend()
592 dev->cfg.clock); in af9033_set_frontend()
597 ret = af9033_wr_regs(dev, 0x800001, in af9033_set_frontend()
602 if (c->bandwidth_hz != dev->bandwidth_hz) { in af9033_set_frontend()
603 spec_inv = dev->cfg.spec_inv ? -1 : 1; in af9033_set_frontend()
606 if (clock_adc_lut[i].clock == dev->cfg.clock) in af9033_set_frontend()
610 dev_err(&dev->client->dev, in af9033_set_frontend()
612 dev->cfg.clock); in af9033_set_frontend()
634 freq_cw = af9033_div(dev, sampling_freq, adc_freq, 23ul); in af9033_set_frontend()
639 if (dev->cfg.adc_multiplier == AF9033_ADC_MULTIPLIER_2X) in af9033_set_frontend()
650 ret = af9033_wr_regs(dev, 0x800029, buf, 3); in af9033_set_frontend()
654 dev->bandwidth_hz = c->bandwidth_hz; in af9033_set_frontend()
657 ret = af9033_wr_reg_mask(dev, 0x80f904, bandwidth_reg_val, 0x03); in af9033_set_frontend()
661 ret = af9033_wr_reg(dev, 0x800040, 0x00); in af9033_set_frontend()
665 ret = af9033_wr_reg(dev, 0x800047, 0x00); in af9033_set_frontend()
669 ret = af9033_wr_reg_mask(dev, 0x80f999, 0x00, 0x01); in af9033_set_frontend()
678 ret = af9033_wr_reg(dev, 0x80004b, tmp); in af9033_set_frontend()
682 ret = af9033_wr_reg(dev, 0x800000, 0x00); in af9033_set_frontend()
689 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_set_frontend()
696 struct af9033_dev *dev = fe->demodulator_priv; in af9033_get_frontend() local
701 dev_dbg(&dev->client->dev, "\n"); in af9033_get_frontend()
704 ret = af9033_rd_regs(dev, 0x80f900, buf, sizeof(buf)); in af9033_get_frontend()
816 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_get_frontend()
823 struct af9033_dev *dev = fe->demodulator_priv; in af9033_read_status() local
830 ret = af9033_rd_reg(dev, 0x800047, &tmp); in af9033_read_status()
840 ret = af9033_rd_reg_mask(dev, 0x80f5a9, &tmp, 0x01); in af9033_read_status()
849 ret = af9033_rd_reg_mask(dev, 0x80f999, &tmp, 0x01); in af9033_read_status()
859 dev->fe_status = *status; in af9033_read_status()
864 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_read_status()
871 struct af9033_dev *dev = fe->demodulator_priv; in af9033_read_snr() local
872 struct dtv_frontend_properties *c = &dev->fe.dtv_property_cache; in af9033_read_snr()
879 if (dev->is_af9035) { in af9033_read_snr()
887 ret = af9033_rd_reg(dev, 0x80f903, &u8tmp); in af9033_read_snr()
913 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_read_snr()
920 struct af9033_dev *dev = fe->demodulator_priv; in af9033_read_signal_strength() local
921 struct dtv_frontend_properties *c = &dev->fe.dtv_property_cache; in af9033_read_signal_strength()
925 if (dev->is_af9035) { in af9033_read_signal_strength()
927 ret = af9033_rd_reg(dev, 0x800048, &u8tmp); in af9033_read_signal_strength()
934 ret = af9033_rd_reg(dev, 0x8000f7, &u8tmp); in af9033_read_signal_strength()
938 ret = af9033_rd_regs(dev, 0x80f900, buf, 7); in af9033_read_signal_strength()
968 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_read_signal_strength()
975 struct af9033_dev *dev = fe->demodulator_priv; in af9033_read_ber() local
977 *ber = (dev->post_bit_error - dev->post_bit_error_prev); in af9033_read_ber()
978 dev->post_bit_error_prev = dev->post_bit_error; in af9033_read_ber()
985 struct af9033_dev *dev = fe->demodulator_priv; in af9033_read_ucblocks() local
987 *ucblocks = dev->error_block_count; in af9033_read_ucblocks()
993 struct af9033_dev *dev = fe->demodulator_priv; in af9033_i2c_gate_ctrl() local
996 dev_dbg(&dev->client->dev, "enable=%d\n", enable); in af9033_i2c_gate_ctrl()
998 ret = af9033_wr_reg_mask(dev, 0x00fa04, enable, 0x01); in af9033_i2c_gate_ctrl()
1005 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_i2c_gate_ctrl()
1012 struct af9033_dev *dev = fe->demodulator_priv; in af9033_pid_filter_ctrl() local
1015 dev_dbg(&dev->client->dev, "onoff=%d\n", onoff); in af9033_pid_filter_ctrl()
1017 ret = af9033_wr_reg_mask(dev, 0x80f993, onoff, 0x01); in af9033_pid_filter_ctrl()
1024 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_pid_filter_ctrl()
1032 struct af9033_dev *dev = fe->demodulator_priv; in af9033_pid_filter() local
1036 dev_dbg(&dev->client->dev, "index=%d pid=%04x onoff=%d\n", in af9033_pid_filter()
1042 ret = af9033_wr_regs(dev, 0x80f996, wbuf, 2); in af9033_pid_filter()
1046 ret = af9033_wr_reg(dev, 0x80f994, onoff); in af9033_pid_filter()
1050 ret = af9033_wr_reg(dev, 0x80f995, index); in af9033_pid_filter()
1057 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_pid_filter()
1064 struct af9033_dev *dev = container_of(work, struct af9033_dev, stat_work.work); in af9033_stat_work() local
1065 struct dtv_frontend_properties *c = &dev->fe.dtv_property_cache; in af9033_stat_work()
1069 dev_dbg(&dev->client->dev, "\n"); in af9033_stat_work()
1072 if (dev->fe_status & FE_HAS_SIGNAL) { in af9033_stat_work()
1073 if (dev->is_af9035) { in af9033_stat_work()
1074 ret = af9033_rd_reg(dev, 0x80004a, &u8tmp); in af9033_stat_work()
1077 ret = af9033_rd_reg(dev, 0x8000f7, &u8tmp); in af9033_stat_work()
1092 if (dev->fe_status & FE_HAS_VITERBI) { in af9033_stat_work()
1097 ret = af9033_rd_regs(dev, 0x80002c, buf, 3); in af9033_stat_work()
1104 ret = af9033_rd_reg(dev, 0x80f78b, &u8tmp); in af9033_stat_work()
1112 ret = af9033_rd_reg(dev, 0x80f900, &u8tmp); in af9033_stat_work()
1131 ret = af9033_rd_reg(dev, 0x80f903, &u8tmp); in af9033_stat_work()
1167 if (dev->fe_status & FE_HAS_LOCK) { in af9033_stat_work()
1178 ret = af9033_rd_regs(dev, 0x800032, buf, 7); in af9033_stat_work()
1186 dev->error_block_count += abort_packet_count; in af9033_stat_work()
1187 dev->total_block_count += rsd_packet_count; in af9033_stat_work()
1188 dev->post_bit_error += rsd_bit_err_count; in af9033_stat_work()
1189 dev->post_bit_count += rsd_packet_count * 204 * 8; in af9033_stat_work()
1193 c->block_count.stat[0].uvalue = dev->total_block_count; in af9033_stat_work()
1197 c->block_error.stat[0].uvalue = dev->error_block_count; in af9033_stat_work()
1201 c->post_bit_count.stat[0].uvalue = dev->post_bit_count; in af9033_stat_work()
1205 c->post_bit_error.stat[0].uvalue = dev->post_bit_error; in af9033_stat_work()
1209 schedule_delayed_work(&dev->stat_work, msecs_to_jiffies(2000)); in af9033_stat_work()
1212 dev_dbg(&dev->client->dev, "failed=%d\n", ret); in af9033_stat_work()
1259 struct af9033_config *cfg = client->dev.platform_data; in af9033_probe()
1260 struct af9033_dev *dev; in af9033_probe() local
1266 dev = kzalloc(sizeof(struct af9033_dev), GFP_KERNEL); in af9033_probe()
1267 if (dev == NULL) { in af9033_probe()
1269 dev_err(&client->dev, "Could not allocate memory for state\n"); in af9033_probe()
1274 dev->client = client; in af9033_probe()
1275 INIT_DELAYED_WORK(&dev->stat_work, af9033_stat_work); in af9033_probe()
1276 memcpy(&dev->cfg, cfg, sizeof(struct af9033_config)); in af9033_probe()
1278 if (dev->cfg.clock != 12000000) { in af9033_probe()
1280 dev_err(&dev->client->dev, in af9033_probe()
1282 dev->cfg.clock); in af9033_probe()
1287 switch (dev->cfg.tuner) { in af9033_probe()
1294 dev->is_it9135 = true; in af9033_probe()
1298 dev->is_af9035 = true; in af9033_probe()
1303 ret = af9033_rd_regs(dev, reg, &buf[0], 4); in af9033_probe()
1307 ret = af9033_rd_regs(dev, 0x804191, &buf[4], 4); in af9033_probe()
1311 dev_info(&dev->client->dev, in af9033_probe()
1317 switch (dev->cfg.tuner) { in af9033_probe()
1327 ret = af9033_wr_reg(dev, 0x80004c, 1); in af9033_probe()
1331 ret = af9033_wr_reg(dev, 0x800000, 0); in af9033_probe()
1337 switch (dev->cfg.ts_mode) { in af9033_probe()
1339 dev->ts_mode_parallel = true; in af9033_probe()
1342 dev->ts_mode_serial = true; in af9033_probe()
1351 memcpy(&dev->fe.ops, &af9033_ops, sizeof(struct dvb_frontend_ops)); in af9033_probe()
1352 dev->fe.demodulator_priv = dev; in af9033_probe()
1353 *cfg->fe = &dev->fe; in af9033_probe()
1358 i2c_set_clientdata(client, dev); in af9033_probe()
1360 dev_info(&dev->client->dev, "Afatech AF9033 successfully attached\n"); in af9033_probe()
1363 kfree(dev); in af9033_probe()
1365 dev_dbg(&client->dev, "failed=%d\n", ret); in af9033_probe()
1371 struct af9033_dev *dev = i2c_get_clientdata(client); in af9033_remove() local
1373 dev_dbg(&dev->client->dev, "\n"); in af9033_remove()
1375 dev->fe.ops.release = NULL; in af9033_remove()
1376 dev->fe.demodulator_priv = NULL; in af9033_remove()
1377 kfree(dev); in af9033_remove()