12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
236ca09beSDongsheng.wang@freescale.com /*
336ca09beSDongsheng.wang@freescale.com  * arch/powerpc/include/asm/mpic_timer.h
436ca09beSDongsheng.wang@freescale.com  *
536ca09beSDongsheng.wang@freescale.com  * Header file for Mpic Global Timer
636ca09beSDongsheng.wang@freescale.com  *
736ca09beSDongsheng.wang@freescale.com  * Copyright 2013 Freescale Semiconductor, Inc.
836ca09beSDongsheng.wang@freescale.com  *
936ca09beSDongsheng.wang@freescale.com  * Author: Wang Dongsheng <Dongsheng.Wang@freescale.com>
1036ca09beSDongsheng.wang@freescale.com  *	   Li Yang <leoli@freescale.com>
1136ca09beSDongsheng.wang@freescale.com  */
1236ca09beSDongsheng.wang@freescale.com 
1336ca09beSDongsheng.wang@freescale.com #ifndef __MPIC_TIMER__
1436ca09beSDongsheng.wang@freescale.com #define __MPIC_TIMER__
1536ca09beSDongsheng.wang@freescale.com 
1636ca09beSDongsheng.wang@freescale.com #include <linux/interrupt.h>
1736ca09beSDongsheng.wang@freescale.com #include <linux/time.h>
1836ca09beSDongsheng.wang@freescale.com 
1936ca09beSDongsheng.wang@freescale.com struct mpic_timer {
2036ca09beSDongsheng.wang@freescale.com 	void			*dev;
2136ca09beSDongsheng.wang@freescale.com 	struct cascade_priv	*cascade_handle;
2236ca09beSDongsheng.wang@freescale.com 	unsigned int		num;
2336ca09beSDongsheng.wang@freescale.com 	unsigned int		irq;
2436ca09beSDongsheng.wang@freescale.com };
2536ca09beSDongsheng.wang@freescale.com 
2636ca09beSDongsheng.wang@freescale.com #ifdef CONFIG_MPIC_TIMER
2736ca09beSDongsheng.wang@freescale.com struct mpic_timer *mpic_request_timer(irq_handler_t fn,  void *dev,
2811ed8c55SArnd Bergmann 		time64_t time);
2936ca09beSDongsheng.wang@freescale.com void mpic_start_timer(struct mpic_timer *handle);
3036ca09beSDongsheng.wang@freescale.com void mpic_stop_timer(struct mpic_timer *handle);
3111ed8c55SArnd Bergmann void mpic_get_remain_time(struct mpic_timer *handle, time64_t *time);
3236ca09beSDongsheng.wang@freescale.com void mpic_free_timer(struct mpic_timer *handle);
3336ca09beSDongsheng.wang@freescale.com #else
mpic_request_timer(irq_handler_t fn,void * dev,time64_t time)3436ca09beSDongsheng.wang@freescale.com struct mpic_timer *mpic_request_timer(irq_handler_t fn,  void *dev,
3511ed8c55SArnd Bergmann 		time64_t time) { return NULL; }
mpic_start_timer(struct mpic_timer * handle)3636ca09beSDongsheng.wang@freescale.com void mpic_start_timer(struct mpic_timer *handle) { }
mpic_stop_timer(struct mpic_timer * handle)3736ca09beSDongsheng.wang@freescale.com void mpic_stop_timer(struct mpic_timer *handle) { }
mpic_get_remain_time(struct mpic_timer * handle,time64_t * time)3811ed8c55SArnd Bergmann void mpic_get_remain_time(struct mpic_timer *handle, time64_t *time) { }
mpic_free_timer(struct mpic_timer * handle)3936ca09beSDongsheng.wang@freescale.com void mpic_free_timer(struct mpic_timer *handle) { }
4036ca09beSDongsheng.wang@freescale.com #endif
4136ca09beSDongsheng.wang@freescale.com 
4236ca09beSDongsheng.wang@freescale.com #endif
43