Re: [PATCH] firedtv driver: support for PSK8 for S2 devices. To watch HD.
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.
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.
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.
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.
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