All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Input: analog: Always use ktime functions
Date: Mon, 6 Sep 2021 22:59:19 -0700	[thread overview]
Message-ID: <YTb/t2Qn0BklAlpk@google.com> (raw)
In-Reply-To: <20210907050606.2142634-1-linux@roeck-us.net>

Hi Guenter,

On Mon, Sep 06, 2021 at 10:06:06PM -0700, Guenter Roeck wrote:
> m68k, mips, s390, and sparc allmodconfig images fail to build with the
> following error.
> 
> drivers/input/joystick/analog.c:160:2: error:
> 	#warning Precise timer not defined for this architecture.
> 
> Remove architecture specific time handling code and always use ktime
> functions to determine time deltas. Also remove the now useless use_ktime
> kernel parameter.
> 
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
>  drivers/input/joystick/analog.c | 74 ++-------------------------------
>  1 file changed, 3 insertions(+), 71 deletions(-)
> 
> diff --git a/drivers/input/joystick/analog.c b/drivers/input/joystick/analog.c
> index f798922a4598..4702982182fa 100644
> --- a/drivers/input/joystick/analog.c
> +++ b/drivers/input/joystick/analog.c
> @@ -28,10 +28,6 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
>  MODULE_DESCRIPTION(DRIVER_DESC);
>  MODULE_LICENSE("GPL");
>  
> -static bool use_ktime = true;
> -module_param(use_ktime, bool, 0400);
> -MODULE_PARM_DESC(use_ktime, "Use ktime for measuring I/O speed");
> -
>  /*
>   * Option parsing.
>   */
> @@ -119,64 +115,14 @@ struct analog_port {
>  	int axtime;
>  };
>  
> -/*
> - * Time macros.
> - */
> -
> -#ifdef __i386__
> -
> -#include <linux/i8253.h>
> -
> -#define GET_TIME(x)	do { if (boot_cpu_has(X86_FEATURE_TSC)) x = (unsigned int)rdtsc(); else x = get_time_pit(); } while (0)
> -#define DELTA(x,y)	(boot_cpu_has(X86_FEATURE_TSC) ? ((y) - (x)) : ((x) - (y) + ((x) < (y) ? PIT_TICK_RATE / HZ : 0)))
> -#define TIME_NAME	(boot_cpu_has(X86_FEATURE_TSC)?"TSC":"PIT")
> -static unsigned int get_time_pit(void)
> -{
> -        unsigned long flags;
> -        unsigned int count;
> -
> -        raw_spin_lock_irqsave(&i8253_lock, flags);
> -        outb_p(0x00, 0x43);
> -        count = inb_p(0x40);
> -        count |= inb_p(0x40) << 8;
> -        raw_spin_unlock_irqrestore(&i8253_lock, flags);
> -
> -        return count;
> -}
> -#elif defined(__x86_64__)
> -#define GET_TIME(x)	do { x = (unsigned int)rdtsc(); } while (0)
> -#define DELTA(x,y)	((y)-(x))
> -#define TIME_NAME	"TSC"
> -#elif defined(__alpha__) || defined(CONFIG_ARM) || defined(CONFIG_ARM64) || defined(CONFIG_PPC) || defined(CONFIG_RISCV)
> -#define GET_TIME(x)	do { x = get_cycles(); } while (0)
> -#define DELTA(x,y)	((y)-(x))
> -#define TIME_NAME	"get_cycles"
> -#else
> -#define FAKE_TIME
> -static unsigned long analog_faketime = 0;
> -#define GET_TIME(x)     do { x = analog_faketime++; } while(0)
> -#define DELTA(x,y)	((y)-(x))
> -#define TIME_NAME	"Unreliable"
> -#warning Precise timer not defined for this architecture.
> -#endif
> -
>  static inline u64 get_time(void)
>  {
> -	if (use_ktime) {
> -		return ktime_get_ns();
> -	} else {
> -		unsigned int x;
> -		GET_TIME(x);
> -		return x;
> -	}
> +	return ktime_get_ns();
>  }
>  
>  static inline unsigned int delta(u64 x, u64 y)
>  {
> -	if (use_ktime)
> -		return y - x;
> -	else
> -		return DELTA((unsigned int)x, (unsigned int)y);
> +	return y - x;

I wonder if we should get rid of these wrappers and use ktime_t and
ktime_get(), ktime_sub(), etc directly.

>  }
>  
>  /*
> @@ -378,21 +324,7 @@ static void analog_calibrate_timer(struct analog_port *port)
>  	u64 t1, t2, t3;
>  	unsigned long flags;
>  
> -	if (use_ktime) {
> -		port->speed = 1000000;
> -	} else {
> -		local_irq_save(flags);
> -		t1 = get_time();
> -#ifdef FAKE_TIME
> -		analog_faketime += 830;
> -#endif
> -		mdelay(1);
> -		t2 = get_time();
> -		t3 = get_time();
> -		local_irq_restore(flags);
> -
> -		port->speed = delta(t1, t2) - delta(t2, t3);
> -	}
> +	port->speed = 1000000;

It seems we could get rid of port->speed.

Thanks.

-- 
Dmitry

  reply	other threads:[~2021-09-07  5:59 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-07  5:06 [PATCH] Input: analog: Always use ktime functions Guenter Roeck
2021-09-07  5:59 ` Dmitry Torokhov [this message]
2021-09-07  6:25   ` Guenter Roeck

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=YTb/t2Qn0BklAlpk@google.com \
    --to=dmitry.torokhov@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    /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.