Lines Matching +full:gpio +full:- +full:wo +full:- +full:state

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2010-2014 Michael Krufky (mkrufky@linuxtv.org)
5 * see Documentation/driver-api/media/drivers/dvb-usb.rst for more information
13 #include "mxl111sf-reg.h"
14 #include "mxl111sf-phy.h"
15 #include "mxl111sf-i2c.h"
16 #include "mxl111sf-gpio.h"
18 #include "mxl111sf-demod.h"
19 #include "mxl111sf-tuner.h"
26 MODULE_PARM_DESC(debug, "set debugging level (1=info, 2=xfer, 4=i2c, 8=reg, 16=adv (or-able)).");
52 int mxl111sf_ctrl_msg(struct mxl111sf_state *state, in mxl111sf_ctrl_msg() argument
55 struct dvb_usb_device *d = state->d; in mxl111sf_ctrl_msg()
56 int wo = (rbuf == NULL || rlen == 0); /* write-only */ in mxl111sf_ctrl_msg() local
61 return -EOPNOTSUPP; in mxl111sf_ctrl_msg()
66 mutex_lock(&state->msg_lock); in mxl111sf_ctrl_msg()
67 memset(state->sndbuf, 0, 1+wlen); in mxl111sf_ctrl_msg()
68 memset(state->rcvbuf, 0, rlen); in mxl111sf_ctrl_msg()
70 state->sndbuf[0] = cmd; in mxl111sf_ctrl_msg()
71 memcpy(&state->sndbuf[1], wbuf, wlen); in mxl111sf_ctrl_msg()
73 ret = (wo) ? dvb_usbv2_generic_write(d, state->sndbuf, 1+wlen) : in mxl111sf_ctrl_msg()
74 dvb_usbv2_generic_rw(d, state->sndbuf, 1+wlen, state->rcvbuf, in mxl111sf_ctrl_msg()
78 memcpy(rbuf, state->rcvbuf, rlen); in mxl111sf_ctrl_msg()
80 mutex_unlock(&state->msg_lock); in mxl111sf_ctrl_msg()
87 /* ------------------------------------------------------------------------ */
92 int mxl111sf_read_reg(struct mxl111sf_state *state, u8 addr, u8 *data) in mxl111sf_read_reg() argument
97 ret = mxl111sf_ctrl_msg(state, MXL_CMD_REG_READ, &addr, 1, buf, 2); in mxl111sf_read_reg()
108 ret = -EINVAL; in mxl111sf_read_reg()
116 int mxl111sf_write_reg(struct mxl111sf_state *state, u8 addr, u8 data) in mxl111sf_write_reg() argument
123 ret = mxl111sf_ctrl_msg(state, MXL_CMD_REG_WRITE, buf, 2, NULL, 0); in mxl111sf_write_reg()
129 /* ------------------------------------------------------------------------ */
131 int mxl111sf_write_reg_mask(struct mxl111sf_state *state, in mxl111sf_write_reg_mask() argument
138 ret = mxl111sf_read_reg(state, addr, &val); in mxl111sf_write_reg_mask()
145 ret = mxl111sf_read_reg(state, addr, &val); in mxl111sf_write_reg_mask()
153 ret = mxl111sf_write_reg(state, addr, val); in mxl111sf_write_reg_mask()
159 /* ------------------------------------------------------------------------ */
161 int mxl111sf_ctrl_program_regs(struct mxl111sf_state *state, in mxl111sf_ctrl_program_regs() argument
170 ret = mxl111sf_write_reg_mask(state, in mxl111sf_ctrl_program_regs()
183 /* ------------------------------------------------------------------------ */
185 static int mxl1x1sf_get_chip_info(struct mxl111sf_state *state) in mxl1x1sf_get_chip_info() argument
191 if ((state->chip_id) && (state->chip_ver)) in mxl1x1sf_get_chip_info()
194 ret = mxl111sf_read_reg(state, CHIP_ID_REG, &id); in mxl1x1sf_get_chip_info()
197 state->chip_id = id; in mxl1x1sf_get_chip_info()
199 ret = mxl111sf_read_reg(state, TOP_CHIP_REV_ID_REG, &ver); in mxl1x1sf_get_chip_info()
202 state->chip_ver = ver; in mxl1x1sf_get_chip_info()
217 state->chip_rev = MXL111SF_V6; in mxl1x1sf_get_chip_info()
221 state->chip_rev = MXL111SF_V8_100; in mxl1x1sf_get_chip_info()
225 state->chip_rev = MXL111SF_V8_200; in mxl1x1sf_get_chip_info()
229 state->chip_rev = 0; in mxl1x1sf_get_chip_info()
238 #define get_chip_info(state) \ argument
241 ___ret = mxl1x1sf_get_chip_info(state); \
245 ___ret = mxl1x1sf_get_chip_info(state); \
255 /* ------------------------------------------------------------------------ */
268 struct mxl111sf_state *state = fe_to_priv(fe); in mxl111sf_adap_fe_init() local
269 struct mxl111sf_adap_state *adap_state = &state->adap_state[fe->id]; in mxl111sf_adap_fe_init()
273 if (!state->chip_id) { in mxl111sf_adap_fe_init()
280 mutex_lock(&state->fe_lock); in mxl111sf_adap_fe_init()
282 state->alt_mode = adap_state->alt_mode; in mxl111sf_adap_fe_init()
284 if (usb_set_interface(d->udev, 0, state->alt_mode) < 0) in mxl111sf_adap_fe_init()
287 err = mxl1x1sf_soft_reset(state); in mxl111sf_adap_fe_init()
289 err = mxl111sf_init_tuner_demod(state); in mxl111sf_adap_fe_init()
291 err = mxl1x1sf_set_device_mode(state, adap_state->device_mode); in mxl111sf_adap_fe_init()
294 err = mxl111sf_enable_usb_output(state); in mxl111sf_adap_fe_init()
296 err = mxl1x1sf_top_master_ctrl(state, 1); in mxl111sf_adap_fe_init()
299 if ((MXL111SF_GPIO_MOD_DVBT != adap_state->gpio_mode) && in mxl111sf_adap_fe_init()
300 (state->chip_rev > MXL111SF_V6)) { in mxl111sf_adap_fe_init()
301 mxl111sf_config_pin_mux_modes(state, in mxl111sf_adap_fe_init()
305 err = mxl111sf_init_port_expander(state); in mxl111sf_adap_fe_init()
307 state->gpio_mode = adap_state->gpio_mode; in mxl111sf_adap_fe_init()
308 err = mxl111sf_gpio_mode_switch(state, state->gpio_mode); in mxl111sf_adap_fe_init()
311 err = fe->ops.init(fe); in mxl111sf_adap_fe_init()
317 return (adap_state->fe_init) ? adap_state->fe_init(fe) : 0; in mxl111sf_adap_fe_init()
319 return -ENODEV; in mxl111sf_adap_fe_init()
324 struct mxl111sf_state *state = fe_to_priv(fe); in mxl111sf_adap_fe_sleep() local
325 struct mxl111sf_adap_state *adap_state = &state->adap_state[fe->id]; in mxl111sf_adap_fe_sleep()
329 if (!state->chip_id) { in mxl111sf_adap_fe_sleep()
336 err = (adap_state->fe_sleep) ? adap_state->fe_sleep(fe) : 0; in mxl111sf_adap_fe_sleep()
338 mutex_unlock(&state->fe_lock); in mxl111sf_adap_fe_sleep()
342 return -ENODEV; in mxl111sf_adap_fe_sleep()
348 struct mxl111sf_state *state = fe_to_priv(fe); in mxl111sf_ep6_streaming_ctrl() local
349 struct mxl111sf_adap_state *adap_state = &state->adap_state[fe->id]; in mxl111sf_ep6_streaming_ctrl()
355 ret = mxl111sf_enable_usb_output(state); in mxl111sf_ep6_streaming_ctrl()
357 ret = mxl111sf_config_mpeg_in(state, 1, 1, in mxl111sf_ep6_streaming_ctrl()
358 adap_state->ep6_clockphase, in mxl111sf_ep6_streaming_ctrl()
363 ret = mxl111sf_disable_656_port(state); in mxl111sf_ep6_streaming_ctrl()
373 struct mxl111sf_state *state = fe_to_priv(fe); in mxl111sf_ep5_streaming_ctrl() local
379 ret = mxl111sf_enable_usb_output(state); in mxl111sf_ep5_streaming_ctrl()
382 ret = mxl111sf_init_i2s_port(state, 200); in mxl111sf_ep5_streaming_ctrl()
384 ret = mxl111sf_config_i2s(state, 0, 15); in mxl111sf_ep5_streaming_ctrl()
387 ret = mxl111sf_disable_i2s_port(state); in mxl111sf_ep5_streaming_ctrl()
390 if (state->chip_rev > MXL111SF_V6) in mxl111sf_ep5_streaming_ctrl()
391 ret = mxl111sf_config_spi(state, onoff); in mxl111sf_ep5_streaming_ctrl()
399 struct mxl111sf_state *state = fe_to_priv(fe); in mxl111sf_ep4_streaming_ctrl() local
405 ret = mxl111sf_enable_usb_output(state); in mxl111sf_ep4_streaming_ctrl()
412 /* ------------------------------------------------------------------------ */
428 struct mxl111sf_state *state = d_to_priv(d); in mxl111sf_lgdt3305_frontend_attach() local
429 struct mxl111sf_adap_state *adap_state = &state->adap_state[fe_id]; in mxl111sf_lgdt3305_frontend_attach()
434 /* save a pointer to the dvb_usb_device in device state */ in mxl111sf_lgdt3305_frontend_attach()
435 state->d = d; in mxl111sf_lgdt3305_frontend_attach()
436 adap_state->alt_mode = (dvb_usb_mxl111sf_isoc) ? 2 : 1; in mxl111sf_lgdt3305_frontend_attach()
437 state->alt_mode = adap_state->alt_mode; in mxl111sf_lgdt3305_frontend_attach()
439 if (usb_set_interface(d->udev, 0, state->alt_mode) < 0) in mxl111sf_lgdt3305_frontend_attach()
442 state->gpio_mode = MXL111SF_GPIO_MOD_ATSC; in mxl111sf_lgdt3305_frontend_attach()
443 adap_state->gpio_mode = state->gpio_mode; in mxl111sf_lgdt3305_frontend_attach()
444 adap_state->device_mode = MXL_TUNER_MODE; in mxl111sf_lgdt3305_frontend_attach()
445 adap_state->ep6_clockphase = 1; in mxl111sf_lgdt3305_frontend_attach()
447 ret = mxl1x1sf_soft_reset(state); in mxl111sf_lgdt3305_frontend_attach()
450 ret = mxl111sf_init_tuner_demod(state); in mxl111sf_lgdt3305_frontend_attach()
454 ret = mxl1x1sf_set_device_mode(state, adap_state->device_mode); in mxl111sf_lgdt3305_frontend_attach()
458 ret = mxl111sf_enable_usb_output(state); in mxl111sf_lgdt3305_frontend_attach()
461 ret = mxl1x1sf_top_master_ctrl(state, 1); in mxl111sf_lgdt3305_frontend_attach()
465 ret = mxl111sf_init_port_expander(state); in mxl111sf_lgdt3305_frontend_attach()
468 ret = mxl111sf_gpio_mode_switch(state, state->gpio_mode); in mxl111sf_lgdt3305_frontend_attach()
472 adap->fe[fe_id] = dvb_attach(lgdt3305_attach, in mxl111sf_lgdt3305_frontend_attach()
474 &d->i2c_adap); in mxl111sf_lgdt3305_frontend_attach()
475 if (adap->fe[fe_id]) { in mxl111sf_lgdt3305_frontend_attach()
476 state->num_frontends++; in mxl111sf_lgdt3305_frontend_attach()
477 adap_state->fe_init = adap->fe[fe_id]->ops.init; in mxl111sf_lgdt3305_frontend_attach()
478 adap->fe[fe_id]->ops.init = mxl111sf_adap_fe_init; in mxl111sf_lgdt3305_frontend_attach()
479 adap_state->fe_sleep = adap->fe[fe_id]->ops.sleep; in mxl111sf_lgdt3305_frontend_attach()
480 adap->fe[fe_id]->ops.sleep = mxl111sf_adap_fe_sleep; in mxl111sf_lgdt3305_frontend_attach()
483 ret = -EIO; in mxl111sf_lgdt3305_frontend_attach()
499 struct mxl111sf_state *state = d_to_priv(d); in mxl111sf_lg2160_frontend_attach() local
500 struct mxl111sf_adap_state *adap_state = &state->adap_state[fe_id]; in mxl111sf_lg2160_frontend_attach()
505 /* save a pointer to the dvb_usb_device in device state */ in mxl111sf_lg2160_frontend_attach()
506 state->d = d; in mxl111sf_lg2160_frontend_attach()
507 adap_state->alt_mode = (dvb_usb_mxl111sf_isoc) ? 2 : 1; in mxl111sf_lg2160_frontend_attach()
508 state->alt_mode = adap_state->alt_mode; in mxl111sf_lg2160_frontend_attach()
510 if (usb_set_interface(d->udev, 0, state->alt_mode) < 0) in mxl111sf_lg2160_frontend_attach()
513 state->gpio_mode = MXL111SF_GPIO_MOD_MH; in mxl111sf_lg2160_frontend_attach()
514 adap_state->gpio_mode = state->gpio_mode; in mxl111sf_lg2160_frontend_attach()
515 adap_state->device_mode = MXL_TUNER_MODE; in mxl111sf_lg2160_frontend_attach()
516 adap_state->ep6_clockphase = 1; in mxl111sf_lg2160_frontend_attach()
518 ret = mxl1x1sf_soft_reset(state); in mxl111sf_lg2160_frontend_attach()
521 ret = mxl111sf_init_tuner_demod(state); in mxl111sf_lg2160_frontend_attach()
525 ret = mxl1x1sf_set_device_mode(state, adap_state->device_mode); in mxl111sf_lg2160_frontend_attach()
529 ret = mxl111sf_enable_usb_output(state); in mxl111sf_lg2160_frontend_attach()
532 ret = mxl1x1sf_top_master_ctrl(state, 1); in mxl111sf_lg2160_frontend_attach()
536 ret = mxl111sf_init_port_expander(state); in mxl111sf_lg2160_frontend_attach()
539 ret = mxl111sf_gpio_mode_switch(state, state->gpio_mode); in mxl111sf_lg2160_frontend_attach()
543 ret = get_chip_info(state); in mxl111sf_lg2160_frontend_attach()
547 adap->fe[fe_id] = dvb_attach(lg2160_attach, in mxl111sf_lg2160_frontend_attach()
549 &d->i2c_adap); in mxl111sf_lg2160_frontend_attach()
550 if (adap->fe[fe_id]) { in mxl111sf_lg2160_frontend_attach()
551 state->num_frontends++; in mxl111sf_lg2160_frontend_attach()
552 adap_state->fe_init = adap->fe[fe_id]->ops.init; in mxl111sf_lg2160_frontend_attach()
553 adap->fe[fe_id]->ops.init = mxl111sf_adap_fe_init; in mxl111sf_lg2160_frontend_attach()
554 adap_state->fe_sleep = adap->fe[fe_id]->ops.sleep; in mxl111sf_lg2160_frontend_attach()
555 adap->fe[fe_id]->ops.sleep = mxl111sf_adap_fe_sleep; in mxl111sf_lg2160_frontend_attach()
558 ret = -EIO; in mxl111sf_lg2160_frontend_attach()
584 struct mxl111sf_state *state = d_to_priv(d); in mxl111sf_lg2161_frontend_attach() local
585 struct mxl111sf_adap_state *adap_state = &state->adap_state[fe_id]; in mxl111sf_lg2161_frontend_attach()
590 /* save a pointer to the dvb_usb_device in device state */ in mxl111sf_lg2161_frontend_attach()
591 state->d = d; in mxl111sf_lg2161_frontend_attach()
592 adap_state->alt_mode = (dvb_usb_mxl111sf_isoc) ? 2 : 1; in mxl111sf_lg2161_frontend_attach()
593 state->alt_mode = adap_state->alt_mode; in mxl111sf_lg2161_frontend_attach()
595 if (usb_set_interface(d->udev, 0, state->alt_mode) < 0) in mxl111sf_lg2161_frontend_attach()
598 state->gpio_mode = MXL111SF_GPIO_MOD_MH; in mxl111sf_lg2161_frontend_attach()
599 adap_state->gpio_mode = state->gpio_mode; in mxl111sf_lg2161_frontend_attach()
600 adap_state->device_mode = MXL_TUNER_MODE; in mxl111sf_lg2161_frontend_attach()
601 adap_state->ep6_clockphase = 1; in mxl111sf_lg2161_frontend_attach()
603 ret = mxl1x1sf_soft_reset(state); in mxl111sf_lg2161_frontend_attach()
606 ret = mxl111sf_init_tuner_demod(state); in mxl111sf_lg2161_frontend_attach()
610 ret = mxl1x1sf_set_device_mode(state, adap_state->device_mode); in mxl111sf_lg2161_frontend_attach()
614 ret = mxl111sf_enable_usb_output(state); in mxl111sf_lg2161_frontend_attach()
617 ret = mxl1x1sf_top_master_ctrl(state, 1); in mxl111sf_lg2161_frontend_attach()
621 ret = mxl111sf_init_port_expander(state); in mxl111sf_lg2161_frontend_attach()
624 ret = mxl111sf_gpio_mode_switch(state, state->gpio_mode); in mxl111sf_lg2161_frontend_attach()
628 ret = get_chip_info(state); in mxl111sf_lg2161_frontend_attach()
632 adap->fe[fe_id] = dvb_attach(lg2160_attach, in mxl111sf_lg2161_frontend_attach()
633 (MXL111SF_V8_200 == state->chip_rev) ? in mxl111sf_lg2161_frontend_attach()
636 &d->i2c_adap); in mxl111sf_lg2161_frontend_attach()
637 if (adap->fe[fe_id]) { in mxl111sf_lg2161_frontend_attach()
638 state->num_frontends++; in mxl111sf_lg2161_frontend_attach()
639 adap_state->fe_init = adap->fe[fe_id]->ops.init; in mxl111sf_lg2161_frontend_attach()
640 adap->fe[fe_id]->ops.init = mxl111sf_adap_fe_init; in mxl111sf_lg2161_frontend_attach()
641 adap_state->fe_sleep = adap->fe[fe_id]->ops.sleep; in mxl111sf_lg2161_frontend_attach()
642 adap->fe[fe_id]->ops.sleep = mxl111sf_adap_fe_sleep; in mxl111sf_lg2161_frontend_attach()
645 ret = -EIO; in mxl111sf_lg2161_frontend_attach()
671 struct mxl111sf_state *state = d_to_priv(d); in mxl111sf_lg2161_ep6_frontend_attach() local
672 struct mxl111sf_adap_state *adap_state = &state->adap_state[fe_id]; in mxl111sf_lg2161_ep6_frontend_attach()
677 /* save a pointer to the dvb_usb_device in device state */ in mxl111sf_lg2161_ep6_frontend_attach()
678 state->d = d; in mxl111sf_lg2161_ep6_frontend_attach()
679 adap_state->alt_mode = (dvb_usb_mxl111sf_isoc) ? 2 : 1; in mxl111sf_lg2161_ep6_frontend_attach()
680 state->alt_mode = adap_state->alt_mode; in mxl111sf_lg2161_ep6_frontend_attach()
682 if (usb_set_interface(d->udev, 0, state->alt_mode) < 0) in mxl111sf_lg2161_ep6_frontend_attach()
685 state->gpio_mode = MXL111SF_GPIO_MOD_MH; in mxl111sf_lg2161_ep6_frontend_attach()
686 adap_state->gpio_mode = state->gpio_mode; in mxl111sf_lg2161_ep6_frontend_attach()
687 adap_state->device_mode = MXL_TUNER_MODE; in mxl111sf_lg2161_ep6_frontend_attach()
688 adap_state->ep6_clockphase = 0; in mxl111sf_lg2161_ep6_frontend_attach()
690 ret = mxl1x1sf_soft_reset(state); in mxl111sf_lg2161_ep6_frontend_attach()
693 ret = mxl111sf_init_tuner_demod(state); in mxl111sf_lg2161_ep6_frontend_attach()
697 ret = mxl1x1sf_set_device_mode(state, adap_state->device_mode); in mxl111sf_lg2161_ep6_frontend_attach()
701 ret = mxl111sf_enable_usb_output(state); in mxl111sf_lg2161_ep6_frontend_attach()
704 ret = mxl1x1sf_top_master_ctrl(state, 1); in mxl111sf_lg2161_ep6_frontend_attach()
708 ret = mxl111sf_init_port_expander(state); in mxl111sf_lg2161_ep6_frontend_attach()
711 ret = mxl111sf_gpio_mode_switch(state, state->gpio_mode); in mxl111sf_lg2161_ep6_frontend_attach()
715 ret = get_chip_info(state); in mxl111sf_lg2161_ep6_frontend_attach()
719 adap->fe[fe_id] = dvb_attach(lg2160_attach, in mxl111sf_lg2161_ep6_frontend_attach()
720 (MXL111SF_V8_200 == state->chip_rev) ? in mxl111sf_lg2161_ep6_frontend_attach()
723 &d->i2c_adap); in mxl111sf_lg2161_ep6_frontend_attach()
724 if (adap->fe[fe_id]) { in mxl111sf_lg2161_ep6_frontend_attach()
725 state->num_frontends++; in mxl111sf_lg2161_ep6_frontend_attach()
726 adap_state->fe_init = adap->fe[fe_id]->ops.init; in mxl111sf_lg2161_ep6_frontend_attach()
727 adap->fe[fe_id]->ops.init = mxl111sf_adap_fe_init; in mxl111sf_lg2161_ep6_frontend_attach()
728 adap_state->fe_sleep = adap->fe[fe_id]->ops.sleep; in mxl111sf_lg2161_ep6_frontend_attach()
729 adap->fe[fe_id]->ops.sleep = mxl111sf_adap_fe_sleep; in mxl111sf_lg2161_ep6_frontend_attach()
732 ret = -EIO; in mxl111sf_lg2161_ep6_frontend_attach()
746 struct mxl111sf_state *state = d_to_priv(d); in mxl111sf_attach_demod() local
747 struct mxl111sf_adap_state *adap_state = &state->adap_state[fe_id]; in mxl111sf_attach_demod()
752 /* save a pointer to the dvb_usb_device in device state */ in mxl111sf_attach_demod()
753 state->d = d; in mxl111sf_attach_demod()
754 adap_state->alt_mode = (dvb_usb_mxl111sf_isoc) ? 1 : 2; in mxl111sf_attach_demod()
755 state->alt_mode = adap_state->alt_mode; in mxl111sf_attach_demod()
757 if (usb_set_interface(d->udev, 0, state->alt_mode) < 0) in mxl111sf_attach_demod()
760 state->gpio_mode = MXL111SF_GPIO_MOD_DVBT; in mxl111sf_attach_demod()
761 adap_state->gpio_mode = state->gpio_mode; in mxl111sf_attach_demod()
762 adap_state->device_mode = MXL_SOC_MODE; in mxl111sf_attach_demod()
763 adap_state->ep6_clockphase = 1; in mxl111sf_attach_demod()
765 ret = mxl1x1sf_soft_reset(state); in mxl111sf_attach_demod()
768 ret = mxl111sf_init_tuner_demod(state); in mxl111sf_attach_demod()
772 ret = mxl1x1sf_set_device_mode(state, adap_state->device_mode); in mxl111sf_attach_demod()
776 ret = mxl111sf_enable_usb_output(state); in mxl111sf_attach_demod()
779 ret = mxl1x1sf_top_master_ctrl(state, 1); in mxl111sf_attach_demod()
784 mxl111sf_init_port_expander(state); in mxl111sf_attach_demod()
786 adap->fe[fe_id] = dvb_attach(mxl111sf_demod_attach, state, in mxl111sf_attach_demod()
788 if (adap->fe[fe_id]) { in mxl111sf_attach_demod()
789 state->num_frontends++; in mxl111sf_attach_demod()
790 adap_state->fe_init = adap->fe[fe_id]->ops.init; in mxl111sf_attach_demod()
791 adap->fe[fe_id]->ops.init = mxl111sf_adap_fe_init; in mxl111sf_attach_demod()
792 adap_state->fe_sleep = adap->fe[fe_id]->ops.sleep; in mxl111sf_attach_demod()
793 adap->fe[fe_id]->ops.sleep = mxl111sf_adap_fe_sleep; in mxl111sf_attach_demod()
796 ret = -EIO; in mxl111sf_attach_demod()
801 static inline int mxl111sf_set_ant_path(struct mxl111sf_state *state, in mxl111sf_set_ant_path() argument
804 return mxl111sf_idac_config(state, 1, 1, in mxl111sf_set_ant_path()
820 struct mxl111sf_state *state = fe_to_priv(fe); in mxl111sf_ant_hunt() local
825 /* FIXME: must force EXTERNAL for QAM - done elsewhere */ in mxl111sf_ant_hunt()
826 mxl111sf_set_ant_path(state, antctrl == ANT_PATH_AUTO ? in mxl111sf_ant_hunt()
833 fe->ops.tuner_ops.get_rf_strength(fe, &rxPwrA); in mxl111sf_ant_hunt()
835 mxl111sf_set_ant_path(state, ANT_PATH_EXTERNAL); in mxl111sf_ant_hunt()
837 fe->ops.tuner_ops.get_rf_strength(fe, &rxPwr0); in mxl111sf_ant_hunt()
839 mxl111sf_set_ant_path(state, ANT_PATH_EXTERNAL); in mxl111sf_ant_hunt()
841 fe->ops.tuner_ops.get_rf_strength(fe, &rxPwr1); in mxl111sf_ant_hunt()
843 mxl111sf_set_ant_path(state, ANT_PATH_INTERNAL); in mxl111sf_ant_hunt()
845 fe->ops.tuner_ops.get_rf_strength(fe, &rxPwr2); in mxl111sf_ant_hunt()
849 mxl111sf_set_ant_path(state, ANT_PATH_EXTERNAL); in mxl111sf_ant_hunt()
873 struct mxl111sf_state *state = adap_to_priv(adap); in mxl111sf_attach_tuner() local
875 struct media_device *mdev = dvb_get_media_controller(&adap->dvb_adap); in mxl111sf_attach_tuner()
882 for (i = 0; i < state->num_frontends; i++) { in mxl111sf_attach_tuner()
883 if (dvb_attach(mxl111sf_tuner_attach, adap->fe[i], state, in mxl111sf_attach_tuner()
885 return -EIO; in mxl111sf_attach_tuner()
886 adap->fe[i]->ops.read_signal_strength = adap->fe[i]->ops.tuner_ops.get_rf_strength; in mxl111sf_attach_tuner()
890 state->tuner.function = MEDIA_ENT_F_TUNER; in mxl111sf_attach_tuner()
891 state->tuner.name = "mxl111sf tuner"; in mxl111sf_attach_tuner()
892 state->tuner_pads[MXL111SF_PAD_RF_INPUT].flags = MEDIA_PAD_FL_SINK; in mxl111sf_attach_tuner()
893 state->tuner_pads[MXL111SF_PAD_RF_INPUT].sig_type = PAD_SIGNAL_ANALOG; in mxl111sf_attach_tuner()
894 state->tuner_pads[MXL111SF_PAD_OUTPUT].flags = MEDIA_PAD_FL_SOURCE; in mxl111sf_attach_tuner()
895 state->tuner_pads[MXL111SF_PAD_OUTPUT].sig_type = PAD_SIGNAL_ANALOG; in mxl111sf_attach_tuner()
897 ret = media_entity_pads_init(&state->tuner, in mxl111sf_attach_tuner()
898 MXL111SF_NUM_PADS, state->tuner_pads); in mxl111sf_attach_tuner()
902 ret = media_device_register_entity(mdev, &state->tuner); in mxl111sf_attach_tuner()
924 struct mxl111sf_state *state = d_to_priv(d); in mxl111sf_init() local
934 ret = get_chip_info(state); in mxl111sf_init()
938 mutex_init(&state->fe_lock); in mxl111sf_init()
940 if (state->chip_rev > MXL111SF_V6) in mxl111sf_init()
941 mxl111sf_config_pin_mux_modes(state, PIN_MUX_TS_SPI_IN_MODE_1); in mxl111sf_init()
943 ret = i2c_transfer(&d->i2c_adap, msg, 2); in mxl111sf_init()
946 tveeprom_hauppauge_analog(&state->tv, (0x84 == eeprom[0xa0]) ? in mxl111sf_init()
949 switch (state->tv.model) { in mxl111sf_init()
956 __func__, state->tv.model); in mxl111sf_init()
1037 stream->type = USB_BULK; in mxl111sf_stream_config_bulk()
1038 stream->count = 5; in mxl111sf_stream_config_bulk()
1039 stream->endpoint = endpoint; in mxl111sf_stream_config_bulk()
1040 stream->u.bulk.buffersize = 8192; in mxl111sf_stream_config_bulk()
1048 stream->type = USB_ISOC; in mxl111sf_stream_config_isoc()
1049 stream->count = 5; in mxl111sf_stream_config_isoc()
1050 stream->endpoint = endpoint; in mxl111sf_stream_config_isoc()
1051 stream->u.isoc.framesperurb = framesperurb; in mxl111sf_stream_config_isoc()
1052 stream->u.isoc.framesize = framesize; in mxl111sf_stream_config_isoc()
1053 stream->u.isoc.interval = 1; in mxl111sf_stream_config_isoc()
1065 pr_debug("%s: fe=%d\n", __func__, fe->id); in mxl111sf_get_stream_config_dvbt()
1077 struct mxl111sf_state *state = d_to_priv(dev); in mxl111sf_probe() local
1079 mutex_init(&state->msg_lock); in mxl111sf_probe()
1115 pr_debug("%s: fe=%d\n", __func__, fe->id); in mxl111sf_get_stream_config_atsc()
1157 pr_debug("%s: fe=%d\n", __func__, fe->id); in mxl111sf_get_stream_config_mh()
1199 pr_debug("%s: fe=%d\n", __func__, fe->id); in mxl111sf_get_stream_config_atsc_mh()
1201 if (fe->id == 0) { in mxl111sf_get_stream_config_atsc_mh()
1207 } else if (fe->id == 1) { in mxl111sf_get_stream_config_atsc_mh()
1213 } else if (fe->id == 2) { in mxl111sf_get_stream_config_atsc_mh()
1225 pr_debug("%s: fe=%d onoff=%d\n", __func__, fe->id, onoff); in mxl111sf_streaming_ctrl_atsc_mh()
1227 if (fe->id == 0) in mxl111sf_streaming_ctrl_atsc_mh()
1229 else if (fe->id == 1) in mxl111sf_streaming_ctrl_atsc_mh()
1231 else if (fe->id == 2) in mxl111sf_streaming_ctrl_atsc_mh()
1270 pr_debug("%s: fe=%d\n", __func__, fe->id); in mxl111sf_get_stream_config_mercury()
1272 if (fe->id == 0) { in mxl111sf_get_stream_config_mercury()
1278 } else if (fe->id == 1) { in mxl111sf_get_stream_config_mercury()
1284 } else if (fe->id == 2 && dvb_usb_mxl111sf_spi) { in mxl111sf_get_stream_config_mercury()
1290 } else if (fe->id == 2 && !dvb_usb_mxl111sf_spi) { in mxl111sf_get_stream_config_mercury()
1302 pr_debug("%s: fe=%d onoff=%d\n", __func__, fe->id, onoff); in mxl111sf_streaming_ctrl_mercury()
1304 if (fe->id == 0) in mxl111sf_streaming_ctrl_mercury()
1306 else if (fe->id == 1) in mxl111sf_streaming_ctrl_mercury()
1308 else if (fe->id == 2 && dvb_usb_mxl111sf_spi) in mxl111sf_streaming_ctrl_mercury()
1310 else if (fe->id == 2 && !dvb_usb_mxl111sf_spi) in mxl111sf_streaming_ctrl_mercury()
1349 pr_debug("%s: fe=%d\n", __func__, fe->id); in mxl111sf_get_stream_config_mercury_mh()
1351 if (fe->id == 0) { in mxl111sf_get_stream_config_mercury_mh()
1357 } else if (fe->id == 1 && dvb_usb_mxl111sf_spi) { in mxl111sf_get_stream_config_mercury_mh()
1363 } else if (fe->id == 1 && !dvb_usb_mxl111sf_spi) { in mxl111sf_get_stream_config_mercury_mh()
1375 pr_debug("%s: fe=%d onoff=%d\n", __func__, fe->id, onoff); in mxl111sf_streaming_ctrl_mercury_mh()
1377 if (fe->id == 0) in mxl111sf_streaming_ctrl_mercury_mh()
1379 else if (fe->id == 1 && dvb_usb_mxl111sf_spi) in mxl111sf_streaming_ctrl_mercury_mh()
1381 else if (fe->id == 1 && !dvb_usb_mxl111sf_spi) in mxl111sf_streaming_ctrl_mercury_mh()
1441 …{ DVB_USB_DEVICE(USB_VID_HAUPPAUGE, 0xc613, &mxl111sf_props_mercury, "Hauppauge WinTV-Aero-M", NUL…
1443 …{ DVB_USB_DEVICE(USB_VID_HAUPPAUGE, 0xc61b, &mxl111sf_props_mercury, "Hauppauge WinTV-Aero-M", NUL…