Beispiel #1
0
static int
onyx_init(struct snd_mixer *m)
{
	struct onyx_softc *sc;
	u_int  x = 0;

	sc = device_get_softc(mix_getdevinfo(m));

	onyx_write(sc, PCM3052_REG_LEFT_ATTN, onyx_initdata.LEFT_ATTN);
	onyx_write(sc, PCM3052_REG_RIGHT_ATTN, onyx_initdata.RIGHT_ATTN);
	onyx_write(sc, PCM3052_REG_CONTROL, onyx_initdata.CONTROL);
	onyx_write(sc, PCM3052_REG_DAC_CONTROL,
		      onyx_initdata.DAC_CONTROL);
	onyx_write(sc, PCM3052_REG_DAC_DEEMPH, onyx_initdata.DAC_DEEMPH);
	onyx_write(sc, PCM3052_REG_DAC_FILTER, onyx_initdata.DAC_FILTER);
	onyx_write(sc, PCM3052_REG_OUT_PHASE, onyx_initdata.OUT_PHASE);
	onyx_write(sc, PCM3052_REG_ADC_CONTROL,
		      onyx_initdata.ADC_CONTROL);
	onyx_write(sc, PCM3052_REG_ADC_HPF_BP, onyx_initdata.ADC_HPF_BP);
	onyx_write(sc, PCM3052_REG_INFO_1, onyx_initdata.INFO_1);
	onyx_write(sc, PCM3052_REG_INFO_2, onyx_initdata.INFO_2);
	onyx_write(sc, PCM3052_REG_INFO_3, onyx_initdata.INFO_3);
	onyx_write(sc, PCM3052_REG_INFO_4, onyx_initdata.INFO_4);

	x |= SOUND_MASK_VOLUME;
	mix_setdevs(m, x);

	return (0);
}
static int
ad1816mix_init(struct snd_mixer *m)
{
    mix_setdevs(m, AD1816_MIXER_DEVICES);
    mix_setrecdevs(m, AD1816_REC_DEVICES);
    return 0;
}
Beispiel #3
0
static int
tumbler_init(struct snd_mixer *m)
{
    struct tumbler_softc *sc;
    u_int		x = 0;

    sc = device_get_softc(mix_getdevinfo(m));

    tumbler_write(sc, TUMBLER_LB0, tumbler_initdata.LB0);
    tumbler_write(sc, TUMBLER_LB1, tumbler_initdata.LB1);
    tumbler_write(sc, TUMBLER_LB2, tumbler_initdata.LB2);
    tumbler_write(sc, TUMBLER_LB3, tumbler_initdata.LB3);
    tumbler_write(sc, TUMBLER_LB4, tumbler_initdata.LB4);
    tumbler_write(sc, TUMBLER_LB5, tumbler_initdata.LB5);
    tumbler_write(sc, TUMBLER_RB0, tumbler_initdata.RB0);
    tumbler_write(sc, TUMBLER_RB1, tumbler_initdata.RB1);
    tumbler_write(sc, TUMBLER_RB1, tumbler_initdata.RB1);
    tumbler_write(sc, TUMBLER_RB2, tumbler_initdata.RB2);
    tumbler_write(sc, TUMBLER_RB3, tumbler_initdata.RB3);
    tumbler_write(sc, TUMBLER_RB4, tumbler_initdata.RB4);
    tumbler_write(sc, TUMBLER_RB5, tumbler_initdata.RB5);
    tumbler_write(sc, TUMBLER_MCR, tumbler_initdata.MCR);
    tumbler_write(sc, TUMBLER_DRC, tumbler_initdata.DRC);
    tumbler_write(sc, TUMBLER_VOLUME, tumbler_initdata.VOLUME);
    tumbler_write(sc, TUMBLER_TREBLE, tumbler_initdata.TREBLE);
    tumbler_write(sc, TUMBLER_BASS, tumbler_initdata.BASS);
    tumbler_write(sc, TUMBLER_MIXER1, tumbler_initdata.MIXER1);
    tumbler_write(sc, TUMBLER_MIXER2, tumbler_initdata.MIXER2);

    x |= SOUND_MASK_VOLUME;
    mix_setdevs(m, x);

    return (0);
}
Beispiel #4
0
static int
screamer_init(struct snd_mixer *m)
{
	struct davbus_softc *d;

	d = mix_getdevinfo(m);

	d->read_status = screamer_read_status;
	d->set_outputs = screamer_set_outputs;

	mtx_lock(&d->mutex);

	screamer_write_locked(d, SCREAMER_CODEC_ADDR0, SCREAMER_INPUT_CD | 
	    SCREAMER_DEFAULT_CD_GAIN);

	screamer_set_outputs(d, screamer_read_status(d, 
	    bus_read_4(d->reg, DAVBUS_CODEC_STATUS)));

	screamer_write_locked(d, SCREAMER_CODEC_ADDR2, 0);
	screamer_write_locked(d, SCREAMER_CODEC_ADDR4, 0);
	screamer_write_locked(d, SCREAMER_CODEC_ADDR5, 0);
	screamer_write_locked(d, SCREAMER_CODEC_ADDR6, 0);

	mtx_unlock(&d->mutex);

	mix_setdevs(m, SOUND_MASK_VOLUME);

	return (0);
}
Beispiel #5
0
static int
bcmmix_init(struct snd_mixer *m)
{

	mix_setdevs(m, SOUND_MASK_VOLUME);

	return (0);
}
Beispiel #6
0
static int
burgundy_init(struct snd_mixer *m)
{
	struct davbus_softc *d;

	d = mix_getdevinfo(m);

	d->read_status = burgundy_read_status;
	d->set_outputs = burgundy_set_outputs;

	/*
	 * We configure the Burgundy codec as follows:
	 *
	 * 	o Input subframe 0 is connected to input digital
	 *	  stream A (ISA).
	 *	o Stream A (ISA) is mixed in mixer 2 (MIX2).
	 *	o Output of mixer 2 (MIX2) is routed to output sources
	 *	  OS0 and OS1 which can be converted to analog.
	 *
	 */
	mtx_lock(&d->mutex);

	burgundy_write_locked(d, 0x16700, 0x40);
	
	burgundy_write_locked(d, BURGUNDY_MIX0_REG, 0); 
	burgundy_write_locked(d, BURGUNDY_MIX1_REG, 0);
	burgundy_write_locked(d, BURGUNDY_MIX2_REG, BURGUNDY_MIX_ISA);
	burgundy_write_locked(d, BURGUNDY_MIX3_REG, 0);

	burgundy_write_locked(d, BURGUNDY_OS_REG, BURGUNDY_OS0_MIX2 | 
	    BURGUNDY_OS1_MIX2);

	burgundy_write_locked(d, BURGUNDY_SDIN_REG, BURGUNDY_ISA_SF0);

	/* Set several digital scalers to unity gain. */
	burgundy_write_locked(d, BURGUNDY_MXS2L_REG, BURGUNDY_MXS_UNITY);
	burgundy_write_locked(d, BURGUNDY_MXS2R_REG, BURGUNDY_MXS_UNITY);
	burgundy_write_locked(d, BURGUNDY_OSS0L_REG, BURGUNDY_OSS_UNITY);
	burgundy_write_locked(d, BURGUNDY_OSS0R_REG, BURGUNDY_OSS_UNITY);
	burgundy_write_locked(d, BURGUNDY_OSS1L_REG, BURGUNDY_OSS_UNITY);
	burgundy_write_locked(d, BURGUNDY_OSS1R_REG, BURGUNDY_OSS_UNITY);
	burgundy_write_locked(d, BURGUNDY_ISSAL_REG, BURGUNDY_ISS_UNITY);
	burgundy_write_locked(d, BURGUNDY_ISSAR_REG, BURGUNDY_ISS_UNITY);

	burgundy_set_outputs(d, burgundy_read_status(d, 
	    bus_read_4(d->reg, DAVBUS_CODEC_STATUS)));

	mtx_unlock(&d->mutex);

	mix_setdevs(m, SOUND_MASK_VOLUME);

	return (0);
}
Beispiel #7
0
static int
ua_mixer_init(struct snd_mixer *m)
{
	u_int32_t mask;
	device_t pa_dev;
	struct ua_info *ua = mix_getdevinfo(m);

	pa_dev = device_get_parent(ua->sc_dev);

	mask = uaudio_query_mix_info(pa_dev);
	mix_setdevs(m,	mask);

	return 0;
}
Beispiel #8
0
static int
snapper_init(struct snd_mixer *m)
{
	struct snapper_softc *sc;
	u_int		x = 0;

	sc = device_get_softc(mix_getdevinfo(m));

        snapper_write(sc, SNAPPER_LB0, snapper_initdata.LB0);
	snapper_write(sc, SNAPPER_LB1, snapper_initdata.LB1);
	snapper_write(sc, SNAPPER_LB2, snapper_initdata.LB2);
	snapper_write(sc, SNAPPER_LB3, snapper_initdata.LB3);
	snapper_write(sc, SNAPPER_LB4, snapper_initdata.LB4);
	snapper_write(sc, SNAPPER_LB5, snapper_initdata.LB5);
	snapper_write(sc, SNAPPER_LB6, snapper_initdata.LB6);
	snapper_write(sc, SNAPPER_RB0, snapper_initdata.RB0);
	snapper_write(sc, SNAPPER_RB1, snapper_initdata.RB1);
	snapper_write(sc, SNAPPER_RB1, snapper_initdata.RB1);
	snapper_write(sc, SNAPPER_RB2, snapper_initdata.RB2);
	snapper_write(sc, SNAPPER_RB3, snapper_initdata.RB3);
	snapper_write(sc, SNAPPER_RB4, snapper_initdata.RB4);
	snapper_write(sc, SNAPPER_RB5, snapper_initdata.RB5);
	snapper_write(sc, SNAPPER_RB6, snapper_initdata.RB6);
	snapper_write(sc, SNAPPER_MCR1, snapper_initdata.MCR1);
	snapper_write(sc, SNAPPER_MCR2, snapper_initdata.MCR2);
	snapper_write(sc, SNAPPER_DRC, snapper_initdata.DRC);
	snapper_write(sc, SNAPPER_VOLUME, snapper_initdata.VOLUME);
	snapper_write(sc, SNAPPER_TREBLE, snapper_initdata.TREBLE);
	snapper_write(sc, SNAPPER_BASS, snapper_initdata.BASS);
	snapper_write(sc, SNAPPER_MIXER_L, snapper_initdata.MIXER_L);
	snapper_write(sc, SNAPPER_MIXER_R, snapper_initdata.MIXER_R);
	snapper_write(sc, SNAPPER_LLB, snapper_initdata.LLB);
	snapper_write(sc, SNAPPER_RLB, snapper_initdata.RLB);
	snapper_write(sc, SNAPPER_LLB_GAIN, snapper_initdata.LLB_GAIN);
	snapper_write(sc, SNAPPER_RLB_GAIN, snapper_initdata.RLB_GAIN);
	snapper_write(sc, SNAPPER_ACR, snapper_initdata.ACR);

	x |= SOUND_MASK_VOLUME;
	mix_setdevs(m, x);

	return (0);
}
Beispiel #9
0
static int
a10codec_mixer_init(struct snd_mixer *m)
{
	struct a10codec_info *sc = mix_getdevinfo(m);
	pcell_t prop[4];
	phandle_t node;
	device_t gpio;
	uint32_t val;
	ssize_t len;
	int pin;

	mix_setdevs(m, SOUND_MASK_VOLUME | SOUND_MASK_LINE | SOUND_MASK_RECLEV);
	mix_setrecdevs(m, SOUND_MASK_LINE | SOUND_MASK_LINE1 | SOUND_MASK_MIC);

	/* Unmute input source to PA */
	val = CODEC_READ(sc, AC_DAC_ACTL);
	val |= DAC_ACTL_PAMUTE;
	CODEC_WRITE(sc, AC_DAC_ACTL, val);

	/* Enable PA */
	val = CODEC_READ(sc, AC_ADC_ACTL);
	val |= ADC_ACTL_PA_EN;
	CODEC_WRITE(sc, AC_ADC_ACTL, val);

	/* Unmute PA */
	node = ofw_bus_get_node(sc->dev);
	len = OF_getencprop(node, "allwinner,pa-gpios", prop, sizeof(prop));
	if (len > 0 && (len / sizeof(prop[0])) == 4) {
		gpio = OF_device_from_xref(prop[0]);
		if (gpio != NULL) {
			pin = prop[1] * 32 + prop[2];
			GPIO_PIN_SETFLAGS(gpio, pin, GPIO_PIN_OUTPUT);
			GPIO_PIN_SET(gpio, pin, GPIO_PIN_LOW);
		}
	}

	return (0);
}