Lines Matching +full:max +full:- +full:msg
1 // SPDX-License-Identifier: GPL-2.0-or-later
16 #include "dvb-pll.h"
45 { [ 0 ... (DVB_PLL_MAX-1) ] = DVB_PLL_UNDEFINED };
49 /* ----------------------------------------------------------- */
54 u32 max; member
69 /* ----------------------------------------------------------- */
75 .max = 858 * MHz,
89 u32 bw = fe->dtv_property_cache.bandwidth_hz; in thomson_dtt759x_bw()
97 .max = 896 * MHz,
113 u32 bw = fe->dtv_property_cache.bandwidth_hz; in thomson_dtt7520x_bw()
121 .max = 900 * MHz,
139 .max = 862 * MHz,
153 .name = "unknown 1", /* used by dntv live dvb-t */
155 .max = 862 * MHz,
177 .max = 858 * MHz,
191 .max = 858 * MHz,
207 u32 bw = fe->dtv_property_cache.bandwidth_hz; in tda665x_bw()
215 .max = 858 * MHz,
241 u32 bw = fe->dtv_property_cache.bandwidth_hz; in tua6034_bw()
249 .max = 858 * MHz,
261 * used in Nebula-Cards and USB boxes
265 u32 bw = fe->dtv_property_cache.bandwidth_hz; in tded4_bw()
273 .max = 863 * MHz,
291 .max = 864 * MHz,
303 * used in Air2PC ATSC - 2nd generation (nxt2002)
308 .max = 860 * MHz,
327 .max = 2150 * MHz,
328 .iffreq= 249, /* zero-IF, offset 249 is to round up */
340 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in opera1_bw()
341 struct dvb_pll_priv *priv = fe->tuner_priv; in opera1_bw()
342 u32 b_w = (c->symbol_rate * 27) / 32000; in opera1_bw()
343 struct i2c_msg msg = { in opera1_bw() local
344 .addr = priv->pll_i2c_address, in opera1_bw()
352 if (fe->ops.i2c_gate_ctrl) in opera1_bw()
353 fe->ops.i2c_gate_ctrl(fe, 1); in opera1_bw()
355 result = i2c_transfer(priv->i2c, &msg, 1); in opera1_bw()
382 buf[2] ^= 0x1c; /* Flip bits 3-5 */ in opera1_bw()
393 .max = 2250 * MHz,
413 struct dvb_pll_priv *priv = fe->tuner_priv; in samsung_dtos403ih102a_set()
414 struct i2c_msg msg = { in samsung_dtos403ih102a_set() local
415 .addr = priv->pll_i2c_address, in samsung_dtos403ih102a_set()
422 if (fe->ops.i2c_gate_ctrl) in samsung_dtos403ih102a_set()
423 fe->ops.i2c_gate_ctrl(fe, 1); in samsung_dtos403ih102a_set()
425 result = i2c_transfer(priv->i2c, &msg, 1); in samsung_dtos403ih102a_set()
436 /* unknown pll used in Samsung DTOS403IH102A DVB-C tuner */
440 .max = 858 * MHz,
456 /* Samsung TDTC9251DH0 DVB-T NIM, as used on AirStar 2 */
460 .max = 863 * MHz,
470 /* Samsung TBDU18132 DVB-S NIM with TSA5059 PLL, used in SkyStar2 DVB-S 2.3 */
474 .max = 2150 * MHz, /* guesses */
491 /* Samsung TBMU24112 DVB-S NIM with SL1935 zero-IF tuner */
495 .max = 2150 * MHz, /* guesses */
504 /* Alps TDEE4 DVB-C NIM, used on Cablestar 2 */
509 * 47 - 153 0 * 0 0 0 0 0 1 0x01
510 * 153 - 430 0 * 0 0 0 0 1 0 0x02
511 * 430 - 822 0 * 0 0 1 0 0 0 0x08
512 * 822 - 862 1 * 0 0 1 0 0 0 0x88 */
516 .max = 862 * MHz,
527 /* Infineon TUA6034 ISDB-T, used in Friio */
530 .name = "Infineon TUA6034 ISDB-T (Friio)",
532 .max = 770 * MHz,
544 /* Philips TDA6651 ISDB-T, used in Earthsoft PT1 */
546 .name = "Philips TDA6651 ISDB-T (EarthSoft PT1)",
548 .max = 770 * MHz,
566 /* ----------------------------------------------------------- */
593 /* ----------------------------------------------------------- */
599 struct dvb_pll_priv *priv = fe->tuner_priv; in dvb_pll_configure()
600 const struct dvb_pll_desc *desc = priv->pll_desc; in dvb_pll_configure()
604 for (i = 0; i < desc->count; i++) { in dvb_pll_configure()
605 if (frequency > desc->entries[i].limit) in dvb_pll_configure()
611 dprintk("pll: %s: freq=%d | i=%d/%d\n", desc->name, in dvb_pll_configure()
612 frequency, i, desc->count); in dvb_pll_configure()
613 if (i == desc->count) in dvb_pll_configure()
614 return -EINVAL; in dvb_pll_configure()
616 div = (frequency + desc->iffreq + in dvb_pll_configure()
617 desc->entries[i].stepsize/2) / desc->entries[i].stepsize; in dvb_pll_configure()
620 buf[2] = desc->entries[i].config; in dvb_pll_configure()
621 buf[3] = desc->entries[i].cb; in dvb_pll_configure()
623 if (desc->set) in dvb_pll_configure()
624 desc->set(fe, buf); in dvb_pll_configure()
628 desc->name, div, buf[0], buf[1], buf[2], buf[3]); in dvb_pll_configure()
631 return (div * desc->entries[i].stepsize) - desc->iffreq; in dvb_pll_configure()
636 kfree(fe->tuner_priv); in dvb_pll_release()
637 fe->tuner_priv = NULL; in dvb_pll_release()
642 struct dvb_pll_priv *priv = fe->tuner_priv; in dvb_pll_sleep()
644 if (priv->i2c == NULL) in dvb_pll_sleep()
645 return -EINVAL; in dvb_pll_sleep()
647 if (priv->pll_desc->sleepdata) { in dvb_pll_sleep()
648 struct i2c_msg msg = { .flags = 0, in dvb_pll_sleep() local
649 .addr = priv->pll_i2c_address, in dvb_pll_sleep()
650 .buf = priv->pll_desc->sleepdata + 1, in dvb_pll_sleep()
651 .len = priv->pll_desc->sleepdata[0] }; in dvb_pll_sleep()
655 if (fe->ops.i2c_gate_ctrl) in dvb_pll_sleep()
656 fe->ops.i2c_gate_ctrl(fe, 1); in dvb_pll_sleep()
657 if ((result = i2c_transfer(priv->i2c, &msg, 1)) != 1) { in dvb_pll_sleep()
663 return -EINVAL; in dvb_pll_sleep()
668 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in dvb_pll_set_params()
669 struct dvb_pll_priv *priv = fe->tuner_priv; in dvb_pll_set_params()
671 struct i2c_msg msg = in dvb_pll_set_params() local
672 { .addr = priv->pll_i2c_address, .flags = 0, in dvb_pll_set_params()
677 if (priv->i2c == NULL) in dvb_pll_set_params()
678 return -EINVAL; in dvb_pll_set_params()
680 result = dvb_pll_configure(fe, buf, c->frequency); in dvb_pll_set_params()
686 if (fe->ops.i2c_gate_ctrl) in dvb_pll_set_params()
687 fe->ops.i2c_gate_ctrl(fe, 1); in dvb_pll_set_params()
688 if ((result = i2c_transfer(priv->i2c, &msg, 1)) != 1) { in dvb_pll_set_params()
692 priv->frequency = frequency; in dvb_pll_set_params()
693 priv->bandwidth = c->bandwidth_hz; in dvb_pll_set_params()
701 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in dvb_pll_calc_regs()
702 struct dvb_pll_priv *priv = fe->tuner_priv; in dvb_pll_calc_regs()
707 return -EINVAL; in dvb_pll_calc_regs()
709 result = dvb_pll_configure(fe, buf + 1, c->frequency); in dvb_pll_calc_regs()
715 buf[0] = priv->pll_i2c_address; in dvb_pll_calc_regs()
717 priv->frequency = frequency; in dvb_pll_calc_regs()
718 priv->bandwidth = c->bandwidth_hz; in dvb_pll_calc_regs()
725 struct dvb_pll_priv *priv = fe->tuner_priv; in dvb_pll_get_frequency()
726 *frequency = priv->frequency; in dvb_pll_get_frequency()
732 struct dvb_pll_priv *priv = fe->tuner_priv; in dvb_pll_get_bandwidth()
733 *bandwidth = priv->bandwidth; in dvb_pll_get_bandwidth()
739 struct dvb_pll_priv *priv = fe->tuner_priv; in dvb_pll_init()
741 if (priv->i2c == NULL) in dvb_pll_init()
742 return -EINVAL; in dvb_pll_init()
744 if (priv->pll_desc->initdata) { in dvb_pll_init()
745 struct i2c_msg msg = { .flags = 0, in dvb_pll_init() local
746 .addr = priv->pll_i2c_address, in dvb_pll_init()
747 .buf = priv->pll_desc->initdata + 1, in dvb_pll_init()
748 .len = priv->pll_desc->initdata[0] }; in dvb_pll_init()
751 if (fe->ops.i2c_gate_ctrl) in dvb_pll_init()
752 fe->ops.i2c_gate_ctrl(fe, 1); in dvb_pll_init()
753 result = i2c_transfer(priv->i2c, &msg, 1); in dvb_pll_init()
756 if (priv->pll_desc->initdata2) { in dvb_pll_init()
757 msg.buf = priv->pll_desc->initdata2 + 1; in dvb_pll_init()
758 msg.len = priv->pll_desc->initdata2[0]; in dvb_pll_init()
759 if (fe->ops.i2c_gate_ctrl) in dvb_pll_init()
760 fe->ops.i2c_gate_ctrl(fe, 1); in dvb_pll_init()
761 result = i2c_transfer(priv->i2c, &msg, 1); in dvb_pll_init()
768 return -EINVAL; in dvb_pll_init()
786 struct i2c_msg msg = { .addr = pll_addr, .flags = I2C_M_RD, .len = 1 }; in dvb_pll_attach() local
797 msg.buf = b1; in dvb_pll_attach()
799 nr = ida_alloc_max(&pll_ida, DVB_PLL_MAX - 1, GFP_KERNEL); in dvb_pll_attach()
813 if (fe->ops.i2c_gate_ctrl) in dvb_pll_attach()
814 fe->ops.i2c_gate_ctrl(fe, 1); in dvb_pll_attach()
816 ret = i2c_transfer (i2c, &msg, 1); in dvb_pll_attach()
819 if (fe->ops.i2c_gate_ctrl) in dvb_pll_attach()
820 fe->ops.i2c_gate_ctrl(fe, 0); in dvb_pll_attach()
827 priv->pll_i2c_address = pll_addr; in dvb_pll_attach()
828 priv->i2c = i2c; in dvb_pll_attach()
829 priv->pll_desc = desc; in dvb_pll_attach()
830 priv->nr = nr; in dvb_pll_attach()
832 memcpy(&fe->ops.tuner_ops, &dvb_pll_tuner_ops, in dvb_pll_attach()
835 strscpy(fe->ops.tuner_ops.info.name, desc->name, in dvb_pll_attach()
836 sizeof(fe->ops.tuner_ops.info.name)); in dvb_pll_attach()
838 fe->ops.tuner_ops.info.frequency_min_hz = desc->min; in dvb_pll_attach()
839 fe->ops.tuner_ops.info.frequency_max_hz = desc->max; in dvb_pll_attach()
842 desc->name, desc->min, desc->max); in dvb_pll_attach()
844 if (!desc->initdata) in dvb_pll_attach()
845 fe->ops.tuner_ops.init = NULL; in dvb_pll_attach()
846 if (!desc->sleepdata) in dvb_pll_attach()
847 fe->ops.tuner_ops.sleep = NULL; in dvb_pll_attach()
849 fe->tuner_priv = priv; in dvb_pll_attach()
851 if ((debug) || (id[priv->nr] == pll_desc_id)) { in dvb_pll_attach()
852 dprintk("dvb-pll[%d]", priv->nr); in dvb_pll_attach()
854 pr_cont(" %d-%04x", i2c_adapter_id(i2c), pll_addr); in dvb_pll_attach()
855 pr_cont(": id# %d (%s) attached, %s\n", pll_desc_id, desc->name, in dvb_pll_attach()
856 id[priv->nr] == pll_desc_id ? in dvb_pll_attach()
880 cfg = client->dev.platform_data; in dvb_pll_probe()
881 fe = cfg->fe; in dvb_pll_probe()
883 desc_id = (unsigned int) id->driver_data; in dvb_pll_probe()
885 if (!dvb_pll_attach(fe, client->addr, client->adapter, desc_id)) in dvb_pll_probe()
886 return -ENOMEM; in dvb_pll_probe()
898 fe->ops.tuner_ops.release = NULL; in dvb_pll_probe()
899 dev_info(&client->dev, "DVB Simple Tuner attached.\n"); in dvb_pll_probe()
906 struct dvb_pll_priv *priv = fe->tuner_priv; in dvb_pll_remove()
908 ida_free(&pll_ida, priv->nr); in dvb_pll_remove()