Lines Matching refs:gpio_det
102 struct gpio_detection *gpio_det = gpiod->parent; in gpio_det_report_event() local
112 wake_lock_timeout(&gpio_det->wake_lock, in gpio_det_report_event()
154 static int gpio_det_init_status_check(struct gpio_detection *gpio_det) in gpio_det_init_status_check() argument
159 for (i = 0; i < gpio_det->num; i++) { in gpio_det_init_status_check()
160 gpiod = &gpio_det->data[i]; in gpio_det_init_status_check()
173 struct gpio_detection *gpio_det; in gpio_det_fb_notifier_callback() local
180 gpio_det = container_of(self, struct gpio_detection, fb_notifier); in gpio_det_fb_notifier_callback()
201 struct gpio_detection *gpio_det; in gpio_detection_info_show() local
203 gpio_det = container_of(attr, struct gpio_detection, cls_attr); in gpio_detection_info_show()
205 return sprintf(buf, "%d\n", gpio_det->info); in gpio_detection_info_show()
260 static int gpio_detection_class_register(struct gpio_detection *gpio_det, in gpio_detection_class_register() argument
267 dev_set_drvdata(&gpiod->dev, gpio_det); in gpio_detection_class_register()
274 static int gpio_det_parse_dt(struct gpio_detection *gpio_det, in gpio_det_parse_dt() argument
286 num = of_get_child_count(gpio_det->dev->of_node); in gpio_det_parse_dt()
290 data = devm_kzalloc(gpio_det->dev, num * sizeof(*data), GFP_KERNEL); in gpio_det_parse_dt()
293 of_property_read_u32(gpio_det->dev->of_node, "rockchip,camcap-type", in gpio_det_parse_dt()
294 &gpio_det->type); in gpio_det_parse_dt()
295 of_property_read_u32(gpio_det->dev->of_node, "rockchip,camcap-mirror", in gpio_det_parse_dt()
296 &gpio_det->mirror); in gpio_det_parse_dt()
297 gpio_det->info = (gpio_det->mirror << 4) | gpio_det->type; in gpio_det_parse_dt()
301 gpiod->parent = gpio_det; in gpio_det_parse_dt()
314 gpio_det->num = num; in gpio_det_parse_dt()
315 gpio_det->data = data; in gpio_det_parse_dt()
322 struct gpio_detection *gpio_det; in gpio_det_probe() local
328 gpio_det = devm_kzalloc(&pdev->dev, sizeof(*gpio_det), GFP_KERNEL); in gpio_det_probe()
329 if (!gpio_det) in gpio_det_probe()
331 gpio_det->dev = &pdev->dev; in gpio_det_probe()
332 gpio_det->cls_attr.attr.name = "info"; in gpio_det_probe()
333 gpio_det->cls_attr.attr.mode = S_IRUGO; in gpio_det_probe()
334 gpio_det->cls_attr.show = gpio_detection_info_show; in gpio_det_probe()
335 dev_set_name(gpio_det->dev, "gpio_detection"); in gpio_det_probe()
338 gpio_det->pinctrl = devm_pinctrl_get(&pdev->dev); in gpio_det_probe()
339 if (IS_ERR(gpio_det->pinctrl)) { in gpio_det_probe()
341 return PTR_ERR(gpio_det->pinctrl); in gpio_det_probe()
343 gpio_det->pins_default = pinctrl_lookup_state(gpio_det->pinctrl, in gpio_det_probe()
345 if (IS_ERR(gpio_det->pins_default)) in gpio_det_probe()
346 dev_err(gpio_det->dev, "get default pinstate failed\n"); in gpio_det_probe()
348 pinctrl_select_state(gpio_det->pinctrl, gpio_det->pins_default); in gpio_det_probe()
349 if (gpio_det_parse_dt(gpio_det, pdev)) in gpio_det_probe()
351 wake_lock_init(&gpio_det->wake_lock, WAKE_LOCK_SUSPEND, in gpio_det_probe()
353 for (i = 0; i < gpio_det->num; i++) { in gpio_det_probe()
354 gpiod = &gpio_det->data[i]; in gpio_det_probe()
359 dev_err(gpio_det->dev, "failed to get irq number for GPIO %s\n", in gpio_det_probe()
364 ret = gpio_detection_class_register(gpio_det, gpiod); in gpio_det_probe()
373 ret = devm_request_threaded_irq(gpio_det->dev, gpiod->irq, in gpio_det_probe()
378 dev_err(gpio_det->dev, "request irq(%s) failed:%d\n", in gpio_det_probe()
385 if (gpio_det->info) { in gpio_det_probe()
387 &gpio_det->cls_attr); in gpio_det_probe()
389 dev_warn(gpio_det->dev, "create class file failed:%d\n", in gpio_det_probe()
393 gpio_det_fb_notifier_register(gpio_det); in gpio_det_probe()
394 gpio_det_init_status_check(gpio_det); in gpio_det_probe()
396 dev_info(gpio_det->dev, "gpio detection driver probe success\n"); in gpio_det_probe()