From 121d21b2ebd4bb67bc10b0c79e59f0824126db0f Mon Sep 17 00:00:00 2001 From: Matt Madia Date: Sat, 6 Nov 2010 23:29:13 +0000 Subject: [PATCH] Initial attempt at updating to utilize (un)reserve_device. Compiles but otherwise untested. Relates to #6798. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39333 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../drivers/audio/ac97/ali5451/driver.c | 23 +++++++++++++++---- .../drivers/audio/ac97/ali5451/driver.h | 2 ++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.c b/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.c index 1a7ee67ba6..373f0dd8a9 100644 --- a/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.c +++ b/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.c @@ -6,9 +6,9 @@ */ -#include -#include -#include +#include +#include +#include #include #include #include @@ -365,6 +365,7 @@ init_driver(void) { 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 @@ init_driver(void) 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++; } diff --git a/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.h b/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.h index 108c1dc38b..4435b40fb9 100644 --- a/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.h +++ b/src/add-ons/kernel/drivers/audio/ac97/ali5451/driver.h @@ -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;