Lines Matching refs:gpiod

99 static void gpio_det_report_event(struct gpio_data *gpiod)  in gpio_det_report_event()  argument
102 struct gpio_detection *gpio_det = gpiod->parent; in gpio_det_report_event()
106 event.val = gpiod->val; in gpio_det_report_event()
107 event.name = gpiod->name; in gpio_det_report_event()
109 gpiod->name, event.val ? "over" : "on"); in gpio_det_report_event()
114 kobject_uevent_env(&gpiod->dev.kobj, KOBJ_CHANGE, envp); in gpio_det_report_event()
115 if (gpiod->notify) in gpio_det_report_event()
122 struct gpio_data *gpiod = container_of(work, struct gpio_data, in gpio_det_work_func() local
124 int val = gpiod_get_value(gpiod->gpio); in gpio_det_work_func()
126 if (gpiod->val != val) { in gpio_det_work_func()
127 gpiod->val = val; in gpio_det_work_func()
128 gpio_det_report_event(gpiod); in gpio_det_work_func()
129 if (system_suspend && gpiod->wakeup) { in gpio_det_work_func()
138 struct gpio_data *gpiod = dev_id; in gpio_det_interrupt() local
139 int val = gpiod_get_raw_value(gpiod->gpio); in gpio_det_interrupt()
146 irq_set_irq_type(gpiod->irq, irqflags); in gpio_det_interrupt()
148 mod_delayed_work(system_wq, &gpiod->work, in gpio_det_interrupt()
149 msecs_to_jiffies(gpiod->debounce_ms)); in gpio_det_interrupt()
156 struct gpio_data *gpiod; in gpio_det_init_status_check() local
160 gpiod = &gpio_det->data[i]; in gpio_det_init_status_check()
161 gpiod->val = gpiod_get_value(gpiod->gpio); in gpio_det_init_status_check()
162 if (gpiod->val) in gpio_det_init_status_check()
163 gpio_det_report_event(gpiod); in gpio_det_init_status_check()
211 struct gpio_data *gpiod = container_of(dev, struct gpio_data, dev); in status_show() local
212 unsigned int val = gpiod_get_value(gpiod->gpio); in status_show()
220 struct gpio_data *gpiod; in status_store() local
225 gpiod = container_of(dev, struct gpio_data, dev); in status_store()
231 event.name = gpiod->name; in status_store()
234 gpiod->notify = 0; in status_store()
261 struct gpio_data *gpiod) in gpio_detection_class_register() argument
265 gpiod->dev.class = gpio_detection_class; in gpio_detection_class_register()
266 dev_set_name(&gpiod->dev, "%s", gpiod->name); in gpio_detection_class_register()
267 dev_set_drvdata(&gpiod->dev, gpio_det); in gpio_detection_class_register()
268 ret = device_register(&gpiod->dev); in gpio_detection_class_register()
269 ret = sysfs_create_groups(&gpiod->dev.kobj, gpio_detection_groups); in gpio_detection_class_register()
280 struct gpio_data *gpiod; in gpio_det_parse_dt() local
300 gpiod = &data[i++]; in gpio_det_parse_dt()
301 gpiod->parent = gpio_det; in gpio_det_parse_dt()
302 gpiod->notify = 1; in gpio_det_parse_dt()
303 gpiod->name = of_get_property(node, "label", NULL); in gpio_det_parse_dt()
304 gpiod->wakeup = !!of_get_property(node, "gpio,wakeup", NULL); in gpio_det_parse_dt()
306 &gpiod->debounce_ms); in gpio_det_parse_dt()
307 if (!strcmp(gpiod->name, "car-reverse")) in gpio_det_parse_dt()
308 gpiod->gpio = devm_get_gpiod_from_child(dev, in gpio_det_parse_dt()
311 gpiod->gpio = devm_get_gpiod_from_child(dev, in gpio_det_parse_dt()
323 struct gpio_data *gpiod; in gpio_det_probe() local
354 gpiod = &gpio_det->data[i]; in gpio_det_probe()
355 gpiod_direction_input(gpiod->gpio); in gpio_det_probe()
357 gpiod->irq = gpiod_to_irq(gpiod->gpio); in gpio_det_probe()
358 if (gpiod->irq < 0) { in gpio_det_probe()
360 gpiod->name); in gpio_det_probe()
364 ret = gpio_detection_class_register(gpio_det, gpiod); in gpio_det_probe()
367 INIT_DELAYED_WORK(&gpiod->work, gpio_det_work_func); in gpio_det_probe()
368 gpiod->val = gpiod_get_raw_value(gpiod->gpio); in gpio_det_probe()
369 if (gpiod->val) in gpio_det_probe()
373 ret = devm_request_threaded_irq(gpio_det->dev, gpiod->irq, in gpio_det_probe()
376 gpiod->name, gpiod); in gpio_det_probe()
379 gpiod->name, ret); in gpio_det_probe()
381 if (gpiod->wakeup) in gpio_det_probe()
382 enable_irq_wake(gpiod->irq); in gpio_det_probe()