Lines Matching refs:led
109 static void bcm6328_led_mode(struct bcm6328_led *led, unsigned long value) in bcm6328_led_mode() argument
114 shift = bcm6328_pin2shift(led->pin); in bcm6328_led_mode()
116 mode = led->mem + BCM6328_REG_MODE_HI; in bcm6328_led_mode()
118 mode = led->mem + BCM6328_REG_MODE_LO; in bcm6328_led_mode()
129 struct bcm6328_led *led = in bcm6328_led_set() local
133 spin_lock_irqsave(led->lock, flags); in bcm6328_led_set()
134 *(led->blink_leds) &= ~BIT(led->pin); in bcm6328_led_set()
135 if ((led->active_low && value == LED_OFF) || in bcm6328_led_set()
136 (!led->active_low && value != LED_OFF)) in bcm6328_led_set()
137 bcm6328_led_mode(led, BCM6328_LED_MODE_ON); in bcm6328_led_set()
139 bcm6328_led_mode(led, BCM6328_LED_MODE_OFF); in bcm6328_led_set()
140 spin_unlock_irqrestore(led->lock, flags); in bcm6328_led_set()
158 struct bcm6328_led *led = in bcm6328_blink_set() local
182 spin_lock_irqsave(led->lock, flags); in bcm6328_blink_set()
183 if (*(led->blink_leds) == 0 || in bcm6328_blink_set()
184 *(led->blink_leds) == BIT(led->pin) || in bcm6328_blink_set()
185 *(led->blink_delay) == delay) { in bcm6328_blink_set()
188 *(led->blink_leds) |= BIT(led->pin); in bcm6328_blink_set()
189 *(led->blink_delay) = delay; in bcm6328_blink_set()
191 val = bcm6328_led_read(led->mem + BCM6328_REG_INIT); in bcm6328_blink_set()
194 bcm6328_led_write(led->mem + BCM6328_REG_INIT, val); in bcm6328_blink_set()
196 bcm6328_led_mode(led, BCM6328_LED_MODE_BLINK); in bcm6328_blink_set()
203 spin_unlock_irqrestore(led->lock, flags); in bcm6328_blink_set()
284 struct bcm6328_led *led; in bcm6328_led() local
288 led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL); in bcm6328_led()
289 if (!led) in bcm6328_led()
292 led->pin = reg; in bcm6328_led()
293 led->mem = mem; in bcm6328_led()
294 led->lock = lock; in bcm6328_led()
295 led->blink_leds = blink_leds; in bcm6328_led()
296 led->blink_delay = blink_delay; in bcm6328_led()
299 led->active_low = true; in bcm6328_led()
301 led->cdev.name = of_get_property(nc, "label", NULL) ? : nc->name; in bcm6328_led()
302 led->cdev.default_trigger = of_get_property(nc, in bcm6328_led()
308 led->cdev.brightness = LED_FULL; in bcm6328_led()
313 shift = bcm6328_pin2shift(led->pin); in bcm6328_led()
322 if ((led->active_low && val == BCM6328_LED_MODE_OFF) || in bcm6328_led()
323 (!led->active_low && val == BCM6328_LED_MODE_ON)) in bcm6328_led()
324 led->cdev.brightness = LED_FULL; in bcm6328_led()
326 led->cdev.brightness = LED_OFF; in bcm6328_led()
328 led->cdev.brightness = LED_OFF; in bcm6328_led()
331 led->cdev.brightness = LED_OFF; in bcm6328_led()
334 bcm6328_led_set(&led->cdev, led->cdev.brightness); in bcm6328_led()
336 led->cdev.brightness_set = bcm6328_led_set; in bcm6328_led()
337 led->cdev.blink_set = bcm6328_blink_set; in bcm6328_led()
339 rc = led_classdev_register(dev, &led->cdev); in bcm6328_led()
343 dev_dbg(dev, "registered LED %s\n", led->cdev.name); in bcm6328_led()