Rev 1848 | Rev 1875 | 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 | } |