Lines Matching defs:codec

157 	int codecno;		/* index of the using codec */
768 azalia_print_codec(codec_t *codec)
772 if (codec->name == NULL) {
773 vendor = pci_findvendor(codec->vid >> 16);
776 codec->vid >> 16, codec->vid & 0xffff);
778 printf("%s/0x%04x", vendor, codec->vid & 0xffff);
780 printf("%s", codec->name);
843 DPRINTF(("%s: found a codec at #%d\n", XNAME(az), i));
944 codec_t *codec;
957 /* Use the first codec capable of analog I/O. If there are none,
958 * use the first codec capable of digital I/O. Skip HDMI codecs.
962 codec = &az->codecs[i];
963 if ((codec->audiofunc < 0) ||
964 (codec->codec_type == AZ_CODEC_TYPE_HDMI))
966 if (codec->codec_type == AZ_CODEC_TYPE_DIGITAL) {
994 codec = &az->codecs[i];
996 if (codec->audiofunc < 0)
998 azalia_comresp(codec, codec->audiofunc,
1001 azalia_codec_delete(codec);
1032 codec_t *codec;
1039 codec = &az->codecs[i];
1040 if (codec->audiofunc < 0)
1042 azalia_comresp(codec, codec->audiofunc,
1207 azalia_comresp(const codec_t *codec, nid_t nid, uint32_t control,
1213 err = azalia_set_command(codec->az, codec->address, nid, control,
1217 err = azalia_get_response(codec->az, result);
1302 DPRINTF(("%s: codec address=%d tag=%d\n", __func__, addr, tag));
1307 /* We only care about events on the using codec. */
1515 * HDA codec functions
1526 /* codec vendor/device/revision */
1538 DPRINTF(("%s: codec[%d] vid 0x%8.8x, subid 0x%8.8x, rev. %u.%u,",
1551 DPRINTF(("%s: codec[%d]: No function groups\n",
1572 DPRINTF(("%s: codec[%d]: No audio function groups\n",
1768 /* If the codec can do multichannel, select different DACs for
2822 const codec_t *codec = &this->az->codecs[this->az->codecno];
2832 group = &codec->adcs.groups[codec->adcs.cur];
2834 group = &codec->dacs.groups[codec->dacs.cur];
2838 w = &codec->w[group->conv[i]];
2844 } else if (w->nid == codec->spkr_dac ||
2845 w->nid == codec->fhp_dac) {
2857 err = azalia_comresp(codec, w->nid, CORB_SET_CONVERTER_FORMAT,
2864 err = azalia_comresp(codec, w->nid,
2873 err = azalia_comresp(codec, w->nid,
2881 err = azalia_comresp(codec, w->nid,
2898 const codec_t *codec = &this->az->codecs[this->az->codecno];
2905 group = &codec->adcs.groups[codec->adcs.cur];
2907 group = &codec->dacs.groups[codec->dacs.cur];
2910 azalia_comresp(codec, nid, CORB_SET_CONVERTER_STREAM_CHANNEL,
2912 if (codec->w[nid].widgetcap & COP_AWCAP_DIGITAL) {
2914 azalia_comresp(codec, nid, CORB_GET_DIGITAL_CONTROL,
2917 azalia_comresp(codec, nid, CORB_SET_DIGITAL_CONTROL_L,
2929 azalia_widget_init(widget_t *this, const codec_t *codec, nid_t nid)
2934 err = azalia_comresp(codec, nid, CORB_GET_PARAMETER,
2942 azalia_comresp(codec, nid, CORB_SET_POWER_STATE, CORB_PS_D0,
2949 this->parent = codec->audiofunc;
2955 azalia_widget_init_audio(this, codec);
2958 azalia_widget_init_pin(this, codec);
2961 err = azalia_comresp(codec, this->nid, CORB_GET_PARAMETER,
2981 azalia_comresp(codec, nid, CORB_GET_PARAMETER,
2984 this->inamp_cap = codec->w[codec->audiofunc].inamp_cap;
2989 azalia_comresp(codec, nid, CORB_GET_PARAMETER,
2992 this->outamp_cap = codec->w[codec->audiofunc].outamp_cap;
3062 azalia_widget_label_widgets(codec_t *codec)
3074 /* If codec has more than one line-out jack, check if the jacks
3079 if (codec->nout_jacks < 2)
3081 for (i = 0; use_colors && i < codec->nopins; i++) {
3082 w = &codec->w[codec->opins[i].nid];
3091 FOR_EACH_WIDGET(codec, i) {
3092 w = &codec->w[i];
3114 if (codec->dacs.ngroups < 1)
3116 group = &codec->dacs.groups[0];
3126 if (codec->dacs.ngroups < 2)
3128 group = &codec->dacs.groups[1];
3142 if (codec->adcs.ngroups < 1)
3144 group = &codec->adcs.groups[0];
3154 if (codec->adcs.ngroups < 2)
3156 group = &codec->adcs.groups[1];
3184 FOR_EACH_WIDGET(codec, i) {
3185 if (codec->w[i].type != COP_AWTYPE_AUDIO_MIXER &&
3186 codec->w[i].type != COP_AWTYPE_AUDIO_SELECTOR)
3188 if (codec->w[i].enable == 0)
3190 j = azalia_widget_sole_conn(codec, i);
3198 if (codec->w[i].type == COP_AWTYPE_AUDIO_SELECTOR &&
3199 (codec->w[i].widgetcap & COP_AWCAP_OUTAMP) &&
3200 codec->w[i].nconnections == 1) {
3201 j = codec->w[i].connections[0];
3202 if (!azalia_widget_enabled(codec, j))
3204 if (!(codec->w[j].widgetcap & COP_AWCAP_INAMP))
3205 codec->w[i].mixer_class =
3207 else if (!(codec->w[j].widgetcap & COP_AWCAP_OUTAMP))
3208 codec->w[i].mixer_class =
3218 if (codec->w[j].enable == 0) {
3219 codec->w[i].enable = 0;
3220 snprintf(codec->w[i].name,
3221 sizeof(codec->w[i].name),
3225 snprintf(codec->w[i].name, sizeof(codec->w[i].name),
3226 "%s", codec->w[j].name);
3227 if (codec->w[j].mixer_class == AZ_CLASS_RECORD)
3228 codec->w[i].mixer_class = AZ_CLASS_RECORD;
3229 codec->w[i].parent = j;
3237 azalia_widget_init_audio(widget_t *this, const codec_t *codec)
3244 err = azalia_comresp(codec, this->nid, CORB_GET_PARAMETER,
3252 codec->w[codec->audiofunc].d.audio.encodings;
3254 codec->w[codec->audiofunc].d.audio.bits_rates;
3258 XNAME(codec->az), this->name, result);
3261 err = azalia_comresp(codec, this->nid,
3269 codec->w[codec->audiofunc].d.audio.encodings;
3271 codec->w[codec->audiofunc].d.audio.bits_rates;
3277 azalia_widget_init_pin(widget_t *this, const codec_t *codec)
3282 err = azalia_comresp(codec, this->nid, CORB_GET_CONFIGURATION_DEFAULT,
3292 err = azalia_comresp(codec, this->nid, CORB_GET_PARAMETER,
3322 if ((codec->qrks & AZ_QRK_WID_OVREF50) && (dir == CORB_PWC_OUTPUT))
3325 azalia_comresp(codec, this->nid, CORB_SET_PIN_WIDGET_CONTROL,
3329 err = azalia_comresp(codec, this->nid,
3335 err = azalia_comresp(codec, this->nid,
3349 azalia_widget_init_connection(widget_t *this, const codec_t *codec)
3360 err = azalia_comresp(codec, this->nid, CORB_GET_PARAMETER,
3381 err = azalia_comresp(codec, this->nid,
3401 printf("%s: out of memory\n", XNAME(codec->az));
3405 err = azalia_comresp(codec, this->nid,
3426 err = azalia_comresp(codec, this->nid,
3436 azalia_widget_check_conn(codec_t *codec, int index, int depth)
3441 w = &codec->w[index];
3458 if (!azalia_widget_enabled(codec, w->connections[i]))
3460 if (azalia_widget_check_conn(codec, w->connections[i], depth))
3556 azalia_widget_print_widget(const widget_t *w, const codec_t *codec)
3560 printf("%s: ", XNAME(codec->az));
3645 azalia_widget_print_widget(const widget_t *w, const codec_t *codec) {}
3852 codec_t *codec;
3856 codec = &az->codecs[az->codecno];
3857 if ((flags & FWRITE) && codec->dacs.ngroups == 0)
3859 if ((flags & FREAD) && codec->adcs.ngroups == 0)
3861 codec->running++;
3869 codec_t *codec;
3873 codec = &az->codecs[az->codecno];
3874 codec->running--;
3878 azalia_match_format(codec_t *codec, int mode, audio_params_t *par)
3885 for (i = 0; i < codec->nformats; i++) {
3886 if (mode != codec->formats[i].mode)
3888 if (par->encoding != codec->formats[i].encoding)
3890 if (par->precision != codec->formats[i].precision)
3892 if (par->channels != codec->formats[i].channels)
3898 codec->formats[i].encoding, codec->formats[i].precision,
3899 codec->formats[i].channels));
3905 azalia_set_params_sub(codec_t *codec, int mode, audio_params_t *par)
3917 if ((mode == AUMODE_PLAY && codec->dacs.ngroups == 0) ||
3918 (mode == AUMODE_RECORD && codec->adcs.ngroups == 0))
3921 i = azalia_match_format(codec, mode, par);
3922 if (i == codec->nformats && (par->precision != 16 || par->encoding !=
3927 i = azalia_match_format(codec, mode, par);
3929 if (i == codec->nformats && par->channels != 2) {
3934 i = azalia_match_format(codec, mode, par);
3937 if (i == codec->nformats) {
3941 i = azalia_match_format(codec, mode, par);
3942 if (i == codec->nformats) {
3949 if (codec->formats[i].frequency_type == 0) {
3955 for (j = 0; j < codec->formats[i].frequency_type; j++) {
3956 if (par->sample_rate != codec->formats[i].frequency[j])
3960 if (j == codec->formats[i].frequency_type) {
3963 for (j = 0; j < codec->formats[i].frequency_type; j++) {
3964 if (par->sample_rate != codec->formats[i].frequency[j])
3968 if (j == codec->formats[i].frequency_type) {
3985 codec_t *codec;
3989 codec = &az->codecs[az->codecno];
3990 if (codec->nformats == 0) {
3991 DPRINTF(("%s: codec has no formats\n", __func__));
3996 ret = azalia_set_params_sub(codec, AUMODE_RECORD, r);
4002 ret = azalia_set_params_sub(codec, AUMODE_PLAY, p);