r7637@lvps87-230-33-50: verhaegs | 2008-04-19 15:05:06 +0200
[AROS.git] / arch / i386-pc / Drivers / serial.hidd / serial_init.c
blobf260aac9e0fab2005b4fc2776e4bd4fd74ae5c5a
1 /*
2 Copyright © 1995-2006, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: Serial hidd initialization code.
6 Lang: English.
7 */
8 #include <stddef.h>
9 #include <exec/types.h>
10 #include <exec/alerts.h>
12 #include <aros/symbolsets.h>
14 #include <hidd/irq.h>
16 #include <proto/oop.h>
17 #include <proto/exec.h>
19 #include "serial_intern.h"
21 #include LC_LIBDEFS_FILE
23 #undef SDEBUG
24 #undef DEBUG
25 #define DEBUG 0
26 #include <aros/debug.h>
28 void serial_int_13(HIDDT_IRQ_Handler *, HIDDT_IRQ_HwInfo *);
29 void serial_int_24(HIDDT_IRQ_Handler *, HIDDT_IRQ_HwInfo *);
31 static int PCSer_Init(LIBBASETYPEPTR LIBBASE)
33 struct class_static_data *csd = &LIBBASE->hdg_csd; /* SerialHidd static data */
35 EnterFunc(bug("SerialHIDD_Init()\n"));
37 csd->irqhidd = OOP_NewObject(NULL, CLID_Hidd_IRQ, NULL);
38 if (csd->irqhidd)
40 HIDDT_IRQ_Handler *irq;
42 /* Install COM1 and COM3 interrupt */
43 irq = AllocMem(sizeof(HIDDT_IRQ_Handler), MEMF_CLEAR|MEMF_PUBLIC);
44 if(!irq)
46 kprintf(" ERROR: Cannot install Serial\n");
47 Alert( AT_DeadEnd | AN_IntrMem );
49 irq->h_Node.ln_Pri=127; /* Set the highest pri */
50 irq->h_Code = serial_int_13;
51 irq->h_Data = (APTR)csd;
52 HIDD_IRQ_AddHandler(csd->irqhidd, irq, vHidd_IRQ_Serial1);
54 /* Install COM2 and COM4 interrupt */
55 irq = AllocMem(sizeof(HIDDT_IRQ_Handler), MEMF_CLEAR|MEMF_PUBLIC);
56 if(!irq)
58 kprintf(" ERROR: Cannot install Serial\n");
59 Alert( AT_DeadEnd | AN_IntrMem );
61 irq->h_Node.ln_Pri=127; /* Set the highest pri */
62 irq->h_Code = serial_int_24;
63 irq->h_Data = (APTR)csd;
64 HIDD_IRQ_AddHandler(csd->irqhidd, irq, vHidd_IRQ_Serial2);
66 D(bug(" Got Interrupts\n"));
67 ReturnInt("SerialHIDD_Init", ULONG, TRUE);
70 ReturnInt("SerialHIDD_Init", ULONG, FALSE);
73 ADD2INITLIB(PCSer_Init, 0)
74 ADD2LIBS("irq.hidd", 0, static struct Library *, __irqhidd)