SAMA5D2 specific, I should add.
> On 27 Aug 2023, at 23:23, Tim Hardisty <t...@hardisty.co.uk> wrote: > > The classD driver DOES register itself as /dev/audio/pcm0, and works > correctly as such with nx_player. > > The conversions are wav (or mp3 etc) to pcm. > > Don’t if we’re talking cross purposes or the classd driver works in a way it > shouldn’t!!! > >> On 27 Aug 2023, at 23:00, Gregory Nutt <spudan...@gmail.com> wrote: >> >> Also, I don't think the /dev/audio/pcm0 device you are talking about is >> what you think it is. It is a character driver but not the Class D lower >> half. So, yes it can be opened. >> >> /Caveat: It has been ages since I worked with the audio subsystem so I >> might be completely wrong./ >> >> /dev/audio/pcm0 is the audio subsystem interface device. The "pcm" >> indicates that it used the PCM software decoder (that will convert PCM file >> data to WAV). It gets set up like: >> >> boards/arm/sama5/sama5d4-ek/src/sam_wm8904.c: >> >> pcm = pcm_decode_initialize(wm8904); >> snprintf(devname, 12, "pcm%d", minor); >> ret = audio_register(devname, pcm); >> >> And a character driver is registered by the audio subsystem in audio/audio.c: >> >> int audio_register(FAR const char *name, FAR struct >> audio_lowerhalf_s *dev) >> { >> ... >> >> audinfo("Registering %s\n", path); >> return register_driver(path, &g_audioops, 0666, upper); >> } >> >> Where g_audioops is the character driver operations structure: >> >> static const struct file_operations g_audioops = >> { >> audio_open, /* open */ >> audio_close, /* close */ >> audio_read, /* read */ >> audio_write, /* write */ >> NULL, /* seek */ >> audio_ioctl, /* ioctl */ >> }; >> >> So the registered pcm0 is the standard audio buffer chain configured for PCM >> file to WAV conversion and terminating with a wm8904 DAC. >> >> I don't believe that there is any way to get the Class D audio_ops_s as a >> driver under /dev. Nothing like that is supported. >>