2019-05-27 09:55:05 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2005-04-17 02:20:36 +04:00
# ifndef __SOUND_SEQ_DEVICE_H
# define __SOUND_SEQ_DEVICE_H
/*
* ALSA sequencer device management
* Copyright ( c ) 1999 by Takashi Iwai < tiwai @ suse . de >
*/
/*
* registered device information
*/
struct snd_seq_device {
/* device info */
2005-11-17 16:04:02 +03:00
struct snd_card * card ; /* sound card */
2005-04-17 02:20:36 +04:00
int device ; /* device number */
2015-02-12 15:40:50 +03:00
const char * id ; /* driver id */
2005-04-17 02:20:36 +04:00
char name [ 80 ] ; /* device name */
int argsize ; /* size of the argument */
void * driver_data ; /* private data for driver */
void * private_data ; /* private data for the caller */
2005-11-17 16:04:02 +03:00
void ( * private_free ) ( struct snd_seq_device * device ) ;
2015-02-12 12:51:59 +03:00
struct device dev ;
2005-04-17 02:20:36 +04:00
} ;
2015-02-12 12:51:59 +03:00
# define to_seq_dev(_dev) \
container_of ( _dev , struct snd_seq_device , dev )
2005-04-17 02:20:36 +04:00
2015-02-12 15:43:22 +03:00
/* sequencer driver */
2005-04-17 02:20:36 +04:00
/* driver operators
2015-02-12 15:43:22 +03:00
* probe :
2005-04-17 02:20:36 +04:00
* Initialize the device with given parameters .
* Typically ,
* 1. call snd_hwdep_new
* 2. allocate private data and initialize it
* 3. call snd_hwdep_register
* 4. store the instance to dev - > driver_data pointer .
*
2015-02-12 15:43:22 +03:00
* remove :
2005-04-17 02:20:36 +04:00
* Release the private data .
* Typically , call snd_device_free ( dev - > card , dev - > driver_data )
*/
2015-02-12 15:43:22 +03:00
struct snd_seq_driver {
struct device_driver driver ;
char * id ;
int argsize ;
2005-04-17 02:20:36 +04:00
} ;
2015-02-12 15:43:22 +03:00
# define to_seq_drv(_drv) \
container_of ( _drv , struct snd_seq_driver , driver )
2005-04-17 02:20:36 +04:00
/*
* prototypes
*/
2015-02-12 00:39:51 +03:00
# ifdef CONFIG_MODULES
2005-04-17 02:20:36 +04:00
void snd_seq_device_load_drivers ( void ) ;
2015-02-12 00:39:51 +03:00
# else
# define snd_seq_device_load_drivers()
# endif
2015-02-12 15:40:50 +03:00
int snd_seq_device_new ( struct snd_card * card , int device , const char * id ,
int argsize , struct snd_seq_device * * result ) ;
2005-04-17 02:20:36 +04:00
2005-11-17 16:04:02 +03:00
# define SNDRV_SEQ_DEVICE_ARGPTR(dev) (void *)((char *)(dev) + sizeof(struct snd_seq_device))
2005-04-17 02:20:36 +04:00
2015-02-12 15:43:22 +03:00
int __must_check __snd_seq_driver_register ( struct snd_seq_driver * drv ,
struct module * mod ) ;
# define snd_seq_driver_register(drv) \
__snd_seq_driver_register ( drv , THIS_MODULE )
void snd_seq_driver_unregister ( struct snd_seq_driver * drv ) ;
# define module_snd_seq_driver(drv) \
module_driver ( drv , snd_seq_driver_register , snd_seq_driver_unregister )
2005-04-17 02:20:36 +04:00
/*
* id strings for generic devices
*/
# define SNDRV_SEQ_DEV_ID_MIDISYNTH "seq-midi"
# define SNDRV_SEQ_DEV_ID_OPL3 "opl3-synth"
# endif /* __SOUND_SEQ_DEVICE_H */