Lines Matching +full:led +full:- +full:7 +full:seg
1 // SPDX-License-Identifier: GPL-2.0
3 * Driver for a 7-segment LED display
5 * The decimal point LED present on some devices is currently not
22 #include "line-display.h"
33 struct linedisp *linedisp = &priv->linedisp; in seg_led_update()
34 struct linedisp_map *map = linedisp->map; in seg_led_update()
37 bitmap_set_value8(values, map_to_seg7(&map->map.seg7, linedisp->buf[0]), 0); in seg_led_update()
39 gpiod_multi_set_value_cansleep(priv->segment_gpios, values); in seg_led_update()
46 INIT_DELAYED_WORK(&priv->work, seg_led_update); in seg_led_linedisp_get_map_type()
54 schedule_delayed_work(&priv->work, 0); in seg_led_linedisp_update()
65 struct device *dev = &pdev->dev; in seg_led_probe()
69 return -ENOMEM; in seg_led_probe()
73 priv->segment_gpios = devm_gpiod_get_array(dev, "segment", GPIOD_OUT_LOW); in seg_led_probe()
74 if (IS_ERR(priv->segment_gpios)) in seg_led_probe()
75 return PTR_ERR(priv->segment_gpios); in seg_led_probe()
77 if (priv->segment_gpios->ndescs < 7 || priv->segment_gpios->ndescs > 8) in seg_led_probe()
78 return -EINVAL; in seg_led_probe()
80 return linedisp_register(&priv->linedisp, dev, 1, &seg_led_linedisp_ops); in seg_led_probe()
87 cancel_delayed_work_sync(&priv->work); in seg_led_remove()
88 linedisp_unregister(&priv->linedisp); in seg_led_remove()
92 { .compatible = "gpio-7-segment"},
101 .name = "seg-led-gpio",
108 MODULE_DESCRIPTION("7 segment LED driver");