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
This commit is contained in:
Matt Madia
2010-11-06 23:29:13 +00:00
parent b0307f5c12
commit 121d21b2eb
2 changed files with 21 additions and 4 deletions
@@ -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 @@ 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++;
}
@@ -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;