diff options
Diffstat (limited to 'drivers/char/mmtimer.c')
| -rw-r--r-- | drivers/char/mmtimer.c | 33 | 
1 files changed, 20 insertions, 13 deletions
diff --git a/drivers/char/mmtimer.c b/drivers/char/mmtimer.c index e6d75627c6c..3d6c0671e99 100644 --- a/drivers/char/mmtimer.c +++ b/drivers/char/mmtimer.c @@ -53,6 +53,8 @@ MODULE_LICENSE("GPL");  #define RTC_BITS 55 /* 55 bits for this implementation */ +static struct k_clock sgi_clock; +  extern unsigned long sn_rtc_cycles_per_second;  #define RTC_COUNTER_ADDR        ((long *)LOCAL_MMR_ADDR(SH_RTC)) @@ -487,7 +489,7 @@ static int sgi_clock_get(clockid_t clockid, struct timespec *tp)  	return 0;  }; -static int sgi_clock_set(clockid_t clockid, struct timespec *tp) +static int sgi_clock_set(const clockid_t clockid, const struct timespec *tp)  {  	u64 nsec; @@ -763,15 +765,21 @@ static int sgi_timer_set(struct k_itimer *timr, int flags,  	return err;  } +static int sgi_clock_getres(const clockid_t which_clock, struct timespec *tp) +{ +	tp->tv_sec = 0; +	tp->tv_nsec = sgi_clock_period; +	return 0; +} +  static struct k_clock sgi_clock = { -	.res = 0, -	.clock_set = sgi_clock_set, -	.clock_get = sgi_clock_get, -	.timer_create = sgi_timer_create, -	.nsleep = do_posix_clock_nonanosleep, -	.timer_set = sgi_timer_set, -	.timer_del = sgi_timer_del, -	.timer_get = sgi_timer_get +	.clock_set	= sgi_clock_set, +	.clock_get	= sgi_clock_get, +	.clock_getres	= sgi_clock_getres, +	.timer_create	= sgi_timer_create, +	.timer_set	= sgi_timer_set, +	.timer_del	= sgi_timer_del, +	.timer_get	= sgi_timer_get  };  /** @@ -818,7 +826,7 @@ static int __init mmtimer_init(void)  	/* Allocate list of node ptrs to mmtimer_t's */  	timers = kzalloc(sizeof(struct mmtimer_node)*maxn, GFP_KERNEL); -	if (timers == NULL) { +	if (!timers) {  		printk(KERN_ERR "%s: failed to allocate memory for device\n",  				MMTIMER_NAME);  		goto out3; @@ -831,8 +839,8 @@ static int __init mmtimer_init(void)  			(unsigned long) node);  	} -	sgi_clock_period = sgi_clock.res = NSEC_PER_SEC / sn_rtc_cycles_per_second; -	register_posix_clock(CLOCK_SGI_CYCLE, &sgi_clock); +	sgi_clock_period = NSEC_PER_SEC / sn_rtc_cycles_per_second; +	posix_timers_register_clock(CLOCK_SGI_CYCLE, &sgi_clock);  	printk(KERN_INFO "%s: v%s, %ld MHz\n", MMTIMER_DESC, MMTIMER_VERSION,  	       sn_rtc_cycles_per_second/(unsigned long)1E6); @@ -840,7 +848,6 @@ static int __init mmtimer_init(void)  	return 0;  out3: -	kfree(timers);  	misc_deregister(&mmtimer_miscdev);  out2:  	free_irq(SGI_MMTIMER_VECTOR, NULL);  | 
