From: Mauro Carvalho Chehab <mchehab@s-opensource.com>
To: Daniel Scheller <d.scheller.oss@gmail.com>
Cc: linux-media@vger.kernel.org, mchehab@kernel.org, jasmin@anw.at,
rjkm@metzlerbros.de
Subject: Re: [PATCH v3 01/10] [media] dvb-frontends: add ST STV0910 DVB-S/S2 demodulator frontend driver
Date: Thu, 20 Jul 2017 14:21:24 -0300 [thread overview]
Message-ID: <20170720142124.0363f432@vento.lan> (raw)
In-Reply-To: <20170703172104.27283-2-d.scheller.oss@gmail.com>
Em Mon, 3 Jul 2017 19:20:54 +0200
Daniel Scheller <d.scheller.oss@gmail.com> escreveu:
> From: Daniel Scheller <d.scheller@gmx.net>
>
> This adds a multi frontend driver for the ST STV0910 DVB-S/S2 demodulator
> frontends. The driver code originates from the Digital Devices' dddvb
> vendor driver package as of version 0.9.29, and has been cleaned up from
> core API usage which isn't supported yet in the kernel, and additionally
> all obvious style issues have been resolved. All camel case and allcaps
> have been converted to kernel_case and lowercase. Patches have been sent
> to the vendor package maintainers to fix this aswell. Signal statistics
> acquisition has been refactored to comply with standards.
>
> Permission to reuse and mainline the driver code was formally granted by
> Ralph Metzler <rjkm@metzlerbros.de>.
>
> Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
> Tested-by: Richard Scobie <r.scobie@clear.net.nz>
> ---
> drivers/media/dvb-frontends/Kconfig | 9 +
> drivers/media/dvb-frontends/Makefile | 1 +
> drivers/media/dvb-frontends/stv0910.c | 1702 ++++++++++
> drivers/media/dvb-frontends/stv0910.h | 32 +
> drivers/media/dvb-frontends/stv0910_regs.h | 4759 ++++++++++++++++++++++++++++
> 5 files changed, 6503 insertions(+)
> create mode 100644 drivers/media/dvb-frontends/stv0910.c
> create mode 100644 drivers/media/dvb-frontends/stv0910.h
> create mode 100644 drivers/media/dvb-frontends/stv0910_regs.h
>
> diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
> index 3a260b82b3e8..773de5e264e3 100644
> --- a/drivers/media/dvb-frontends/Kconfig
> +++ b/drivers/media/dvb-frontends/Kconfig
> @@ -28,6 +28,15 @@ config DVB_STV090x
> DVB-S/S2/DSS Multistandard Professional/Broadcast demodulators.
> Say Y when you want to support these frontends.
>
> +config DVB_STV0910
> + tristate "STV0910 based"
> + depends on DVB_CORE && I2C
> + default m if !MEDIA_SUBDRV_AUTOSELECT
> + help
> + ST STV0910 DVB-S/S2 demodulator driver.
> +
> + Say Y when you want to support these frontends.
> +
> config DVB_STV6110x
> tristate "STV6110/(A) based tuners"
> depends on DVB_CORE && I2C
> diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
> index 3fccaf34ef52..c302b2d07499 100644
> --- a/drivers/media/dvb-frontends/Makefile
> +++ b/drivers/media/dvb-frontends/Makefile
> @@ -110,6 +110,7 @@ obj-$(CONFIG_DVB_CXD2820R) += cxd2820r.o
> obj-$(CONFIG_DVB_CXD2841ER) += cxd2841er.o
> obj-$(CONFIG_DVB_DRXK) += drxk.o
> obj-$(CONFIG_DVB_TDA18271C2DD) += tda18271c2dd.o
> +obj-$(CONFIG_DVB_STV0910) += stv0910.o
> obj-$(CONFIG_DVB_SI2165) += si2165.o
> obj-$(CONFIG_DVB_A8293) += a8293.o
> obj-$(CONFIG_DVB_SP2) += sp2.o
> diff --git a/drivers/media/dvb-frontends/stv0910.c b/drivers/media/dvb-frontends/stv0910.c
> new file mode 100644
> index 000000000000..9dfcaf5e067f
> --- /dev/null
> +++ b/drivers/media/dvb-frontends/stv0910.c
> @@ -0,0 +1,1702 @@
> +/*
> + * Driver for the ST STV0910 DVB-S/S2 demodulator.
> + *
> + * Copyright (C) 2014-2015 Ralph Metzler <rjkm@metzlerbros.de>
> + * Marcus Metzler <mocm@metzlerbros.de>
> + * developed for Digital Devices GmbH
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * version 2 only, as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/moduleparam.h>
> +#include <linux/init.h>
> +#include <linux/delay.h>
> +#include <linux/firmware.h>
> +#include <linux/i2c.h>
> +#include <asm/div64.h>
> +
> +#include "dvb_math.h"
> +#include "dvb_frontend.h"
> +#include "stv0910.h"
> +#include "stv0910_regs.h"
> +
> +#define EXT_CLOCK 30000000
> +#define TUNING_DELAY 200
> +#define BER_SRC_S 0x20
> +#define BER_SRC_S2 0x20
> +
> +LIST_HEAD(stvlist);
> +
> +enum receive_mode { RCVMODE_NONE, RCVMODE_DVBS, RCVMODE_DVBS2, RCVMODE_AUTO };
> +
> +enum dvbs2_fectype { DVBS2_64K, DVBS2_16K };
> +
> +enum dvbs2_mod_cod {
> + DVBS2_DUMMY_PLF, DVBS2_QPSK_1_4, DVBS2_QPSK_1_3, DVBS2_QPSK_2_5,
> + DVBS2_QPSK_1_2, DVBS2_QPSK_3_5, DVBS2_QPSK_2_3, DVBS2_QPSK_3_4,
> + DVBS2_QPSK_4_5, DVBS2_QPSK_5_6, DVBS2_QPSK_8_9, DVBS2_QPSK_9_10,
> + DVBS2_8PSK_3_5, DVBS2_8PSK_2_3, DVBS2_8PSK_3_4, DVBS2_8PSK_5_6,
> + DVBS2_8PSK_8_9, DVBS2_8PSK_9_10, DVBS2_16APSK_2_3, DVBS2_16APSK_3_4,
> + DVBS2_16APSK_4_5, DVBS2_16APSK_5_6, DVBS2_16APSK_8_9, DVBS2_16APSK_9_10,
> + DVBS2_32APSK_3_4, DVBS2_32APSK_4_5, DVBS2_32APSK_5_6, DVBS2_32APSK_8_9,
> + DVBS2_32APSK_9_10
> +};
> +
> +enum fe_stv0910_mod_cod {
> + FE_DUMMY_PLF, FE_QPSK_14, FE_QPSK_13, FE_QPSK_25,
> + FE_QPSK_12, FE_QPSK_35, FE_QPSK_23, FE_QPSK_34,
> + FE_QPSK_45, FE_QPSK_56, FE_QPSK_89, FE_QPSK_910,
> + FE_8PSK_35, FE_8PSK_23, FE_8PSK_34, FE_8PSK_56,
> + FE_8PSK_89, FE_8PSK_910, FE_16APSK_23, FE_16APSK_34,
> + FE_16APSK_45, FE_16APSK_56, FE_16APSK_89, FE_16APSK_910,
> + FE_32APSK_34, FE_32APSK_45, FE_32APSK_56, FE_32APSK_89,
> + FE_32APSK_910
> +};
> +
> +enum fe_stv0910_roll_off { FE_SAT_35, FE_SAT_25, FE_SAT_20, FE_SAT_15 };
> +
> +static inline u32 muldiv32(u32 a, u32 b, u32 c)
> +{
> + u64 tmp64;
> +
> + tmp64 = (u64)a * (u64)b;
> + do_div(tmp64, c);
> +
> + return (u32) tmp64;
> +}
> +
> +struct stv_base {
> + struct list_head stvlist;
> +
> + u8 adr;
> + struct i2c_adapter *i2c;
> + struct mutex i2c_lock;
> + struct mutex reg_lock;
> + int count;
> +
> + u32 extclk;
> + u32 mclk;
> +};
> +
> +struct stv {
> + struct stv_base *base;
> + struct dvb_frontend fe;
> + int nr;
> + u16 regoff;
> + u8 i2crpt;
> + u8 tscfgh;
> + u8 tsgeneral;
> + u8 tsspeed;
> + u8 single;
> + unsigned long tune_time;
> +
> + s32 search_range;
> + u32 started;
> + u32 demod_lock_time;
> + enum receive_mode receive_mode;
> + u32 demod_timeout;
> + u32 fec_timeout;
> + u32 first_time_lock;
> + u8 demod_bits;
> + u32 symbol_rate;
> +
> + u8 last_viterbi_rate;
> + enum fe_code_rate puncture_rate;
> + enum fe_stv0910_mod_cod mod_cod;
> + enum dvbs2_fectype fectype;
> + u32 pilots;
> + enum fe_stv0910_roll_off feroll_off;
> +
> + int is_standard_broadcast;
> + int is_vcm;
> +
> + u32 last_bernumerator;
> + u32 last_berdenominator;
> + u8 berscale;
> +
> + u8 vth[6];
> +};
> +
> +struct sinit_table {
> + u16 address;
> + u8 data;
> +};
> +
> +struct slookup {
> + s16 value;
> + u16 reg_value;
> +};
> +
> +static inline int i2c_write(struct i2c_adapter *adap, u8 adr,
> + u8 *data, int len)
> +{
> + struct i2c_msg msg = {.addr = adr, .flags = 0,
> + .buf = data, .len = len};
> +
> + if (i2c_transfer(adap, &msg, 1) != 1) {
> + dev_warn(&adap->dev, "i2c write error ([%02x] %04x: %02x)\n",
> + adr, (data[0] << 8) | data[1],
> + (len > 2 ? data[2] : 0));
> + return -EREMOTEIO;
> + }
> + return 0;
> +}
> +
> +static int i2c_write_reg16(struct i2c_adapter *adap, u8 adr, u16 reg, u8 val)
> +{
> + u8 msg[3] = {reg >> 8, reg & 0xff, val};
> +
> + return i2c_write(adap, adr, msg, 3);
> +}
> +
> +static int write_reg(struct stv *state, u16 reg, u8 val)
> +{
> + return i2c_write_reg16(state->base->i2c, state->base->adr, reg, val);
> +}
> +
> +static inline int i2c_read_regs16(struct i2c_adapter *adapter, u8 adr,
> + u16 reg, u8 *val, int count)
> +{
> + u8 msg[2] = {reg >> 8, reg & 0xff};
> + struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0,
> + .buf = msg, .len = 2},
> + {.addr = adr, .flags = I2C_M_RD,
> + .buf = val, .len = count } };
> +
> + if (i2c_transfer(adapter, msgs, 2) != 2) {
> + dev_warn(&adapter->dev, "i2c read error ([%02x] %04x)\n",
> + adr, reg);
> + return -EREMOTEIO;
> + }
> + return 0;
> +}
> +
> +static int read_reg(struct stv *state, u16 reg, u8 *val)
> +{
> + return i2c_read_regs16(state->base->i2c, state->base->adr,
> + reg, val, 1);
> +}
> +
> +static int read_regs(struct stv *state, u16 reg, u8 *val, int len)
> +{
> + return i2c_read_regs16(state->base->i2c, state->base->adr,
> + reg, val, len);
> +}
> +
> +static int write_shared_reg(struct stv *state, u16 reg, u8 mask, u8 val)
> +{
> + int status;
> + u8 tmp;
> +
> + mutex_lock(&state->base->reg_lock);
> + status = read_reg(state, reg, &tmp);
> + if (!status)
> + status = write_reg(state, reg, (tmp & ~mask) | (val & mask));
> + mutex_unlock(&state->base->reg_lock);
> + return status;
> +}
> +
> +struct slookup s1_sn_lookup[] = {
> + { 0, 9242 }, /*C/N= 0dB*/
> + { 5, 9105 }, /*C/N=0.5dB*/
> + { 10, 8950 }, /*C/N=1.0dB*/
> + { 15, 8780 }, /*C/N=1.5dB*/
> + { 20, 8566 }, /*C/N=2.0dB*/
> + { 25, 8366 }, /*C/N=2.5dB*/
> + { 30, 8146 }, /*C/N=3.0dB*/
> + { 35, 7908 }, /*C/N=3.5dB*/
> + { 40, 7666 }, /*C/N=4.0dB*/
> + { 45, 7405 }, /*C/N=4.5dB*/
> + { 50, 7136 }, /*C/N=5.0dB*/
> + { 55, 6861 }, /*C/N=5.5dB*/
> + { 60, 6576 }, /*C/N=6.0dB*/
> + { 65, 6330 }, /*C/N=6.5dB*/
> + { 70, 6048 }, /*C/N=7.0dB*/
> + { 75, 5768 }, /*C/N=7.5dB*/
> + { 80, 5492 }, /*C/N=8.0dB*/
> + { 85, 5224 }, /*C/N=8.5dB*/
> + { 90, 4959 }, /*C/N=9.0dB*/
> + { 95, 4709 }, /*C/N=9.5dB*/
> + { 100, 4467 }, /*C/N=10.0dB*/
> + { 105, 4236 }, /*C/N=10.5dB*/
> + { 110, 4013 }, /*C/N=11.0dB*/
> + { 115, 3800 }, /*C/N=11.5dB*/
> + { 120, 3598 }, /*C/N=12.0dB*/
> + { 125, 3406 }, /*C/N=12.5dB*/
> + { 130, 3225 }, /*C/N=13.0dB*/
> + { 135, 3052 }, /*C/N=13.5dB*/
> + { 140, 2889 }, /*C/N=14.0dB*/
> + { 145, 2733 }, /*C/N=14.5dB*/
> + { 150, 2587 }, /*C/N=15.0dB*/
> + { 160, 2318 }, /*C/N=16.0dB*/
> + { 170, 2077 }, /*C/N=17.0dB*/
> + { 180, 1862 }, /*C/N=18.0dB*/
> + { 190, 1670 }, /*C/N=19.0dB*/
> + { 200, 1499 }, /*C/N=20.0dB*/
> + { 210, 1347 }, /*C/N=21.0dB*/
> + { 220, 1213 }, /*C/N=22.0dB*/
> + { 230, 1095 }, /*C/N=23.0dB*/
> + { 240, 992 }, /*C/N=24.0dB*/
> + { 250, 900 }, /*C/N=25.0dB*/
> + { 260, 826 }, /*C/N=26.0dB*/
> + { 270, 758 }, /*C/N=27.0dB*/
> + { 280, 702 }, /*C/N=28.0dB*/
> + { 290, 653 }, /*C/N=29.0dB*/
> + { 300, 613 }, /*C/N=30.0dB*/
> + { 310, 579 }, /*C/N=31.0dB*/
> + { 320, 550 }, /*C/N=32.0dB*/
> + { 330, 526 }, /*C/N=33.0dB*/
> + { 350, 490 }, /*C/N=33.0dB*/
> + { 400, 445 }, /*C/N=40.0dB*/
> + { 450, 430 }, /*C/N=45.0dB*/
> + { 500, 426 }, /*C/N=50.0dB*/
> + { 510, 425 } /*C/N=51.0dB*/
> +};
> +
> +struct slookup s2_sn_lookup[] = {
> + { -30, 13950 }, /*C/N=-2.5dB*/
> + { -25, 13580 }, /*C/N=-2.5dB*/
> + { -20, 13150 }, /*C/N=-2.0dB*/
> + { -15, 12760 }, /*C/N=-1.5dB*/
> + { -10, 12345 }, /*C/N=-1.0dB*/
> + { -5, 11900 }, /*C/N=-0.5dB*/
> + { 0, 11520 }, /*C/N= 0dB*/
> + { 5, 11080 }, /*C/N= 0.5dB*/
> + { 10, 10630 }, /*C/N= 1.0dB*/
> + { 15, 10210 }, /*C/N= 1.5dB*/
> + { 20, 9790 }, /*C/N= 2.0dB*/
> + { 25, 9390 }, /*C/N= 2.5dB*/
> + { 30, 8970 }, /*C/N= 3.0dB*/
> + { 35, 8575 }, /*C/N= 3.5dB*/
> + { 40, 8180 }, /*C/N= 4.0dB*/
> + { 45, 7800 }, /*C/N= 4.5dB*/
> + { 50, 7430 }, /*C/N= 5.0dB*/
> + { 55, 7080 }, /*C/N= 5.5dB*/
> + { 60, 6720 }, /*C/N= 6.0dB*/
> + { 65, 6320 }, /*C/N= 6.5dB*/
> + { 70, 6060 }, /*C/N= 7.0dB*/
> + { 75, 5760 }, /*C/N= 7.5dB*/
> + { 80, 5480 }, /*C/N= 8.0dB*/
> + { 85, 5200 }, /*C/N= 8.5dB*/
> + { 90, 4930 }, /*C/N= 9.0dB*/
> + { 95, 4680 }, /*C/N= 9.5dB*/
> + { 100, 4425 }, /*C/N=10.0dB*/
> + { 105, 4210 }, /*C/N=10.5dB*/
> + { 110, 3980 }, /*C/N=11.0dB*/
> + { 115, 3765 }, /*C/N=11.5dB*/
> + { 120, 3570 }, /*C/N=12.0dB*/
> + { 125, 3315 }, /*C/N=12.5dB*/
> + { 130, 3140 }, /*C/N=13.0dB*/
> + { 135, 2980 }, /*C/N=13.5dB*/
> + { 140, 2820 }, /*C/N=14.0dB*/
> + { 145, 2670 }, /*C/N=14.5dB*/
> + { 150, 2535 }, /*C/N=15.0dB*/
> + { 160, 2270 }, /*C/N=16.0dB*/
> + { 170, 2035 }, /*C/N=17.0dB*/
> + { 180, 1825 }, /*C/N=18.0dB*/
> + { 190, 1650 }, /*C/N=19.0dB*/
> + { 200, 1485 }, /*C/N=20.0dB*/
> + { 210, 1340 }, /*C/N=21.0dB*/
> + { 220, 1212 }, /*C/N=22.0dB*/
> + { 230, 1100 }, /*C/N=23.0dB*/
> + { 240, 1000 }, /*C/N=24.0dB*/
> + { 250, 910 }, /*C/N=25.0dB*/
> + { 260, 836 }, /*C/N=26.0dB*/
> + { 270, 772 }, /*C/N=27.0dB*/
> + { 280, 718 }, /*C/N=28.0dB*/
> + { 290, 671 }, /*C/N=29.0dB*/
> + { 300, 635 }, /*C/N=30.0dB*/
> + { 310, 602 }, /*C/N=31.0dB*/
> + { 320, 575 }, /*C/N=32.0dB*/
> + { 330, 550 }, /*C/N=33.0dB*/
> + { 350, 517 }, /*C/N=35.0dB*/
> + { 400, 480 }, /*C/N=40.0dB*/
> + { 450, 466 }, /*C/N=45.0dB*/
> + { 500, 464 }, /*C/N=50.0dB*/
> + { 510, 463 }, /*C/N=51.0dB*/
> +};
> +
> +/*********************************************************************
> + * Tracking carrier loop carrier QPSK 1/4 to 8PSK 9/10 long Frame
> + *********************************************************************/
> +static u8 s2car_loop[] = {
> + /* Modcod 2MPon 2MPoff 5MPon 5MPoff 10MPon 10MPoff
> + * 20MPon 20MPoff 30MPon 30MPoff
> + */
The right coding style for multi-line comments is:
/*
* foo
* bar
*/
I ended by merging this series, but please send a fixup patch when
you have some time.
Btw, specially for new drivers, it could worth running checkpatch in
scritct mode:
$ git diff 435945e08551|./scripts/checkpatch.pl --terse --strict
-:36: WARNING: please write a paragraph that describes the config symbol fully
-:52: WARNING: please write a paragraph that describes the config symbol fully
-:78: WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
-:156: CHECK: No space is necessary after a cast
-:164: CHECK: struct mutex definition without comment
-:165: CHECK: struct mutex definition without comment
-:231: CHECK: Alignment should match open parenthesis
-:251: CHECK: Alignment should match open parenthesis
-:261: CHECK: Alignment should match open parenthesis
-:558: CHECK: No space is necessary after a cast
-:559: CHECK: No space is necessary after a cast
-:560: CHECK: No space is necessary after a cast
-:561: CHECK: No space is necessary after a cast
-:563: CHECK: spaces preferred around that '<<' (ctx:VxV)
-:566: CHECK: No space is necessary after a cast
-:567: CHECK: No space is necessary after a cast
-:583: CHECK: No space is necessary after a cast
-:585: CHECK: No space is necessary after a cast
-:671: CHECK: Alignment should match open parenthesis
-:680: CHECK: braces {} should be used on all arms of this statement
-:684: CHECK: Unbalanced braces around else statement
-:685: CHECK: spaces preferred around that '-' (ctx:VxV)
-:688: CHECK: Alignment should match open parenthesis
-:734: CHECK: No space is necessary after a cast
-:740: CHECK: Alignment should match open parenthesis
-:754: CHECK: No space is necessary after a cast
-:755: CHECK: No space is necessary after a cast
-:815: CHECK: Alignment should match open parenthesis
-:827: CHECK: No space is necessary after a cast
-:830: CHECK: No space is necessary after a cast
-:831: CHECK: No space is necessary after a cast
-:849: CHECK: Alignment should match open parenthesis
-:1296: CHECK: Please don't use multiple blank lines
-:1358: CHECK: Alignment should match open parenthesis
-:1360: CHECK: No space is necessary after a cast
-:1377: CHECK: braces {} should be used on all arms of this statement
-:1380: CHECK: Unbalanced braces around else statement
-:1414: CHECK: No space is necessary after a cast
-:1418: CHECK: No space is necessary after a cast
-:1419: CHECK: No space is necessary after a cast
-:1578: CHECK: braces {} should be used on all arms of this statement
-:1580: CHECK: Unbalanced braces around else statement
-:1672: CHECK: Please don't use multiple blank lines
-:1794: CHECK: Prefer kzalloc(sizeof(*state)...) over kzalloc(sizeof(struct stv)...)
-:1815: CHECK: Prefer kzalloc(sizeof(*base)...) over kzalloc(sizeof(struct stv_base)...)
-:1828: CHECK: Alignment should match open parenthesis
-:1839: CHECK: Alignment should match open parenthesis
-:1876: CHECK: extern prototypes should be avoided in .h files
-:3364: WARNING: 'VALIDE' may be misspelled - perhaps 'VALID'?
-:4927: WARNING: 'VALIDE' may be misspelled - perhaps 'VALID'?
-:6963: CHECK: No space is necessary after a cast
-:7094: CHECK: spaces preferred around that '-' (ctx:VxV)
-:7097: CHECK: spaces preferred around that '-' (ctx:VxV)
-:7207: CHECK: braces {} should be used on all arms of this statement
-:7211: CHECK: Unbalanced braces around else statement
-:7212: CHECK: spaces preferred around that '-' (ctx:VxV)
-:7223: CHECK: No space is necessary after a cast
-:7225: CHECK: spaces preferred around that '/' (ctx:VxV)
-:7252: CHECK: Alignment should match open parenthesis
-:7256: CHECK: Alignment should match open parenthesis
-:7266: CHECK: Alignment should match open parenthesis
-:7271: CHECK: Alignment should match open parenthesis
-:7312: CHECK: Prefer kzalloc(sizeof(*state)...) over kzalloc(sizeof(struct stv)...)
-:7348: CHECK: extern prototypes should be avoided in .h files
-:7349: CHECK: Alignment should match open parenthesis
-:7354: CHECK: Alignment should match open parenthesis
-:7439: CHECK: Alignment should match open parenthesis
-:7564: CHECK: Alignment should match open parenthesis
total: 0 errors, 5 warnings, 63 checks, 7552 lines checked
Several of those warnings can be automatically fixed with:
./scripts/checkpatch.pl -f $(git diff 435945e08551|diffstat -p1 -l|grep -v MAINT) --strict --fix-inplace
But you need to review if the results are ok.
Regards,
Mauro
next prev parent reply other threads:[~2017-07-20 17:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-03 17:20 [PATCH v3 00/10] STV0910/STV6111 drivers, ddbridge CineS2 V7 support Daniel Scheller
2017-07-03 17:20 ` [PATCH v3 01/10] [media] dvb-frontends: add ST STV0910 DVB-S/S2 demodulator frontend driver Daniel Scheller
2017-07-20 17:21 ` Mauro Carvalho Chehab [this message]
2017-07-20 18:04 ` Daniel Scheller
2017-07-03 17:20 ` [PATCH v3 02/10] [media] dvb-frontends/stv0910: Fix possible buffer overflow Daniel Scheller
2017-07-03 17:20 ` [PATCH v3 03/10] [media] dvb-frontends/stv0910: add multistream (ISI) and PLS capabilities Daniel Scheller
2017-07-03 17:20 ` [PATCH v3 04/10] [media] dvb-frontends/stv0910: Add demod-only signal strength reporting Daniel Scheller
2017-07-03 17:20 ` [PATCH v3 05/10] [media] dvb-frontends/stv0910: Add missing set_frontend fe-op Daniel Scheller
2017-07-03 17:20 ` [PATCH v3 06/10] [media] dvb-frontends: add ST STV6111 DVB-S/S2 tuner frontend driver Daniel Scheller
2017-07-03 17:21 ` [PATCH v3 07/10] [media] ddbridge: return stv09xx id in port_has_stv0900_aa() Daniel Scheller
2017-07-03 17:21 ` [PATCH v3 08/10] [media] ddbridge: support for CineS2 V7(A) and DuoFlex S2 V4 hardware Daniel Scheller
2017-07-03 17:21 ` [PATCH v3 09/10] [media] ddbridge: stv0910 single demod mode module option Daniel Scheller
2017-07-03 17:21 ` [PATCH v3 10/10] [media] MAINTAINERS: add entries for stv0910 and stv6111 Daniel Scheller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170720142124.0363f432@vento.lan \
--to=mchehab@s-opensource.com \
--cc=d.scheller.oss@gmail.com \
--cc=jasmin@anw.at \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=rjkm@metzlerbros.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.