Lines Matching +full:y +full:- +full:rc

1 // SPDX-License-Identifier: GPL-2.0-or-later
30 #define dprintk(x, y, z, format, arg...) do { \ argument
32 if ((x > FE_ERROR) && (x > y)) \
34 else if ((x > FE_NOTICE) && (x > y)) \
36 else if ((x > FE_INFO) && (x > y)) \
38 else if ((x > FE_DEBUG) && (x > y)) \
41 if (x > y) \
123 int rc; in stb6100_read_regs() local
125 .addr = state->config->tuner_address, in stb6100_read_regs()
131 rc = i2c_transfer(state->i2c, &msg, 1); in stb6100_read_regs()
132 if (unlikely(rc != 1)) { in stb6100_read_regs()
133 dprintk(verbose, FE_ERROR, 1, "Read (0x%x) err, rc=[%d]", in stb6100_read_regs()
134 state->config->tuner_address, rc); in stb6100_read_regs()
136 return -EREMOTEIO; in stb6100_read_regs()
141 dprintk(verbose, FE_DEBUG, 1, " Read from 0x%02x", state->config->tuner_address); in stb6100_read_regs()
153 .addr = state->config->tuner_address + reg, in stb6100_read_reg()
159 i2c_transfer(state->i2c, &msg, 1); in stb6100_read_reg()
163 return -EINVAL; in stb6100_read_reg()
166 dprintk(verbose, FE_DEBUG, 1, " Read from 0x%02x", state->config->tuner_address); in stb6100_read_reg()
175 int rc; in stb6100_write_reg_range() local
178 .addr = state->config->tuner_address, in stb6100_write_reg_range()
188 return -EINVAL; in stb6100_write_reg_range()
194 return -EINVAL; in stb6100_write_reg_range()
202 …dprintk(verbose, FE_DEBUG, 1, " Write @ 0x%02x: [%d:%d]", state->config->tuner_address, start, … in stb6100_write_reg_range()
206 rc = i2c_transfer(state->i2c, &msg, 1); in stb6100_write_reg_range()
207 if (unlikely(rc != 1)) { in stb6100_write_reg_range()
208 dprintk(verbose, FE_ERROR, 1, "(0x%x) write err [%d:%d], rc=[%d]", in stb6100_write_reg_range()
209 (unsigned int)state->config->tuner_address, start, len, rc); in stb6100_write_reg_range()
210 return -EREMOTEIO; in stb6100_write_reg_range()
221 return -EREMOTEIO; in stb6100_write_reg()
230 int rc; in stb6100_get_status() local
231 struct stb6100_state *state = fe->tuner_priv; in stb6100_get_status()
233 rc = stb6100_read_reg(state, STB6100_LD); in stb6100_get_status()
234 if (rc < 0) { in stb6100_get_status()
236 return rc; in stb6100_get_status()
238 return (rc & STB6100_LD_LOCK) ? TUNER_STATUS_LOCKED : 0; in stb6100_get_status()
243 int rc; in stb6100_get_bandwidth() local
246 struct stb6100_state *state = fe->tuner_priv; in stb6100_get_bandwidth()
248 rc = stb6100_read_reg(state, STB6100_F); in stb6100_get_bandwidth()
249 if (rc < 0) in stb6100_get_bandwidth()
250 return rc; in stb6100_get_bandwidth()
251 f = rc & STB6100_F_F; in stb6100_get_bandwidth()
255 *bandwidth = state->bandwidth = bw * 1000; in stb6100_get_bandwidth()
256 dprintk(verbose, FE_DEBUG, 1, "bandwidth = %u Hz", state->bandwidth); in stb6100_get_bandwidth()
263 int rc; in stb6100_set_bandwidth() local
264 struct stb6100_state *state = fe->tuner_priv; in stb6100_set_bandwidth()
275 tmp = (bandwidth + 500000) / 1000000 - 5; in stb6100_set_bandwidth()
280 rc = stb6100_write_reg(state, STB6100_FCCK, 0x0d | STB6100_FCCK_FCCK); in stb6100_set_bandwidth()
281 if (rc < 0) in stb6100_set_bandwidth()
282 return rc; in stb6100_set_bandwidth()
283 rc = stb6100_write_reg(state, STB6100_F, 0xc0 | tmp); in stb6100_set_bandwidth()
284 if (rc < 0) in stb6100_set_bandwidth()
285 return rc; in stb6100_set_bandwidth()
289 rc = stb6100_write_reg(state, STB6100_FCCK, 0x0d); in stb6100_set_bandwidth()
290 if (rc < 0) in stb6100_set_bandwidth()
291 return rc; in stb6100_set_bandwidth()
300 int rc; in stb6100_get_frequency() local
303 struct stb6100_state *state = fe->tuner_priv; in stb6100_get_frequency()
306 rc = stb6100_read_regs(state, regs); in stb6100_get_frequency()
307 if (rc < 0) in stb6100_get_frequency()
308 return rc; in stb6100_get_frequency()
314 fvco = (nfrac * state->reference >> (9 - psd2)) + (nint * state->reference << psd2); in stb6100_get_frequency()
315 *frequency = state->frequency = fvco >> (odiv + 1); in stb6100_get_frequency()
319 state->frequency, odiv, psd2, state->reference, fvco, nint, nfrac); in stb6100_get_frequency()
326 int rc; in stb6100_set_frequency() local
328 struct stb6100_state *state = fe->tuner_priv; in stb6100_set_frequency()
329 struct dtv_frontend_properties *p = &fe->dtv_property_cache; in stb6100_set_frequency()
335 dprintk(verbose, FE_DEBUG, 1, "Version 2010-8-14 13:51"); in stb6100_set_frequency()
337 if (fe->ops.get_frontend) { in stb6100_set_frequency()
339 fe->ops.get_frontend(fe, p); in stb6100_set_frequency()
341 srate = p->symbol_rate; in stb6100_set_frequency()
344 rc = stb6100_write_reg(state, STB6100_FCCK, 0x4d | STB6100_FCCK_FCCK); in stb6100_set_frequency()
345 if (rc < 0) in stb6100_set_frequency()
346 return rc; /* allow LPF calibration */ in stb6100_set_frequency()
350 rc = stb6100_write_reg(state, STB6100_LPEN, regs[STB6100_LPEN]); in stb6100_set_frequency()
351 if (rc < 0) in stb6100_set_frequency()
352 return rc; in stb6100_set_frequency()
367 (ptr->val_high != 0) && !CHKRANGE(frequency, ptr->val_low, ptr->val_high); in stb6100_set_frequency()
370 if (ptr->val_high == 0) { in stb6100_set_frequency()
372 return -EINVAL; in stb6100_set_frequency()
374 regs[STB6100_VCO] = (regs[STB6100_VCO] & ~STB6100_VCO_OSM) | ptr->reg; in stb6100_set_frequency()
375 rc = stb6100_write_reg(state, STB6100_VCO, regs[STB6100_VCO]); in stb6100_set_frequency()
376 if (rc < 0) in stb6100_set_frequency()
377 return rc; in stb6100_set_frequency()
386 nint = fvco / (state->reference << psd2); in stb6100_set_frequency()
387 /* N(F) = round(f(VCO) / f(XTAL) * (PSD2 ? 2 : 1) - N(I)) * 2 ^ 9 */ in stb6100_set_frequency()
388 nfrac = DIV_ROUND_CLOSEST((fvco - (nint * state->reference << psd2)) in stb6100_set_frequency()
389 << (9 - psd2), state->reference); in stb6100_set_frequency()
393 rc = stb6100_write_reg(state, STB6100_NI, regs[STB6100_NI]); in stb6100_set_frequency()
394 if (rc < 0) in stb6100_set_frequency()
395 return rc; in stb6100_set_frequency()
399 rc = stb6100_write_reg(state, STB6100_NF_LSB, regs[STB6100_NF_LSB]); in stb6100_set_frequency()
400 if (rc < 0) in stb6100_set_frequency()
401 return rc; in stb6100_set_frequency()
406 rc = stb6100_write_reg(state, STB6100_K, regs[STB6100_K]); in stb6100_set_frequency()
407 if (rc < 0) in stb6100_set_frequency()
408 return rc; in stb6100_set_frequency()
420 regs[STB6100_G] |= (1 << 5); /* 2Vp-p Mode */ in stb6100_set_frequency()
421 rc = stb6100_write_reg(state, STB6100_G, regs[STB6100_G]); in stb6100_set_frequency()
422 if (rc < 0) in stb6100_set_frequency()
423 return rc; in stb6100_set_frequency()
429 rc = stb6100_write_reg(state, STB6100_DLB, regs[STB6100_DLB]); in stb6100_set_frequency()
430 if (rc < 0) in stb6100_set_frequency()
431 return rc; in stb6100_set_frequency()
436 (unsigned int)psd2, state->reference, in stb6100_set_frequency()
437 ptr->reg, fvco, nint, nfrac); in stb6100_set_frequency()
441 rc = stb6100_write_reg(state, STB6100_TEST1, regs[STB6100_TEST1]); in stb6100_set_frequency()
442 if (rc < 0) in stb6100_set_frequency()
443 return rc; in stb6100_set_frequency()
445 rc = stb6100_write_reg(state, STB6100_TEST3, regs[STB6100_TEST3]); in stb6100_set_frequency()
446 if (rc < 0) in stb6100_set_frequency()
447 return rc; in stb6100_set_frequency()
451 rc = stb6100_write_reg(state, STB6100_LPEN, regs[STB6100_LPEN]); in stb6100_set_frequency()
452 if (rc < 0) in stb6100_set_frequency()
453 return rc; in stb6100_set_frequency()
459 rc = stb6100_write_reg(state, STB6100_VCO, regs[STB6100_VCO]); in stb6100_set_frequency()
460 if (rc < 0) in stb6100_set_frequency()
461 return rc; in stb6100_set_frequency()
467 rc = stb6100_write_reg(state, STB6100_VCO, regs[STB6100_VCO]); in stb6100_set_frequency()
468 if (rc < 0) in stb6100_set_frequency()
469 return rc; in stb6100_set_frequency()
471 rc = stb6100_write_reg(state, STB6100_FCCK, 0x0d); in stb6100_set_frequency()
472 if (rc < 0) in stb6100_set_frequency()
473 return rc; /* Stop LPF calibration */ in stb6100_set_frequency()
488 struct stb6100_state *state = fe->tuner_priv; in stb6100_init()
495 state->bandwidth = 36000000; /* Hz */ in stb6100_init()
496 state->reference = refclk / 1000; /* kHz */ in stb6100_init()
498 /* Set default bandwidth. Modified, PN 13-May-10 */ in stb6100_init()
504 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in stb6100_set_params()
506 if (c->frequency > 0) in stb6100_set_params()
507 stb6100_set_frequency(fe, c->frequency); in stb6100_set_params()
509 if (c->bandwidth_hz > 0) in stb6100_set_params()
510 stb6100_set_bandwidth(fe, c->bandwidth_hz); in stb6100_set_params()
541 state->config = config; in stb6100_attach()
542 state->i2c = i2c; in stb6100_attach()
543 state->frontend = fe; in stb6100_attach()
544 state->reference = config->refclock / 1000; /* kHz */ in stb6100_attach()
545 fe->tuner_priv = state; in stb6100_attach()
546 fe->ops.tuner_ops = stb6100_ops; in stb6100_attach()
554 struct stb6100_state *state = fe->tuner_priv; in stb6100_release()
556 fe->tuner_priv = NULL; in stb6100_release()