Lines Matching refs:led_dat

58 	struct ns2_led_data *led_dat =  in ns2_led_work()  local
60 int i = led_dat->mode_index; in ns2_led_work()
62 gpio_set_value_cansleep(led_dat->cmd, led_dat->modval[i].cmd_level); in ns2_led_work()
63 gpio_set_value_cansleep(led_dat->slow, led_dat->modval[i].slow_level); in ns2_led_work()
66 static int ns2_led_get_mode(struct ns2_led_data *led_dat, in ns2_led_get_mode() argument
74 cmd_level = gpio_get_value_cansleep(led_dat->cmd); in ns2_led_get_mode()
75 slow_level = gpio_get_value_cansleep(led_dat->slow); in ns2_led_get_mode()
77 for (i = 0; i < led_dat->num_modes; i++) { in ns2_led_get_mode()
78 if (cmd_level == led_dat->modval[i].cmd_level && in ns2_led_get_mode()
79 slow_level == led_dat->modval[i].slow_level) { in ns2_led_get_mode()
80 *mode = led_dat->modval[i].mode; in ns2_led_get_mode()
89 static void ns2_led_set_mode(struct ns2_led_data *led_dat, in ns2_led_set_mode() argument
96 for (i = 0; i < led_dat->num_modes; i++) in ns2_led_set_mode()
97 if (mode == led_dat->modval[i].mode) { in ns2_led_set_mode()
105 write_lock_irqsave(&led_dat->rw_lock, flags); in ns2_led_set_mode()
107 if (!led_dat->can_sleep) { in ns2_led_set_mode()
108 gpio_set_value(led_dat->cmd, in ns2_led_set_mode()
109 led_dat->modval[i].cmd_level); in ns2_led_set_mode()
110 gpio_set_value(led_dat->slow, in ns2_led_set_mode()
111 led_dat->modval[i].slow_level); in ns2_led_set_mode()
115 led_dat->mode_index = i; in ns2_led_set_mode()
116 schedule_work(&led_dat->work); in ns2_led_set_mode()
119 write_unlock_irqrestore(&led_dat->rw_lock, flags); in ns2_led_set_mode()
125 struct ns2_led_data *led_dat = in ns2_led_set() local
131 else if (led_dat->sata) in ns2_led_set()
136 ns2_led_set_mode(led_dat, mode); in ns2_led_set()
144 struct ns2_led_data *led_dat = in ns2_led_sata_store() local
155 if (led_dat->sata == enable) in ns2_led_sata_store()
158 led_dat->sata = enable; in ns2_led_sata_store()
164 ns2_led_set_mode(led_dat, NS_V2_LED_SATA); in ns2_led_sata_store()
166 ns2_led_set_mode(led_dat, NS_V2_LED_ON); in ns2_led_sata_store()
176 struct ns2_led_data *led_dat = in ns2_led_sata_show() local
179 return sprintf(buf, "%d\n", led_dat->sata); in ns2_led_sata_show()
191 create_ns2_led(struct platform_device *pdev, struct ns2_led_data *led_dat, in create_ns2_led() argument
217 rwlock_init(&led_dat->rw_lock); in create_ns2_led()
219 led_dat->cdev.name = template->name; in create_ns2_led()
220 led_dat->cdev.default_trigger = template->default_trigger; in create_ns2_led()
221 led_dat->cdev.blink_set = NULL; in create_ns2_led()
222 led_dat->cdev.brightness_set = ns2_led_set; in create_ns2_led()
223 led_dat->cdev.flags |= LED_CORE_SUSPENDRESUME; in create_ns2_led()
224 led_dat->cdev.groups = ns2_led_groups; in create_ns2_led()
225 led_dat->cmd = template->cmd; in create_ns2_led()
226 led_dat->slow = template->slow; in create_ns2_led()
227 led_dat->can_sleep = gpio_cansleep(led_dat->cmd) | in create_ns2_led()
228 gpio_cansleep(led_dat->slow); in create_ns2_led()
229 led_dat->modval = template->modval; in create_ns2_led()
230 led_dat->num_modes = template->num_modes; in create_ns2_led()
232 ret = ns2_led_get_mode(led_dat, &mode); in create_ns2_led()
237 led_dat->sata = (mode == NS_V2_LED_SATA) ? 1 : 0; in create_ns2_led()
238 led_dat->cdev.brightness = in create_ns2_led()
241 INIT_WORK(&led_dat->work, ns2_led_work); in create_ns2_led()
243 ret = led_classdev_register(&pdev->dev, &led_dat->cdev); in create_ns2_led()
250 static void delete_ns2_led(struct ns2_led_data *led_dat) in delete_ns2_led() argument
252 led_classdev_unregister(&led_dat->cdev); in delete_ns2_led()
253 cancel_work_sync(&led_dat->work); in delete_ns2_led()