Loading sound/pci/ice1712/revo.c +42 −3 Original line number Original line Diff line number Diff line Loading @@ -61,7 +61,7 @@ static void revo_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate) else else dfs = 0; dfs = 0; if (ak->type == SND_AK4355) { if (ak->type == SND_AK4355 || ak->type == SND_AK4358) { reg = 2; reg = 2; shift = 4; shift = 4; } else { } else { Loading Loading @@ -128,6 +128,26 @@ static struct snd_ak4xxx_private akm_revo_surround_priv __devinitdata = { .mask_flags = 0, .mask_flags = 0, }; }; static struct snd_akm4xxx akm_revo51 __devinitdata = { .type = SND_AK4358, .num_dacs = 6, .ops = { .set_rate_val = revo_set_rate_val } }; static struct snd_ak4xxx_private akm_revo51_priv __devinitdata = { .caddr = 2, .cif = 0, .data_mask = VT1724_REVO_CDOUT, .clk_mask = VT1724_REVO_CCLK, .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2, .cs_addr = 0, .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2, .add_flags = VT1724_REVO_CCLK, /* high at init */ .mask_flags = 0, }; static int __devinit revo_init(struct snd_ice1712 *ice) static int __devinit revo_init(struct snd_ice1712 *ice) { { struct snd_akm4xxx *ak; struct snd_akm4xxx *ak; Loading @@ -138,14 +158,17 @@ static int __devinit revo_init(struct snd_ice1712 *ice) case VT1724_SUBDEVICE_REVOLUTION71: case VT1724_SUBDEVICE_REVOLUTION71: ice->num_total_dacs = 8; ice->num_total_dacs = 8; ice->num_total_adcs = 2; ice->num_total_adcs = 2; ice->gpio.i2s_mclk_changed = revo_i2s_mclk_changed; break; case VT1724_SUBDEVICE_REVOLUTION51: ice->num_total_dacs = 6; ice->num_total_adcs = 2; break; break; default: default: snd_BUG(); snd_BUG(); return -EINVAL; return -EINVAL; } } ice->gpio.i2s_mclk_changed = revo_i2s_mclk_changed; /* second stage of initialization, analog parts and others */ /* second stage of initialization, analog parts and others */ ak = ice->akm = kcalloc(2, sizeof(struct snd_akm4xxx), GFP_KERNEL); ak = ice->akm = kcalloc(2, sizeof(struct snd_akm4xxx), GFP_KERNEL); if (! ak) if (! ak) Loading @@ -153,6 +176,7 @@ static int __devinit revo_init(struct snd_ice1712 *ice) ice->akm_codecs = 2; ice->akm_codecs = 2; switch (ice->eeprom.subvendor) { switch (ice->eeprom.subvendor) { case VT1724_SUBDEVICE_REVOLUTION71: case VT1724_SUBDEVICE_REVOLUTION71: ice->akm_codecs = 2; if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo_front, &akm_revo_front_priv, ice)) < 0) if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo_front, &akm_revo_front_priv, ice)) < 0) return err; return err; if ((err = snd_ice1712_akm4xxx_init(ak + 1, &akm_revo_surround, &akm_revo_surround_priv, ice)) < 0) if ((err = snd_ice1712_akm4xxx_init(ak + 1, &akm_revo_surround, &akm_revo_surround_priv, ice)) < 0) Loading @@ -160,6 +184,13 @@ static int __devinit revo_init(struct snd_ice1712 *ice) /* unmute all codecs */ /* unmute all codecs */ snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); break; break; case VT1724_SUBDEVICE_REVOLUTION51: ice->akm_codecs = 1; if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo51, &akm_revo51_priv, ice)) < 0) return err; /* unmute all codecs - needed! */ snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); break; } } return 0; return 0; Loading @@ -172,6 +203,7 @@ static int __devinit revo_add_controls(struct snd_ice1712 *ice) switch (ice->eeprom.subvendor) { switch (ice->eeprom.subvendor) { case VT1724_SUBDEVICE_REVOLUTION71: case VT1724_SUBDEVICE_REVOLUTION71: case VT1724_SUBDEVICE_REVOLUTION51: err = snd_ice1712_akm4xxx_build_controls(ice); err = snd_ice1712_akm4xxx_build_controls(ice); if (err < 0) if (err < 0) return err; return err; Loading @@ -188,5 +220,12 @@ struct snd_ice1712_card_info snd_vt1724_revo_cards[] __devinitdata = { .chip_init = revo_init, .chip_init = revo_init, .build_controls = revo_add_controls, .build_controls = revo_add_controls, }, }, { .subvendor = VT1724_SUBDEVICE_REVOLUTION51, .name = "M Audio Revolution-5.1", .model = "revo51", .chip_init = revo_init, .build_controls = revo_add_controls, }, { } /* terminator */ { } /* terminator */ }; }; sound/pci/ice1712/revo.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -25,9 +25,11 @@ */ */ #define REVO_DEVICE_DESC \ #define REVO_DEVICE_DESC \ "{MidiMan M Audio,Revolution 7.1}," "{MidiMan M Audio,Revolution 7.1},"\ "{MidiMan M Audio,Revolution 5.1}," #define VT1724_SUBDEVICE_REVOLUTION71 0x12143036 #define VT1724_SUBDEVICE_REVOLUTION71 0x12143036 #define VT1724_SUBDEVICE_REVOLUTION51 0x12143136 /* entry point */ /* entry point */ extern struct snd_ice1712_card_info snd_vt1724_revo_cards[]; extern struct snd_ice1712_card_info snd_vt1724_revo_cards[]; Loading Loading
sound/pci/ice1712/revo.c +42 −3 Original line number Original line Diff line number Diff line Loading @@ -61,7 +61,7 @@ static void revo_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate) else else dfs = 0; dfs = 0; if (ak->type == SND_AK4355) { if (ak->type == SND_AK4355 || ak->type == SND_AK4358) { reg = 2; reg = 2; shift = 4; shift = 4; } else { } else { Loading Loading @@ -128,6 +128,26 @@ static struct snd_ak4xxx_private akm_revo_surround_priv __devinitdata = { .mask_flags = 0, .mask_flags = 0, }; }; static struct snd_akm4xxx akm_revo51 __devinitdata = { .type = SND_AK4358, .num_dacs = 6, .ops = { .set_rate_val = revo_set_rate_val } }; static struct snd_ak4xxx_private akm_revo51_priv __devinitdata = { .caddr = 2, .cif = 0, .data_mask = VT1724_REVO_CDOUT, .clk_mask = VT1724_REVO_CCLK, .cs_mask = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2, .cs_addr = 0, .cs_none = VT1724_REVO_CS0 | VT1724_REVO_CS1 | VT1724_REVO_CS2, .add_flags = VT1724_REVO_CCLK, /* high at init */ .mask_flags = 0, }; static int __devinit revo_init(struct snd_ice1712 *ice) static int __devinit revo_init(struct snd_ice1712 *ice) { { struct snd_akm4xxx *ak; struct snd_akm4xxx *ak; Loading @@ -138,14 +158,17 @@ static int __devinit revo_init(struct snd_ice1712 *ice) case VT1724_SUBDEVICE_REVOLUTION71: case VT1724_SUBDEVICE_REVOLUTION71: ice->num_total_dacs = 8; ice->num_total_dacs = 8; ice->num_total_adcs = 2; ice->num_total_adcs = 2; ice->gpio.i2s_mclk_changed = revo_i2s_mclk_changed; break; case VT1724_SUBDEVICE_REVOLUTION51: ice->num_total_dacs = 6; ice->num_total_adcs = 2; break; break; default: default: snd_BUG(); snd_BUG(); return -EINVAL; return -EINVAL; } } ice->gpio.i2s_mclk_changed = revo_i2s_mclk_changed; /* second stage of initialization, analog parts and others */ /* second stage of initialization, analog parts and others */ ak = ice->akm = kcalloc(2, sizeof(struct snd_akm4xxx), GFP_KERNEL); ak = ice->akm = kcalloc(2, sizeof(struct snd_akm4xxx), GFP_KERNEL); if (! ak) if (! ak) Loading @@ -153,6 +176,7 @@ static int __devinit revo_init(struct snd_ice1712 *ice) ice->akm_codecs = 2; ice->akm_codecs = 2; switch (ice->eeprom.subvendor) { switch (ice->eeprom.subvendor) { case VT1724_SUBDEVICE_REVOLUTION71: case VT1724_SUBDEVICE_REVOLUTION71: ice->akm_codecs = 2; if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo_front, &akm_revo_front_priv, ice)) < 0) if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo_front, &akm_revo_front_priv, ice)) < 0) return err; return err; if ((err = snd_ice1712_akm4xxx_init(ak + 1, &akm_revo_surround, &akm_revo_surround_priv, ice)) < 0) if ((err = snd_ice1712_akm4xxx_init(ak + 1, &akm_revo_surround, &akm_revo_surround_priv, ice)) < 0) Loading @@ -160,6 +184,13 @@ static int __devinit revo_init(struct snd_ice1712 *ice) /* unmute all codecs */ /* unmute all codecs */ snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); break; break; case VT1724_SUBDEVICE_REVOLUTION51: ice->akm_codecs = 1; if ((err = snd_ice1712_akm4xxx_init(ak, &akm_revo51, &akm_revo51_priv, ice)) < 0) return err; /* unmute all codecs - needed! */ snd_ice1712_gpio_write_bits(ice, VT1724_REVO_MUTE, VT1724_REVO_MUTE); break; } } return 0; return 0; Loading @@ -172,6 +203,7 @@ static int __devinit revo_add_controls(struct snd_ice1712 *ice) switch (ice->eeprom.subvendor) { switch (ice->eeprom.subvendor) { case VT1724_SUBDEVICE_REVOLUTION71: case VT1724_SUBDEVICE_REVOLUTION71: case VT1724_SUBDEVICE_REVOLUTION51: err = snd_ice1712_akm4xxx_build_controls(ice); err = snd_ice1712_akm4xxx_build_controls(ice); if (err < 0) if (err < 0) return err; return err; Loading @@ -188,5 +220,12 @@ struct snd_ice1712_card_info snd_vt1724_revo_cards[] __devinitdata = { .chip_init = revo_init, .chip_init = revo_init, .build_controls = revo_add_controls, .build_controls = revo_add_controls, }, }, { .subvendor = VT1724_SUBDEVICE_REVOLUTION51, .name = "M Audio Revolution-5.1", .model = "revo51", .chip_init = revo_init, .build_controls = revo_add_controls, }, { } /* terminator */ { } /* terminator */ }; };
sound/pci/ice1712/revo.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -25,9 +25,11 @@ */ */ #define REVO_DEVICE_DESC \ #define REVO_DEVICE_DESC \ "{MidiMan M Audio,Revolution 7.1}," "{MidiMan M Audio,Revolution 7.1},"\ "{MidiMan M Audio,Revolution 5.1}," #define VT1724_SUBDEVICE_REVOLUTION71 0x12143036 #define VT1724_SUBDEVICE_REVOLUTION71 0x12143036 #define VT1724_SUBDEVICE_REVOLUTION51 0x12143136 /* entry point */ /* entry point */ extern struct snd_ice1712_card_info snd_vt1724_revo_cards[]; extern struct snd_ice1712_card_info snd_vt1724_revo_cards[]; Loading