kern/102549: Pixelview PlayTV Pro 2 and bktr

George imitheos at hotmail.com
Sat Aug 26 23:10:27 UTC 2006


>Number:         102549
>Category:       kern
>Synopsis:       Pixelview PlayTV Pro 2 and bktr
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Aug 26 23:10:18 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     George
>Release:        7.0-Current
>Organization:
>Environment:
FreeBSD hostname 7.0-CURRENT FreeBSD 7.0-CURRENT #4: Fri Aug 25
14:58:22 EEST 2006     root at hostname:/usr/obj/usr/src/sys/hostname amd64

>Description:
I have a Prolink Pixelview PlayTV Pro 2 card which didn't work with the bktr
driver. I made some changes to the bktr driver which i include and now it works.

If i use the normal driver then everything works fine. i can watch tv with fxtv
fine (xawtv runs but segfaults when i try to change channel)

bktr0: <BrookTree 878> mem 0xcfffe000-0xcfffefff irq 21 at device 10.0 on pci1
bktr0: [GIANT-LOCKED]
bktr0: PixelView PlayTV Pro 2 , Ymec TVision TVF-5533MF tuner.
pci1: <multimedia> at device 10.1 (no driver attached)

If i use the "new smbus" interface then the system boots fine but when i
run fxtv the system crashes.

bktr0: <BrookTree 878> mem 0xcfffe000-0xcfffefff irq 21 at device 10.0 on pci1
bktr0: [GIANT-LOCKED]
smbus0: <System Management Bus> on bktr0
smb0: <SMBus generic I/O> on smbus0
iicbb0: <I2C bit-banging driver> on bktr0
iicbus0: <Philips I2C bus> on iicbb0 master-only
ic0 on iicbus0
iicsmb0: <SMBus over I2C bridge> on iicbus0
smbus1: <System Management Bus> on iicsmb0
smb1: <SMBus generic I/O> on smbus1
bktr0: PixelView PlayTV Pro 2 .
pci1: <multimedia> at device 10.1 (no driver attached)


>How-To-Repeat:
Use the above card with the bktr driver.
>Fix:
# Inserted 2 more cards to the list
# In linux my card (Prolink PixelView PlayTV Pro 2) works with both
# definitions although they have different mux values. I don't know why
# so i added both (Maybe the bktr maintainer will know why)
# I cross-checked the "audio MUX values" from existing bktr card with
# the linux driver and copied accordingly
# First = tv, Fourth = mute, Five = always 1
# I don't know if it is right, but both definitions work fine with my
# card.


--- bktr_card.c.orig    Fri Aug 25 11:17:43 2006
+++ bktr_card.c Fri Aug 25 11:18:02 2006
@@ -415,6 +415,30 @@
           0,                                   /* EEProm size */
           { 0x01, 0x04, 0x01, 0x03, 1 },       /* audio MUX values */
           0x00ffffff },
+
+       {  CARD_PIXELVIEW_PLAYTV_PRO_2,         /* the card id */
+          "PixelView PlayTV Pro 2 ",           /* the 'name' */
+          NULL,                                /* the tuner */
+          0,                                   /* the tuner i2c address */
+          0,                                   /* dbx is optional */
+          0,
+          0,
+          0,                                   /* EEProm type */
+          0,                                   /* EEProm size */
+          { 0x00, 0x0a, 0x07, 0x0c, 1 },       /* audio MUX values */
+          0x0f },
+
+       {  CARD_PIXELVIEW_PLAYTV_MPEG2,         /* the card id */
+          "PixelView PlayTV MPEG2 ",           /* the 'name' */
+          NULL,                                /* the tuner */
+          0,                                   /* the tuner i2c address */
+          0,                                   /* dbx is optional */
+          0,
+          0,
+          0,                                   /* EEProm type */
+          0,                                   /* EEProm size */
+          { 0x21, 0x24, 0x2c, 0x29, 1 },       /* audio MUX values */
+          0x3f },
 };
 
 struct bt848_card_sig bt848_card_signature[1]= {

# Add the card definitions and increase the max card number

--- bktr_card.h.orig    Fri Aug 25 11:18:11 2006
+++ bktr_card.h Fri Aug 25 11:18:26 2006
@@ -82,7 +82,9 @@
 #define CARD_PIXELVIEW_PLAYTV_PAK      20
 #define CARD_TERRATVALUE       21
 #define        CARD_PIXELVIEW_PLAYTV_PRO_REV_4C        22
-#define Bt848_MAX_CARD         23
+#define        CARD_PIXELVIEW_PLAYTV_PRO_2     23
+#define        CARD_PIXELVIEW_PLAYTV_MPEG2     24
+#define Bt848_MAX_CARD         25
  
 #define CARD_IO_GV             CARD_IO_BCTV2
 

# Change bandLimits from char to int so that band change crosspoint can be
# added. NetBSD code has it as int also, so i guess the char->int change
# doesn't have any ill side-effects

--- bktr_reg.h.orig     Fri Aug 25 11:34:00 2006
+++ bktr_reg.h  Fri Aug 25 11:34:10 2006
@@ -401,7 +401,7 @@
        char*           name;
        u_char          type;
        u_char          pllControl[4];
-       u_char          bandLimits[ 2 ];
+       u_int           bandLimits[ 2 ];
        u_char          bandAddrs[ 4 ];        /* 3 first for the 3 TV 
                                               ** bands. Last for radio 
                                               ** band (0x00=NoRadio).

# Added band-switch crosspoints (copied from the linux driver)
# Also inserted a new tuner definition because none of the existing ones
# worked with my tuner. Practically it is the same definition with the
# Temic PAL tuner but with changed switch values. I guess TSA552x is the
# right flags because they give 8e which the tuner uses.
# It also has a radio so i added TSA552x_RADIO, but i couldn't make it
# work. I believe it has a newer chipset than the MSP one. But the
# TV part works fine.

--- bktr_tuner.c.orig   Fri Aug 25 12:34:26 2006
+++ bktr_tuner.c        Fri Aug 25 11:54:12 2006
@@ -157,7 +157,7 @@
             TSA552x_SCONTROL,
             TSA552x_SCONTROL,
             0x00 },
-          { 0x00, 0x00},                       /* band-switch crosspoints */
+          { 157, 463 },                        /* band-switch crosspoints */
           { 0x02, 0x04, 0x01, 0x00 } },        /* the band-switch values */
 
        /* TEMIC_PAL */
