Commit 6a0f4021 authored by Takashi Iwai's avatar Takashi Iwai

Merge branch 'topic/dummy' into for-linus

* topic/dummy:
  ALSA: dummy - Increase MAX_PCM_SUBSTREAMS to 128
  ALSA: dummy - Add debug proc file
  ALSA: Add const prefix to proc helper functions
  ALSA: Re-export snd_pcm_format_name() function
  ALSA: dummy - Fake buffer allocations
  ALSA: dummy - Fix the timer calculation in systimer mode
  ALSA: dummy - Add more description
  ALSA: dummy - Better jiffies handling
  ALSA: dummy - Support high-res timer mode
parents f9892a52 b888d1ce
...@@ -513,6 +513,26 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. ...@@ -513,6 +513,26 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
or input, but you may use this module for any application which or input, but you may use this module for any application which
requires a sound card (like RealPlayer). requires a sound card (like RealPlayer).
pcm_devs - Number of PCM devices assigned to each card
(default = 1, up to 4)
pcm_substreams - Number of PCM substreams assigned to each PCM
(default = 8, up to 16)
hrtimer - Use hrtimer (=1, default) or system timer (=0)
fake_buffer - Fake buffer allocations (default = 1)
When multiple PCM devices are created, snd-dummy gives different
behavior to each PCM device:
0 = interleaved with mmap support
1 = non-interleaved with mmap support
2 = interleaved without mmap
3 = non-interleaved without mmap
As default, snd-dummy drivers doesn't allocate the real buffers
but either ignores read/write or mmap a single dummy page to all
buffer pages, in order to save the resouces. If your apps need
the read/ written buffer data to be consistent, pass fake_buffer=0
option.
The power-management is supported. The power-management is supported.
Module snd-echo3g Module snd-echo3g
......
...@@ -110,13 +110,13 @@ void snd_card_info_read_oss(struct snd_info_buffer *buffer); ...@@ -110,13 +110,13 @@ void snd_card_info_read_oss(struct snd_info_buffer *buffer);
static inline void snd_card_info_read_oss(struct snd_info_buffer *buffer) {} static inline void snd_card_info_read_oss(struct snd_info_buffer *buffer) {}
#endif #endif
int snd_iprintf(struct snd_info_buffer *buffer, char *fmt, ...) \ int snd_iprintf(struct snd_info_buffer *buffer, const char *fmt, ...) \
__attribute__ ((format (printf, 2, 3))); __attribute__ ((format (printf, 2, 3)));
int snd_info_init(void); int snd_info_init(void);
int snd_info_done(void); int snd_info_done(void);
int snd_info_get_line(struct snd_info_buffer *buffer, char *line, int len); int snd_info_get_line(struct snd_info_buffer *buffer, char *line, int len);
char *snd_info_get_str(char *dest, char *src, int len); const char *snd_info_get_str(char *dest, const char *src, int len);
struct snd_info_entry *snd_info_create_module_entry(struct module *module, struct snd_info_entry *snd_info_create_module_entry(struct module *module,
const char *name, const char *name,
struct snd_info_entry *parent); struct snd_info_entry *parent);
......
...@@ -988,4 +988,6 @@ static inline void snd_pcm_limit_isa_dma_size(int dma, size_t *max) ...@@ -988,4 +988,6 @@ static inline void snd_pcm_limit_isa_dma_size(int dma, size_t *max)
#define PCM_RUNTIME_CHECK(sub) snd_BUG_ON(!(sub) || !(sub)->runtime) #define PCM_RUNTIME_CHECK(sub) snd_BUG_ON(!(sub) || !(sub)->runtime)
const char *snd_pcm_format_name(snd_pcm_format_t format);
#endif /* __SOUND_PCM_H */ #endif /* __SOUND_PCM_H */
...@@ -106,7 +106,7 @@ static int resize_info_buffer(struct snd_info_buffer *buffer, ...@@ -106,7 +106,7 @@ static int resize_info_buffer(struct snd_info_buffer *buffer,
* *
* Returns the size of output string. * Returns the size of output string.
*/ */
int snd_iprintf(struct snd_info_buffer *buffer, char *fmt,...) int snd_iprintf(struct snd_info_buffer *buffer, const char *fmt, ...)
{ {
va_list args; va_list args;
int len, res; int len, res;
...@@ -725,7 +725,7 @@ EXPORT_SYMBOL(snd_info_get_line); ...@@ -725,7 +725,7 @@ EXPORT_SYMBOL(snd_info_get_line);
* Returns the updated pointer of the original string so that * Returns the updated pointer of the original string so that
* it can be used for the next call. * it can be used for the next call.
*/ */
char *snd_info_get_str(char *dest, char *src, int len) const char *snd_info_get_str(char *dest, const char *src, int len)
{ {
int c; int c;
......
...@@ -1154,7 +1154,8 @@ static void snd_mixer_oss_proc_write(struct snd_info_entry *entry, ...@@ -1154,7 +1154,8 @@ static void snd_mixer_oss_proc_write(struct snd_info_entry *entry,
struct snd_info_buffer *buffer) struct snd_info_buffer *buffer)
{ {
struct snd_mixer_oss *mixer = entry->private_data; struct snd_mixer_oss *mixer = entry->private_data;
char line[128], str[32], idxstr[16], *cptr; char line[128], str[32], idxstr[16];
const char *cptr;
int ch, idx; int ch, idx;
struct snd_mixer_oss_assign_table *tbl; struct snd_mixer_oss_assign_table *tbl;
struct slot *slot; struct slot *slot;
......
...@@ -2836,7 +2836,8 @@ static void snd_pcm_oss_proc_write(struct snd_info_entry *entry, ...@@ -2836,7 +2836,8 @@ static void snd_pcm_oss_proc_write(struct snd_info_entry *entry,
struct snd_info_buffer *buffer) struct snd_info_buffer *buffer)
{ {
struct snd_pcm_str *pstr = entry->private_data; struct snd_pcm_str *pstr = entry->private_data;
char line[128], str[32], task_name[32], *ptr; char line[128], str[32], task_name[32];
const char *ptr;
int idx1; int idx1;
struct snd_pcm_oss_setup *setup, *setup1, template; struct snd_pcm_oss_setup *setup, *setup1, template;
......
...@@ -162,18 +162,7 @@ static int snd_pcm_control_ioctl(struct snd_card *card, ...@@ -162,18 +162,7 @@ static int snd_pcm_control_ioctl(struct snd_card *card,
return -ENOIOCTLCMD; return -ENOIOCTLCMD;
} }
#ifdef CONFIG_SND_VERBOSE_PROCFS
#define STATE(v) [SNDRV_PCM_STATE_##v] = #v
#define STREAM(v) [SNDRV_PCM_STREAM_##v] = #v
#define READY(v) [SNDRV_PCM_READY_##v] = #v
#define XRUN(v) [SNDRV_PCM_XRUN_##v] = #v
#define SILENCE(v) [SNDRV_PCM_SILENCE_##v] = #v
#define TSTAMP(v) [SNDRV_PCM_TSTAMP_##v] = #v
#define ACCESS(v) [SNDRV_PCM_ACCESS_##v] = #v
#define START(v) [SNDRV_PCM_START_##v] = #v
#define FORMAT(v) [SNDRV_PCM_FORMAT_##v] = #v #define FORMAT(v) [SNDRV_PCM_FORMAT_##v] = #v
#define SUBFORMAT(v) [SNDRV_PCM_SUBFORMAT_##v] = #v
static char *snd_pcm_format_names[] = { static char *snd_pcm_format_names[] = {
FORMAT(S8), FORMAT(S8),
...@@ -216,10 +205,23 @@ static char *snd_pcm_format_names[] = { ...@@ -216,10 +205,23 @@ static char *snd_pcm_format_names[] = {
FORMAT(U18_3BE), FORMAT(U18_3BE),
}; };
static const char *snd_pcm_format_name(snd_pcm_format_t format) const char *snd_pcm_format_name(snd_pcm_format_t format)
{ {
return snd_pcm_format_names[format]; return snd_pcm_format_names[format];
} }
EXPORT_SYMBOL_GPL(snd_pcm_format_name);
#ifdef CONFIG_SND_VERBOSE_PROCFS
#define STATE(v) [SNDRV_PCM_STATE_##v] = #v
#define STREAM(v) [SNDRV_PCM_STREAM_##v] = #v
#define READY(v) [SNDRV_PCM_READY_##v] = #v
#define XRUN(v) [SNDRV_PCM_XRUN_##v] = #v
#define SILENCE(v) [SNDRV_PCM_SILENCE_##v] = #v
#define TSTAMP(v) [SNDRV_PCM_TSTAMP_##v] = #v
#define ACCESS(v) [SNDRV_PCM_ACCESS_##v] = #v
#define START(v) [SNDRV_PCM_START_##v] = #v
#define SUBFORMAT(v) [SNDRV_PCM_SUBFORMAT_##v] = #v
static char *snd_pcm_stream_names[] = { static char *snd_pcm_stream_names[] = {
STREAM(PLAYBACK), STREAM(PLAYBACK),
......
This diff is collapsed.
...@@ -2124,8 +2124,8 @@ static void proc_dump_substream_formats(struct snd_usb_substream *subs, struct s ...@@ -2124,8 +2124,8 @@ static void proc_dump_substream_formats(struct snd_usb_substream *subs, struct s
fp = list_entry(p, struct audioformat, list); fp = list_entry(p, struct audioformat, list);
snd_iprintf(buffer, " Interface %d\n", fp->iface); snd_iprintf(buffer, " Interface %d\n", fp->iface);
snd_iprintf(buffer, " Altset %d\n", fp->altsetting); snd_iprintf(buffer, " Altset %d\n", fp->altsetting);
snd_iprintf(buffer, " Format: %#x (%d bits)\n", snd_iprintf(buffer, " Format: %s\n",
fp->format, snd_pcm_format_width(fp->format)); snd_pcm_format_name(fp->format));
snd_iprintf(buffer, " Channels: %d\n", fp->channels); snd_iprintf(buffer, " Channels: %d\n", fp->channels);
snd_iprintf(buffer, " Endpoint: %d %s (%s)\n", snd_iprintf(buffer, " Endpoint: %d %s (%s)\n",
fp->endpoint & USB_ENDPOINT_NUMBER_MASK, fp->endpoint & USB_ENDPOINT_NUMBER_MASK,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment