diff options
author | Antti Palosaari <crope@iki.fi> | 2011-06-18 09:24:53 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-07-27 16:55:58 -0400 |
commit | 713d9b5d98c78a4c48eaa172e2b35b40056cb4f4 (patch) | |
tree | d132ba467f5bd8176a6281059a476888fa728a21 | |
parent | 3509cbdface46cf39908124580a2a3b35f7e2783 (diff) |
[media] af9015: remove 2nd I2C-adapter
It is useless. There is only one physical I2C-adapter.
2nd adapter was added originally due to some plans for allowing only one
demod to access bus at time. But I never implemented proper locking...
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/dvb/dvb-usb/af9015.c | 94 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/af9015.h | 1 |
2 files changed, 19 insertions, 76 deletions
diff --git a/drivers/media/dvb/dvb-usb/af9015.c b/drivers/media/dvb/dvb-usb/af9015.c index 7ad4ed8de8b2..be6306b48a5d 100644 --- a/drivers/media/dvb/dvb-usb/af9015.c +++ b/drivers/media/dvb/dvb-usb/af9015.c | |||
@@ -1089,44 +1089,11 @@ error: | |||
1089 | return ret; | 1089 | return ret; |
1090 | } | 1090 | } |
1091 | 1091 | ||
1092 | /* init 2nd I2C adapter */ | ||
1093 | static int af9015_i2c_init(struct dvb_usb_device *d) | ||
1094 | { | ||
1095 | int ret; | ||
1096 | struct af9015_state *state = d->priv; | ||
1097 | deb_info("%s:\n", __func__); | ||
1098 | |||
1099 | strncpy(state->i2c_adap.name, d->desc->name, | ||
1100 | sizeof(state->i2c_adap.name)); | ||
1101 | state->i2c_adap.algo = d->props.i2c_algo; | ||
1102 | state->i2c_adap.algo_data = NULL; | ||
1103 | state->i2c_adap.dev.parent = &d->udev->dev; | ||
1104 | |||
1105 | i2c_set_adapdata(&state->i2c_adap, d); | ||
1106 | |||
1107 | ret = i2c_add_adapter(&state->i2c_adap); | ||
1108 | if (ret < 0) | ||
1109 | err("could not add i2c adapter"); | ||
1110 | |||
1111 | return ret; | ||
1112 | } | ||
1113 | |||
1114 | static int af9015_af9013_frontend_attach(struct dvb_usb_adapter *adap) | 1092 | static int af9015_af9013_frontend_attach(struct dvb_usb_adapter *adap) |
1115 | { | 1093 | { |
1116 | int ret; | 1094 | int ret; |
1117 | struct af9015_state *state = adap->dev->priv; | ||
1118 | struct i2c_adapter *i2c_adap; | ||
1119 | |||
1120 | if (adap->id == 0) { | ||
1121 | /* select I2C adapter */ | ||
1122 | i2c_adap = &adap->dev->i2c_adap; | ||
1123 | |||
1124 | deb_info("%s: init I2C\n", __func__); | ||
1125 | ret = af9015_i2c_init(adap->dev); | ||
1126 | } else { | ||
1127 | /* select I2C adapter */ | ||
1128 | i2c_adap = &state->i2c_adap; | ||
1129 | 1095 | ||
1096 | if (adap->id == 1) { | ||
1130 | /* copy firmware to 2nd demodulator */ | 1097 | /* copy firmware to 2nd demodulator */ |
1131 | if (af9015_config.dual_mode) { | 1098 | if (af9015_config.dual_mode) { |
1132 | ret = af9015_copy_firmware(adap->dev); | 1099 | ret = af9015_copy_firmware(adap->dev); |
@@ -1143,7 +1110,7 @@ static int af9015_af9013_frontend_attach(struct dvb_usb_adapter *adap) | |||
1143 | 1110 | ||
1144 | /* attach demodulator */ | 1111 | /* attach demodulator */ |
1145 | adap->fe = dvb_attach(af9013_attach, &af9015_af9013_config[adap->id], | 1112 | adap->fe = dvb_attach(af9013_attach, &af9015_af9013_config[adap->id], |
1146 | i2c_adap); | 1113 | &adap->dev->i2c_adap); |
1147 | 1114 | ||
1148 | return adap->fe == NULL ? -ENODEV : 0; | 1115 | return adap->fe == NULL ? -ENODEV : 0; |
1149 | } | 1116 | } |
@@ -1213,57 +1180,56 @@ static struct mxl5007t_config af9015_mxl5007t_config = { | |||
1213 | 1180 | ||
1214 | static int af9015_tuner_attach(struct dvb_usb_adapter *adap) | 1181 | static int af9015_tuner_attach(struct dvb_usb_adapter *adap) |
1215 | { | 1182 | { |
1216 | struct af9015_state *state = adap->dev->priv; | ||
1217 | struct i2c_adapter *i2c_adap; | ||
1218 | int ret; | 1183 | int ret; |
1219 | deb_info("%s:\n", __func__); | 1184 | deb_info("%s:\n", __func__); |
1220 | 1185 | ||
1221 | /* select I2C adapter */ | ||
1222 | if (adap->id == 0) | ||
1223 | i2c_adap = &adap->dev->i2c_adap; | ||
1224 | else | ||
1225 | i2c_adap = &state->i2c_adap; | ||
1226 | |||
1227 | switch (af9015_af9013_config[adap->id].tuner) { | 1186 | switch (af9015_af9013_config[adap->id].tuner) { |
1228 | case AF9013_TUNER_MT2060: | 1187 | case AF9013_TUNER_MT2060: |
1229 | case AF9013_TUNER_MT2060_2: | 1188 | case AF9013_TUNER_MT2060_2: |
1230 | ret = dvb_attach(mt2060_attach, adap->fe, i2c_adap, | 1189 | ret = dvb_attach(mt2060_attach, adap->fe, &adap->dev->i2c_adap, |
1231 | &af9015_mt2060_config, | 1190 | &af9015_mt2060_config, |
1232 | af9015_config.mt2060_if1[adap->id]) | 1191 | af9015_config.mt2060_if1[adap->id]) |
1233 | == NULL ? -ENODEV : 0; | 1192 | == NULL ? -ENODEV : 0; |
1234 | break; | 1193 | break; |
1235 | case AF9013_TUNER_QT1010: | 1194 | case AF9013_TUNER_QT1010: |
1236 | case AF9013_TUNER_QT1010A: | 1195 | case AF9013_TUNER_QT1010A: |
1237 | ret = dvb_attach(qt1010_attach, adap->fe, i2c_adap, | 1196 | ret = dvb_attach(qt1010_attach, adap->fe, &adap->dev->i2c_adap, |
1238 | &af9015_qt1010_config) == NULL ? -ENODEV : 0; | 1197 | &af9015_qt1010_config) == NULL ? -ENODEV : 0; |
1239 | break; | 1198 | break; |
1240 | case AF9013_TUNER_TDA18271: | 1199 | case AF9013_TUNER_TDA18271: |
1241 | ret = dvb_attach(tda18271_attach, adap->fe, 0xc0, i2c_adap, | 1200 | ret = dvb_attach(tda18271_attach, adap->fe, 0xc0, |
1201 | &adap->dev->i2c_adap, | ||
1242 | &af9015_tda18271_config) == NULL ? -ENODEV : 0; | 1202 | &af9015_tda18271_config) == NULL ? -ENODEV : 0; |
1243 | break; | 1203 | break; |
1244 | case AF9013_TUNER_TDA18218: | 1204 | case AF9013_TUNER_TDA18218: |
1245 | ret = dvb_attach(tda18218_attach, adap->fe, i2c_adap, | 1205 | ret = dvb_attach(tda18218_attach, adap->fe, |
1206 | &adap->dev->i2c_adap, | ||
1246 | &af9015_tda18218_config) == NULL ? -ENODEV : 0; | 1207 | &af9015_tda18218_config) == NULL ? -ENODEV : 0; |
1247 | break; | 1208 | break; |
1248 | case AF9013_TUNER_MXL5003D: | 1209 | case AF9013_TUNER_MXL5003D: |
1249 | ret = dvb_attach(mxl5005s_attach, adap->fe, i2c_adap, | 1210 | ret = dvb_attach(mxl5005s_attach, adap->fe, |
1211 | &adap->dev->i2c_adap, | ||
1250 | &af9015_mxl5003_config) == NULL ? -ENODEV : 0; | 1212 | &af9015_mxl5003_config) == NULL ? -ENODEV : 0; |
1251 | break; | 1213 | break; |
1252 | case AF9013_TUNER_MXL5005D: | 1214 | case AF9013_TUNER_MXL5005D: |
1253 | case AF9013_TUNER_MXL5005R: | 1215 | case AF9013_TUNER_MXL5005R: |
1254 | ret = dvb_attach(mxl5005s_attach, adap->fe, i2c_adap, | 1216 | ret = dvb_attach(mxl5005s_attach, adap->fe, |
1217 | &adap->dev->i2c_adap, | ||
1255 | &af9015_mxl5005_config) == NULL ? -ENODEV : 0; | 1218 | &af9015_mxl5005_config) == NULL ? -ENODEV : 0; |
1256 | break; | 1219 | break; |
1257 | case AF9013_TUNER_ENV77H11D5: | 1220 | case AF9013_TUNER_ENV77H11D5: |
1258 | ret = dvb_attach(dvb_pll_attach, adap->fe, 0xc0, i2c_adap, | 1221 | ret = dvb_attach(dvb_pll_attach, adap->fe, 0xc0, |
1222 | &adap->dev->i2c_adap, | ||
1259 | DVB_PLL_TDA665X) == NULL ? -ENODEV : 0; | 1223 | DVB_PLL_TDA665X) == NULL ? -ENODEV : 0; |
1260 | break; | 1224 | break; |
1261 | case AF9013_TUNER_MC44S803: | 1225 | case AF9013_TUNER_MC44S803: |
1262 | ret = dvb_attach(mc44s803_attach, adap->fe, i2c_adap, | 1226 | ret = dvb_attach(mc44s803_attach, adap->fe, |
1227 | &adap->dev->i2c_adap, | ||
1263 | &af9015_mc44s803_config) == NULL ? -ENODEV : 0; | 1228 | &af9015_mc44s803_config) == NULL ? -ENODEV : 0; |
1264 | break; | 1229 | break; |
1265 | case AF9013_TUNER_MXL5007T: | 1230 | case AF9013_TUNER_MXL5007T: |
1266 | ret = dvb_attach(mxl5007t_attach, adap->fe, i2c_adap, | 1231 | ret = dvb_attach(mxl5007t_attach, adap->fe, |
1232 | &adap->dev->i2c_adap, | ||
1267 | 0xc0, &af9015_mxl5007t_config) == NULL ? -ENODEV : 0; | 1233 | 0xc0, &af9015_mxl5007t_config) == NULL ? -ENODEV : 0; |
1268 | break; | 1234 | break; |
1269 | case AF9013_TUNER_UNKNOWN: | 1235 | case AF9013_TUNER_UNKNOWN: |
@@ -1711,33 +1677,11 @@ static int af9015_usb_probe(struct usb_interface *intf, | |||
1711 | return ret; | 1677 | return ret; |
1712 | } | 1678 | } |
1713 | 1679 | ||
1714 | static void af9015_i2c_exit(struct dvb_usb_device *d) | ||
1715 | { | ||
1716 | struct af9015_state *state = d->priv; | ||
1717 | deb_info("%s:\n", __func__); | ||
1718 | |||
1719 | /* remove 2nd I2C adapter */ | ||
1720 | if (d->state & DVB_USB_STATE_I2C) | ||
1721 | i2c_del_adapter(&state->i2c_adap); | ||
1722 | } | ||
1723 | |||
1724 | static void af9015_usb_device_exit(struct usb_interface *intf) | ||
1725 | { | ||
1726 | struct dvb_usb_device *d = usb_get_intfdata(intf); | ||
1727 | deb_info("%s:\n", __func__); | ||
1728 | |||
1729 | /* remove 2nd I2C adapter */ | ||
1730 | if (d != NULL && d->desc != NULL) | ||
1731 | af9015_i2c_exit(d); | ||
1732 | |||
1733 | dvb_usb_device_exit(intf); | ||
1734 | } | ||
1735 | |||
1736 | /* usb specific object needed to register this driver with the usb subsystem */ | 1680 | /* usb specific object needed to register this driver with the usb subsystem */ |
1737 | static struct usb_driver af9015_usb_driver = { | 1681 | static struct usb_driver af9015_usb_driver = { |
1738 | .name = "dvb_usb_af9015", | 1682 | .name = "dvb_usb_af9015", |
1739 | .probe = af9015_usb_probe, | 1683 | .probe = af9015_usb_probe, |
1740 | .disconnect = af9015_usb_device_exit, | 1684 | .disconnect = dvb_usb_device_exit, |
1741 | .id_table = af9015_usb_table, | 1685 | .id_table = af9015_usb_table, |
1742 | }; | 1686 | }; |
1743 | 1687 | ||
diff --git a/drivers/media/dvb/dvb-usb/af9015.h b/drivers/media/dvb/dvb-usb/af9015.h index beb3004f00ba..6252ea6c1904 100644 --- a/drivers/media/dvb/dvb-usb/af9015.h +++ b/drivers/media/dvb/dvb-usb/af9015.h | |||
@@ -99,7 +99,6 @@ enum af9015_ir_mode { | |||
99 | }; | 99 | }; |
100 | 100 | ||
101 | struct af9015_state { | 101 | struct af9015_state { |
102 | struct i2c_adapter i2c_adap; /* I2C adapter for 2nd FE */ | ||
103 | u8 rc_repeat; | 102 | u8 rc_repeat; |
104 | u32 rc_keycode; | 103 | u32 rc_keycode; |
105 | u8 rc_last[4]; | 104 | u8 rc_last[4]; |