/* * 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 #include #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__ */