diff options
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) | |||
653 | } | 653 | } |
654 | 654 | ||
655 | /* | 655 | /* |
656 | * called on card->id change | ||
657 | */ | ||
658 | void snd_info_card_id_change(struct snd_card *card) | ||
659 | { | ||
660 | mutex_lock(&info_mutex); | ||
661 | if (card->proc_root_link) { | ||
662 | snd_remove_proc_entry(snd_proc_root, card->proc_root_link); | ||
663 | card->proc_root_link = NULL; | ||
664 | } | ||
665 | if (strcmp(card->id, card->proc_root->name)) | ||
666 | card->proc_root_link = proc_symlink(card->id, | ||
667 | snd_proc_root, | ||
668 | card->proc_root->name); | ||
669 | mutex_unlock(&info_mutex); | ||
670 | } | ||
671 | |||
672 | /* | ||
656 | * de-register the card proc file | 673 | * de-register the card proc file |
657 | * called from init.c | 674 | * called from init.c |
658 | */ | 675 | */ |
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, | |||
571 | goto __exist; | 571 | goto __exist; |
572 | } | 572 | } |
573 | strcpy(card->id, buf1); | 573 | strcpy(card->id, buf1); |
574 | snd_info_card_id_change(card); | ||
574 | mutex_unlock(&snd_card_mutex); | 575 | mutex_unlock(&snd_card_mutex); |
575 | 576 | ||
576 | return count; | 577 | return count; |