blob: bc077e47c6f8ee9af600f968667f0642a05bc8f0 [file] [log] [blame]
#ifndef __BACKPORT_LINUX_LEDS_H
#define __BACKPORT_LINUX_LEDS_H
#include_next <linux/leds.h>
#include <linux/version.h>
#include <backport/leds-disabled.h>
#ifndef CPTCFG_BPAUTO_BUILD_LEDS
#if LINUX_VERSION_IS_LESS(3,6,0)
/*
* Backports
*
* commit 959d62fa865d2e616b61a509e1cc5b88741f065e
* Author: Shuah Khan <shuahkhan@gmail.com>
* Date: Thu Jun 14 04:34:30 2012 +0800
*
* leds: Rename led_brightness_set() to led_set_brightness()
*
* Rename leds external interface led_brightness_set() to led_set_brightness().
* This is the second phase of the change to reduce confusion between the
* leds internal and external interfaces that set brightness. With this change,
* now the external interface is led_set_brightness(). The first phase renamed
* the internal interface led_set_brightness() to __led_set_brightness().
* There are no changes to the interface implementations.
*
* Signed-off-by: Shuah Khan <shuahkhan@gmail.com>
* Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
*/
#define led_set_brightness(_dev, _switch) led_brightness_set(_dev, _switch)
#endif /* LINUX_VERSION_IS_LESS(3,6,0) */
#endif /* CPTCFG_BPAUTO_BUILD_LEDS */
#if LINUX_VERSION_IS_LESS(4,2,0)
/*
* There is no LINUX_BACKPORT() guard here because we want it to point to
* the original function which is exported normally.
*/
#ifdef CONFIG_LEDS_TRIGGERS
extern void led_trigger_remove(struct led_classdev *led_cdev);
extern int led_trigger_register(struct led_trigger *trigger);
extern void led_trigger_unregister(struct led_trigger *trigger);
#else
static inline void led_trigger_remove(struct led_classdev *led_cdev) {}
static inline int led_trigger_register(struct led_trigger *trigger) {return 0;}
static inline void led_trigger_unregister(struct led_trigger *trigger) {}
#endif
#endif
#if LINUX_VERSION_IS_LESS(4,5,0) && \
LINUX_VERSION_IS_GEQ(3,19,0)
#define led_set_brightness_sync LINUX_BACKPORT(led_set_brightness_sync)
/**
* led_set_brightness_sync - set LED brightness synchronously
* @led_cdev: the LED to set
* @brightness: the brightness to set it to
*
* Set an LED's brightness immediately. This function will block
* the caller for the time required for accessing device registers,
* and it can sleep.
*
* Returns: 0 on success or negative error value on failure
*/
extern int led_set_brightness_sync(struct led_classdev *led_cdev,
enum led_brightness value);
#endif /* < 4.5 && >= 3.19 */
#if LINUX_VERSION_IS_LESS(4,5,0)
#define devm_led_trigger_register LINUX_BACKPORT(devm_led_trigger_register)
extern int devm_led_trigger_register(struct device *dev,
struct led_trigger *trigger);
#endif /* < 4.5 */
#endif /* __BACKPORT_LINUX_LEDS_H */