extern void KBC8042_Init(void);
extern void KBC8042_EnableMouse(void);
+extern void PL050_Init(Uint32 KeyboardBase, Uint8 KeyboardIRQ, Uint32 MouseBase, Uint8 MouseIRQ);
+extern void PL050_EnableMouse(void);
+
extern void KB_HandleScancode(Uint8 scancode);
extern void PS2Mouse_HandleInterrupt(Uint8 InputByte);
+extern void (*gpMouse_EnableFcn)(void);
+
#endif
#include "common.h"
// === IMPORTS ===
+// TODO: Allow runtime/compile-time switching
+// Maybe PCI will have it?
+// Integrator-CP
+#if 0
+#define KEYBOARD_IRQ 3
+#define KEYBOARD_BASE 0x18000000
+#define MOUSE_IRQ 4
+#define MOUSE_BASE 0x19000000
+#endif
+// Realview
+#if 1
+#define KEYBOARD_IRQ 20
+#define KEYBOARD_BASE 0x10006000
+#define MOUSE_IRQ 21
+#define MOUSE_BASE 0x10007000
+#endif
// === PROTOTYPES ===
int PS2_Install(char **Arguments);
// === CODE ===
int PS2_Install(char **Arguments)
{
+ #if ARCH_is_x86 || ARCH_is_x86_64
KBC8042_Init();
+ gpMouse_EnableFcn = KBC8042_EnableMouse;
+ #elif ARCH_is_armv7
+ PL050_Init(KEYBOARD_IRQ, KEYBOARD_IRQ, MOUSE_BASE, MOUSE_IRQ);
+ gpMouse_EnableFcn = PL050_EnableMouse;
+ #endif
+
return MODULE_ERR_OK;
}
#include <acess.h>
#include "common.h"
-// TODO: Allow runtime/compile-time switching
-// Maybe PCI will have it?
-// Integrator-CP
-#if 0
-#define KEYBOARD_IRQ 3
-#define KEYBOARD_BASE 0x18000000
-#define MOUSE_IRQ 4
-#define MOUSE_BASE 0x19000000
-#endif
-// Realview
-#if 1
-#define KEYBOARD_IRQ 20
-#define KEYBOARD_BASE 0x10006000
-#define MOUSE_IRQ 21
-#define MOUSE_BASE 0x10007000
-#endif
#define PL050_TXBUSY 0x20
// === PROTOTYPES ===
-void PL050_Init(void);
+void PL050_Init(Uint32 KeyboardBase, Uint8 KeyboardIRQ, Uint32 MouseBase, Uint8 MouseIRQ);
void PL050_KeyboardHandler(int IRQ);
void PL050_MouseHandler(int IRQ);
void PL050_EnableMouse(void);
static inline Uint8 PL050_ReadMouseData(void);
static inline Uint8 PL050_ReadKeyboardData(void);
+// === GLOBALS ===
+Uint32 *gpPL050_KeyboardBase;
+Uint32 *gpPL050_MouseBase;
+
// === CODE ===
-void PL050_Init(void)
+void PL050_Init(Uint32 KeyboardBase, Uint8 KeyboardIRQ, Uint32 MouseBase, Uint8 MouseIRQ)
{
- IRQ_AddHandler(KEYBOARD_IRQ, PL050_KeyboardHandler);
- IRQ_AddHandler(MOUSE_IRQ, PL050_MouseHandler); // Set IRQ
+ if( KeyboardBase ) {
+ gpPL050_KeyboardBase = MM_MapHW(KeyboardBase, 0x1000);
+ IRQ_AddHandler(KeyboardIRQ, PL050_KeyboardHandler);
+ }
+ if( MouseBase ) {
+ gpPL050_MouseBase = MM_MapHW(MouseBase, 0x1000);
+ IRQ_AddHandler(MouseIRQ, PL050_MouseHandler);
+ }
}
void PL050_KeyboardHandler(int IRQ)