static int cmdline_proc_show(struct seq_file *m, void *v) { int len = 32; bool ret = true; char test_version[32]= {0}; ret = check_whether_test_version(test_version,len); if(false == ret) { printk(KERN_INFO"cannot read test_version in function %s",__func__); } len = get_board_id_int(); seq_printf(m, "%s hw_boardid=0x%03x hw_test_version=%s\n", saved_command_line, len, test_version); return 0; }
static ssize_t led_delay_off_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { struct led_classdev *led_cdev = dev_get_drvdata(dev); struct timer_trig_data *timer_data = led_cdev->trigger_data; int ret = -EINVAL; char *after; unsigned long state = simple_strtoul(buf, &after, 10); size_t count = after - buf; if (isspace(*after)) count++; if (count == size) { timer_data->delay_off = state; switch(get_board_id_int()){ case BOARD_ID_VIVA: case BOARD_ID_FRONT: { /* deactivate previous settings */ del_timer_sync(&timer_data->timer); /* try to activate hardware acceleration, if any */ if (!led_cdev->blink_set || led_cdev->blink_set(led_cdev, &timer_data->delay_on, &timer_data->delay_off)) { /* no hardware acceleration, blink via timer */ mod_timer(&timer_data->timer, jiffies + 1); } break; } case BOARD_ID_FRONTT1P5: { if(!strcmp(led_cdev->name,"red")) //dmtimer8_pwm_evt gpio27 { led_set_red_delay(timer_data->delay_on , timer_data->delay_off); } else if(!strcmp(led_cdev->name,"green"))//dmtimer10_pwm_evt gpio190) { led_set_green_delay(timer_data->delay_on , timer_data->delay_off); } else if(!strcmp(led_cdev->name,"blue"))//blue light use gpio only after front T1.5 { del_timer_sync(&timer_data->timer); if (!led_cdev->blink_set || led_cdev->blink_set(led_cdev, &timer_data->delay_on, &timer_data->delay_off)) { mod_timer(&timer_data->timer, jiffies + 1); } } } break; default: { if(!strcmp(led_cdev->name,"red")) //dmtimer8_pwm_evt gpio27 { led_set_red_delay(timer_data->delay_on , timer_data->delay_off); } else if(!strcmp(led_cdev->name,"green"))//dmtimer10_pwm_evt gpio190) { led_set_green_delay(timer_data->delay_on , timer_data->delay_off); } break; } } ret = count; } return ret; }