Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Oct 2024 00:53:45 +0300
From:      Christos Margiolis <christos@freebsd.org>
To:        Alban Hertroys <haramrae@gmail.com>
Cc:        Dag-Erling =?utf-8?B?U23DuHJncmF2?= <des@freebsd.org>,  freebsd-stable@freebsd.org
Subject:   Re: uaudio device re-attach and persisting dev.pcm.$pcm.bitperfect sysctl
Message-ID:  <fgpuue37atkszq5hbty2ec47c47nd3dpokrdhl4g4b3qlh4po2@luayn4ocxtpw>
In-Reply-To: <8745F9FB-9CC1-476C-9445-DC0A7A76165F@gmail.com>
References:  <F61ECC96-6FCB-4A4E-9EEC-8D6AF31A8A62@gmail.com> <86ploiwxw8.fsf@ltc.des.dev> <8745F9FB-9CC1-476C-9445-DC0A7A76165F@gmail.com>

index | next in thread | previous in thread | raw e-mail

Alban Hertroys wrote:
> Meanwhile, several people here suggested that devd is the way to go
> about this. I had actually looked into that a bit, but that seemed to
> require a related device node in /dev, and there’s neither one for pcm
> nor for uaudio, so I discarded that as not being a viable option.
> Perhaps too soon.

Audio device nodes are /dev/dspX, where X is the unit number, which has
a 1-1 relation with the pcmX unit number, so pcm2's device node is
/dev/dsp2.

To clarify some more things, the sound subsystem roughly consists of the
following layers:
- The sound(4) layer, which is the highest-level layer, and among other
  things, is responsible for mixing channels, doing conversions,
  providing some generic functions for sound drivers to use, as well as
  providing a uniform device interface (i.e pcmX).
- The device driver (e.g snd_uaudio(4), snd_hda(4), ...) layer, which is
  responsible for actually communicating with the sound card.

You could visualize it as follows:

some usb card		-> uaudio0	-> pcm0
some other usb card	-> uaudio1	-> pcm1
some intel card		-> hdaa0	-> pcm2

>
> [...]
>
> I can see devd looking to match uaudio0 and pcm2 devices to several
> names it knows (probably from other devd confs?), but it doesn’t seem
> to match my attempt. Let alone that it got around to attempting to
> parse my sh tidbit.

So in your case, "pcm2" is a generic name given to the device by
sound(4) and "uaudio0" is the name of the driver this device is using,
but the actual device node is /dev/dsp2.

What I think is confusing is that sound(4) names devices as "pcm", but
creates the nodes as "dsp"... Maybe I should propose a patch to get rid
of this scheme, and simply name them everywhere as either "pcm", "dsp",
or something else like "snd".

Christos


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?fgpuue37atkszq5hbty2ec47c47nd3dpokrdhl4g4b3qlh4po2>