Re: [PATCH V3 2/2] Add support for the Avermedia TD310

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jose,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.0 next-20190306]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Jose-Alberto-Reguero/init-i2c-already-in-it930x_frontend_attach/20190308-055354
base:   git://linuxtv.org/media_tree.git master
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 8.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=8.2.0 make.cross ARCH=xtensa 

All errors (new ones prefixed by >>):

   drivers/media/usb/dvb-usb-v2/af9035.c: In function 'af9035_read_config':
>> drivers/media/usb/dvb-usb-v2/af9035.c:877:54: error: 'USB_PID_AVERMEDIA_TD310' undeclared (first use in this function); did you mean 'USB_PID_AVERMEDIA_TD110'?
          (le16_to_cpu(d->udev->descriptor.idProduct) == USB_PID_AVERMEDIA_TD310)) {
                                                         ^~~~~~~~~~~~~~~~~~~~~~~
                                                         USB_PID_AVERMEDIA_TD110
   drivers/media/usb/dvb-usb-v2/af9035.c:877:54: note: each undeclared identifier is reported only once for each function it appears in
   In file included from drivers/media/usb/dvb-usb-v2/af9035.h:26,
                    from drivers/media/usb/dvb-usb-v2/af9035.c:22:
   drivers/media/usb/dvb-usb-v2/af9035.c: At top level:
>> drivers/media/usb/dvb-usb-v2/af9035.c:2137:38: error: 'USB_PID_AVERMEDIA_TD310' undeclared here (not in a function); did you mean 'USB_PID_AVERMEDIA_TD110'?
     { DVB_USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_TD310,
                                         ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/usb/dvb-usb-v2/dvb_usb.h:105:16: note: in definition of macro 'DVB_USB_DEVICE'
     .idProduct = (prod), \
                   ^~~~

vim +877 drivers/media/usb/dvb-usb-v2/af9035.c

   833	
   834	static int af9035_read_config(struct dvb_usb_device *d)
   835	{
   836		struct usb_interface *intf = d->intf;
   837		struct state *state = d_to_priv(d);
   838		int ret, i;
   839		u8 tmp;
   840		u16 tmp16;
   841	
   842		/* Demod I2C address */
   843		state->af9033_i2c_addr[0] = 0x1c;
   844		state->af9033_i2c_addr[1] = 0x1d;
   845		state->af9033_config[0].adc_multiplier = AF9033_ADC_MULTIPLIER_2X;
   846		state->af9033_config[1].adc_multiplier = AF9033_ADC_MULTIPLIER_2X;
   847		state->af9033_config[0].ts_mode = AF9033_TS_MODE_USB;
   848		state->af9033_config[1].ts_mode = AF9033_TS_MODE_SERIAL;
   849		state->it930x_addresses = 0;
   850	
   851		if (state->chip_type == 0x9135) {
   852			/* feed clock for integrated RF tuner */
   853			state->af9033_config[0].dyn0_clk = true;
   854			state->af9033_config[1].dyn0_clk = true;
   855	
   856			if (state->chip_version == 0x02) {
   857				state->af9033_config[0].tuner = AF9033_TUNER_IT9135_60;
   858				state->af9033_config[1].tuner = AF9033_TUNER_IT9135_60;
   859			} else {
   860				state->af9033_config[0].tuner = AF9033_TUNER_IT9135_38;
   861				state->af9033_config[1].tuner = AF9033_TUNER_IT9135_38;
   862			}
   863	
   864			if (state->no_eeprom) {
   865				/* Remote controller to NEC polling by default */
   866				state->ir_mode = 0x05;
   867				state->ir_type = 0x00;
   868	
   869				goto skip_eeprom;
   870			}
   871		} else if (state->chip_type == 0x9306) {
   872			/*
   873			 * IT930x is an USB bridge, only single demod-single tuner
   874			 * configurations seen so far.
   875			 */
   876			if ((le16_to_cpu(d->udev->descriptor.idVendor) == USB_VID_AVERMEDIA) &&
 > 877			    (le16_to_cpu(d->udev->descriptor.idProduct) == USB_PID_AVERMEDIA_TD310)) {
   878				state->it930x_addresses = 1;
   879			}
   880			return 0;
   881		}
   882	
   883		/* Remote controller */
   884		state->ir_mode = state->eeprom[EEPROM_IR_MODE];
   885		state->ir_type = state->eeprom[EEPROM_IR_TYPE];
   886	
   887		if (state->dual_mode) {
   888			/* Read 2nd demodulator I2C address. 8-bit format on eeprom */
   889			tmp = state->eeprom[EEPROM_2ND_DEMOD_ADDR];
   890			if (tmp)
   891				state->af9033_i2c_addr[1] = tmp >> 1;
   892	
   893			dev_dbg(&intf->dev, "2nd demod I2C addr=%02x\n",
   894				state->af9033_i2c_addr[1]);
   895		}
   896	
   897		for (i = 0; i < state->dual_mode + 1; i++) {
   898			unsigned int eeprom_offset = 0;
   899	
   900			/* tuner */
   901			tmp = state->eeprom[EEPROM_1_TUNER_ID + eeprom_offset];
   902			dev_dbg(&intf->dev, "[%d]tuner=%02x\n", i, tmp);
   903	
   904			/* tuner sanity check */
   905			if (state->chip_type == 0x9135) {
   906				if (state->chip_version == 0x02) {
   907					/* IT9135 BX (v2) */
   908					switch (tmp) {
   909					case AF9033_TUNER_IT9135_60:
   910					case AF9033_TUNER_IT9135_61:
   911					case AF9033_TUNER_IT9135_62:
   912						state->af9033_config[i].tuner = tmp;
   913						break;
   914					}
   915				} else {
   916					/* IT9135 AX (v1) */
   917					switch (tmp) {
   918					case AF9033_TUNER_IT9135_38:
   919					case AF9033_TUNER_IT9135_51:
   920					case AF9033_TUNER_IT9135_52:
   921						state->af9033_config[i].tuner = tmp;
   922						break;
   923					}
   924				}
   925			} else {
   926				/* AF9035 */
   927				state->af9033_config[i].tuner = tmp;
   928			}
   929	
   930			if (state->af9033_config[i].tuner != tmp) {
   931				dev_info(&intf->dev, "[%d] overriding tuner from %02x to %02x\n",
   932					 i, tmp, state->af9033_config[i].tuner);
   933			}
   934	
   935			switch (state->af9033_config[i].tuner) {
   936			case AF9033_TUNER_TUA9001:
   937			case AF9033_TUNER_FC0011:
   938			case AF9033_TUNER_MXL5007T:
   939			case AF9033_TUNER_TDA18218:
   940			case AF9033_TUNER_FC2580:
   941			case AF9033_TUNER_FC0012:
   942				state->af9033_config[i].spec_inv = 1;
   943				break;
   944			case AF9033_TUNER_IT9135_38:
   945			case AF9033_TUNER_IT9135_51:
   946			case AF9033_TUNER_IT9135_52:
   947			case AF9033_TUNER_IT9135_60:
   948			case AF9033_TUNER_IT9135_61:
   949			case AF9033_TUNER_IT9135_62:
   950				break;
   951			default:
   952				dev_warn(&intf->dev, "tuner id=%02x not supported, please report!",
   953					 tmp);
   954			}
   955	
   956			/* disable dual mode if driver does not support it */
   957			if (i == 1)
   958				switch (state->af9033_config[i].tuner) {
   959				case AF9033_TUNER_FC0012:
   960				case AF9033_TUNER_IT9135_38:
   961				case AF9033_TUNER_IT9135_51:
   962				case AF9033_TUNER_IT9135_52:
   963				case AF9033_TUNER_IT9135_60:
   964				case AF9033_TUNER_IT9135_61:
   965				case AF9033_TUNER_IT9135_62:
   966				case AF9033_TUNER_MXL5007T:
   967					break;
   968				default:
   969					state->dual_mode = false;
   970					dev_info(&intf->dev, "driver does not support 2nd tuner and will disable it");
   971			}
   972	
   973			/* tuner IF frequency */
   974			tmp = state->eeprom[EEPROM_1_IF_L + eeprom_offset];
   975			tmp16 = tmp << 0;
   976			tmp = state->eeprom[EEPROM_1_IF_H + eeprom_offset];
   977			tmp16 |= tmp << 8;
   978			dev_dbg(&intf->dev, "[%d]IF=%d\n", i, tmp16);
   979	
   980			eeprom_offset += 0x10; /* shift for the 2nd tuner params */
   981		}
   982	
   983	skip_eeprom:
   984		/* get demod clock */
   985		ret = af9035_rd_reg(d, 0x00d800, &tmp);
   986		if (ret < 0)
   987			goto err;
   988	
   989		tmp = (tmp >> 0) & 0x0f;
   990	
   991		for (i = 0; i < ARRAY_SIZE(state->af9033_config); i++) {
   992			if (state->chip_type == 0x9135)
   993				state->af9033_config[i].clock = clock_lut_it9135[tmp];
   994			else
   995				state->af9033_config[i].clock = clock_lut_af9035[tmp];
   996		}
   997	
   998		state->no_read = false;
   999		/* Some MXL5007T devices cannot properly handle tuner I2C read ops. */
  1000		if (state->af9033_config[0].tuner == AF9033_TUNER_MXL5007T &&
  1001			le16_to_cpu(d->udev->descriptor.idVendor) == USB_VID_AVERMEDIA)
  1002	
  1003			switch (le16_to_cpu(d->udev->descriptor.idProduct)) {
  1004			case USB_PID_AVERMEDIA_A867:
  1005			case USB_PID_AVERMEDIA_TWINSTAR:
  1006				dev_info(&intf->dev,
  1007					 "Device may have issues with I2C read operations. Enabling fix.\n");
  1008				state->no_read = true;
  1009				break;
  1010			}
  1011	
  1012		return 0;
  1013	
  1014	err:
  1015		dev_dbg(&intf->dev, "failed=%d\n", ret);
  1016	
  1017		return ret;
  1018	}
  1019	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux