Re: [PATCH] firedtv driver: support for PSK8 for S2 devices. To watch HD.

2010-09-15 Thread Stefan Richter
Tommy Jonsson wrote at linux-media:
 This is the first i have ever developed for linux, cant really wrap my
 head around how to submit this..
 Hope im sending this correctly, diff made with 'hg diff' from latest
 hg clone http://linuxtv.org/hg/v4l-dvb;
 
 It adds support for tuning with PSK8 modulation, pilot and rolloff
 with the S2 versions of firedtv.
 
 Signed-off-by: Tommy Jonsson quazz...@gmail.com
[...]

Excellent!  This has been on the wishlist of FireDTV/FloppyDTV-S2 owners for
quite some time.

The patch was a little bit mangled by the mail user agent, and there appear to
be some whitespace issues in it.  I will have a closer look at it later today
and repost the patch so that Mauro can apply it without manual intervention.
-- 
Stefan Richter
-=-==-=- =--= -
http://arcgraph.de/sr/
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] firedtv driver: support for PSK8 for S2 devices. To watch HD.

2010-09-15 Thread Stefan Richter
Tommy Jonsson wrote:
 --- a/linux/drivers/media/dvb/firewire/firedtv-avc.c  Fri Sep 03
 00:28:05 2010 -0300
 +++ b/linux/drivers/media/dvb/firewire/firedtv-avc.c  Sun Sep 12
 06:52:02 2010 +0200
[...]
 @@ -368,10 +369,30 @@
   c-operand[12] = 0;
 
   if (fdtv-type == FIREDTV_DVB_S2) {
 - c-operand[13] = 0x1;
 - c-operand[14] = 0xff;
 - c-operand[15] = 0xff;
 -
 + if (fe-dtv_property_cache.delivery_system == SYS_DVBS2) {
 + switch (fe-dtv_property_cache.modulation) {
 + case QAM_16:c-operand[13] = 0x1; break;
 + case QPSK:  c-operand[13] = 0x2; break;
 + case PSK_8: c-operand[13] = 0x3; break;
 + default:c-operand[13] = 0x2; break;
 + }
 + switch (fe-dtv_property_cache.rolloff) {
 + case ROLLOFF_AUTO:  c-operand[14] = 0x2; break;
 + case ROLLOFF_35:c-operand[14] = 0x2; break;
 + case ROLLOFF_20:c-operand[14] = 0x0; break;
 + case ROLLOFF_25:c-operand[14] = 0x1; break;
 + /* case ROLLOFF_NONE:   c-operand[14] = 0xff; break; */
 + }
 + switch (fe-dtv_property_cache.pilot) {
 + case PILOT_AUTO:c-operand[15] = 0x0; break;
 + case PILOT_OFF: c-operand[15] = 0x0; break;
 + case PILOT_ON:  c-operand[15] = 0x1; break;
 + }
 + } else {
 + c-operand[13] = 0x1;  /* auto modulation */
 + c-operand[14] = 0xff; /* disable rolloff */
 + c-operand[15] = 0xff; /* disable pilot */
 + }
   return 16;

Is it correct that there is no default: case for operand[14] and [15]?

   } else {
   return 13;
 @@ -548,7 +569,7 @@
   return 17 + add_pid_filter(fdtv, c-operand[17]);
  }
 
 -int avc_tuner_dsd(struct firedtv *fdtv,
 +int avc_tuner_dsd(struct dvb_frontend *fe, struct firedtv *fdtv,
 struct dvb_frontend_parameters *params)
  {
   struct avc_command_frame *c = (void *)fdtv-avc_data;

The frontend can be accessed via fdtv-fe also.  (I can change this together
with the whitespace things if you agree.)

 @@ -561,7 +582,7 @@
 
   switch (fdtv-type) {
   case FIREDTV_DVB_S:
 - case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fdtv, params); break;
 + case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fe, fdtv, params); break;
   case FIREDTV_DVB_C: pos = avc_tuner_dsd_dvb_c(fdtv, params); break;
   case FIREDTV_DVB_T: pos = avc_tuner_dsd_dvb_t(fdtv, params); break;
   default:
 diff -r 6e0befab696a linux/drivers/media/dvb/firewire/firedtv-fe.c
 --- a/linux/drivers/media/dvb/firewire/firedtv-fe.c   Fri Sep 03
 00:28:05 2010 -0300
 +++ b/linux/drivers/media/dvb/firewire/firedtv-fe.c   Sun Sep 12
 06:52:02 2010 +0200
[...]
 @@ -155,6 +156,17 @@
   return -EOPNOTSUPP;
  }
 
 +static int fdtv_get_property(struct dvb_frontend *fe,
 + struct dtv_property *tvp)
 +{
 + return 0;
 +}
 +static int fdtv_set_property(struct dvb_frontend *fe,
 + struct dtv_property *tvp)
 +{
 + return 0;
 +}
 +
  void fdtv_frontend_init(struct firedtv *fdtv)
  {
   struct dvb_frontend_ops *ops = fdtv-fe.ops;
 @@ -166,6 +178,9 @@
   ops-set_frontend   = fdtv_set_frontend;
   ops-get_frontend   = fdtv_get_frontend;
 
 + ops-get_property   = fdtv_get_property;
 + ops-set_property   = fdtv_set_property;
 +
   ops-read_status= fdtv_read_status;
   ops-read_ber   = fdtv_read_ber;
   ops-read_signal_strength   = fdtv_read_signal_strength;
[...]

(Hmm, note to self:  Can't DVB core provide empty default methods?)
-- 
Stefan Richter
-=-==-=- =--= -
http://arcgraph.de/sr/
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] firedtv driver: support for PSK8 for S2 devices. To watch HD.

2010-09-15 Thread Tommy Jonsson
Nice, thanks! I used gmail, never used a mailing-list or dealt with
patches before.
Never developed or even looked at the Linux source, so there might be
some strangeness in the code :]
I recently fixed a server-box and started using TvHeadend. Noticed
that the psk8 didn't work,
so i put the card back in a windows box and sniffed out the difference.

On Wed, Sep 15, 2010 at 1:48 PM, Stefan Richter
stef...@s5r6.in-berlin.de wrote:
 Tommy Jonsson wrote at linux-media:
 This is the first i have ever developed for linux, cant really wrap my
 head around how to submit this..
 Hope im sending this correctly, diff made with 'hg diff' from latest
 hg clone http://linuxtv.org/hg/v4l-dvb;

 It adds support for tuning with PSK8 modulation, pilot and rolloff
 with the S2 versions of firedtv.

 Signed-off-by: Tommy Jonsson quazz...@gmail.com
 [...]

 Excellent!  This has been on the wishlist of FireDTV/FloppyDTV-S2 owners for
 quite some time.

 The patch was a little bit mangled by the mail user agent, and there appear to
 be some whitespace issues in it.  I will have a closer look at it later today
 and repost the patch so that Mauro can apply it without manual intervention.
 --
 Stefan Richter
 -=-==-=- =--= -
 http://arcgraph.de/sr/

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] firedtv driver: support for PSK8 for S2 devices. To watch HD.

2010-09-15 Thread Tommy Jonsson
Oh, read the first question a bit wrong, yeah i have missed the
default case for 14  15.
Should probably be AUTO/35  AUTO/OFF.

On Wed, Sep 15, 2010 at 1:58 PM, Stefan Richter
stef...@s5r6.in-berlin.de wrote:
 Tommy Jonsson wrote:
 --- a/linux/drivers/media/dvb/firewire/firedtv-avc.c  Fri Sep 03
 00:28:05 2010 -0300
 +++ b/linux/drivers/media/dvb/firewire/firedtv-avc.c  Sun Sep 12
 06:52:02 2010 +0200
 [...]
 @@ -368,10 +369,30 @@
               c-operand[12] = 0;

       if (fdtv-type == FIREDTV_DVB_S2) {
 -             c-operand[13] = 0x1;
 -             c-operand[14] = 0xff;
 -             c-operand[15] = 0xff;
 -
 +             if (fe-dtv_property_cache.delivery_system == SYS_DVBS2) {
 +                     switch (fe-dtv_property_cache.modulation) {
 +                     case QAM_16:            c-operand[13] = 0x1; break;
 +                     case QPSK:              c-operand[13] = 0x2; break;
 +                     case PSK_8:             c-operand[13] = 0x3; break;
 +                     default:                c-operand[13] = 0x2; break;
 +                     }
 +                     switch (fe-dtv_property_cache.rolloff) {
 +                     case ROLLOFF_AUTO:      c-operand[14] = 0x2; break;
 +                     case ROLLOFF_35:        c-operand[14] = 0x2; break;
 +                     case ROLLOFF_20:        c-operand[14] = 0x0; break;
 +                     case ROLLOFF_25:        c-operand[14] = 0x1; break;
 +                     /* case ROLLOFF_NONE:   c-operand[14] = 0xff; break; 
 */
 +                     }
 +                     switch (fe-dtv_property_cache.pilot) {
 +                     case PILOT_AUTO:        c-operand[15] = 0x0; break;
 +                     case PILOT_OFF:         c-operand[15] = 0x0; break;
 +                     case PILOT_ON:          c-operand[15] = 0x1; break;
 +                     }
 +             } else {
 +                     c-operand[13] = 0x1;  /* auto modulation */
 +                     c-operand[14] = 0xff; /* disable rolloff */
 +                     c-operand[15] = 0xff; /* disable pilot */
 +             }
               return 16;

 Is it correct that there is no default: case for operand[14] and [15]?

       } else {
               return 13;
 @@ -548,7 +569,7 @@
       return 17 + add_pid_filter(fdtv, c-operand[17]);
  }

 -int avc_tuner_dsd(struct firedtv *fdtv,
 +int avc_tuner_dsd(struct dvb_frontend *fe, struct firedtv *fdtv,
                 struct dvb_frontend_parameters *params)
  {
       struct avc_command_frame *c = (void *)fdtv-avc_data;

 The frontend can be accessed via fdtv-fe also.  (I can change this together
 with the whitespace things if you agree.)

 @@ -561,7 +582,7 @@

       switch (fdtv-type) {
       case FIREDTV_DVB_S:
 -     case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fdtv, params); break;
 +     case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fe, fdtv, params); break;
       case FIREDTV_DVB_C: pos = avc_tuner_dsd_dvb_c(fdtv, params); break;
       case FIREDTV_DVB_T: pos = avc_tuner_dsd_dvb_t(fdtv, params); break;
       default:
 diff -r 6e0befab696a linux/drivers/media/dvb/firewire/firedtv-fe.c
 --- a/linux/drivers/media/dvb/firewire/firedtv-fe.c   Fri Sep 03
 00:28:05 2010 -0300
 +++ b/linux/drivers/media/dvb/firewire/firedtv-fe.c   Sun Sep 12
 06:52:02 2010 +0200
 [...]
 @@ -155,6 +156,17 @@
       return -EOPNOTSUPP;
  }

 +static int fdtv_get_property(struct dvb_frontend *fe,
 +                             struct dtv_property *tvp)
 +{
 +     return 0;
 +}
 +static int fdtv_set_property(struct dvb_frontend *fe,
 +                             struct dtv_property *tvp)
 +{
 +     return 0;
 +}
 +
  void fdtv_frontend_init(struct firedtv *fdtv)
  {
       struct dvb_frontend_ops *ops = fdtv-fe.ops;
 @@ -166,6 +178,9 @@
       ops-set_frontend               = fdtv_set_frontend;
       ops-get_frontend               = fdtv_get_frontend;

 +     ops-get_property               = fdtv_get_property;
 +     ops-set_property               = fdtv_set_property;
 +
       ops-read_status                = fdtv_read_status;
       ops-read_ber                   = fdtv_read_ber;
       ops-read_signal_strength       = fdtv_read_signal_strength;
 [...]

 (Hmm, note to self:  Can't DVB core provide empty default methods?)
 --
 Stefan Richter
 -=-==-=- =--= -
 http://arcgraph.de/sr/

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] firedtv driver: support for PSK8 for S2 devices. To watch HD.

2010-09-12 Thread Tommy Jonsson
This is the first i have ever developed for linux, cant really wrap my
head around how to submit this..
Hope im sending this correctly, diff made with 'hg diff' from latest
hg clone http://linuxtv.org/hg/v4l-dvb;

It adds support for tuning with PSK8 modulation, pilot and rolloff
with the S2 versions of firedtv.

Signed-off-by: Tommy Jonsson quazz...@gmail.com



diff -r 6e0befab696a linux/drivers/media/dvb/firewire/firedtv-avc.c
--- a/linux/drivers/media/dvb/firewire/firedtv-avc.cFri Sep 03
00:28:05 2010 -0300
+++ b/linux/drivers/media/dvb/firewire/firedtv-avc.cSun Sep 12
06:52:02 2010 +0200
@@ -4,6 +4,7 @@
  * Copyright (C) 2004 Andreas Monitzer a...@monitzer.com
  * Copyright (C) 2008 Ben Backx b...@bbackx.com
  * Copyright (C) 2008 Henrik Kurelid hen...@kurelid.se
+ * Copyright (C) 2010 Tommy Jonsson quazz...@gmail.com
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -318,7 +319,7 @@
  * tuning command for setting the relative LNB frequency
  * (not supported by the AVC standard)
  */
-static int avc_tuner_tuneqpsk(struct firedtv *fdtv,
+static int avc_tuner_tuneqpsk(struct dvb_frontend *fe, struct firedtv *fdtv,
  struct dvb_frontend_parameters *params)
 {
struct avc_command_frame *c = (void *)fdtv-avc_data;
@@ -368,10 +369,30 @@
c-operand[12] = 0;

if (fdtv-type == FIREDTV_DVB_S2) {
-   c-operand[13] = 0x1;
-   c-operand[14] = 0xff;
-   c-operand[15] = 0xff;
-
+   if (fe-dtv_property_cache.delivery_system == SYS_DVBS2) {
+   switch (fe-dtv_property_cache.modulation) {
+   case QAM_16:c-operand[13] = 0x1; break;
+   case QPSK:  c-operand[13] = 0x2; break;
+   case PSK_8: c-operand[13] = 0x3; break;
+   default:c-operand[13] = 0x2; break;
+   }
+   switch (fe-dtv_property_cache.rolloff) {
+   case ROLLOFF_AUTO:  c-operand[14] = 0x2; break;
+   case ROLLOFF_35:c-operand[14] = 0x2; break;
+   case ROLLOFF_20:c-operand[14] = 0x0; break;
+   case ROLLOFF_25:c-operand[14] = 0x1; break;
+   /* case ROLLOFF_NONE:   c-operand[14] = 0xff; break; */
+   }
+   switch (fe-dtv_property_cache.pilot) {
+   case PILOT_AUTO:c-operand[15] = 0x0; break;
+   case PILOT_OFF: c-operand[15] = 0x0; break;
+   case PILOT_ON:  c-operand[15] = 0x1; break;
+   }
+   } else {
+   c-operand[13] = 0x1;  /* auto modulation */
+   c-operand[14] = 0xff; /* disable rolloff */
+   c-operand[15] = 0xff; /* disable pilot */
+   }
return 16;
} else {
return 13;
@@ -548,7 +569,7 @@
return 17 + add_pid_filter(fdtv, c-operand[17]);
 }

-int avc_tuner_dsd(struct firedtv *fdtv,
+int avc_tuner_dsd(struct dvb_frontend *fe, struct firedtv *fdtv,
  struct dvb_frontend_parameters *params)
 {
struct avc_command_frame *c = (void *)fdtv-avc_data;
@@ -561,7 +582,7 @@

switch (fdtv-type) {
case FIREDTV_DVB_S:
-   case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fdtv, params); break;
+   case FIREDTV_DVB_S2: pos = avc_tuner_tuneqpsk(fe, fdtv, params); break;
case FIREDTV_DVB_C: pos = avc_tuner_dsd_dvb_c(fdtv, params); break;
case FIREDTV_DVB_T: pos = avc_tuner_dsd_dvb_t(fdtv, params); break;
default:
diff -r 6e0befab696a linux/drivers/media/dvb/firewire/firedtv-fe.c
--- a/linux/drivers/media/dvb/firewire/firedtv-fe.c Fri Sep 03
00:28:05 2010 -0300
+++ b/linux/drivers/media/dvb/firewire/firedtv-fe.c Sun Sep 12
06:52:02 2010 +0200
@@ -3,6 +3,7 @@
  *
  * Copyright (C) 2004 Andreas Monitzer a...@monitzer.com
  * Copyright (C) 2008 Henrik Kurelid hen...@kurelid.se
+ * Copyright (C) 2010 Tommy Jonsson quazz...@gmail.com
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -146,7 +147,7 @@
 {
struct firedtv *fdtv = fe-sec_priv;

-   return avc_tuner_dsd(fdtv, params);
+   return avc_tuner_dsd(fe, fdtv, params);
 }

 static int fdtv_get_frontend(struct dvb_frontend *fe,
@@ -155,6 +156,17 @@
return -EOPNOTSUPP;
 }

+static int fdtv_get_property(struct dvb_frontend *fe,
+ struct dtv_property *tvp)
+{
+   return 0;
+}
+static int fdtv_set_property(struct dvb_frontend *fe,
+ struct dtv_property *tvp)
+{
+   return