Browse Source

[ALSA] Remove xxx_t typedefs: Emu-X synth

Modules: Common EMU synth,SoundFont,Synth

Remove xxx_t typedefs from the Emu-X synth support.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
imx_3.10.17_1.0.0_ga
Takashi Iwai 15 years ago
committed by Jaroslav Kysela
parent
commit
03da312ac0
15 changed files with 550 additions and 495 deletions
  1. +53
    -52
      include/sound/emux_synth.h
  2. +18
    -18
      include/sound/sfnt_info.h
  3. +37
    -38
      include/sound/soundfont.h
  4. +15
    -17
      include/sound/util_mem.h
  5. +15
    -14
      sound/synth/emux/emux.c
  6. +24
    -20
      sound/synth/emux/emux_effect.c
  7. +12
    -11
      sound/synth/emux/emux_hwdep.c
  8. +17
    -13
      sound/synth/emux/emux_nrpn.c
  9. +48
    -42
      sound/synth/emux/emux_oss.c
  10. +7
    -7
      sound/synth/emux/emux_proc.c
  11. +37
    -37
      sound/synth/emux/emux_seq.c
  12. +72
    -67
      sound/synth/emux/emux_synth.c
  13. +38
    -29
      sound/synth/emux/emux_voice.h
  14. +137
    -111
      sound/synth/emux/soundfont.c
  15. +20
    -19
      sound/synth/util_mem.c

+ 53
- 52
include/sound/emux_synth.h View File

