static int snd_ymfpci_info_single(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
 {
-       unsigned int mask = 1;
-
        switch (kcontrol->private_value) {
        case YDSXGR_SPDIFOUTCTRL: break;
        case YDSXGR_SPDIFINCTRL: break;
        default: return -EINVAL;
        }
-       uinfo->type = mask == 1 ? SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
+       uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
        uinfo->count = 1;
        uinfo->value.integer.min = 0;
-       uinfo->value.integer.max = mask;
+       uinfo->value.integer.max = 1;
        return 0;
 }
 
 {
        ymfpci_t *chip = snd_kcontrol_chip(kcontrol);
        int reg = kcontrol->private_value;
-       unsigned int shift = 0, mask = 1, invert = 0;
+       unsigned int shift = 0, mask = 1;
        
        switch (kcontrol->private_value) {
        case YDSXGR_SPDIFOUTCTRL: break;
        default: return -EINVAL;
        }
        ucontrol->value.integer.value[0] = (snd_ymfpci_readl(chip, reg) >> shift) & mask;
-       if (invert)
-               ucontrol->value.integer.value[0] = mask - ucontrol->value.integer.value[0];
        return 0;
 }
 
 {
        ymfpci_t *chip = snd_kcontrol_chip(kcontrol);
        int reg = kcontrol->private_value;
-       unsigned int shift = 0, mask = 1, invert = 0;
+       unsigned int shift = 0, mask = 1;
        int change;
        unsigned int val, oval;
        
        default: return -EINVAL;
        }
        val = (ucontrol->value.integer.value[0] & mask);
-       if (invert)
-               val = mask - val;
        val <<= shift;
        spin_lock_irq(&chip->reg_lock);
        oval = snd_ymfpci_readl(chip, reg);
 static int snd_ymfpci_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
 {
        unsigned int reg = kcontrol->private_value;
-       unsigned int mask = 16383;
 
        if (reg < 0x80 || reg >= 0xc0)
                return -EINVAL;
-       uinfo->type = mask == 1 ? SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
+       uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
        uinfo->count = 2;
        uinfo->value.integer.min = 0;
-       uinfo->value.integer.max = mask;
+       uinfo->value.integer.max = 16383;
        return 0;
 }
 
 {
        ymfpci_t *chip = snd_kcontrol_chip(kcontrol);
        unsigned int reg = kcontrol->private_value;
-       unsigned int shift_left = 0, shift_right = 16, mask = 16383, invert = 0;
+       unsigned int shift_left = 0, shift_right = 16, mask = 16383;
        unsigned int val;
        
        if (reg < 0x80 || reg >= 0xc0)
        spin_unlock_irq(&chip->reg_lock);
        ucontrol->value.integer.value[0] = (val >> shift_left) & mask;
        ucontrol->value.integer.value[1] = (val >> shift_right) & mask;
-       if (invert) {
-               ucontrol->value.integer.value[0] = mask - ucontrol->value.integer.value[0];
-               ucontrol->value.integer.value[1] = mask - ucontrol->value.integer.value[1];
-       }
        return 0;
 }
 
 {
        ymfpci_t *chip = snd_kcontrol_chip(kcontrol);
        unsigned int reg = kcontrol->private_value;
-       unsigned int shift_left = 0, shift_right = 16, mask = 16383, invert = 0;
+       unsigned int shift_left = 0, shift_right = 16, mask = 16383;
        int change;
        unsigned int val1, val2, oval;
        
                return -EINVAL;
        val1 = ucontrol->value.integer.value[0] & mask;
        val2 = ucontrol->value.integer.value[1] & mask;
-       if (invert) {
-               val1 = mask - val1;
-               val2 = mask - val2;
-       }
        val1 <<= shift_left;
        val2 <<= shift_right;
        spin_lock_irq(&chip->reg_lock);