From 9aa5a49e974116a8861953e643fc04ea861c648c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 9 Feb 2009 21:03:31 +0000 Subject: [PATCH] * actually allocates and frees geode_multi struct * also detect NS version of the chip git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29174 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/audio/ac97/geode/driver.cpp | 6 ++++-- .../kernel/drivers/audio/ac97/geode/geode_controller.cpp | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) 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);