mfd: max77693: Improve support for the flash cell
This patch improves support for the flash cell of max77693 mfd by adding relevant of_compatible field and a structure for caching related platform data. Added are also FLASH registers related macro definitions. Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
4b5c1f1e08
commit
a0bc607208
3 changed files with 103 additions and 1 deletions
|
@ -44,9 +44,12 @@
|
|||
static const struct mfd_cell max77693_devs[] = {
|
||||
{ .name = "max77693-pmic", },
|
||||
{ .name = "max77693-charger", },
|
||||
{ .name = "max77693-flash", },
|
||||
{ .name = "max77693-muic", },
|
||||
{ .name = "max77693-haptic", },
|
||||
{
|
||||
.name = "max77693-flash",
|
||||
.of_compatible = "maxim,max77693-flash",
|
||||
},
|
||||
};
|
||||
|
||||
static const struct regmap_config max77693_regmap_config = {
|
||||
|
|
|
@ -85,6 +85,65 @@ enum max77693_pmic_reg {
|
|||
MAX77693_PMIC_REG_END,
|
||||
};
|
||||
|
||||
/* MAX77693 ITORCH register */
|
||||
#define TORCH_IOUT1_SHIFT 0
|
||||
#define TORCH_IOUT2_SHIFT 4
|
||||
#define TORCH_IOUT_MIN 15625
|
||||
#define TORCH_IOUT_MAX 250000
|
||||
#define TORCH_IOUT_STEP 15625
|
||||
|
||||
/* MAX77693 IFLASH1 and IFLASH2 registers */
|
||||
#define FLASH_IOUT_MIN 15625
|
||||
#define FLASH_IOUT_MAX_1LED 1000000
|
||||
#define FLASH_IOUT_MAX_2LEDS 625000
|
||||
#define FLASH_IOUT_STEP 15625
|
||||
|
||||
/* MAX77693 TORCH_TIMER register */
|
||||
#define TORCH_TMR_NO_TIMER 0x40
|
||||
#define TORCH_TIMEOUT_MIN 262000
|
||||
#define TORCH_TIMEOUT_MAX 15728000
|
||||
|
||||
/* MAX77693 FLASH_TIMER register */
|
||||
#define FLASH_TMR_LEVEL 0x80
|
||||
#define FLASH_TIMEOUT_MIN 62500
|
||||
#define FLASH_TIMEOUT_MAX 1000000
|
||||
#define FLASH_TIMEOUT_STEP 62500
|
||||
|
||||
/* MAX77693 FLASH_EN register */
|
||||
#define FLASH_EN_OFF 0x0
|
||||
#define FLASH_EN_FLASH 0x1
|
||||
#define FLASH_EN_TORCH 0x2
|
||||
#define FLASH_EN_ON 0x3
|
||||
#define FLASH_EN_SHIFT(x) (6 - ((x) - 1) * 2)
|
||||
#define TORCH_EN_SHIFT(x) (2 - ((x) - 1) * 2)
|
||||
|
||||
/* MAX77693 MAX_FLASH1 register */
|
||||
#define MAX_FLASH1_MAX_FL_EN 0x80
|
||||
#define MAX_FLASH1_VSYS_MIN 2400
|
||||
#define MAX_FLASH1_VSYS_MAX 3400
|
||||
#define MAX_FLASH1_VSYS_STEP 33
|
||||
|
||||
/* MAX77693 VOUT_CNTL register */
|
||||
#define FLASH_BOOST_FIXED 0x04
|
||||
#define FLASH_BOOST_LEDNUM_2 0x80
|
||||
|
||||
/* MAX77693 VOUT_FLASH1 register */
|
||||
#define FLASH_VOUT_MIN 3300
|
||||
#define FLASH_VOUT_MAX 5500
|
||||
#define FLASH_VOUT_STEP 25
|
||||
#define FLASH_VOUT_RMIN 0x0c
|
||||
|
||||
/* MAX77693 FLASH_STATUS register */
|
||||
#define FLASH_STATUS_FLASH_ON BIT(3)
|
||||
#define FLASH_STATUS_TORCH_ON BIT(2)
|
||||
|
||||
/* MAX77693 FLASH_INT register */
|
||||
#define FLASH_INT_FLED2_OPEN BIT(0)
|
||||
#define FLASH_INT_FLED2_SHORT BIT(1)
|
||||
#define FLASH_INT_FLED1_OPEN BIT(2)
|
||||
#define FLASH_INT_FLED1_SHORT BIT(3)
|
||||
#define FLASH_INT_OVER_CURRENT BIT(4)
|
||||
|
||||
/* MAX77693 CHG_CNFG_00 register */
|
||||
#define CHG_CNFG_00_CHG_MASK 0x1
|
||||
#define CHG_CNFG_00_BUCK_MASK 0x4
|
||||
|
|
|
@ -63,6 +63,45 @@ struct max77693_muic_platform_data {
|
|||
int path_uart;
|
||||
};
|
||||
|
||||
/* MAX77693 led flash */
|
||||
|
||||
/* triggers */
|
||||
enum max77693_led_trigger {
|
||||
MAX77693_LED_TRIG_OFF,
|
||||
MAX77693_LED_TRIG_FLASH,
|
||||
MAX77693_LED_TRIG_TORCH,
|
||||
MAX77693_LED_TRIG_EXT,
|
||||
MAX77693_LED_TRIG_SOFT,
|
||||
};
|
||||
|
||||
/* trigger types */
|
||||
enum max77693_led_trigger_type {
|
||||
MAX77693_LED_TRIG_TYPE_EDGE,
|
||||
MAX77693_LED_TRIG_TYPE_LEVEL,
|
||||
};
|
||||
|
||||
/* boost modes */
|
||||
enum max77693_led_boost_mode {
|
||||
MAX77693_LED_BOOST_NONE,
|
||||
MAX77693_LED_BOOST_ADAPTIVE,
|
||||
MAX77693_LED_BOOST_FIXED,
|
||||
};
|
||||
|
||||
struct max77693_led_platform_data {
|
||||
u32 fleds[2];
|
||||
u32 iout_torch[2];
|
||||
u32 iout_flash[2];
|
||||
u32 trigger[2];
|
||||
u32 trigger_type[2];
|
||||
u32 num_leds;
|
||||
u32 boost_mode;
|
||||
u32 flash_timeout;
|
||||
u32 boost_vout;
|
||||
u32 low_vsys;
|
||||
};
|
||||
|
||||
/* MAX77693 */
|
||||
|
||||
struct max77693_platform_data {
|
||||
/* regulator data */
|
||||
struct max77693_regulator_data *regulators;
|
||||
|
@ -70,5 +109,6 @@ struct max77693_platform_data {
|
|||
|
||||
/* muic data */
|
||||
struct max77693_muic_platform_data *muic_data;
|
||||
struct max77693_led_platform_data *led_data;
|
||||
};
|
||||
#endif /* __LINUX_MFD_MAX77693_H */
|
||||
|
|
Loading…
Reference in a new issue