Exemplo n.º 1
0
static void button_timer_function(u32_t data)
{
	static u32_t key_old = 0x3;
	u32_t keyup, keydown;
	u32_t key = 0;

	if(readl(S5PV210_GPH0DAT) & (0x1<<4))
	{
		key |= 0x1 << 0;
	}
	else
	{
		key &= ~(0x1 << 0);
	}

	if(readl(S5PV210_GPH3DAT) & (0x1<<7))
	{
		key |= 0x1 << 1;
	}
	else
	{
		key &= ~(0x1 << 1);
	}

	if(key != key_old)
	{
		keyup = (key ^ key_old) & key;
		keydown = (key ^ key_old) & key_old;
		key_old = key;

		if(keyup)
		{
			if(keyup & (0x1<<0))				/* GPH0_4 */
				input_report(INPUT_KEYBOARD, KEY_DOWN, KEY_BUTTON_UP);
			else if(keyup & (0x1<<1))			/* GPH3_7 */
				input_report(INPUT_KEYBOARD, KEY_ENTER, KEY_BUTTON_UP);
		}

		if(keydown)
		{
			if(keydown & (0x1<<0))				/* GPH0_4 */
				input_report(INPUT_KEYBOARD, KEY_DOWN, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<1))			/* GPH3_7 */
				input_report(INPUT_KEYBOARD, KEY_ENTER, KEY_BUTTON_DOWN);
		}

		input_sync(INPUT_KEYBOARD);
	}

	/* mod timer for next 100 ms */
	mod_timer(&button_timer, jiffies + get_system_hz() / 10);
}
Exemplo n.º 2
0
static void keyboard_report_event(u32_t flag, u8_t data, enum key_value press)
{
	u32_t i;
	enum key_code key;

	for(i = 0; i < ARRAY_SIZE(map); i++)
	{
		if(map[i].data == data)
		{
			if( (flag & KBD_CAPS_LOCK) )
				key = map[i].caps_key;
			else if( (flag & (KBD_LEFT_SHIFT | KBD_RIGHT_SHIFT)) )
				key = map[i].shift_key;
			else if( (flag & (KBD_LEFT_CTRL | KBD_RIGHT_CTRL)) )
				key = map[i].ctrl_key;
			else
				key = map[i].key;

			if(key != 0)
			{
				input_report(INPUT_KEYBOARD, key, press);
				input_sync(INPUT_KEYBOARD);
			}
		}
	}
}
Exemplo n.º 3
0
static void keypad_timer_function(u32_t data)
{
	static u32_t gpm_old = 0x0;
	u32_t gpm = readl(S3C6410_GPMDAT) & 0x1d;
	u32_t keyup, keydown;

	if(gpm != gpm_old)
	{
		keyup = (gpm ^ gpm_old) & gpm_old;
		keydown = (gpm ^ gpm_old) & gpm;
		gpm_old = gpm;

		if(keyup)
		{
			if(keyup & (0x1<<0))				/* gpm0 */
				input_report(INPUT_KEYBOARD, KEY_UP, KEY_BUTTON_UP);
			else if(keyup & (0x1<<3))			/* gpm3 */
				input_report(INPUT_KEYBOARD, KEY_DOWN, KEY_BUTTON_UP);
			else if(keyup & (0x1<<2))			/* gpm2 */
				input_report(INPUT_KEYBOARD, KEY_ENTER, KEY_BUTTON_UP);
			else if(keyup & (0x1<<4))			/* gpm4 */
				input_report(INPUT_KEYBOARD, KEY_POWER, KEY_BUTTON_UP);
		}

		if(keydown)
		{
			if(keydown & (0x1<<0))				/* gpm0 */
				input_report(INPUT_KEYBOARD, KEY_UP, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<3))			/* gpm3 */
				input_report(INPUT_KEYBOARD, KEY_DOWN, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<2))			/* gpm2 */
				input_report(INPUT_KEYBOARD, KEY_ENTER, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<4))			/* gpm4 */
				input_report(INPUT_KEYBOARD, KEY_POWER, KEY_BUTTON_DOWN);
		}

		input_sync(INPUT_KEYBOARD);
	}

	/* mod timer for next 10 ms */
	mod_timer(&keypad_timer, jiffies + get_system_hz() / 100);
}
Exemplo n.º 4
0
static void keypad_timer_function(u32_t data)
{
	static u32_t gpn_old = 0x7;
	u32_t gpn = readl(S3C6410_GPNDAT) & (0x7<<9);
	u32_t keyup, keydown;

	if(gpn != gpn_old)
	{
		keyup = (gpn ^ gpn_old) & gpn_old;
		keydown = (gpn ^ gpn_old) & gpn;
		gpn_old = gpn;

		if(keyup)
		{
			if(keyup & (0x1<<10))				/* gpn10 */
				input_report(INPUT_KEYBOARD, KEY_UP, KEY_BUTTON_UP);
			else if(keyup & (0x1<<11))			/* gpn11 */
				input_report(INPUT_KEYBOARD, KEY_DOWN, KEY_BUTTON_UP);
			else if(keyup & (0x1<<9))			/* gpn9 */
				input_report(INPUT_KEYBOARD, KEY_ENTER, KEY_BUTTON_UP);
		}

		if(keydown)
		{
			if(keydown & (0x1<<10))				/* gpn10 */
				input_report(INPUT_KEYBOARD, KEY_UP, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<11))			/* gpn11 */
				input_report(INPUT_KEYBOARD, KEY_DOWN, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<9))			/* gpn9 */
				input_report(INPUT_KEYBOARD, KEY_ENTER, KEY_BUTTON_DOWN);
		}

		input_sync(INPUT_KEYBOARD);
	}

	/* mod timer for next 10 ms */
	mod_timer(&keypad_timer, jiffies + get_system_hz() / 100);
}
Exemplo n.º 5
0
static void keypad_timer_function(u32_t data)
{
	static u32_t gpn_old = 0x3f;
	u32_t gpn = readl(S3C6410_GPNDAT) & 0x3f;
	u32_t keyup, keydown;

	if(gpn != gpn_old)
	{
		keyup = (gpn ^ gpn_old) & gpn;
		keydown = (gpn ^ gpn_old) & gpn_old;
		gpn_old = gpn;

		if(keyup)
		{
			if(keyup & (0x1<<0))				/* gpn0 */
				input_report(INPUT_KEYBOARD, KEY_LEFT, KEY_BUTTON_UP);
			else if(keyup & (0x1<<1))			/* gpn1 */
				input_report(INPUT_KEYBOARD, KEY_DOWN, KEY_BUTTON_UP);
			else if(keyup & (0x1<<2))			/* gpn2 */
				input_report(INPUT_KEYBOARD, KEY_UP, KEY_BUTTON_UP);
			else if(keyup & (0x1<<3))			/* gpn3 */
				input_report(INPUT_KEYBOARD, KEY_RIGHT, KEY_BUTTON_UP);
			else if(keyup & (0x1<<4))			/* gpn4 */
				input_report(INPUT_KEYBOARD, KEY_ENTER, KEY_BUTTON_UP);
			else if(keyup & (0x1<<5))			/* gpn5 */
				input_report(INPUT_KEYBOARD, KEY_BACK, KEY_BUTTON_UP);
		}

		if(keydown)
		{
			if(keydown & (0x1<<0))				/* gpn0 */
				input_report(INPUT_KEYBOARD, KEY_LEFT, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<1))			/* gpn1 */
				input_report(INPUT_KEYBOARD, KEY_DOWN, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<2))			/* gpn2 */
				input_report(INPUT_KEYBOARD, KEY_UP, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<3))			/* gpn3 */
				input_report(INPUT_KEYBOARD, KEY_RIGHT, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<4))			/* gpn4 */
				input_report(INPUT_KEYBOARD, KEY_ENTER, KEY_BUTTON_DOWN);
			else if(keydown & (0x1<<5))			/* gpn5 */
				input_report(INPUT_KEYBOARD, KEY_BACK, KEY_BUTTON_DOWN);
		}

		input_sync(INPUT_KEYBOARD);
	}

	/* mod timer for next 10 ms */
	mod_timer(&keypad_timer, jiffies + get_system_hz() / 100);
}