diff options
author | Jaroslav Kysela <perex@perex.cz> | 2008-11-12 16:31:37 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-11-12 17:07:37 +0100 |
commit | c2eb9c4ea383aee154e7139395872c4da629e715 (patch) | |
tree | 1a041003b3260354b6ad5e0ca728ff614f10ca01 /sound | |
parent | ALSA: add /sys/class/sound/card#/id (r/w) and card#/number (r/o) files (diff) | |
download | linux-c2eb9c4ea383aee154e7139395872c4da629e715.tar.xz linux-c2eb9c4ea383aee154e7139395872c4da629e715.zip |
ALSA: when card identification is changed, change also /proc/asound symlink
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/core/info.c | 17 | ||||
-rw-r--r-- | sound/core/init.c | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/sound/core/info.c b/sound/core/info.c index 527b207462b0..70fa87189f36 100644 --- a/sound/core/info.c +++ b/sound/core/info.c @@ -653,6 +653,23 @@ 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); + mutex_unlock(&info_mutex); +} + +/* * de-register the card proc file * called from init.c */ diff --git a/sound/core/init.c b/sound/core/init.c index 5ff297d1d89a..af1e407ca27f 100644 --- a/sound/core/init.c +++ b/sound/core/init.c @@ -571,6 +571,7 @@ card_id_store_attr(struct device *dev, struct device_attribute *attr, goto __exist; } strcpy(card->id, buf1); + snd_info_card_id_change(card); mutex_unlock(&snd_card_mutex); return count; |