ALSA: ctl: remove dimen member from elem_info structure
The 'dimen' member of 'struct snd_ctl_elem_info' is designed to deliver information to use an array of value as multi-dimensional values. This feature is used just by echoaudio PCI driver, and fortunately it's not used by the other applications than 'echomixer' in alsa-tools. In a previous commit, usage of 'dimen' member is removed from echoaudio PCI driver. Nowadays no driver/application use the feature. This commit removes the member from structure. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Link: https://lore.kernel.org/r/20191223023921.8151-4-o-takashi@sakamocchi.jp Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
e67c3f0fd4
commit
ff16351e3f
@ -1040,11 +1040,7 @@ struct snd_ctl_elem_info {
|
|||||||
} enumerated;
|
} enumerated;
|
||||||
unsigned char reserved[128];
|
unsigned char reserved[128];
|
||||||
} value;
|
} value;
|
||||||
union {
|
unsigned char reserved[64];
|
||||||
unsigned short d[4]; /* dimensions */
|
|
||||||
unsigned short *d_ptr; /* indirect - obsoleted */
|
|
||||||
} dimen;
|
|
||||||
unsigned char reserved[64-4*sizeof(unsigned short)];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct snd_ctl_elem_value {
|
struct snd_ctl_elem_value {
|
||||||
|
@ -758,36 +758,6 @@ static int snd_ctl_elem_list(struct snd_card *card,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool validate_element_member_dimension(struct snd_ctl_elem_info *info)
|
|
||||||
{
|
|
||||||
unsigned int members;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
if (info->dimen.d[0] == 0)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
members = 1;
|
|
||||||
for (i = 0; i < ARRAY_SIZE(info->dimen.d); ++i) {
|
|
||||||
if (info->dimen.d[i] == 0)
|
|
||||||
break;
|
|
||||||
members *= info->dimen.d[i];
|
|
||||||
|
|
||||||
/*
|
|
||||||
* info->count should be validated in advance, to guarantee
|
|
||||||
* calculation soundness.
|
|
||||||
*/
|
|
||||||
if (members > info->count)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (++i; i < ARRAY_SIZE(info->dimen.d); ++i) {
|
|
||||||
if (info->dimen.d[i] > 0)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return members == info->count;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int snd_ctl_elem_info(struct snd_ctl_file *ctl,
|
static int snd_ctl_elem_info(struct snd_ctl_file *ctl,
|
||||||
struct snd_ctl_elem_info *info)
|
struct snd_ctl_elem_info *info)
|
||||||
{
|
{
|
||||||
@ -1280,8 +1250,6 @@ static int snd_ctl_elem_add(struct snd_ctl_file *file,
|
|||||||
if (info->count < 1 ||
|
if (info->count < 1 ||
|
||||||
info->count > max_value_counts[info->type])
|
info->count > max_value_counts[info->type])
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (!validate_element_member_dimension(info))
|
|
||||||
return -EINVAL;
|
|
||||||
private_size = value_sizes[info->type] * info->count;
|
private_size = value_sizes[info->type] * info->count;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user