18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * arch/powerpc/include/asm/mpic_timer.h
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Header file for Mpic Global Timer
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * Copyright 2013 Freescale Semiconductor, Inc.
88c2ecf20Sopenharmony_ci *
98c2ecf20Sopenharmony_ci * Author: Wang Dongsheng <Dongsheng.Wang@freescale.com>
108c2ecf20Sopenharmony_ci *	   Li Yang <leoli@freescale.com>
118c2ecf20Sopenharmony_ci */
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#ifndef __MPIC_TIMER__
148c2ecf20Sopenharmony_ci#define __MPIC_TIMER__
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#include <linux/interrupt.h>
178c2ecf20Sopenharmony_ci#include <linux/time.h>
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_cistruct mpic_timer {
208c2ecf20Sopenharmony_ci	void			*dev;
218c2ecf20Sopenharmony_ci	struct cascade_priv	*cascade_handle;
228c2ecf20Sopenharmony_ci	unsigned int		num;
238c2ecf20Sopenharmony_ci	unsigned int		irq;
248c2ecf20Sopenharmony_ci};
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci#ifdef CONFIG_MPIC_TIMER
278c2ecf20Sopenharmony_cistruct mpic_timer *mpic_request_timer(irq_handler_t fn,  void *dev,
288c2ecf20Sopenharmony_ci		time64_t time);
298c2ecf20Sopenharmony_civoid mpic_start_timer(struct mpic_timer *handle);
308c2ecf20Sopenharmony_civoid mpic_stop_timer(struct mpic_timer *handle);
318c2ecf20Sopenharmony_civoid mpic_get_remain_time(struct mpic_timer *handle, time64_t *time);
328c2ecf20Sopenharmony_civoid mpic_free_timer(struct mpic_timer *handle);
338c2ecf20Sopenharmony_ci#else
348c2ecf20Sopenharmony_cistruct mpic_timer *mpic_request_timer(irq_handler_t fn,  void *dev,
358c2ecf20Sopenharmony_ci		time64_t time) { return NULL; }
368c2ecf20Sopenharmony_civoid mpic_start_timer(struct mpic_timer *handle) { }
378c2ecf20Sopenharmony_civoid mpic_stop_timer(struct mpic_timer *handle) { }
388c2ecf20Sopenharmony_civoid mpic_get_remain_time(struct mpic_timer *handle, time64_t *time) { }
398c2ecf20Sopenharmony_civoid mpic_free_timer(struct mpic_timer *handle) { }
408c2ecf20Sopenharmony_ci#endif
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci#endif
43