static ssize_t usb_sel_store(struct device *dev, struct device_attribute *attr,const char *buf, size_t size)
{

	int state;

	if (sscanf(buf, "%i", &state) != 1 || (state < 0 || state > 2))
		return -EINVAL;

	// prevents the system from entering suspend 
	wake_lock(&sec_misc_wake_lock);

	if(state == 2)	{
		p3_set_usb_path(USB_SEL_ADC);	// Set USB path to CP
		klogi("Set USB path to ADC\n");
	}
	else if(state == 1)	{
		p3_set_usb_path(USB_SEL_AP_USB);	// Set USB path to AP
		klogi("Set USB path to AP\n");
	}
	else if(state == 0)	{
		p3_set_usb_path(USB_SEL_CP_USB);	// Set USB path to CP
		klogi("Set USB path to CP\n");
	}

	else
		klogi("Enter 2(ADC usb) or 1(AP usb) or 0(CP usb)...\n");
	
	wake_unlock(&sec_misc_wake_lock);

	return size;
}
Пример #2
0
void p3_usb_path_init(void){
	int usbsel1, usbsel2;

	gpio_request(GPIO_USB_SEL1, "GPIO_USB_SEL1");
	gpio_direction_output(GPIO_USB_SEL1, 0);
	tegra_gpio_enable(GPIO_USB_SEL1);

	gpio_request(GPIO_USB_SEL2, "GPIO_USB_SEL2");
	gpio_direction_input(GPIO_USB_SEL2);
	usbsel2 = gpio_get_value(GPIO_USB_SEL2);
	gpio_direction_output(GPIO_USB_SEL2, 0);
	tegra_gpio_enable(GPIO_USB_SEL2);

	if (usbsel2 == 1) {
		p3_set_usb_path(USB_SEL_AP_USB);
	} else if (usbsel2 == 0) {
		p3_set_usb_path(USB_SEL_CP_USB);
	}
}
static int __init sec_misc_init(void)
{
	int ret=0;
	klogi("started!");
	printk("[denis]sec_misc_init!\n");

	ret = misc_register(&sec_misc_device);
	if (ret<0) {
		kloge("misc_register failed!");
		return ret;
	}

	//sec_switch_class = class_create(THIS_MODULE, "sec");
	//if (IS_ERR(sec_switch_class))
		//pr_err("Failed to create class named \"sec\"!\n");
	//sec_misc_dev = device_create(sec_class, NULL, 0, NULL, "switch");
	sec_misc_dev = device_create(sec_class, NULL, 0, NULL, "sec_misc");		//EUR
	if (IS_ERR(sec_misc_dev)) {
		kloge("failed to create device!");
		return -1;
	}

	if (device_create_file(sec_misc_dev, &dev_attr_uartsel) < 0) {
		kloge("failed to create device file!(%s)!\n", dev_attr_uartsel.attr.name);
		return -1;
	}

	if (device_create_file(sec_misc_dev, &dev_attr_usbsel) < 0) {
		kloge("failed to create device file!(%s)!\n", dev_attr_usbsel.attr.name);
		return -1;
	}

	if (device_create_file(sec_misc_dev, &dev_attr_usb_state) < 0)		//EUR
		pr_err("Failed to create device file(%s)!\n", dev_attr_usb_state.attr.name);		//EUR
	
	if (device_create_file(sec_misc_dev, &dev_attr_emmc_checksum_done) < 0)
		pr_err("failed to create device file - %s\n", dev_attr_emmc_checksum_done.attr.name);

	if (device_create_file(sec_misc_dev, &dev_attr_emmc_checksum_pass) < 0)
		pr_err("failed to create device file - %s\n", dev_attr_emmc_checksum_pass.attr.name);

	wake_lock_init(&sec_misc_wake_lock, WAKE_LOCK_SUSPEND, "sec_misc");

	p3_uart_path_init();
	p3_usb_path_init();
	p3_set_usb_path(USB_SEL_AP_USB);
	init_jig_on();
	
	return 0;
}