57 memcpy(&buf[0], sbuf, slen);
58 buf[60] = state->
seq++;
62 dev_dbg(&d->
udev->dev,
"%s: >>> %*ph\n", __func__, slen, buf);
82 for (i = 0; i < 3; i++) {
85 d->
props->generic_bulk_ctrl_endpoint), buf,
sizeof(buf),
90 "failed=%d\n", __func__, ret);
105 dev_err(&d->
udev->dev,
"%s: recv bulk message failed=%d\n",
106 KBUILD_MODNAME, ret);
124 ret = anysee_ctrl_msg(d, buf,
sizeof(buf), val, 1);
125 dev_dbg(&d->
udev->dev,
"%s: reg=%04x val=%02x\n", __func__, reg, *val);
132 dev_dbg(&d->
udev->dev,
"%s: reg=%04x val=%02x\n", __func__, reg, val);
133 return anysee_ctrl_msg(d, buf,
sizeof(buf),
NULL, 0);
145 ret = anysee_read_reg(d, reg, &tmp);
154 return anysee_write_reg(d, reg, val);
164 ret = anysee_read_reg(d, reg, &tmp);
171 for (i = 0; i < 8; i++) {
172 if ((mask >> i) & 0x01)
183 return anysee_ctrl_msg(d, buf,
sizeof(buf),
id, 3);
190 return anysee_ctrl_msg(
fe_to_d(fe), buf,
sizeof(buf),
NULL, 0);
196 dev_dbg(&d->
udev->dev,
"%s: state=%d interval=%d\n", __func__,
198 return anysee_ctrl_msg(d, buf,
sizeof(buf),
NULL, 0);
204 dev_dbg(&d->
udev->dev,
"%s: onoff=%d\n", __func__, onoff);
205 return anysee_ctrl_msg(d, buf,
sizeof(buf),
NULL, 0);
213 int ret = 0,
inc, i = 0;
221 if (msg[i].len > 2 || msg[i+1].len > 60) {
226 buf[1] = (msg[
i].
addr << 1) | 0x01;
227 buf[2] = msg[
i].
buf[0];
228 buf[3] = msg[
i].
buf[1];
229 buf[4] = msg[
i].
len-1;
230 buf[5] = msg[i+1].
len;
231 ret = anysee_ctrl_msg(d, buf, 6, msg[i+1].buf,
235 if (msg[i].len > 48) {
240 buf[1] = (msg[
i].
addr << 1);
243 memcpy(&buf[4], msg[i].buf, msg[i].len);
244 ret = anysee_ctrl_msg(d, buf, 4 + msg[i].len,
NULL, 0);
255 return ret ? ret :
i;
264 .master_xfer = anysee_master_xfer,
265 .functionality = anysee_i2c_func,
268 static int anysee_mt352_demod_init(
struct dvb_frontend *fe)
270 static u8 clock_config[] = {
CLOCK_CTL, 0x38, 0x28 };
274 static u8 gpp_ctl_cfg[] = {
GPP_CTL, 0x33 };
277 mt352_write(fe, clock_config,
sizeof(clock_config));
279 mt352_write(fe, reset,
sizeof(reset));
280 mt352_write(fe, adc_ctl_1_cfg,
sizeof(adc_ctl_1_cfg));
282 mt352_write(fe, agc_cfg,
sizeof(agc_cfg));
283 mt352_write(fe, gpp_ctl_cfg,
sizeof(gpp_ctl_cfg));
284 mt352_write(fe, capt_range_cfg,
sizeof(capt_range_cfg));
291 .demod_address = (0x1a >> 1),
302 .demod_address = (0x1e >> 1),
307 .demod_address = (0x1e >> 1),
312 .demod_address = (0x1e >> 1),
320 .demod_address = (0x18 >> 1),
328 .demod_address = (0x1a >> 1),
338 .i2c_address = (0xc0 >> 1),
346 .i2c_address = 0x60 ,
357 .demod_address = (0xaa >> 1),
363 .demod_address = (0xd0 >> 1),
374 .i2c_address = (0xc0 >> 1),
516 ret = anysee_get_hw_info(d, hw_info);
520 ret = anysee_get_hw_info(d, hw_info);
527 dev_info(&d->
udev->dev,
"%s: firmware version %d.%d hardware id %d\n",
528 KBUILD_MODNAME, hw_info[1], hw_info[2], hw_info[0]);
530 state->
hw = hw_info[0];
539 return anysee_wr_reg_mask(
fe_to_d(fe),
REG_IOE, (enable << 4), 0x10);
542 static int anysee_frontend_ctrl(
struct dvb_frontend *fe,
int onoff)
547 dev_dbg(&d->
udev->dev,
"%s: fe=%d onoff=%d\n", __func__, fe->
id, onoff);
560 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 0), 0x01);
565 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 5), 0x20);
570 ret = anysee_wr_reg_mask(d,
REG_IOE, (1 << 0), 0x01);
575 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 5), 0x20);
580 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 0), 0x01);
585 ret = anysee_wr_reg_mask(d,
REG_IOE, (0 << 0), 0x01);
598 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 6), 0x40);
603 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 5), 0x20);
608 ret = anysee_wr_reg_mask(d,
REG_IOE, (1 << 0), 0x01);
613 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 5), 0x20);
618 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 6), 0x40);
623 ret = anysee_wr_reg_mask(d,
REG_IOE, (0 << 0), 0x01);
676 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 0), 0x01);
681 ret = anysee_wr_reg_mask(d,
REG_IOA, (0 << 7), 0x80);
694 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 0), 0x01);
700 &anysee_tda10023_config, &d->
i2c_adap, 0x48);
707 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 0), 0x01);
721 ret = anysee_wr_reg_mask(d,
REG_IOE, (1 << 4), 0x10);
728 if (ret == 2 && tmp == 0xc7)
735 ret = anysee_wr_reg_mask(d,
REG_IOE, (0 << 4), 0x10);
740 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 0), 0x01);
745 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 5), 0x20);
753 &anysee_tda10023_tda18212_config,
758 adap->
fe[0]->ops.i2c_gate_ctrl =
759 anysee_i2c_gate_ctrl;
763 &anysee_tda10023_config,
772 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 5), 0x20);
777 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 0), 0x01);
785 &anysee_zl10353_tda18212_config2,
790 adap->
fe[1]->ops.i2c_gate_ctrl =
791 anysee_i2c_gate_ctrl;
795 &anysee_zl10353_config,
806 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 6), 0x40);
811 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 5), 0x20);
817 &anysee_tda10023_tda18212_config,
822 adap->
fe[0]->ops.i2c_gate_ctrl = anysee_i2c_gate_ctrl;
829 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 5), 0x20);
834 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 6), 0x40);
840 &anysee_zl10353_tda18212_config,
845 adap->
fe[1]->ops.i2c_gate_ctrl = anysee_i2c_gate_ctrl;
856 ret = anysee_wr_reg_mask(d,
REG_IOE, (1 << 5), 0x20);
862 &anysee_stv0900_config, &d->
i2c_adap, 0);
871 ret = anysee_wr_reg_mask(d,
REG_IOE, (1 << 5), 0x20);
887 dev_err(&d->
udev->dev,
"%s: Unsupported Anysee version. " \
888 "Please report the " \
934 &anysee_isl6423_config);
946 &anysee_tda18212_config);
948 if (fe && adap->
fe[1]) {
951 &d->
i2c_adap, &anysee_tda18212_config);
961 if (fe && adap->
fe[1]) {
976 &anysee_tda18212_config);
981 &d->
i2c_adap, &anysee_tda18212_config);
992 &anysee_stv6110_config, &d->
i2c_adap);
997 &d->
i2c_adap, &anysee_isl6423_config);
1007 &anysee_tda18212_config2);
1036 ret = anysee_ctrl_msg(d, buf,
sizeof(buf), ircode,
sizeof(ircode));
1041 dev_dbg(&d->
udev->dev,
"%s: key pressed %02x\n", __func__,
1052 rc->
query = anysee_rc_query;
1063 u8 buf[] = {
CMD_CI, 0x02, 0x40 | addr >> 8, addr & 0xff, 0x00, 1};
1066 ret = anysee_ctrl_msg(d, buf,
sizeof(buf), &val, 1);
1073 static int anysee_ci_write_attribute_mem(
struct dvb_ca_en50221 *ci,
int slot,
1078 u8 buf[] = {
CMD_CI, 0x03, 0x40 | addr >> 8, addr & 0xff, 0x00, 1, val};
1080 ret = anysee_ctrl_msg(d, buf,
sizeof(buf),
NULL, 0);
1087 static int anysee_ci_read_cam_control(
struct dvb_ca_en50221 *ci,
int slot,
1095 ret = anysee_ctrl_msg(d, buf,
sizeof(buf), &val, 1);
1102 static int anysee_ci_write_cam_control(
struct dvb_ca_en50221 *ci,
int slot,
1109 ret = anysee_ctrl_msg(d, buf,
sizeof(buf),
NULL, 0);
1116 static int anysee_ci_slot_reset(
struct dvb_ca_en50221 *ci,
int slot)
1124 ret = anysee_wr_reg_mask(d,
REG_IOA, (0 << 7), 0x80);
1130 ret = anysee_wr_reg_mask(d,
REG_IOA, (1 << 7), 0x80);
1137 static int anysee_ci_slot_shutdown(
struct dvb_ca_en50221 *ci,
int slot)
1142 ret = anysee_wr_reg_mask(d,
REG_IOA, (0 << 7), 0x80);
1148 ret = anysee_wr_reg_mask(d,
REG_IOA, (1 << 7), 0x80);
1155 static int anysee_ci_slot_ts_enable(
struct dvb_ca_en50221 *ci,
int slot)
1160 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 1), 0x02);
1167 static int anysee_ci_poll_slot_status(
struct dvb_ca_en50221 *ci,
int slot,
1175 ret = anysee_rd_reg_mask(d,
REG_IOC, &tmp, 0x40);
1194 state->
ci.read_attribute_mem = anysee_ci_read_attribute_mem;
1195 state->
ci.write_attribute_mem = anysee_ci_write_attribute_mem;
1196 state->
ci.read_cam_control = anysee_ci_read_cam_control;
1197 state->
ci.write_cam_control = anysee_ci_write_cam_control;
1198 state->
ci.slot_reset = anysee_ci_slot_reset;
1199 state->
ci.slot_shutdown = anysee_ci_slot_shutdown;
1200 state->
ci.slot_ts_enable = anysee_ci_slot_ts_enable;
1201 state->
ci.poll_slot_status = anysee_ci_poll_slot_status;
1204 ret = anysee_wr_reg_mask(d,
REG_IOA, (1 << 7), 0x80);
1208 ret = anysee_wr_reg_mask(d,
REG_IOD, (0 << 2)|(0 << 1)|(0 << 0), 0x07);
1212 ret = anysee_wr_reg_mask(d,
REG_IOD, (1 << 2)|(1 << 1)|(1 << 0), 0x07);
1250 ret = anysee_led_ctrl(d, 0x01, 0x03);
1255 ret = anysee_ir_ctrl(d, 1);
1261 ret = anysee_ci_init(d);
1271 return anysee_ci_release(d);
1276 .driver_name = KBUILD_MODNAME,
1281 .generic_bulk_ctrl_endpoint = 0x01,
1282 .generic_bulk_ctrl_endpoint_response = 0x81,
1284 .i2c_algo = &anysee_i2c_algo,
1285 .read_config = anysee_read_config,
1286 .frontend_attach = anysee_frontend_attach,
1287 .tuner_attach = anysee_tuner_attach,
1288 .init = anysee_init,
1289 .get_rc_config = anysee_get_rc_config,
1290 .frontend_ctrl = anysee_frontend_ctrl,
1291 .streaming_ctrl = anysee_streaming_ctrl,
1292 .exit = anysee_exit,
1311 static struct usb_driver anysee_usb_driver = {
1312 .name = KBUILD_MODNAME,
1313 .id_table = anysee_id_table,