1*5687c71dSFlorian Walpen.\" Copyright (c) 2012 Ruslan Bukin <br@bsdpad.com> 2*5687c71dSFlorian Walpen.\" Copyright (c) 2024 Florian Walpen <dev@submerge.ch> 3*5687c71dSFlorian Walpen.\" All rights reserved. 4*5687c71dSFlorian Walpen.\" 5*5687c71dSFlorian Walpen.\" Redistribution and use in source and binary forms, with or without 6*5687c71dSFlorian Walpen.\" modification, are permitted provided that the following conditions 7*5687c71dSFlorian Walpen.\" are met: 8*5687c71dSFlorian Walpen.\" 1. Redistributions of source code must retain the above copyright 9*5687c71dSFlorian Walpen.\" notice, this list of conditions and the following disclaimer. 10*5687c71dSFlorian Walpen.\" 2. Redistributions in binary form must reproduce the above copyright 11*5687c71dSFlorian Walpen.\" notice, this list of conditions and the following disclaimer in the 12*5687c71dSFlorian Walpen.\" documentation and/or other materials provided with the distribution. 13*5687c71dSFlorian Walpen.\" 14*5687c71dSFlorian Walpen.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*5687c71dSFlorian Walpen.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*5687c71dSFlorian Walpen.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*5687c71dSFlorian Walpen.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*5687c71dSFlorian Walpen.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*5687c71dSFlorian Walpen.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*5687c71dSFlorian Walpen.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*5687c71dSFlorian Walpen.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*5687c71dSFlorian Walpen.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*5687c71dSFlorian Walpen.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*5687c71dSFlorian Walpen.\" SUCH DAMAGE. 25*5687c71dSFlorian Walpen.\" 26*5687c71dSFlorian Walpen.Dd May 1, 2024 27*5687c71dSFlorian Walpen.Dt SND_HDSP 4 28*5687c71dSFlorian Walpen.Os 29*5687c71dSFlorian Walpen.Sh NAME 30*5687c71dSFlorian Walpen.Nm snd_hdsp 31*5687c71dSFlorian Walpen.Nd "RME HDSP bridge device driver" 32*5687c71dSFlorian Walpen.Sh SYNOPSIS 33*5687c71dSFlorian WalpenTo compile this driver into the kernel, place the following lines in your 34*5687c71dSFlorian Walpenkernel configuration file: 35*5687c71dSFlorian Walpen.Bd -ragged -offset indent 36*5687c71dSFlorian Walpen.Cd "device sound" 37*5687c71dSFlorian Walpen.Cd "device snd_hdsp" 38*5687c71dSFlorian Walpen.Ed 39*5687c71dSFlorian Walpen.Pp 40*5687c71dSFlorian WalpenAlternatively, to load the driver as a module at boot time, place the 41*5687c71dSFlorian Walpenfollowing line in 42*5687c71dSFlorian Walpen.Xr loader.conf 5 : 43*5687c71dSFlorian Walpen.Bd -literal -offset indent 44*5687c71dSFlorian Walpensnd_hdsp_load="YES" 45*5687c71dSFlorian Walpen.Ed 46*5687c71dSFlorian Walpen.Sh DESCRIPTION 47*5687c71dSFlorian WalpenThe 48*5687c71dSFlorian Walpen.Nm 49*5687c71dSFlorian Walpenbridge driver allows the generic audio driver 50*5687c71dSFlorian Walpen.Xr sound 4 51*5687c71dSFlorian Walpento attach to RME HDSP audio devices. 52*5687c71dSFlorian Walpen.Sh HARDWARE 53*5687c71dSFlorian WalpenThe 54*5687c71dSFlorian Walpen.Nm 55*5687c71dSFlorian Walpendriver supports the following audio devices: 56*5687c71dSFlorian Walpen.Pp 57*5687c71dSFlorian Walpen.Bl -bullet -compact 58*5687c71dSFlorian Walpen.It 59*5687c71dSFlorian WalpenRME HDSP 9632 60*5687c71dSFlorian Walpen.It 61*5687c71dSFlorian WalpenRME HDSP 9652 62*5687c71dSFlorian Walpen.El 63*5687c71dSFlorian Walpen.Pp 64*5687c71dSFlorian WalpenBy default, each 65*5687c71dSFlorian Walpen.Xr pcm 4 66*5687c71dSFlorian Walpendevice corresponds to a physical port on the sound card. 67*5687c71dSFlorian WalpenFor ADAT ports, 8 channel, 4 channel and 2 channel formats are supported. 68*5687c71dSFlorian WalpenThe effective number of ADAT channels is 8 channels at single speed 69*5687c71dSFlorian Walpen(32kHz-48kHz) and 4 channels at double speed (64kHz-96kHz). 70*5687c71dSFlorian WalpenOnly the HDSP 9632 can operate at quad speed (128kHz-192kHz), ADAT is 71*5687c71dSFlorian Walpendisabled in this mode. 72*5687c71dSFlorian WalpenDepending on sample rate and channel format selected, not all pcm channels can 73*5687c71dSFlorian Walpenbe mapped to ADAT channels and vice versa. 74*5687c71dSFlorian Walpen.Sh LOADER TUNABLES 75*5687c71dSFlorian WalpenThese settings can be entered at the 76*5687c71dSFlorian Walpen.Xr loader 8 77*5687c71dSFlorian Walpenprompt or in 78*5687c71dSFlorian Walpen.Xr loader.conf 5 . 79*5687c71dSFlorian Walpen.Bl -tag -width indent 80*5687c71dSFlorian Walpen.It Va hw.hdsp.unified_pcm 81*5687c71dSFlorian WalpenIf set to 1, all physical ports are combined into one unified pcm device. 82*5687c71dSFlorian WalpenWhen opened in multi-channel audio software, this makes all ports available 83*5687c71dSFlorian Walpenat the same time, and fully synchronized. 84*5687c71dSFlorian WalpenFor resulting channel numbers consult the following table: 85*5687c71dSFlorian Walpen.El 86*5687c71dSFlorian Walpen.Bl -column "Sound Card" "Single Speed" "Double Speed" "Quad Speed" 87*5687c71dSFlorian Walpen.Sy "Sound Card" Ta Sy "Single Speed" Ta Sy "Double Speed" Ta Sy "Quad Speed" 88*5687c71dSFlorian Walpen.It "" Ta "Play | Rec" Ta "Play | Rec" Ta "Play | Rec" 89*5687c71dSFlorian Walpen.It HDSP 9632 Ta " 12 | 12" Ta " 8 | 8" Ta " 4 | 4" 90*5687c71dSFlorian Walpen.It HDSP 9652 Ta " 26 | 26" Ta " 14 | 14" Ta " - | -" 91*5687c71dSFlorian Walpen.El 92*5687c71dSFlorian Walpen.Sh SYSCTL TUNABLES 93*5687c71dSFlorian WalpenThese settings and informational values can be accessed at runtime with the 94*5687c71dSFlorian Walpen.Xr sysctl 8 95*5687c71dSFlorian Walpencommand. 96*5687c71dSFlorian WalpenIf multiple RME HDSP sound cards are installed, each device has a separate 97*5687c71dSFlorian Walpenconfiguration. 98*5687c71dSFlorian WalpenTo adjust the following sysctl identifiers for a specific sound card, insert 99*5687c71dSFlorian Walpenthe respective device number in place of 100*5687c71dSFlorian Walpen.Ql 0 . 101*5687c71dSFlorian Walpen.Bl -tag -width indent 102*5687c71dSFlorian Walpen.It Va dev.hdsp.0.sample_rate 103*5687c71dSFlorian WalpenSet a fixed sample rate from 32000, 44100, 48000, up to 192000. 104*5687c71dSFlorian WalpenThis is usually required for digital connections (AES, S/PDIF, ADAT). 105*5687c71dSFlorian WalpenThe default value of 0 adjusts the sample rate according to pcm device settings. 106*5687c71dSFlorian Walpen.It Va dev.hdsp.0.period 107*5687c71dSFlorian WalpenThe number of samples processed per interrupt, from 32, 64, 128, up to 4096. 108*5687c71dSFlorian WalpenSetting a lower value here results in less latency, but increases system load 109*5687c71dSFlorian Walpendue to frequent interrupt processing. 110*5687c71dSFlorian WalpenExtreme values may cause audio gaps and glitches. 111*5687c71dSFlorian Walpen.It Va dev.hdsp.0.clock_list 112*5687c71dSFlorian WalpenLists possible clock sources to sync with, depending on the hardware model. 113*5687c71dSFlorian WalpenThis includes internal and external master clocks as well as incoming digital 114*5687c71dSFlorian Walpenaudio signals like AES, S/PDIF and ADAT. 115*5687c71dSFlorian Walpen.It Va dev.hdsp.0.clock_preference 116*5687c71dSFlorian WalpenSelect a preferred clock source from the clock list. 117*5687c71dSFlorian WalpenHDSP cards will sync to this clock source when available, but fall back to 118*5687c71dSFlorian Walpenauto-sync with any other digital clock signal they receive. 119*5687c71dSFlorian WalpenSet this to 120*5687c71dSFlorian Walpen.Ql internal 121*5687c71dSFlorian Walpenif the HDSP card should act as master clock. 122*5687c71dSFlorian Walpen.It Va dev.hdsp.0.clock_source 123*5687c71dSFlorian WalpenShows the actual clock source in use (read only). 124*5687c71dSFlorian WalpenThis differs from what is set as clock preference when in auto-sync mode. 125*5687c71dSFlorian Walpen.It Va dev.hdsp.0.sync_status 126*5687c71dSFlorian WalpenDisplay the current sync status of all external clock sources. 127*5687c71dSFlorian WalpenStatus indications are 128*5687c71dSFlorian Walpen.Ql none 129*5687c71dSFlorian Walpenfor no signal at all, 130*5687c71dSFlorian Walpen.Ql lock 131*5687c71dSFlorian Walpenfor when a valid signal is present, and 132*5687c71dSFlorian Walpen.Ql sync 133*5687c71dSFlorian Walpenfor accurately synchronized signals (required for recording digital 134*5687c71dSFlorian Walpenaudio). 135*5687c71dSFlorian Walpen.El 136*5687c71dSFlorian Walpen.Pp 137*5687c71dSFlorian WalpenWhere appropriate these sysctl values are modeled after official RME software on 138*5687c71dSFlorian Walpenother platforms, and adopt their terminology. 139*5687c71dSFlorian WalpenConsult the RME user manuals for additional information. 140*5687c71dSFlorian Walpen.Sh SEE ALSO 141*5687c71dSFlorian Walpen.Xr sound 4 142*5687c71dSFlorian Walpen.Sh HISTORY 143*5687c71dSFlorian WalpenThe 144*5687c71dSFlorian Walpen.Nm 145*5687c71dSFlorian Walpendevice driver first appeared in 146*5687c71dSFlorian Walpen.Fx 15.0 . 147*5687c71dSFlorian Walpen.Sh AUTHORS 148*5687c71dSFlorian Walpen.An -nosplit 149*5687c71dSFlorian WalpenBased on 150*5687c71dSFlorian Walpen.Xr snd_hdspe 4 151*5687c71dSFlorian Walpenoriginally written by 152*5687c71dSFlorian Walpen.An Ruslan Bukin <br@bsdpad.com> . 153*5687c71dSFlorian WalpenAll adaptation to HDSP cards by 154*5687c71dSFlorian Walpen.An Florian Walpen <dev@submerge.ch> . 155