Skip to content
Snippets Groups Projects
Commit 209b173f authored by John Hodge's avatar John Hodge
Browse files

Modules/PS2KbMouse - Adding pl050 support

parent a743018b
No related merge requests found
......@@ -15,7 +15,12 @@ extern int PS2Mouse_Install(char **Arguments);
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
......@@ -8,6 +8,22 @@
#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);
......@@ -20,6 +36,13 @@ MODULE_DEFINE(0, 0x0100, PS2Mouse, PS2Mouse_Install, NULL, NULL);
// === 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;
}
......@@ -7,27 +7,11 @@
#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);
......@@ -36,11 +20,21 @@ static inline void PL050_WriteKeyboardData(Uint8 data);
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)
......
......@@ -26,6 +26,7 @@ Uint64 PS2Mouse_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer
int PS2Mouse_IOCtl(tVFS_Node *Node, int ID, void *Data);
// == GLOBALS ==
void (*gpMouse_EnableFcn)(void);
// - Settings
int giMouse_Sensitivity = 1;
int giMouse_MaxX = 640, giMouse_MaxY = 480;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment