diff options
-rw-r--r-- | drivers/media/dvb/dvb-core/dvb_frontend.c | 13 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-core/dvb_frontend.h | 8 |
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c index 7ea79dffa97..001804744d4 100644 --- a/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb/dvb-core/dvb_frontend.c | |||
@@ -1252,6 +1252,19 @@ static void dtv_set_default_delivery_caps(const struct dvb_frontend *fe, struct | |||
1252 | const struct dvb_frontend_info *info = &fe->ops.info; | 1252 | const struct dvb_frontend_info *info = &fe->ops.info; |
1253 | u32 ncaps = 0; | 1253 | u32 ncaps = 0; |
1254 | 1254 | ||
1255 | /* | ||
1256 | * If the frontend explicitly sets a list, use it, instead of | ||
1257 | * filling based on the info->type | ||
1258 | */ | ||
1259 | if (fe->ops.delsys[ncaps]) { | ||
1260 | while (fe->ops.delsys[ncaps] && ncaps < MAX_DELSYS) { | ||
1261 | p->u.buffer.data[ncaps] = fe->ops.delsys[ncaps]; | ||
1262 | ncaps++; | ||
1263 | } | ||
1264 | p->u.buffer.len = ncaps; | ||
1265 | return; | ||
1266 | } | ||
1267 | |||
1255 | switch (info->type) { | 1268 | switch (info->type) { |
1256 | case FE_QPSK: | 1269 | case FE_QPSK: |
1257 | p->u.buffer.data[ncaps++] = SYS_DVBS; | 1270 | p->u.buffer.data[ncaps++] = SYS_DVBS; |
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h index 895f88f06f5..95f2134a162 100644 --- a/drivers/media/dvb/dvb-core/dvb_frontend.h +++ b/drivers/media/dvb/dvb-core/dvb_frontend.h | |||
@@ -42,6 +42,12 @@ | |||
42 | 42 | ||
43 | #include "dvbdev.h" | 43 | #include "dvbdev.h" |
44 | 44 | ||
45 | /* | ||
46 | * Maximum number of Delivery systems per frontend. It | ||
47 | * should be smaller or equal to 32 | ||
48 | */ | ||
49 | #define MAX_DELSYS 8 | ||
50 | |||
45 | struct dvb_frontend_tune_settings { | 51 | struct dvb_frontend_tune_settings { |
46 | int min_delay_ms; | 52 | int min_delay_ms; |
47 | int step_size; | 53 | int step_size; |
@@ -254,6 +260,8 @@ struct dvb_frontend_ops { | |||
254 | 260 | ||
255 | struct dvb_frontend_info info; | 261 | struct dvb_frontend_info info; |
256 | 262 | ||
263 | u8 delsys[MAX_DELSYS]; | ||
264 | |||
257 | void (*release)(struct dvb_frontend* fe); | 265 | void (*release)(struct dvb_frontend* fe); |
258 | void (*release_sec)(struct dvb_frontend* fe); | 266 | void (*release_sec)(struct dvb_frontend* fe); |
259 | 267 | ||