#include <stdio.h>#include <stdlib.h>#include <string.h>#include "console.h"#include "cpu.h"#include "devices.h"#include "machine.h"#include "memory.h"#include "misc.h"#include "thirdparty/kbdreg.h"Go to the source code of this file.
Classes | |
| struct | pckbc_data |
Macros | |
| #define | MAX_8042_QUEUELEN 32768 |
| #define | PC_DATA 0 |
| #define | PC_CMD 0 |
| #define | PC_STATUS 1 |
| #define | PS2_TXBUF 0 |
| #define | PS2_RXBUF 1 |
| #define | PS2_CONTROL 2 |
| #define | PS2_CONTROL_TXINTEN (1 << 2) |
| #define | PS2_CONTROL_RXINTEN (1 << 3) |
| #define | PS2_STATUS 3 |
| #define | PS2_STATUS_TXEMPTY (1 << 3) |
| #define | PS2_STATUS_RXFULL (1 << 4) |
| #define | PS2 100 |
| #define | PCKBC_TICKSHIFT 15 |
| #define | STATE_NORMAL 0 |
| #define | STATE_LDCMDBYTE 1 |
| #define | STATE_RDCMDBYTE 2 |
| #define | STATE_WAITING_FOR_TRANSLTABLE 3 |
| #define | STATE_WAITING_FOR_RATE 4 |
| #define | STATE_WAITING_FOR_ONEKEY_MB 5 |
| #define | STATE_WAITING_FOR_AUX 6 |
| #define | STATE_WAITING_FOR_AUX_OUT 7 |
| #define | STATE_LDOUTPUT 8 |
| #define | STATE_RDOUTPUT 9 |
Functions | |
| void | pckbc_add_code (struct pckbc_data *d, int code, int port) |
| int | pckbc_get_code (struct pckbc_data *d, int port) |
| void | pckbc_reassert_interrupts (struct pckbc_data *d) |
| DEVICE_TICK (pckbc) | |
| DEVICE_ACCESS (pckbc) | |
| int | dev_pckbc_init (struct machine *machine, struct memory *mem, uint64_t baseaddr, int type, char *keyboard_irqpath, char *mouse_irqpath, int in_use, int pc_style_flag) |
| #define MAX_8042_QUEUELEN 32768 |
Definition at line 62 of file dev_pckbc.cc.
| #define PC_CMD 0 |
Definition at line 65 of file dev_pckbc.cc.
| #define PC_DATA 0 |
Definition at line 64 of file dev_pckbc.cc.
| #define PC_STATUS 1 |
Definition at line 66 of file dev_pckbc.cc.
| #define PCKBC_TICKSHIFT 15 |
Definition at line 79 of file dev_pckbc.cc.
| #define PS2 100 |
Definition at line 77 of file dev_pckbc.cc.
| #define PS2_CONTROL 2 |
Definition at line 70 of file dev_pckbc.cc.
| #define PS2_CONTROL_RXINTEN (1 << 3) |
Definition at line 72 of file dev_pckbc.cc.
| #define PS2_CONTROL_TXINTEN (1 << 2) |
Definition at line 71 of file dev_pckbc.cc.
| #define PS2_RXBUF 1 |
Definition at line 69 of file dev_pckbc.cc.
| #define PS2_STATUS 3 |
Definition at line 73 of file dev_pckbc.cc.
| #define PS2_STATUS_RXFULL (1 << 4) |
Definition at line 75 of file dev_pckbc.cc.
| #define PS2_STATUS_TXEMPTY (1 << 3) |
Definition at line 74 of file dev_pckbc.cc.
| #define PS2_TXBUF 0 |
Definition at line 68 of file dev_pckbc.cc.
| #define STATE_LDCMDBYTE 1 |
Definition at line 115 of file dev_pckbc.cc.
| #define STATE_LDOUTPUT 8 |
Definition at line 122 of file dev_pckbc.cc.
| #define STATE_NORMAL 0 |
Definition at line 114 of file dev_pckbc.cc.
| #define STATE_RDCMDBYTE 2 |
Definition at line 116 of file dev_pckbc.cc.
| #define STATE_RDOUTPUT 9 |
Definition at line 123 of file dev_pckbc.cc.
| #define STATE_WAITING_FOR_AUX 6 |
Definition at line 120 of file dev_pckbc.cc.
| #define STATE_WAITING_FOR_AUX_OUT 7 |
Definition at line 121 of file dev_pckbc.cc.
| #define STATE_WAITING_FOR_ONEKEY_MB 5 |
Definition at line 119 of file dev_pckbc.cc.
| #define STATE_WAITING_FOR_RATE 4 |
Definition at line 118 of file dev_pckbc.cc.
| #define STATE_WAITING_FOR_TRANSLTABLE 3 |
Definition at line 117 of file dev_pckbc.cc.
| int dev_pckbc_init | ( | struct machine * | machine, |
| struct memory * | mem, | ||
| uint64_t | baseaddr, | ||
| int | type, | ||
| char * | keyboard_irqpath, | ||
| char * | mouse_irqpath, | ||
| int | in_use, | ||
| int | pc_style_flag | ||
| ) |
Definition at line 1157 of file dev_pckbc.cc.
References CHECK_ALLOCATION, pckbc_data::console_handle, console_start_slave_inputonly(), dev_pckbc_access(), DEV_PCKBC_LENGTH, DM_DEFAULT, pckbc_data::in_use, INTERRUPT_CONNECT, pckbc_data::irq_keyboard, pckbc_data::irq_mouse, machine_add_tickfunction(), memory_device_register(), pckbc_data::output_byte, pckbc_data::pc_style_flag, PCKBC_8042, PCKBC_8242, PCKBC_JAZZ, PCKBC_TICKSHIFT, pckbc_data::rx_int_enable, pckbc_data::scanning_enabled, pckbc_data::translation_table, and pckbc_data::type.
Referenced by bus_isa_init(), and MACHINE_SETUP().
| DEVICE_ACCESS | ( | pckbc | ) |
Definition at line 864 of file dev_pckbc.cc.
References pckbc_data::cmdbyte, data, fatal(), pckbc_data::head, KC8_KENABLE, KC8_MENABLE, pckbc_data::last_scancode, MEM_READ, MEM_WRITE, memory_readmax64(), memory_writemax64(), pckbc_data::output_byte, pckbc_data::pc_style_flag, PCKBC_8242, pckbc_get_code(), PS2, pckbc_data::reg, pckbc_data::rx_int_enable, pckbc_data::state, STATE_LDCMDBYTE, STATE_LDOUTPUT, STATE_NORMAL, STATE_RDCMDBYTE, STATE_RDOUTPUT, pckbc_data::tail, and pckbc_data::type.
| DEVICE_TICK | ( | pckbc | ) |
Definition at line 611 of file dev_pckbc.cc.
References console_charavail(), pckbc_data::console_handle, console_readchar(), pckbc_data::in_use, and pckbc_data::translation_table.
| void pckbc_add_code | ( | struct pckbc_data * | d, |
| int | code, | ||
| int | port | ||
| ) |
Definition at line 131 of file dev_pckbc.cc.
References fatal(), pckbc_data::head, pckbc_data::key_queue, MAX_8042_QUEUELEN, and pckbc_data::tail.
| int pckbc_get_code | ( | struct pckbc_data * | d, |
| int | port | ||
| ) |
Definition at line 147 of file dev_pckbc.cc.
References fatal(), pckbc_data::head, pckbc_data::key_queue, MAX_8042_QUEUELEN, and pckbc_data::tail.
Referenced by DEVICE_ACCESS().
| void pckbc_reassert_interrupts | ( | struct pckbc_data * | d | ) |
Definition at line 574 of file dev_pckbc.cc.
References pckbc_data::currently_asserted, pckbc_data::head, INTERRUPT_ASSERT, INTERRUPT_DEASSERT, pckbc_data::irq_keyboard, pckbc_data::irq_mouse, pckbc_data::rx_int_enable, and pckbc_data::tail.
1.8.17