diff --git a/src/add-ons/kernel/drivers/audio/ac97/geode/driver.cpp b/src/add-ons/kernel/drivers/audio/ac97/geode/driver.cpp index 492cc2c1ed..76d0a7e5b5 100644 --- a/src/add-ons/kernel/drivers/audio/ac97/geode/driver.cpp +++ b/src/add-ons/kernel/drivers/audio/ac97/geode/driver.cpp @@ -55,8 +55,10 @@ init_driver(void) for (i = 0; gPci->get_nth_pci_info(i, &info) == B_OK && gNumCards < MAX_CARDS; i++) { - if (info.vendor_id == AMD_VENDOR_ID - && info.device_id == AMD_CS5536_AUDIO_DEVICE_ID) { + if ((info.vendor_id == AMD_VENDOR_ID + && info.device_id == AMD_CS5536_AUDIO_DEVICE_ID) + || (info.vendor_id == NS_VENDOR_ID + && info.device_id == NS_CS5535_AUDIO_DEVICE_ID)) { memset(&gCards[gNumCards], 0, sizeof(geode_controller)); gCards[gNumCards].pci_info = info; gCards[gNumCards].opened = 0; diff --git a/src/add-ons/kernel/drivers/audio/ac97/geode/geode_controller.cpp b/src/add-ons/kernel/drivers/audio/ac97/geode/geode_controller.cpp index a281b0e79a..a260468252 100644 --- a/src/add-ons/kernel/drivers/audio/ac97/geode/geode_controller.cpp +++ b/src/add-ons/kernel/drivers/audio/ac97/geode/geode_controller.cpp @@ -425,6 +425,10 @@ geode_hw_init(geode_controller* controller) snooze(1000); + controller->multi = (geode_multi*)calloc(1, sizeof(geode_multi)); + if (controller->multi == NULL) + return B_NO_MEMORY; + controller->playback_stream = geode_stream_new(controller, STREAM_PLAYBACK); controller->record_stream = geode_stream_new(controller, STREAM_RECORD); @@ -482,6 +486,8 @@ geode_hw_uninit(geode_controller* controller) controller->regs = NULL; } + free(controller->multi); + geode_stream_delete(controller->playback_stream); geode_stream_delete(controller->record_stream);