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