Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / sound / core / seq / oss / seq_oss_timer.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * OSS compatible sequencer driver
4  * timer handling routines
5  *
6  * Copyright (C) 1998,99 Takashi Iwai <tiwai@suse.de>
7  */
8
9 #ifndef __SEQ_OSS_TIMER_H
10 #define __SEQ_OSS_TIMER_H
11
12 #include "seq_oss_device.h"
13
14 /*
15  * timer information definition
16  */
17 struct seq_oss_timer {
18         struct seq_oss_devinfo *dp;
19         reltime_t cur_tick;
20         int realtime;
21         int running;
22         int tempo, ppq; /* ALSA queue */
23         int oss_tempo, oss_timebase;
24 };      
25
26
27 struct seq_oss_timer *snd_seq_oss_timer_new(struct seq_oss_devinfo *dp);
28 void snd_seq_oss_timer_delete(struct seq_oss_timer *dp);
29
30 int snd_seq_oss_timer_start(struct seq_oss_timer *timer);
31 int snd_seq_oss_timer_stop(struct seq_oss_timer *timer);
32 int snd_seq_oss_timer_continue(struct seq_oss_timer *timer);
33 int snd_seq_oss_timer_tempo(struct seq_oss_timer *timer, int value);
34 #define snd_seq_oss_timer_reset  snd_seq_oss_timer_start
35
36 int snd_seq_oss_timer_ioctl(struct seq_oss_timer *timer, unsigned int cmd, int __user *arg);
37
38 /*
39  * get current processed time
40  */
41 static inline abstime_t
42 snd_seq_oss_timer_cur_tick(struct seq_oss_timer *timer)
43 {
44         return timer->cur_tick;
45 }
46
47
48 /*
49  * is realtime event?
50  */
51 static inline int
52 snd_seq_oss_timer_is_realtime(struct seq_oss_timer *timer)
53 {
54         return timer->realtime;
55 }
56
57 #endif