Lines Matching refs:dev

10 static int e4000_init(struct e4000_dev *dev)  in e4000_init()  argument
12 struct i2c_client *client = dev->client; in e4000_init()
15 dev_dbg(&client->dev, "\n"); in e4000_init()
18 ret = regmap_write(dev->regmap, 0x00, 0x01); in e4000_init()
23 ret = regmap_write(dev->regmap, 0x06, 0x00); in e4000_init()
27 ret = regmap_write(dev->regmap, 0x7a, 0x96); in e4000_init()
32 ret = regmap_bulk_write(dev->regmap, 0x7e, "\x01\xfe", 2); in e4000_init()
36 ret = regmap_write(dev->regmap, 0x82, 0x00); in e4000_init()
40 ret = regmap_write(dev->regmap, 0x24, 0x05); in e4000_init()
44 ret = regmap_bulk_write(dev->regmap, 0x87, "\x20\x01", 2); in e4000_init()
48 ret = regmap_bulk_write(dev->regmap, 0x9f, "\x7f\x07", 2); in e4000_init()
53 ret = regmap_write(dev->regmap, 0x2d, 0x1f); in e4000_init()
57 ret = regmap_bulk_write(dev->regmap, 0x70, "\x01\x01", 2); in e4000_init()
62 ret = regmap_write(dev->regmap, 0x1a, 0x17); in e4000_init()
66 ret = regmap_write(dev->regmap, 0x1f, 0x1a); in e4000_init()
70 dev->active = true; in e4000_init()
74 dev_dbg(&client->dev, "failed=%d\n", ret); in e4000_init()
78 static int e4000_sleep(struct e4000_dev *dev) in e4000_sleep() argument
80 struct i2c_client *client = dev->client; in e4000_sleep()
83 dev_dbg(&client->dev, "\n"); in e4000_sleep()
85 dev->active = false; in e4000_sleep()
87 ret = regmap_write(dev->regmap, 0x00, 0x00); in e4000_sleep()
93 dev_dbg(&client->dev, "failed=%d\n", ret); in e4000_sleep()
97 static int e4000_set_params(struct e4000_dev *dev) in e4000_set_params() argument
99 struct i2c_client *client = dev->client; in e4000_set_params()
105 if (!dev->active) { in e4000_set_params()
106 dev_dbg(&client->dev, "tuner is sleeping\n"); in e4000_set_params()
111 ret = regmap_write(dev->regmap, 0x1a, 0x00); in e4000_set_params()
131 if (dev->f_frequency <= e4000_pll_lut[i].freq) in e4000_set_params()
139 #define F_REF dev->clk in e4000_set_params()
141 f_vco = (u64) dev->f_frequency * div_out; in e4000_set_params()
146 dev_dbg(&client->dev, in e4000_set_params()
148 dev->f_frequency, dev->f_bandwidth, f_vco, F_REF, div_n, k, in e4000_set_params()
156 ret = regmap_bulk_write(dev->regmap, 0x09, buf, 5); in e4000_set_params()
162 if (dev->f_frequency <= e400_lna_filter_lut[i].freq) in e4000_set_params()
170 ret = regmap_write(dev->regmap, 0x10, e400_lna_filter_lut[i].val); in e4000_set_params()
176 if (dev->f_bandwidth <= e4000_if_filter_lut[i].freq) in e4000_set_params()
187 ret = regmap_bulk_write(dev->regmap, 0x11, buf, 2); in e4000_set_params()
193 if (dev->f_frequency <= e4000_band_lut[i].freq) in e4000_set_params()
201 ret = regmap_write(dev->regmap, 0x07, e4000_band_lut[i].reg07_val); in e4000_set_params()
205 ret = regmap_write(dev->regmap, 0x78, e4000_band_lut[i].reg78_val); in e4000_set_params()
212 ret = regmap_bulk_write(dev->regmap, 0x15, "\x00\x7e\x24", 3); in e4000_set_params()
214 ret = regmap_bulk_write(dev->regmap, 0x15, "\x00\x7f", 2); in e4000_set_params()
216 ret = regmap_bulk_write(dev->regmap, 0x15, "\x01", 1); in e4000_set_params()
218 ret = regmap_bulk_write(dev->regmap, 0x16, "\x7e", 1); in e4000_set_params()
223 ret = regmap_write(dev->regmap, 0x29, 0x01); in e4000_set_params()
227 ret = regmap_bulk_read(dev->regmap, 0x2a, buf, 3); in e4000_set_params()
238 ret = regmap_bulk_write(dev->regmap, 0x50, q_data, 4); in e4000_set_params()
242 ret = regmap_bulk_write(dev->regmap, 0x60, i_data, 4); in e4000_set_params()
247 ret = regmap_write(dev->regmap, 0x1a, 0x17); in e4000_set_params()
253 dev_dbg(&client->dev, "failed=%d\n", ret); in e4000_set_params()
285 struct e4000_dev *dev = e4000_subdev_to_dev(sd); in e4000_standby() local
288 ret = e4000_sleep(dev); in e4000_standby()
292 return e4000_set_params(dev); in e4000_standby()
297 struct e4000_dev *dev = e4000_subdev_to_dev(sd); in e4000_g_tuner() local
298 struct i2c_client *client = dev->client; in e4000_g_tuner()
300 dev_dbg(&client->dev, "index=%d\n", v->index); in e4000_g_tuner()
312 struct e4000_dev *dev = e4000_subdev_to_dev(sd); in e4000_s_tuner() local
313 struct i2c_client *client = dev->client; in e4000_s_tuner()
315 dev_dbg(&client->dev, "index=%d\n", v->index); in e4000_s_tuner()
321 struct e4000_dev *dev = e4000_subdev_to_dev(sd); in e4000_g_frequency() local
322 struct i2c_client *client = dev->client; in e4000_g_frequency()
324 dev_dbg(&client->dev, "tuner=%d\n", f->tuner); in e4000_g_frequency()
325 f->frequency = dev->f_frequency; in e4000_g_frequency()
332 struct e4000_dev *dev = e4000_subdev_to_dev(sd); in e4000_s_frequency() local
333 struct i2c_client *client = dev->client; in e4000_s_frequency()
335 dev_dbg(&client->dev, "tuner=%d type=%d frequency=%u\n", in e4000_s_frequency()
338 dev->f_frequency = clamp_t(unsigned int, f->frequency, in e4000_s_frequency()
340 return e4000_set_params(dev); in e4000_s_frequency()
346 struct e4000_dev *dev = e4000_subdev_to_dev(sd); in e4000_enum_freq_bands() local
347 struct i2c_client *client = dev->client; in e4000_enum_freq_bands()
349 dev_dbg(&client->dev, "tuner=%d type=%d index=%d\n", in e4000_enum_freq_bands()
376 struct e4000_dev *dev = fe->tuner_priv; in e4000_set_lna_gain() local
377 struct i2c_client *client = dev->client; in e4000_set_lna_gain()
381 dev_dbg(&client->dev, "lna auto=%d->%d val=%d->%d\n", in e4000_set_lna_gain()
382 dev->lna_gain_auto->cur.val, dev->lna_gain_auto->val, in e4000_set_lna_gain()
383 dev->lna_gain->cur.val, dev->lna_gain->val); in e4000_set_lna_gain()
385 if (dev->lna_gain_auto->val && dev->if_gain_auto->cur.val) in e4000_set_lna_gain()
387 else if (dev->lna_gain_auto->val) in e4000_set_lna_gain()
389 else if (dev->if_gain_auto->cur.val) in e4000_set_lna_gain()
394 ret = regmap_write(dev->regmap, 0x1a, u8tmp); in e4000_set_lna_gain()
398 if (dev->lna_gain_auto->val == false) { in e4000_set_lna_gain()
399 ret = regmap_write(dev->regmap, 0x14, dev->lna_gain->val); in e4000_set_lna_gain()
406 dev_dbg(&client->dev, "failed=%d\n", ret); in e4000_set_lna_gain()
412 struct e4000_dev *dev = fe->tuner_priv; in e4000_set_mixer_gain() local
413 struct i2c_client *client = dev->client; in e4000_set_mixer_gain()
417 dev_dbg(&client->dev, "mixer auto=%d->%d val=%d->%d\n", in e4000_set_mixer_gain()
418 dev->mixer_gain_auto->cur.val, dev->mixer_gain_auto->val, in e4000_set_mixer_gain()
419 dev->mixer_gain->cur.val, dev->mixer_gain->val); in e4000_set_mixer_gain()
421 if (dev->mixer_gain_auto->val) in e4000_set_mixer_gain()
426 ret = regmap_write(dev->regmap, 0x20, u8tmp); in e4000_set_mixer_gain()
430 if (dev->mixer_gain_auto->val == false) { in e4000_set_mixer_gain()
431 ret = regmap_write(dev->regmap, 0x15, dev->mixer_gain->val); in e4000_set_mixer_gain()
438 dev_dbg(&client->dev, "failed=%d\n", ret); in e4000_set_mixer_gain()
444 struct e4000_dev *dev = fe->tuner_priv; in e4000_set_if_gain() local
445 struct i2c_client *client = dev->client; in e4000_set_if_gain()
450 dev_dbg(&client->dev, "if auto=%d->%d val=%d->%d\n", in e4000_set_if_gain()
451 dev->if_gain_auto->cur.val, dev->if_gain_auto->val, in e4000_set_if_gain()
452 dev->if_gain->cur.val, dev->if_gain->val); in e4000_set_if_gain()
454 if (dev->if_gain_auto->val && dev->lna_gain_auto->cur.val) in e4000_set_if_gain()
456 else if (dev->lna_gain_auto->cur.val) in e4000_set_if_gain()
458 else if (dev->if_gain_auto->val) in e4000_set_if_gain()
463 ret = regmap_write(dev->regmap, 0x1a, u8tmp); in e4000_set_if_gain()
467 if (dev->if_gain_auto->val == false) { in e4000_set_if_gain()
468 buf[0] = e4000_if_gain_lut[dev->if_gain->val].reg16_val; in e4000_set_if_gain()
469 buf[1] = e4000_if_gain_lut[dev->if_gain->val].reg17_val; in e4000_set_if_gain()
470 ret = regmap_bulk_write(dev->regmap, 0x16, buf, 2); in e4000_set_if_gain()
477 dev_dbg(&client->dev, "failed=%d\n", ret); in e4000_set_if_gain()
483 struct e4000_dev *dev = fe->tuner_priv; in e4000_pll_lock() local
484 struct i2c_client *client = dev->client; in e4000_pll_lock()
488 ret = regmap_read(dev->regmap, 0x07, &uitmp); in e4000_pll_lock()
492 dev->pll_lock->val = (uitmp & 0x01); in e4000_pll_lock()
496 dev_dbg(&client->dev, "failed=%d\n", ret); in e4000_pll_lock()
502 struct e4000_dev *dev = container_of(ctrl->handler, struct e4000_dev, hdl); in e4000_g_volatile_ctrl() local
503 struct i2c_client *client = dev->client; in e4000_g_volatile_ctrl()
506 if (!dev->active) in e4000_g_volatile_ctrl()
511 ret = e4000_pll_lock(dev->fe); in e4000_g_volatile_ctrl()
514 dev_dbg(&client->dev, "unknown ctrl: id=%d name=%s\n", in e4000_g_volatile_ctrl()
524 struct e4000_dev *dev = container_of(ctrl->handler, struct e4000_dev, hdl); in e4000_s_ctrl() local
525 struct i2c_client *client = dev->client; in e4000_s_ctrl()
528 if (!dev->active) in e4000_s_ctrl()
539 dev->f_bandwidth = dev->bandwidth->val; in e4000_s_ctrl()
540 ret = e4000_set_params(dev); in e4000_s_ctrl()
544 ret = e4000_set_lna_gain(dev->fe); in e4000_s_ctrl()
548 ret = e4000_set_mixer_gain(dev->fe); in e4000_s_ctrl()
552 ret = e4000_set_if_gain(dev->fe); in e4000_s_ctrl()
555 dev_dbg(&client->dev, "unknown ctrl: id=%d name=%s\n", in e4000_s_ctrl()
574 struct e4000_dev *dev = fe->tuner_priv; in e4000_dvb_set_params() local
577 dev->f_frequency = c->frequency; in e4000_dvb_set_params()
578 dev->f_bandwidth = c->bandwidth_hz; in e4000_dvb_set_params()
579 return e4000_set_params(dev); in e4000_dvb_set_params()
614 struct e4000_dev *dev; in e4000_probe() local
615 struct e4000_config *cfg = client->dev.platform_data; in e4000_probe()
624 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in e4000_probe()
625 if (!dev) { in e4000_probe()
630 dev->clk = cfg->clock; in e4000_probe()
631 dev->client = client; in e4000_probe()
632 dev->fe = cfg->fe; in e4000_probe()
633 dev->regmap = devm_regmap_init_i2c(client, &regmap_config); in e4000_probe()
634 if (IS_ERR(dev->regmap)) { in e4000_probe()
635 ret = PTR_ERR(dev->regmap); in e4000_probe()
640 ret = regmap_read(dev->regmap, 0x02, &uitmp); in e4000_probe()
644 dev_dbg(&client->dev, "chip id=%02x\n", uitmp); in e4000_probe()
652 ret = regmap_write(dev->regmap, 0x00, 0x00); in e4000_probe()
658 v4l2_ctrl_handler_init(&dev->hdl, 9); in e4000_probe()
659 dev->bandwidth_auto = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
661 dev->bandwidth = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
663 v4l2_ctrl_auto_cluster(2, &dev->bandwidth_auto, 0, false); in e4000_probe()
664 dev->lna_gain_auto = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
666 dev->lna_gain = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
668 v4l2_ctrl_auto_cluster(2, &dev->lna_gain_auto, 0, false); in e4000_probe()
669 dev->mixer_gain_auto = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
671 dev->mixer_gain = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
673 v4l2_ctrl_auto_cluster(2, &dev->mixer_gain_auto, 0, false); in e4000_probe()
674 dev->if_gain_auto = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
676 dev->if_gain = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
678 v4l2_ctrl_auto_cluster(2, &dev->if_gain_auto, 0, false); in e4000_probe()
679 dev->pll_lock = v4l2_ctrl_new_std(&dev->hdl, &e4000_ctrl_ops, in e4000_probe()
681 if (dev->hdl.error) { in e4000_probe()
682 ret = dev->hdl.error; in e4000_probe()
683 dev_err(&client->dev, "Could not initialize controls\n"); in e4000_probe()
684 v4l2_ctrl_handler_free(&dev->hdl); in e4000_probe()
688 dev->sd.ctrl_handler = &dev->hdl; in e4000_probe()
689 dev->f_frequency = bands[0].rangelow; in e4000_probe()
690 dev->f_bandwidth = dev->bandwidth->val; in e4000_probe()
691 v4l2_i2c_subdev_init(&dev->sd, client, &e4000_subdev_ops); in e4000_probe()
693 fe->tuner_priv = dev; in e4000_probe()
696 v4l2_set_subdevdata(&dev->sd, client); in e4000_probe()
697 i2c_set_clientdata(client, &dev->sd); in e4000_probe()
699 dev_info(&client->dev, "Elonics E4000 successfully identified\n"); in e4000_probe()
702 kfree(dev); in e4000_probe()
704 dev_dbg(&client->dev, "failed=%d\n", ret); in e4000_probe()
711 struct e4000_dev *dev = container_of(sd, struct e4000_dev, sd); in e4000_remove() local
713 dev_dbg(&client->dev, "\n"); in e4000_remove()
716 v4l2_ctrl_handler_free(&dev->hdl); in e4000_remove()
718 kfree(dev); in e4000_remove()