123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- /*
- * leds-S2MPB02.h - Flash-led driver for Samsung S2MPB02
- *
- * Copyright (C) 2014 Samsung Electronics
- * XXX <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This driver is based on leds-max77804.h
- */
- #ifndef __LEDS_S2MPB02_H__
- #define __LEDS_S2MPB02_H__
- #define S2MPB02_FLED_CHANNEL_1 /* GPIOs connected to FLASH_EN1, TORCH_EN1 */
- //#define S2MPB02_FLED_CHANNEL_2 /* GPIOs connected to FLASH_EN2, TORCH_EN2 */
- //#define S2MPB02_FLED_CONTROLED_BY_GPIO 1
- #define S2MPB02_FLASH_TORCH_CURRENT_MAX 0xF
- #define S2MPB02_TIMEOUT_MAX 0xF
- /* S2MPB02_LV_SEL_VOUT */
- #define S2MPB02_LV_SEL_VOUT_MASK 0x07
- #define S2MPB02_LV_SEL_VOLT(mV) \
- ((mV) <= 2700 ? 0x00 : \
- ((mV) <= 3400 ? ((mV) - 2700) / 100 : 0x07))
- #define S2MPB02_FLASH_MASK 0xF0
- #define S2MPB02_TORCH_MASK 0x0F
- #define S2MPB02_FLED_ENABLE 1
- #define S2MPB02_FLED_DISABLE 0
- #define S2MPB02_FLED_ENABLE_SHIFT 7
- #define S2MPB02_FLED_FLASH_MODE 0
- #define S2MPB02_FLED_TORCH_MODE 1
- #define S2MPB02_FLED_MODE_SHIFT 6
- /* S2MPB02_LV_EN */
- #define S2MPB02_FLED_CTRL1_LV_EN_MASK 0x08
- #define S2MPB02_FLED_CTRL1_LV_ENABLE 1
- #define S2MPB02_FLED_CTRL1_LV_DISABLE 0
- #define S2MPB02_FLED_ENABLE_MODE_MASK 0xC0
- #define S2MPB02_FLED2_MAX_TIME_MASK 0x1F
- #define S2MPB02_FLED2_MAX_TIME_CLEAR_MASK 0x04
- #define S2MPB02_FLED2_MAX_TIME_EN_MASK 0x01
- #define S2MPB02_FLED2_IRON2_MASK 0xC0
- #define S2MPB02_FLASH_STEP_MA 100
- #define S2MPB02_TORCH_STEP_MA 20
- enum s2mpb02_led_id {
- S2MPB02_FLASH_LED_1,
- S2MPB02_TORCH_LED_1,
- S2MPB02_LED_MAX,
- };
- enum s2mpb02_flash_current {
- S2MPB02_FLASH_OUT_I_100MA = 1,
- S2MPB02_FLASH_OUT_I_200MA,
- S2MPB02_FLASH_OUT_I_300MA,
- S2MPB02_FLASH_OUT_I_400MA,
- S2MPB02_FLASH_OUT_I_500MA,
- S2MPB02_FLASH_OUT_I_600MA,
- S2MPB02_FLASH_OUT_I_700MA,
- S2MPB02_FLASH_OUT_I_800MA,
- S2MPB02_FLASH_OUT_I_900MA,
- S2MPB02_FLASH_OUT_I_1000MA,
- S2MPB02_FLASH_OUT_I_1100MA,
- S2MPB02_FLASH_OUT_I_1200MA,
- S2MPB02_FLASH_OUT_I_1300MA,
- S2MPB02_FLASH_OUT_I_1400MA,
- S2MPB02_FLASH_OUT_I_1500MA,
- S2MPB02_FLASH_OUT_I_MAX,
- };
- enum s2mpb02_torch_current {
- S2MPB02_TORCH_OUT_I_20MA = 1,
- S2MPB02_TORCH_OUT_I_40MA,
- S2MPB02_TORCH_OUT_I_60MA,
- S2MPB02_TORCH_OUT_I_80MA,
- S2MPB02_TORCH_OUT_I_100MA,
- S2MPB02_TORCH_OUT_I_120MA,
- S2MPB02_TORCH_OUT_I_140MA,
- S2MPB02_TORCH_OUT_I_160MA,
- S2MPB02_TORCH_OUT_I_180MA,
- S2MPB02_TORCH_OUT_I_200MA,
- S2MPB02_TORCH_OUT_I_220MA,
- S2MPB02_TORCH_OUT_I_240MA,
- S2MPB02_TORCH_OUT_I_260MA,
- S2MPB02_TORCH_OUT_I_280MA,
- S2MPB02_TORCH_OUT_I_300MA,
- S2MPB02_TORCH_OUT_I_MAX,
- };
- enum s2mpb02_flash_timeout {
- S2MPB02_FLASH_TIMEOUT_62P5MS,
- S2MPB02_FLASH_TIMEOUT_125MS,
- S2MPB02_FLASH_TIMEOUT_187P5MS,
- S2MPB02_FLASH_TIMEOUT_250MS,
- S2MPB02_FLASH_TIMEOUT_312P5MS,
- S2MPB02_FLASH_TIMEOUT_375MS,
- S2MPB02_FLASH_TIMEOUT_437P5MS,
- S2MPB02_FLASH_TIMEOUT_500MS,
- S2MPB02_FLASH_TIMEOUT_562P5MS,
- S2MPB02_FLASH_TIMEOUT_625MS,
- S2MPB02_FLASH_TIMEOUT_687P5MS,
- S2MPB02_FLASH_TIMEOUT_750MS,
- S2MPB02_FLASH_TIMEOUT_812P5MS,
- S2MPB02_FLASH_TIMEOUT_875MS,
- S2MPB02_FLASH_TIMEOUT_937P5MS,
- S2MPB02_FLASH_TIMEOUT_1000MS,
- S2MPB02_FLASH_TIMEOUT_MAX,
- };
- enum s2mpb02_torch_timeout {
- S2MPB02_TORCH_TIMEOUT_1S,
- S2MPB02_TORCH_TIMEOUT_2S,
- S2MPB02_TORCH_TIMEOUT_3S,
- S2MPB02_TORCH_TIMEOUT_4S,
- S2MPB02_TORCH_TIMEOUT_5S,
- S2MPB02_TORCH_TIMEOUT_6S,
- S2MPB02_TORCH_TIMEOUT_7S,
- S2MPB02_TORCH_TIMEOUT_8S,
- S2MPB02_TORCH_TIMEOUT_9S,
- S2MPB02_TORCH_TIMEOUT_10S,
- S2MPB02_TORCH_TIMEOUT_11S,
- S2MPB02_TORCH_TIMEOUT_12S,
- S2MPB02_TORCH_TIMEOUT_13S,
- S2MPB02_TORCH_TIMEOUT_14S,
- S2MPB02_TORCH_TIMEOUT_15S,
- S2MPB02_TORCH_TIMEOUT_16S,
- S2MPB02_TORCH_TIMEOUT_MAX,
- };
- enum s2mpb02_led_turn_way {
- S2MPB02_LED_TURN_WAY_I2C,
- S2MPB02_LED_TURN_WAY_GPIO,
- S2MPB02_LED_TURN_WAY_MAX,
- };
- struct s2mpb02_led {
- const char *name;
- int id;
- int brightness;
- int timeout;
- const char *default_trigger; /* Trigger to use */
- uint32_t gpio;
- };
- struct s2mpb02_led_platform_data {
- int num_leds;
- struct s2mpb02_led leds[S2MPB02_LED_MAX];
- };
- extern int s2mpb02_led_en(int mode, int onoff, enum s2mpb02_led_turn_way turn_way);
- extern ssize_t s2mpb02_store(const char *buf);
- extern ssize_t s2mpb02_show(char *buf);
- #if defined(CONFIG_SAMSUNG_SECURE_CAMERA)
- extern int s2mpb02_ir_led_init(void);
- extern int s2mpb02_ir_led_current(int32_t current_value);
- extern int s2mpb02_ir_led_pulse_width(int32_t width);
- extern int s2mpb02_ir_led_pulse_delay(int32_t delay);
- extern int s2mpb02_ir_led_max_time(int32_t max_time);
- #endif
- #endif
|