Subversion Repositories HelenOS

Rev

Rev 1848 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1848 Rev 1849
Line 36... Line 36...
36
 
36
 
37
#include <genarch/kbd/z8530.h>
37
#include <genarch/kbd/z8530.h>
38
#include <genarch/kbd/key.h>
38
#include <genarch/kbd/key.h>
39
#include <genarch/kbd/scanc.h>
39
#include <genarch/kbd/scanc.h>
40
#include <genarch/kbd/scanc_sun.h>
40
#include <genarch/kbd/scanc_sun.h>
-
 
41
#include <arch/drivers/fhc.h>
41
#include <arch/drivers/z8530.h>
42
#include <arch/drivers/z8530.h>
42
#include <arch/drivers/kbd.h>
-
 
43
#include <arch/interrupt.h>
43
#include <arch/interrupt.h>
44
#include <cpu.h>
44
#include <cpu.h>
45
#include <arch/asm.h>
45
#include <arch/asm.h>
46
#include <arch.h>
46
#include <arch.h>
47
#include <typedefs.h>
47
#include <typedefs.h>
Line 62... Line 62...
62
    .suspend = z8530_suspend,
62
    .suspend = z8530_suspend,
63
    .resume = z8530_resume,
63
    .resume = z8530_resume,
64
    .read = key_read
64
    .read = key_read
65
};
65
};
66
 
66
 
67
void z8530_interrupt(int n, istate_t *istate);
-
 
68
void z8530_wait(void);
67
void z8530_wait(void);
69
 
68
 
70
/** Initialize keyboard and service interrupts using kernel routine */
69
/** Initialize keyboard and service interrupts using kernel routine */
71
void z8530_grab(void)
70
void z8530_grab(void)
72
{
71
{
73
}
72
}
-
 
73
 
74
/** Resume the former interrupt vector */
74
/** Resume the former interrupt vector */
75
void z8530_release(void)
75
void z8530_release(void)
76
{
76
{
77
}
77
}
78
 
78
 
79
#include <print.h>
-
 
80
 
-
 
81
/** Initialize z8530. */
79
/** Initialize z8530. */
82
void z8530_init(void)
80
void z8530_init(void)
83
{
81
{
84
    chardev_initialize("z8530_kbd", &kbrd, &ops);
82
    chardev_initialize("z8530_kbd", &kbrd, &ops);
85
    stdin = &kbrd;
83
    stdin = &kbrd;
86
 
84
 
-
 
85
    (void) z8530_read_a(RR8);
-
 
86
 
87
    z8530_write_a(WR1, WR1_IARCSC); /* interrupt on all characters */
87
    z8530_write_a(WR1, WR1_IARCSC); /* interrupt on all characters */
88
    z8530_write_a(WR2, 12);     /* FIXME: IRQ12 ??? */
-
 
89
 
88
 
90
    /* 8 bits per character and enable receiver */
89
    /* 8 bits per character and enable receiver */
91
    z8530_write_a(WR3, WR3_RX8BITSCH | WR3_RX_ENABLE);
90
    z8530_write_a(WR3, WR3_RX8BITSCH | WR3_RX_ENABLE);
92
   
91
   
93
    z8530_write_a(WR9, WR9_MIE);    /* Master Interrupt Enable. */
92
    z8530_write_a(WR9, WR9_MIE);    /* Master Interrupt Enable. */
-
 
93
   
-
 
94
    /*
-
 
95
     * We need to initialize the FireHose Controller,
-
 
96
     * to which is this z8530 attached. Otherwise
-
 
97
     * interrupts generated by the z8530 would not
-
 
98
     * be forwarded to the CPU.
-
 
99
     */
-
 
100
    fhc_init();
94
}
101
}
95
 
102
 
96
/** Process z8530 interrupt.
103
/** Process z8530 interrupt.
97
 *
104
 *
98
 * @param n Interrupt vector.
105
 * @param n Interrupt vector.
99
 * @param istate Interrupted state.
106
 * @param istate Interrupted state.
100
 */
107
 */
101
void z8530_interrupt(int n, istate_t *istate)
108
void z8530_interrupt(void)
102
{
109
{
-
 
110
    z8530_poll();
103
}
111
}
104
 
112
 
105
/** Wait until the controller reads its data. */
113
/** Wait until the controller reads its data. */
106
void z8530_wait(void) {
114
void z8530_wait(void) {
107
}
115
}