[haiku-commits] r39333 - haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451

  • From: mattmadia@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 7 Nov 2010 00:29:14 +0100 (CET)

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;


Other related posts:

  • » [haiku-commits] r39333 - haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/ali5451 - mattmadia