Hi Alexandre,

the patch works for me, both with the C-Media and Startech, for both USB2 and 
USB3.

Thanks and best wishes
Luca

> On 17 May 2021, at 18:44, Alexandre Ratchov <a...@caoua.org> wrote:
> 
> On Sat, May 15, 2021 at 04:18:08PM +0000, Doug Moss wrote:
>>> On 11 May 2021, Luca wrote:
>>> Thanks guys. I've ordered one, let's see if I am lucky.
>>> Cheers
>>> Luca
>> I have the same problem: OpenBSD 6.9 arm64, USB audio is not working
>> I wrote before about this, as well as Luca
>> ( https://marc.info/?l=openbsd-arm&m=159691773016835&w=2 )
>> Thank you to Luca for showing the sndiod logs and kernel messages.
>> To add some further data:
>> I have tried multiple USB audio devices:
>> Logitech S-150
>>  
>> https://www.logitech.com/en-us/products/speakers/s150-usb-stereo-speakers.980-000028.html
>> Schiit Modi
>>  https://www.schiit.com/products/modi-1
>> StarTech as mentioned by other poster in this thread
>>  https://www.startech.com/en-us/cards-adapters/icusbaudio2d
>> All work fine on a Powerbook running MacOS, and work fine on OpenBSD 6.9 
>> amd64
>> All do not work with (OpenBSD 6.9 arm64) on (Raspberry Pi 4 B, rev 1.2)
>> All just create static noise which does seem to have the same envelope as 
>> the intended audio (when intended song is quiet, just low level static, then 
>> when intended song is louder, the static gets louder)
>> I am particularly perplexed that someone else has gotten the StarTech device 
>> to work with OpenBSD arm64.
> 
> Hi,
> 
> Could you try the diff below? I don't have the hardware to test, this
> is an attempt based on discussion with Luca and other developpers
> 
> 
> Index: uaudio.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/usb/uaudio.c,v
> retrieving revision 1.160
> diff -u -p -r1.160 uaudio.c
> --- uaudio.c    11 Jun 2020 16:00:10 -0000    1.160
> +++ uaudio.c    17 May 2021 16:31:59 -0000
> @@ -35,6 +35,7 @@
> #include <dev/usb/usb.h>
> #include <dev/usb/usbdi.h>
> #include <dev/usb/usbdivar.h>
> +#include <dev/usb/usb_mem.h>
> 
> #ifdef UAUDIO_DEBUG
> #define DPRINTF(...)                \
> @@ -3173,6 +3174,8 @@ uaudio_pdata_copy(struct uaudio_softc *s
>       }
>       s->ubuf_pos += count;
>       if (s->ubuf_pos == xfer->size) {
> +            usb_syncmem(&xfer->usb_xfer->dmabuf, 0, xfer->size,
> +                BUS_DMASYNC_PREWRITE);
>           s->ubuf_pos = 0;
> #ifdef DIAGNOSTIC
>           if (s->ubuf_xfer == s->nxfers) {

Reply via email to