From a9ea5be764e78e1ddb41a2a6f09d6ee7b8a41acd Mon Sep 17 00:00:00 2001 From: Matt Madia Date: Sat, 6 Nov 2010 23:35:25 +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@39335 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/audio/cmedia/cm.c | 14 ++++++++++++++ .../kernel/drivers/audio/cmedia/cmedia_pci.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/add-ons/kernel/drivers/audio/cmedia/cm.c b/src/add-ons/kernel/drivers/audio/cmedia/cm.c index cf211482a6..19ae6a6443 100644 --- a/src/add-ons/kernel/drivers/audio/cmedia/cm.c +++ b/src/add-ons/kernel/drivers/audio/cmedia/cm.c @@ -514,6 +514,7 @@ init_driver(void) { pci_info info; int ix = 0; + status_t err; num_cards = 0; @@ -547,8 +548,21 @@ init_driver(void) } memset(&cards[num_cards], 0, sizeof(cmedia_pci_dev)); cards[num_cards].info = info; +#ifdef __HAIKU__ + if ((err = (*pci->reserve_device)(info.bus, info.device, info.function, + DRIVER_NAME, &cards[num_cards])) < 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 (setup_cmedia_pci(&cards[num_cards])) { dprintf("Setup of C-Media %ld failed\n", num_cards+1); +#ifdef __HAIKU__ + (*pci->unreserve_device)(info.bus, info.device, info.function, + DRIVER_NAME, &cards[num_cards]); +#endif } else { num_cards++; diff --git a/src/add-ons/kernel/drivers/audio/cmedia/cmedia_pci.h b/src/add-ons/kernel/drivers/audio/cmedia/cmedia_pci.h index 233d105c74..b42bbe6b2c 100644 --- a/src/add-ons/kernel/drivers/audio/cmedia/cmedia_pci.h +++ b/src/add-ons/kernel/drivers/audio/cmedia/cmedia_pci.h @@ -25,6 +25,8 @@ #define CMEDIA_PCI_JOYSTICK_MIN_LATENCY 5000 /* 200 times a second! */ #define CMEDIA_PCI_JOYSTICK_MAX_LATENCY 100000 /* 10 times a second */ +#define DRIVER_NAME "cmedia" + typedef struct joystick cmedia_pci_joystick;