162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Freescale General-purpose Timers Module
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright 2006 Freescale Semiconductor, Inc.
662306a36Sopenharmony_ci *               Shlomi Gridish <gridish@freescale.com>
762306a36Sopenharmony_ci *               Jerry Huang <Chang-Ming.Huang@freescale.com>
862306a36Sopenharmony_ci * Copyright (c) MontaVista Software, Inc. 2008.
962306a36Sopenharmony_ci *               Anton Vorontsov <avorontsov@ru.mvista.com>
1062306a36Sopenharmony_ci */
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#ifndef __ASM_FSL_GTM_H
1362306a36Sopenharmony_ci#define __ASM_FSL_GTM_H
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#include <linux/types.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_cistruct gtm;
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_cistruct gtm_timer {
2062306a36Sopenharmony_ci	unsigned int irq;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	struct gtm *gtm;
2362306a36Sopenharmony_ci	bool requested;
2462306a36Sopenharmony_ci	u8 __iomem *gtcfr;
2562306a36Sopenharmony_ci	__be16 __iomem *gtmdr;
2662306a36Sopenharmony_ci	__be16 __iomem *gtpsr;
2762306a36Sopenharmony_ci	__be16 __iomem *gtcnr;
2862306a36Sopenharmony_ci	__be16 __iomem *gtrfr;
2962306a36Sopenharmony_ci	__be16 __iomem *gtevr;
3062306a36Sopenharmony_ci};
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciextern struct gtm_timer *gtm_get_timer16(void);
3362306a36Sopenharmony_ciextern struct gtm_timer *gtm_get_specific_timer16(struct gtm *gtm,
3462306a36Sopenharmony_ci						  unsigned int timer);
3562306a36Sopenharmony_ciextern void gtm_put_timer16(struct gtm_timer *tmr);
3662306a36Sopenharmony_ciextern int gtm_set_timer16(struct gtm_timer *tmr, unsigned long usec,
3762306a36Sopenharmony_ci			     bool reload);
3862306a36Sopenharmony_ciextern int gtm_set_exact_timer16(struct gtm_timer *tmr, u16 usec,
3962306a36Sopenharmony_ci				 bool reload);
4062306a36Sopenharmony_ciextern void gtm_stop_timer16(struct gtm_timer *tmr);
4162306a36Sopenharmony_ciextern void gtm_ack_timer16(struct gtm_timer *tmr, u16 events);
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci#endif /* __ASM_FSL_GTM_H */
44