stv6110x 30 drivers/media/dvb-frontends/stv6110x.c static int stv6110x_read_reg(struct stv6110x_state *stv6110x, u8 reg, u8 *data) stv6110x 33 drivers/media/dvb-frontends/stv6110x.c const struct stv6110x_config *config = stv6110x->config; stv6110x 41 drivers/media/dvb-frontends/stv6110x.c ret = i2c_transfer(stv6110x->i2c, msg, 2); stv6110x 51 drivers/media/dvb-frontends/stv6110x.c static int stv6110x_write_regs(struct stv6110x_state *stv6110x, int start, u8 data[], int len) stv6110x 54 drivers/media/dvb-frontends/stv6110x.c const struct stv6110x_config *config = stv6110x->config; stv6110x 77 drivers/media/dvb-frontends/stv6110x.c ret = i2c_transfer(stv6110x->i2c, &msg, 1); stv6110x 86 drivers/media/dvb-frontends/stv6110x.c static int stv6110x_write_reg(struct stv6110x_state *stv6110x, u8 reg, u8 data) stv6110x 90 drivers/media/dvb-frontends/stv6110x.c return stv6110x_write_regs(stv6110x, reg, &tmp, 1); stv6110x 95 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 98 drivers/media/dvb-frontends/stv6110x.c ret = stv6110x_write_regs(stv6110x, 0, stv6110x->regs, stv6110x 99 drivers/media/dvb-frontends/stv6110x.c ARRAY_SIZE(stv6110x->regs)); stv6110x 110 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 115 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL1], CTRL1_K, (REFCLOCK_MHz - 16)); stv6110x 118 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_DIV4SEL, 1); stv6110x 119 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_PRESC32_ON, 0); stv6110x 122 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_DIV4SEL, 1); stv6110x 123 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_PRESC32_ON, 1); stv6110x 126 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_DIV4SEL, 0); stv6110x 127 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_PRESC32_ON, 0); stv6110x 130 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_DIV4SEL, 0); stv6110x 131 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_PRESC32_ON, 1); stv6110x 147 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_R_DIV, rDivOpt); stv6110x 148 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG1], TNG1_N_DIV_11_8, MSB(divider)); stv6110x 149 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_TNG0], TNG0_N_DIV_7_0, LSB(divider)); stv6110x 152 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_STAT1], STAT1_CALVCO_STRT, 1); stv6110x 154 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_CTRL1, stv6110x->regs[STV6110x_CTRL1]); stv6110x 155 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_TNG1, stv6110x->regs[STV6110x_TNG1]); stv6110x 156 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_TNG0, stv6110x->regs[STV6110x_TNG0]); stv6110x 157 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_STAT1, stv6110x->regs[STV6110x_STAT1]); stv6110x 160 drivers/media/dvb-frontends/stv6110x.c stv6110x_read_reg(stv6110x, STV6110x_STAT1, &stv6110x->regs[STV6110x_STAT1]); stv6110x 161 drivers/media/dvb-frontends/stv6110x.c if (!STV6110x_GETFIELD(STAT1_CALVCO_STRT, stv6110x->regs[STV6110x_STAT1])) stv6110x 171 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 173 drivers/media/dvb-frontends/stv6110x.c stv6110x_read_reg(stv6110x, STV6110x_TNG1, &stv6110x->regs[STV6110x_TNG1]); stv6110x 174 drivers/media/dvb-frontends/stv6110x.c stv6110x_read_reg(stv6110x, STV6110x_TNG0, &stv6110x->regs[STV6110x_TNG0]); stv6110x 176 drivers/media/dvb-frontends/stv6110x.c *frequency = (MAKEWORD16(STV6110x_GETFIELD(TNG1_N_DIV_11_8, stv6110x->regs[STV6110x_TNG1]), stv6110x 177 drivers/media/dvb-frontends/stv6110x.c STV6110x_GETFIELD(TNG0_N_DIV_7_0, stv6110x->regs[STV6110x_TNG0]))) * REFCLOCK_kHz; stv6110x 179 drivers/media/dvb-frontends/stv6110x.c *frequency /= (1 << (STV6110x_GETFIELD(TNG1_R_DIV, stv6110x->regs[STV6110x_TNG1]) + stv6110x 180 drivers/media/dvb-frontends/stv6110x.c STV6110x_GETFIELD(TNG1_DIV4SEL, stv6110x->regs[STV6110x_TNG1]))); stv6110x 189 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 196 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL3], CTRL3_CF, 31); /* LPF */ stv6110x 198 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL3], CTRL3_CF, 0); /* LPF */ stv6110x 200 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL3], CTRL3_CF, ((halfbw / 1000000) - 5)); /* LPF */ stv6110x 203 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL3], CTRL3_RCCLK_OFF, 0x0); /* cal. clk activated */ stv6110x 204 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_STAT1], STAT1_CALRC_STRT, 0x1); /* LPF auto cal */ stv6110x 206 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_CTRL3, stv6110x->regs[STV6110x_CTRL3]); stv6110x 207 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_STAT1, stv6110x->regs[STV6110x_STAT1]); stv6110x 210 drivers/media/dvb-frontends/stv6110x.c stv6110x_read_reg(stv6110x, STV6110x_STAT1, &stv6110x->regs[STV6110x_STAT1]); stv6110x 211 drivers/media/dvb-frontends/stv6110x.c if (!STV6110x_GETFIELD(STAT1_CALRC_STRT, stv6110x->regs[STV6110x_STAT1])) stv6110x 215 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL3], CTRL3_RCCLK_OFF, 0x1); /* cal. done */ stv6110x 216 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_CTRL3, stv6110x->regs[STV6110x_CTRL3]); stv6110x 223 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 225 drivers/media/dvb-frontends/stv6110x.c stv6110x_read_reg(stv6110x, STV6110x_CTRL3, &stv6110x->regs[STV6110x_CTRL3]); stv6110x 226 drivers/media/dvb-frontends/stv6110x.c *bandwidth = (STV6110x_GETFIELD(CTRL3_CF, stv6110x->regs[STV6110x_CTRL3]) + 5) * 2000000; stv6110x 233 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 239 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], CTRL2_CO_DIV, 0); stv6110x 242 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], CTRL2_CO_DIV, 1); stv6110x 245 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], CTRL2_CO_DIV, 2); stv6110x 249 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], CTRL2_CO_DIV, 3); stv6110x 252 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_CTRL2, stv6110x->regs[STV6110x_CTRL2]); stv6110x 259 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 261 drivers/media/dvb-frontends/stv6110x.c stv6110x_read_reg(stv6110x, STV6110x_CTRL2, &stv6110x->regs[STV6110x_CTRL2]); stv6110x 262 drivers/media/dvb-frontends/stv6110x.c *gain = 2 * STV6110x_GETFIELD(CTRL2_BBGAIN, stv6110x->regs[STV6110x_CTRL2]); stv6110x 269 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 271 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], CTRL2_BBGAIN, gain / 2); stv6110x 272 drivers/media/dvb-frontends/stv6110x.c stv6110x_write_reg(stv6110x, STV6110x_CTRL2, stv6110x->regs[STV6110x_CTRL2]); stv6110x 279 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 284 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL1], CTRL1_SYN, 0); stv6110x 285 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL1], CTRL1_RX, 0); stv6110x 286 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL1], CTRL1_LPT, 0); stv6110x 290 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL1], CTRL1_SYN, 1); stv6110x 291 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL1], CTRL1_RX, 1); stv6110x 292 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL1], CTRL1_LPT, 1); stv6110x 296 drivers/media/dvb-frontends/stv6110x.c ret = stv6110x_write_reg(stv6110x, STV6110x_CTRL1, stv6110x->regs[STV6110x_CTRL1]); stv6110x 315 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 317 drivers/media/dvb-frontends/stv6110x.c stv6110x_read_reg(stv6110x, STV6110x_STAT1, &stv6110x->regs[STV6110x_STAT1]); stv6110x 319 drivers/media/dvb-frontends/stv6110x.c if (STV6110x_GETFIELD(STAT1_LOCK, stv6110x->regs[STV6110x_STAT1])) stv6110x 330 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = fe->tuner_priv; stv6110x 333 drivers/media/dvb-frontends/stv6110x.c kfree(stv6110x); stv6110x 336 drivers/media/dvb-frontends/stv6110x.c static void st6110x_init_regs(struct stv6110x_state *stv6110x) stv6110x 340 drivers/media/dvb-frontends/stv6110x.c memcpy(stv6110x->regs, default_regs, 8); stv6110x 343 drivers/media/dvb-frontends/stv6110x.c static void stv6110x_setup_divider(struct stv6110x_state *stv6110x) stv6110x 345 drivers/media/dvb-frontends/stv6110x.c switch (stv6110x->config->clk_div) { stv6110x 348 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], stv6110x 353 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], stv6110x 358 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], stv6110x 364 drivers/media/dvb-frontends/stv6110x.c STV6110x_SETFIELD(stv6110x->regs[STV6110x_CTRL2], stv6110x 394 drivers/media/dvb-frontends/stv6110x.c static void stv6110x_set_frontend_opts(struct stv6110x_state *stv6110x) stv6110x 396 drivers/media/dvb-frontends/stv6110x.c stv6110x->frontend->tuner_priv = stv6110x; stv6110x 397 drivers/media/dvb-frontends/stv6110x.c stv6110x->frontend->ops.tuner_ops = stv6110x_ops; stv6110x 402 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = i2c_get_clientdata(client); stv6110x 406 drivers/media/dvb-frontends/stv6110x.c return stv6110x->devctl; stv6110x 414 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x; stv6110x 416 drivers/media/dvb-frontends/stv6110x.c stv6110x = kzalloc(sizeof(*stv6110x), GFP_KERNEL); stv6110x 417 drivers/media/dvb-frontends/stv6110x.c if (!stv6110x) stv6110x 420 drivers/media/dvb-frontends/stv6110x.c stv6110x->frontend = config->frontend; stv6110x 421 drivers/media/dvb-frontends/stv6110x.c stv6110x->i2c = client->adapter; stv6110x 422 drivers/media/dvb-frontends/stv6110x.c stv6110x->config = config; stv6110x 423 drivers/media/dvb-frontends/stv6110x.c stv6110x->devctl = &stv6110x_ctl; stv6110x 425 drivers/media/dvb-frontends/stv6110x.c st6110x_init_regs(stv6110x); stv6110x 426 drivers/media/dvb-frontends/stv6110x.c stv6110x_setup_divider(stv6110x); stv6110x 427 drivers/media/dvb-frontends/stv6110x.c stv6110x_set_frontend_opts(stv6110x); stv6110x 429 drivers/media/dvb-frontends/stv6110x.c dev_info(&stv6110x->i2c->dev, "Probed STV6110x\n"); stv6110x 431 drivers/media/dvb-frontends/stv6110x.c i2c_set_clientdata(client, stv6110x); stv6110x 441 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x = i2c_get_clientdata(client); stv6110x 443 drivers/media/dvb-frontends/stv6110x.c stv6110x_release(stv6110x->frontend); stv6110x 451 drivers/media/dvb-frontends/stv6110x.c struct stv6110x_state *stv6110x; stv6110x 453 drivers/media/dvb-frontends/stv6110x.c stv6110x = kzalloc(sizeof(*stv6110x), GFP_KERNEL); stv6110x 454 drivers/media/dvb-frontends/stv6110x.c if (!stv6110x) stv6110x 457 drivers/media/dvb-frontends/stv6110x.c stv6110x->frontend = fe; stv6110x 458 drivers/media/dvb-frontends/stv6110x.c stv6110x->i2c = i2c; stv6110x 459 drivers/media/dvb-frontends/stv6110x.c stv6110x->config = config; stv6110x 460 drivers/media/dvb-frontends/stv6110x.c stv6110x->devctl = &stv6110x_ctl; stv6110x 462 drivers/media/dvb-frontends/stv6110x.c st6110x_init_regs(stv6110x); stv6110x 463 drivers/media/dvb-frontends/stv6110x.c stv6110x_setup_divider(stv6110x); stv6110x 464 drivers/media/dvb-frontends/stv6110x.c stv6110x_set_frontend_opts(stv6110x); stv6110x 466 drivers/media/dvb-frontends/stv6110x.c fe->tuner_priv = stv6110x; stv6110x 469 drivers/media/dvb-frontends/stv6110x.c dev_info(&stv6110x->i2c->dev, "Attaching STV6110x\n"); stv6110x 470 drivers/media/dvb-frontends/stv6110x.c return stv6110x->devctl; stv6110x 53 drivers/media/dvb-frontends/stv6110x_priv.h #define REFCLOCK_kHz (stv6110x->config->refclk / 1000) stv6110x 54 drivers/media/dvb-frontends/stv6110x_priv.h #define REFCLOCK_MHz (stv6110x->config->refclk / 1000000)