mirror of
https://github.com/drasko/codezero.git
synced 2026-03-21 03:21:54 +01:00
Changes between 16 March 2010 - 6 April 2010
Mutex system call fixed for multiple contenders Userspace irq support extended to keyboard/mouse. Scheduler modified for real-time irq tasks
This commit is contained in:
@@ -12,7 +12,7 @@ struct keyboard_state{
|
||||
};
|
||||
|
||||
/* Common functions */
|
||||
void kmi_irq_handler(unsigned long base);
|
||||
void kmi_rx_irq_enable(unsigned long base);
|
||||
int kmi_data_read(unsigned long base);
|
||||
|
||||
/* Keyboard specific calls */
|
||||
|
||||
@@ -17,7 +17,7 @@ void timer_load(u32 val, unsigned long timer_base);
|
||||
u32 timer_read(unsigned long timer_base);
|
||||
void timer_stop(unsigned long timer_base);
|
||||
void timer_init_oneshot(unsigned long timer_base);
|
||||
void timer_init_periodic(unsigned long timer_base);
|
||||
void timer_init(unsigned long timer_base);
|
||||
void timer_init_periodic(unsigned long timer_base, u32 load_value);
|
||||
void timer_init(unsigned long timer_base, u32 load_value);
|
||||
|
||||
#endif /* __LIBDEV_TIMER_H__ */
|
||||
|
||||
@@ -135,7 +135,7 @@ struct keyboard_key keymap_uk2[256] = {
|
||||
/* 40 */ {';',':',0,0},
|
||||
/* 41 */ {'\'','@',0,0},
|
||||
/* 42 */ {0,0,0,0},
|
||||
/* 43 */ {KEYCODE_RETURN,0,KEYCODE_ENTER,0},
|
||||
/* 43 */ {'\n','\n',KEYCODE_ENTER,0},
|
||||
/* 44 */ {KEYCODE_LSHIFT,0,0,0},
|
||||
/* 45 */ {'\\','|',0,0},
|
||||
/* 46 */ {'z','Z',0,0},
|
||||
|
||||
@@ -9,11 +9,10 @@
|
||||
#include "kmi.h"
|
||||
#include "keymap.h"
|
||||
|
||||
/*
|
||||
* Reading Rx data automatically clears the RXITR
|
||||
*/
|
||||
void kmi_irq_handler(unsigned long base)
|
||||
/* Enable Rx irq */
|
||||
void kmi_rx_irq_enable(unsigned long base)
|
||||
{
|
||||
*(volatile unsigned long *)(base + PL050_KMICR) = KMI_RXINTR;
|
||||
}
|
||||
|
||||
int kmi_data_read(unsigned long base)
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
#define MOUSE_DATA_ENABLE 0xF4 // Mouse enable
|
||||
|
||||
/* Common functions */
|
||||
void kmi_irq_handler(unsigned long base);
|
||||
void kmi_rx_irq_enable(unsigned long base);
|
||||
int kmi_data_read(unsigned long base);
|
||||
|
||||
/* Keyboard specific calls */
|
||||
|
||||
@@ -36,7 +36,7 @@ void timer_stop(unsigned long timer_base)
|
||||
write(0, timer_base + SP804_CTRL);
|
||||
}
|
||||
|
||||
void timer_init_periodic(unsigned long timer_base)
|
||||
void timer_init_periodic(unsigned long timer_base, u32 load_value)
|
||||
{
|
||||
volatile u32 reg = read(timer_base + SP804_CTRL);
|
||||
|
||||
@@ -44,8 +44,11 @@ void timer_init_periodic(unsigned long timer_base)
|
||||
|
||||
write(reg, timer_base + SP804_CTRL);
|
||||
|
||||
/* 1 tick per usec, 1 irq per msec */
|
||||
timer_load(1000, timer_base);
|
||||
if (load_value)
|
||||
timer_load(load_value, timer_base);
|
||||
else
|
||||
/* 1 tick per usec, 1 irq per msec */
|
||||
timer_load(1000, timer_base);
|
||||
}
|
||||
|
||||
void timer_init_oneshot(unsigned long timer_base)
|
||||
@@ -58,8 +61,8 @@ void timer_init_oneshot(unsigned long timer_base)
|
||||
write(reg, timer_base + SP804_CTRL);
|
||||
}
|
||||
|
||||
void timer_init(unsigned long timer_base)
|
||||
void timer_init(unsigned long timer_base, u32 load_value)
|
||||
{
|
||||
timer_stop(timer_base);
|
||||
timer_init_periodic(timer_base);
|
||||
timer_init_periodic(timer_base, load_value);
|
||||
}
|
||||
|
||||
@@ -56,8 +56,8 @@ void timer_start(unsigned long timer_base);
|
||||
void timer_load(u32 loadval, unsigned long timer_base);
|
||||
u32 timer_read(unsigned long timer_base);
|
||||
void timer_stop(unsigned long timer_base);
|
||||
void timer_init_periodic(unsigned long timer_base);
|
||||
void timer_init_periodic(unsigned long timer_base, u32 load_value);
|
||||
void timer_init_oneshot(unsigned long timer_base);
|
||||
void timer_init(unsigned long timer_base);
|
||||
void timer_init(unsigned long timer_base, u32 load_value);
|
||||
|
||||
#endif /* __SP804_TIMER_H__ */
|
||||
|
||||
Reference in New Issue
Block a user