summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>1994-10-27 08:03:15 +0000
committersos <sos@FreeBSD.org>1994-10-27 08:03:15 +0000
commit82358e0f07cf25b2a99537d5c75bb71f65aa9b26 (patch)
tree45c70e9368ef0742a000328fb9f5a7640e67f71c /sys
parenta5e94e98c7cdb7f7b8406bf7ada8d90b80a05d84 (diff)
downloadFreeBSD-src-82358e0f07cf25b2a99537d5c75bb71f65aa9b26.zip
FreeBSD-src-82358e0f07cf25b2a99537d5c75bb71f65aa9b26.tar.gz
Added device registration stuff.
Diffstat (limited to 'sys')
-rw-r--r--sys/i386/isa/pcaudio.c28
-rw-r--r--sys/i386/isa/seagate.c30
2 files changed, 53 insertions, 5 deletions
diff --git a/sys/i386/isa/pcaudio.c b/sys/i386/isa/pcaudio.c
index a6bc57f..defd2fb 100644
--- a/sys/i386/isa/pcaudio.c
+++ b/sys/i386/isa/pcaudio.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: pcaudio.c,v 1.8 1994/09/29 08:24:43 sos Exp $
+ * $Id: pcaudio.c,v 1.9 1994/09/29 21:11:29 sos Exp $
*/
#include "pca.h"
@@ -37,6 +37,7 @@
#include <sys/ioctl.h>
#include <sys/file.h>
#include <sys/proc.h>
+#include <sys/devconf.h>
#include <machine/pcaudioio.h>
#include <i386/isa/isa.h>
#include <i386/isa/isa_device.h>
@@ -211,11 +212,34 @@ pcaprobe(struct isa_device *dvp)
}
+static struct kern_devconf kdc_pca[NPCA] = { {
+ 0, 0, 0, /* filled in by dev_attach */
+ "pca", 0, { MDDT_ISA, 0, "tty" },
+ isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
+ &kdc_isa0, /* parent */
+ 0, /* parentdata */
+ DC_UNKNOWN, /* not supported */
+ "PC speaker audio driver"
+} };
+
+
+static inline void
+pca_registerdev(struct isa_device *id)
+{
+ if(id->id_unit)
+ kdc_pca[id->id_unit] = kdc_pca[0];
+ kdc_pca[id->id_unit].kdc_unit = id->id_unit;
+ kdc_pca[id->id_unit].kdc_isa = id;
+ dev_attach(&kdc_pca[id->id_unit]);
+}
+
+
int
pcaattach(struct isa_device *dvp)
{
- printf(" PCM audio driver\n", dvp->id_unit);
+ printf(" PC speaker audio driver\n");
pca_init();
+ pca_registerdev(dvp);
return 1;
}
diff --git a/sys/i386/isa/seagate.c b/sys/i386/isa/seagate.c
index a9c2037..cc49747 100644
--- a/sys/i386/isa/seagate.c
+++ b/sys/i386/isa/seagate.c
@@ -41,7 +41,7 @@
* rknier 940331 Added fast transfer code
* rknier 940407 Added assembler coded data transfers
*
- * $Id: seagate.c,v 1.1 1994/10/24 22:14:34 sos Exp $
+ * $Id: seagate.c,v 1.2 1994/10/27 05:23:09 phk Exp $
*/
/*
@@ -76,6 +76,7 @@
#include <sys/proc.h>
#include <sys/user.h>
#include <sys/kernel.h>
+#include <sys/devconf.h>
#include <i386/isa/isa_device.h>
#endif /* KERNEL */
#include <scsi/scsi_all.h>
@@ -470,12 +471,14 @@ struct isa_device *dev;
for(j = 0; ((char *)vtophys(dev->id_maddr) != seagate_bases[j]) &&
j<NUM_BASES; ++j);
if(j == NUM_BASES) {
- printf("sea: board not expected at address 0x%lx\n",dev->id_maddr);
+ printf("sea%d: board not expected at address 0x%lx\n",
+ unit, dev->id_maddr);
seadata[unit]=NULL;
free(sea, M_TEMP);
return(0);
} else if(sea_slot > j) {
- printf("sea: board address 0x%lx already probed!\n", dev->id_maddr);
+ printf("sea%d: board address 0x%lx already probed!\n",
+ unit, dev->id_maddr);
seadata[unit]=NULL;
free(sea, M_TEMP);
return(0);
@@ -534,6 +537,26 @@ struct isa_device *dev;
return(1);
}
+static struct kern_devconf kdc_sea[NSEA] = { {
+ 0, 0, 0, /* filled in by dev_attach */
+ "sea", 0, { MDDT_ISA, 0, "bio" },
+ isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
+ &kdc_isa0, /* parent */
+ 0, /* parentdata */
+ DC_BUSY, /* host adaptors are always busy */
+ "Seagate ST01/02 SCSI controller"
+} };
+
+static inline void
+sea_registerdev(struct isa_device *id)
+{
+ if(id->id_unit)
+ kdc_sea[id->id_unit] = kdc_sea[0];
+ kdc_sea[id->id_unit].kdc_unit = id->id_unit;
+ kdc_sea[id->id_unit].kdc_isa = id;
+ dev_attach(&kdc_sea[id->id_unit]);
+}
+
/***********************************************\
* Attach all sub-devices we can find *
\***********************************************/
@@ -558,6 +581,7 @@ sea_attach(dev)
* ask the adapter what subunits are present *
\*****************************************************/
scsi_attachdevs(&(sea->sc_link));
+ sea_registerdev(dev);
return 1;
}
OpenPOWER on IntegriCloud