Lines Matching +full:onoff +full:- +full:gpios

1 // SPDX-License-Identifier: GPL-2.0-or-later
45 struct i2c_client *client = state->client; in af9013_set_gpio()
50 dev_dbg(&client->dev, "gpio %u, gpioval %02x\n", gpio, gpioval); in af9013_set_gpio()
68 ret = -EINVAL; in af9013_set_gpio()
84 ret = regmap_update_bits(state->regmap, addr, 0x0f << pos, in af9013_set_gpio()
91 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_set_gpio()
98 fesettings->min_delay_ms = 800; in af9013_get_tune_settings()
99 fesettings->step_size = 0; in af9013_get_tune_settings()
100 fesettings->max_drift = 0; in af9013_get_tune_settings()
107 struct af9013_state *state = fe->demodulator_priv; in af9013_set_frontend()
108 struct i2c_client *client = state->client; in af9013_set_frontend()
109 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in af9013_set_frontend()
115 dev_dbg(&client->dev, "frequency %u, bandwidth_hz %u\n", in af9013_set_frontend()
116 c->frequency, c->bandwidth_hz); in af9013_set_frontend()
119 if (fe->ops.tuner_ops.set_params) { in af9013_set_frontend()
120 ret = fe->ops.tuner_ops.set_params(fe); in af9013_set_frontend()
126 if (c->bandwidth_hz != state->bandwidth_hz) { in af9013_set_frontend()
128 if (coeff_lut[i].clock == state->clk && in af9013_set_frontend()
129 coeff_lut[i].bandwidth_hz == c->bandwidth_hz) { in af9013_set_frontend()
136 ret = -EINVAL; in af9013_set_frontend()
140 ret = regmap_bulk_write(state->regmap, 0xae00, coeff_lut[i].val, in af9013_set_frontend()
147 if (c->bandwidth_hz != state->bandwidth_hz || state->first_tune) { in af9013_set_frontend()
149 if (fe->ops.tuner_ops.get_if_frequency) { in af9013_set_frontend()
150 ret = fe->ops.tuner_ops.get_if_frequency(fe, in af9013_set_frontend()
155 if_frequency = state->if_frequency; in af9013_set_frontend()
158 dev_dbg(&client->dev, "if_frequency %u\n", if_frequency); in af9013_set_frontend()
162 while (sampling_freq > (state->clk / 2)) in af9013_set_frontend()
163 sampling_freq -= state->clk; in af9013_set_frontend()
166 sampling_freq *= -1; in af9013_set_frontend()
167 spec_inv = state->spec_inv; in af9013_set_frontend()
169 spec_inv = !state->spec_inv; in af9013_set_frontend()
173 state->clk); in af9013_set_frontend()
176 freq_cw = 0x800000 - freq_cw; in af9013_set_frontend()
182 freq_cw = 0x800000 - freq_cw; in af9013_set_frontend()
188 ret = regmap_bulk_write(state->regmap, 0xd140, buf, 3); in af9013_set_frontend()
192 ret = regmap_bulk_write(state->regmap, 0x9be7, buf, 6); in af9013_set_frontend()
198 ret = regmap_update_bits(state->regmap, 0xd330, 0x08, 0x08); in af9013_set_frontend()
203 ret = regmap_update_bits(state->regmap, 0xd507, 0x40, 0x00); in af9013_set_frontend()
208 ret = regmap_update_bits(state->regmap, 0x9bfe, 0x01, 0x00); in af9013_set_frontend()
212 /* empty DVB-T channel function */ in af9013_set_frontend()
213 ret = regmap_update_bits(state->regmap, 0x9bc2, 0x01, 0x00); in af9013_set_frontend()
221 switch (c->transmission_mode) { in af9013_set_frontend()
231 dev_dbg(&client->dev, "invalid transmission_mode\n"); in af9013_set_frontend()
235 switch (c->guard_interval) { in af9013_set_frontend()
251 dev_dbg(&client->dev, "invalid guard_interval\n"); in af9013_set_frontend()
255 switch (c->hierarchy) { in af9013_set_frontend()
271 dev_dbg(&client->dev, "invalid hierarchy\n"); in af9013_set_frontend()
275 switch (c->modulation) { in af9013_set_frontend()
288 dev_dbg(&client->dev, "invalid modulation\n"); in af9013_set_frontend()
295 switch (c->code_rate_HP) { in af9013_set_frontend()
314 dev_dbg(&client->dev, "invalid code_rate_HP\n"); in af9013_set_frontend()
318 switch (c->code_rate_LP) { in af9013_set_frontend()
339 dev_dbg(&client->dev, "invalid code_rate_LP\n"); in af9013_set_frontend()
343 switch (c->bandwidth_hz) { in af9013_set_frontend()
353 dev_dbg(&client->dev, "invalid bandwidth_hz\n"); in af9013_set_frontend()
354 ret = -EINVAL; in af9013_set_frontend()
358 ret = regmap_bulk_write(state->regmap, 0xd3c0, buf, 3); in af9013_set_frontend()
364 ret = regmap_write(state->regmap, 0xaefd, 0x00); in af9013_set_frontend()
368 dev_dbg(&client->dev, "auto params\n"); in af9013_set_frontend()
371 ret = regmap_write(state->regmap, 0xaefd, 0x01); in af9013_set_frontend()
375 ret = regmap_write(state->regmap, 0xaefe, 0x00); in af9013_set_frontend()
379 dev_dbg(&client->dev, "manual params\n"); in af9013_set_frontend()
383 ret = regmap_write(state->regmap, 0xffff, 0x00); in af9013_set_frontend()
387 state->bandwidth_hz = c->bandwidth_hz; in af9013_set_frontend()
388 state->set_frontend_jiffies = jiffies; in af9013_set_frontend()
389 state->first_tune = false; in af9013_set_frontend()
393 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_set_frontend()
400 struct af9013_state *state = fe->demodulator_priv; in af9013_get_frontend()
401 struct i2c_client *client = state->client; in af9013_get_frontend()
405 dev_dbg(&client->dev, "\n"); in af9013_get_frontend()
407 ret = regmap_bulk_read(state->regmap, 0xd3c0, buf, 3); in af9013_get_frontend()
413 c->modulation = QPSK; in af9013_get_frontend()
416 c->modulation = QAM_16; in af9013_get_frontend()
419 c->modulation = QAM_64; in af9013_get_frontend()
425 c->transmission_mode = TRANSMISSION_MODE_2K; in af9013_get_frontend()
428 c->transmission_mode = TRANSMISSION_MODE_8K; in af9013_get_frontend()
433 c->guard_interval = GUARD_INTERVAL_1_32; in af9013_get_frontend()
436 c->guard_interval = GUARD_INTERVAL_1_16; in af9013_get_frontend()
439 c->guard_interval = GUARD_INTERVAL_1_8; in af9013_get_frontend()
442 c->guard_interval = GUARD_INTERVAL_1_4; in af9013_get_frontend()
448 c->hierarchy = HIERARCHY_NONE; in af9013_get_frontend()
451 c->hierarchy = HIERARCHY_1; in af9013_get_frontend()
454 c->hierarchy = HIERARCHY_2; in af9013_get_frontend()
457 c->hierarchy = HIERARCHY_4; in af9013_get_frontend()
463 c->code_rate_HP = FEC_1_2; in af9013_get_frontend()
466 c->code_rate_HP = FEC_2_3; in af9013_get_frontend()
469 c->code_rate_HP = FEC_3_4; in af9013_get_frontend()
472 c->code_rate_HP = FEC_5_6; in af9013_get_frontend()
475 c->code_rate_HP = FEC_7_8; in af9013_get_frontend()
481 c->code_rate_LP = FEC_1_2; in af9013_get_frontend()
484 c->code_rate_LP = FEC_2_3; in af9013_get_frontend()
487 c->code_rate_LP = FEC_3_4; in af9013_get_frontend()
490 c->code_rate_LP = FEC_5_6; in af9013_get_frontend()
493 c->code_rate_LP = FEC_7_8; in af9013_get_frontend()
499 c->bandwidth_hz = 6000000; in af9013_get_frontend()
502 c->bandwidth_hz = 7000000; in af9013_get_frontend()
505 c->bandwidth_hz = 8000000; in af9013_get_frontend()
511 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_get_frontend()
517 struct af9013_state *state = fe->demodulator_priv; in af9013_read_status()
518 struct i2c_client *client = state->client; in af9013_read_status()
519 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in af9013_read_status()
524 dev_dbg(&client->dev, "\n"); in af9013_read_status()
530 if (time_is_after_jiffies(state->read_status_jiffies + msecs_to_jiffies(2000)) && in af9013_read_status()
531 time_is_before_jiffies(state->set_frontend_jiffies + msecs_to_jiffies(4000))) { in af9013_read_status()
532 *status = state->fe_status; in af9013_read_status()
535 ret = regmap_read(state->regmap, 0xd507, &utmp); in af9013_read_status()
544 ret = regmap_read(state->regmap, 0xd330, &utmp); in af9013_read_status()
555 dev_dbg(&client->dev, "fe_status %02x\n", utmp1); in af9013_read_status()
557 state->read_status_jiffies = jiffies; in af9013_read_status()
559 state->fe_status = utmp1; in af9013_read_status()
564 switch (state->strength_en) { in af9013_read_status()
567 ret = regmap_read(state->regmap, 0x9bee, &utmp); in af9013_read_status()
573 ret = regmap_read(state->regmap, 0x9bbd, &utmp1); in af9013_read_status()
576 ret = regmap_read(state->regmap, 0x9bd0, &utmp2); in af9013_read_status()
579 ret = regmap_read(state->regmap, 0x9be2, &utmp3); in af9013_read_status()
582 ret = regmap_read(state->regmap, 0x9be4, &utmp4); in af9013_read_status()
586 state->rf_agc_50 = utmp1; in af9013_read_status()
587 state->rf_agc_80 = utmp2; in af9013_read_status()
588 state->if_agc_50 = utmp3; in af9013_read_status()
589 state->if_agc_80 = utmp4; in af9013_read_status()
590 dev_dbg(&client->dev, in af9013_read_status()
594 state->strength_en = 1; in af9013_read_status()
597 state->strength_en = 2; in af9013_read_status()
602 if (time_is_after_jiffies(state->strength_jiffies + msecs_to_jiffies(2000))) in af9013_read_status()
606 ret = regmap_bulk_read(state->regmap, 0xd07c, buf, 2); in af9013_read_status()
611 * Construct line equation from tuner dependent -80/-50 dBm agc in af9013_read_status()
615 #define agc_gain_50dbm (state->rf_agc_50 + state->if_agc_50) in af9013_read_status()
616 #define agc_gain_80dbm (state->rf_agc_80 + state->if_agc_80) in af9013_read_status()
617 stmp1 = 30000 * (agc_gain - agc_gain_80dbm) / in af9013_read_status()
618 (agc_gain_50dbm - agc_gain_80dbm) - 80000; in af9013_read_status()
620 dev_dbg(&client->dev, in af9013_read_status()
624 state->strength_jiffies = jiffies; in af9013_read_status()
625 /* Convert [-90, -30] dBm to [0x0000, 0xffff] for dvbv3 */ in af9013_read_status()
627 state->dvbv3_strength = div_u64((u64)utmp1 * 0xffff, 60000); in af9013_read_status()
629 c->strength.stat[0].scale = FE_SCALE_DECIBEL; in af9013_read_status()
630 c->strength.stat[0].svalue = stmp1; in af9013_read_status()
633 c->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in af9013_read_status()
638 switch (state->fe_status & FE_HAS_VITERBI) { in af9013_read_status()
640 if (time_is_after_jiffies(state->cnr_jiffies + msecs_to_jiffies(2000))) in af9013_read_status()
644 ret = regmap_read(state->regmap, 0xd2e1, &utmp); in af9013_read_status()
649 dev_dbg(&client->dev, "cnr not ready\n"); in af9013_read_status()
654 ret = regmap_bulk_read(state->regmap, 0xd2e3, buf, 3); in af9013_read_status()
661 ret = regmap_read(state->regmap, 0xd3c1, &utmp); in af9013_read_status()
669 * CNR[dB] 13 * -log10((1690000 - value) / value) + 2.6 in af9013_read_status()
674 - intlog10(1690000 - utmp1) in af9013_read_status()
679 * QAM-16 in af9013_read_status()
680 * CNR[dB] 6 * log10((value - 370000) / (828000 - value)) + 15.7 in af9013_read_status()
684 utmp1 = ((u64)(intlog10(utmp1 - 370000) in af9013_read_status()
685 - intlog10(828000 - utmp1) in af9013_read_status()
690 * QAM-64 in af9013_read_status()
691 * CNR[dB] 8 * log10((value - 193000) / (425000 - value)) + 23.8 in af9013_read_status()
695 utmp1 = ((u64)(intlog10(utmp1 - 193000) in af9013_read_status()
696 - intlog10(425000 - utmp1) in af9013_read_status()
700 dev_dbg(&client->dev, "invalid modulation %u\n", in af9013_read_status()
706 dev_dbg(&client->dev, "cnr %u\n", utmp1); in af9013_read_status()
708 state->cnr_jiffies = jiffies; in af9013_read_status()
709 state->dvbv3_snr = utmp1 / 100; in af9013_read_status()
711 c->cnr.stat[0].scale = FE_SCALE_DECIBEL; in af9013_read_status()
712 c->cnr.stat[0].svalue = utmp1; in af9013_read_status()
715 c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in af9013_read_status()
720 switch (state->fe_status & FE_HAS_SYNC) { in af9013_read_status()
722 if (time_is_after_jiffies(state->ber_ucb_jiffies + msecs_to_jiffies(2000))) in af9013_read_status()
726 ret = regmap_read(state->regmap, 0xd391, &utmp); in af9013_read_status()
731 dev_dbg(&client->dev, "ber not ready\n"); in af9013_read_status()
736 ret = regmap_bulk_read(state->regmap, 0xd385, buf, 7); in af9013_read_status()
749 ret = regmap_bulk_write(state->regmap, 0xd385, buf, 2); in af9013_read_status()
755 ret = regmap_update_bits(state->regmap, 0xd391, 0x20, 0x20); in af9013_read_status()
759 dev_dbg(&client->dev, "post_bit_error %u, post_bit_count %u\n", in af9013_read_status()
761 dev_dbg(&client->dev, "block_error %u, block_count %u\n", in af9013_read_status()
764 state->ber_ucb_jiffies = jiffies; in af9013_read_status()
765 state->dvbv3_ber = utmp1; in af9013_read_status()
766 state->dvbv3_ucblocks += utmp3; in af9013_read_status()
768 c->post_bit_error.stat[0].scale = FE_SCALE_COUNTER; in af9013_read_status()
769 c->post_bit_error.stat[0].uvalue += utmp1; in af9013_read_status()
770 c->post_bit_count.stat[0].scale = FE_SCALE_COUNTER; in af9013_read_status()
771 c->post_bit_count.stat[0].uvalue += utmp2; in af9013_read_status()
773 c->block_error.stat[0].scale = FE_SCALE_COUNTER; in af9013_read_status()
774 c->block_error.stat[0].uvalue += utmp3; in af9013_read_status()
775 c->block_count.stat[0].scale = FE_SCALE_COUNTER; in af9013_read_status()
776 c->block_count.stat[0].uvalue += utmp4; in af9013_read_status()
779 c->post_bit_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in af9013_read_status()
780 c->post_bit_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in af9013_read_status()
782 c->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in af9013_read_status()
783 c->block_count.stat[0].scale = FE_SCALE_NOT_AVAILABLE; in af9013_read_status()
789 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_read_status()
795 struct af9013_state *state = fe->demodulator_priv; in af9013_read_snr()
797 *snr = state->dvbv3_snr; in af9013_read_snr()
804 struct af9013_state *state = fe->demodulator_priv; in af9013_read_signal_strength()
806 *strength = state->dvbv3_strength; in af9013_read_signal_strength()
813 struct af9013_state *state = fe->demodulator_priv; in af9013_read_ber()
815 *ber = state->dvbv3_ber; in af9013_read_ber()
822 struct af9013_state *state = fe->demodulator_priv; in af9013_read_ucblocks()
824 *ucblocks = state->dvbv3_ucblocks; in af9013_read_ucblocks()
831 struct af9013_state *state = fe->demodulator_priv; in af9013_init()
832 struct i2c_client *client = state->client; in af9013_init()
838 dev_dbg(&client->dev, "\n"); in af9013_init()
841 ret = regmap_update_bits(state->regmap, 0xd73a, 0x08, 0x00); in af9013_init()
846 ret = regmap_update_bits(state->regmap, 0xd417, 0x02, 0x00); in af9013_init()
851 ret = regmap_update_bits(state->regmap, 0xd417, 0x10, 0x00); in af9013_init()
856 ret = regmap_bulk_write(state->regmap, 0x9bf2, state->api_version, 4); in af9013_init()
861 switch (state->clk) { in af9013_init()
875 ret = -EINVAL; in af9013_init()
879 ret = regmap_update_bits(state->regmap, 0x9bd2, 0x0f, utmp); in af9013_init()
883 utmp = div_u64((u64)state->clk * 0x80000, 1000000); in af9013_init()
887 ret = regmap_bulk_write(state->regmap, 0xd180, buf, 3); in af9013_init()
892 dev_dbg(&client->dev, "load demod core settings\n"); in af9013_init()
896 ret = regmap_update_bits(state->regmap, tab[i].reg, tab[i].mask, in af9013_init()
903 dev_dbg(&client->dev, "load tuner specific settings\n"); in af9013_init()
904 switch (state->tuner) { in af9013_init()
949 ret = regmap_update_bits(state->regmap, tab[i].reg, tab[i].mask, in af9013_init()
956 if (state->ts_output_pin == 7) in af9013_init()
957 utmp = 1 << 3 | state->ts_mode << 1; in af9013_init()
959 utmp = 0 << 3 | state->ts_mode << 1; in af9013_init()
960 ret = regmap_update_bits(state->regmap, 0xd500, 0x0e, utmp); in af9013_init()
965 ret = regmap_update_bits(state->regmap, 0xd730, 0x01, 0x01); in af9013_init()
969 state->first_tune = true; in af9013_init()
973 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_init()
979 struct af9013_state *state = fe->demodulator_priv; in af9013_sleep()
980 struct i2c_client *client = state->client; in af9013_sleep()
984 dev_dbg(&client->dev, "\n"); in af9013_sleep()
987 ret = regmap_update_bits(state->regmap, 0xd730, 0x01, 0x00); in af9013_sleep()
992 ret = regmap_update_bits(state->regmap, 0xd417, 0x10, 0x10); in af9013_sleep()
997 ret = regmap_write(state->regmap, 0xaeff, 0x01); in af9013_sleep()
1002 ret = regmap_read_poll_timeout(state->regmap, 0xd417, utmp, in af9013_sleep()
1008 ret = -ETIMEDOUT; in af9013_sleep()
1013 ret = regmap_update_bits(state->regmap, 0xd73a, 0x08, 0x08); in af9013_sleep()
1019 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_sleep()
1027 struct i2c_client *client = state->client; in af9013_download_firmware()
1035 dev_dbg(&client->dev, "\n"); in af9013_download_firmware()
1038 ret = regmap_read(state->regmap, 0x98be, &utmp); in af9013_download_firmware()
1042 dev_dbg(&client->dev, "firmware status %02x\n", utmp); in af9013_download_firmware()
1047 dev_info(&client->dev, "found a '%s' in cold state, will try to load a firmware\n", in af9013_download_firmware()
1051 ret = request_firmware(&firmware, name, &client->dev); in af9013_download_firmware()
1053 dev_info(&client->dev, "firmware file '%s' not found %d\n", in af9013_download_firmware()
1058 dev_info(&client->dev, "downloading firmware from file '%s'\n", in af9013_download_firmware()
1062 for (i = 0; i < firmware->size; i++) in af9013_download_firmware()
1063 checksum += firmware->data[i]; in af9013_download_firmware()
1067 buf[2] = (firmware->size >> 8) & 0xff; in af9013_download_firmware()
1068 buf[3] = (firmware->size >> 0) & 0xff; in af9013_download_firmware()
1069 ret = regmap_bulk_write(state->regmap, 0x50fc, buf, 4); in af9013_download_firmware()
1075 for (rem = firmware->size; rem > 0; rem -= LEN_MAX) { in af9013_download_firmware()
1077 ret = regmap_bulk_write(state->regmap, in af9013_download_firmware()
1078 0x5100 + firmware->size - rem, in af9013_download_firmware()
1079 &firmware->data[firmware->size - rem], in af9013_download_firmware()
1082 dev_err(&client->dev, "firmware download failed %d\n", in af9013_download_firmware()
1091 ret = regmap_write(state->regmap, 0xe205, 0x01); in af9013_download_firmware()
1096 ret = regmap_read_poll_timeout(state->regmap, 0x98be, utmp, in af9013_download_firmware()
1102 dev_dbg(&client->dev, "firmware status %02x\n", utmp); in af9013_download_firmware()
1105 ret = -ENODEV; in af9013_download_firmware()
1106 dev_err(&client->dev, "firmware did not run\n"); in af9013_download_firmware()
1109 ret = -ENODEV; in af9013_download_firmware()
1110 dev_err(&client->dev, "firmware boot timeout\n"); in af9013_download_firmware()
1114 dev_info(&client->dev, "found a '%s' in warm state\n", in af9013_download_firmware()
1121 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_download_firmware()
1163 static int af9013_pid_filter_ctrl(struct dvb_frontend *fe, int onoff) in af9013_pid_filter_ctrl() argument
1165 struct af9013_state *state = fe->demodulator_priv; in af9013_pid_filter_ctrl()
1166 struct i2c_client *client = state->client; in af9013_pid_filter_ctrl()
1169 dev_dbg(&client->dev, "onoff %d\n", onoff); in af9013_pid_filter_ctrl()
1171 ret = regmap_update_bits(state->regmap, 0xd503, 0x01, onoff); in af9013_pid_filter_ctrl()
1177 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_pid_filter_ctrl()
1182 int onoff) in af9013_pid_filter() argument
1184 struct af9013_state *state = fe->demodulator_priv; in af9013_pid_filter()
1185 struct i2c_client *client = state->client; in af9013_pid_filter()
1189 dev_dbg(&client->dev, "index %d, pid %04x, onoff %d\n", in af9013_pid_filter()
1190 index, pid, onoff); in af9013_pid_filter()
1200 ret = regmap_bulk_write(state->regmap, 0xd505, buf, 2); in af9013_pid_filter()
1203 ret = regmap_write(state->regmap, 0xd504, onoff << 5 | index << 0); in af9013_pid_filter()
1209 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_pid_filter()
1217 dev_dbg(&client->dev, "\n"); in af9013_get_dvb_frontend()
1219 return &state->fe; in af9013_get_dvb_frontend()
1226 dev_dbg(&client->dev, "\n"); in af9013_get_i2c_adapter()
1228 return state->muxc->adapter[0]; in af9013_get_i2c_adapter()
1239 struct i2c_client *client = state->client; in af9013_select()
1242 dev_dbg(&client->dev, "\n"); in af9013_select()
1244 if (state->ts_mode == AF9013_TS_MODE_USB) in af9013_select()
1245 ret = regmap_update_bits(state->regmap, 0x1d417, 0x08, 0x08); in af9013_select()
1247 ret = regmap_update_bits(state->regmap, 0x1d607, 0x04, 0x04); in af9013_select()
1253 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_select()
1260 struct i2c_client *client = state->client; in af9013_deselect()
1263 dev_dbg(&client->dev, "\n"); in af9013_deselect()
1265 if (state->ts_mode == AF9013_TS_MODE_USB) in af9013_deselect()
1266 ret = regmap_update_bits(state->regmap, 0x1d417, 0x08, 0x00); in af9013_deselect()
1268 ret = regmap_update_bits(state->regmap, 0x1d607, 0x04, 0x00); in af9013_deselect()
1274 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_deselect()
1286 .addr = client->addr, in af9013_wregs()
1294 ret = -EINVAL; in af9013_wregs()
1304 i2c_lock_bus(client->adapter, I2C_LOCK_SEGMENT); in af9013_wregs()
1305 ret = __i2c_transfer(client->adapter, msg, 1); in af9013_wregs()
1307 i2c_unlock_bus(client->adapter, I2C_LOCK_SEGMENT); in af9013_wregs()
1311 ret = -EREMOTEIO; in af9013_wregs()
1317 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_wregs()
1328 .addr = client->addr, in af9013_rregs()
1333 .addr = client->addr, in af9013_rregs()
1345 i2c_lock_bus(client->adapter, I2C_LOCK_SEGMENT); in af9013_rregs()
1346 ret = __i2c_transfer(client->adapter, msg, 2); in af9013_rregs()
1348 i2c_unlock_bus(client->adapter, I2C_LOCK_SEGMENT); in af9013_rregs()
1352 ret = -EREMOTEIO; in af9013_rregs()
1358 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_rregs()
1371 const unsigned int len = count - 3; in af9013_regmap_write()
1373 if (state->ts_mode == AF9013_TS_MODE_USB && (reg & 0xff00) != 0xae00) { in af9013_regmap_write()
1374 cmd = 0 << 7|0 << 6|(len - 1) << 2|1 << 1|1 << 0; in af9013_regmap_write()
1380 cmd = 1 << 7|1 << 6|(len - 1) << 2|1 << 1|1 << 0; in af9013_regmap_write()
1385 cmd = 0 << 7|0 << 6|(1 - 1) << 2|1 << 1|1 << 0; in af9013_regmap_write()
1396 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_regmap_write()
1412 if (state->ts_mode == AF9013_TS_MODE_USB && (reg & 0xff00) != 0xae00) { in af9013_regmap_read()
1413 cmd = 0 << 7|0 << 6|(len - 1) << 2|1 << 1|0 << 0; in af9013_regmap_read()
1418 cmd = 0 << 7|0 << 6|(1 - 1) << 2|1 << 1|0 << 0; in af9013_regmap_read()
1429 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_regmap_read()
1436 struct af9013_platform_data *pdata = client->dev.platform_data; in af9013_probe()
1452 ret = -ENOMEM; in af9013_probe()
1456 dev_dbg(&client->dev, "\n"); in af9013_probe()
1459 state->client = client; in af9013_probe()
1461 state->clk = pdata->clk; in af9013_probe()
1462 state->tuner = pdata->tuner; in af9013_probe()
1463 state->if_frequency = pdata->if_frequency; in af9013_probe()
1464 state->ts_mode = pdata->ts_mode; in af9013_probe()
1465 state->ts_output_pin = pdata->ts_output_pin; in af9013_probe()
1466 state->spec_inv = pdata->spec_inv; in af9013_probe()
1467 memcpy(&state->api_version, pdata->api_version, sizeof(state->api_version)); in af9013_probe()
1468 memcpy(&state->gpio, pdata->gpio, sizeof(state->gpio)); in af9013_probe()
1469 state->regmap = regmap_init(&client->dev, &regmap_bus, client, in af9013_probe()
1471 if (IS_ERR(state->regmap)) { in af9013_probe()
1472 ret = PTR_ERR(state->regmap); in af9013_probe()
1476 state->muxc = i2c_mux_alloc(client->adapter, &client->dev, 1, 0, 0, in af9013_probe()
1478 if (!state->muxc) { in af9013_probe()
1479 ret = -ENOMEM; in af9013_probe()
1482 state->muxc->priv = state; in af9013_probe()
1483 ret = i2c_mux_add_adapter(state->muxc, 0, 0); in af9013_probe()
1488 if (state->ts_mode != AF9013_TS_MODE_USB) { in af9013_probe()
1495 ret = regmap_bulk_read(state->regmap, 0x5103, firmware_version, in af9013_probe()
1500 /* Set GPIOs */ in af9013_probe()
1501 for (i = 0; i < sizeof(state->gpio); i++) { in af9013_probe()
1502 ret = af9013_set_gpio(state, i, state->gpio[i]); in af9013_probe()
1508 memcpy(&state->fe.ops, &af9013_ops, sizeof(state->fe.ops)); in af9013_probe()
1509 state->fe.demodulator_priv = state; in af9013_probe()
1512 pdata->get_dvb_frontend = af9013_get_dvb_frontend; in af9013_probe()
1513 pdata->get_i2c_adapter = af9013_get_i2c_adapter; in af9013_probe()
1514 pdata->pid_filter = af9013_pid_filter; in af9013_probe()
1515 pdata->pid_filter_ctrl = af9013_pid_filter_ctrl; in af9013_probe()
1518 c = &state->fe.dtv_property_cache; in af9013_probe()
1519 c->strength.len = 1; in af9013_probe()
1520 c->cnr.len = 1; in af9013_probe()
1521 c->post_bit_error.len = 1; in af9013_probe()
1522 c->post_bit_count.len = 1; in af9013_probe()
1523 c->block_error.len = 1; in af9013_probe()
1524 c->block_count.len = 1; in af9013_probe()
1526 dev_info(&client->dev, "Afatech AF9013 successfully attached\n"); in af9013_probe()
1527 dev_info(&client->dev, "firmware version: %d.%d.%d.%d\n", in af9013_probe()
1532 i2c_mux_del_adapters(state->muxc); in af9013_probe()
1534 regmap_exit(state->regmap); in af9013_probe()
1538 dev_dbg(&client->dev, "failed %d\n", ret); in af9013_probe()
1546 dev_dbg(&client->dev, "\n"); in af9013_remove()
1548 i2c_mux_del_adapters(state->muxc); in af9013_remove()
1550 regmap_exit(state->regmap); in af9013_remove()
1574 MODULE_DESCRIPTION("Afatech AF9013 DVB-T demodulator driver");