Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 92137
b: refs/heads/master
c: 841b23d
h: refs/heads/master
i:
  92135: 5b648ed
v: v3
  • Loading branch information
Pavel Hofman authored and Takashi Iwai committed Apr 24, 2008
1 parent b6bcda1 commit cd35ce4
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 34 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5949d2443d96f054d9a32d31edddb0be836968c6
refs/heads/master: 841b23d4d7b554c8d74fc9c34a701f85abc04875
1 change: 1 addition & 0 deletions trunk/include/sound/ak4114.h
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ struct ak4114 {
unsigned char rcs0;
unsigned char rcs1;
struct delayed_work work;
unsigned int check_flags;
void *change_callback_private;
void (*change_callback)(struct ak4114 *ak4114, unsigned char c0, unsigned char c1);
};
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/sound/ak4xxx-adda.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ struct snd_akm4xxx {
enum {
SND_AK4524, SND_AK4528, SND_AK4529,
SND_AK4355, SND_AK4358, SND_AK4381,
SND_AK5365, NON_AKM
SND_AK5365
} type;

/* (array) information of combined codecs */
Expand Down
2 changes: 1 addition & 1 deletion trunk/sound/i2c/other/ak4114.c
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ static void ak4114_stats(struct work_struct *work)
struct ak4114 *chip = container_of(work, struct ak4114, work.work);

if (!chip->init)
snd_ak4114_check_rate_and_errors(chip, 0);
snd_ak4114_check_rate_and_errors(chip, chip->check_flags);

schedule_delayed_work(&chip->work, HZ / 10);
}
Expand Down
16 changes: 8 additions & 8 deletions trunk/sound/i2c/other/ak4xxx-adda.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,16 @@ static void ak4524_reset(struct snd_akm4xxx *ak, int state)
}

/* reset procedure for AK4355 and AK4358 */
static void ak4355_reset(struct snd_akm4xxx *ak, int state)
static void ak435X_reset(struct snd_akm4xxx *ak, int state,
unsigned char total_regs)
{
unsigned char reg;

if (state) {
snd_akm4xxx_write(ak, 0, 0x01, 0x02); /* reset and soft-mute */
return;
}
for (reg = 0x00; reg < 0x0b; reg++)
for (reg = 0x00; reg < total_regs; reg++)
if (reg != 0x01)
snd_akm4xxx_write(ak, 0, reg,
snd_akm4xxx_get(ak, 0, reg));
Expand Down Expand Up @@ -118,8 +119,10 @@ void snd_akm4xxx_reset(struct snd_akm4xxx *ak, int state)
/* FIXME: needed for ak4529? */
break;
case SND_AK4355:
ak435X_reset(ak, state, 0x0b);
break;
case SND_AK4358:
ak4355_reset(ak, state);
ak435X_reset(ak, state, 0x10);
break;
case SND_AK4381:
ak4381_reset(ak, state);
Expand Down Expand Up @@ -292,11 +295,6 @@ void snd_akm4xxx_init(struct snd_akm4xxx *ak)
case SND_AK5365:
/* FIXME: any init sequence? */
return;
case NON_AKM:
/* fake value for non-akm codecs using akm infrastructure
* (e.g. of ice1724) - certainly FIXME
*/
return;
default:
snd_BUG();
return;
Expand Down Expand Up @@ -374,6 +372,8 @@ static int put_ak_reg(struct snd_kcontrol *kcontrol, int addr,
nval = mask - nval;
if (AK_GET_NEEDSMSB(kcontrol->private_value))
nval |= 0x80;
/* printk(KERN_DEBUG "DEBUG - AK writing reg: chip %x addr %x,
nval %x\n", chip, addr, nval); */
snd_akm4xxx_write(ak, chip, addr, nval);
return 1;
}
Expand Down
33 changes: 10 additions & 23 deletions trunk/sound/pci/ice1712/prodigy192.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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 */
Expand All @@ -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)) {
Expand Down
4 changes: 4 additions & 0 deletions trunk/sound/pci/ice1712/revo.c
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,10 @@ static int __devinit ap192_ak4114_init(struct snd_ice1712 *ice)
ap192_ak4114_write,
ak4114_init_vals, ak4114_init_txcsb,
ice, &ak);
/* AK4114 in Revo cannot detect external rate correctly.
* No reason to stop capture stream due to incorrect checks */
ak->check_flags = AK4114_CHECK_NO_RATE;

return 0; /* error ignored; it's no fatal error */
}

Expand Down

0 comments on commit cd35ce4

Please sign in to comment.