/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (c) 2019 MediaTek Inc. */ #ifndef __MTK_LPM_TIMER__ #define __MTK_LPM_TIMER__ #include #include #include #include enum MTK_LPM_TIMER_TYPE { MTK_LPM_TIMER_ONECE, MTK_LPM_TIMER_REPEAT }; struct mt_lpm_timer { int type; unsigned long interval; unsigned long cur; int (*timeout)(unsigned long long dur, void *priv); void *priv; struct timer_list tm; }; int mtk_lpm_timer_is_running(struct mt_lpm_timer *timer); int mtk_lpm_timer_init(struct mt_lpm_timer *timer, int type); int mtk_lpm_timer_start(struct mt_lpm_timer *timer); void mtk_lpm_timer_stop(struct mt_lpm_timer *timer); int mtk_lpm_timer_interval_update(struct mt_lpm_timer *timer, unsigned long long ms); unsigned long mtk_lpm_timer_interval(struct mt_lpm_timer *timer); #endif