diff options
| author | Takashi Iwai <tiwai@suse.de> | 2010-08-05 11:17:04 +0200 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2010-08-05 11:17:04 +0200 |
| commit | 74bf40f0793fed9e01eb6164c2ce63e8c27ca205 (patch) | |
| tree | f41312c0943978842ac258873b29da04d72d0625 /sound/pci/riptide/riptide.c | |
| parent | e71981343ad29b5d929f82ac56c0b27b8ea0e540 (diff) | |
| parent | c4685849b4d725ab80cd29f5e09f5f128b4724b5 (diff) | |
Merge branch 'topic/misc' into for-linus
Diffstat (limited to 'sound/pci/riptide/riptide.c')
| -rw-r--r-- | sound/pci/riptide/riptide.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c index ad446267761..f64fb7d988c 100644 --- a/sound/pci/riptide/riptide.c +++ b/sound/pci/riptide/riptide.c @@ -97,6 +97,7 @@ #include <linux/gameport.h> #include <linux/device.h> #include <linux/firmware.h> +#include <linux/kernel.h> #include <asm/io.h> #include <sound/core.h> #include <sound/info.h> @@ -667,13 +668,12 @@ static u32 atoh(const unsigned char *in, unsigned int len) unsigned char c; while (len) { + int value; + c = in[len - 1]; - if ((c >= '0') && (c <= '9')) - sum += mult * (c - '0'); - else if ((c >= 'A') && (c <= 'F')) - sum += mult * (c - ('A' - 10)); - else if ((c >= 'a') && (c <= 'f')) - sum += mult * (c - ('a' - 10)); + value = hex_to_bin(c); + if (value >= 0) + sum += mult * value; mult *= 16; --len; } @@ -1615,7 +1615,10 @@ static int snd_riptide_playback_open(struct snd_pcm_substream *substream) chip->playback_substream[sub_num] = substream; runtime->hw = snd_riptide_playback; + data = kzalloc(sizeof(struct pcmhw), GFP_KERNEL); + if (data == NULL) + return -ENOMEM; data->paths = lbus_play_paths[sub_num]; data->id = play_ids[sub_num]; data->source = play_sources[sub_num]; @@ -1635,7 +1638,10 @@ static int snd_riptide_capture_open(struct snd_pcm_substream *substream) chip->capture_substream = substream; runtime->hw = snd_riptide_capture; + data = kzalloc(sizeof(struct pcmhw), GFP_KERNEL); + if (data == NULL) + return -ENOMEM; data->paths = lbus_rec_path; data->id = PADC; data->source = ACLNK2PADC; |
