Lines Matching refs:priv

22 static int m88ds3103_wr_regs(struct m88ds3103_priv *priv,  in m88ds3103_wr_regs()  argument
31 .addr = priv->cfg->i2c_addr, in m88ds3103_wr_regs()
44 mutex_lock(&priv->i2c_mutex); in m88ds3103_wr_regs()
45 ret = i2c_transfer(priv->i2c, msg, 1); in m88ds3103_wr_regs()
46 mutex_unlock(&priv->i2c_mutex); in m88ds3103_wr_regs()
50 dev_warn(&priv->i2c->dev, in m88ds3103_wr_regs()
60 static int m88ds3103_rd_regs(struct m88ds3103_priv *priv, in m88ds3103_rd_regs() argument
69 .addr = priv->cfg->i2c_addr, in m88ds3103_rd_regs()
74 .addr = priv->cfg->i2c_addr, in m88ds3103_rd_regs()
84 mutex_lock(&priv->i2c_mutex); in m88ds3103_rd_regs()
85 ret = i2c_transfer(priv->i2c, msg, 2); in m88ds3103_rd_regs()
86 mutex_unlock(&priv->i2c_mutex); in m88ds3103_rd_regs()
91 dev_warn(&priv->i2c->dev, in m88ds3103_rd_regs()
101 static int m88ds3103_wr_reg(struct m88ds3103_priv *priv, u8 reg, u8 val) in m88ds3103_wr_reg() argument
103 return m88ds3103_wr_regs(priv, reg, &val, 1); in m88ds3103_wr_reg()
107 static int m88ds3103_rd_reg(struct m88ds3103_priv *priv, u8 reg, u8 *val) in m88ds3103_rd_reg() argument
109 return m88ds3103_rd_regs(priv, reg, val, 1); in m88ds3103_rd_reg()
113 static int m88ds3103_wr_reg_mask(struct m88ds3103_priv *priv, in m88ds3103_wr_reg_mask() argument
121 ret = m88ds3103_rd_regs(priv, reg, &u8tmp, 1); in m88ds3103_wr_reg_mask()
130 return m88ds3103_wr_regs(priv, reg, &val, 1); in m88ds3103_wr_reg_mask()
134 static int m88ds3103_rd_reg_mask(struct m88ds3103_priv *priv, in m88ds3103_rd_reg_mask() argument
140 ret = m88ds3103_rd_regs(priv, reg, &u8tmp, 1); in m88ds3103_rd_reg_mask()
157 static int m88ds3103_wr_reg_val_tab(struct m88ds3103_priv *priv, in m88ds3103_wr_reg_val_tab() argument
163 dev_dbg(&priv->i2c->dev, "%s: tab_len=%d\n", __func__, tab_len); in m88ds3103_wr_reg_val_tab()
174 !((j + 1) % (priv->cfg->i2c_wr_max - 1))) { in m88ds3103_wr_reg_val_tab()
175 ret = m88ds3103_wr_regs(priv, tab[i].reg - j, buf, j + 1); in m88ds3103_wr_reg_val_tab()
185 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_wr_reg_val_tab()
191 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_read_status() local
198 if (!priv->warm) { in m88ds3103_read_status()
205 ret = m88ds3103_rd_reg_mask(priv, 0xd1, &u8tmp, 0x07); in m88ds3103_read_status()
215 ret = m88ds3103_rd_reg_mask(priv, 0x0d, &u8tmp, 0x8f); in m88ds3103_read_status()
225 dev_dbg(&priv->i2c->dev, "%s: invalid delivery_system\n", in m88ds3103_read_status()
231 priv->fe_status = *status; in m88ds3103_read_status()
233 dev_dbg(&priv->i2c->dev, "%s: lock=%02x status=%02x\n", in m88ds3103_read_status()
238 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_read_status()
244 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_set_frontend() local
254 dev_dbg(&priv->i2c->dev, in m88ds3103_set_frontend()
260 if (!priv->warm) { in m88ds3103_set_frontend()
266 ret = m88ds3103_wr_reg(priv, 0x07, 0x80); in m88ds3103_set_frontend()
270 ret = m88ds3103_wr_reg(priv, 0x07, 0x00); in m88ds3103_set_frontend()
275 if (priv->chip_id == M88RS6000_CHIP_ID) { in m88ds3103_set_frontend()
276 ret = m88ds3103_wr_reg(priv, 0x06, 0xe0); in m88ds3103_set_frontend()
302 if (priv->chip_id == M88RS6000_CHIP_ID) { in m88ds3103_set_frontend()
304 priv->mclk_khz = 110250; in m88ds3103_set_frontend()
306 priv->mclk_khz = 96000; in m88ds3103_set_frontend()
314 ret = m88ds3103_wr_reg(priv, 0x06, 0x00); in m88ds3103_set_frontend()
320 priv->mclk_khz = 96000; in m88ds3103_set_frontend()
322 switch (priv->cfg->ts_mode) { in m88ds3103_set_frontend()
325 target_mclk = priv->cfg->ts_clk; in m88ds3103_set_frontend()
341 dev_dbg(&priv->i2c->dev, "%s: invalid ts_mode\n", in m88ds3103_set_frontend()
361 ret = m88ds3103_wr_reg_mask(priv, 0x22, u8tmp1 << 6, 0xc0); in m88ds3103_set_frontend()
364 ret = m88ds3103_wr_reg_mask(priv, 0x24, u8tmp2 << 6, 0xc0); in m88ds3103_set_frontend()
369 ret = m88ds3103_wr_reg(priv, 0xb2, 0x01); in m88ds3103_set_frontend()
373 ret = m88ds3103_wr_reg(priv, 0x00, 0x01); in m88ds3103_set_frontend()
379 if (priv->chip_id == M88RS6000_CHIP_ID) { in m88ds3103_set_frontend()
388 if (priv->chip_id == M88RS6000_CHIP_ID) { in m88ds3103_set_frontend()
397 dev_dbg(&priv->i2c->dev, "%s: invalid delivery_system\n", in m88ds3103_set_frontend()
404 if (c->delivery_system != priv->delivery_system) { in m88ds3103_set_frontend()
405 ret = m88ds3103_wr_reg_val_tab(priv, init, len); in m88ds3103_set_frontend()
410 if (priv->chip_id == M88RS6000_CHIP_ID) { in m88ds3103_set_frontend()
413 ret = m88ds3103_wr_reg(priv, 0xc0, 0x04); in m88ds3103_set_frontend()
419 ret = m88ds3103_wr_regs(priv, 0x8a, buf, 3); in m88ds3103_set_frontend()
423 ret = m88ds3103_wr_reg_mask(priv, 0x9d, 0x08, 0x08); in m88ds3103_set_frontend()
426 ret = m88ds3103_wr_reg(priv, 0xf1, 0x01); in m88ds3103_set_frontend()
429 ret = m88ds3103_wr_reg_mask(priv, 0x30, 0x80, 0x80); in m88ds3103_set_frontend()
434 switch (priv->cfg->ts_mode) { in m88ds3103_set_frontend()
450 dev_dbg(&priv->i2c->dev, "%s: invalid ts_mode\n", __func__); in m88ds3103_set_frontend()
455 if (priv->cfg->ts_clk_pol) in m88ds3103_set_frontend()
459 ret = m88ds3103_wr_reg(priv, 0xfd, u8tmp); in m88ds3103_set_frontend()
463 switch (priv->cfg->ts_mode) { in m88ds3103_set_frontend()
466 ret = m88ds3103_wr_reg_mask(priv, 0x29, u8tmp1, 0x20); in m88ds3103_set_frontend()
473 if (priv->cfg->ts_clk) { in m88ds3103_set_frontend()
474 divide_ratio = DIV_ROUND_UP(target_mclk, priv->cfg->ts_clk); in m88ds3103_set_frontend()
480 dev_dbg(&priv->i2c->dev, in m88ds3103_set_frontend()
482 __func__, target_mclk, priv->cfg->ts_clk, divide_ratio); in m88ds3103_set_frontend()
491 ret = m88ds3103_rd_reg(priv, 0xfe, &u8tmp); in m88ds3103_set_frontend()
496 ret = m88ds3103_wr_reg(priv, 0xfe, u8tmp); in m88ds3103_set_frontend()
501 ret = m88ds3103_wr_reg(priv, 0xea, u8tmp); in m88ds3103_set_frontend()
512 ret = m88ds3103_wr_reg(priv, 0xc3, 0x08); in m88ds3103_set_frontend()
516 ret = m88ds3103_wr_reg(priv, 0xc8, u8tmp); in m88ds3103_set_frontend()
520 ret = m88ds3103_wr_reg(priv, 0xc4, 0x08); in m88ds3103_set_frontend()
524 ret = m88ds3103_wr_reg(priv, 0xc7, 0x00); in m88ds3103_set_frontend()
528 u16tmp = DIV_ROUND_CLOSEST((c->symbol_rate / 1000) << 15, priv->mclk_khz / 2); in m88ds3103_set_frontend()
531 ret = m88ds3103_wr_regs(priv, 0x61, buf, 2); in m88ds3103_set_frontend()
535 ret = m88ds3103_wr_reg_mask(priv, 0x4d, priv->cfg->spec_inv << 1, 0x02); in m88ds3103_set_frontend()
539 ret = m88ds3103_wr_reg_mask(priv, 0x30, priv->cfg->agc_inv << 4, 0x10); in m88ds3103_set_frontend()
543 ret = m88ds3103_wr_reg(priv, 0x33, priv->cfg->agc); in m88ds3103_set_frontend()
547 dev_dbg(&priv->i2c->dev, "%s: carrier offset=%d\n", __func__, in m88ds3103_set_frontend()
551 s32tmp = DIV_ROUND_CLOSEST(s32tmp, priv->mclk_khz); in m88ds3103_set_frontend()
557 ret = m88ds3103_wr_regs(priv, 0x5e, buf, 2); in m88ds3103_set_frontend()
561 ret = m88ds3103_wr_reg(priv, 0x00, 0x00); in m88ds3103_set_frontend()
565 ret = m88ds3103_wr_reg(priv, 0xb2, 0x00); in m88ds3103_set_frontend()
569 priv->delivery_system = c->delivery_system; in m88ds3103_set_frontend()
573 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_set_frontend()
579 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_init() local
585 dev_dbg(&priv->i2c->dev, "%s:\n", __func__); in m88ds3103_init()
588 priv->warm = false; in m88ds3103_init()
591 ret = m88ds3103_wr_reg_mask(priv, 0x08, 0x01, 0x01); in m88ds3103_init()
595 ret = m88ds3103_wr_reg_mask(priv, 0x04, 0x00, 0x01); in m88ds3103_init()
599 ret = m88ds3103_wr_reg_mask(priv, 0x23, 0x00, 0x10); in m88ds3103_init()
604 ret = m88ds3103_rd_reg(priv, 0xb9, &u8tmp); in m88ds3103_init()
608 dev_dbg(&priv->i2c->dev, "%s: firmware=%02x\n", __func__, u8tmp); in m88ds3103_init()
614 ret = m88ds3103_wr_reg(priv, 0x07, 0xe0); in m88ds3103_init()
618 ret = m88ds3103_wr_reg(priv, 0x07, 0x00); in m88ds3103_init()
623 dev_info(&priv->i2c->dev, "%s: found a '%s' in cold state\n", in m88ds3103_init()
626 if (priv->chip_id == M88RS6000_CHIP_ID) in m88ds3103_init()
631 ret = request_firmware(&fw, fw_file, priv->i2c->dev.parent); in m88ds3103_init()
633 dev_err(&priv->i2c->dev, "%s: firmware file '%s' not found\n", in m88ds3103_init()
638 dev_info(&priv->i2c->dev, "%s: downloading firmware from file '%s'\n", in m88ds3103_init()
641 ret = m88ds3103_wr_reg(priv, 0xb2, 0x01); in m88ds3103_init()
646 remaining -= (priv->cfg->i2c_wr_max - 1)) { in m88ds3103_init()
648 if (len > (priv->cfg->i2c_wr_max - 1)) in m88ds3103_init()
649 len = (priv->cfg->i2c_wr_max - 1); in m88ds3103_init()
651 ret = m88ds3103_wr_regs(priv, 0xb0, in m88ds3103_init()
654 dev_err(&priv->i2c->dev, in m88ds3103_init()
661 ret = m88ds3103_wr_reg(priv, 0xb2, 0x00); in m88ds3103_init()
668 ret = m88ds3103_rd_reg(priv, 0xb9, &u8tmp); in m88ds3103_init()
673 dev_info(&priv->i2c->dev, "%s: firmware did not run\n", in m88ds3103_init()
679 dev_info(&priv->i2c->dev, "%s: found a '%s' in warm state\n", in m88ds3103_init()
681 dev_info(&priv->i2c->dev, "%s: firmware version %X.%X\n", in m88ds3103_init()
686 priv->warm = true; in m88ds3103_init()
693 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_init()
699 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_sleep() local
703 dev_dbg(&priv->i2c->dev, "%s:\n", __func__); in m88ds3103_sleep()
705 priv->delivery_system = SYS_UNDEFINED; in m88ds3103_sleep()
708 if (priv->chip_id == M88RS6000_CHIP_ID) in m88ds3103_sleep()
712 ret = m88ds3103_wr_reg_mask(priv, u8tmp, 0x00, 0x01); in m88ds3103_sleep()
717 ret = m88ds3103_wr_reg_mask(priv, 0x08, 0x00, 0x01); in m88ds3103_sleep()
721 ret = m88ds3103_wr_reg_mask(priv, 0x04, 0x01, 0x01); in m88ds3103_sleep()
725 ret = m88ds3103_wr_reg_mask(priv, 0x23, 0x10, 0x10); in m88ds3103_sleep()
731 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_sleep()
737 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_get_frontend() local
742 dev_dbg(&priv->i2c->dev, "%s:\n", __func__); in m88ds3103_get_frontend()
744 if (!priv->warm || !(priv->fe_status & FE_HAS_LOCK)) { in m88ds3103_get_frontend()
751 ret = m88ds3103_rd_reg(priv, 0xe0, &buf[0]); in m88ds3103_get_frontend()
755 ret = m88ds3103_rd_reg(priv, 0xe6, &buf[1]); in m88ds3103_get_frontend()
785 dev_dbg(&priv->i2c->dev, "%s: invalid fec_inner\n", in m88ds3103_get_frontend()
793 ret = m88ds3103_rd_reg(priv, 0x7e, &buf[0]); in m88ds3103_get_frontend()
797 ret = m88ds3103_rd_reg(priv, 0x89, &buf[1]); in m88ds3103_get_frontend()
801 ret = m88ds3103_rd_reg(priv, 0xf2, &buf[2]); in m88ds3103_get_frontend()
834 dev_dbg(&priv->i2c->dev, "%s: invalid fec_inner\n", in m88ds3103_get_frontend()
861 dev_dbg(&priv->i2c->dev, "%s: invalid modulation\n", in m88ds3103_get_frontend()
885 dev_dbg(&priv->i2c->dev, "%s: invalid rolloff\n", in m88ds3103_get_frontend()
890 dev_dbg(&priv->i2c->dev, "%s: invalid delivery_system\n", in m88ds3103_get_frontend()
896 ret = m88ds3103_rd_regs(priv, 0x6d, buf, 2); in m88ds3103_get_frontend()
901 priv->mclk_khz * 1000 / 0x10000; in m88ds3103_get_frontend()
905 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_get_frontend()
911 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_read_snr() local
918 dev_dbg(&priv->i2c->dev, "%s:\n", __func__); in m88ds3103_read_snr()
929 ret = m88ds3103_rd_reg(priv, 0xff, &buf[0]); in m88ds3103_read_snr()
949 ret = m88ds3103_rd_regs(priv, 0x8c, buf, 3); in m88ds3103_read_snr()
975 dev_dbg(&priv->i2c->dev, "%s: invalid delivery_system\n", in m88ds3103_read_snr()
983 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_read_snr()
989 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_read_ber() local
995 dev_dbg(&priv->i2c->dev, "%s:\n", __func__); in m88ds3103_read_ber()
999 ret = m88ds3103_wr_reg(priv, 0xf9, 0x04); in m88ds3103_read_ber()
1003 ret = m88ds3103_rd_reg(priv, 0xf8, &u8tmp); in m88ds3103_read_ber()
1010 ret = m88ds3103_rd_regs(priv, 0xf6, buf, 2); in m88ds3103_read_ber()
1014 priv->ber = (buf[1] << 8) | (buf[0] << 0); in m88ds3103_read_ber()
1017 ret = m88ds3103_wr_reg(priv, 0xf8, u8tmp); in m88ds3103_read_ber()
1023 ret = m88ds3103_rd_regs(priv, 0xd5, buf, 3); in m88ds3103_read_ber()
1030 ret = m88ds3103_rd_regs(priv, 0xf7, buf, 2); in m88ds3103_read_ber()
1034 priv->ber = (buf[1] << 8) | (buf[0] << 0); in m88ds3103_read_ber()
1037 ret = m88ds3103_wr_reg(priv, 0xd1, 0x01); in m88ds3103_read_ber()
1041 ret = m88ds3103_wr_reg(priv, 0xf9, 0x01); in m88ds3103_read_ber()
1045 ret = m88ds3103_wr_reg(priv, 0xf9, 0x00); in m88ds3103_read_ber()
1049 ret = m88ds3103_wr_reg(priv, 0xd1, 0x00); in m88ds3103_read_ber()
1055 dev_dbg(&priv->i2c->dev, "%s: invalid delivery_system\n", in m88ds3103_read_ber()
1061 *ber = priv->ber; in m88ds3103_read_ber()
1065 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_read_ber()
1072 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_set_tone() local
1076 dev_dbg(&priv->i2c->dev, "%s: fe_sec_tone_mode=%d\n", __func__, in m88ds3103_set_tone()
1079 if (!priv->warm) { in m88ds3103_set_tone()
1094 dev_dbg(&priv->i2c->dev, "%s: invalid fe_sec_tone_mode\n", in m88ds3103_set_tone()
1100 u8tmp = tone << 7 | priv->cfg->envelope_mode << 5; in m88ds3103_set_tone()
1101 ret = m88ds3103_wr_reg_mask(priv, 0xa2, u8tmp, 0xe0); in m88ds3103_set_tone()
1106 ret = m88ds3103_wr_reg_mask(priv, 0xa1, u8tmp, reg_a1_mask); in m88ds3103_set_tone()
1112 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_set_tone()
1119 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_set_voltage() local
1124 dev_dbg(&priv->i2c->dev, "%s: fe_sec_voltage=%d\n", __func__, in m88ds3103_set_voltage()
1127 if (!priv->warm) { in m88ds3103_set_voltage()
1146 dev_dbg(&priv->i2c->dev, "%s: invalid fe_sec_voltage\n", in m88ds3103_set_voltage()
1153 voltage_sel ^= priv->cfg->lnb_hv_pol; in m88ds3103_set_voltage()
1154 voltage_dis ^= priv->cfg->lnb_en_pol; in m88ds3103_set_voltage()
1157 ret = m88ds3103_wr_reg_mask(priv, 0xa2, u8tmp, 0x03); in m88ds3103_set_voltage()
1163 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_set_voltage()
1170 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_diseqc_send_master_cmd() local
1174 dev_dbg(&priv->i2c->dev, "%s: msg=%*ph\n", __func__, in m88ds3103_diseqc_send_master_cmd()
1177 if (!priv->warm) { in m88ds3103_diseqc_send_master_cmd()
1187 u8tmp = priv->cfg->envelope_mode << 5; in m88ds3103_diseqc_send_master_cmd()
1188 ret = m88ds3103_wr_reg_mask(priv, 0xa2, u8tmp, 0xe0); in m88ds3103_diseqc_send_master_cmd()
1192 ret = m88ds3103_wr_regs(priv, 0xa3, diseqc_cmd->msg, in m88ds3103_diseqc_send_master_cmd()
1197 ret = m88ds3103_wr_reg(priv, 0xa1, in m88ds3103_diseqc_send_master_cmd()
1209 ret = m88ds3103_rd_reg_mask(priv, 0xa1, &u8tmp, 0x40); in m88ds3103_diseqc_send_master_cmd()
1214 dev_dbg(&priv->i2c->dev, "%s: loop=%d\n", __func__, i); in m88ds3103_diseqc_send_master_cmd()
1217 dev_dbg(&priv->i2c->dev, "%s: diseqc tx timeout\n", __func__); in m88ds3103_diseqc_send_master_cmd()
1219 ret = m88ds3103_wr_reg_mask(priv, 0xa1, 0x40, 0xc0); in m88ds3103_diseqc_send_master_cmd()
1224 ret = m88ds3103_wr_reg_mask(priv, 0xa2, 0x80, 0xc0); in m88ds3103_diseqc_send_master_cmd()
1235 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_diseqc_send_master_cmd()
1242 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_diseqc_send_burst() local
1246 dev_dbg(&priv->i2c->dev, "%s: fe_sec_mini_cmd=%d\n", __func__, in m88ds3103_diseqc_send_burst()
1249 if (!priv->warm) { in m88ds3103_diseqc_send_burst()
1254 u8tmp = priv->cfg->envelope_mode << 5; in m88ds3103_diseqc_send_burst()
1255 ret = m88ds3103_wr_reg_mask(priv, 0xa2, u8tmp, 0xe0); in m88ds3103_diseqc_send_burst()
1267 dev_dbg(&priv->i2c->dev, "%s: invalid fe_sec_mini_cmd\n", in m88ds3103_diseqc_send_burst()
1273 ret = m88ds3103_wr_reg(priv, 0xa1, burst); in m88ds3103_diseqc_send_burst()
1284 ret = m88ds3103_rd_reg_mask(priv, 0xa1, &u8tmp, 0x40); in m88ds3103_diseqc_send_burst()
1289 dev_dbg(&priv->i2c->dev, "%s: loop=%d\n", __func__, i); in m88ds3103_diseqc_send_burst()
1291 ret = m88ds3103_wr_reg_mask(priv, 0xa2, 0x80, 0xc0); in m88ds3103_diseqc_send_burst()
1296 dev_dbg(&priv->i2c->dev, "%s: diseqc tx timeout\n", __func__); in m88ds3103_diseqc_send_burst()
1303 dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret); in m88ds3103_diseqc_send_burst()
1317 struct m88ds3103_priv *priv = fe->demodulator_priv; in m88ds3103_release() local
1319 i2c_del_mux_adapter(priv->i2c_adapter); in m88ds3103_release()
1320 kfree(priv); in m88ds3103_release()
1325 struct m88ds3103_priv *priv = mux_priv; in m88ds3103_select() local
1329 .addr = priv->cfg->i2c_addr, in m88ds3103_select()
1336 mutex_lock(&priv->i2c_mutex); in m88ds3103_select()
1339 ret = __i2c_transfer(priv->i2c, gate_open_msg, 1); in m88ds3103_select()
1341 dev_warn(&priv->i2c->dev, "%s: i2c wr failed=%d\n", in m88ds3103_select()
1355 struct m88ds3103_priv *priv = mux_priv; in m88ds3103_deselect() local
1357 mutex_unlock(&priv->i2c_mutex); in m88ds3103_deselect()
1366 struct m88ds3103_priv *priv; in m88ds3103_attach() local
1370 priv = kzalloc(sizeof(*priv), GFP_KERNEL); in m88ds3103_attach()
1371 if (!priv) { in m88ds3103_attach()
1377 priv->cfg = cfg; in m88ds3103_attach()
1378 priv->i2c = i2c; in m88ds3103_attach()
1379 mutex_init(&priv->i2c_mutex); in m88ds3103_attach()
1382 ret = m88ds3103_rd_reg(priv, 0x00, &chip_id); in m88ds3103_attach()
1387 dev_info(&priv->i2c->dev, "%s: chip_id=%02x\n", __func__, chip_id); in m88ds3103_attach()
1396 priv->chip_id = chip_id; in m88ds3103_attach()
1398 switch (priv->cfg->clock_out) { in m88ds3103_attach()
1417 ret = m88ds3103_wr_reg(priv, 0x29, u8tmp); in m88ds3103_attach()
1422 ret = m88ds3103_wr_reg_mask(priv, 0x08, 0x00, 0x01); in m88ds3103_attach()
1426 ret = m88ds3103_wr_reg_mask(priv, 0x04, 0x01, 0x01); in m88ds3103_attach()
1430 ret = m88ds3103_wr_reg_mask(priv, 0x23, 0x10, 0x10); in m88ds3103_attach()
1435 priv->i2c_adapter = i2c_add_mux_adapter(i2c, &i2c->dev, priv, 0, 0, 0, in m88ds3103_attach()
1437 if (priv->i2c_adapter == NULL) in m88ds3103_attach()
1440 *tuner_i2c_adapter = priv->i2c_adapter; in m88ds3103_attach()
1443 memcpy(&priv->fe.ops, &m88ds3103_ops, sizeof(struct dvb_frontend_ops)); in m88ds3103_attach()
1444 if (priv->chip_id == M88RS6000_CHIP_ID) in m88ds3103_attach()
1445 strncpy(priv->fe.ops.info.name, in m88ds3103_attach()
1446 "Montage M88RS6000", sizeof(priv->fe.ops.info.name)); in m88ds3103_attach()
1447 priv->fe.demodulator_priv = priv; in m88ds3103_attach()
1449 return &priv->fe; in m88ds3103_attach()
1452 kfree(priv); in m88ds3103_attach()