@@ -167,7 +167,7 @@
             TSA552x_SCONTROL,
             TSA552x_SCONTROL,
             0x00 },
-          { 0x00, 0x00},                       /* band-switch crosspoints */
+          { 140, 463 },                        /* band-switch crosspoints */
           { 0x02, 0x04, 0x01, 0x00 } },        /* the band-switch values */
 
        /* TEMIC_SECAM */
@@ -187,7 +187,7 @@
             TSA552x_SCONTROL,
             TSA552x_SCONTROL,
             0x00 },
-          { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 157, 451 },                        /* band-switch crosspoints */
           { 0xa0, 0x90, 0x30, 0x00 } },        /* the band-switch values */
 
        /* PHILIPS_PAL */
@@ -197,7 +197,7 @@
             TSA552x_SCONTROL,
             TSA552x_SCONTROL,
             0x00 },
-          { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 168, 447 },                        /* band-switch crosspoints */
           { 0xa0, 0x90, 0x30, 0x00 } },        /* the band-switch values */
 
        /* PHILIPS_SECAM */
@@ -207,7 +207,7 @@
             TSA552x_SCONTROL,
             TSA552x_SCONTROL,
             0x00 },
-          { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 168, 447 },                        /* band-switch crosspoints */
           { 0xa7, 0x97, 0x37, 0x00 } },        /* the band-switch values */
 
        /* TEMIC_PAL I */
@@ -217,7 +217,7 @@
             TSA552x_SCONTROL,
             TSA552x_SCONTROL,
             0x00 },
-          { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 170, 450 },                        /* band-switch crosspoints */
           { 0x02, 0x04, 0x01,0x00 } },         /* the band-switch values */
 
        /* PHILIPS_PALI */
@@ -227,7 +227,7 @@
             TSA552x_SCONTROL,
             TSA552x_SCONTROL,
             0x00 },
-          { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 140, 463 },                        /* band-switch crosspoints */
           { 0xa0, 0x90, 0x30,0x00 } },         /* the band-switch values */
 
        /* PHILIPS_FR1236_NTSC */
@@ -237,7 +237,7 @@
            TSA552x_FCONTROL,
            TSA552x_FCONTROL,
            TSA552x_RADIO  },
-          { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 160, 453 },                        /* band-switch crosspoints */
          { 0xa0, 0x90, 0x30,0xa4 } },          /* the band-switch values */
 
        /* PHILIPS_FR1216_PAL */
@@ -247,7 +247,7 @@
             TSA552x_FCONTROL,
             TSA552x_FCONTROL,
             TSA552x_RADIO },
-          { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 168, 447 },                        /* band-switch crosspoints */
           { 0xa0, 0x90, 0x30, 0xa4 } },        /* the band-switch values */
 
        /* PHILIPS_FR1236_SECAM */
@@ -267,7 +267,7 @@
              TSCH5_FCONTROL,
              TSCH5_FCONTROL,
              TSCH5_RADIO },
-           { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 137, 385 },                        /* band-switch crosspoints */
            { 0x14, 0x12, 0x11, 0x04 } },        /* the band-switch values */
 
         /* ALPS TSBH1 NTSC */
@@ -277,7 +277,7 @@
              TSBH1_FCONTROL,
              TSBH1_FCONTROL,
              0x00 },
-           { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 137, 385 },                        /* band-switch crosspoints */
            { 0x01, 0x02, 0x08, 0x00 } },        /* the band-switch values */
 
        /* MT2032 Microtune */
@@ -297,8 +297,19 @@
             TSA552x_SCONTROL,
             TSA552x_SCONTROL,
             0x00 },
-          { 0x00, 0x00 },                      /* band-switch crosspoints */
+          { 170, 450 },                        /* band-switch crosspoints */
           { 0xa0, 0x90, 0x30, 0x8e } },        /* the band-switch values */
+
+        /* YMEC_TVF_5533 */
+         /* Same characteristics as many Philips and Tena */
+        { "Ymec TVision TVF-5533MF" ,          /* the 'name' */
+          TTYPE_PAL,                           /* input type */
+          { TSA552x_FCONTROL,                  /* control byte for Tuner PLL */
+            TSA552x_FCONTROL,
+            TSA552x_FCONTROL,
+            TSA552x_RADIO },
+          { 160, 454 },                        /* band-switch crosspoints */
+          { 0x01, 0x02, 0x04, 0x08 } },        /* the band-switch values */
 };
 
 
--- bktr_tuner.h.orig   Fri Aug 25 11:43:29 2006
+++ bktr_tuner.h        Fri Aug 25 11:43:51 2006
@@ -61,7 +61,8 @@
 #define ALPS_TSBH1             13
 #define TUNER_MT2032           14
 #define        LG_TPI8PSB12P_PAL       15
-#define Bt848_MAX_TUNER                16
+#define YMEC_TVF_5533          16
+#define Bt848_MAX_TUNER                17
 
 /* experimental code for Automatic Frequency Control */ 
 #define TUNER_AFC

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list