Rev 2131 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2131 | Rev 2307 | ||
|---|---|---|---|
| Line 46... | Line 46... | ||
| 46 | #define SPECIAL '?' |
46 | #define SPECIAL '?' |
| 47 | 47 | ||
| 48 | #define PACKET_ADB 0x00 |
48 | #define PACKET_ADB 0x00 |
| 49 | #define PACKET_CUDA 0x01 |
49 | #define PACKET_CUDA 0x01 |
| 50 | 50 | ||
| 51 | #define CUDA_POWERDOWN 0x0a |
51 | #define CUDA_POWERDOWN 0x0a |
| - | 52 | #define CUDA_RESET 0x11 |
|
| 52 | 53 | ||
| 53 | #define RS 0x200 |
54 | #define RS 0x200 |
| 54 | #define B (0 * RS) |
55 | #define B (0 * RS) |
| 55 | #define A (1 * RS) |
56 | #define A (1 * RS) |
| 56 | #define SR (10 * RS) |
57 | #define SR (10 * RS) |
| Line 189... | Line 190... | ||
| 189 | SPECIAL, /* PageDown */ |
190 | SPECIAL, /* PageDown */ |
| 190 | SPECIAL /* F1 */ |
191 | SPECIAL /* F1 */ |
| 191 | }; |
192 | }; |
| 192 | 193 | ||
| 193 | 194 | ||
| 194 | void send_packet(const uint8_t kind, index_t count, ...); |
- | |
| 195 | - | ||
| 196 | - | ||
| 197 | static void receive_packet(uint8_t *kind, index_t count, uint8_t data[]) |
195 | static void receive_packet(uint8_t *kind, index_t count, uint8_t data[]) |
| 198 | { |
196 | { |
| 199 | cuda[B] = cuda[B] & ~TIP; |
197 | cuda[B] = cuda[B] & ~TIP; |
| 200 | *kind = cuda[SR]; |
198 | *kind = cuda[SR]; |
| 201 | 199 | ||
| Line 314... | Line 312... | ||
| 314 | sysinfo_set_item_val("kbd.inr", NULL, CUDA_IRQ); |
312 | sysinfo_set_item_val("kbd.inr", NULL, CUDA_IRQ); |
| 315 | sysinfo_set_item_val("kbd.address.virtual", NULL, base); |
313 | sysinfo_set_item_val("kbd.address.virtual", NULL, base); |
| 316 | } |
314 | } |
| 317 | 315 | ||
| 318 | 316 | ||
| 319 | void send_packet(const uint8_t kind, index_t count, ...) |
317 | static void send_packet(const uint8_t kind, count_t count, ...) |
| 320 | { |
318 | { |
| 321 | index_t i; |
319 | index_t i; |
| 322 | va_list va; |
320 | va_list va; |
| 323 | 321 | ||
| 324 | cuda[B] = cuda[B] | TIP; |
322 | cuda[B] = cuda[B] | TIP; |
| Line 339... | Line 337... | ||
| 339 | cuda[B] = cuda[B] | TIP; |
337 | cuda[B] = cuda[B] | TIP; |
| 340 | } |
338 | } |
| 341 | 339 | ||
| 342 | 340 | ||
| 343 | void cpu_halt(void) { |
341 | void cpu_halt(void) { |
| - | 342 | asm volatile ( |
|
| - | 343 | "b 0\n" |
|
| - | 344 | ); |
|
| - | 345 | } |
|
| - | 346 | ||
| 344 | #ifdef CONFIG_POWEROFF |
347 | void arch_reboot(void) { |
| 345 | send_packet(PACKET_CUDA, 1, CUDA_POWERDOWN); |
348 | send_packet(PACKET_CUDA, 1, CUDA_RESET); |
| 346 | #endif |
- | |
| 347 | asm volatile ( |
349 | asm volatile ( |
| 348 | "b 0\n" |
350 | "b 0\n" |
| 349 | ); |
351 | ); |
| 350 | } |
352 | } |
| 351 | 353 | ||