Re: [PATCH] omap: Use getnstimeofday for omap_device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 7 Oct 2009, Tony Lindgren wrote:

> Don't know if this generic solution is accurate enough?

Looks fine to me.  Thanks -

Acked-by: Paul Walmsley <paul@xxxxxxxxx>

> 
> Tony
> 
> 
> >From 4b059c50262954ae4ce466983b5cf088851eab19 Mon Sep 17 00:00:00 2001
> From: Tony Lindgren <tony@xxxxxxxxxxx>
> Date: Wed, 7 Oct 2009 17:10:18 -0700
> Subject: [PATCH] omap: Use getnstimeofday for omap_device
> 
> Otherwise we cannot remove OMAP2_IO_ADDRESS.
> 
> Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>
> 
> diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
> index 2c409fc..12513f4 100644
> --- a/arch/arm/plat-omap/omap_device.c
> +++ b/arch/arm/plat-omap/omap_device.c
> @@ -103,21 +103,6 @@
>  /* Private functions */
>  
>  /**
> - * _read_32ksynct - read the OMAP 32K sync timer
> - *
> - * Returns the current value of the 32KiHz synchronization counter.
> - * XXX this should be generalized to simply read the system clocksource.
> - * XXX this should be moved to a separate synctimer32k.c file
> - */
> -static u32 _read_32ksynct(void)
> -{
> -	if (!cpu_class_is_omap2())
> -		BUG();
> -
> -	return __raw_readl(OMAP2_IO_ADDRESS(OMAP_32KSYNCT_BASE + 0x010));
> -}
> -
> -/**
>   * _omap_device_activate - increase device readiness
>   * @od: struct omap_device *
>   * @ignore_lat: increase to latency target (0) or full readiness (1)?
> @@ -133,13 +118,13 @@ static u32 _read_32ksynct(void)
>   */
>  static int _omap_device_activate(struct omap_device *od, u8 ignore_lat)
>  {
> -	u32 a, b;
> +	struct timespec a, b, c;
>  
>  	pr_debug("omap_device: %s: activating\n", od->pdev.name);
>  
>  	while (od->pm_lat_level > 0) {
>  		struct omap_device_pm_latency *odpl;
> -		int act_lat = 0;
> +		unsigned long long act_lat = 0;
>  
>  		od->pm_lat_level--;
>  
> @@ -149,20 +134,22 @@ static int _omap_device_activate(struct omap_device *od, u8 ignore_lat)
>  		    (od->dev_wakeup_lat <= od->_dev_wakeup_lat_limit))
>  			break;
>  
> -		a = _read_32ksynct();
> +		getnstimeofday(&a);
>  
>  		/* XXX check return code */
>  		odpl->activate_func(od);
>  
> -		b = _read_32ksynct();
> +		getnstimeofday(&b);
>  
> -		act_lat = (b - a) >> 15; /* 32KiHz cycles to microseconds */
> +		c = timespec_sub(b, a);
> +		act_lat = timespec_to_ns(&c) * NSEC_PER_USEC;
>  
>  		pr_debug("omap_device: %s: pm_lat %d: activate: elapsed time "
> -			 "%d usec\n", od->pdev.name, od->pm_lat_level, act_lat);
> +			 "%llu usec\n", od->pdev.name, od->pm_lat_level,
> +			 act_lat);
>  
>  		WARN(act_lat > odpl->activate_lat, "omap_device: %s.%d: "
> -		     "activate step %d took longer than expected (%d > %d)\n",
> +		     "activate step %d took longer than expected (%llu > %d)\n",
>  		     od->pdev.name, od->pdev.id, od->pm_lat_level,
>  		     act_lat, odpl->activate_lat);
>  
> @@ -188,13 +175,13 @@ static int _omap_device_activate(struct omap_device *od, u8 ignore_lat)
>   */
>  static int _omap_device_deactivate(struct omap_device *od, u8 ignore_lat)
>  {
> -	u32 a, b;
> +	struct timespec a, b, c;
>  
>  	pr_debug("omap_device: %s: deactivating\n", od->pdev.name);
>  
>  	while (od->pm_lat_level < od->pm_lats_cnt) {
>  		struct omap_device_pm_latency *odpl;
> -		int deact_lat = 0;
> +		unsigned long long deact_lat = 0;
>  
>  		odpl = od->pm_lats + od->pm_lat_level;
>  
> @@ -203,23 +190,24 @@ static int _omap_device_deactivate(struct omap_device *od, u8 ignore_lat)
>  		     od->_dev_wakeup_lat_limit))
>  			break;
>  
> -		a = _read_32ksynct();
> +		getnstimeofday(&a);
>  
>  		/* XXX check return code */
>  		odpl->deactivate_func(od);
>  
> -		b = _read_32ksynct();
> +		getnstimeofday(&b);
>  
> -		deact_lat = (b - a) >> 15; /* 32KiHz cycles to microseconds */
> +		c = timespec_sub(b, a);
> +		deact_lat = timespec_to_ns(&c) * NSEC_PER_USEC;
>  
>  		pr_debug("omap_device: %s: pm_lat %d: deactivate: elapsed time "
> -			 "%d usec\n", od->pdev.name, od->pm_lat_level,
> +			 "%llu usec\n", od->pdev.name, od->pm_lat_level,
>  			 deact_lat);
>  
>  		WARN(deact_lat > odpl->deactivate_lat, "omap_device: %s.%d: "
> -		     "deactivate step %d took longer than expected (%d > %d)\n",
> -		     od->pdev.name, od->pdev.id, od->pm_lat_level,
> -		     deact_lat, odpl->deactivate_lat);
> +		     "deactivate step %d took longer than expected "
> +		     "(%llu > %d)\n", od->pdev.name, od->pdev.id,
> +		     od->pm_lat_level, deact_lat, odpl->deactivate_lat);
>  
>  		od->dev_wakeup_lat += odpl->activate_lat;
>  
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


- Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux