* Re: [PATCH v3 0/7] ds3000/dw2102 improvements
[not found] <1348837172-11784-1-git-send-email-remi.cardona@smartjog.com>
@ 2012-10-01 10:15 ` Rémi Cardona
2012-10-03 0:34 ` Antti Palosaari
[not found] ` <1348837172-11784-2-git-send-email-remi.cardona@smartjog.com>
` (6 subsequent siblings)
7 siblings, 1 reply; 10+ messages in thread
From: Rémi Cardona @ 2012-10-01 10:15 UTC (permalink / raw)
To: linux-media, Antti Palosaari
Hi Antti,
I realized I forgot to CC you on those patches. Thanks for any further
comments you might have.
Cheers,
Rémi Cardona
--
SmartJog | T: +33 1 5868 6229
27 Blvd Hippolyte Marquès, 94200 Ivry-sur-Seine, France www.smartjog.com
| a TDF Group company
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/7] ds3000/dw2102 improvements
2012-10-01 10:15 ` [PATCH v3 0/7] ds3000/dw2102 improvements Rémi Cardona
@ 2012-10-03 0:34 ` Antti Palosaari
0 siblings, 0 replies; 10+ messages in thread
From: Antti Palosaari @ 2012-10-03 0:34 UTC (permalink / raw)
To: Rémi Cardona; +Cc: linux-media
On 10/01/2012 01:15 PM, Rémi Cardona wrote:
> Hi Antti,
>
> I realized I forgot to CC you on those patches. Thanks for any further
> comments you might have.
>
> Cheers,
>
> Rémi Cardona
>
I reviewed again that set, no findings. Looks good!
thanks
Antti
--
http://palosaari.fi/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/7] [media] ds3000: Declare MODULE_FIRMWARE usage
[not found] ` <1348837172-11784-2-git-send-email-remi.cardona@smartjog.com>
@ 2012-10-03 0:36 ` Antti Palosaari
0 siblings, 0 replies; 10+ messages in thread
From: Antti Palosaari @ 2012-10-03 0:36 UTC (permalink / raw)
To: Rémi Cardona; +Cc: linux-media, liplianin
On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/dvb-frontends/ds3000.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
> index 4c8ac26..46874c7 100644
> --- a/drivers/media/dvb-frontends/ds3000.c
> +++ b/drivers/media/dvb-frontends/ds3000.c
> @@ -1310,3 +1310,4 @@ MODULE_DESCRIPTION("DVB Frontend module for Montage Technology "
> "DS3000/TS2020 hardware");
> MODULE_AUTHOR("Konstantin Dimitrov");
> MODULE_LICENSE("GPL");
> +MODULE_FIRMWARE(DS3000_DEFAULT_FIRMWARE);
>
--
http://palosaari.fi/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/7] [media] ds3000: remove useless 'locking'
[not found] ` <1348837172-11784-3-git-send-email-remi.cardona@smartjog.com>
@ 2012-10-03 0:37 ` Antti Palosaari
0 siblings, 0 replies; 10+ messages in thread
From: Antti Palosaari @ 2012-10-03 0:37 UTC (permalink / raw)
To: Rémi Cardona; +Cc: linux-media, liplianin
On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> Since b9bf2eafaad9c1ef02fb3db38c74568be601a43a, the function
> ds3000_firmware_ondemand() is called only once during init. This
> locking scheme may have been useful when the firmware was loaded at
> each tune.
>
> Furthermore, it looks like this 'lock' was put in to prevent concurrent
> access (and not recursion as the comments suggest). However, this open-
> coded mechanism is anything but race-free and should have used a proper
> mutex.
>
> Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/dvb-frontends/ds3000.c | 9 ---------
> 1 file changed, 9 deletions(-)
>
> diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
> index 46874c7..474f26e 100644
> --- a/drivers/media/dvb-frontends/ds3000.c
> +++ b/drivers/media/dvb-frontends/ds3000.c
> @@ -233,7 +233,6 @@ struct ds3000_state {
> struct i2c_adapter *i2c;
> const struct ds3000_config *config;
> struct dvb_frontend frontend;
> - u8 skip_fw_load;
> /* previous uncorrected block counter for DVB-S2 */
> u16 prevUCBS2;
> };
> @@ -395,8 +394,6 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
> if (ds3000_readreg(state, 0xb2) <= 0)
> return ret;
>
> - if (state->skip_fw_load)
> - return 0;
> /* Load firmware */
> /* request the firmware, this will block until someone uploads it */
> printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
> @@ -410,9 +407,6 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
> return ret;
> }
>
> - /* Make sure we don't recurse back through here during loading */
> - state->skip_fw_load = 1;
> -
> ret = ds3000_load_firmware(fe, fw);
> if (ret)
> printk("%s: Writing firmware to device failed\n", __func__);
> @@ -422,9 +416,6 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
> dprintk("%s: Firmware upload %s\n", __func__,
> ret == 0 ? "complete" : "failed");
>
> - /* Ensure firmware is always loaded if required */
> - state->skip_fw_load = 0;
> -
> return ret;
> }
>
>
--
http://palosaari.fi/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/7] [media] ds3000: properly report register read errors
[not found] ` <1348837172-11784-4-git-send-email-remi.cardona@smartjog.com>
@ 2012-10-03 0:37 ` Antti Palosaari
0 siblings, 0 replies; 10+ messages in thread
From: Antti Palosaari @ 2012-10-03 0:37 UTC (permalink / raw)
To: Rémi Cardona; +Cc: linux-media, liplianin
On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> This brings both ds3000_readreg() and ds3000_tuner_readreg() in line
> with ds3000_writereg() and ds3000_tuner_writereg() respectively.
>
> Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/dvb-frontends/ds3000.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
> index 474f26e..6752222 100644
> --- a/drivers/media/dvb-frontends/ds3000.c
> +++ b/drivers/media/dvb-frontends/ds3000.c
> @@ -340,7 +340,7 @@ static int ds3000_readreg(struct ds3000_state *state, u8 reg)
>
> if (ret != 2) {
> printk(KERN_ERR "%s: reg=0x%x(error=%d)\n", __func__, reg, ret);
> - return ret;
> + return -EREMOTEIO;
> }
>
> dprintk("%s: read reg 0x%02x, value 0x%02x\n", __func__, reg, b1[0]);
> @@ -367,12 +367,15 @@ static int ds3000_tuner_readreg(struct ds3000_state *state, u8 reg)
> }
> };
>
> - ds3000_writereg(state, 0x03, 0x12);
> - ret = i2c_transfer(state->i2c, msg, 2);
> + ret = ds3000_writereg(state, 0x03, 0x12);
> + if (ret < 0) {
> + return -EREMOTEIO;
> + }
>
> + ret = i2c_transfer(state->i2c, msg, 2);
> if (ret != 2) {
> printk(KERN_ERR "%s: reg=0x%x(error=%d)\n", __func__, reg, ret);
> - return ret;
> + return -EREMOTEIO;
> }
>
> dprintk("%s: read reg 0x%02x, value 0x%02x\n", __func__, reg, b1[0]);
>
--
http://palosaari.fi/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/7] [media] ds3000: bail out early on i2c failures during firmware load
[not found] ` <1348837172-11784-5-git-send-email-remi.cardona@smartjog.com>
@ 2012-10-03 0:37 ` Antti Palosaari
0 siblings, 0 replies; 10+ messages in thread
From: Antti Palosaari @ 2012-10-03 0:37 UTC (permalink / raw)
To: Rémi Cardona; +Cc: linux-media, liplianin
On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> - if kmalloc() returns NULL, we can return immediately without trying
> to kfree() a NULL pointer.
> - if i2c_transfer() fails, error out immediately instead of trying to
> upload the remaining bytes of the firmware.
> - the error code is then properly propagated down to ds3000_initfe().
>
> Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/dvb-frontends/ds3000.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
> index 6752222..162faaf 100644
> --- a/drivers/media/dvb-frontends/ds3000.c
> +++ b/drivers/media/dvb-frontends/ds3000.c
> @@ -280,15 +280,14 @@ static int ds3000_tuner_writereg(struct ds3000_state *state, int reg, int data)
> static int ds3000_writeFW(struct ds3000_state *state, int reg,
> const u8 *data, u16 len)
> {
> - int i, ret = -EREMOTEIO;
> + int i, ret = 0;
> struct i2c_msg msg;
> u8 *buf;
>
> buf = kmalloc(33, GFP_KERNEL);
> if (buf == NULL) {
> printk(KERN_ERR "Unable to kmalloc\n");
> - ret = -ENOMEM;
> - goto error;
> + return -ENOMEM;
> }
>
> *(buf) = reg;
> @@ -308,8 +307,10 @@ static int ds3000_writeFW(struct ds3000_state *state, int reg,
> printk(KERN_ERR "%s: write error(err == %i, "
> "reg == 0x%02x\n", __func__, ret, reg);
> ret = -EREMOTEIO;
> + goto error;
> }
> }
> + ret = 0;
>
> error:
> kfree(buf);
> @@ -426,6 +427,7 @@ static int ds3000_load_firmware(struct dvb_frontend *fe,
> const struct firmware *fw)
> {
> struct ds3000_state *state = fe->demodulator_priv;
> + int ret = 0;
>
> dprintk("%s\n", __func__);
> dprintk("Firmware is %zu bytes (%02x %02x .. %02x %02x)\n",
> @@ -438,10 +440,10 @@ static int ds3000_load_firmware(struct dvb_frontend *fe,
> /* Begin the firmware load process */
> ds3000_writereg(state, 0xb2, 0x01);
> /* write the entire firmware */
> - ds3000_writeFW(state, 0xb0, fw->data, fw->size);
> + ret = ds3000_writeFW(state, 0xb0, fw->data, fw->size);
> ds3000_writereg(state, 0xb2, 0x00);
>
> - return 0;
> + return ret;
> }
>
> static int ds3000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
>
--
http://palosaari.fi/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 5/7] [media] ds3000: properly report firmware probing issues
[not found] ` <1348837172-11784-6-git-send-email-remi.cardona@smartjog.com>
@ 2012-10-03 0:37 ` Antti Palosaari
0 siblings, 0 replies; 10+ messages in thread
From: Antti Palosaari @ 2012-10-03 0:37 UTC (permalink / raw)
To: Rémi Cardona; +Cc: linux-media, liplianin
On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> ds3000_readreg() returns negative values in case of i2c failures. The
> old code would simply return 0 when failing to read the 0xb2 register,
> misleading ds3000_initfe() into believing that the firmware had been
> correctly loaded.
>
> Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/dvb-frontends/ds3000.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
> index 162faaf..59184a8 100644
> --- a/drivers/media/dvb-frontends/ds3000.c
> +++ b/drivers/media/dvb-frontends/ds3000.c
> @@ -395,8 +395,13 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
>
> dprintk("%s()\n", __func__);
>
> - if (ds3000_readreg(state, 0xb2) <= 0)
> + ret = ds3000_readreg(state, 0xb2);
> + if (ret == 0) {
> + /* Firmware already uploaded, skipping */
> return ret;
> + } else if (ret < 0) {
> + return ret;
> + }
>
> /* Load firmware */
> /* request the firmware, this will block until someone uploads it */
>
--
http://palosaari.fi/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 6/7] [media] ds3000: add module parameter to force firmware upload
[not found] ` <1348837172-11784-7-git-send-email-remi.cardona@smartjog.com>
@ 2012-10-03 0:38 ` Antti Palosaari
2012-10-07 12:34 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 10+ messages in thread
From: Antti Palosaari @ 2012-10-03 0:38 UTC (permalink / raw)
To: Rémi Cardona; +Cc: linux-media, liplianin
On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/dvb-frontends/ds3000.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
> index 59184a8..c66d731 100644
> --- a/drivers/media/dvb-frontends/ds3000.c
> +++ b/drivers/media/dvb-frontends/ds3000.c
> @@ -30,6 +30,7 @@
> #include "ds3000.h"
>
> static int debug;
> +static int force_fw_upload;
>
> #define dprintk(args...) \
> do { \
> @@ -396,7 +397,7 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
> dprintk("%s()\n", __func__);
>
> ret = ds3000_readreg(state, 0xb2);
> - if (ret == 0) {
> + if (ret == 0 && force_fw_upload == 0) {
> /* Firmware already uploaded, skipping */
> return ret;
> } else if (ret < 0) {
> @@ -1307,6 +1308,9 @@ static struct dvb_frontend_ops ds3000_ops = {
> module_param(debug, int, 0644);
> MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
>
> +module_param(force_fw_upload, int, 0644);
> +MODULE_PARM_DESC(force_fw_upload, "Force firmware upload (default:0)");
> +
> MODULE_DESCRIPTION("DVB Frontend module for Montage Technology "
> "DS3000/TS2020 hardware");
> MODULE_AUTHOR("Konstantin Dimitrov");
>
--
http://palosaari.fi/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 7/7] [media] dw2102: Declare MODULE_FIRMWARE usage
[not found] ` <1348837172-11784-8-git-send-email-remi.cardona@smartjog.com>
@ 2012-10-03 0:41 ` Antti Palosaari
0 siblings, 0 replies; 10+ messages in thread
From: Antti Palosaari @ 2012-10-03 0:41 UTC (permalink / raw)
To: Rémi Cardona; +Cc: linux-media, liplianin
On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
> ---
> drivers/media/usb/dvb-usb/dw2102.c | 36 ++++++++++++++++++++++++++----------
> 1 file changed, 26 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
> index 9382895..937c744 100644
> --- a/drivers/media/usb/dvb-usb/dw2102.c
> +++ b/drivers/media/usb/dvb-usb/dw2102.c
> @@ -80,6 +80,15 @@
> #define DW2102_RC_QUERY (0x1a00)
> #define DW2102_LED_CTRL (0x1b00)
>
> +#define DW2101_FIRMWARE "dvb-usb-dw2101.fw"
> +#define DW2102_FIRMWARE "dvb-usb-dw2102.fw"
> +#define DW2104_FIRMWARE "dvb-usb-dw2104.fw"
> +#define DW3101_FIRMWARE "dvb-usb-dw3101.fw"
> +#define S630_FIRMWARE "dvb-usb-s630.fw"
> +#define S660_FIRMWARE "dvb-usb-s660.fw"
> +#define P1100_FIRMWARE "dvb-usb-p1100.fw"
> +#define P7500_FIRMWARE "dvb-usb-p7500.fw"
> +
> #define err_str "did not find the firmware file. (%s) " \
> "Please see linux/Documentation/dvb/ for more details " \
> "on firmware-problems."
> @@ -1478,13 +1487,12 @@ static int dw2102_load_firmware(struct usb_device *dev,
> u8 reset;
> u8 reset16[] = {0, 0, 0, 0, 0, 0, 0};
> const struct firmware *fw;
> - const char *fw_2101 = "dvb-usb-dw2101.fw";
>
> switch (dev->descriptor.idProduct) {
> case 0x2101:
> - ret = request_firmware(&fw, fw_2101, &dev->dev);
> + ret = request_firmware(&fw, DW2101_FIRMWARE, &dev->dev);
> if (ret != 0) {
> - err(err_str, fw_2101);
> + err(err_str, DW2101_FIRMWARE);
> return ret;
> }
> break;
> @@ -1586,7 +1594,7 @@ static int dw2102_load_firmware(struct usb_device *dev,
> static struct dvb_usb_device_properties dw2102_properties = {
> .caps = DVB_USB_IS_AN_I2C_ADAPTER,
> .usb_ctrl = DEVICE_SPECIFIC,
> - .firmware = "dvb-usb-dw2102.fw",
> + .firmware = DW2102_FIRMWARE,
> .no_reconnect = 1,
>
> .i2c_algo = &dw2102_serit_i2c_algo,
> @@ -1641,7 +1649,7 @@ static struct dvb_usb_device_properties dw2102_properties = {
> static struct dvb_usb_device_properties dw2104_properties = {
> .caps = DVB_USB_IS_AN_I2C_ADAPTER,
> .usb_ctrl = DEVICE_SPECIFIC,
> - .firmware = "dvb-usb-dw2104.fw",
> + .firmware = DW2104_FIRMWARE,
> .no_reconnect = 1,
>
> .i2c_algo = &dw2104_i2c_algo,
> @@ -1691,7 +1699,7 @@ static struct dvb_usb_device_properties dw2104_properties = {
> static struct dvb_usb_device_properties dw3101_properties = {
> .caps = DVB_USB_IS_AN_I2C_ADAPTER,
> .usb_ctrl = DEVICE_SPECIFIC,
> - .firmware = "dvb-usb-dw3101.fw",
> + .firmware = DW3101_FIRMWARE,
> .no_reconnect = 1,
>
> .i2c_algo = &dw3101_i2c_algo,
> @@ -1739,7 +1747,7 @@ static struct dvb_usb_device_properties s6x0_properties = {
> .caps = DVB_USB_IS_AN_I2C_ADAPTER,
> .usb_ctrl = DEVICE_SPECIFIC,
> .size_of_priv = sizeof(struct s6x0_state),
> - .firmware = "dvb-usb-s630.fw",
> + .firmware = S630_FIRMWARE,
> .no_reconnect = 1,
>
> .i2c_algo = &s6x0_i2c_algo,
> @@ -1879,7 +1887,7 @@ static int dw2102_probe(struct usb_interface *intf,
> return -ENOMEM;
> /* copy default structure */
> /* fill only different fields */
> - p1100->firmware = "dvb-usb-p1100.fw";
> + p1100->firmware = P1100_FIRMWARE;
> p1100->devices[0] = d1100;
> p1100->rc.legacy.rc_map_table = rc_map_tbs_table;
> p1100->rc.legacy.rc_map_size = ARRAY_SIZE(rc_map_tbs_table);
> @@ -1891,7 +1899,7 @@ static int dw2102_probe(struct usb_interface *intf,
> kfree(p1100);
> return -ENOMEM;
> }
> - s660->firmware = "dvb-usb-s660.fw";
> + s660->firmware = S660_FIRMWARE;
> s660->num_device_descs = 3;
> s660->devices[0] = d660;
> s660->devices[1] = d480_1;
> @@ -1905,7 +1913,7 @@ static int dw2102_probe(struct usb_interface *intf,
> kfree(s660);
> return -ENOMEM;
> }
> - p7500->firmware = "dvb-usb-p7500.fw";
> + p7500->firmware = P7500_FIRMWARE;
> p7500->devices[0] = d7500;
> p7500->rc.legacy.rc_map_table = rc_map_tbs_table;
> p7500->rc.legacy.rc_map_size = ARRAY_SIZE(rc_map_tbs_table);
> @@ -1949,3 +1957,11 @@ MODULE_DESCRIPTION("Driver for DVBWorld DVB-S 2101, 2102, DVB-S2 2104,"
> " Geniatech SU3000 devices");
> MODULE_VERSION("0.1");
> MODULE_LICENSE("GPL");
> +MODULE_FIRMWARE(DW2101_FIRMWARE);
> +MODULE_FIRMWARE(DW2102_FIRMWARE);
> +MODULE_FIRMWARE(DW2104_FIRMWARE);
> +MODULE_FIRMWARE(DW3101_FIRMWARE);
> +MODULE_FIRMWARE(S630_FIRMWARE);
> +MODULE_FIRMWARE(S660_FIRMWARE);
> +MODULE_FIRMWARE(P1100_FIRMWARE);
> +MODULE_FIRMWARE(P7500_FIRMWARE);
>
--
http://palosaari.fi/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 6/7] [media] ds3000: add module parameter to force firmware upload
2012-10-03 0:38 ` [PATCH 6/7] [media] ds3000: add module parameter to force firmware upload Antti Palosaari
@ 2012-10-07 12:34 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 10+ messages in thread
From: Mauro Carvalho Chehab @ 2012-10-07 12:34 UTC (permalink / raw)
To: Antti Palosaari; +Cc: Rémi Cardona, linux-media, liplianin
Em Wed, 03 Oct 2012 03:38:19 +0300
Antti Palosaari <crope@iki.fi> escreveu:
> On 09/28/2012 03:59 PM, Rémi Cardona wrote:
> > Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Next time, please provide a better comment: why such change is
needed?
>
> Reviewed-by: Antti Palosaari <crope@iki.fi>
>
>
> > ---
> > drivers/media/dvb-frontends/ds3000.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
> > index 59184a8..c66d731 100644
> > --- a/drivers/media/dvb-frontends/ds3000.c
> > +++ b/drivers/media/dvb-frontends/ds3000.c
> > @@ -30,6 +30,7 @@
> > #include "ds3000.h"
> >
> > static int debug;
> > +static int force_fw_upload;
> >
> > #define dprintk(args...) \
> > do { \
> > @@ -396,7 +397,7 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
> > dprintk("%s()\n", __func__);
> >
> > ret = ds3000_readreg(state, 0xb2);
> > - if (ret == 0) {
> > + if (ret == 0 && force_fw_upload == 0) {
This hunk got a conflict. I solved it manually and applied. See below.
Regards,
Mauro
-
[PATCH] [media] ds3000: add module parameter to force firmware upload
From: Rémi Cardona <remi.cardona@smartjog.com>
[mchehab@redhat.com: Fix a merge conflict]
Signed-off-by: Rémi Cardona <remi.cardona@smartjog.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
index 4c8ac26..5b63908 100644
--- a/drivers/media/dvb-frontends/ds3000.c
+++ b/drivers/media/dvb-frontends/ds3000.c
@@ -30,6 +30,7 @@
#include "ds3000.h"
static int debug;
+static int force_fw_upload;
#define dprintk(args...) \
do { \
@@ -392,11 +393,13 @@ static int ds3000_firmware_ondemand(struct dvb_frontend *fe)
dprintk("%s()\n", __func__);
- if (ds3000_readreg(state, 0xb2) <= 0)
+ ret = ds3000_readreg(state, 0xb2);
+ if (ret < 0)
return ret;
- if (state->skip_fw_load)
- return 0;
+ if (state->skip_fw_load || !force_fw_upload)
+ return 0; /* Firmware already uploaded, skipping */
+
/* Load firmware */
/* request the firmware, this will block until someone uploads it */
printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
@@ -1306,6 +1309,9 @@ static struct dvb_frontend_ops ds3000_ops = {
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
+module_param(force_fw_upload, int, 0644);
+MODULE_PARM_DESC(force_fw_upload, "Force firmware upload (default:0)");
+
MODULE_DESCRIPTION("DVB Frontend module for Montage Technology "
"DS3000/TS2020 hardware");
MODULE_AUTHOR("Konstantin Dimitrov");
--
Regards,
Mauro
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-10-07 12:35 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1348837172-11784-1-git-send-email-remi.cardona@smartjog.com>
2012-10-01 10:15 ` [PATCH v3 0/7] ds3000/dw2102 improvements Rémi Cardona
2012-10-03 0:34 ` Antti Palosaari
[not found] ` <1348837172-11784-2-git-send-email-remi.cardona@smartjog.com>
2012-10-03 0:36 ` [PATCH 1/7] [media] ds3000: Declare MODULE_FIRMWARE usage Antti Palosaari
[not found] ` <1348837172-11784-3-git-send-email-remi.cardona@smartjog.com>
2012-10-03 0:37 ` [PATCH 2/7] [media] ds3000: remove useless 'locking' Antti Palosaari
[not found] ` <1348837172-11784-4-git-send-email-remi.cardona@smartjog.com>
2012-10-03 0:37 ` [PATCH 3/7] [media] ds3000: properly report register read errors Antti Palosaari
[not found] ` <1348837172-11784-5-git-send-email-remi.cardona@smartjog.com>
2012-10-03 0:37 ` [PATCH 4/7] [media] ds3000: bail out early on i2c failures during firmware load Antti Palosaari
[not found] ` <1348837172-11784-6-git-send-email-remi.cardona@smartjog.com>
2012-10-03 0:37 ` [PATCH 5/7] [media] ds3000: properly report firmware probing issues Antti Palosaari
[not found] ` <1348837172-11784-7-git-send-email-remi.cardona@smartjog.com>
2012-10-03 0:38 ` [PATCH 6/7] [media] ds3000: add module parameter to force firmware upload Antti Palosaari
2012-10-07 12:34 ` Mauro Carvalho Chehab
[not found] ` <1348837172-11784-8-git-send-email-remi.cardona@smartjog.com>
2012-10-03 0:41 ` [PATCH 7/7] [media] dw2102: Declare MODULE_FIRMWARE usage Antti Palosaari
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).