static void xonar_dx_init(struct oxygen *chip)
 {
        struct xonar_data *data = chip->model_data;
-       unsigned int i;
 
-       for (i = 0; i < 8; ++i)
-               chip->dac_volume[i] = 127;
        data->anti_pop_delay = 800;
        data->output_enable_bit = GPIO_DX_OUTPUT_ENABLE;
        data->ext_power_reg = OXYGEN_GPI_DATA;
        }
 }
 
-static int pcm1796_volume_info(struct snd_kcontrol *ctl,
-                              struct snd_ctl_elem_info *info)
-{
-       info->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-       info->count = 8;
-       info->value.integer.min = 0x0f;
-       info->value.integer.max = 0xff;
-       return 0;
-}
-
-static int cs4362a_volume_info(struct snd_kcontrol *ctl,
-                              struct snd_ctl_elem_info *info)
-{
-       info->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
-       info->count = 8;
-       info->value.integer.min = 0;
-       info->value.integer.max = 127;
-       return 0;
-}
-
 static int alt_switch_get(struct snd_kcontrol *ctl,
                          struct snd_ctl_elem_value *value)
 {
 {
        if (!strcmp(template->name, "Master Playback Volume")) {
                template->access |= SNDRV_CTL_ELEM_ACCESS_TLV_READ;
-               template->info = pcm1796_volume_info;
                template->tlv.p = pcm1796_db_scale;
        } else if (!strncmp(template->name, "CD Capture ", 11)) {
                /* CD in is actually connected to the video in pin */
 {
        if (!strcmp(template->name, "Master Playback Volume")) {
                template->access |= SNDRV_CTL_ELEM_ACCESS_TLV_READ;
-               template->info = cs4362a_volume_info;
                template->tlv.p = cs4362a_db_scale;
        } else if (!strncmp(template->name, "CD Capture ", 11)) {
                return 1; /* no CD input */
                               CAPTURE_0_FROM_I2S_2 |
                               CAPTURE_1_FROM_SPDIF,
                .dac_channels = 8,
+               .dac_volume_min = 0x0f,
+               .dac_volume_max = 0xff,
                .misc_flags = OXYGEN_MISC_MIDI,
                .function_flags = OXYGEN_FUNCTION_SPI |
                                  OXYGEN_FUNCTION_ENABLE_SPI_4_5,
                               CAPTURE_0_FROM_I2S_2 |
                               CAPTURE_1_FROM_SPDIF,
                .dac_channels = 8,
+               .dac_volume_min = 0x0f,
+               .dac_volume_max = 0xff,
                .misc_flags = OXYGEN_MISC_MIDI,
                .function_flags = OXYGEN_FUNCTION_SPI |
                                  OXYGEN_FUNCTION_ENABLE_SPI_4_5,
                               PLAYBACK_1_TO_SPDIF |
                               CAPTURE_0_FROM_I2S_2,
                .dac_channels = 8,
+               .dac_volume_min = 0,
+               .dac_volume_max = 127,
                .function_flags = OXYGEN_FUNCTION_2WIRE,
                .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
                .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,