[linux-dvb] 3 patches for Kernel 2.6.19-rc5

Uwe Bugla uwe.bugla at gmx.de
Tue Nov 14 17:47:48 CET 2006


Hi everybody,
I sent in the following three patches for three times now, and they are still not even part of the mm-tree.
The first one is a documentation fix synchronizing the current as-is-state of kernel compilation.
The second one makes a module called dvb-pll.c deselectable as it is completely absurd in the special case that you use a Pinnacle DVB-S card as the only card in your system.
The third one gets rid of two modules that are only needed by TwinHan DST cards and / or Pinnacle cards WITH CI slot. I owe a Pinnacle card without CI slot. In so far I defininitely DO NOT NEED those modules at all and I want so save RAM.
IN OTHER WORDS: The concept of a common backend called dvb-bt8xx.c for all bt8xx cards is definitely a REACTIONARY concept: Backend parts for the specific card should be selectable and deselectable as frontends like cx24110.c are selectable and deselectable at the current state of kernel development.

The first two patches do not hurt at all:
Number one (the documentation fix) helps linux rookies and beginners to get a clean kernel compiled without wasting time.
Number two (the dvb-pll.c one) saves RAM for two special cases:
a. the Pinnacle PCTVSAT (and maybe many many others too, which has got to be proven – I mentioned this fact already – in vain!) is the only one in the machine.
b. the Pinnacle PCTVSAT does not have a CI slot.

Number three hurts, as it wipes out support for all bt8xx cards that have a slot for conditional access: Examples: Pinnacle PCTVSAT CI and TwinHan DST.
BUT: If you do NOT owe a card with CI slot this third patch definitely helps you to save RAM! This patch hurts because I simply do not have an idea how to make it better so that it does not hurt. In so far I said NOT to take this up into vanilla, but leave it on the mailing list for users needing it. In vain!
So I simply followed two strategic lines:
a. offering clear and understandable documentation
b. offering two humble steps towards a far more progressive backend for bt8xx cards: ability to deselect parts of the code and thus saving RAM.
All three patches: Signed-Off-By: Uwe Bugla <uwe.bugla at gmx.de>
Functional description: please see above.

Number ONE:
--- a/Documentation/dvb/bt8xx.txt
+++ b/Documentation/dvb/bt8xx.txt
@@ -9,9 +9,15 @@
 Please see Documentation/dvb/cards.txt => o Cards based on the Conexant Bt8xx PCI bridge:
 
 Compiling kernel please enable:
-a.)"Device drivers" => "Multimedia devices" => "Video For Linux" => "BT848 Video For Linux"
+a.)"Device drivers" => "Multimedia devices" => "Video For Linux" => "Enable Video for Linux API 1 (DEPRECATED)"
-b.)"Device drivers" => "Multimedia devices" => "Digital Video Broadcasting Devices"
- => "DVB for Linux" "DVB Core Support" "Bt8xx based PCI Cards"
+b.)"Device drivers" => "Multimedia devices" => "Video For Linux" => "Video Capture Adapters" => "BT848 Video For Linux"
+c.)"Device drivers" => "Multimedia devices" => "Digital Video Broadcasting Devices"
+ => "DVB for Linux" "DVB Core Support" "Bt8xx based PCI Cards"
+
+Note: If you know the frontend driver that your specific card needs furthermore please enable:
+d.)"Device drivers" => "Multimedia devices" => "Digital Video Broadcasting Devices"
+ => "DVB for Linux" "DVB Core Support" "Customize DVB Frontends" => "Customize the frontend modules to build"
+ Then you can save memory by deselecting every frontend module your specific card does not need.
 
 2) Loading Modules
 ==================

Number TWO:
--- a/drivers/media/dvb/bt8xx/Kconfig
+++ b/drivers/media/dvb/bt8xx/Kconfig
@@ -1,7 +1,7 @@
 config DVB_BT8XX
     tristate "BT8xx based PCI cards"
     depends on DVB_CORE && PCI && I2C && VIDEO_BT848
-    select DVB_PLL
+    select DVB_PLL if !DVB_FE_CUSTOMISE
     select DVB_MT352 if !DVB_FE_CUSTOMISE
     select DVB_SP887X if !DVB_FE_CUSTOMISE
     select DVB_NXT6000 if !DVB_FE_CUSTOMISE
--- a/drivers/media/dvb/frontends/Kconfig
+++ b/drivers/media/dvb/frontends/Kconfig
@@ -264,8 +264,11 @@
     depends on DVB_CORE
 
 config DVB_PLL
-    tristate
+    tristate "PLL support for DVB tuners"
     depends on DVB_CORE && I2C
+    default m if !DVB_FE_CUSTOMISE
+    help
+      You can safely deselect this if you're only running a Pinnacle PCTV Sat DVB-S card.
 
 config DVB_TDA826X
     tristate "Philips TDA826X silicon tuner"

