[haiku-development] Re: [HaikuPorts-devs] OpenSound & PCI reservation

  • From: "François Revol" <revol@xxxxxxx>
  • To: "François Revol" <revol@xxxxxxx>
  • Date: Sun, 09 May 2010 00:26:08 +0200 CEST

Le Sat, 08 May 2010 21:29:53 +0200 CEST, François Revol a écrit :
> I just committed fixes to trunk/ on the audio drivers in the image
> that
> didn't call the pci reservation hooks yet. However, when trying to
> test
> it, OSS failed to call it. It seems the .bep points to build2002 of
> OSS, which didn't have those calls yet.
> It's only available in hg for now, AFAIK it's not been released.
>
> It'd be nice to have it in alpha2 though, as I tested it and it
> worked
> quite well.
>
> It should even be possible to make sure OSS is always loaded last to
> give precedence to native drivers.
> This requires removing a symlink in setup/BeOS/build.sh and scanning
> /
> dev/audio/hmulti in the OSS media node, which I'll be adding now.

It seems some more fixing were needed...

The attached patch fixes a KDL happening when forcing a reload of the
oss driver (which shouldn't happen usually though), and removes the /
dev/ symlink so it can be loaded after native drivers.

François.

diff -r cac211efd60d kernel/OS/BeOS/os_beos.c
--- a/kernel/OS/BeOS/os_beos.c  Tue Apr 20 22:49:24 2010 +0300
+++ b/kernel/OS/BeOS/os_beos.c  Sun May 09 00:15:54 2010 +0200
@@ -1076,6 +1076,8 @@
                                   osdev->dip->pciinfo.function,
                                   "oss", osdev) != B_OK) {
        cmn_err (CE_WARN, "Could not reserve PCI device\n");
+       /* make sure the card isn't uninitialized on driver unload */
+       oss_num_cards--;
        /* XXX: CLEANUP! */
         return NULL;
       }
diff -r cac211efd60d setup/BeOS/build.sh
--- a/setup/BeOS/build.sh       Tue Apr 20 22:49:24 2010 +0300
+++ b/setup/BeOS/build.sh       Sun May 09 00:15:54 2010 +0200
@@ -36,12 +36,12 @@
 #hack for now
 #mkdir -p prototype/$BEOS_SYSTEM/add-ons/kernel/media/oss
 mkdir -p prototype/$BEOS_SYSTEM/add-ons/kernel/drivers/bin
-mkdir -p prototype/$BEOS_SYSTEM/add-ons/kernel/drivers/dev/audio/multi
+#mkdir -p prototype/$BEOS_SYSTEM/add-ons/kernel/drivers/dev/audio/multi
 mkdir -p prototype/$BEOS_SYSTEM/add-ons/kernel/drivers/dev/audio/oss
 #hack for now
 mkdir -p prototype/$BEOS_SYSTEM/add-ons/kernel/drivers/dev/oss
 ln -s ../../bin/${DRVPREFIX}loader 
prototype/$BEOS_SYSTEM/add-ons/kernel/drivers/dev/oss/
-ln -s ../bin/${DRVPREFIX}loader 
prototype/$BEOS_SYSTEM/add-ons/kernel/drivers/dev/
+#ln -s ../bin/${DRVPREFIX}loader 
prototype/$BEOS_SYSTEM/add-ons/kernel/drivers/dev/
 #hack: install bins for now
 mkdir -p prototype/home/config/bin
 mkdir -p prototype/home/config/settings/kernel/drivers

Other related posts: