Beispiel #1
0
inline void i8042_toggle_port(int port, int enabled)
{
	if (enabled)
		i8042_write_command(port ? I8042_CMD_ENABLE_PORT_2 : I8042_CMD_ENABLE_PORT_1);
	else
		i8042_write_command(port ? I8042_CMD_DISABLE_PORT_2 : I8042_CMD_DISABLE_PORT_1);
}
Beispiel #2
0
u8int i8042_disable_devices() {	//1
	if ( DEBUG_KBD ) {
		printf ( "disabling devices..." );
	}

	i8042_write_command ( 0xAD );
	i8042_write_command ( 0xA7 );
	return 0;
}
Beispiel #3
0
u8int i8042_enable_devices() {	//7
	if ( DEBUG_KBD ) {
		printf ( "enabling devices..." );
	}

	i8042_write_command ( 0xAE );

	i8042_write_command ( 0x20 );
	u8int stat = i8042_read_data();
	stat |= 1 << 0;
	stat |= 1 << 1;
	i8042_write_command ( 0x60 );
	i8042_write_data ( stat );
	return 0;
}
Beispiel #4
0
u8int i8042_set_controller_config_byte() {	//3
	if ( DEBUG_KBD ) {
		printf ( "setting controller config byte" );
	}

	i8042_write_command ( 0x20 );
	status = i8042_read_data();
	status |= 1 << 0;
	status |= 1 << 1;
	status |= 1 << 6;
	i8042_write_command ( 0x60 );
	i8042_write_data ( status );

	if ( DEBUG_KBD && ! ( status & ( 1 << 5 ) ) ) {
		printf ( "DUAL PS/2 = YES\n" );    //TODO check if this is right
	}

	return 0;
}
Beispiel #5
0
int i8042_self_test()
{
	int n, r;
	for (n = 0; n < 5; n++) {
		i8042_write_command(I8042_CMD_TEST_CONTROLLER);
		r = i8042_read_data();
		if (r == 0x55)
			return 0;
	}
	return -1;
}
Beispiel #6
0
u8int i8042_controller_self_test() {	//4
	if ( DEBUG_KBD ) {
		printf ( "controller self test" );
	}

	i8042_write_command ( 0xAA );
	u8int resp = i8042_read_data();
	resp = i8042_read_data();

	if ( DEBUG_KBD ) {
		if ( resp == 0x55 ) {
			printf ( "PASS\n" );
		}

		if ( resp == 0xFC ) {
			printf ( "FAIL\n" );
		}
	}

	return 0;
}
Beispiel #7
0
void i8042_write(int port, uint8_t data)
{
	if (port)
		i8042_write_command(I8042_CMD_WRITE_PORT_2);
	i8042_write_data(data);		
}
Beispiel #8
0
inline uint8_t i8042_read_ram(uint8_t addr)
{
	i8042_write_command(I8042_CMD_READ_RAM(addr));
	return i8042_read_data();
}
Beispiel #9
0
inline void i8042_write_ram(uint8_t addr, uint8_t data)
{
	i8042_write_command(I8042_CMD_WRITE_RAM(addr));
	i8042_write_data(data);
}