[media] rtl28xxu: bind fc2580 using I2C binding
authorAntti Palosaari <crope@iki.fi>
Tue, 14 Apr 2015 22:55:51 +0000 (19:55 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 18 May 2015 18:45:55 +0000 (15:45 -0300)
Change fc2580 driver from media binding to I2C client binding.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/usb/dvb-usb-v2/rtl28xxu.c

index bcd7e0f4e978bfab40e8db511e78076bbda06e25..3ff4362585df895b876ab20e6bb17e10ae02dc14 100644 (file)
@@ -1100,11 +1100,6 @@ err:
        return ret;
 }
 
-static const struct fc2580_config rtl2832u_fc2580_config = {
-       .i2c_addr = 0x56,
-       .clock = 16384000,
-};
-
 static struct tua9001_config rtl2832u_tua9001_config = {
        .i2c_addr = 0x60,
 };
@@ -1187,10 +1182,26 @@ static int rtl2832u_tuner_attach(struct dvb_usb_adapter *adap)
                        subdev = i2c_get_clientdata(client);
                }
                break;
-       case TUNER_RTL2832_FC2580:
-               fe = dvb_attach(fc2580_attach, adap->fe[0],
-                               dev->demod_i2c_adapter,
-                               &rtl2832u_fc2580_config);
+       case TUNER_RTL2832_FC2580: {
+                       struct fc2580_platform_data fc2580_pdata = {
+                               .dvb_frontend = adap->fe[0],
+                       };
+                       struct i2c_board_info board_info = {};
+
+                       strlcpy(board_info.type, "fc2580", I2C_NAME_SIZE);
+                       board_info.addr = 0x56;
+                       board_info.platform_data = &fc2580_pdata;
+                       request_module("fc2580");
+                       client = i2c_new_device(dev->demod_i2c_adapter,
+                                               &board_info);
+                       if (client == NULL || client->dev.driver == NULL)
+                               break;
+                       if (!try_module_get(client->dev.driver->owner)) {
+                               i2c_unregister_device(client);
+                               break;
+                       }
+                       dev->i2c_client_tuner = client;
+               }
                break;
        case TUNER_RTL2832_TUA9001:
                /* enable GPIO1 and GPIO4 as output */