New full-featured driver for ESI Juli@ PCI soundcard

Алексей Палютин fesse at mail.ru
Thu May 23 20:11:49 UTC 2019


Hi Konstantin,

On Thu, 23 May 2019 18:19:38 +0300
Konstantin Dimitrov wrote:

> hi Aleksei,
> 
> that's great and I am very glad to see this! Also, I like that it
> seems you want to make it perfect and that's why let me comment a
> little bit on the hardware architecture as per your source code:

Thank You, I did my best. I hope this code not my last experience with kernel programming. Near me lies Asus Xonar DG and it awaits driver too (but lack of documentation stops me) :)
And yes, every little thing in this world must strive for excellence, I think :)

> 
> >     * 5: pulled up to ground with resistor on analog board, may be analog board detector, unused
> 
> it's not "maybe", but for sure and '0' means Analog Daughter Board is
> present, '1' means it's not present
> 

Of course, I tested it out. This pin always read as 0, regardless of presence or absence of analog board. Moreover, original driver (under Windows) always keeps all GPIO direction bits set, i.e. all pins are outputs. Maybe it does something with this pin at startup, but I can't trace this. So it is completely unclear, how actually this detection works, or maybe it is completely unused. Anyway, I can't imagine anyone using this soundcard without analog part, so I consider such detection is unnecessary.

> >     * 6: UNKNOWN - if You know what its function is, please let me know, seems to be always LOW
> 
> that's not used, if my memory serves me right, it's not even connected
> on the board. so, it's totally irrelevant.

This pin is connected to Xilinx. It's state was checked with oscilloscope, it is always low, regardless of mode of operation. So I consider it is unused.

> 
> >     * 7: UNKNOWN - if You know what its function is, please let me know, seems to be always LOW
> 
> that's most interesting, that GPIO signal is to deal with MCKO1 signal
> of AK4114. I am not sure how that exactly works on ESI Juli@, but on
> another ESI card Prodigy192, you can read comment about it in ALSA
> "prodigy192.c" - by "FPGA" ALSA guys actually mean the CPLD found on
> Juli@ as well:
> 
> "both MCKO1 and MCKO2 of ak4114 are fed to FPGA, which
> * outputs master clock to SPMCLKIN of ice1724.
> * Experimentally I found out that only a combination of
> * OCKS0=1, OCKS1=1 (128fs, 64fs output) and ice1724 -
> * VT1724_MT_I2S_MCLK_128X=0 (256fs input) yields correct
> * sampling rate. That means the the FPGA doubles the
> * MCK01 rate."
> 
> So, without some experiments it could only be speculated how GPIO7
> affects MCKO1 signal of AK4114 on Juli at . I really don't know and it's
> up to investigation, but one possibility is that for sample rates
> lower than 96kHz, they set AK4114 OCKS0 to '0'  and OCKS1 to '0' and
> maybe in such cases GPIO7 set to '1' is the intended settings or
> something like that. Anyway, someone with Juli@ and proper equipment
> needs to see what's going on with the mentioned signals with when
> GPIO7 is '0' and when it's set to '1', if anything...

I spent some time, trying to understand purpose ot this pin. It is connected to Xilinx CPLD too, and original driver always keeps signal low regardless of mode of operation. Regardless of this pin's state, AK4114 works just fine, it always output correct rate (tested with another soundcard as input), and when operates as input, correctly detects all incoming rates (one remark - optical output was not tested since I haven't appropriate equipment). 

So device seem to be fully functional, even with pins 6 and 7 always low. I can assume that digital board schematic is common amongst some various soundcard models, but CPLD firmware differs (this IC has a JTAG port, I think it is for firmware uploading). One model can use these signals, others ignore them. Anyway, this IC is "black box", and only it's developers know, how it should operate.

> 
> best wishes,
> konstantin

All the best,
Aleksei

> 
> On Thu, May 23, 2019 at 4:24 PM fesse via freebsd-drivers
> <freebsd-drivers at freebsd.org> wrote:
> >
> > Hi everyone!
> >
> > I want to share with the community a new driver for ESI Juli@ PCI soundcard.
> > FreeBSD already offers support for such card, but this support is very limited and device is almost unusable.
> > Since I like high-quality audio hardware (like Juli@ cards), time was spent writing a new, full-featured driver for it.
> > The proposed driver supports playback, recording, MIDI, pass-through channel, clock control, ACPI...
> > Also, the driver can be controlled with convenient GUI control panel, as through sysctl(8).
> >
> > I hope this work was done for a reason and will be useful to someone else.
> >
> > I have been using this driver successfully for some time, but there may be bugs, so more testing is required.
> > It would be great if there were those who wanted to download, test it, and share results.
> >
> > Driver link: https://sndbro.ru/snd_juliet?lang=en
> > Control panel link: https://sndbro.ru/mixate-juliet?lang=en
> > _______________________________________________
> > freebsd-drivers at freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-drivers
> > To unsubscribe, send any mail to "freebsd-drivers-unsubscribe at freebsd.org"


-- 
Алексей Палютин <fesse at mail.ru>


More information about the freebsd-drivers mailing list