84 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2#ifndef __SOUND_SEQ_DEVICE_H3#define __SOUND_SEQ_DEVICE_H4 5/*6 * ALSA sequencer device management7 * Copyright (c) 1999 by Takashi Iwai <tiwai@suse.de>8 */9 10/*11 * registered device information12 */13 14struct snd_seq_device {15 /* device info */16 struct snd_card *card; /* sound card */17 int device; /* device number */18 const char *id; /* driver id */19 char name[80]; /* device name */20 int argsize; /* size of the argument */21 void *driver_data; /* private data for driver */22 void *private_data; /* private data for the caller */23 void (*private_free)(struct snd_seq_device *device);24 struct device dev;25};26 27#define to_seq_dev(_dev) \28 container_of(_dev, struct snd_seq_device, dev)29 30/* sequencer driver */31 32/* driver operators33 * probe:34 * Initialize the device with given parameters.35 * Typically,36 * 1. call snd_hwdep_new37 * 2. allocate private data and initialize it38 * 3. call snd_hwdep_register39 * 4. store the instance to dev->driver_data pointer.40 * 41 * remove:42 * Release the private data.43 * Typically, call snd_device_free(dev->card, dev->driver_data)44 */45struct snd_seq_driver {46 struct device_driver driver;47 char *id;48 int argsize;49};50 51#define to_seq_drv(_drv) \52 container_of(_drv, struct snd_seq_driver, driver)53 54/*55 * prototypes56 */57#ifdef CONFIG_MODULES58void snd_seq_device_load_drivers(void);59#else60#define snd_seq_device_load_drivers()61#endif62int snd_seq_device_new(struct snd_card *card, int device, const char *id,63 int argsize, struct snd_seq_device **result);64 65#define SNDRV_SEQ_DEVICE_ARGPTR(dev) (void *)((char *)(dev) + sizeof(struct snd_seq_device))66 67int __must_check __snd_seq_driver_register(struct snd_seq_driver *drv,68 struct module *mod);69#define snd_seq_driver_register(drv) \70 __snd_seq_driver_register(drv, THIS_MODULE)71void snd_seq_driver_unregister(struct snd_seq_driver *drv);72 73#define module_snd_seq_driver(drv) \74 module_driver(drv, snd_seq_driver_register, snd_seq_driver_unregister)75 76/*77 * id strings for generic devices78 */79#define SNDRV_SEQ_DEV_ID_MIDISYNTH "seq-midi"80#define SNDRV_SEQ_DEV_ID_OPL3 "opl3-synth"81#define SNDRV_SEQ_DEV_ID_UMP "seq-ump-client"82 83#endif /* __SOUND_SEQ_DEVICE_H */84