sound: HDA support with PCM and wav playback
- Implemented HDA driver in src/sound/hda.c, providing initialization, codec enumeration, and playback functionality. - Defined HDA register offsets and structures in src/sound/hda.h. - Added WAV file parsing and playback capabilities in src/sound/pcm.c, supporting both WAV and raw PCM formats. - Created header file src/sound/pcm.h for PCM playback functions and WAV header structures. - Integrated memory management for DMA buffers during audio playback. Yes we played Charlie Charlie Kirky as the first sound on KirkOS Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
@@ -114,7 +114,7 @@ void pci_print_all(void)
|
||||
bool pci_find_hda(pci_device_t* out_dev)
|
||||
{
|
||||
// Same scan as above, but stop at first HDA device
|
||||
for (uint8_t bus = 0; bus < 1; bus++) {
|
||||
for (uint8_t bus = 0; bus < 256; bus++) {
|
||||
for (uint8_t dev = 0; dev < 32; dev++) {
|
||||
for (uint8_t func = 0; func < 8; func++) {
|
||||
pci_address_t addr = {bus, dev, func};
|
||||
@@ -122,7 +122,7 @@ bool pci_find_hda(pci_device_t* out_dev)
|
||||
if (vendor == 0xFFFF) continue;
|
||||
|
||||
uint16_t class_sub = pci_read16(addr, 0x0A);
|
||||
if (class_sub == (PCI_CLASS_AUDIO << 8) | PCI_SUBCLASS_HDA) {
|
||||
if (((class_sub >> 8) == PCI_CLASS_AUDIO) && ((class_sub & 0xFF) == PCI_SUBCLASS_HDA)) {
|
||||
out_dev->addr = addr;
|
||||
out_dev->vendor_id = vendor;
|
||||
out_dev->device_id = pci_read16(addr, 0x02);
|
||||
|
||||
Reference in New Issue
Block a user