109 lines
2.2 KiB
C
Executable File
109 lines
2.2 KiB
C
Executable File
/*
|
|
* sm5713.h - mfd driver for SM5713.
|
|
*
|
|
* Copyright (C) 2017 Samsung Electronics
|
|
*
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef __SM5713_H__
|
|
#define __SM5713_H__
|
|
#include <linux/platform_device.h>
|
|
#include <linux/regmap.h>
|
|
|
|
#define MFD_DEV_NAME "sm5713"
|
|
|
|
#define MAX_TORCH_LEVELS_5713 5
|
|
|
|
struct sm5713_regulator_data {
|
|
int id;
|
|
struct regulator_init_data *initdata;
|
|
struct device_node *reg_node;
|
|
};
|
|
|
|
struct sm5713_platform_data {
|
|
/* IRQ */
|
|
int irq_base;
|
|
int irq_gpio;
|
|
bool wakeup;
|
|
|
|
/* USBLDO */
|
|
struct sm5713_regulator_data *regulators;
|
|
int num_regulators;
|
|
|
|
struct mfd_cell *sub_devices;
|
|
int num_subdevs;
|
|
};
|
|
|
|
/* For SM5713 Flash LED */
|
|
enum sm5713_fled_mode {
|
|
SM5713_FLED_MODE_OFF = 1,
|
|
SM5713_FLED_MODE_MAIN_FLASH,
|
|
SM5713_FLED_MODE_TORCH_FLASH,
|
|
SM5713_FLED_MODE_PREPARE_FLASH,
|
|
SM5713_FLED_MODE_CLOSE_FLASH,
|
|
SM5713_FLED_MODE_PRE_FLASH,
|
|
};
|
|
|
|
enum {
|
|
FLED_MODE_OFF = 0x0,
|
|
FLED_MODE_TORCH = 0x1,
|
|
FLED_MODE_FLASH = 0x2,
|
|
FLED_MODE_EXTERNAL = 0x3,
|
|
};
|
|
|
|
enum {
|
|
SM5713_FLED_INDEX_1 = 0,
|
|
SM5713_FLED_INDEX_2 = 1,
|
|
SM5713_FLED_INDEX_3 = 2,
|
|
SM5713_FLED_MAX_NUM,
|
|
};
|
|
|
|
typedef struct sm5713_fled_platform_data_tag {
|
|
struct {
|
|
const char *name;
|
|
u8 flash_brightness;
|
|
u8 preflash_brightness;
|
|
u8 torch_brightness;
|
|
bool apply_torch_brightness_control;
|
|
u32 torch_brightness_levels[MAX_TORCH_LEVELS_5713];
|
|
u8 timeout;
|
|
|
|
int fen_pin; /* GPIO-pin for Flash */
|
|
int men_pin; /* GPIO-pin for Torch */
|
|
|
|
bool used_gpio_ctrl;
|
|
int sysfs_input_data; //ys1978
|
|
|
|
bool pre_fled;
|
|
bool en_fled;
|
|
bool en_mled;
|
|
} led[SM5713_FLED_MAX_NUM];
|
|
#if defined (CONFIG_LEDS_SM5713_DUAL_LED)
|
|
u32 torch_index_cnt[MAX_TORCH_LEVELS_5713];
|
|
u32 torch_index[MAX_TORCH_LEVELS_5713][SM5713_FLED_MAX_NUM];
|
|
#endif
|
|
} sm5713_fled_platform_data;
|
|
|
|
struct sm5713_fled_data {
|
|
struct device *dev;
|
|
struct i2c_client *i2c;
|
|
struct mutex fled_mutex;
|
|
|
|
sm5713_fled_platform_data *pdata;
|
|
struct device *rear_fled_dev;
|
|
|
|
int vbus_voltage;
|
|
u8 torch_on_cnt;
|
|
u8 flash_on_cnt;
|
|
u8 flash_prepare_cnt;
|
|
};
|
|
|
|
extern int32_t sm5713_fled_mode_ctrl(u8 fled_index, int state);
|
|
|
|
#endif /* __SM5713_H__ */
|
|
|