[ALSA] some fixes and cleanup for ICE1724 cards
* removing the hack with NON_AKM ak4xxx type * support for card-specific flags in ak4114_stats * definition of the flags for corresponding cards Signed-off-by: Pavel Hofman <dustin@seznam.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
committed by
Takashi Iwai
parent
5949d2443d
commit
841b23d4d7
@ -319,12 +319,11 @@ static int stac9460_mic_sw_put(struct snd_kcontrol *kcontrol,
|
||||
/*
|
||||
* Handler for setting correct codec rate - called when rate change is detected
|
||||
*/
|
||||
static void stac9460_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate)
|
||||
static void stac9460_set_rate_val(struct snd_ice1712 *ice, unsigned int rate)
|
||||
{
|
||||
unsigned char old, new;
|
||||
int idx;
|
||||
unsigned char changed[7];
|
||||
struct snd_ice1712 *ice = ak->private_data[0];
|
||||
struct prodigy192_spec *spec = ice->spec;
|
||||
|
||||
if (rate == 0) /* no hint - S/PDIF input is master, simply return */
|
||||
@ -357,16 +356,6 @@ static void stac9460_set_rate_val(struct snd_akm4xxx *ak, unsigned int rate)
|
||||
mutex_unlock(&spec->mute_mutex);
|
||||
}
|
||||
|
||||
/* using akm infrastructure for setting rate of the codec */
|
||||
static struct snd_akm4xxx akmlike_stac9460 __devinitdata = {
|
||||
.type = NON_AKM, /* special value */
|
||||
.num_adcs = 6, /* not used in any way, just for completeness */
|
||||
.num_dacs = 2,
|
||||
.ops = {
|
||||
.set_rate_val = stac9460_set_rate_val
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
static const DECLARE_TLV_DB_SCALE(db_scale_dac, -19125, 75, 0);
|
||||
static const DECLARE_TLV_DB_SCALE(db_scale_adc, 0, 150, 0);
|
||||
@ -642,12 +631,19 @@ static int prodigy192_ak4114_init(struct snd_ice1712 *ice)
|
||||
0x41, 0x02, 0x2c, 0x00, 0x00
|
||||
};
|
||||
struct prodigy192_spec *spec = ice->spec;
|
||||
int err;
|
||||
|
||||
return snd_ak4114_create(ice->card,
|
||||
err = snd_ak4114_create(ice->card,
|
||||
prodigy192_ak4114_read,
|
||||
prodigy192_ak4114_write,
|
||||
ak4114_init_vals, ak4114_init_txcsb,
|
||||
ice, &spec->ak4114);
|
||||
if (err < 0)
|
||||
return err;
|
||||
/* AK4114 in Prodigy192 cannot detect external rate correctly.
|
||||
* No reason to stop capture stream due to incorrect checks */
|
||||
spec->ak4114->check_flags = AK4114_CHECK_NO_RATE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void stac9460_proc_regs_read(struct snd_info_entry *entry,
|
||||
@ -743,7 +739,6 @@ static int __devinit prodigy192_init(struct snd_ice1712 *ice)
|
||||
};
|
||||
const unsigned short *p;
|
||||
int err = 0;
|
||||
struct snd_akm4xxx *ak;
|
||||
struct prodigy192_spec *spec;
|
||||
|
||||
/* prodigy 192 */
|
||||
@ -761,15 +756,7 @@ static int __devinit prodigy192_init(struct snd_ice1712 *ice)
|
||||
p = stac_inits_prodigy;
|
||||
for (; *p != (unsigned short)-1; p += 2)
|
||||
stac9460_put(ice, p[0], p[1]);
|
||||
/* reusing the akm codecs infrastructure,
|
||||
* for setting rate on stac9460 */
|
||||
ak = ice->akm = kmalloc(sizeof(struct snd_akm4xxx), GFP_KERNEL);
|
||||
if (!ak)
|
||||
return -ENOMEM;
|
||||
ice->akm_codecs = 1;
|
||||
err = snd_ice1712_akm4xxx_init(ak, &akmlike_stac9460, NULL, ice);
|
||||
if (err < 0)
|
||||
return err;
|
||||
ice->gpio.set_pro_rate = stac9460_set_rate_val;
|
||||
|
||||
/* MI/ODI/O add on card with AK4114 */
|
||||
if (prodigy192_miodio_exists(ice)) {
|
||||
|
Reference in New Issue
Block a user