|
@@ -30,6 +30,7 @@
|
|
|
#include <linux/bitops.h>
|
|
|
#include <linux/debugfs.h>
|
|
|
#include <linux/platform_device.h>
|
|
|
+#include <linux/ctype.h>
|
|
|
#include <linux/slab.h>
|
|
|
#include <sound/ac97_codec.h>
|
|
|
#include <sound/core.h>
|
|
@@ -1434,9 +1435,20 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card)
|
|
|
"%s", card->name);
|
|
|
snprintf(card->snd_card->longname, sizeof(card->snd_card->longname),
|
|
|
"%s", card->long_name ? card->long_name : card->name);
|
|
|
- if (card->driver_name)
|
|
|
- strlcpy(card->snd_card->driver, card->driver_name,
|
|
|
- sizeof(card->snd_card->driver));
|
|
|
+ snprintf(card->snd_card->driver, sizeof(card->snd_card->driver),
|
|
|
+ "%s", card->driver_name ? card->driver_name : card->name);
|
|
|
+ for (i = 0; i < ARRAY_SIZE(card->snd_card->driver); i++) {
|
|
|
+ switch (card->snd_card->driver[i]) {
|
|
|
+ case '_':
|
|
|
+ case '-':
|
|
|
+ case '\0':
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ if (!isalnum(card->snd_card->driver[i]))
|
|
|
+ card->snd_card->driver[i] = '_';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (card->late_probe) {
|
|
|
ret = card->late_probe(card);
|