diff --git a/sys/dev/bktr/bktr_core.c b/sys/dev/bktr/bktr_core.c index 255059d74d7a..1a1f71c309c3 100644 --- a/sys/dev/bktr/bktr_core.c +++ b/sys/dev/bktr/bktr_core.c @@ -1,4 +1,4 @@ -/* BT848 1.33 Driver for Brooktree's Bt848 based cards. +/* BT848 1.35 Driver for Brooktree's Bt848 based cards. The Brooktree BT848 Driver driver is based upon Mark Tinguely and Jim Lowe's driver for the Matrox Meteor PCI card . The Philips SAA 7116 and SAA 7196 are very different chipsets than @@ -247,6 +247,19 @@ tuner takes a value from 0 to bt848_max_tuner reverse_mute : 0 no effect, 1 reverse tuner mute function some tuners are wired reversed :( +1.34 reverse mute function for ims turbo card + +1.35 Roger Hardiman <roger@cs.strath.ac.uk> + options BROOKTREE_SYSTEM_DEFAULT=BROOKTREE_PAL + in the kernel config file makes the driver's + video_open() function select PAL rather than NTSC. + This fixed all the hangs on my Dual Crystal card + when using a PAL video signal. As a result, you + can loose the tsleep (of 2 seconds - now 0.25!!) + which I previously added. (Unless someone else + wanted the 0.25 second tsleep). + + */ #define DDB(x) x @@ -931,7 +944,7 @@ static const struct CARDTYPE cards[] = { 0, PFC8582_WADDR, /* EEProm type */ (u_char)(256 / EEPROMBLOCKSIZE), /* 256 bytes */ - { 0x00, 0x02, 0x01, 0x01, 1 } } /* audio MUX values */ + { 0x01, 0x02, 0x01, 0x00, 1 } } /* audio MUX values */ }; struct bt848_card_sig bt848_card_signature[1]= { @@ -1533,6 +1546,7 @@ static int video_open( bktr_ptr_t bktr ) { bt848_ptr_t bt848; + int frame_rate; if (bktr->flags & METEOR_OPEN) /* device is busy */ return( EBUSY ); @@ -1550,6 +1564,24 @@ video_open( bktr_ptr_t bktr ) bt848->dstatus = 0x00; /* clear device status reg. */ bt848->adc = SYNC_LEVEL; + +#if BROOKTREE_SYSTEM_DEFAULT == BROOKTREE_PAL + bt848->iform = BT848_IFORM_M_MUX1 | + BT848_IFORM_X_XT1 | + BT848_IFORM_F_PALBDGHI; + bt848->adelay = format_params[BT848_IFORM_F_PALBDGHI].adelay; + bt848->bdelay = format_params[BT848_IFORM_F_PALBDGHI].bdelay; + bktr->format_params = BT848_IFORM_F_PALBDGHI; + frame_rate = 25; +#else + bt848->iform = BT848_IFORM_M_MUX1 | + BT848_IFORM_X_XT0 | + BT848_IFORM_F_NTSCM; + bktr->format_params = BT848_IFORM_F_NTSCM; + frame_rate = 30; +#endif + + bt848->iform = BT848_IFORM_M_MUX1 | BT848_IFORM_X_XT0 | BT848_IFORM_F_NTSCM; @@ -1581,7 +1613,7 @@ video_open( bktr_ptr_t bktr ) bktr->even_fields_captured = 0; bktr->odd_fields_captured = 0; bktr->proc = (struct proc *)0; - set_fps(bktr, 30); + set_fps(bktr, frame_rate); bktr->video.addr = 0; bktr->video.width = 0; bktr->video.banksize = 0; @@ -1593,9 +1625,6 @@ video_open( bktr_ptr_t bktr ) bt848->int_mask = BT848_INT_MYSTERYBIT; /* what does this bit do ??? */ - /* wait .25 seconds while bt848 initialises */ - tsleep( (caddr_t)bktr, PZERO, "btinit", hz/4 ); - return( 0 ); } diff --git a/sys/pci/brooktree848.c b/sys/pci/brooktree848.c index 255059d74d7a..1a1f71c309c3 100644 --- a/sys/pci/brooktree848.c +++ b/sys/pci/brooktree848.c @@ -1,4 +1,4 @@ -/* BT848 1.33 Driver for Brooktree's Bt848 based cards. +/* BT848 1.35 Driver for Brooktree's Bt848 based cards. The Brooktree BT848 Driver driver is based upon Mark Tinguely and Jim Lowe's driver for the Matrox Meteor PCI card . The Philips SAA 7116 and SAA 7196 are very different chipsets than @@ -247,6 +247,19 @@ tuner takes a value from 0 to bt848_max_tuner reverse_mute : 0 no effect, 1 reverse tuner mute function some tuners are wired reversed :( +1.34 reverse mute function for ims turbo card + +1.35 Roger Hardiman <roger@cs.strath.ac.uk> + options BROOKTREE_SYSTEM_DEFAULT=BROOKTREE_PAL + in the kernel config file makes the driver's + video_open() function select PAL rather than NTSC. + This fixed all the hangs on my Dual Crystal card + when using a PAL video signal. As a result, you + can loose the tsleep (of 2 seconds - now 0.25!!) + which I previously added. (Unless someone else + wanted the 0.25 second tsleep). + + */ #define DDB(x) x @@ -931,7 +944,7 @@ static const struct CARDTYPE cards[] = { 0, PFC8582_WADDR, /* EEProm type */ (u_char)(256 / EEPROMBLOCKSIZE), /* 256 bytes */ - { 0x00, 0x02, 0x01, 0x01, 1 } } /* audio MUX values */ + { 0x01, 0x02, 0x01, 0x00, 1 } } /* audio MUX values */ }; struct bt848_card_sig bt848_card_signature[1]= { @@ -1533,6 +1546,7 @@ static int video_open( bktr_ptr_t bktr ) { bt848_ptr_t bt848; + int frame_rate; if (bktr->flags & METEOR_OPEN) /* device is busy */ return( EBUSY ); @@ -1550,6 +1564,24 @@ video_open( bktr_ptr_t bktr ) bt848->dstatus = 0x00; /* clear device status reg. */ bt848->adc = SYNC_LEVEL; + +#if BROOKTREE_SYSTEM_DEFAULT == BROOKTREE_PAL + bt848->iform = BT848_IFORM_M_MUX1 | + BT848_IFORM_X_XT1 | + BT848_IFORM_F_PALBDGHI; + bt848->adelay = format_params[BT848_IFORM_F_PALBDGHI].adelay; + bt848->bdelay = format_params[BT848_IFORM_F_PALBDGHI].bdelay; + bktr->format_params = BT848_IFORM_F_PALBDGHI; + frame_rate = 25; +#else + bt848->iform = BT848_IFORM_M_MUX1 | + BT848_IFORM_X_XT0 | + BT848_IFORM_F_NTSCM; + bktr->format_params = BT848_IFORM_F_NTSCM; + frame_rate = 30; +#endif + + bt848->iform = BT848_IFORM_M_MUX1 | BT848_IFORM_X_XT0 | BT848_IFORM_F_NTSCM; @@ -1581,7 +1613,7 @@ video_open( bktr_ptr_t bktr ) bktr->even_fields_captured = 0; bktr->odd_fields_captured = 0; bktr->proc = (struct proc *)0; - set_fps(bktr, 30); + set_fps(bktr, frame_rate); bktr->video.addr = 0; bktr->video.width = 0; bktr->video.banksize = 0; @@ -1593,9 +1625,6 @@ video_open( bktr_ptr_t bktr ) bt848->int_mask = BT848_INT_MYSTERYBIT; /* what does this bit do ??? */ - /* wait .25 seconds while bt848 initialises */ - tsleep( (caddr_t)bktr, PZERO, "btinit", hz/4 ); - return( 0 ); }