.update_dac_volume = update_ak4396_volume,
        .update_dac_mute = update_ak4396_mute,
        .dac_tlv = ak4396_db_scale,
+       .function_flags = OXYGEN_FUNCTION_ENABLE_SPI_4_5,
 };
 static const struct oxygen_model model_meridian = {
        .shortname = "C-Media CMI8788",
        .update_dac_mute = update_ak4396_mute,
        .dac_tlv = ak4396_db_scale,
        .record_from_dma_b = 1,
+       .function_flags = OXYGEN_FUNCTION_ENABLE_SPI_4_5,
 };
 
 static int __devinit generic_oxygen_probe(struct pci_dev *pci,
 
 
        oxygen_set_bits8(chip, OXYGEN_FUNCTION,
                         OXYGEN_FUNCTION_RESET_CODEC |
-                        OXYGEN_FUNCTION_ENABLE_SPI_4_5);
+                        chip->model->function_flags);
        oxygen_write16(chip, OXYGEN_I2S_MULTICH_FORMAT, 0x010a);
        oxygen_write16(chip, OXYGEN_I2S_A_FORMAT, 0x010a);
        oxygen_write16(chip, OXYGEN_I2S_B_FORMAT, 0x010a);
 
        .record_from_dma_b = 1,
        .cd_in_from_video_in = 1,
        .dac_minimum_volume = 15,
+       .function_flags = OXYGEN_FUNCTION_ENABLE_SPI_4_5,
 };
 
 static int __devinit xonar_probe(struct pci_dev *pci,