162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * arch/powerpc/include/asm/mpic_timer.h
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Header file for Mpic Global Timer
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright 2013 Freescale Semiconductor, Inc.
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * Author: Wang Dongsheng <Dongsheng.Wang@freescale.com>
1062306a36Sopenharmony_ci *	   Li Yang <leoli@freescale.com>
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#ifndef __MPIC_TIMER__
1462306a36Sopenharmony_ci#define __MPIC_TIMER__
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#include <linux/interrupt.h>
1762306a36Sopenharmony_ci#include <linux/time.h>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_cistruct mpic_timer {
2062306a36Sopenharmony_ci	void			*dev;
2162306a36Sopenharmony_ci	struct cascade_priv	*cascade_handle;
2262306a36Sopenharmony_ci	unsigned int		num;
2362306a36Sopenharmony_ci	unsigned int		irq;
2462306a36Sopenharmony_ci};
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci#ifdef CONFIG_MPIC_TIMER
2762306a36Sopenharmony_cistruct mpic_timer *mpic_request_timer(irq_handler_t fn,  void *dev,
2862306a36Sopenharmony_ci		time64_t time);
2962306a36Sopenharmony_civoid mpic_start_timer(struct mpic_timer *handle);
3062306a36Sopenharmony_civoid mpic_stop_timer(struct mpic_timer *handle);
3162306a36Sopenharmony_civoid mpic_get_remain_time(struct mpic_timer *handle, time64_t *time);
3262306a36Sopenharmony_civoid mpic_free_timer(struct mpic_timer *handle);
3362306a36Sopenharmony_ci#else
3462306a36Sopenharmony_cistruct mpic_timer *mpic_request_timer(irq_handler_t fn,  void *dev,
3562306a36Sopenharmony_ci		time64_t time) { return NULL; }
3662306a36Sopenharmony_civoid mpic_start_timer(struct mpic_timer *handle) { }
3762306a36Sopenharmony_civoid mpic_stop_timer(struct mpic_timer *handle) { }
3862306a36Sopenharmony_civoid mpic_get_remain_time(struct mpic_timer *handle, time64_t *time) { }
3962306a36Sopenharmony_civoid mpic_free_timer(struct mpic_timer *handle) { }
4062306a36Sopenharmony_ci#endif
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#endif
43