brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · dead74b Raw
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