Number Three: (the destructive RAM saver!)
--- a/drivers/media/dvb/bt8xx/Makefile
+++ b/drivers/media/dvb/bt8xx/Makefile
@@ -1,3 +1,3 @@
-obj-$(CONFIG_DVB_BT8XX) += bt878.o dvb-bt8xx.o dst.o dst_ca.o
+obj-$(CONFIG_DVB_BT8XX) += bt878.o dvb-bt8xx.o
 
 EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ -Idrivers/media/video/bt8xx -Idrivers/media/dvb/frontends
--- a/drivers/media/dvb/bt8xx/dvb-bt8xx.c
+++ b/drivers/media/dvb/bt8xx/dvb-bt8xx.c
@@ -403,9 +403,6 @@
     .demod_init = advbt771_samsung_tdtc9251dh0_demod_init,
 };
 
-static struct dst_config dst_config = {
-    .demod_address = 0x55,
-};
 
 static int or51211_request_firmware(struct dvb_frontend* fe, const struct firmware **fw, char* name)
 {
@@ -568,34 +565,9 @@
     .demod_init = digitv_alps_tded4_demod_init,
 };
 
-static int tdvs_tua6034_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters* params)
-{
-    struct dvb_bt8xx_card *card = (struct dvb_bt8xx_card *) fe->dvb->priv;
-    return lg_h06xf_pll_set(fe, card->i2c_adapter, params);
-}
-
-static struct lgdt330x_config tdvs_tua6034_config = {
-    .demod_address    = 0x0e,
-    .demod_chip       = LGDT3303,
-    .serial_mpeg      = 0x40, /* TPSERIAL for 3303 in TOP_CONTROL */
-};
-
-static void lgdt330x_reset(struct dvb_bt8xx_card *bt)
-{
-    /* Set pin 27 of the lgdt3303 chip high to reset the frontend */
-
-    /* Pulse the reset line */
-    bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
-    bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000000); /* Low  */
-    msleep(100);
-
-    bttv_write_gpio(bt->bttv_nr, 0x00e00007, 0x00000001); /* High */
-    msleep(100);
-}
 
 static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
 {
-    struct dst_state* state = NULL;
 
     switch(type) {
     case BTTV_BOARD_DVICO_DVBT_LITE:
@@ -612,14 +584,6 @@
         }
         break;
 
-    case BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE:
-        lgdt330x_reset(card);
-        card->fe = dvb_attach(lgdt330x_attach, &tdvs_tua6034_config, card->i2c_adapter);
-        if (card->fe != NULL) {
-            card->fe->ops.tuner_ops.set_params = tdvs_tua6034_tuner_set_params;
-            dprintk ("dvb_bt8xx: lgdt330x detected\n");
-        }
-        break;
 
     case BTTV_BOARD_NEBULA_DIGITV:
         /*
@@ -662,29 +626,6 @@
         }
         break;
 
-    case BTTV_BOARD_TWINHAN_DST:
-        /*    DST is not a frontend driver !!!        */
-        state = (struct dst_state *) kmalloc(sizeof (struct dst_state), GFP_KERNEL);
-        if (!state) {
-            printk("dvb_bt8xx: No memory\n");
-            break;
-        }
-        /*    Setup the Card                    */
-        state->config = &dst_config;
-        state->i2c = card->i2c_adapter;
-        state->bt = card->bt;
-        state->dst_ca = NULL;
-        /*    DST is not a frontend, attaching the ASIC    */
-        if (dvb_attach(dst_attach, state, &card->dvb_adapter) == NULL) {
-            printk("%s: Could not find a Twinhan DST.\n", __FUNCTION__);
-            break;
-        }
-        /*    Attach other DST peripherals if any        */
-        /*    Conditional Access device            */
-        card->fe = &state->frontend;
-        if (state->dst_hw_cap & DST_TYPE_HAS_CA)
-            dvb_attach(dst_ca_attach, state, &card->dvb_adapter);
-        break;
 
     case BTTV_BOARD_PINNACLESAT:
         card->fe = dvb_attach(cx24110_attach, &pctvsat_config, card->i2c_adapter);
@@ -852,23 +797,6 @@
         /* A_PWRDN DA_SBR  DA_APP[0] PKTP=10 RISC_ENABLE FIFO_ENABLE*/
         break;
 
-    case BTTV_BOARD_TWINHAN_DST:
-        card->gpio_mode = 0x2204f2c;
-        card->op_sync_orin = BT878_RISC_SYNC_MASK;
-        card->irq_err_ignore = BT878_APABORT | BT878_ARIPERR |
-                       BT878_APPERR | BT878_AFBUS;
-        /* 25,21,14,11,10,9,8,3,2 then
-         * 0x33 = 5,4,1,0
-         * A_SEL=SML, DA_MLB, DA_SBR,
-         * DA_SDR=f, fifo trigger = 32 DWORDS
-         * IOM = 0 == audio A/D
-         * DPM = 0 == digital audio mode
-         * == async data parallel port
-         * then 0x33 (13 is set by start_capture)
-         * DA_APP = async data parallel port,
-         * ACAP_EN = 1,
-         * RISC+FIFO ENABLE */
-        break;
 
     case BTTV_BOARD_PC_HDTV:
         card->gpio_mode = 0x0100EC7B;

Cheers everybody
Uwe Bugla


-- 
Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! 
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer



More information about the linux-dvb mailing list