@ -36,39 +36,40 @@
*/
#define SNDRV_EMUX_USE_RAW_EFFECT
/*
* typedefs
*/
typedef struct snd_emux_effect_table snd_emux_effect_table_t;
typedef struct snd_emux_port snd_emux_port_t;
typedef struct snd_emux_voice snd_emux_voice_t;
typedef struct snd_emux snd_emux_t;
struct snd_emux;
struct snd_emux_port;
struct snd_emux_voice;
struct snd_emux_effect_table;
/*
* operators
*/
typedef struct snd_emux_operators {
struct snd_emux_operators {
struct module *owner;
snd_emux_voice_t *(*get_voice)(snd_emux_t *emu, snd_emux_port_t *port);
int (*prepare)(snd_emux_voice_t *vp);
void (*trigger)(snd_emux_voice_t *vp);
void (*release)(snd_emux_voice_t *vp);
void (*update)(snd_emux_voice_t *vp, int update);
void (*terminate)(snd_emux_voice_t *vp);
void (*free_voice)(snd_emux_voice_t *vp);
void (*reset)(snd_emux_t *emu, int ch);
/* the first parameters are snd_emux_t */
int (*sample_new)(snd_emux_t *emu, snd_sf_sample_t *sp, snd_util_memhdr_t *hdr, const void __user *data, long count);
int (*sample_free)(snd_emux_t *emu, snd_sf_sample_t *sp, snd_util_memhdr_t *hdr);
void (*sample_reset)(snd_emux_t *emu);
int (*load_fx)(snd_emux_t *emu, int type, int arg, const void __user *data, long count);
void (*sysex)(snd_emux_t *emu, char *buf, int len, int parsed, snd_midi_channel_set_t *chset);
struct snd_emux_voice *(*get_voice)(struct snd_emux *emu,
struct snd_emux_port *port);
int (*prepare)(struct snd_emux_voice *vp);
void (*trigger)(struct snd_emux_voice *vp);
void (*release)(struct snd_emux_voice *vp);
void (*update)(struct snd_emux_voice *vp, int update);
void (*terminate)(struct snd_emux_voice *vp);
void (*free_voice)(struct snd_emux_voice *vp);
void (*reset)(struct snd_emux *emu, int ch);
/* the first parameters are struct snd_emux */
int (*sample_new)(struct snd_emux *emu, struct snd_sf_sample *sp,
struct snd_util_memhdr *hdr,
const void __user *data, long count);
int (*sample_free)(struct snd_emux *emu, struct snd_sf_sample *sp,
struct snd_util_memhdr *hdr);
void (*sample_reset)(struct snd_emux *emu);
int (*load_fx)(struct snd_emux *emu, int type, int arg,
const void __user *data, long count);
void (*sysex)(struct snd_emux *emu, char *buf, int len, int parsed,
struct snd_midi_channel_set *chset);
#ifdef CONFIG_SND_SEQUENCER_OSS
int (*oss_ioctl)(snd_emux_t *emu, int cmd, int p1, int p2);
int (*oss_ioctl)(struct snd_emux *emu, int cmd, int p1, int p2);
#endif
} snd_emux_operators_t;
};
/*
@ -90,46 +91,46 @@ typedef struct snd_emux_operators {
*/
struct snd_emux {
snd_card_t *card; /* assigned card */
struct snd_card *card; /* assigned card */
/* following should be initialized before registration */
int max_voices; /* Number of voices */
int mem_size; /* memory size (in byte) */
int num_ports; /* number of ports to be created */
int pitch_shift; /* pitch shift value (for Emu10k1) */
snd_emux_operators_t ops; /* operators */
struct snd_emux_operators ops; /* operators */
void *hw; /* hardware */
unsigned long flags; /* other conditions */
int midi_ports; /* number of virtual midi devices */
int midi_devidx; /* device offset of virtual midi */
unsigned int linear_panning: 1; /* panning is linear (sbawe = 1, emu10k1 = 0) */
int hwdep_idx; /* hwdep device index */
snd_hwdep_t *hwdep; /* hwdep device */
struct snd_hwdep *hwdep; /* hwdep device */
/* private */
int num_voices; /* current number of voices */
snd_sf_list_t *sflist; /* root of SoundFont list */
snd_emux_voice_t *voices; /* Voices (EMU 'channel') */
struct snd_sf_list *sflist; /* root of SoundFont list */
struct snd_emux_voice *voices; /* Voices (EMU 'channel') */
int use_time; /* allocation counter */
spinlock_t voice_lock; /* Lock for voice access */
struct semaphore register_mutex;
int client; /* For the sequencer client */
int ports[SNDRV_EMUX_MAX_PORTS]; /* The ports for this device */
snd_emux_port_t *portptrs[SNDRV_EMUX_MAX_PORTS];
struct snd_emux_port *portptrs[SNDRV_EMUX_MAX_PORTS];
int used; /* use counter */
char *name; /* name of the device (internal) */
snd_rawmidi_t **vmidi;
struct snd_rawmidi **vmidi;
struct timer_list tlist; /* for pending note-offs */
int timer_active;
snd_util_memhdr_t *memhdr; /* memory chunk information */
struct snd_util_memhdr *memhdr; /* memory chunk information */
#ifdef CONFIG_PROC_FS
snd_info_entry_t *proc;
struct snd_info_entry *proc;
#endif
#ifdef CONFIG_SND_SEQUENCER_OSS
snd_seq_device_t *oss_synth;
struct snd_seq_device *oss_synth;
#endif
};
@ -139,18 +140,18 @@ struct snd_emux {
*/
struct snd_emux_port {
snd_midi_channel_set_t chset;
snd_emux_t *emu;
struct snd_midi_channel_set chset;
struct snd_emux *emu;
char port_mode; /* operation mode */
int volume_atten; /* emuX raw attenuation */
unsigned long drum_flags; /* drum bitmaps */
int ctrls[EMUX_MD_END]; /* control parameters */
#ifdef SNDRV_EMUX_USE_RAW_EFFECT
snd_emux_effect_table_t *effect;
struct snd_emux_effect_table *effect;
#endif
#ifdef CONFIG_SND_SEQUENCER_OSS
snd_seq_oss_arg_t *oss_arg;
struct snd_seq_oss_arg *oss_arg;
#endif
};
@ -179,16 +180,16 @@ struct snd_emux_voice {
unsigned char key;
unsigned char velocity; /* Velocity of current note */
snd_sf_zone_t *zone; /* Zone assigned to this note */
struct snd_sf_zone *zone; /* Zone assigned to this note */
void *block; /* sample block pointer (optional) */
snd_midi_channel_t *chan; /* Midi channel for this note */
snd_emux_port_t *port; /* associated port */
snd_emux_t *emu; /* assigned root info */
void *hw; /* hardware pointer (emu8000_t or emu10k1_t) */
struct snd_midi_channel *chan; /* Midi channel for this note */
struct snd_emux_port *port; /* associated port */
struct snd_emux *emu; /* assigned root info */
void *hw; /* hardware pointer (emu8000 or emu10k1) */
unsigned long ontime; /* jiffies at note triggered */
/* Emu8k/Emu10k1 registers */
soundfont_voice_info_t reg;
struct soundfont_voice_info reg;
/* additional registers */
int avol; /* volume attenuation */
@ -229,15 +230,15 @@ struct snd_emux_effect_table {
/*
* prototypes - interface to Emu10k1 and Emu8k routines
*/
int snd_emux_new(snd_emux_t **remu);
int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name);
int snd_emux_free(snd_emux_t *emu);
int snd_emux_new(struct snd_emux **remu);
int snd_emux_register(struct snd_emux *emu, struct snd_card *card, int index, char *name);
int snd_emux_free(struct snd_emux *emu);
/*
* exported functions
*/
void snd_emux_terminate_all(snd_emux_t *emu);
void snd_emux_lock_voice(snd_emux_t *emu, int voice);
void snd_emux_unlock_voice(snd_emux_t *emu, int voice);
void snd_emux_terminate_all(struct snd_emux *emu);
void snd_emux_lock_voice(struct snd_emux *emu, int voice);
void snd_emux_unlock_voice(struct snd_emux *emu, int voice);
#endif /* __SOUND_EMUX_SYNTH_H */

+ 18
- 18
include/sound/sfnt_info.h View File

@ -35,7 +35,7 @@
#endif
/* patch interface header: 16 bytes */
typedef struct soundfont_patch_info_t {
struct soundfont_patch_info {
unsigned short key; /* use the key below */
#define SNDRV_OSS_SOUNDFONT_PATCH SNDRV_OSS_PATCHKEY(0x07)
@ -59,7 +59,7 @@ typedef struct soundfont_patch_info_t {
short reserved; /* word alignment data */
/* the actual patch data begins after this */
} soundfont_patch_info_t;
};
/*
@ -68,7 +68,7 @@ typedef struct soundfont_patch_info_t {
#define SNDRV_SFNT_PATCH_NAME_LEN 32
typedef struct soundfont_open_parm_t {
struct soundfont_open_parm {
unsigned short type; /* sample type */
#define SNDRV_SFNT_PAT_TYPE_MISC 0
#define SNDRV_SFNT_PAT_TYPE_GUS 6
@ -78,7 +78,7 @@ typedef struct soundfont_open_parm_t {
short reserved;
char name[SNDRV_SFNT_PATCH_NAME_LEN];
} soundfont_open_parm_t;
};
/*
@ -86,7 +86,7 @@ typedef struct soundfont_open_parm_t {
*/
/* wave table envelope & effect parameters to control EMU8000 */
typedef struct soundfont_voice_parm_t {
struct soundfont_voice_parm {
unsigned short moddelay; /* modulation delay (0x8000) */
unsigned short modatkhld; /* modulation attack & hold time (0x7f7f) */
unsigned short moddcysus; /* modulation decay & sustain (0x7f7f) */
@ -108,11 +108,11 @@ typedef struct soundfont_voice_parm_t {
unsigned char chorus; /* chorus send (0x00) */
unsigned char reverb; /* reverb send (0x00) */
unsigned short reserved[4]; /* not used */
} soundfont_voice_parm_t;
};
/* wave table parameters: 92 bytes */
typedef struct soundfont_voice_info_t {
struct soundfont_voice_info {
unsigned short sf_id; /* file id (should be zero) */
unsigned short sample; /* sample id */
int start, end; /* sample offset correction */
@ -135,13 +135,13 @@ typedef struct soundfont_voice_info_t {
unsigned char amplitude; /* sample volume (127 max) */
unsigned char attenuation; /* attenuation (0.375dB) */
short scaleTuning; /* pitch scale tuning(%), normally 100 */
soundfont_voice_parm_t parm; /* voice envelope parameters */
struct soundfont_voice_parm parm; /* voice envelope parameters */
unsigned short sample_mode; /* sample mode_flag (set by driver) */
} soundfont_voice_info_t;
};
/* instrument info header: 4 bytes */
typedef struct soundfont_voice_rec_hdr_t {
struct soundfont_voice_rec_hdr {
unsigned char bank; /* midi bank number */
unsigned char instr; /* midi preset number */
char nvoices; /* number of voices */
@ -149,7 +149,7 @@ typedef struct soundfont_voice_rec_hdr_t {
#define SNDRV_SFNT_WR_APPEND 0 /* append anyway */
#define SNDRV_SFNT_WR_EXCLUSIVE 1 /* skip if already exists */
#define SNDRV_SFNT_WR_REPLACE 2 /* replace if already exists */
} soundfont_voice_rec_hdr_t;
};
/*
@ -157,7 +157,7 @@ typedef struct soundfont_voice_rec_hdr_t {
*/
/* wave table sample header: 32 bytes */
typedef struct soundfont_sample_info_t {
struct soundfont_sample_info {
unsigned short sf_id; /* file id (should be zero) */
unsigned short sample; /* sample id */
int start, end; /* start & end offset */
@ -174,17 +174,17 @@ typedef struct soundfont_sample_info_t {
#define SNDRV_SFNT_SAMPLE_STEREO_RIGHT 64 /* stereo right sound */
#define SNDRV_SFNT_SAMPLE_REVERSE_LOOP 128 /* reverse looping */
unsigned int truesize; /* used memory size (set by driver) */
} soundfont_sample_info_t;
};
/*
* voice preset mapping (aliasing)
*/
typedef struct soundfont_voice_map_t {
struct soundfont_voice_map {
int map_bank, map_instr, map_key; /* key = -1 means all keys */
int src_bank, src_instr, src_key;
} soundfont_voice_map_t;
};
/*
@ -195,7 +195,7 @@ typedef struct soundfont_voice_map_t {
#define SNDRV_EMUX_VERSION ((1 << 16) | (0 << 8) | 0) /* 1.0.0 */
struct sndrv_emux_misc_mode {
struct snd_emux_misc_mode {
int port; /* -1 = all */
int mode;
int value;
@ -204,11 +204,11 @@ struct sndrv_emux_misc_mode {
enum {
SNDRV_EMUX_IOCTL_VERSION = _IOR('H', 0x80, unsigned int),
SNDRV_EMUX_IOCTL_LOAD_PATCH = _IOWR('H', 0x81, soundfont_patch_info_t),
SNDRV_EMUX_IOCTL_LOAD_PATCH = _IOWR('H', 0x81, struct soundfont_patch_info),
SNDRV_EMUX_IOCTL_RESET_SAMPLES = _IO('H', 0x82),
SNDRV_EMUX_IOCTL_REMOVE_LAST_SAMPLES = _IO('H', 0x83),
SNDRV_EMUX_IOCTL_MEM_AVAIL = _IOW('H', 0x84, int),
SNDRV_EMUX_IOCTL_MISC_MODE = _IOWR('H', 0x84, struct sndrv_emux_misc_mode),
SNDRV_EMUX_IOCTL_MISC_MODE = _IOWR('H', 0x84, struct snd_emux_misc_mode),
};
#endif /* __SOUND_SFNT_INFO_H */

+ 37
- 38
include/sound/soundfont.h View File

@ -29,94 +29,93 @@
#define SF_MAX_PRESETS 256 /* drums are mapped from 128 to 256 */
#define SF_IS_DRUM_BANK(z) ((z) == 128)
typedef struct snd_sf_zone {
struct snd_sf_zone {
struct snd_sf_zone *next; /* Link to next */
unsigned char bank; /* Midi bank for this zone */
unsigned char instr; /* Midi program for this zone */
unsigned char mapped; /* True if mapped to something else */
soundfont_voice_info_t v; /* All the soundfont parameters */
struct soundfont_voice_info v; /* All the soundfont parameters */
int counter;
struct snd_sf_sample *sample; /* Link to sample */
/* The following deals with preset numbers (programs) */
struct snd_sf_zone *next_instr; /* Next zone of this instrument */
struct snd_sf_zone *next_zone; /* Next zone in play list */
} snd_sf_zone_t;
};
typedef struct snd_sf_sample {
soundfont_sample_info_t v;
struct snd_sf_sample {
struct soundfont_sample_info v;
int counter;
snd_util_memblk_t *block; /* allocated data block */
struct snd_util_memblk *block; /* allocated data block */
struct snd_sf_sample *next;
} snd_sf_sample_t;
};
/*
* This represents all the information relating to a soundfont.
*/
typedef struct snd_soundfont {
struct snd_soundfont {
struct snd_soundfont *next; /* Link to next */
/*struct snd_soundfont *prev;*/ /* Link to previous */
short id; /* file id */
short type; /* font type */
unsigned char name[SNDRV_SFNT_PATCH_NAME_LEN]; /* identifier */
snd_sf_zone_t *zones; /* Font information */
snd_sf_sample_t *samples; /* The sample headers */
} snd_soundfont_t;
struct snd_sf_zone *zones; /* Font information */
struct snd_sf_sample *samples; /* The sample headers */
};
/*
* Type of the sample access callback
*/
typedef int (*snd_sf_sample_new_t)(void *private_data, snd_sf_sample_t *sp,
snd_util_memhdr_t *hdr, const void __user *buf, long count);
typedef int (*snd_sf_sample_free_t)(void *private_data, snd_sf_sample_t *sp,
snd_util_memhdr_t *hdr);
typedef void (*snd_sf_sample_reset_t)(void *private);
typedef struct snd_sf_callback {
struct snd_sf_callback {
void *private_data;
snd_sf_sample_new_t sample_new;
snd_sf_sample_free_t sample_free;
snd_sf_sample_reset_t sample_reset;
} snd_sf_callback_t;
int (*sample_new)(void *private_data, struct snd_sf_sample *sp,
struct snd_util_memhdr *hdr,
const void __user *buf, long count);
int (*sample_free)(void *private_data, struct snd_sf_sample *sp,
struct snd_util_memhdr *hdr);
void (*sample_reset)(void *private);
};
/*
* List of soundfonts.
*/
typedef struct snd_sf_list {
snd_soundfont_t *currsf; /* The currently open soundfont */
struct snd_sf_list {
struct snd_soundfont *currsf; /* The currently open soundfont */
int open_client; /* client pointer for lock */
int mem_used; /* used memory size */
snd_sf_zone_t *presets[SF_MAX_PRESETS];
snd_soundfont_t *fonts; /* The list of soundfonts */
struct snd_sf_zone *presets[SF_MAX_PRESETS];
struct snd_soundfont *fonts; /* The list of soundfonts */
int fonts_size; /* number of fonts allocated */
int zone_counter; /* last allocated time for zone */
int sample_counter; /* last allocated time for sample */
int zone_locked; /* locked time for zone */
int sample_locked; /* locked time for sample */
snd_sf_callback_t callback; /* callback functions */
struct snd_sf_callback callback; /* callback functions */
int presets_locked;
struct semaphore presets_mutex;
spinlock_t lock;
snd_util_memhdr_t *memhdr;
} snd_sf_list_t;
struct snd_util_memhdr *memhdr;
};
/* Prototypes for soundfont.c */
int snd_soundfont_load(snd_sf_list_t *sflist, const void __user *data, long count, int client);
int snd_soundfont_load_guspatch(snd_sf_list_t *sflist, const char __user *data,
int snd_soundfont_load(struct snd_sf_list *sflist, const void __user *data,
long count, int client);
int snd_soundfont_load_guspatch(struct snd_sf_list *sflist, const char __user *data,
long count, int client);
int snd_soundfont_close_check(snd_sf_list_t *sflist, int client);
int snd_soundfont_close_check(struct snd_sf_list *sflist, int client);
snd_sf_list_t *snd_sf_new(snd_sf_callback_t *callback, snd_util_memhdr_t *hdr);
void snd_sf_free(snd_sf_list_t *sflist);
struct snd_sf_list *snd_sf_new(struct snd_sf_callback *callback,
struct snd_util_memhdr *hdr);
void snd_sf_free(struct snd_sf_list *sflist);
int snd_soundfont_remove_samples(snd_sf_list_t *sflist);
int snd_soundfont_remove_unlocked(snd_sf_list_t *sflist);
int snd_soundfont_remove_samples(struct snd_sf_list *sflist);
int snd_soundfont_remove_unlocked(struct snd_sf_list *sflist);
int snd_soundfont_search_zone(snd_sf_list_t *sflist, int *notep, int vel,
int snd_soundfont_search_zone(struct snd_sf_list *sflist, int *notep, int vel,
int preset, int bank,
int def_preset, int def_bank,
snd_sf_zone_t **table, int max_layers);
struct snd_sf_zone **table, int max_layers);
/* Parameter conversions */
int snd_sf_calc_parm_hold(int msec);


+ 15
- 17
include/sound/util_mem.h View File

@ -20,29 +20,25 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
typedef struct snd_util_memblk snd_util_memblk_t;
typedef struct snd_util_memhdr snd_util_memhdr_t;
typedef unsigned int snd_util_unit_t;
/*
* memory block
*/
struct snd_util_memblk {
snd_util_unit_t size; /* size of this block */
snd_util_unit_t offset; /* zero-offset of this block */
unsigned int size; /* size of this block */
unsigned int offset; /* zero-offset of this block */
struct list_head list; /* link */
};
#define snd_util_memblk_argptr(blk) (void*)((char*)(blk) + sizeof(snd_util_memblk_t))
#define snd_util_memblk_argptr(blk) (void*)((char*)(blk) + sizeof(struct snd_util_memblk))
/*
* memory management information
*/
struct snd_util_memhdr {
snd_util_unit_t size; /* size of whole data */
unsigned int size; /* size of whole data */
struct list_head block; /* block linked-list header */
int nblocks; /* # of allocated blocks */
snd_util_unit_t used; /* used memory size */
unsigned int used; /* used memory size */
int block_extra_size; /* extra data size of chunk */
struct semaphore block_mutex; /* lock */
};
@ -50,15 +46,17 @@ struct snd_util_memhdr {
/*
* prototypes
*/
snd_util_memhdr_t *snd_util_memhdr_new(int memsize);
void snd_util_memhdr_free(snd_util_memhdr_t *hdr);
snd_util_memblk_t *snd_util_mem_alloc(snd_util_memhdr_t *hdr, int size);
int snd_util_mem_free(snd_util_memhdr_t *hdr, snd_util_memblk_t *blk);
int snd_util_mem_avail(snd_util_memhdr_t *hdr);
struct snd_util_memhdr *snd_util_memhdr_new(int memsize);
void snd_util_memhdr_free(struct snd_util_memhdr *hdr);
struct snd_util_memblk *snd_util_mem_alloc(struct snd_util_memhdr *hdr, int size);
int snd_util_mem_free(struct snd_util_memhdr *hdr, struct snd_util_memblk *blk);
int snd_util_mem_avail(struct snd_util_memhdr *hdr);
/* functions without mutex */
snd_util_memblk_t *__snd_util_mem_alloc(snd_util_memhdr_t *hdr, int size);
void __snd_util_mem_free(snd_util_memhdr_t *hdr, snd_util_memblk_t *blk);
snd_util_memblk_t *__snd_util_memblk_new(snd_util_memhdr_t *hdr, snd_util_unit_t units, struct list_head *prev);
struct snd_util_memblk *__snd_util_mem_alloc(struct snd_util_memhdr *hdr, int size);
void __snd_util_mem_free(struct snd_util_memhdr *hdr, struct snd_util_memblk *blk);
struct snd_util_memblk *__snd_util_memblk_new(struct snd_util_memhdr *hdr,
unsigned int units,
struct list_head *prev);
#endif /* __SOUND_UTIL_MEM_H */

+ 15
- 14
sound/synth/emux/emux.c View File

@ -35,9 +35,9 @@ MODULE_LICENSE("GPL");
/*
* create a new hardware dependent device for Emu8000/Emu10k1
*/
int snd_emux_new(snd_emux_t **remu)
int snd_emux_new(struct snd_emux **remu)
{
snd_emux_t *emu;
struct snd_emux *emu;
*remu = NULL;
emu = kzalloc(sizeof(*emu), GFP_KERNEL);
@ -66,33 +66,33 @@ int snd_emux_new(snd_emux_t **remu)
/*
*/
static int sf_sample_new(void *private_data, snd_sf_sample_t *sp,
snd_util_memhdr_t *hdr,
const void __user *buf, long count)
static int sf_sample_new(void *private_data, struct snd_sf_sample *sp,
struct snd_util_memhdr *hdr,
const void __user *buf, long count)
{
snd_emux_t *emu = private_data;
struct snd_emux *emu = private_data;
return emu->ops.sample_new(emu, sp, hdr, buf, count);
}
static int sf_sample_free(void *private_data, snd_sf_sample_t *sp,
snd_util_memhdr_t *hdr)
static int sf_sample_free(void *private_data, struct snd_sf_sample *sp,
struct snd_util_memhdr *hdr)
{
snd_emux_t *emu = private_data;
struct snd_emux *emu = private_data;
return emu->ops.sample_free(emu, sp, hdr);
}
static void sf_sample_reset(void *private_data)
{
snd_emux_t *emu = private_data;
struct snd_emux *emu = private_data;
emu->ops.sample_reset(emu);
}
int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
int snd_emux_register(struct snd_emux *emu, struct snd_card *card, int index, char *name)
{
int err;
snd_sf_callback_t sf_cb;
struct snd_sf_callback sf_cb;
snd_assert(emu->hw != NULL, return -EINVAL);
snd_assert(emu->max_voices > 0, return -EINVAL);
@ -101,7 +101,8 @@ int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
emu->card = card;
emu->name = kstrdup(name, GFP_KERNEL);
emu->voices = kcalloc(emu->max_voices, sizeof(snd_emux_voice_t), GFP_KERNEL);
emu->voices = kcalloc(emu->max_voices, sizeof(struct snd_emux_voice),
GFP_KERNEL);
if (emu->voices == NULL)
return -ENOMEM;
@ -138,7 +139,7 @@ int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
/*
*/
int snd_emux_free(snd_emux_t *emu)
int snd_emux_free(struct snd_emux *emu)
{
unsigned long flags;


+ 24
- 20
sound/synth/emux/emux_effect.c View File

@ -32,7 +32,7 @@
#define xoffsetof(type,tag) ((long)(&((type)NULL)->tag) - (long)(NULL))
#define parm_offset(tag) xoffsetof(soundfont_voice_parm_t*, tag)
#define parm_offset(tag) xoffsetof(struct soundfont_voice_parm *, tag)
#define PARM_IS_BYTE (1 << 0)
#define PARM_IS_WORD (1 << 1)
@ -97,10 +97,10 @@ static struct emux_parm_defs {
/* set byte effect value */
static void
effect_set_byte(unsigned char *valp, snd_midi_channel_t *chan, int type)
effect_set_byte(unsigned char *valp, struct snd_midi_channel *chan, int type)
{
short effect;
snd_emux_effect_table_t *fx = chan->private;
struct snd_emux_effect_table *fx = chan->private;
effect = fx->val[type];
if (fx->flag[type] == EMUX_FX_FLAG_ADD) {
@ -118,10 +118,10 @@ effect_set_byte(unsigned char *valp, snd_midi_channel_t *chan, int type)
/* set word effect value */
static void
effect_set_word(unsigned short *valp, snd_midi_channel_t *chan, int type)
effect_set_word(unsigned short *valp, struct snd_midi_channel *chan, int type)
{
int effect;
snd_emux_effect_table_t *fx = chan->private;
struct snd_emux_effect_table *fx = chan->private;
effect = *(unsigned short*)&fx->val[type];
if (fx->flag[type] == EMUX_FX_FLAG_ADD)
@ -135,10 +135,10 @@ effect_set_word(unsigned short *valp, snd_midi_channel_t *chan, int type)
/* address offset */
static int
effect_get_offset(snd_midi_channel_t *chan, int lo, int hi, int mode)
effect_get_offset(struct snd_midi_channel *chan, int lo, int hi, int mode)
{
int addr = 0;
snd_emux_effect_table_t *fx = chan->private;
struct snd_emux_effect_table *fx = chan->private;
if (fx->flag[hi])
addr = (short)fx->val[hi];
@ -153,7 +153,8 @@ effect_get_offset(snd_midi_channel_t *chan, int lo, int hi, int mode)
#ifdef CONFIG_SND_SEQUENCER_OSS
/* change effects - for OSS sequencer compatibility */
void
snd_emux_send_effect_oss(snd_emux_port_t *port, snd_midi_channel_t *chan, int type, int val)
snd_emux_send_effect_oss(struct snd_emux_port *port,
struct snd_midi_channel *chan, int type, int val)
{
int mode;
@ -173,13 +174,14 @@ snd_emux_send_effect_oss(snd_emux_port_t *port, snd_midi_channel_t *chan, int ty
* if update is necessary, call emu8000_control
*/
void
snd_emux_send_effect(snd_emux_port_t *port, snd_midi_channel_t *chan, int type, int val, int mode)
snd_emux_send_effect(struct snd_emux_port *port, struct snd_midi_channel *chan,
int type, int val, int mode)
{
int i;
int offset;
unsigned char *srcp, *origp;
snd_emux_t *emu;
snd_emux_effect_table_t *fx;
struct snd_emux *emu;
struct snd_emux_effect_table *fx;
unsigned long flags;
emu = port->emu;
@ -206,7 +208,7 @@ snd_emux_send_effect(snd_emux_port_t *port, snd_midi_channel_t *chan, int type,
/* modify the register values */
spin_lock_irqsave(&emu->voice_lock, flags);
for (i = 0; i < emu->max_voices; i++) {
snd_emux_voice_t *vp = &emu->voices[i];
struct snd_emux_voice *vp = &emu->voices[i];
if (!STATE_IS_PLAYING(vp->state) || vp->chan != chan)
continue;
srcp = (unsigned char*)&vp->reg.parm + offset;
@ -228,10 +230,10 @@ snd_emux_send_effect(snd_emux_port_t *port, snd_midi_channel_t *chan, int type,
/* copy wavetable registers to voice table */
void
snd_emux_setup_effect(snd_emux_voice_t *vp)
snd_emux_setup_effect(struct snd_emux_voice *vp)
{
snd_midi_channel_t *chan = vp->chan;
snd_emux_effect_table_t *fx;
struct snd_midi_channel *chan = vp->chan;
struct snd_emux_effect_table *fx;
unsigned char *srcp;
int i;
@ -275,10 +277,11 @@ snd_emux_setup_effect(snd_emux_voice_t *vp)
* effect table
*/
void
snd_emux_create_effect(snd_emux_port_t *p)
snd_emux_create_effect(struct snd_emux_port *p)
{
int i;
p->effect = kcalloc(p->chset.max_channels, sizeof(snd_emux_effect_table_t), GFP_KERNEL);
p->effect = kcalloc(p->chset.max_channels,
sizeof(struct snd_emux_effect_table), GFP_KERNEL);
if (p->effect) {
for (i = 0; i < p->chset.max_channels; i++)
p->chset.channels[i].private = p->effect + i;
@ -289,17 +292,18 @@ snd_emux_create_effect(snd_emux_port_t *p)
}
void
snd_emux_delete_effect(snd_emux_port_t *p)
snd_emux_delete_effect(struct snd_emux_port *p)
{
kfree(p->effect);
p->effect = NULL;
}
void
snd_emux_clear_effect(snd_emux_port_t *p)
snd_emux_clear_effect(struct snd_emux_port *p)
{
if (p->effect) {
memset(p->effect, 0, sizeof(snd_emux_effect_table_t) * p->chset.max_channels);
memset(p->effect, 0, sizeof(struct snd_emux_effect_table) *
p->chset.max_channels);
}
}


+ 12
- 11
sound/synth/emux/emux_hwdep.c View File

@ -29,7 +29,7 @@
* open the hwdep device
*/
static int
snd_emux_hwdep_open(snd_hwdep_t *hw, struct file *file)
snd_emux_hwdep_open(struct snd_hwdep *hw, struct file *file)
{
return 0;
}
@ -39,7 +39,7 @@ snd_emux_hwdep_open(snd_hwdep_t *hw, struct file *file)
* close the device
*/
static int
snd_emux_hwdep_release(snd_hwdep_t *hw, struct file *file)
snd_emux_hwdep_release(struct snd_hwdep *hw, struct file *file)
{
return 0;
}
@ -51,10 +51,10 @@ snd_emux_hwdep_release(snd_hwdep_t *hw, struct file *file)
* load patch
*/
static int
snd_emux_hwdep_load_patch(snd_emux_t *emu, void __user *arg)
snd_emux_hwdep_load_patch(struct snd_emux *emu, void __user *arg)
{
int err;
soundfont_patch_info_t patch;
struct soundfont_patch_info patch;
if (copy_from_user(&patch, arg, sizeof(patch)))
return -EFAULT;
@ -77,9 +77,9 @@ snd_emux_hwdep_load_patch(snd_emux_t *emu, void __user *arg)
* set misc mode
*/
static int
snd_emux_hwdep_misc_mode(snd_emux_t *emu, void __user *arg)
snd_emux_hwdep_misc_mode(struct snd_emux *emu, void __user *arg)
{
struct sndrv_emux_misc_mode info;
struct snd_emux_misc_mode info;
int i;
if (copy_from_user(&info, arg, sizeof(info)))
@ -102,9 +102,10 @@ snd_emux_hwdep_misc_mode(snd_emux_t *emu, void __user *arg)
* ioctl
*/
static int
snd_emux_hwdep_ioctl(snd_hwdep_t * hw, struct file *file, unsigned int cmd, unsigned long arg)
snd_emux_hwdep_ioctl(struct snd_hwdep * hw, struct file *file,
unsigned int cmd, unsigned long arg)
{
snd_emux_t *emu = hw->private_data;
struct snd_emux *emu = hw->private_data;
switch (cmd) {
case SNDRV_EMUX_IOCTL_VERSION:
@ -136,9 +137,9 @@ snd_emux_hwdep_ioctl(snd_hwdep_t * hw, struct file *file, unsigned int cmd, unsi
*/
int
snd_emux_init_hwdep(snd_emux_t *emu)
snd_emux_init_hwdep(struct snd_emux *emu)
{
snd_hwdep_t *hw;
struct snd_hwdep *hw;
int err;
if ((err = snd_hwdep_new(emu->card, SNDRV_EMUX_HWDEP_NAME, emu->hwdep_idx, &hw)) < 0)
@ -162,7 +163,7 @@ snd_emux_init_hwdep(snd_emux_t *emu)
* unregister
*/
void
snd_emux_delete_hwdep(snd_emux_t *emu)
snd_emux_delete_hwdep(struct snd_emux *emu)
{
if (emu->hwdep) {
snd_device_free(emu->card, emu->hwdep);


+ 17
- 13
sound/synth/emux/emux_nrpn.c View File

@ -27,11 +27,11 @@
*/
/* NRPN / CC -> Emu8000 parameter converter */
typedef struct {
struct nrpn_conv_table {
int control;
int effect;
int (*convert)(int val);
} nrpn_conv_table;
};
/* effect sensitivity */
@ -48,8 +48,9 @@ typedef struct {
* convert NRPN/control values
*/
static int send_converted_effect(nrpn_conv_table *table, int num_tables,
snd_emux_port_t *port, snd_midi_channel_t *chan,
static int send_converted_effect(struct nrpn_conv_table *table, int num_tables,
struct snd_emux_port *port,
struct snd_midi_channel *chan,
int type, int val, int mode)
{
int i, cval;
@ -178,7 +179,7 @@ static int fx_conv_Q(int val)
}
static nrpn_conv_table awe_effects[] =
static struct nrpn_conv_table awe_effects[] =
{
{ 0, EMUX_FX_LFO1_DELAY, fx_lfo1_delay},
{ 1, EMUX_FX_LFO1_FREQ, fx_lfo1_freq},
@ -265,7 +266,7 @@ static int gs_vib_delay(int val)
return -(val - 64) * gs_sense[FX_VIBDELAY] / 50;
}
static nrpn_conv_table gs_effects[] =
static struct nrpn_conv_table gs_effects[] =
{
{32, EMUX_FX_CUTOFF, gs_cutoff},
{33, EMUX_FX_FILTERQ, gs_filterQ},
@ -282,9 +283,10 @@ static nrpn_conv_table gs_effects[] =
* NRPN events
*/
void
snd_emux_nrpn(void *p, snd_midi_channel_t *chan, snd_midi_channel_set_t *chset)
snd_emux_nrpn(void *p, struct snd_midi_channel *chan,
struct snd_midi_channel_set *chset)
{
snd_emux_port_t *port;
struct snd_emux_port *port;
port = p;
snd_assert(port != NULL, return);
@ -348,7 +350,7 @@ static int xg_release(int val)
return -(val - 64) * xg_sense[FX_RELEASE] / 64;
}
static nrpn_conv_table xg_effects[] =
static struct nrpn_conv_table xg_effects[] =
{
{71, EMUX_FX_CUTOFF, xg_cutoff},
{74, EMUX_FX_FILTERQ, xg_filterQ},
@ -357,7 +359,8 @@ static nrpn_conv_table xg_effects[] =
};
int
snd_emux_xg_control(snd_emux_port_t *port, snd_midi_channel_t *chan, int param)
snd_emux_xg_control(struct snd_emux_port *port, struct snd_midi_channel *chan,
int param)
{
return send_converted_effect(xg_effects, ARRAY_SIZE(xg_effects),
port, chan, param,
@ -369,10 +372,11 @@ snd_emux_xg_control(snd_emux_port_t *port, snd_midi_channel_t *chan, int param)
* receive sysex
*/
void
snd_emux_sysex(void *p, unsigned char *buf, int len, int parsed, snd_midi_channel_set_t *chset)
snd_emux_sysex(void *p, unsigned char *buf, int len, int parsed,
struct snd_midi_channel_set *chset)
{
snd_emux_port_t *port;
snd_emux_t *emu;
struct snd_emux_port *port;
struct snd_emux *emu;
port = p;
snd_assert(port != NULL, return);


+ 48
- 42
sound/synth/emux/emux_oss.c View File

@ -31,19 +31,25 @@
#include "emux_voice.h"
#include <sound/asoundef.h>
static int snd_emux_open_seq_oss(snd_seq_oss_arg_t *arg, void *closure);
static int snd_emux_close_seq_oss(snd_seq_oss_arg_t *arg);
static int snd_emux_ioctl_seq_oss(snd_seq_oss_arg_t *arg, unsigned int cmd, unsigned long ioarg);
static int snd_emux_load_patch_seq_oss(snd_seq_oss_arg_t *arg, int format, const char __user *buf, int offs, int count);
static int snd_emux_reset_seq_oss(snd_seq_oss_arg_t *arg);
static int snd_emux_event_oss_input(snd_seq_event_t *ev, int direct, void *private, int atomic, int hop);
static void reset_port_mode(snd_emux_port_t *port, int midi_mode);
static void emuspec_control(snd_emux_t *emu, snd_emux_port_t *port, int cmd, unsigned char *event, int atomic, int hop);
static void gusspec_control(snd_emux_t *emu, snd_emux_port_t *port, int cmd, unsigned char *event, int atomic, int hop);
static void fake_event(snd_emux_t *emu, snd_emux_port_t *port, int ch, int param, int val, int atomic, int hop);
static int snd_emux_open_seq_oss(struct snd_seq_oss_arg *arg, void *closure);
static int snd_emux_close_seq_oss(struct snd_seq_oss_arg *arg);
static int snd_emux_ioctl_seq_oss(struct snd_seq_oss_arg *arg, unsigned int cmd,
unsigned long ioarg);
static int snd_emux_load_patch_seq_oss(struct snd_seq_oss_arg *arg, int format,
const char __user *buf, int offs, int count);
static int snd_emux_reset_seq_oss(struct snd_seq_oss_arg *arg);
static int snd_emux_event_oss_input(struct snd_seq_event *ev, int direct,
void *private, int atomic, int hop);
static void reset_port_mode(struct snd_emux_port *port, int midi_mode);
static void emuspec_control(struct snd_emux *emu, struct snd_emux_port *port,
int cmd, unsigned char *event, int atomic, int hop);
static void gusspec_control(struct snd_emux *emu, struct snd_emux_port *port,
int cmd, unsigned char *event, int atomic, int hop);
static void fake_event(struct snd_emux *emu, struct snd_emux_port *port,
int ch, int param, int val, int atomic, int hop);
/* operators */
static snd_seq_oss_callback_t oss_callback = {
static struct snd_seq_oss_callback oss_callback = {
.owner = THIS_MODULE,
.open = snd_emux_open_seq_oss,
.close = snd_emux_close_seq_oss,
@ -58,13 +64,13 @@ static snd_seq_oss_callback_t oss_callback = {
*/
void
snd_emux_init_seq_oss(snd_emux_t *emu)
snd_emux_init_seq_oss(struct snd_emux *emu)
{
snd_seq_oss_reg_t *arg;
snd_seq_device_t *dev;
struct snd_seq_oss_reg *arg;
struct snd_seq_device *dev;
if (snd_seq_device_new(emu->card, 0, SNDRV_SEQ_DEV_ID_OSS,
sizeof(snd_seq_oss_reg_t), &dev) < 0)
sizeof(struct snd_seq_oss_reg), &dev) < 0)
return;
emu->oss_synth = dev;
@ -85,7 +91,7 @@ snd_emux_init_seq_oss(snd_emux_t *emu)
* unregister
*/
void
snd_emux_detach_seq_oss(snd_emux_t *emu)
snd_emux_detach_seq_oss(struct snd_emux *emu)
{
if (emu->oss_synth) {
snd_device_free(emu->card, emu->oss_synth);
@ -101,11 +107,11 @@ snd_emux_detach_seq_oss(snd_emux_t *emu)
* open port for OSS sequencer
*/
static int
snd_emux_open_seq_oss(snd_seq_oss_arg_t *arg, void *closure)
snd_emux_open_seq_oss(struct snd_seq_oss_arg *arg, void *closure)
{
snd_emux_t *emu;
snd_emux_port_t *p;
snd_seq_port_callback_t callback;
struct snd_emux *emu;
struct snd_emux_port *p;
struct snd_seq_port_callback callback;
char tmpname[64];
emu = closure;
@ -153,7 +159,7 @@ snd_emux_open_seq_oss(snd_seq_oss_arg_t *arg, void *closure)
* reset port mode
*/
static void
reset_port_mode(snd_emux_port_t *port, int midi_mode)
reset_port_mode(struct snd_emux_port *port, int midi_mode)
{
if (midi_mode) {
port->port_mode = SNDRV_EMUX_PORT_MODE_OSS_MIDI;
@ -173,10 +179,10 @@ reset_port_mode(snd_emux_port_t *port, int midi_mode)
* close port
*/
static int
snd_emux_close_seq_oss(snd_seq_oss_arg_t *arg)
snd_emux_close_seq_oss(struct snd_seq_oss_arg *arg)
{
snd_emux_t *emu;
snd_emux_port_t *p;
struct snd_emux *emu;
struct snd_emux_port *p;
snd_assert(arg != NULL, return -ENXIO);
p = arg->private_data;
@ -200,11 +206,11 @@ snd_emux_close_seq_oss(snd_seq_oss_arg_t *arg)
* load patch
*/
static int
snd_emux_load_patch_seq_oss(snd_seq_oss_arg_t *arg, int format,
snd_emux_load_patch_seq_oss(struct snd_seq_oss_arg *arg, int format,
const char __user *buf, int offs, int count)
{
snd_emux_t *emu;
snd_emux_port_t *p;
struct snd_emux *emu;
struct snd_emux_port *p;
int rc;
snd_assert(arg != NULL, return -ENXIO);
@ -218,7 +224,7 @@ snd_emux_load_patch_seq_oss(snd_seq_oss_arg_t *arg, int format,
rc = snd_soundfont_load_guspatch(emu->sflist, buf, count,
SF_CLIENT_NO(p->chset.port));
else if (format == SNDRV_OSS_SOUNDFONT_PATCH) {
soundfont_patch_info_t patch;
struct soundfont_patch_info patch;
if (count < (int)sizeof(patch))
rc = -EINVAL;
if (copy_from_user(&patch, buf, sizeof(patch)))
@ -242,10 +248,10 @@ snd_emux_load_patch_seq_oss(snd_seq_oss_arg_t *arg, int format,
* ioctl
*/
static int
snd_emux_ioctl_seq_oss(snd_seq_oss_arg_t *arg, unsigned int cmd, unsigned long ioarg)
snd_emux_ioctl_seq_oss(struct snd_seq_oss_arg *arg, unsigned int cmd, unsigned long ioarg)
{
snd_emux_port_t *p;
snd_emux_t *emu;
struct snd_emux_port *p;
struct snd_emux *emu;
snd_assert(arg != NULL, return -ENXIO);
p = arg->private_data;
@ -273,9 +279,9 @@ snd_emux_ioctl_seq_oss(snd_seq_oss_arg_t *arg, unsigned int cmd, unsigned long i
* reset device
*/
static int
snd_emux_reset_seq_oss(snd_seq_oss_arg_t *arg)
snd_emux_reset_seq_oss(struct snd_seq_oss_arg *arg)
{
snd_emux_port_t *p;
struct snd_emux_port *p;
snd_assert(arg != NULL, return -ENXIO);
p = arg->private_data;
@ -289,11 +295,11 @@ snd_emux_reset_seq_oss(snd_seq_oss_arg_t *arg)
* receive raw events: only SEQ_PRIVATE is accepted.
*/
static int
snd_emux_event_oss_input(snd_seq_event_t *ev, int direct, void *private_data,
snd_emux_event_oss_input(struct snd_seq_event *ev, int direct, void *private_data,
int atomic, int hop)
{
snd_emux_t *emu;
snd_emux_port_t *p;
struct snd_emux *emu;
struct snd_emux_port *p;
unsigned char cmd, *data;
p = private_data;
@ -320,14 +326,14 @@ snd_emux_event_oss_input(snd_seq_event_t *ev, int direct, void *private_data,
* OSS/AWE driver specific h/w controls
*/
static void
emuspec_control(snd_emux_t *emu, snd_emux_port_t *port, int cmd,
emuspec_control(struct snd_emux *emu, struct snd_emux_port *port, int cmd,
unsigned char *event, int atomic, int hop)
{
int voice;
unsigned short p1;
short p2;
int i;
snd_midi_channel_t *chan;
struct snd_midi_channel *chan;
voice = event[3];
if (voice < 0 || voice >= port->chset.max_channels)
@ -415,14 +421,14 @@ emuspec_control(snd_emux_t *emu, snd_emux_port_t *port, int cmd,
#include <linux/ultrasound.h>
static void
gusspec_control(snd_emux_t *emu, snd_emux_port_t *port, int cmd,
gusspec_control(struct snd_emux *emu, struct snd_emux_port *port, int cmd,
unsigned char *event, int atomic, int hop)
{
int voice;
unsigned short p1;
short p2;
int plong;
snd_midi_channel_t *chan;
struct snd_midi_channel *chan;
if (port->port_mode != SNDRV_EMUX_PORT_MODE_OSS_SYNTH)
return;
@ -483,9 +489,9 @@ gusspec_control(snd_emux_t *emu, snd_emux_port_t *port, int cmd,
* send an event to midi emulation
*/
static void
fake_event(snd_emux_t *emu, snd_emux_port_t *port, int ch, int param, int val, int atomic, int hop)
fake_event(struct snd_emux *emu, struct snd_emux_port *port, int ch, int param, int val, int atomic, int hop)
{
snd_seq_event_t ev;
struct snd_seq_event ev;
memset(&ev, 0, sizeof(ev));
ev.type = SNDRV_SEQ_EVENT_CONTROLLER;
ev.data.control.channel = ch;


+ 7
- 7
sound/synth/emux/emux_proc.c View File

@ -30,10 +30,10 @@
#ifdef CONFIG_PROC_FS
static void
snd_emux_proc_info_read(snd_info_entry_t *entry,
snd_info_buffer_t *buf)
snd_emux_proc_info_read(struct snd_info_entry *entry,
struct snd_info_buffer *buf)
{
snd_emux_t *emu;
struct snd_emux *emu;
int i;
emu = entry->private_data;
@ -66,7 +66,7 @@ snd_emux_proc_info_read(snd_info_entry_t *entry,
}
#if 0 /* debug */
if (emu->voices[0].state != SNDRV_EMUX_ST_OFF && emu->voices[0].ch >= 0) {
snd_emux_voice_t *vp = &emu->voices[0];
struct snd_emux_voice *vp = &emu->voices[0];
snd_iprintf(buf, "voice 0: on\n");
snd_iprintf(buf, "mod delay=%x, atkhld=%x, dcysus=%x, rel=%x\n",
vp->reg.parm.moddelay,
@ -107,9 +107,9 @@ snd_emux_proc_info_read(snd_info_entry_t *entry,
}
void snd_emux_proc_init(snd_emux_t *emu, snd_card_t *card, int device)
void snd_emux_proc_init(struct snd_emux *emu, struct snd_card *card, int device)
{
snd_info_entry_t *entry;
struct snd_info_entry *entry;
char name[64];
sprintf(name, "wavetableD%d", device);
@ -127,7 +127,7 @@ void snd_emux_proc_init(snd_emux_t *emu, snd_card_t *card, int device)
emu->proc = entry;
}
void snd_emux_proc_free(snd_emux_t *emu)
void snd_emux_proc_free(struct snd_emux *emu)
{
if (emu->proc) {
snd_info_unregister(emu->proc);


+ 37
- 37
sound/synth/emux/emux_seq.c View File

@ -25,15 +25,15 @@
/* Prototypes for static functions */
static void free_port(void *private);
static void snd_emux_init_port(snd_emux_port_t *p);
static int snd_emux_use(void *private_data, snd_seq_port_subscribe_t *info);
static int snd_emux_unuse(void *private_data, snd_seq_port_subscribe_t *info);
static int get_client(snd_card_t *card, int index, char *name);
static void snd_emux_init_port(struct snd_emux_port *p);
static int snd_emux_use(void *private_data, struct snd_seq_port_subscribe *info);
static int snd_emux_unuse(void *private_data, struct snd_seq_port_subscribe *info);
static int get_client(struct snd_card *card, int index, char *name);
/*
* MIDI emulation operators
*/
static snd_midi_op_t emux_ops = {
static struct snd_midi_op emux_ops = {
snd_emux_note_on,
snd_emux_note_off,
snd_emux_key_press,
@ -65,10 +65,10 @@ static snd_midi_op_t emux_ops = {
* can connect to these ports to play midi data.
*/
int
snd_emux_init_seq(snd_emux_t *emu, snd_card_t *card, int index)
snd_emux_init_seq(struct snd_emux *emu, struct snd_card *card, int index)
{
int i;
snd_seq_port_callback_t pinfo;
struct snd_seq_port_callback pinfo;
char tmpname[64];
sprintf(tmpname, "%s WaveTable", emu->name);
@ -94,7 +94,7 @@ snd_emux_init_seq(snd_emux_t *emu, snd_card_t *card, int index)
pinfo.event_input = snd_emux_event_input;
for (i = 0; i < emu->num_ports; i++) {
snd_emux_port_t *p;
struct snd_emux_port *p;
sprintf(tmpname, "%s Port %d", emu->name, i);
p = snd_emux_create_port(emu, tmpname, MIDI_CHANNELS,
@ -119,7 +119,7 @@ snd_emux_init_seq(snd_emux_t *emu, snd_card_t *card, int index)
* destroy the kernel client.
*/
void
snd_emux_detach_seq(snd_emux_t *emu)
snd_emux_detach_seq(struct snd_emux *emu)
{
if (emu->voices)
snd_emux_terminate_all(emu);
@ -137,12 +137,12 @@ snd_emux_detach_seq(snd_emux_t *emu)
* create a sequencer port and channel_set
*/
snd_emux_port_t *
snd_emux_create_port(snd_emux_t *emu, char *name,
int max_channels, int oss_port,
snd_seq_port_callback_t *callback)
struct snd_emux_port *
snd_emux_create_port(struct snd_emux *emu, char *name,
int max_channels, int oss_port,
struct snd_seq_port_callback *callback)
{
snd_emux_port_t *p;
struct snd_emux_port *p;
int i, type, cap;
/* Allocate structures for this channel */
@ -150,7 +150,7 @@ snd_emux_create_port(snd_emux_t *emu, char *name,
snd_printk("no memory\n");
return NULL;
}
p->chset.channels = kcalloc(max_channels, sizeof(snd_midi_channel_t), GFP_KERNEL);
p->chset.channels = kcalloc(max_channels, sizeof(struct snd_midi_channel), GFP_KERNEL);
if (p->chset.channels == NULL) {
snd_printk("no memory\n");
kfree(p);
@ -190,7 +190,7 @@ snd_emux_create_port(snd_emux_t *emu, char *name,
static void
free_port(void *private_data)
{
snd_emux_port_t *p;
struct snd_emux_port *p;
p = private_data;
if (p) {
@ -209,7 +209,7 @@ free_port(void *private_data)
* initialize the port specific parameters
*/
static void
snd_emux_init_port(snd_emux_port_t *p)
snd_emux_init_port(struct snd_emux_port *p)
{
p->drum_flags = DEFAULT_DRUM_FLAGS;
p->volume_atten = 0;
@ -222,7 +222,7 @@ snd_emux_init_port(snd_emux_port_t *p)
* reset port
*/
void
snd_emux_reset_port(snd_emux_port_t *port)
snd_emux_reset_port(struct snd_emux_port *port)
{
int i;
@ -241,7 +241,7 @@ snd_emux_reset_port(snd_emux_port_t *port)
port->ctrls[EMUX_MD_REALTIME_PAN] = 1;
for (i = 0; i < port->chset.max_channels; i++) {
snd_midi_channel_t *chan = port->chset.channels + i;
struct snd_midi_channel *chan = port->chset.channels + i;
chan->drum_channel = ((port->drum_flags >> i) & 1) ? 1 : 0;
}
}
@ -251,10 +251,10 @@ snd_emux_reset_port(snd_emux_port_t *port)
* input sequencer event
*/
int
snd_emux_event_input(snd_seq_event_t *ev, int direct, void *private_data,
snd_emux_event_input(struct snd_seq_event *ev, int direct, void *private_data,
int atomic, int hop)
{
snd_emux_port_t *port;
struct snd_emux_port *port;
port = private_data;
snd_assert(port != NULL && ev != NULL, return -EINVAL);
@ -269,7 +269,7 @@ snd_emux_event_input(snd_seq_event_t *ev, int direct, void *private_data,
* increment usage count
*/
int
snd_emux_inc_count(snd_emux_t *emu)
snd_emux_inc_count(struct snd_emux *emu)
{
emu->used++;
if (!try_module_get(emu->ops.owner))
@ -288,7 +288,7 @@ snd_emux_inc_count(snd_emux_t *emu)
* decrease usage count
*/
void
snd_emux_dec_count(snd_emux_t *emu)
snd_emux_dec_count(struct snd_emux *emu)
{
module_put(emu->card->module);
emu->used--;
@ -302,10 +302,10 @@ snd_emux_dec_count(snd_emux_t *emu)
* Routine that is called upon a first use of a particular port
*/
static int
snd_emux_use(void *private_data, snd_seq_port_subscribe_t *info)
snd_emux_use(void *private_data, struct snd_seq_port_subscribe *info)
{
snd_emux_port_t *p;
snd_emux_t *emu;
struct snd_emux_port *p;
struct snd_emux *emu;
p = private_data;
snd_assert(p != NULL, return -EINVAL);
@ -323,10 +323,10 @@ snd_emux_use(void *private_data, snd_seq_port_subscribe_t *info)
* Routine that is called upon the last unuse() of a particular port.
*/
static int
snd_emux_unuse(void *private_data, snd_seq_port_subscribe_t *info)
snd_emux_unuse(void *private_data, struct snd_seq_port_subscribe *info)
{
snd_emux_port_t *p;
snd_emux_t *emu;
struct snd_emux_port *p;
struct snd_emux *emu;
p = private_data;
snd_assert(p != NULL, return -EINVAL);
@ -345,10 +345,10 @@ snd_emux_unuse(void *private_data, snd_seq_port_subscribe_t *info)
* Create a sequencer client
*/
static int
get_client(snd_card_t *card, int index, char *name)
get_client(struct snd_card *card, int index, char *name)
{
snd_seq_client_callback_t callbacks;
snd_seq_client_info_t cinfo;
struct snd_seq_client_callback callbacks;
struct snd_seq_client_info cinfo;
int client;
memset(&callbacks, 0, sizeof(callbacks));
@ -374,7 +374,7 @@ get_client(snd_card_t *card, int index, char *name)
/*
* attach virtual rawmidi devices
*/
int snd_emux_init_virmidi(snd_emux_t *emu, snd_card_t *card)
int snd_emux_init_virmidi(struct snd_emux *emu, struct snd_card *card)
{
int i;
@ -382,13 +382,13 @@ int snd_emux_init_virmidi(snd_emux_t *emu, snd_card_t *card)
if (emu->midi_ports <= 0)
return 0;
emu->vmidi = kcalloc(emu->midi_ports, sizeof(snd_rawmidi_t*), GFP_KERNEL);
emu->vmidi = kcalloc(emu->midi_ports, sizeof(struct snd_rawmidi *), GFP_KERNEL);
if (emu->vmidi == NULL)
return -ENOMEM;
for (i = 0; i < emu->midi_ports; i++) {
snd_rawmidi_t *rmidi;
snd_virmidi_dev_t *rdev;
struct snd_rawmidi *rmidi;
struct snd_virmidi_dev *rdev;
if (snd_virmidi_new(card, emu->midi_devidx + i, &rmidi) < 0)
goto __error;
rdev = rmidi->private_data;
@ -411,7 +411,7 @@ __error:
return -ENOMEM;
}
int snd_emux_delete_virmidi(snd_emux_t *emu)
int snd_emux_delete_virmidi(struct snd_emux *emu)
{
int i;


+ 72
- 67
sound/synth/emux/emux_synth.c View File

@ -36,30 +36,34 @@
#define LIMITVALUE(x, a, b) do { if ((x) < (a)) (x) = (a); else if ((x) > (b)) (x) = (b); } while (0)