162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci* Simple driver for Texas Instruments LM3630 LED Flash driver chip
462306a36Sopenharmony_ci* Copyright (C) 2012 Texas Instruments
562306a36Sopenharmony_ci*/
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef __LINUX_LM3639_H
862306a36Sopenharmony_ci#define __LINUX_LM3639_H
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define LM3639_NAME "lm3639_bl"
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cienum lm3639_pwm {
1362306a36Sopenharmony_ci	LM3639_PWM_DISABLE = 0x00,
1462306a36Sopenharmony_ci	LM3639_PWM_EN_ACTLOW = 0x48,
1562306a36Sopenharmony_ci	LM3639_PWM_EN_ACTHIGH = 0x40,
1662306a36Sopenharmony_ci};
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cienum lm3639_strobe {
1962306a36Sopenharmony_ci	LM3639_STROBE_DISABLE = 0x00,
2062306a36Sopenharmony_ci	LM3639_STROBE_EN_ACTLOW = 0x10,
2162306a36Sopenharmony_ci	LM3639_STROBE_EN_ACTHIGH = 0x30,
2262306a36Sopenharmony_ci};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cienum lm3639_txpin {
2562306a36Sopenharmony_ci	LM3639_TXPIN_DISABLE = 0x00,
2662306a36Sopenharmony_ci	LM3639_TXPIN_EN_ACTLOW = 0x04,
2762306a36Sopenharmony_ci	LM3639_TXPIN_EN_ACTHIGH = 0x0C,
2862306a36Sopenharmony_ci};
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cienum lm3639_fleds {
3162306a36Sopenharmony_ci	LM3639_FLED_DIASBLE_ALL = 0x00,
3262306a36Sopenharmony_ci	LM3639_FLED_EN_1 = 0x40,
3362306a36Sopenharmony_ci	LM3639_FLED_EN_2 = 0x20,
3462306a36Sopenharmony_ci	LM3639_FLED_EN_ALL = 0x60,
3562306a36Sopenharmony_ci};
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cienum lm3639_bleds {
3862306a36Sopenharmony_ci	LM3639_BLED_DIASBLE_ALL = 0x00,
3962306a36Sopenharmony_ci	LM3639_BLED_EN_1 = 0x10,
4062306a36Sopenharmony_ci	LM3639_BLED_EN_2 = 0x08,
4162306a36Sopenharmony_ci	LM3639_BLED_EN_ALL = 0x18,
4262306a36Sopenharmony_ci};
4362306a36Sopenharmony_cienum lm3639_bled_mode {
4462306a36Sopenharmony_ci	LM3639_BLED_MODE_EXPONETIAL = 0x00,
4562306a36Sopenharmony_ci	LM3639_BLED_MODE_LINEAR = 0x10,
4662306a36Sopenharmony_ci};
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_cistruct lm3639_platform_data {
4962306a36Sopenharmony_ci	unsigned int max_brt_led;
5062306a36Sopenharmony_ci	unsigned int init_brt_led;
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	/* input pins */
5362306a36Sopenharmony_ci	enum lm3639_pwm pin_pwm;
5462306a36Sopenharmony_ci	enum lm3639_strobe pin_strobe;
5562306a36Sopenharmony_ci	enum lm3639_txpin pin_tx;
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	/* output pins */
5862306a36Sopenharmony_ci	enum lm3639_fleds fled_pins;
5962306a36Sopenharmony_ci	enum lm3639_bleds bled_pins;
6062306a36Sopenharmony_ci	enum lm3639_bled_mode bled_mode;
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci	void (*pwm_set_intensity) (int brightness, int max_brightness);
6362306a36Sopenharmony_ci	int (*pwm_get_intensity) (void);
6462306a36Sopenharmony_ci};
6562306a36Sopenharmony_ci#endif /* __LINUX_LM3639_H */
66