5353#define DW2102_FIRMWARE "dvb-usb-dw2102.fw"
5454#define DW2104_FIRMWARE "dvb-usb-dw2104.fw"
5555#define DW3101_FIRMWARE "dvb-usb-dw3101.fw"
56- #define S630_FIRMWARE "dvb-usb-s630.fw"
57- #define S660_FIRMWARE "dvb-usb-s660.fw"
58- #define P1100_FIRMWARE "dvb-usb-p1100.fw"
59- #define P7500_FIRMWARE "dvb-usb-p7500.fw"
56+ #define S630_FIRMWARE "dvb-usb-s630.fw"
57+ #define S660_FIRMWARE "dvb-usb-s660.fw"
58+ #define P1100_FIRMWARE "dvb-usb-p1100.fw"
59+ #define P7500_FIRMWARE "dvb-usb-p7500.fw"
6060
6161#define err_str "did not find the firmware file '%s'. You can use <kernel_dir>/scripts/get_dvb_firmware to get the firmware"
6262
@@ -87,7 +87,7 @@ MODULE_PARM_DESC(demod, "demod to probe (1=cx24116 2=stv0903+stv6110 4=stv0903+s
8787DVB_DEFINE_MOD_OPT_ADAPTER_NR (adapter_nr );
8888
8989static int dw210x_op_rw (struct usb_device * dev , u8 request , u16 value ,
90- u16 index , u8 * data , u16 len , int flags )
90+ u16 index , u8 * data , u16 len , int flags )
9191{
9292 int ret ;
9393 u8 * u8buf ;
@@ -103,7 +103,7 @@ static int dw210x_op_rw(struct usb_device *dev, u8 request, u16 value,
103103 if (flags == DW210X_WRITE_MSG )
104104 memcpy (u8buf , data , len );
105105 ret = usb_control_msg (dev , pipe , request , request_type | USB_TYPE_VENDOR ,
106- value , index , u8buf , len , 2000 );
106+ value , index , u8buf , len , 2000 );
107107
108108 if (flags == DW210X_READ_MSG )
109109 memcpy (data , u8buf , len );
@@ -322,7 +322,7 @@ static int dw2102_earda_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg ms
322322 dw210x_op_rw (d -> udev , 0xc2 , 0 , 0 ,
323323 obuf , msg [0 ].len + 2 , DW210X_WRITE_MSG );
324324 /* second read registers */
325- dw210x_op_rw (d -> udev , 0xc3 , 0xd1 , 0 ,
325+ dw210x_op_rw (d -> udev , 0xc3 , 0xd1 , 0 ,
326326 ibuf , msg [1 ].len + 2 , DW210X_READ_MSG );
327327 memcpy (msg [1 ].buf , ibuf + 2 , msg [1 ].len );
328328
@@ -368,13 +368,15 @@ static int dw2102_earda_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg ms
368368 }
369369 case (DW2102_RC_QUERY ): {
370370 u8 ibuf [2 ];
371+
371372 dw210x_op_rw (d -> udev , 0xb8 , 0 , 0 ,
372373 ibuf , 2 , DW210X_READ_MSG );
373- memcpy (msg [0 ].buf , ibuf , 2 );
374+ memcpy (msg [0 ].buf , ibuf , 2 );
374375 break ;
375376 }
376377 case (DW2102_VOLTAGE_CTRL ): {
377378 u8 obuf [2 ];
379+
378380 obuf [0 ] = 0x30 ;
379381 obuf [1 ] = msg [0 ].buf [0 ];
380382 dw210x_op_rw (d -> udev , 0xb2 , 0 , 0 ,
@@ -406,23 +408,26 @@ static int dw2104_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], i
406408 switch (msg [j ].addr ) {
407409 case (DW2102_RC_QUERY ): {
408410 u8 ibuf [2 ];
411+
409412 dw210x_op_rw (d -> udev , 0xb8 , 0 , 0 ,
410413 ibuf , 2 , DW210X_READ_MSG );
411- memcpy (msg [j ].buf , ibuf , 2 );
414+ memcpy (msg [j ].buf , ibuf , 2 );
412415 break ;
413416 }
414417 case (DW2102_VOLTAGE_CTRL ): {
415418 u8 obuf [2 ];
419+
416420 obuf [0 ] = 0x30 ;
417421 obuf [1 ] = msg [j ].buf [0 ];
418422 dw210x_op_rw (d -> udev , 0xb2 , 0 , 0 ,
419423 obuf , 2 , DW210X_WRITE_MSG );
420424 break ;
421425 }
422- /*case 0x55: cx24116
423- case 0x6a: stv0903
424- case 0x68: ds3000, stv0903
425- case 0x60: ts2020, stv6110, stb6100 */
426+ /* case 0x55: cx24116
427+ * case 0x6a: stv0903
428+ * case 0x68: ds3000, stv0903
429+ * case 0x60: ts2020, stv6110, stb6100
430+ */
426431 default : {
427432 if (msg [j ].flags == I2C_M_RD ) {
428433 /* read registers */
@@ -447,6 +452,7 @@ static int dw2104_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], i
447452 (msg [j ].addr == 0x55 ))) {
448453 /* write firmware */
449454 u8 obuf [19 ];
455+
450456 obuf [0 ] = msg [j ].addr << 1 ;
451457 obuf [1 ] = (msg [j ].len > 15 ? 17 : msg [j ].len );
452458 obuf [2 ] = msg [j ].buf [0 ];
@@ -527,7 +533,7 @@ static int dw3101_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],
527533 dw210x_op_rw (d -> udev , 0xc2 , 0 , 0 ,
528534 obuf , msg [0 ].len + 2 , DW210X_WRITE_MSG );
529535 /* second read registers */
530- dw210x_op_rw (d -> udev , 0xc3 , 0x19 , 0 ,
536+ dw210x_op_rw (d -> udev , 0xc3 , 0x19 , 0 ,
531537 ibuf , msg [1 ].len + 2 , DW210X_READ_MSG );
532538 memcpy (msg [1 ].buf , ibuf + 2 , msg [1 ].len );
533539
@@ -555,9 +561,10 @@ static int dw3101_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],
555561 }
556562 case (DW2102_RC_QUERY ): {
557563 u8 ibuf [2 ];
564+
558565 dw210x_op_rw (d -> udev , 0xb8 , 0 , 0 ,
559566 ibuf , 2 , DW210X_READ_MSG );
560- memcpy (msg [0 ].buf , ibuf , 2 );
567+ memcpy (msg [0 ].buf , ibuf , 2 );
561568 break ;
562569 }
563570 }
@@ -594,6 +601,7 @@ static int s6x0_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],
594601 switch (msg [j ].addr ) {
595602 case (DW2102_RC_QUERY ): {
596603 u8 ibuf [5 ];
604+
597605 dw210x_op_rw (d -> udev , 0xb8 , 0 , 0 ,
598606 ibuf , 5 , DW210X_READ_MSG );
599607 memcpy (msg [j ].buf , ibuf + 3 , 2 );
@@ -621,11 +629,12 @@ static int s6x0_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],
621629 obuf , 2 , DW210X_WRITE_MSG );
622630 break ;
623631 }
624- /*case 0x55: cx24116
625- case 0x6a: stv0903
626- case 0x68: ds3000, stv0903, rs2000
627- case 0x60: ts2020, stv6110, stb6100
628- case 0xa0: eeprom */
632+ /* case 0x55: cx24116
633+ * case 0x6a: stv0903
634+ * case 0x68: ds3000, stv0903, rs2000
635+ * case 0x60: ts2020, stv6110, stb6100
636+ * case 0xa0: eeprom
637+ */
629638 default : {
630639 if (msg [j ].flags == I2C_M_RD ) {
631640 /* read registers */
@@ -647,6 +656,7 @@ static int s6x0_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],
647656 (msg [j ].addr == 0x68 )) {
648657 /* write firmware */
649658 u8 obuf [19 ];
659+
650660 obuf [0 ] = (msg [j ].len > 16 ?
651661 18 : msg [j ].len + 1 );
652662 obuf [1 ] = msg [j ].addr << 1 ;
@@ -1009,8 +1019,6 @@ static int su3000_identify_state(struct usb_device *udev,
10091019 const struct dvb_usb_device_description * * desc ,
10101020 int * cold )
10111021{
1012- info ("%s" , __func__ );
1013-
10141022 * cold = 0 ;
10151023 return 0 ;
10161024}
@@ -1366,7 +1374,7 @@ static int stv0288_frontend_attach(struct dvb_usb_adapter *d)
13661374 if (d -> fe_adap [0 ].fe == NULL )
13671375 return - EIO ;
13681376
1369- if (NULL == dvb_attach (stb6000_attach , d -> fe_adap [0 ].fe , 0x61 , & d -> dev -> i2c_adap ))
1377+ if (dvb_attach (stb6000_attach , d -> fe_adap [0 ].fe , 0x61 , & d -> dev -> i2c_adap ) == NULL )
13701378 return - EIO ;
13711379
13721380 d -> fe_adap [0 ].fe -> ops .set_voltage = dw210x_set_voltage ;
@@ -1903,7 +1911,7 @@ static int dw2102_load_firmware(struct usb_device *dev,
19031911 memcpy (p , fw -> data , fw -> size );
19041912 for (i = 0 ; i < fw -> size ; i += 0x40 ) {
19051913 b = (u8 * ) p + i ;
1906- if (dw210x_op_rw (dev , 0xa0 , i , 0 , b , 0x40 ,
1914+ if (dw210x_op_rw (dev , 0xa0 , i , 0 , b , 0x40 ,
19071915 DW210X_WRITE_MSG ) != 0x40 ) {
19081916 err ("error while transferring firmware" );
19091917 ret = - EINVAL ;
@@ -1950,19 +1958,18 @@ static int dw2102_load_firmware(struct usb_device *dev,
19501958 dw2102_properties .i2c_algo = & dw2102_i2c_algo ;
19511959 dw2102_properties .adapter -> fe [0 ].tuner_attach = & dw2102_tuner_attach ;
19521960 break ;
1953- } else {
1954- /* check STV0288 frontend */
1955- reset16 [0 ] = 0xd0 ;
1956- reset16 [1 ] = 1 ;
1957- reset16 [2 ] = 0 ;
1958- dw210x_op_rw (dev , 0xc2 , 0 , 0 , & reset16 [0 ], 3 ,
1959- DW210X_WRITE_MSG );
1960- dw210x_op_rw (dev , 0xc3 , 0xd1 , 0 , & reset16 [0 ], 3 ,
1961- DW210X_READ_MSG );
1962- if (reset16 [2 ] == 0x11 ) {
1963- dw2102_properties .i2c_algo = & dw2102_earda_i2c_algo ;
1964- break ;
1965- }
1961+ }
1962+ /* check STV0288 frontend */
1963+ reset16 [0 ] = 0xd0 ;
1964+ reset16 [1 ] = 1 ;
1965+ reset16 [2 ] = 0 ;
1966+ dw210x_op_rw (dev , 0xc2 , 0 , 0 , & reset16 [0 ], 3 ,
1967+ DW210X_WRITE_MSG );
1968+ dw210x_op_rw (dev , 0xc3 , 0xd1 , 0 , & reset16 [0 ], 3 ,
1969+ DW210X_READ_MSG );
1970+ if (reset16 [2 ] == 0x11 ) {
1971+ dw2102_properties .i2c_algo = & dw2102_earda_i2c_algo ;
1972+ break ;
19661973 }
19671974 fallthrough ;
19681975 case 0x2101 :
@@ -2589,15 +2596,15 @@ static int dw2102_probe(struct usb_interface *intf,
25892596 const struct usb_device_id * id )
25902597{
25912598 if (!(dvb_usb_device_init (intf , & dw2102_properties ,
2592- THIS_MODULE , NULL , adapter_nr ) &&
2599+ THIS_MODULE , NULL , adapter_nr ) &&
25932600 dvb_usb_device_init (intf , & dw2104_properties ,
25942601 THIS_MODULE , NULL , adapter_nr ) &&
25952602 dvb_usb_device_init (intf , & dw3101_properties ,
2596- THIS_MODULE , NULL , adapter_nr ) &&
2603+ THIS_MODULE , NULL , adapter_nr ) &&
25972604 dvb_usb_device_init (intf , & s6x0_properties ,
2598- THIS_MODULE , NULL , adapter_nr ) &&
2605+ THIS_MODULE , NULL , adapter_nr ) &&
25992606 dvb_usb_device_init (intf , & p1100_properties ,
2600- THIS_MODULE , NULL , adapter_nr ) &&
2607+ THIS_MODULE , NULL , adapter_nr ) &&
26012608 dvb_usb_device_init (intf , & s660_properties ,
26022609 THIS_MODULE , NULL , adapter_nr ) &&
26032610 dvb_usb_device_init (intf , & p7500_properties ,
0 commit comments