1*d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 20f59858dSG.Shark Jeong /* 30f59858dSG.Shark Jeong * Simple driver for Texas Instruments LM3630 LED Flash driver chip 40f59858dSG.Shark Jeong * Copyright (C) 2012 Texas Instruments 50f59858dSG.Shark Jeong */ 60f59858dSG.Shark Jeong 70f59858dSG.Shark Jeong #ifndef __LINUX_LM3639_H 80f59858dSG.Shark Jeong #define __LINUX_LM3639_H 90f59858dSG.Shark Jeong 100f59858dSG.Shark Jeong #define LM3639_NAME "lm3639_bl" 110f59858dSG.Shark Jeong 120f59858dSG.Shark Jeong enum lm3639_pwm { 130f59858dSG.Shark Jeong LM3639_PWM_DISABLE = 0x00, 140f59858dSG.Shark Jeong LM3639_PWM_EN_ACTLOW = 0x48, 150f59858dSG.Shark Jeong LM3639_PWM_EN_ACTHIGH = 0x40, 160f59858dSG.Shark Jeong }; 170f59858dSG.Shark Jeong 180f59858dSG.Shark Jeong enum lm3639_strobe { 190f59858dSG.Shark Jeong LM3639_STROBE_DISABLE = 0x00, 200f59858dSG.Shark Jeong LM3639_STROBE_EN_ACTLOW = 0x10, 210f59858dSG.Shark Jeong LM3639_STROBE_EN_ACTHIGH = 0x30, 220f59858dSG.Shark Jeong }; 230f59858dSG.Shark Jeong 240f59858dSG.Shark Jeong enum lm3639_txpin { 250f59858dSG.Shark Jeong LM3639_TXPIN_DISABLE = 0x00, 260f59858dSG.Shark Jeong LM3639_TXPIN_EN_ACTLOW = 0x04, 270f59858dSG.Shark Jeong LM3639_TXPIN_EN_ACTHIGH = 0x0C, 280f59858dSG.Shark Jeong }; 290f59858dSG.Shark Jeong 300f59858dSG.Shark Jeong enum lm3639_fleds { 310f59858dSG.Shark Jeong LM3639_FLED_DIASBLE_ALL = 0x00, 320f59858dSG.Shark Jeong LM3639_FLED_EN_1 = 0x40, 330f59858dSG.Shark Jeong LM3639_FLED_EN_2 = 0x20, 340f59858dSG.Shark Jeong LM3639_FLED_EN_ALL = 0x60, 350f59858dSG.Shark Jeong }; 360f59858dSG.Shark Jeong 370f59858dSG.Shark Jeong enum lm3639_bleds { 380f59858dSG.Shark Jeong LM3639_BLED_DIASBLE_ALL = 0x00, 390f59858dSG.Shark Jeong LM3639_BLED_EN_1 = 0x10, 400f59858dSG.Shark Jeong LM3639_BLED_EN_2 = 0x08, 410f59858dSG.Shark Jeong LM3639_BLED_EN_ALL = 0x18, 420f59858dSG.Shark Jeong }; 430f59858dSG.Shark Jeong enum lm3639_bled_mode { 440f59858dSG.Shark Jeong LM3639_BLED_MODE_EXPONETIAL = 0x00, 450f59858dSG.Shark Jeong LM3639_BLED_MODE_LINEAR = 0x10, 460f59858dSG.Shark Jeong }; 470f59858dSG.Shark Jeong 480f59858dSG.Shark Jeong struct lm3639_platform_data { 490f59858dSG.Shark Jeong unsigned int max_brt_led; 500f59858dSG.Shark Jeong unsigned int init_brt_led; 510f59858dSG.Shark Jeong 520f59858dSG.Shark Jeong /* input pins */ 530f59858dSG.Shark Jeong enum lm3639_pwm pin_pwm; 540f59858dSG.Shark Jeong enum lm3639_strobe pin_strobe; 550f59858dSG.Shark Jeong enum lm3639_txpin pin_tx; 560f59858dSG.Shark Jeong 570f59858dSG.Shark Jeong /* output pins */ 580f59858dSG.Shark Jeong enum lm3639_fleds fled_pins; 590f59858dSG.Shark Jeong enum lm3639_bleds bled_pins; 600f59858dSG.Shark Jeong enum lm3639_bled_mode bled_mode; 610f59858dSG.Shark Jeong 620f59858dSG.Shark Jeong void (*pwm_set_intensity) (int brightness, int max_brightness); 630f59858dSG.Shark Jeong int (*pwm_get_intensity) (void); 640f59858dSG.Shark Jeong }; 650f59858dSG.Shark Jeong #endif /* __LINUX_LM3639_H */ 66