mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
ALSA: usb-audio: Expose sample resolution through proc interface
At least some USB devices use (MSB-aligned) audio format larger than the actual resolution of the device. In order to expose the actual device resolution (bBitResolution), add extra field to the procfs stream info interface. Signed-off-by: Jussi Laako <jussi@sonarnerd.net> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
a06702ca02
commit
c7a1326491
@ -14,6 +14,7 @@ struct audioformat {
|
|||||||
u64 formats; /* ALSA format bits */
|
u64 formats; /* ALSA format bits */
|
||||||
unsigned int channels; /* # channels */
|
unsigned int channels; /* # channels */
|
||||||
unsigned int fmt_type; /* USB audio format type (1-3) */
|
unsigned int fmt_type; /* USB audio format type (1-3) */
|
||||||
|
unsigned int fmt_bits; /* number of significant bits */
|
||||||
unsigned int frame_size; /* samples per frame for non-audio */
|
unsigned int frame_size; /* samples per frame for non-audio */
|
||||||
int iface; /* interface number */
|
int iface; /* interface number */
|
||||||
unsigned char altsetting; /* corresponding alternate setting */
|
unsigned char altsetting; /* corresponding alternate setting */
|
||||||
|
@ -87,6 +87,8 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fp->fmt_bits = sample_width;
|
||||||
|
|
||||||
if ((pcm_formats == 0) &&
|
if ((pcm_formats == 0) &&
|
||||||
(format == 0 || format == (1 << UAC_FORMAT_TYPE_I_UNDEFINED))) {
|
(format == 0 || format == (1 << UAC_FORMAT_TYPE_I_UNDEFINED))) {
|
||||||
/* some devices don't define this correctly... */
|
/* some devices don't define this correctly... */
|
||||||
|
@ -109,6 +109,7 @@ static void proc_dump_substream_formats(struct snd_usb_substream *subs, struct s
|
|||||||
if (subs->speed != USB_SPEED_FULL)
|
if (subs->speed != USB_SPEED_FULL)
|
||||||
snd_iprintf(buffer, " Data packet interval: %d us\n",
|
snd_iprintf(buffer, " Data packet interval: %d us\n",
|
||||||
125 * (1 << fp->datainterval));
|
125 * (1 << fp->datainterval));
|
||||||
|
snd_iprintf(buffer, " Bits: %d\n", fp->fmt_bits);
|
||||||
// snd_iprintf(buffer, " Max Packet Size = %d\n", fp->maxpacksize);
|
// snd_iprintf(buffer, " Max Packet Size = %d\n", fp->maxpacksize);
|
||||||
// snd_iprintf(buffer, " EP Attribute = %#x\n", fp->attributes);
|
// snd_iprintf(buffer, " EP Attribute = %#x\n", fp->attributes);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user