All of lore.kernel.org
 help / color / mirror / Atom feed
* Fixing the CA0132 driver for Sound Blaster Z
@ 2018-02-10  0:15 Connor McAdams
  0 siblings, 0 replies; only message in thread
From: Connor McAdams @ 2018-02-10  0:15 UTC (permalink / raw)
  To: alsa-devel

        Hi, first time here and first time working on any sort of Kernel
driver,
so I hope I'm doing things right by asking my question through this list.

        I have managed to get audio working for the Creative Sound Blaster
Z by
reverse engineering the driver and firmware from Windows. I created a
program
to capture the HDA verbs as they happen in Windows through QEMU using vfio
pci
passthrough.

        Now, here's where I'm kind of stumped. I created a program to send
the
commands that route the audio to it's output on the card. If I run these
commands after the driver has already loaded in Linux, it works fine and I
get
audio. However, if I run these commands inside of the driver, there is no
audio.

        There is an 8051 cpu onboard, and I can dump the contents of its
memory
through HDA-verbs. I compared dumps of the 8051 while audio is working with
the
script to dumps when the audio is broken from putting the commands inside
of the
driver. Just about everything is the same, except for a region I have
figured
out has to do with the streams. Each audio stream seems to have an ID, and
for
some reason, if the commands are run inside of the driver, it seems like the
stream ID's get messed with.

        My current theory is that the streams are assigned in order of
streams
started. So, after my command to start audio, it expects the next stream to
be
the output audio stream. It also seems like compared to Windows, a lot more
stream commands are used. Maybe extra streams are being initiated that are
unused, and are interfering with the card.

        So, my question is, how would I go about starting a stream, maybe
like
a dummy stream, so it is assigned properly? Are there any examples of this?
If someone could point me to where streams are even initiated it would be
helpful.

        My next question is the legality of distributing the firmware. I was
able to pull the Sound Blaster Z's firmware from the Windows driver file.
Since that is a publicly available file, is it legal to redistribute? I have
no experience with this kind of thing. Maybe someone here has someone within
Creative I could ask or something.

        Anyways, like I said, this is my first time doing anything like
this.
Please correct me if I've done anything wrong, and let me know if anyone
needs
to see my current driver.

Thanks,
        Connor M.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-02-10  0:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-10  0:15 Fixing the CA0132 driver for Sound Blaster Z Connor McAdams

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.