[haiku-commits] r36751 - in haiku/trunk/src/add-ons/kernel/drivers/audio: ac97/auich ac97/auvia echo emuxki

  • From: revol@xxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 8 May 2010 20:45:28 +0200 (CEST)

Author: mmu_man
Date: 2010-05-08 20:45:28 +0200 (Sat, 08 May 2010)
New Revision: 36751
Changeset: http://dev.haiku-os.org/changeset/36751/haiku

Modified:
   haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/auich/auich.c
   haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/auvia/auvia.c
   haiku/trunk/src/add-ons/kernel/drivers/audio/echo/echo.cpp
   haiku/trunk/src/add-ons/kernel/drivers/audio/emuxki/emuxki.c
Log:
Add PCI device reservation to the drivers that still missed it in the image. 
This along with the updated OpenSound should fix the KDLs. Hopefully the 
init_driver() code was identical enough I didn't make any copy-paste error.


Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/auich/auich.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/auich/auich.c     
2010-05-08 17:58:11 UTC (rev 36750)
+++ haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/auich/auich.c     
2010-05-08 18:45:28 UTC (rev 36751)
@@ -737,6 +737,7 @@
        int ix = 0;
        void *settings_handle;
        pci_info info;
+       status_t err;
        num_cards = 0;
                
        PRINT(("init_driver()\n"));
@@ -788,8 +789,21 @@
                        }
                        memset(&cards[num_cards], 0, sizeof(auich_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 (auich_setup(&cards[num_cards])) {
                                PRINT(("Setup of auich %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++;

Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/auvia/auvia.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/auvia/auvia.c     
2010-05-08 17:58:11 UTC (rev 36750)
+++ haiku/trunk/src/add-ons/kernel/drivers/audio/ac97/auvia/auvia.c     
2010-05-08 18:45:28 UTC (rev 36751)
@@ -576,8 +576,8 @@
 init_driver(void)
 {
        pci_info info;
+       status_t err;
        int ix = 0;
-
        num_cards = 0;
 
        PRINT(("init_driver()\n"));
@@ -596,8 +596,21 @@
                        }
                        memset(&cards[num_cards], 0, sizeof(auvia_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 (auvia_setup(&cards[num_cards])) {
                                PRINT(("Setup of auvia %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++;

Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/echo/echo.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/audio/echo/echo.cpp  2010-05-08 
17:58:11 UTC (rev 36750)
+++ haiku/trunk/src/add-ons/kernel/drivers/audio/echo/echo.cpp  2010-05-08 
18:45:28 UTC (rev 36751)
@@ -548,6 +548,7 @@
        int ix=0;
        
        pci_info info;
+       status_t err;
        num_cards = 0;
        
        if (get_module(B_PCI_MODULE_NAME, (module_info **) &pci))
@@ -590,8 +591,21 @@
                        memset(&cards[num_cards], 0, sizeof(echo_dev));
                        cards[num_cards].info = info;
                        cards[num_cards].type = card_type;
+#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 (echo_setup(&cards[num_cards])) {
                                PRINT(("Setup of "DRIVER_NAME" %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++;

Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/emuxki/emuxki.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/audio/emuxki/emuxki.c        
2010-05-08 17:58:11 UTC (rev 36750)
+++ haiku/trunk/src/add-ons/kernel/drivers/audio/emuxki/emuxki.c        
2010-05-08 18:45:28 UTC (rev 36751)
@@ -2861,6 +2861,7 @@
 {
        void *settings_handle;
        pci_info info;
+       status_t err;
        int ix = 0;
        num_cards = 0;
        
@@ -2934,8 +2935,21 @@
                        }
                        memset(&cards[num_cards], 0, sizeof(emuxki_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 (emuxki_setup(&cards[num_cards])) {
                                PRINT(("Setup of emuxki %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++;
                        }


Other related posts:

  • » [haiku-commits] r36751 - in haiku/trunk/src/add-ons/kernel/drivers/audio: ac97/auich ac97/auvia echo emuxki - revol