aboutsummaryrefslogtreecommitdiff
path: root/src/pcm/pcm_hw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pcm/pcm_hw.c')
-rw-r--r--src/pcm/pcm_hw.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c
index 65b198c5..59a24200 100644
--- a/src/pcm/pcm_hw.c
+++ b/src/pcm/pcm_hw.c
@@ -1018,7 +1018,7 @@ static int map_status_and_control_data(snd_pcm_t *pcm, bool force_fallback)
snd_pcm_set_appl_ptr(pcm, &hw->mmap_control->appl_ptr, hw->fd,
SNDRV_PCM_MMAP_OFFSET_CONTROL);
if (hw->mmap_control_fallbacked) {
- unsigned int flags;
+ unsigned int flags = 0;
/* read appl_ptr and avail_min from kernel when device opened
* with SND_PCM_APPEND flag
*/
@@ -1199,6 +1199,7 @@ snd_pcm_query_chmaps_from_hw(int card, int dev, int subdev,
snd_ctl_t *ctl;
snd_ctl_elem_id_t id = {0};
unsigned int tlv[2048], *start;
+ unsigned int type;
snd_pcm_chmap_query_t **map;
int i, ret, nums;
@@ -1223,9 +1224,10 @@ snd_pcm_query_chmaps_from_hw(int card, int dev, int subdev,
/* FIXME: the parser below assumes that the TLV only contains
* chmap-related blocks
*/
- if (tlv[0] != SND_CTL_TLVT_CONTAINER) {
- if (!is_chmap_type(tlv[0])) {
- SYSMSG("Invalid TLV type %d\n", tlv[0]);
+ type = tlv[SNDRV_CTL_TLVO_TYPE];
+ if (type != SND_CTL_TLVT_CONTAINER) {
+ if (!is_chmap_type(type)) {
+ SYSMSG("Invalid TLV type %d\n", type);
return NULL;
}
start = tlv;
@@ -1234,7 +1236,7 @@ snd_pcm_query_chmaps_from_hw(int card, int dev, int subdev,
unsigned int *p;
int size;
start = tlv + 2;
- size = tlv[1];
+ size = tlv[SNDRV_CTL_TLVO_LEN];
nums = 0;
for (p = start; size > 0; ) {
if (!is_chmap_type(p[0])) {