• Home
  • Raw
  • Download

Lines Matching +full:int +full:- +full:map +full:- +full:mask

1 // SPDX-License-Identifier: GPL-2.0-or-later
20 * struct syscon_led - state container for syscon based LEDs
22 * @map: regmap to access the syscon device backing this LED
24 * @mask: the bit in the register corresponding to the LED
29 struct regmap *map; member
31 u32 mask; member
41 int ret; in syscon_led_set()
45 sled->state = false; in syscon_led_set()
47 val = sled->mask; in syscon_led_set()
48 sled->state = true; in syscon_led_set()
51 ret = regmap_update_bits(sled->map, sled->offset, sled->mask, val); in syscon_led_set()
53 dev_err(sled->cdev.dev, "error updating LED status\n"); in syscon_led_set()
56 static int syscon_led_probe(struct platform_device *pdev) in syscon_led_probe()
59 struct device *dev = &pdev->dev; in syscon_led_probe()
62 struct regmap *map; in syscon_led_probe() local
65 int ret; in syscon_led_probe()
67 parent = dev->parent; in syscon_led_probe()
70 return -ENODEV; in syscon_led_probe()
72 map = syscon_node_to_regmap(dev_of_node(parent)); in syscon_led_probe()
73 if (IS_ERR(map)) { in syscon_led_probe()
75 return PTR_ERR(map); in syscon_led_probe()
80 return -ENOMEM; in syscon_led_probe()
82 sled->map = map; in syscon_led_probe()
84 if (of_property_read_u32(np, "offset", &sled->offset)) in syscon_led_probe()
85 return -EINVAL; in syscon_led_probe()
86 if (of_property_read_u32(np, "mask", &sled->mask)) in syscon_led_probe()
87 return -EINVAL; in syscon_led_probe()
89 state = of_get_property(np, "default-state", NULL); in syscon_led_probe()
94 ret = regmap_read(map, sled->offset, &val); in syscon_led_probe()
97 sled->state = !!(val & sled->mask); in syscon_led_probe()
99 sled->state = true; in syscon_led_probe()
100 ret = regmap_update_bits(map, sled->offset, in syscon_led_probe()
101 sled->mask, in syscon_led_probe()
102 sled->mask); in syscon_led_probe()
106 sled->state = false; in syscon_led_probe()
107 ret = regmap_update_bits(map, sled->offset, in syscon_led_probe()
108 sled->mask, 0); in syscon_led_probe()
113 sled->cdev.brightness_set = syscon_led_set; in syscon_led_probe()
117 ret = devm_led_classdev_register_ext(dev, &sled->cdev, &init_data); in syscon_led_probe()
122 dev_info(dev, "registered LED %s\n", sled->cdev.name); in syscon_led_probe()
128 { .compatible = "register-bit-led", },
135 .name = "leds-syscon",