* 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. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39338 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -77,7 +77,7 @@ status_t init_hardware(void)
|
|||||||
pci_info info;
|
pci_info info;
|
||||||
|
|
||||||
memset(cards, 0, sizeof(ice1712) * NUM_CARDS);
|
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))
|
if (get_module(B_PCI_MODULE_NAME, (module_info **)&pci))
|
||||||
return ENOSYS;
|
return ENOSYS;
|
||||||
@@ -356,9 +356,10 @@ status_t
|
|||||||
init_driver(void)
|
init_driver(void)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
status_t err;
|
||||||
num_cards = 0;
|
num_cards = 0;
|
||||||
|
|
||||||
TRACE("===init_driver()===\n");
|
TRACE("ice1712: init_driver()\n");
|
||||||
|
|
||||||
if (get_module(B_PCI_MODULE_NAME, (module_info **)&pci))
|
if (get_module(B_PCI_MODULE_NAME, (module_info **)&pci))
|
||||||
return ENOSYS;
|
return ENOSYS;
|
||||||
@@ -377,9 +378,26 @@ init_driver(void)
|
|||||||
break;
|
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) {
|
if (ice1712_setup(&cards[num_cards]) != B_OK) {
|
||||||
//Vendor_ID and Device_ID has been modified
|
//Vendor_ID and Device_ID has been modified
|
||||||
TRACE("Setup of ice1712 %d failed\n", (int)(num_cards + 1));
|
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 {
|
} else {
|
||||||
num_cards++;
|
num_cards++;
|
||||||
}
|
}
|
||||||
@@ -420,6 +438,11 @@ ice_1712_shutdown(ice1712 *ice)
|
|||||||
codec_write(ice, AK45xx_RESET_REGISTER, 0x00);
|
codec_write(ice, AK45xx_RESET_REGISTER, 0x00);
|
||||||
|
|
||||||
save_settings(ice);
|
save_settings(ice);
|
||||||
|
|
||||||
|
#ifdef __HAIKU__
|
||||||
|
(*pci->unreserve_device)(ice->info.bus, ice->info.device,
|
||||||
|
ice->info.function, DRIVER_NAME, ice);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user