Lines Matching defs:pdevinfo
265 struct hdaa_pcm_devinfo *pdevinfo = as->pdevinfo;
266 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
343 device_printf(pdevinfo->dev, "%s channel set is: ",
366 device_printf(pdevinfo->dev,
389 device_printf((as->pdevinfo && as->pdevinfo->dev) ?
390 as->pdevinfo->dev : devinfo->dev,
463 struct hdaa_pcm_devinfo *pdevinfo = as->pdevinfo;
469 if (!as->mixed || pdevinfo == NULL || pdevinfo->mixer == NULL)
472 if (pdevinfo->autorecsrc == 0 ||
473 (pdevinfo->autorecsrc == 1 && w != NULL))
476 if (pdevinfo->recsrc & (SOUND_MASK_IMIX | SOUND_MASK_SPEAKER))
479 if (ffs(pdevinfo->recsrc) != fls(pdevinfo->recsrc))
481 devinfo = pdevinfo->devinfo;
508 if (mask & pdevinfo->recsrc)
509 mask &= pdevinfo->recsrc;
520 device_printf(pdevinfo->dev,
524 mix_setrecsrc(pdevinfo->mixer, mask);
1734 struct hdaa_pcm_devinfo *pdevinfo = ch->pdevinfo;
1735 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
1746 ch->blksz = pdevinfo->chan_size / pdevinfo->chan_blkcnt;
1747 ch->blkcnt = pdevinfo->chan_blkcnt;
1753 pdevinfo->chan_size) != 0)
1871 device_printf(ch->pdevinfo->dev,
1927 device_printf(ch->pdevinfo->dev,
2094 hdaa_channel_setfragments(obj, data, blksz, ch->pdevinfo->chan_blkcnt);
2224 struct hdaa_pcm_devinfo *pdevinfo = mix_getdevinfo(m);
2225 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
2231 pdevinfo->mixer = m;
2235 pdevinfo->left[i] = 100;
2236 pdevinfo->right[i] = 100;
2240 mask = pdevinfo->ossmask;
2241 if (pdevinfo->playas >= 0) {
2249 w->bindas != pdevinfo->playas)
2258 pdevinfo->minamp[SOUND_MIXER_PCM] ==
2259 pdevinfo->maxamp[SOUND_MIXER_PCM]) {
2261 pcm_setflags(pdevinfo->dev, pcm_getflags(pdevinfo->dev) | SD_F_SOFTPCMVOL);
2263 device_printf(pdevinfo->dev,
2276 device_printf(pdevinfo->dev,
2284 if (pdevinfo->recas >= 0) {
2286 if (devinfo->as[pdevinfo->recas].dacs[0][i] < 0)
2289 devinfo->as[pdevinfo->recas].dacs[0][i]);
2298 if (cw->bindas != pdevinfo->recas &&
2308 pdevinfo->ossmask = mask;
2319 * Update amplification per pdevinfo per ossdev, calculate summary coefficient
2352 hdaa_audio_ctl_source_volume(struct hdaa_pcm_devinfo *pdevinfo,
2355 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
2416 hdaa_audio_ctl_source_volume(pdevinfo, ossdev,
2428 hdaa_audio_ctl_dest_volume(struct hdaa_pcm_devinfo *pdevinfo,
2431 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
2490 hdaa_audio_ctl_dest_volume(pdevinfo, ossdev, w->conns[i], -1,
2496 * Set volumes for the specified pdevinfo and ossdev.
2499 hdaa_audio_ctl_dev_volume(struct hdaa_pcm_devinfo *pdevinfo, unsigned dev)
2501 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
2508 if (pdevinfo->left[dev] == 0) {
2512 lvol = ((pdevinfo->maxamp[dev] - pdevinfo->minamp[dev]) *
2513 pdevinfo->left[dev] + 50) / 100 + pdevinfo->minamp[dev];
2514 if (pdevinfo->right[dev] == 0) {
2518 rvol = ((pdevinfo->maxamp[dev] - pdevinfo->minamp[dev]) *
2519 pdevinfo->right[dev] + 50) / 100 + pdevinfo->minamp[dev];
2525 if (pdevinfo->index != 0)
2528 if (w->bindas != pdevinfo->playas &&
2529 w->bindas != pdevinfo->recas)
2534 hdaa_audio_ctl_dest_volume(pdevinfo, dev,
2541 hdaa_audio_ctl_dest_volume(pdevinfo, dev,
2558 hdaa_audio_ctl_dest_volume(pdevinfo, dev,
2565 hdaa_audio_ctl_source_volume(pdevinfo, dev,
2568 hdaa_audio_ctl_dest_volume(pdevinfo, dev,
2580 struct hdaa_pcm_devinfo *pdevinfo = mix_getdevinfo(m);
2581 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
2588 pdevinfo->left[dev] = left;
2589 pdevinfo->right[dev] = right;
2627 hdaa_audio_ctl_dev_volume(pdevinfo, dev);
2638 hdaa_audio_ctl_set_defaults(struct hdaa_pcm_devinfo *pdevinfo)
2643 if ((pdevinfo->ossmask & (1 << dev)) == 0)
2647 if (resource_int_value(device_get_name(pdevinfo->dev),
2648 device_get_unit(pdevinfo->dev), ossnames[dev], &vol) == 0)
2659 else if (dev == SOUND_MIXER_VOLUME && !pdevinfo->digital)
2664 (pdevinfo->maxamp[dev] - pdevinfo->minamp[dev]) <= 0) {
2667 vol = ((amp - pdevinfo->minamp[dev]) * 100 +
2668 (pdevinfo->maxamp[dev] - pdevinfo->minamp[dev]) / 2) /
2669 (pdevinfo->maxamp[dev] - pdevinfo->minamp[dev]);
2672 mix_set(pdevinfo->mixer, dev, vol, vol);
2680 hdaa_audio_ctl_recsel_comm(struct hdaa_pcm_devinfo *pdevinfo, uint32_t src, nid_t nid, int depth)
2682 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
2705 res |= hdaa_audio_ctl_recsel_comm(pdevinfo, src,
2727 device_printf(pdevinfo->dev,
2741 device_printf(pdevinfo->dev,
2756 struct hdaa_pcm_devinfo *pdevinfo = mix_getdevinfo(m);
2757 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
2766 if (pdevinfo->recas < 0) {
2770 as = &devinfo->as[pdevinfo->recas];
2785 ret &= hdaa_audio_ctl_recsel_comm(pdevinfo, src,
2800 !(ctl->ossmask & pdevinfo->recsrc))
2802 if (!((pdevinfo->playas >= 0 &&
2803 ctl->widget->bindas == pdevinfo->playas) ||
2804 (pdevinfo->recas >= 0 &&
2805 ctl->widget->bindas == pdevinfo->recas) ||
2806 (pdevinfo->index == 0 &&
2810 if (pdevinfo->recsrc & (1 << j)) {
2823 if ((ret | pdevinfo->recsrc) & (1 << j))
2824 hdaa_audio_ctl_dev_volume(pdevinfo, j);
2827 pdevinfo->recsrc = ret;
4914 * Store in pdevinfo new data about whether and how we can control signal
4922 struct hdaa_pcm_devinfo *pdevinfo;
4925 pdevinfo = devinfo->as[w->bindas].pdevinfo;
4927 pdevinfo = &devinfo->devs[0];
4929 pdevinfo->ossmask |= (1 << ossdev);
4932 if (pdevinfo->minamp[ossdev] == 0 && pdevinfo->maxamp[ossdev] == 0) {
4933 pdevinfo->minamp[ossdev] = minamp;
4934 pdevinfo->maxamp[ossdev] = maxamp;
4936 pdevinfo->minamp[ossdev] = imax(pdevinfo->minamp[ossdev], minamp);
4937 pdevinfo->maxamp[ossdev] = imin(pdevinfo->maxamp[ossdev], maxamp);
5521 as[i].pdevinfo = &devinfo->devs[j];
5523 devinfo->chans[as[i].chans[k]].pdevinfo =
5538 struct hdaa_pcm_devinfo *pdevinfo = &devinfo->devs[i];
5540 pdevinfo->dev = device_add_child(devinfo->dev, "pcm", DEVICE_UNIT_ANY);
5541 device_set_ivars(pdevinfo->dev, (void *)pdevinfo);
5546 hdaa_dump_ctls(struct hdaa_pcm_devinfo *pdevinfo, const char *banner, uint32_t flag)
5548 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
5569 if (!((pdevinfo->playas >= 0 &&
5570 ctl->widget->bindas == pdevinfo->playas) ||
5571 (pdevinfo->recas >= 0 &&
5572 ctl->widget->bindas == pdevinfo->recas) ||
5573 (ctl->widget->bindas == -2 && pdevinfo->index == 0)))
5580 device_printf(pdevinfo->dev, "%s", banner);
5582 device_printf(pdevinfo->dev, "Unknown Ctl");
5587 if (pdevinfo->ossmask & (1 << j)) {
5589 pdevinfo->minamp[j] / 4,
5590 pdevinfo->maxamp[j] / 4);
5595 device_printf(pdevinfo->dev, " +- ctl %2d (nid %3d %s", i,
5613 device_printf(pdevinfo->dev, "\n");
5889 hdaa_dump_dst_nid(struct hdaa_pcm_devinfo *pdevinfo, nid_t nid, int depth)
5891 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
5904 device_printf(pdevinfo->dev, "%*s", 4, "");
5906 device_printf(pdevinfo->dev, "%*s + <- ", 4 + (depth - 1) * 7, "");
5930 hdaa_dump_dst_nid(pdevinfo, w->conns[i], depth + 1);
5936 hdaa_dump_dac(struct hdaa_pcm_devinfo *pdevinfo)
5938 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
5944 if (pdevinfo->playas < 0)
5947 device_printf(pdevinfo->dev, "Playback:\n");
5949 chid = devinfo->as[pdevinfo->playas].chans[0];
5950 hdaa_dump_audio_formats(pdevinfo->dev,
5953 for (i = 0; i < devinfo->as[pdevinfo->playas].num_chans; i++) {
5954 chid = devinfo->as[pdevinfo->playas].chans[i];
5955 device_printf(pdevinfo->dev, " DAC:");
5961 as = &devinfo->as[pdevinfo->playas];
5968 device_printf(pdevinfo->dev, "\n");
5969 hdaa_dump_dst_nid(pdevinfo, as->pins[i], 0);
5971 device_printf(pdevinfo->dev, "\n");
5975 hdaa_dump_adc(struct hdaa_pcm_devinfo *pdevinfo)
5977 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
5982 if (pdevinfo->recas < 0)
5985 device_printf(pdevinfo->dev, "Record:\n");
5987 chid = devinfo->as[pdevinfo->recas].chans[0];
5988 hdaa_dump_audio_formats(pdevinfo->dev,
5991 for (i = 0; i < devinfo->as[pdevinfo->recas].num_chans; i++) {
5992 chid = devinfo->as[pdevinfo->recas].chans[i];
5993 device_printf(pdevinfo->dev, " ADC:");
6005 if (w->bindas != pdevinfo->recas)
6007 device_printf(pdevinfo->dev, "\n");
6008 hdaa_dump_dst_nid(pdevinfo, i, 0);
6010 device_printf(pdevinfo->dev, "\n");
6014 hdaa_dump_mix(struct hdaa_pcm_devinfo *pdevinfo)
6016 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
6027 if (w->bindas != pdevinfo->recas)
6031 device_printf(pdevinfo->dev, "Input Mix:\n");
6033 device_printf(pdevinfo->dev, "\n");
6034 hdaa_dump_dst_nid(pdevinfo, i, 0);
6037 device_printf(pdevinfo->dev, "\n");
6547 struct hdaa_pcm_devinfo *pdevinfo = &devinfo->devs[i];
6549 device_printf(pdevinfo->dev,
6552 if (mixer_reinit(pdevinfo->dev) == -1)
6553 device_printf(pdevinfo->dev,
6705 struct hdaa_pcm_devinfo *pdevinfo =
6712 if (pdevinfo->playas >= 0) {
6713 as = &devinfo->as[pdevinfo->playas];
6721 if (pdevinfo->recas >= 0) {
6722 if (pdevinfo->playas >= 0) {
6726 as = &devinfo->as[pdevinfo->recas];
6743 struct hdaa_pcm_devinfo *pdevinfo =
6749 if (pdevinfo->playas >= 0) {
6750 as = &devinfo->as[pdevinfo->playas];
6758 if (pdevinfo->recas >= 0) {
6759 as = &devinfo->as[pdevinfo->recas];
6902 struct hdaa_pcm_devinfo *pdevinfo = as->pdevinfo;
6903 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
6931 struct hdaa_pcm_devinfo *pdevinfo =
6933 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
6938 if (pdevinfo->playas >= 0)
6939 loc1 = devinfo->as[pdevinfo->playas].location;
6941 loc1 = devinfo->as[pdevinfo->recas].location;
6942 if (pdevinfo->recas >= 0)
6943 loc2 = devinfo->as[pdevinfo->recas].location;
6953 if (pdevinfo->playas >= 0) {
6954 hdaa_chan_formula(devinfo, pdevinfo->playas,
6956 t1 = hdaa_chan_type(devinfo, pdevinfo->playas);
6958 if (pdevinfo->recas >= 0) {
6959 hdaa_chan_formula(devinfo, pdevinfo->recas,
6961 t2 = hdaa_chan_type(devinfo, pdevinfo->recas);
6964 if (chans1[0] == 0 && pdevinfo->playas >= 0)
6966 else if (chans2[0] == 0 && pdevinfo->recas >= 0)
6977 if (pdevinfo->digital)
6983 (pdevinfo->digital == 0x7)?"HDMI/DP":
6984 ((pdevinfo->digital == 0x5)?"DisplayPort":
6985 ((pdevinfo->digital == 0x3)?"HDMI":
6986 ((pdevinfo->digital)?"Digital":"Analog"))),
6996 struct hdaa_pcm_devinfo *pdevinfo =
6998 struct hdaa_devinfo *devinfo = pdevinfo->devinfo;
7004 pdevinfo->chan_size = pcm_getbuffersize(dev,
7008 hdaa_dump_dac(pdevinfo);
7009 hdaa_dump_adc(pdevinfo);
7010 hdaa_dump_mix(pdevinfo);
7011 hdaa_dump_ctls(pdevinfo, "Master Volume", SOUND_MASK_VOLUME);
7012 hdaa_dump_ctls(pdevinfo, "PCM Volume", SOUND_MASK_PCM);
7013 hdaa_dump_ctls(pdevinfo, "CD Volume", SOUND_MASK_CD);
7014 hdaa_dump_ctls(pdevinfo, "Microphone Volume", SOUND_MASK_MIC);
7015 hdaa_dump_ctls(pdevinfo, "Microphone2 Volume", SOUND_MASK_MONITOR);
7016 hdaa_dump_ctls(pdevinfo, "Line-in Volume", SOUND_MASK_LINE);
7017 hdaa_dump_ctls(pdevinfo, "Speaker/Beep Volume", SOUND_MASK_SPEAKER);
7018 hdaa_dump_ctls(pdevinfo, "Recording Level", SOUND_MASK_RECLEV);
7019 hdaa_dump_ctls(pdevinfo, "Input Mix Level", SOUND_MASK_IMIX);
7020 hdaa_dump_ctls(pdevinfo, "Input Monitoring Level", SOUND_MASK_IGAIN);
7021 hdaa_dump_ctls(pdevinfo, NULL, 0);
7029 pdevinfo->chan_blkcnt = pdevinfo->chan_size / i;
7031 while (pdevinfo->chan_blkcnt >> i)
7033 pdevinfo->chan_blkcnt = 1 << (i - 1);
7034 if (pdevinfo->chan_blkcnt < HDA_BDL_MIN)
7035 pdevinfo->chan_blkcnt = HDA_BDL_MIN;
7036 else if (pdevinfo->chan_blkcnt > HDA_BDL_MAX)
7037 pdevinfo->chan_blkcnt = HDA_BDL_MAX;
7039 pdevinfo->chan_blkcnt = HDA_BDL_DEFAULT;
7050 if (mixer_init(dev, &hdaa_audio_ctl_ossmixer_class, pdevinfo) != 0)
7056 pcm_init(dev, pdevinfo);
7058 pdevinfo->registered++;
7061 if (pdevinfo->playas >= 0) {
7062 as = &devinfo->as[pdevinfo->playas];
7072 if (pdevinfo->recas >= 0) {
7073 as = &devinfo->as[pdevinfo->recas];
7082 pdevinfo->autorecsrc = 2;
7084 "rec.autosrc", &pdevinfo->autorecsrc);
7088 &pdevinfo->autorecsrc, 0,
7092 if (pdevinfo->mixer != NULL) {
7093 hdaa_audio_ctl_set_defaults(pdevinfo);
7095 if (pdevinfo->playas >= 0) {
7096 as = &devinfo->as[pdevinfo->playas];
7099 if (pdevinfo->recas >= 0) {
7100 as = &devinfo->as[pdevinfo->recas];
7116 struct hdaa_pcm_devinfo *pdevinfo =
7120 if (pdevinfo->registered > 0) {