Update of /cvsroot/alsa/alsa-kernel/include In directory sc8-pr-cvs1:/tmp/cvs-serv5376/include
Modified Files: asound.h timer.h Log Message: Enhanced timer API (global functions - ginfo, gparams, gstatus). Added filter for tread. Index: asound.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/include/asound.h,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- asound.h 1 Mar 2003 19:06:17 -0000 1.23 +++ asound.h 2 Mar 2003 10:44:13 -0000 1.24 @@ -557,6 +557,9 @@ #define SNDRV_TIMER_GLOBAL_SYSTEM 0 #define SNDRV_TIMER_GLOBAL_RTC 1 +/* info flags */ +#define SNDRV_TIMER_FLG_SLAVE (1<<0) /* cannot be controlled */ + struct sndrv_timer_id { enum sndrv_timer_class dev_class; enum sndrv_timer_slave_class dev_sclass; @@ -565,31 +568,57 @@ int subdevice; }; +struct sndrv_timer_ginfo { + struct sndrv_timer_id tid; /* requested timer ID */ + unsigned int flags; /* timer flags - SNDRV_TIMER_FLG_* */ + int card; /* card number */ + unsigned char id[64]; /* timer identification */ + unsigned char name[80]; /* timer name */ + unsigned long ticks; /* maximum ticks between interrupts */ + unsigned long resolution; /* average resolution in ns */ + unsigned long resolution_min; /* minimal resolution in ns */ + unsigned long resolution_max; /* maximal resolution in ns */ + unsigned long resolution_step; /* resolution step in ns */ + unsigned int instances; /* active timer instances */ + unsigned char reserved[32]; +}; + +struct sndrv_timer_gparams { + struct sndrv_timer_id tid; /* requested timer ID */ + unsigned long resolution; /* requested resolution in ns */ + unsigned char reserved[32]; +}; + +struct sndrv_timer_gstatus { + struct sndrv_timer_id tid; /* requested timer ID */ + unsigned long resolution; /* current resolution in ns */ + unsigned char reserved[32]; +}; + struct sndrv_timer_select { struct sndrv_timer_id id; /* bind to timer ID */ unsigned char reserved[32]; /* reserved */ }; -#define SNDRV_TIMER_FLG_SLAVE (1<<0) /* cannot be controlled */ - struct sndrv_timer_info { unsigned int flags; /* timer flags - SNDRV_TIMER_FLG_* */ - int card; /* R: card number */ + int card; /* card number */ unsigned char id[64]; /* timer identificator */ unsigned char name[80]; /* timer name */ - unsigned long ticks; /* maximum ticks */ - unsigned long resolution; /* average resolution */ + unsigned long ticks; /* maximum ticks between interrupts */ + unsigned long resolution; /* average resolution in ns */ unsigned char reserved[64]; /* reserved */ }; -#define SNDRV_TIMER_PSFLG_AUTO (1<<0) /* supports auto start */ +#define SNDRV_TIMER_PSFLG_AUTO (1<<0) /* auto start, otherwise one-shot */ struct sndrv_timer_params { unsigned int flags; /* flags - SNDRV_MIXER_PSFLG_* */ unsigned int ticks; /* requested resolution in ticks */ unsigned int queue_size; /* total size of queue (32-1024) */ unsigned int reserved0; /* reserved, was: failure locations */ - unsigned char reserved[64]; /* reserved */ + unsigned int filter; /* event filter (bitmask of SNDRV_TIMER_EVENT_*) */ + unsigned char reserved[60]; /* reserved */ }; struct sndrv_timer_status { @@ -605,10 +634,13 @@ SNDRV_TIMER_IOCTL_PVERSION = _IOR('T', 0x00, int), SNDRV_TIMER_IOCTL_NEXT_DEVICE = _IOWR('T', 0x01, struct sndrv_timer_id), SNDRV_TIMER_IOCTL_TREAD = _IOW('T', 0x02, int), + SNDRV_TIMER_IOCTL_GINFO = _IOWR('T', 0x03, struct sndrv_timer_ginfo), + SNDRV_TIMER_IOCTL_GPARAMS = _IOW('T', 0x04, struct sndrv_timer_gparams), + SNDRV_TIMER_IOCTL_GSTATUS = _IOWR('T', 0x05, struct sndrv_timer_gstatus), SNDRV_TIMER_IOCTL_SELECT = _IOW('T', 0x10, struct sndrv_timer_select), SNDRV_TIMER_IOCTL_INFO = _IOR('T', 0x11, struct sndrv_timer_info), SNDRV_TIMER_IOCTL_PARAMS = _IOW('T', 0x12, struct sndrv_timer_params), - SNDRV_TIMER_IOCTL_STATUS = _IOW('T', 0x14, struct sndrv_timer_status), + SNDRV_TIMER_IOCTL_STATUS = _IOR('T', 0x14, struct sndrv_timer_status), SNDRV_TIMER_IOCTL_START = _IO('T', 0x20), SNDRV_TIMER_IOCTL_STOP = _IO('T', 0x21), SNDRV_TIMER_IOCTL_CONTINUE = _IO('T', 0x22), @@ -628,10 +660,10 @@ SNDRV_TIMER_EVENT_CONTINUE, /* val = resolution in ns */ SNDRV_TIMER_EVENT_PAUSE, /* val = 0 */ /* master timer events for slave timer instances */ - SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 100, - SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 100, - SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 100, - SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 100, + SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10, + SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10, + SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10, + SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10, }; struct sndrv_timer_tread { Index: timer.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/include/timer.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- timer.h 1 Mar 2003 18:56:35 -0000 1.11 +++ timer.h 2 Mar 2003 10:44:13 -0000 1.12 @@ -30,6 +30,9 @@ typedef enum sndrv_timer_slave_class snd_timer_slave_class_t; typedef enum sndrv_timer_global snd_timer_global_t; typedef struct sndrv_timer_id snd_timer_id_t; +typedef struct sndrv_timer_ginfo snd_timer_ginfo_t; +typedef struct sndrv_timer_gparams snd_timer_gparams_t; +typedef struct sndrv_timer_gstatus snd_timer_gstatus_t; typedef struct sndrv_timer_select snd_timer_select_t; typedef struct sndrv_timer_info snd_timer_info_t; typedef struct sndrv_timer_params snd_timer_params_t; @@ -68,6 +71,9 @@ /* -- must be filled with low-level driver */ unsigned int flags; /* various flags */ unsigned long resolution; /* average timer resolution for one tick in nsec */ + unsigned long resolution_min; /* minimal resolution */ + unsigned long resolution_max; /* maximal resolution */ + unsigned long resolution_step; /* step for resolution */ unsigned long ticks; /* max timer ticks per interrupt */ /* -- low-level functions -- */ int (*open) (snd_timer_t * timer); @@ -75,6 +81,7 @@ unsigned long (*c_resolution) (snd_timer_t * timer); int (*start) (snd_timer_t * timer); int (*stop) (snd_timer_t * timer); + int (*set_resolution) (snd_timer_t * timer, unsigned long resolution); }; struct _snd_timer { ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog