ALSA: hda - Use strict_strtoul()

Rewrite the codes to use strict_strtoul() instead of simple_strtoul().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2009-12-27 13:53:24 +01:00
parent b82855a0d7
commit 014c41fce1
2 changed files with 31 additions and 24 deletions

View File

@ -293,8 +293,11 @@ static ssize_t type##_store(struct device *dev, \
{ \
struct snd_hwdep *hwdep = dev_get_drvdata(dev); \
struct hda_codec *codec = hwdep->private_data; \
char *after; \
codec->type = simple_strtoul(buf, &after, 0); \
unsigned long val; \
int err = strict_strtoul(buf, 0, &val); \
if (err < 0) \
return err; \
codec->type = val; \
return count; \
}

View File

@ -4159,43 +4159,47 @@ static void stac92xx_power_down(struct hda_codec *codec)
static void stac_toggle_power_map(struct hda_codec *codec, hda_nid_t nid,
int enable);
static inline int get_int_hint(struct hda_codec *codec, const char *key,
int *valp)
{
const char *p;
p = snd_hda_get_hint(codec, key);
if (p) {
unsigned long val;
if (!strict_strtoul(p, 0, &val)) {
*valp = val;
return 1;
}
}
return 0;
}
/* override some hints from the hwdep entry */
static void stac_store_hints(struct hda_codec *codec)
{
struct sigmatel_spec *spec = codec->spec;
const char *p;
int val;
val = snd_hda_get_bool_hint(codec, "hp_detect");
if (val >= 0)
spec->hp_detect = val;
p = snd_hda_get_hint(codec, "gpio_mask");
if (p) {
spec->gpio_mask = simple_strtoul(p, NULL, 0);
if (get_int_hint(codec, "gpio_mask", &spec->gpio_mask)) {
spec->eapd_mask = spec->gpio_dir = spec->gpio_data =
spec->gpio_mask;
}
p = snd_hda_get_hint(codec, "gpio_dir");
if (p)
spec->gpio_dir = simple_strtoul(p, NULL, 0) & spec->gpio_mask;
p = snd_hda_get_hint(codec, "gpio_data");
if (p)
spec->gpio_data = simple_strtoul(p, NULL, 0) & spec->gpio_mask;
p = snd_hda_get_hint(codec, "eapd_mask");
if (p)
spec->eapd_mask = simple_strtoul(p, NULL, 0) & spec->gpio_mask;
p = snd_hda_get_hint(codec, "gpio_mute");
if (p)
spec->gpio_mute = simple_strtoul(p, NULL, 0) & spec->gpio_mask;
if (get_int_hint(codec, "gpio_dir", &spec->gpio_dir))
spec->gpio_mask &= spec->gpio_mask;
if (get_int_hint(codec, "gpio_data", &spec->gpio_data))
spec->gpio_dir &= spec->gpio_mask;
if (get_int_hint(codec, "eapd_mask", &spec->eapd_mask))
spec->eapd_mask &= spec->gpio_mask;
if (get_int_hint(codec, "gpio_mute", &spec->gpio_mute))
spec->gpio_mute &= spec->gpio_mask;
val = snd_hda_get_bool_hint(codec, "eapd_switch");
if (val >= 0)
spec->eapd_switch = val;
p = snd_hda_get_hint(codec, "gpio_led_polarity");
if (p)
spec->gpio_led_polarity = simple_strtoul(p, NULL, 0);
p = snd_hda_get_hint(codec, "gpio_led");
if (p) {
spec->gpio_led = simple_strtoul(p, NULL, 0);
get_int_hint(codec, "gpio_led_polarity", &spec->gpio_led_polarity);
if (get_int_hint(codec, "gpio_led", &spec->gpio_led)) {
spec->gpio_mask |= spec->gpio_led;
spec->gpio_dir |= spec->gpio_led;
if (spec->gpio_led_polarity)