Author: mmadia Date: 2010-11-07 00:29:13 +0100 (Sun, 07 Nov 2010) New Revision: 39333 Changeset: http://dev.haiku-os.org/changeset/39333 Ticket: http://dev.haiku-os.org/ticket/6798 Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.c haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.h Log: Initial attempt at updating to utilize (un)reserve_device. Compiles but otherwise untested. Relates to #6798. Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.c =================================================================== --- haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.c 2010-11-06 23:04:52 UTC (rev 39332) +++ haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.c 2010-11-06 23:29:13 UTC (rev 39333) @@ -6,9 +6,9 @@ */ -#include <drivers/Drivers.h> -#include <drivers/KernelExport.h> -#include <drivers/PCI.h> +#include <Drivers.h> +#include <KernelExport.h> +#include <PCI.h> #include <hmulti_audio.h> #include <string.h> #include <unistd.h> @@ -365,6 +365,7 @@ { pci_info info; int32 i; + status_t err; if (get_module(B_PCI_MODULE_NAME, (module_info**) &gPCI) != B_OK) return ENODEV; @@ -382,8 +383,22 @@ memset(&gCards[gCardsCount], 0, sizeof(ali_dev)); gCards[gCardsCount].info = info; - if (ali_setup(&gCards[gCardsCount])) +#ifdef __HAIKU__ + if ((err = (*gPCI->reserve_device)(info.bus, info.device, info.function, + DRIVER_NAME, &gCards[gCardsCount])) < B_OK) { + dprintf("%s: failed to reserve_device(%d, %d, %d,): %s\n", + DRIVER_NAME, info.bus, info.device, info.function, + strerror(err)); + continue; + } +#endif + if (ali_setup(&gCards[gCardsCount])) { TRACE("init_driver: setup of ali %ld failed\n", gCardsCount + 1); +#ifdef __HAIKU__ + (*gPCI->unreserve_device)(info.bus, info.device, info.function, + DRIVER_NAME, &gCards[gCardsCount]); +#endif + } else gCardsCount++; } Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.h =================================================================== --- haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.h 2010-11-06 23:04:52 UTC (rev 39332) +++ haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.h 2010-11-06 23:29:13 UTC (rev 39333) @@ -25,6 +25,8 @@ #define ALI_VOICES 32 #define ALI_RECORD_VOICE 31 +#define DRIVER_NAME "ali5451" + typedef struct _ali_mem { LIST_ENTRY(_ali_mem) next;