2 Copyright © 1995-2006, The AROS Development Team. All rights reserved.
5 Desc: Serial hidd initialization code.
9 #include <exec/types.h>
10 #include <exec/alerts.h>
12 #include <aros/symbolsets.h>
16 #include <proto/oop.h>
17 #include <proto/exec.h>
19 #include "serial_intern.h"
21 #include LC_LIBDEFS_FILE
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
);
40 HIDDT_IRQ_Handler
*irq
;
42 /* Install COM1 and COM3 interrupt */
43 irq
= AllocMem(sizeof(HIDDT_IRQ_Handler
), MEMF_CLEAR
|MEMF_PUBLIC
);
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
);
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
)