[alsa-devel] RFC: add possibility to change text identification string
Takashi Iwai
tiwai at suse.de
Wed Nov 12 16:37:50 CET 2008
At Wed, 12 Nov 2008 16:29:22 +0100 (CET),
Jaroslav Kysela wrote:
>
> On Wed, 12 Nov 2008, Takashi Iwai wrote:
>
> > At Tue, 11 Nov 2008 17:33:42 +0100,
> > I wrote:
> > >
> > > At Tue, 11 Nov 2008 17:00:41 +0100 (CET),
> > > Jaroslav Kysela wrote:
> > > >
> > > > Hi all,
> > > >
> > > > based on discussion today, I prepared a patch to handle udev-style
> > > > card renaming. Comments are welcome.
> > >
> > > Looks good to me. The sanity check of the id string should be used
> > > for the assignment from the module option, too.
> >
> > One remaining problem I found is a symlink of id in /proc/asound.
> > This won't be changed even if you change the id string via sysfs.
> > A minor issue, though.
>
> Thanks for this note. The patch bellow should fix this issue. Also, I'm
> going to remove card->id from hdsp.c and hdspm.c where this string is
> used for rawmidi device name - it might be confusing when changed, too.
>
> Jaroslav
>
> diff --git a/include/sound/info.h b/include/sound/info.h
> index 8ae72e7..baf09d8 100644
> --- a/include/sound/info.h
> +++ b/include/sound/info.h
> @@ -126,6 +126,7 @@ int snd_info_card_create(struct snd_card * card);
> int snd_info_card_register(struct snd_card * card);
> int snd_info_card_free(struct snd_card * card);
> void snd_info_card_disconnect(struct snd_card * card);
> +void snd_info_card_id_change(struct snd_card * card);
> int snd_info_register(struct snd_info_entry * entry);
Don't forget for the case CONFIG_PROC_FS=n.
>
> /* for card drivers */
> diff --git a/sound/core/info.c b/sound/core/info.c
> index 527b207..e91da07 100644
> --- a/sound/core/info.c
> +++ b/sound/core/info.c
> @@ -653,6 +653,21 @@ int snd_info_card_register(struct snd_card *card)
> }
>
> /*
> + * called on card->id change
> + */
> +void snd_info_card_id_change(struct snd_card *card)
> +{
> + mutex_lock(&info_mutex);
> + if (card->proc_root_link) {
> + snd_remove_proc_entry(snd_proc_root, card->proc_root_link);
> + card->proc_root_link = NULL;
> + }
> + if (strcmp(card->id, card->proc_root->name))
> + card->proc_root_link = proc_symlink(card->id, snd_proc_root, card->proc_root->name);
checkpatch.pl is your friend ;)
thanks,
Takashi
More information about the Alsa-devel
mailing list