Linux-Media Archive on lore.kernel.org
 help / color / Atom feed
From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
To: Sean Young <sean@mess.org>
Cc: linux-media@vger.kernel.org
Subject: Re: [PATCH 2/2] media: dvb: remove replace frontend_debug with dynamic debug
Date: Mon, 20 May 2019 17:32:15 -0300
Message-ID: <20190520173215.79e048d4@coco.lan> (raw)
In-Reply-To: <20190520200144.16713-2-sean@mess.org>

Em Mon, 20 May 2019 21:01:44 +0100
Sean Young <sean@mess.org> escreveu:

> This simplifies the code a little. This does move a dev_dbg() into a
> timing sensitive code path. This is in the microseconds order so dev_dbg()
> should not make a difference.

This may actually not be true... I remember we had, in the past, at the
saa7134 driver a certain tuner that require a small delay at the order
of ~1 millisecond for it to work. 

There was a printk() message between the two hardware register settings
at the place that would require the delay.

I usually debug those things using a serial console, with debug messages
enabled.

So, every time I tested, I was unable to reproduce the bug, while, for
others, the bug was there.

Ok, the internal print facilities upstream changed a lot those years,
so, things may have changed if I was here to do the tests, but it
sounds a little risky to do such change without enabling a lot of
debug stuff and test it on a real hardware via a serial console.


> 
> Signed-off-by: Sean Young <sean@mess.org>
> ---
>  drivers/media/dvb-core/dvb_frontend.c | 39 +++++++++++++--------------
>  1 file changed, 18 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
> index d3c0f6267bf8..3aad13415654 100644
> --- a/drivers/media/dvb-core/dvb_frontend.c
> +++ b/drivers/media/dvb-core/dvb_frontend.c
> @@ -47,15 +47,12 @@
>  #include <media/dvbdev.h>
>  #include <linux/dvb/version.h>
>  
> -static int dvb_frontend_debug;
>  static int dvb_shutdown_timeout;
>  static int dvb_force_auto_inversion;
>  static int dvb_override_tune_delay;
>  static int dvb_powerdown_on_sleep = 1;
>  static int dvb_mfe_wait_time = 5;
>  
> -module_param_named(frontend_debug, dvb_frontend_debug, int, 0644);
> -MODULE_PARM_DESC(frontend_debug, "Turn on/off frontend core debugging (default:off).");
>  module_param(dvb_shutdown_timeout, int, 0644);
>  MODULE_PARM_DESC(dvb_shutdown_timeout, "wait <shutdown_timeout> seconds after close() before suspending hardware");
>  module_param(dvb_force_auto_inversion, int, 0644);
> @@ -917,9 +914,9 @@ static void dvb_frontend_get_frequency_limits(struct dvb_frontend *fe,
>  			 "DVB: adapter %i frontend %u frequency limits undefined - fix the driver\n",
>  			 fe->dvb->num, fe->id);
>  
> -	if (dvb_frontend_debug)
> -		dprintk("frequency interval: tuner: %u...%u, frontend: %u...%u",
> -			tuner_min, tuner_max, frontend_min, frontend_max);
> +	dev_dbg(fe->dvb->device,
> +		"frequency interval: tuner: %u...%u, frontend: %u...%u",
> +		tuner_min, tuner_max, frontend_min, frontend_max);
>  
>  	/* If the standard is for satellite, convert frequencies to kHz */
>  	switch (c->delivery_system) {
> @@ -2586,41 +2583,41 @@ static int dvb_frontend_handle_ioctl(struct file *file,
>  			 */
>  			unsigned long swcmd = ((unsigned long)parg) << 1;
>  			ktime_t nexttime;
> -			ktime_t tv[10];
> +			ktime_t now, lasttime;
>  			int i;
>  			u8 last = 1;
>  
> -			if (dvb_frontend_debug)
> -				dprintk("switch command: 0x%04lx\n",
> -					swcmd);
> +			dev_dbg(fe->dvb->device, "switch command: 0x%04lx\n",
> +				swcmd);
>  			nexttime = ktime_get_boottime();
> -			if (dvb_frontend_debug)
> -				tv[0] = nexttime;
>  			/* before sending a command, initialize by sending
>  			 * a 32ms 18V to the switch
>  			 */
>  			fe->ops.set_voltage(fe, SEC_VOLTAGE_18);
> +
> +			dev_dbg(fe->dvb->device, "(adapter %d): switch delay (should be 32k followed by all 8k)\n",
> +				fe->dvb->num);
> +
> +			lasttime = nexttime;
>  			dvb_frontend_sleep_until(&nexttime, 32000);
>  
>  			for (i = 0; i < 9; i++) {
> -				if (dvb_frontend_debug)
> -					tv[i + 1] = ktime_get_boottime();
>  				if ((swcmd & 0x01) != last) {
>  					/* set voltage to (last ? 13V : 18V) */
>  					fe->ops.set_voltage(fe, (last) ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18);
>  					last = (last) ? 0 : 1;
>  				}
>  				swcmd = swcmd >> 1;
> +
> +				now = ktime_get_boottime();
> +				dev_dbg(fe->dvb->device, "%d: %lld\n", i,
> +					ktime_us_delta(now, lasttime));
> +				lasttime = now;
> +
>  				if (i != 8)
>  					dvb_frontend_sleep_until(&nexttime, 8000);
>  			}
> -			if (dvb_frontend_debug) {
> -				dprintk("(adapter %d): switch delay (should be 32k followed by all 8k)\n",
> -					fe->dvb->num);
> -				for (i = 1; i < 10; i++)
> -					pr_info("%d: %d\n", i,
> -						(int)ktime_us_delta(tv[i], tv[i - 1]));
> -			}
> +
>  			err = 0;
>  			fepriv->state = FESTATE_DISEQC;
>  			fepriv->status = 0;



Thanks,
Mauro

      reply index

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-20 20:01 [PATCH 1/2] media: dvb: warning about dvb frequency limits produces too much noise Sean Young
2019-05-20 20:01 ` [PATCH 2/2] media: dvb: remove replace frontend_debug with dynamic debug Sean Young
2019-05-20 20:32   ` Mauro Carvalho Chehab [this message]

Reply instructions:

You may reply publically 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=20190520173215.79e048d4@coco.lan \
    --to=mchehab+samsung@kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=sean@mess.org \
    /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

Linux-Media Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-media/0 linux-media/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-media linux-media/ https://lore.kernel.org/linux-media \
		linux-media@vger.kernel.org linux-media@archiver.kernel.org
	public-inbox-index linux-media


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-media


AGPL code for this site: git clone https://public-inbox.org/ public-inbox