コード例 #1
0
ファイル: ps2port.c プロジェクト: 3a9LL/panda
static int
__i8042_command(int command, u8 *param)
{
    int receive = (command >> 8) & 0xf;
    int send = (command >> 12) & 0xf;

    // Send the command.
    int ret = i8042_wait_write();
    if (ret)
        return ret;
    outb(command, PORT_PS2_STATUS);

    // Send parameters (if any).
    int i;
    for (i = 0; i < send; i++) {
        ret = i8042_wait_write();
        if (ret)
            return ret;
        outb(param[i], PORT_PS2_DATA);
    }

    // Receive parameters (if any).
    for (i = 0; i < receive; i++) {
        ret = i8042_wait_read();
        if (ret)
            return ret;
        param[i] = inb(PORT_PS2_DATA);
        dprintf(7, "i8042 param=%x\n", param[i]);
    }

    return 0;
}
コード例 #2
0
ファイル: ps2port.c プロジェクト: 3a9LL/panda
static int
i8042_kbd_write(u8 c)
{
    dprintf(7, "i8042_kbd_write c=%d\n", c);
    int ret = i8042_wait_write();
    if (! ret)
        outb(c, PORT_PS2_DATA);
    return ret;
}
コード例 #3
0
ファイル: ps2port.c プロジェクト: 3a9LL/panda
void
i8042_reboot(void)
{
    int i;
    for (i=0; i<10; i++) {
        i8042_wait_write();
        udelay(50);
        outb(0xfe, PORT_PS2_STATUS); /* pulse reset low */
        udelay(50);
    }
}
コード例 #4
0
inline void i8042_write_data(uint8_t data)
{
	i8042_wait_write();
	i386_outb(I8042_DATA_PORT, data);
}
コード例 #5
0
inline void i8042_write_command(uint8_t cmd)
{
	i8042_wait_write();
	i386_outb(I8042_CMD_PORT, cmd);
}