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; }
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; }