Lines Matching defs:m

143 mixer_set_softpcmvol(struct snd_mixer *m, struct snddev_info *d,
152 if (mtx_owned(m->lock))
169 MIXER_SET_UNLOCK(m, dropmtx);
182 MIXER_SET_LOCK(m, dropmtx);
188 mixer_set_eq(struct snd_mixer *m, struct snddev_info *d,
205 if (mtx_owned(m->lock))
222 MIXER_SET_UNLOCK(m, dropmtx);
234 MIXER_SET_LOCK(m, dropmtx);
240 mixer_set(struct snd_mixer *m, u_int dev, u_int32_t muted, u_int lev)
248 if (m == NULL || dev >= SOUND_MIXER_NRDEVICES ||
249 (0 == (m->devs & (1 << dev))))
254 realdev = m->realdev[dev];
256 d = device_get_softc(m->dev);
261 if (!(d->flags & SD_F_MPSAFE) && mtx_owned(m->lock) != 0)
268 m->level_muted[dev] = l | (r << 8);
271 MIXER_SET_UNLOCK(m, dropmtx);
274 parent = m->parent[dev];
278 child = m->child[dev];
281 tl = (l * (m->level[parent] & 0x00ff)) / 100;
282 tr = (r * ((m->level[parent] & 0xff00) >> 8)) / 100;
284 (void)mixer_set_softpcmvol(m, d, tl, tr);
286 MIXER_SET(m, realdev, tl, tr) < 0) {
287 MIXER_SET_LOCK(m, dropmtx);
292 if (!(child & (1 << i)) || m->parent[i] != dev)
294 realdev = m->realdev[i];
295 tl = (l * (m->level[i] & 0x00ff)) / 100;
296 tr = (r * ((m->level[i] & 0xff00) >> 8)) / 100;
299 (void)mixer_set_softpcmvol(m, d, tl, tr);
301 MIXER_SET(m, realdev, tl, tr);
303 realdev = m->realdev[dev];
305 MIXER_SET(m, realdev, l, r) < 0) {
306 MIXER_SET_LOCK(m, dropmtx);
311 (void)mixer_set_softpcmvol(m, d, l, r);
314 (void)mixer_set_eq(m, d, dev, (l + r) >> 1);
316 MIXER_SET(m, realdev, l, r) < 0) {
317 MIXER_SET_LOCK(m, dropmtx);
322 MIXER_SET_LOCK(m, dropmtx);
324 m->level[dev] = l | (r << 8);
325 m->modify_counter++;
416 * @param m mixer context container thing
423 mixer_get_recroute(struct snd_mixer *m, int *route)
431 if ((1 << i) == m->recsrc)
433 if ((1 << i) & m->recdevs)
451 * @param m mixer context container thing
458 mixer_set_recroute(struct snd_mixer *m, int route)
466 if ((1 << i) & m->recdevs) {
476 ret = mixer_setrecsrc(m, (1 << i));
482 mix_setdevs(struct snd_mixer *m, u_int32_t v)
487 if (m == NULL)
490 d = device_get_softc(m->dev);
496 if (m->parent[i] < SOUND_MIXER_NRDEVICES)
497 v |= 1 << m->parent[i];
498 v |= m->child[i];
500 m->devs = v;
518 * @param m mixer device context container thing
522 mix_setrecdevs(struct snd_mixer *m, u_int32_t v)
528 ei = &m->enuminfo;
552 device_printf(m->dev,
554 device_printf(m->dev,
568 m->recdevs = v;
572 mix_setparentchild(struct snd_mixer *m, u_int32_t parent, u_int32_t childs)
577 if (m == NULL || parent >= SOUND_MIXER_NRDEVICES)
584 if (m->parent[i] < SOUND_MIXER_NRDEVICES)
585 m->child[m->parent[i]] &= ~(1 << i);
586 m->parent[i] = parent;
587 m->child[i] = 0;
591 m->child[parent] = mask;
595 mix_setrealdev(struct snd_mixer *m, u_int32_t dev, u_int32_t realdev)
597 if (m == NULL || dev >= SOUND_MIXER_NRDEVICES ||
600 m->realdev[dev] = realdev;
604 mix_getparent(struct snd_mixer *m, u_int32_t dev)
606 if (m == NULL || dev >= SOUND_MIXER_NRDEVICES)
608 return m->parent[dev];
612 mix_getchild(struct snd_mixer *m, u_int32_t dev)
614 if (m == NULL || dev >= SOUND_MIXER_NRDEVICES)
616 return m->child[dev];
620 mix_getdevs(struct snd_mixer *m)
622 return m->devs;
626 mix_getmutedevs(struct snd_mixer *m)
628 return m->mutedevs;
632 mix_getrecdevs(struct snd_mixer *m)
634 return m->recdevs;
638 mix_getdevinfo(struct snd_mixer *m)
640 return m->devinfo;
647 struct snd_mixer *m;
656 m = (struct snd_mixer *)kobj_create(cls, M_MIXER, M_WAITOK | M_ZERO);
657 snprintf(m->name, sizeof(m->name), "%s:mixer",
660 strlcat(m->name, ":", sizeof(m->name));
661 strlcat(m->name, desc, sizeof(m->name));
663 m->lock = snd_mtxcreate(m->name, (type == MIXER_TYPE_PRIMARY) ?
665 m->type = type;
666 m->devinfo = devinfo;
667 m->busy = 0;
668 m->dev = dev;
669 for (i = 0; i < nitems(m->parent); i++) {
670 m->parent[i] = SOUND_MIXER_NONE;
671 m->child[i] = 0;
672 m->realdev[i] = i;
675 if (MIXER_INIT(m)) {
676 snd_mtxlock(m->lock);
677 snd_mtxfree(m->lock);
678 kobj_delete((kobj_t)m, M_MIXER);
682 return (m);
686 mixer_delete(struct snd_mixer *m)
688 KASSERT(m != NULL, ("NULL snd_mixer"));
689 KASSERT(m->type == MIXER_TYPE_SECONDARY,
690 ("%s(): illegal mixer type=%d", __func__, m->type));
694 MIXER_UNINIT(m);
696 snd_mtxfree(m->lock);
697 kobj_delete((kobj_t)m, M_MIXER);
712 struct snd_mixer *m;
734 m = mixer_obj_create(dev, cls, devinfo, MIXER_TYPE_PRIMARY, NULL);
735 if (m == NULL)
748 mixer_set(m, i, 0, v | (v << 8));
751 mixer_setrecsrc(m, 0); /* Set default input. */
755 pdev->si_drv1 = m;
760 if (!(m->devs & (1 << i)))
762 if (m->realdev[i] != i) {
765 (m->realdev[i] < SOUND_MIXER_NRDEVICES) ?
766 snd_mixernames[m->realdev[i]] : "none");
771 if (m->parent[i] < SOUND_MIXER_NRDEVICES)
773 snd_mixernames[m->parent[i]]);
774 if (m->child[i] != 0)
775 printf(" child=0x%08x", m->child[i]);
792 struct snd_mixer *m;
800 m = pdev->si_drv1;
801 KASSERT(m != NULL, ("NULL snd_mixer"));
802 KASSERT(m->type == MIXER_TYPE_PRIMARY,
803 ("%s(): illegal mixer type=%d", __func__, m->type));
808 snd_mtxlock(m->lock);
811 mixer_set(m, i, 0, 0);
813 mixer_setrecsrc(m, SOUND_MASK_MIC);
815 snd_mtxunlock(m->lock);
819 MIXER_UNINIT(m);
821 snd_mtxfree(m->lock);
822 kobj_delete((kobj_t)m, M_MIXER);
832 struct snd_mixer *m;
837 m = pdev->si_drv1;
838 snd_mtxlock(m->lock);
840 i = MIXER_REINIT(m);
842 snd_mtxunlock(m->lock);
847 if (m->mutedevs & (1 << i))
848 mixer_set(m, i, 0, 0);
850 mixer_set(m, i, 0, m->level[i]);
853 mixer_setrecsrc(m, m->recsrc);
854 snd_mtxunlock(m->lock);
864 struct snd_mixer *m;
866 m = oidp->oid_arg1;
867 snd_mtxlock(m->lock);
868 strlcpy(devname, snd_mixernames[m->hwvol_mixer], sizeof(devname));
869 snd_mtxunlock(m->lock);
871 snd_mtxlock(m->lock);
875 snd_mtxunlock(m->lock);
878 m->hwvol_mixer = dev;
881 snd_mtxunlock(m->lock);
888 struct snd_mixer *m;
892 m = pdev->si_drv1;
894 m->hwvol_mixer = SOUND_MIXER_VOLUME;
895 m->hwvol_step = 5;
898 OID_AUTO, "hwvol_step", CTLFLAG_RWTUN, &m->hwvol_step, 0, "");
902 m, 0, sysctl_hw_snd_hwvol_mixer, "A", "");
907 mixer_hwvol_mute_locked(struct snd_mixer *m)
909 mix_setmutedevs(m, m->mutedevs ^ (1 << m->hwvol_mixer));
915 struct snd_mixer *m;
919 m = pdev->si_drv1;
920 snd_mtxlock(m->lock);
921 mixer_hwvol_mute_locked(m);
922 snd_mtxunlock(m->lock);
926 mixer_hwvol_step_locked(struct snd_mixer *m, int left_step, int right_step)
930 level = mixer_get(m, m->hwvol_mixer);
935 left += left_step * m->hwvol_step;
940 right += right_step * m->hwvol_step;
946 mixer_set(m, m->hwvol_mixer, m->mutedevs, left | right << 8);
953 struct snd_mixer *m;
957 m = pdev->si_drv1;
958 snd_mtxlock(m->lock);
959 mixer_hwvol_step_locked(m, left_step, right_step);
960 snd_mtxunlock(m->lock);
964 mixer_busy(struct snd_mixer *m)
966 KASSERT(m != NULL, ("NULL snd_mixer"));
968 return (m->busy);
972 mix_set(struct snd_mixer *m, u_int dev, u_int left, u_int right)
976 KASSERT(m != NULL, ("NULL snd_mixer"));
978 snd_mtxlock(m->lock);
979 ret = mixer_set(m, dev, m->mutedevs, left | (right << 8));
980 snd_mtxunlock(m->lock);
986 mix_get(struct snd_mixer *m, u_int dev)
990 KASSERT(m != NULL, ("NULL snd_mixer"));
992 snd_mtxlock(m->lock);
993 ret = mixer_get(m, dev);
994 snd_mtxunlock(m->lock);
1000 mix_setrecsrc(struct snd_mixer *m, u_int32_t src)
1004 KASSERT(m != NULL, ("NULL snd_mixer"));
1006 snd_mtxlock(m->lock);
1007 ret = mixer_setrecsrc(m, src);
1008 snd_mtxunlock(m->lock);
1014 mix_getrecsrc(struct snd_mixer *m)
1018 KASSERT(m != NULL, ("NULL snd_mixer"));
1020 snd_mtxlock(m->lock);
1021 ret = mixer_getrecsrc(m);
1022 snd_mtxunlock(m->lock);
1028 mix_get_type(struct snd_mixer *m)
1030 KASSERT(m != NULL, ("NULL snd_mixer"));
1032 return (m->type);
1036 mix_get_dev(struct snd_mixer *m)
1038 KASSERT(m != NULL, ("NULL snd_mixer"));
1040 return (m->dev);
1049 struct snd_mixer *m;
1054 m = i_dev->si_drv1;
1055 d = device_get_softc(m->dev);
1061 snd_mtxlock(m->lock);
1062 m->busy = 1;
1063 snd_mtxunlock(m->lock);
1072 struct snd_mixer *m;
1078 m = i_dev->si_drv1;
1079 d = device_get_softc(m->dev);
1085 snd_mtxlock(m->lock);
1086 ret = (m->busy == 0) ? EBADF : 0;
1087 m->busy = 0;
1088 snd_mtxunlock(m->lock);
1098 struct snd_mixer *m;
1106 m = dev->si_drv1;
1107 d = device_get_softc(m->dev);
1166 snd_mtxlock(m->lock);
1167 *(int *)arg = mix_getdevs(m);
1168 snd_mtxunlock(m->lock);
1235 mixer_mixerinfo(struct snd_mixer *m, mixer_info *mi)
1238 strlcpy(mi->id, m->name, sizeof(mi->id));
1239 strlcpy(mi->name, device_get_desc(m->dev), sizeof(mi->name));
1240 mi->modify_counter = m->modify_counter;
1251 struct snd_mixer *m;
1280 m = i_dev->si_drv1;
1282 if (m == NULL)
1285 snd_mtxlock(m->lock);
1286 if (from == MIXER_CMD_CDEV && !m->busy) {
1287 snd_mtxunlock(m->lock);
1292 bcopy((void *)&m->enuminfo, arg, sizeof(oss_mixer_enuminfo));
1296 ret = mixer_get_recroute(m, arg_i);
1299 ret = mixer_set_recroute(m, *arg_i);
1306 mixer_mixerinfo(m, (mixer_info *)arg);
1313 ret = mixer_setrecsrc(m, *arg_i);
1316 mix_setmutedevs(m, *arg_i);
1320 ret = mixer_set(m, j, m->mutedevs, *arg_i);
1323 snd_mtxunlock(m->lock);
1331 v = mix_getdevs(m);
1334 v = mix_getmutedevs(m);
1337 v = mix_getrecdevs(m);
1340 v = mixer_getrecsrc(m);
1343 v = mixer_get(m, j);
1347 snd_mtxunlock(m->lock);
1351 snd_mtxunlock(m->lock);
1430 struct snd_mixer *m;
1441 m = NULL;
1476 m = d->mixer_dev->si_drv1;
1477 mtx_lock(m->lock);
1489 strlcpy(mi->name, m->name, sizeof(mi->name));
1490 mi->modify_counter = m->modify_counter;
1520 mi->enabled = device_is_attached(m->dev) ? 1 : 0;
1523 * currently MIXER_CAP_VIRTUAL, which I'm not sure we
1549 mtx_unlock(m->lock);
1564 mixer_get_lock(struct snd_mixer *m)
1566 if (m->lock == NULL) {
1569 return (m->lock);
1573 mix_get_locked(struct snd_mixer *m, u_int dev, int *pleft, int *pright)
1577 level = mixer_get(m, dev);
1590 mix_set_locked(struct snd_mixer *m, u_int dev, int left, int right)
1596 return (mixer_set(m, dev, m->mutedevs, level));