[haiku-commits] r39338 - haiku/trunk/src/add-ons/kernel/drivers/audio/ice1712

  • From: mattmadia@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 7 Nov 2010 01:35:40 +0100 (CET)

Author: mmadia
Date: 2010-11-07 01:35:40 +0100 (Sun, 07 Nov 2010)
New Revision: 39338
Changeset: http://dev.haiku-os.org/changeset/39338
Ticket: http://dev.haiku-os.org/ticket/6798

Modified:
   haiku/trunk/src/add-ons/kernel/drivers/audio/ice1712/ice1712.c
Log:
 * Initial attempt at updating to utilize (un)reserve_device.
 * Also unreserve the device on driver uninit.
 * Improved some TRACE messages
Compiles but otherwise untested. Relates to #6798.


Modified: haiku/trunk/src/add-ons/kernel/drivers/audio/ice1712/ice1712.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/audio/ice1712/ice1712.c      
2010-11-07 00:22:24 UTC (rev 39337)
+++ haiku/trunk/src/add-ons/kernel/drivers/audio/ice1712/ice1712.c      
2010-11-07 00:35:40 UTC (rev 39338)
@@ -77,7 +77,7 @@
        pci_info info;
 
        memset(cards, 0, sizeof(ice1712) * NUM_CARDS);
-       TRACE("===init_hardware()===\n");
+       TRACE("ice1712: init_hardware()\n");
 
        if (get_module(B_PCI_MODULE_NAME, (module_info **)&pci))
                return ENOSYS;
@@ -356,9 +356,10 @@
 init_driver(void)
 {
        int i = 0;
+       status_t err;
        num_cards = 0;
 
-       TRACE("===init_driver()===\n");
+       TRACE("ice1712: init_driver()\n");
 
        if (get_module(B_PCI_MODULE_NAME, (module_info **)&pci))
                return ENOSYS;
@@ -377,9 +378,26 @@
                                break;
                        }
 
+#ifdef __HAIKU__
+                       if ((err = 
(*pci->reserve_device)(cards[num_cards].info.bus,
+                               cards[num_cards].info.device, 
cards[num_cards].info.function,
+                               DRIVER_NAME, &cards[num_cards])) < B_OK) {
+                               dprintf("%s: failed to reserve_device(%d, %d, 
%d,): %s\n",
+                                       DRIVER_NAME, cards[num_cards].info.bus,
+                                       cards[num_cards].info.device,
+                                       cards[num_cards].info.function, 
strerror(err));
+                               continue;
+                       }
+#endif
                        if (ice1712_setup(&cards[num_cards]) != B_OK) {
                        //Vendor_ID and Device_ID has been modified
                                TRACE("Setup of ice1712 %d failed\n", 
(int)(num_cards + 1));
+#ifdef __HAIKU__
+                               
(*pci->unreserve_device)(cards[num_cards].info.bus,
+                                       cards[num_cards].info.device,
+                                       cards[num_cards].info.function,
+                                       DRIVER_NAME, &cards[num_cards]);
+#endif
                        } else {
                                num_cards++;
                        }
@@ -420,6 +438,11 @@
        codec_write(ice, AK45xx_RESET_REGISTER, 0x00);
 
        save_settings(ice);
+
+#ifdef __HAIKU__
+       (*pci->unreserve_device)(ice->info.bus, ice->info.device,
+               ice->info.function, DRIVER_NAME, ice);
+#endif
 }
 
 


Other related posts:

  • » [haiku-commits] r39338 - haiku/trunk/src/add-ons/kernel/drivers/audio/ice1712 - mattmadia