ledtrig-oneshot.c (9938b04472d5c59f8bd8152a548533a8599596a2) | ledtrig-oneshot.c (2282e125a406e09331c5a785e3df29035c99a607) |
---|---|
1/* 2 * One-shot LED Trigger 3 * 4 * Copyright 2012, Fabio Baltieri <fabio.baltieri@gmail.com> 5 * 6 * Based on ledtrig-timer.c by Richard Purdie <rpurdie@openedhand.com> 7 * 8 * This program is free software; you can redistribute it and/or modify --- 108 unchanged lines hidden (view full) --- 117 return size; 118} 119 120static DEVICE_ATTR(delay_on, 0644, led_delay_on_show, led_delay_on_store); 121static DEVICE_ATTR(delay_off, 0644, led_delay_off_show, led_delay_off_store); 122static DEVICE_ATTR(invert, 0644, led_invert_show, led_invert_store); 123static DEVICE_ATTR(shot, 0200, NULL, led_shot); 124 | 1/* 2 * One-shot LED Trigger 3 * 4 * Copyright 2012, Fabio Baltieri <fabio.baltieri@gmail.com> 5 * 6 * Based on ledtrig-timer.c by Richard Purdie <rpurdie@openedhand.com> 7 * 8 * This program is free software; you can redistribute it and/or modify --- 108 unchanged lines hidden (view full) --- 117 return size; 118} 119 120static DEVICE_ATTR(delay_on, 0644, led_delay_on_show, led_delay_on_store); 121static DEVICE_ATTR(delay_off, 0644, led_delay_off_show, led_delay_off_store); 122static DEVICE_ATTR(invert, 0644, led_invert_show, led_invert_store); 123static DEVICE_ATTR(shot, 0200, NULL, led_shot); 124 |
125static void oneshot_trig_activate(struct led_classdev *led_cdev) | 125static int oneshot_trig_activate(struct led_classdev *led_cdev) |
126{ 127 struct oneshot_trig_data *oneshot_data; 128 int rc; 129 130 oneshot_data = kzalloc(sizeof(*oneshot_data), GFP_KERNEL); 131 if (!oneshot_data) | 126{ 127 struct oneshot_trig_data *oneshot_data; 128 int rc; 129 130 oneshot_data = kzalloc(sizeof(*oneshot_data), GFP_KERNEL); 131 if (!oneshot_data) |
132 return; | 132 return 0; |
133 134 led_cdev->trigger_data = oneshot_data; 135 136 rc = device_create_file(led_cdev->dev, &dev_attr_delay_on); 137 if (rc) 138 goto err_out_trig_data; 139 rc = device_create_file(led_cdev->dev, &dev_attr_delay_off); 140 if (rc) --- 5 unchanged lines hidden (view full) --- 146 if (rc) 147 goto err_out_invert; 148 149 led_cdev->blink_delay_on = DEFAULT_DELAY; 150 led_cdev->blink_delay_off = DEFAULT_DELAY; 151 152 led_cdev->activated = true; 153 | 133 134 led_cdev->trigger_data = oneshot_data; 135 136 rc = device_create_file(led_cdev->dev, &dev_attr_delay_on); 137 if (rc) 138 goto err_out_trig_data; 139 rc = device_create_file(led_cdev->dev, &dev_attr_delay_off); 140 if (rc) --- 5 unchanged lines hidden (view full) --- 146 if (rc) 147 goto err_out_invert; 148 149 led_cdev->blink_delay_on = DEFAULT_DELAY; 150 led_cdev->blink_delay_off = DEFAULT_DELAY; 151 152 led_cdev->activated = true; 153 |
154 return; | 154 return 0; |
155 156err_out_invert: 157 device_remove_file(led_cdev->dev, &dev_attr_invert); 158err_out_delayoff: 159 device_remove_file(led_cdev->dev, &dev_attr_delay_off); 160err_out_delayon: 161 device_remove_file(led_cdev->dev, &dev_attr_delay_on); 162err_out_trig_data: 163 kfree(led_cdev->trigger_data); | 155 156err_out_invert: 157 device_remove_file(led_cdev->dev, &dev_attr_invert); 158err_out_delayoff: 159 device_remove_file(led_cdev->dev, &dev_attr_delay_off); 160err_out_delayon: 161 device_remove_file(led_cdev->dev, &dev_attr_delay_on); 162err_out_trig_data: 163 kfree(led_cdev->trigger_data); |
164 165 return 0; |
|
164} 165 166static void oneshot_trig_deactivate(struct led_classdev *led_cdev) 167{ 168 struct oneshot_trig_data *oneshot_data = led_cdev->trigger_data; 169 170 if (led_cdev->activated) { 171 device_remove_file(led_cdev->dev, &dev_attr_delay_on); --- 33 unchanged lines hidden --- | 166} 167 168static void oneshot_trig_deactivate(struct led_classdev *led_cdev) 169{ 170 struct oneshot_trig_data *oneshot_data = led_cdev->trigger_data; 171 172 if (led_cdev->activated) { 173 device_remove_file(led_cdev->dev, &dev_attr_delay_on); --- 33 unchanged lines hidden --- |