From 5add9a6f3c90680f89b4694e81025d2aed9559af Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Thu, 22 Nov 2007 12:08:53 -0300 Subject: [PATCH] V4L/DVB (6659): Convert MTS to bitfield Xc2028.3028 has two type of firmwares: audio-standard specific ones and baseband MTS firmwares. MTS firmwares provide stereo decoding for 6 MHz BTSC/EIAJ and for monoaural audio decoding on 8 MHz firmwares. It seems that the option to use MTS or a standard-specific audio decoding depends on the way xc2028/3028 is connected. Instead of wasting 32 (or 64 bits) to signalize if the driver needs to use MTS firmware, this patch converts it to a bitfield that can be shared with other proprieties of xc2028/3028. Signed-off-by: Mauro Carvalho Chehab --- drivers/media/dvb/dvb-usb/cxusb.c | 1 - drivers/media/video/em28xx/em28xx-cards.c | 4 ++-- drivers/media/video/em28xx/em28xx.h | 2 +- drivers/media/video/tuner-xc2028.c | 2 +- drivers/media/video/tuner-xc2028.h | 9 ++------- 5 files changed, 6 insertions(+), 12 deletions(-) diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c index deeb3871a2aa..c58365005ac1 100644 --- a/drivers/media/dvb/dvb-usb/cxusb.c +++ b/drivers/media/dvb/dvb-usb/cxusb.c @@ -513,7 +513,6 @@ static int cxusb_dvico_xc3028_tuner_attach(struct dvb_usb_adapter *adap) .callback = dvico_bluebird_xc2028_callback, }; static struct xc2028_ctrl ctl = { - .type = XC2028_FIRM_NORMAL, .fname = "xc3028-dvico-au-01.fw", .max_len = 64, .scode_table = ZARLINK456, diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index c40b9d9b3070..29e935f41098 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c @@ -154,7 +154,7 @@ struct em28xx_board em28xx_boards[] = { .tda9887_conf = TDA9887_PRESENT, .tuner_type = TUNER_XC2028, .has_tuner = 1, - .xc2028_type = XC2028_FIRM_MTS, + .mts_firmware = 1, .decoder = EM28XX_TVP5150, .input = {{ .type = EM28XX_VMUX_TELEVISION, @@ -476,7 +476,7 @@ static void em28xx_config_tuner (struct em28xx *dev) ctl.fname = XC2028_DEFAULT_FIRMWARE; ctl.max_len = 64; - ctl.type = em28xx_boards[dev->model].xc2028_type; + ctl.mts = em28xx_boards[dev->model].mts_firmware; xc2028_cfg.tuner = TUNER_XC2028; xc2028_cfg.priv = &ctl; diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h index db82b51c85ff..93007cc72f4d 100644 --- a/drivers/media/video/em28xx/em28xx.h +++ b/drivers/media/video/em28xx/em28xx.h @@ -176,9 +176,9 @@ struct em28xx_board { unsigned int has_tuner:1; unsigned int has_msp34xx:1; + unsigned int mts_firmware:1; enum em28xx_decoder decoder; - int xc2028_type; struct em28xx_input input[MAX_EM28XX_INPUT]; }; diff --git a/drivers/media/video/tuner-xc2028.c b/drivers/media/video/tuner-xc2028.c index 8fa3ab76fd5c..6a6642ea48ce 100644 --- a/drivers/media/video/tuner-xc2028.c +++ b/drivers/media/video/tuner-xc2028.c @@ -631,7 +631,7 @@ static int check_firmware(struct dvb_frontend *fe, enum tuner_mode new_mode, return rc; } - if (priv->ctrl.type == XC2028_FIRM_MTS) + if (priv->ctrl.mts) type |= MTS; if (bandwidth == BANDWIDTH_7_MHZ || bandwidth == BANDWIDTH_8_MHZ) type |= F8MHZ; diff --git a/drivers/media/video/tuner-xc2028.h b/drivers/media/video/tuner-xc2028.h index 16259b14ce90..f24fb2a00f6f 100644 --- a/drivers/media/video/tuner-xc2028.h +++ b/drivers/media/video/tuner-xc2028.h @@ -11,17 +11,12 @@ #define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw" -enum xc2028_firm_type { - XC2028_FIRM_NORMAL, - XC2028_FIRM_MTS, -}; - struct xc2028_ctrl { - enum xc2028_firm_type type; char *fname; int max_len; - int d2633:1; unsigned int scode_table; + unsigned int mts :1; + unsigned int d2633:1; }; struct xc2028_config {