diff options
author | Olivier Grenie <olivier.grenie@dibcom.fr> | 2009-09-15 05:55:35 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-09-18 23:14:11 -0400 |
commit | d300bd691464ffb87342e375793ac2418e66c3f3 (patch) | |
tree | 23d645595abb5562b09659112f6a48bf15dfc73c /drivers/media | |
parent | ef80196490d6533e74a49509112804aa88a21c6f (diff) |
V4L/DVB (12888): STK7770P: Add support for STK7770P
Added support for the dib7770P and the STK7770P
Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
Signed-off-by: Patrick Boettcher <patrick.boettcher@dibcom.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700_devices.c | 76 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 1 |
2 files changed, 77 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c index ec0dd255c0ec..dd0294e5ff58 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_devices.c +++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c | |||
@@ -1122,6 +1122,15 @@ static struct dib0070_config dib7070p_dib0070_config[2] = { | |||
1122 | } | 1122 | } |
1123 | }; | 1123 | }; |
1124 | 1124 | ||
1125 | static struct dib0070_config dib7770p_dib0070_config = { | ||
1126 | .i2c_address = DEFAULT_DIB0070_I2C_ADDRESS, | ||
1127 | .reset = dib7070_tuner_reset, | ||
1128 | .sleep = dib7070_tuner_sleep, | ||
1129 | .clock_khz = 12000, | ||
1130 | .clock_pad_drive = 0, | ||
1131 | .flip_chip = 1, | ||
1132 | }; | ||
1133 | |||
1125 | static int dib7070_set_param_override(struct dvb_frontend *fe, struct dvb_frontend_parameters *fep) | 1134 | static int dib7070_set_param_override(struct dvb_frontend *fe, struct dvb_frontend_parameters *fep) |
1126 | { | 1135 | { |
1127 | struct dvb_usb_adapter *adap = fe->dvb->priv; | 1136 | struct dvb_usb_adapter *adap = fe->dvb->priv; |
@@ -1139,6 +1148,45 @@ static int dib7070_set_param_override(struct dvb_frontend *fe, struct dvb_fronte | |||
1139 | return state->set_param_save(fe, fep); | 1148 | return state->set_param_save(fe, fep); |
1140 | } | 1149 | } |
1141 | 1150 | ||
1151 | static int dib7770_set_param_override(struct dvb_frontend *fe, | ||
1152 | struct dvb_frontend_parameters *fep) | ||
1153 | { | ||
1154 | struct dvb_usb_adapter *adap = fe->dvb->priv; | ||
1155 | struct dib0700_adapter_state *state = adap->priv; | ||
1156 | |||
1157 | u16 offset; | ||
1158 | u8 band = BAND_OF_FREQUENCY(fep->frequency/1000); | ||
1159 | switch (band) { | ||
1160 | case BAND_VHF: | ||
1161 | dib7000p_set_gpio(fe, 0, 0, 1); | ||
1162 | offset = 850; | ||
1163 | break; | ||
1164 | case BAND_UHF: | ||
1165 | default: | ||
1166 | dib7000p_set_gpio(fe, 0, 0, 0); | ||
1167 | offset = 250; | ||
1168 | break; | ||
1169 | } | ||
1170 | deb_info("WBD for DiB7000P: %d\n", offset + dib0070_wbd_offset(fe)); | ||
1171 | dib7000p_set_wbd_ref(fe, offset + dib0070_wbd_offset(fe)); | ||
1172 | return state->set_param_save(fe, fep); | ||
1173 | } | ||
1174 | |||
1175 | static int dib7770p_tuner_attach(struct dvb_usb_adapter *adap) | ||
1176 | { | ||
1177 | struct dib0700_adapter_state *st = adap->priv; | ||
1178 | struct i2c_adapter *tun_i2c = dib7000p_get_i2c_master(adap->fe, | ||
1179 | DIBX000_I2C_INTERFACE_TUNER, 1); | ||
1180 | |||
1181 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, | ||
1182 | &dib7770p_dib0070_config) == NULL) | ||
1183 | return -ENODEV; | ||
1184 | |||
1185 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | ||
1186 | adap->fe->ops.tuner_ops.set_params = dib7770_set_param_override; | ||
1187 | return 0; | ||
1188 | } | ||
1189 | |||
1142 | static int dib7070p_tuner_attach(struct dvb_usb_adapter *adap) | 1190 | static int dib7070p_tuner_attach(struct dvb_usb_adapter *adap) |
1143 | { | 1191 | { |
1144 | struct dib0700_adapter_state *st = adap->priv; | 1192 | struct dib0700_adapter_state *st = adap->priv; |
@@ -1504,6 +1552,7 @@ struct usb_device_id dib0700_usb_id_table[] = { | |||
1504 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73A) }, | 1552 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73A) }, |
1505 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73ESE) }, | 1553 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73ESE) }, |
1506 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV282E) }, | 1554 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV282E) }, |
1555 | { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK7770P) }, | ||
1507 | { 0 } /* Terminating entry */ | 1556 | { 0 } /* Terminating entry */ |
1508 | }; | 1557 | }; |
1509 | MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table); | 1558 | MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table); |
@@ -1965,6 +2014,33 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1965 | { NULL }, | 2014 | { NULL }, |
1966 | }, | 2015 | }, |
1967 | }, | 2016 | }, |
2017 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | ||
2018 | |||
2019 | .num_adapters = 1, | ||
2020 | .adapter = { | ||
2021 | { | ||
2022 | .frontend_attach = stk7070p_frontend_attach, | ||
2023 | .tuner_attach = dib7770p_tuner_attach, | ||
2024 | |||
2025 | DIB0700_DEFAULT_STREAMING_CONFIG(0x02), | ||
2026 | |||
2027 | .size_of_priv = | ||
2028 | sizeof(struct dib0700_adapter_state), | ||
2029 | }, | ||
2030 | }, | ||
2031 | |||
2032 | .num_device_descs = 1, | ||
2033 | .devices = { | ||
2034 | { "DiBcom STK7770P reference design", | ||
2035 | { &dib0700_usb_id_table[59], NULL }, | ||
2036 | { NULL }, | ||
2037 | }, | ||
2038 | }, | ||
2039 | |||
2040 | .rc_interval = DEFAULT_RC_INTERVAL, | ||
2041 | .rc_key_map = dib0700_rc_keys, | ||
2042 | .rc_key_map_size = ARRAY_SIZE(dib0700_rc_keys), | ||
2043 | .rc_query = dib0700_rc_query | ||
1968 | }, | 2044 | }, |
1969 | }; | 2045 | }; |
1970 | 2046 | ||
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h index eec5604dcdd0..a77d305e30d0 100644 --- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h +++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h | |||
@@ -96,6 +96,7 @@ | |||
96 | #define USB_PID_DIBCOM_STK7070P 0x1ebc | 96 | #define USB_PID_DIBCOM_STK7070P 0x1ebc |
97 | #define USB_PID_DIBCOM_STK7070PD 0x1ebe | 97 | #define USB_PID_DIBCOM_STK7070PD 0x1ebe |
98 | #define USB_PID_DIBCOM_ANCHOR_2135_COLD 0x2131 | 98 | #define USB_PID_DIBCOM_ANCHOR_2135_COLD 0x2131 |
99 | #define USB_PID_DIBCOM_STK7770P 0x1e80 | ||
99 | #define USB_PID_DPOSH_M9206_COLD 0x9206 | 100 | #define USB_PID_DPOSH_M9206_COLD 0x9206 |
100 | #define USB_PID_DPOSH_M9206_WARM 0xa090 | 101 | #define USB_PID_DPOSH_M9206_WARM 0xa090 |
101 | #define USB_PID_UNIWILL_STK7700P 0x6003 | 102 | #define USB_PID_UNIWILL_STK7700P 0x6003 |