/**
* @file led.h
* Headers for the LED module
*
* Copyright © 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
* Copyright (C) 2013-2019 Jolla Ltd.
*
* @author David Weinehall
* @author Simo Piiroinen
*
* mce is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License
* version 2.1 as published by the Free Software Foundation.
*
* mce is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with mce. If not, see .
*/
#ifndef LED_H_
#define LED_H_
/* ========================================================================= *
* Configuration
* ========================================================================= */
/** Name of LED configuration group */
#define MCE_CONF_LED_GROUP "LED"
/** Name of configuration key for the list of required LED patterns */
#define MCE_CONF_LED_PATTERNS_REQUIRED "LEDPatternsRequired"
/** Name of configuration key for the list of disabled LED patterns */
#define MCE_CONF_LED_PATTERNS_DISABLED "LEDPatternsDisabled"
/** Name of configuration key for the list of LED Pattern combination-rules */
#define MCE_CONF_LED_COMBINATION_RULES "CombinationRules"
/**
* Name of LED single-colour pattern configuration group for
* RX-34
*/
#define MCE_CONF_LED_PATTERN_RX34_GROUP "LEDPatternMonoRX34"
/**
* Name of LED NJoy-controlled RGB pattern configuration group for
* RX-44
*/
#define MCE_CONF_LED_PATTERN_RX44_GROUP "LEDPatternNJoyRX44"
/**
* Name of LED NJoy-controlled RGB pattern configuration group for
* RX-48
*/
#define MCE_CONF_LED_PATTERN_RX48_GROUP "LEDPatternNJoyRX48"
/**
* Name of LED Lysti-controlled RGB pattern configuration group for
* RX-51
*/
#define MCE_CONF_LED_PATTERN_RX51_GROUP "LEDPatternLystiRX51"
/**
* Name of LED Lysti-controlled RGB pattern configuration group for
* RM-680/RM-690
*/
#define MCE_CONF_LED_PATTERN_RM680_GROUP "LEDPatternLystiRM680"
/**
* Name of LED Lysti-controlled RGB pattern configuration group for
* RM-696/RM-716
*/
#define MCE_CONF_LED_PATTERN_RM696_GROUP "LEDPatternNJoyRM696"
/**
* Name of LED RGB pattern configuration group for libhybris
*/
#define MCE_CONF_LED_PATTERN_HYBRIS_GROUP "LEDPatternHybris"
/* ========================================================================= *
* Settings
* ========================================================================= */
/** Prefix for led setting keys */
#define MCE_SETTING_LED_PATH "/system/osso/dsm/leds"
/** Whether sw based led breathing is enabled */
#define MCE_SETTING_LED_SW_BREATH_ENABLED MCE_SETTING_LED_PATH"/sw_breath_enabled"
#define MCE_DEFAULT_LED_SW_BREATH_ENABLED true
/** Mimimum battery level to allow led breathing without charger */
#define MCE_SETTING_LED_SW_BREATH_BATTERY_LIMIT MCE_SETTING_LED_PATH"/sw_breath_battery_limit"
#define MCE_DEFAULT_LED_SW_BREATH_BATTERY_LIMIT 101
/** Default value for LED pattern enabled settings
*
* Note: Keynames are dynamically constructed from MCE_SETTING_LED_PATH
* prefix and led pattern name.
*/
#define MCE_DEFAULT_LED_PATTERN_ENABLED true
/* ========================================================================= *
* HW Constants
* ========================================================================= */
/** Reno control channel */
#define TWL5031_BCC 0x4a
/** Reno LED controller */
#define LED_DRIVER_CTRL 0xaf
/** Reno command to disable LED */
#define LEDC_DISABLE 0x08
/** Default NJoy (LP5521)-controlled RGB LED current */
#define MAXIMUM_NJOY_RGB_LED_CURRENT 47 /* 4.7 mA */
/** Default NJoy (LP5521)-controlled monochrome LED current */
#define MAXIMUM_NJOY_MONOCHROME_LED_CURRENT 50 /* 5.0 mA */
/** Maximum Lysti (LP5523)-controlled RGB LED current */
#define MAXIMUM_LYSTI_RGB_LED_CURRENT 47 /* 4.7 mA */
/** Maximum Lysti (LP5523)-controlled monochrome LED current */
#define MAXIMUM_LYSTI_MONOCHROME_LED_CURRENT 100 /* 10.0 mA */
/** Maximum libhybris led brightness */
#define MAXIMUM_HYBRIS_LED_BRIGHTNESS 100 /* % */
/** Path to the mono LED /sys directory */
#define MCE_MONO_LED_SYS_PATH "/sys/class/leds/keypad"
/** Monochrome LED on period file */
#define MCE_LED_ON_PERIOD_PATH MCE_MONO_LED_SYS_PATH "/delay_on"
/** Monochrome LED off period file */
#define MCE_LED_OFF_PERIOD_PATH MCE_MONO_LED_SYS_PATH "/delay_off"
/** Monochrome LED trigger file */
#define MCE_LED_TRIGGER_PATH MCE_MONO_LED_SYS_PATH "/trigger"
/* Trigger type */
/** Timer based trigger */
#define MCE_LED_TRIGGER_TIMER "timer"
/** No trigger */
#define MCE_LED_TRIGGER_NONE "none"
/* LED modes */
/** LED disabled */
#define MCE_LED_DISABLED_MODE "disabled"
/** LED direct control mode */
#define MCE_LED_DIRECT_MODE "direct"
/** LED load mode */
#define MCE_LED_LOAD_MODE "load"
/** LED run mode */
#define MCE_LED_RUN_MODE "run"
/** Suffix used for LED current */
#define MCE_LED_CURRENT_SUFFIX "/led_current"
/** Suffix used for LED brightness */
#define MCE_LED_BRIGHTNESS_SUFFIX "/brightness"
/** Path to direct LED control /sys directory */
#define MCE_LED_DIRECT_SYS_PATH "/sys/class/leds"
/** Directory prefix for keypad LED controller */
#define MCE_LED_KEYPAD_PREFIX "/keypad"
/** Directory prefix for cover LED controller */
#define MCE_LED_COVER_PREFIX "/cover"
/** Directory prefix for keyboard LED controller */
#define MCE_LED_KEYBOARD_PREFIX "/keyboard"
/** Directory prefix for LP5521 LED controller */
#define MCE_LED_LP5521_PREFIX "/lp5521"
/** Directory prefix for LP5523 LED controller */
#define MCE_LED_LP5523_PREFIX "/lp5523"
/** Name of LED channel 0 */
#define MCE_LED_CHANNEL0 ":channel0"
/** Name of LED channel 1 */
#define MCE_LED_CHANNEL1 ":channel1"
/** Name of LED channel 2 */
#define MCE_LED_CHANNEL2 ":channel2"
/** Name of LED channel 3 */
#define MCE_LED_CHANNEL3 ":channel3"
/** Name of LED channel 4 */
#define MCE_LED_CHANNEL4 ":channel4"
/** Name of LED channel 5 */
#define MCE_LED_CHANNEL5 ":channel5"
/** Name of LED channel 6 */
#define MCE_LED_CHANNEL6 ":channel6"
/** Name of LED channel 7 */
#define MCE_LED_CHANNEL7 ":channel7"
/** Name of LED channel 8 */
#define MCE_LED_CHANNEL8 ":channel8"
/** Name of Engine 1 */
#define MCE_LED_ENGINE1 "/engine1_"
/** Name of Engine 2 */
#define MCE_LED_ENGINE2 "/engine2_"
/** Name of Engine 3 */
#define MCE_LED_ENGINE3 "/engine3_"
/** LED device suffix */
#define MCE_LED_DEVICE "/device"
/** LED mode suffix */
#define MCE_LED_MODE_SUFFIX "mode"
/** LED load suffix */
#define MCE_LED_LOAD_SUFFIX "load"
/** LED leds suffix */
#define MCE_LED_LEDS_SUFFIX "leds"
/**
* Lysti LED mask for LED 1 (channel 8);
* RM-680/RM-690 monochrome LED
* RX-51 keyboard backlight 6
*/
#define MCE_LYSTI_LED1_MASK (1 << 0)
/**
* Lysti LED mask for LED 2 (channel 7);
* RM-680/RM-690 Monochrome LED behind model name
* RX-51 keyboard backlight 5
*/
#define MCE_LYSTI_LED2_MASK (1 << 1)
/**
* Lysti LED mask for LED 3 (channel 6);
* RM-680/RM-690 Monochrome LED behind model name
* RX-51 red component of RGB LED
*/
#define MCE_LYSTI_LED3_MASK (1 << 2)
/**
* Lysti LED mask for LED 4 (channel 5);
* RM-680/RM-690 monochrome keyboard backlight 6
* RX-51 green component of RGB LED
*/
#define MCE_LYSTI_LED4_MASK (1 << 3)
/**
* Lysti LED mask for LED 5 (channel 4);
* RM-680/RM-690 monochrome keyboard backlight 5
* RX-51 blue component of RGB LED
*/
#define MCE_LYSTI_LED5_MASK (1 << 4)
/**
* Lysti LED mask for LED 6 (channel 3);
* RM-680/RM-690 monochrome keyboard backlight 4
* RX-51 monochrome keyboard backlight 4
*/
#define MCE_LYSTI_LED6_MASK (1 << 5)
/**
* Lysti LED mask for LED 7 (channel 2);
* RM-680/RM-690 monochrome keyboard backlight 3
* RX-51 monochrome keyboard backlight 3
*/
#define MCE_LYSTI_LED7_MASK (1 << 6)
/**
* Lysti LED mask for LED 8 (channel 1);
* RM-680/RM-690 monochrome keyboard backlight 2
* RX-51 monochrome keyboard backlight 2
*/
#define MCE_LYSTI_LED8_MASK (1 << 7)
/**
* Lysti LED mask for LED 9 (channel 0);
* RM-680/RM-690 monochrome keyboard backlight 1
* RX-51 monochrome keyboard backlight 1
*/
#define MCE_LYSTI_LED9_MASK (1 << 8)
/**
* Lysti LED mask for the
* RM-680/RM-690 monochrome power button LED
*/
#define MCE_LYSTI_MONOCHROME_MASK_RM680 MCE_LYSTI_LED1_MASK
/** Lysti LED mask for the RX-51 red RGB LED component */
#define MCE_LYSTI_RED_MASK_RX51 MCE_LYSTI_LED3_MASK
/** Lysti LED mask for the RX-51 green RGB LED component */
#define MCE_LYSTI_GREEN_MASK_RX51 MCE_LYSTI_LED4_MASK
/** Lysti LED mask for the RX-51 blue RGB LED component */
#define MCE_LYSTI_BLUE_MASK_RX51 MCE_LYSTI_LED5_MASK
/** Lysti LED mask for the RX-51 keyboard backlight */
#define MCE_LYSTI_KB_BACKLIGHT_MASK_RX51 (MCE_LYSTI_LED9_MASK | \
MCE_LYSTI_LED8_MASK | \
MCE_LYSTI_LED7_MASK | \
MCE_LYSTI_LED6_MASK | \
MCE_LYSTI_LED2_MASK | \
MCE_LYSTI_LED1_MASK)
/** Lysti LED mask for the RM-680/RM-690 keyboard backlight */
#define MCE_LYSTI_KB_BACKLIGHT_MASK_RM680 (MCE_LYSTI_LED9_MASK | \
MCE_LYSTI_LED8_MASK | \
MCE_LYSTI_LED7_MASK | \
MCE_LYSTI_LED6_MASK | \
MCE_LYSTI_LED5_MASK | \
MCE_LYSTI_LED4_MASK)
/* Brightness levels used by the keypad LED */
#define BRIGHTNESS_LEVEL_0 "0" /**< off */
#define BRIGHTNESS_LEVEL_1 "12" /**< faintest */
#define BRIGHTNESS_LEVEL_2 "24" /**< level 2 */
#define BRIGHTNESS_LEVEL_3 "36" /**< level 3 */
#define BRIGHTNESS_LEVEL_4 "48" /**< level 4 */
#define BRIGHTNESS_LEVEL_5 "60" /**< level 5 */
#define BRIGHTNESS_LEVEL_6 "72" /**< level 6 */
#define BRIGHTNESS_LEVEL_7 "84" /**< level 7 */
#define BRIGHTNESS_LEVEL_8 "96" /**< level 8 */
#define BRIGHTNESS_LEVEL_9 "108" /**< level 9 */
#define BRIGHTNESS_LEVEL_10 "120" /**< level 10 */
#define BRIGHTNESS_LEVEL_11 "132" /**< level 11 */
#define BRIGHTNESS_LEVEL_12 "144" /**< level 12 */
#define BRIGHTNESS_LEVEL_13 "156" /**< level 13 */
#define BRIGHTNESS_LEVEL_14 "168" /**< level 14 */
#define BRIGHTNESS_LEVEL_15 "180" /**< brightest */
#endif /* LED_H_ */