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; }
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); }
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); }
static int bcmmix_init(struct snd_mixer *m) { mix_setdevs(m, SOUND_MASK_VOLUME); return (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); }
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; }
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); }
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); }