Message ID | A23F77AB-9546-4D74-8B1D-7360221CA6CF@telefonica.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [V3,1/2] init i2c already in it930x_frontend_attach | expand |
El 7 de marzo de 2019 23:38:47 CET, kbuild test robot <lkp@intel.com> escribió: >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: nds32-allyesconfig (attached as .config) >compiler: nds32le-linux-gcc (GCC) 6.4.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=6.4.0 make.cross ARCH=nds32 > >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) >(le16_to_cpu(d->udev->descriptor.idProduct) == >USB_PID_AVERMEDIA_TD310)) { > ^~~~~~~~~~~~~~~~~~~~~~~ I missed a part of the patch. I resend the series. Jose Alberto >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:0, > 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) > { 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 +/USB_PID_AVERMEDIA_TD310 +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
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
diff -upr linux/drivers/media/usb/dvb-usb-v2/af9035.c linux.new/drivers/media/usb/dvb-usb-v2/af9035.c --- linux/drivers/media/usb/dvb-usb-v2/af9035.c 2019-03-05 18:44:34.936077251 +0100 +++ linux.new/drivers/media/usb/dvb-usb-v2/af9035.c 2019-03-05 18:43:31.512806221 +0100 @@ -846,6 +846,7 @@ static int af9035_read_config(struct dvb state->af9033_config[1].adc_multiplier = AF9033_ADC_MULTIPLIER_2X; state->af9033_config[0].ts_mode = AF9033_TS_MODE_USB; state->af9033_config[1].ts_mode = AF9033_TS_MODE_SERIAL; + state->it930x_addresses = 0; if (state->chip_type == 0x9135) { /* feed clock for integrated RF tuner */ @@ -872,6 +873,10 @@ static int af9035_read_config(struct dvb * IT930x is an USB bridge, only single demod-single tuner * configurations seen so far. */ + if ((le16_to_cpu(d->udev->descriptor.idVendor) == USB_VID_AVERMEDIA) && + (le16_to_cpu(d->udev->descriptor.idProduct) == USB_PID_AVERMEDIA_TD310)) { + state->it930x_addresses = 1; + } return 0; } @@ -1267,8 +1272,9 @@ static int it930x_frontend_attach(struct state->af9033_config[adap->id].fe = &adap->fe[0]; state->af9033_config[adap->id].ops = &state->ops; - ret = af9035_add_i2c_dev(d, "si2168", 0x67, &si2168_config, - &d->i2c_adap); + ret = af9035_add_i2c_dev(d, "si2168", + it930x_addresses_table[state->it930x_addresses].frontend_i2c_addr, + &si2168_config, &d->i2c_adap); if (ret) goto err; @@ -1619,10 +1625,10 @@ static int it930x_tuner_attach(struct dv memset(&si2157_config, 0, sizeof(si2157_config)); si2157_config.fe = adap->fe[0]; - si2157_config.if_port = 1; - ret = af9035_add_i2c_dev(d, "si2157", 0x63, - &si2157_config, state->i2c_adapter_demod); - + si2157_config.if_port = it930x_addresses_table[state->it930x_addresses].tuner_if_port; + ret = af9035_add_i2c_dev(d, "si2157", + it930x_addresses_table[state->it930x_addresses].tuner_i2c_addr, + &si2157_config, state->i2c_adapter_demod); if (ret) goto err; @@ -2128,6 +2134,8 @@ static const struct usb_device_id af9035 /* IT930x devices */ { DVB_USB_DEVICE(USB_VID_ITETECH, USB_PID_ITETECH_IT9303, &it930x_props, "ITE 9303 Generic", NULL) }, + { DVB_USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_TD310, + &it930x_props, "AVerMedia TD310 DVB-T2", NULL) }, { } }; MODULE_DEVICE_TABLE(usb, af9035_id_table); diff -upr linux/drivers/media/usb/dvb-usb-v2/af9035.h linux.new/drivers/media/usb/dvb-usb-v2/af9035.h --- linux/drivers/media/usb/dvb-usb-v2/af9035.h 2017-02-01 06:41:13.000000000 +0100 +++ linux.new/drivers/media/usb/dvb-usb-v2/af9035.h 2019-03-05 18:19:31.450331996 +0100 @@ -69,6 +69,7 @@ struct state { u8 dual_mode:1; u8 no_read:1; u8 af9033_i2c_addr[2]; + u8 it930x_addresses; struct af9033_config af9033_config[2]; struct af9033_ops ops; #define AF9035_I2C_CLIENT_MAX 4 @@ -77,6 +78,17 @@ struct state { struct platform_device *platform_device_tuner[2]; }; +struct address_table { + u8 frontend_i2c_addr; + u8 tuner_i2c_addr; + u8 tuner_if_port; +}; + +static const struct address_table it930x_addresses_table[] = { + { 0x67, 0x63, 1 }, + { 0x64, 0x60, 0 }, +}; + static const u32 clock_lut_af9035[] = { 20480000, /* FPGA */ 16384000, /* 16.38 MHz */
This patch add support for Avermedia TD310 usb stick. V3 add a table for the i2c addresses an other needed options. Signed-off-by: Jose Alberto Reguero <jose.alberto.reguero@gmail.com>