Beispiel #1
0
int check_boot_recovery_key(void)
{
	user_gpio_set_t	gpio_recovery;
	__u32 gpio_hd;
	int ret;
	int gpio_value = 0;
	int used = 0;
	int mode = 0;

	if(uboot_spare_head.boot_data.work_mode != WORK_MODE_BOOT)
	{
		return 0;
	}
	
	ret = script_parser_fetch("recovery_para", "used", (int *)&used, sizeof(int) / 4);
	if (ret || !used)
	{
		printf("[recovery] no use\n");
		return 0;
	}
	ret = script_parser_fetch("recovery_para", "recovery_key", (int *)&gpio_recovery, sizeof(user_gpio_set_t) / 4);
  if (!ret)
	{
		gpio_recovery.mul_sel = 0;		//强制设置成输入
		gpio_hd = gpio_request(&gpio_recovery, 1);
		if (gpio_hd)
		{
			int time;
			gpio_value = 0;
			for(time = 0; time < 4; time++)
			{
				gpio_value += gpio_read_one_pin_value(gpio_hd, 0);
				__msdelay(5);
			}
			if (!gpio_value)
			{
				script_parser_fetch("recovery_para", "mode", (int *)&mode, sizeof(int) / 4);
				if (mode == ONEKEY_USB_RECOVERY)
				{
					printf("set to one key usb recovery\n");
					write_usb_recovery_to_misc();
				}
				else if (mode == ONEKEY_SPRITE_RECOVERY)
				{
					printf("set to one key sprite recovery\n");
					setenv("bootcmd", "sprite_recovery");
				}
				else
				{
					printf("[recovery] no option for one key recovery's mode\n");
				}
			}
		}
	}
	return 0;
}
Beispiel #2
0
/*
************************************************************************************************************
*
*                                             function
*
*    name          :	按键检测后的事件处理
*
*    parmeters     :
*
*    return        :
*
*    note          :	[email protected]
*
*
************************************************************************************************************
*/
void respond_physical_key_action(void)
{
	int key_value;
	key_value = gd->key_pressd_value;

	if (key_value == USB_RECOVERY_KEY_VALUE)
	{
		printf("[box recovery] set to one key usb recovery\n");
		write_usb_recovery_to_misc();
	}
	else if (key_value == SPRITE_RECOVERY_KEY_VALUE)
	{
		printf("[box recovery] set to one key sprite recovery\n");
		//setenv("bootcmd", "sprite_recovery");
	}
}