Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jacek Anaszewski and committed by
Lee Jones
a0bc6072 4b5c1f1e

+103 -1
+4 -1
drivers/mfd/max77693.c
··· 44 44 static const struct mfd_cell max77693_devs[] = { 45 45 { .name = "max77693-pmic", }, 46 46 { .name = "max77693-charger", }, 47 - { .name = "max77693-flash", }, 48 47 { .name = "max77693-muic", }, 49 48 { .name = "max77693-haptic", }, 49 + { 50 + .name = "max77693-flash", 51 + .of_compatible = "maxim,max77693-flash", 52 + }, 50 53 }; 51 54 52 55 static const struct regmap_config max77693_regmap_config = {
+59
include/linux/mfd/max77693-private.h
··· 85 85 MAX77693_PMIC_REG_END, 86 86 }; 87 87 88 + /* MAX77693 ITORCH register */ 89 + #define TORCH_IOUT1_SHIFT 0 90 + #define TORCH_IOUT2_SHIFT 4 91 + #define TORCH_IOUT_MIN 15625 92 + #define TORCH_IOUT_MAX 250000 93 + #define TORCH_IOUT_STEP 15625 94 + 95 + /* MAX77693 IFLASH1 and IFLASH2 registers */ 96 + #define FLASH_IOUT_MIN 15625 97 + #define FLASH_IOUT_MAX_1LED 1000000 98 + #define FLASH_IOUT_MAX_2LEDS 625000 99 + #define FLASH_IOUT_STEP 15625 100 + 101 + /* MAX77693 TORCH_TIMER register */ 102 + #define TORCH_TMR_NO_TIMER 0x40 103 + #define TORCH_TIMEOUT_MIN 262000 104 + #define TORCH_TIMEOUT_MAX 15728000 105 + 106 + /* MAX77693 FLASH_TIMER register */ 107 + #define FLASH_TMR_LEVEL 0x80 108 + #define FLASH_TIMEOUT_MIN 62500 109 + #define FLASH_TIMEOUT_MAX 1000000 110 + #define FLASH_TIMEOUT_STEP 62500 111 + 112 + /* MAX77693 FLASH_EN register */ 113 + #define FLASH_EN_OFF 0x0 114 + #define FLASH_EN_FLASH 0x1 115 + #define FLASH_EN_TORCH 0x2 116 + #define FLASH_EN_ON 0x3 117 + #define FLASH_EN_SHIFT(x) (6 - ((x) - 1) * 2) 118 + #define TORCH_EN_SHIFT(x) (2 - ((x) - 1) * 2) 119 + 120 + /* MAX77693 MAX_FLASH1 register */ 121 + #define MAX_FLASH1_MAX_FL_EN 0x80 122 + #define MAX_FLASH1_VSYS_MIN 2400 123 + #define MAX_FLASH1_VSYS_MAX 3400 124 + #define MAX_FLASH1_VSYS_STEP 33 125 + 126 + /* MAX77693 VOUT_CNTL register */ 127 + #define FLASH_BOOST_FIXED 0x04 128 + #define FLASH_BOOST_LEDNUM_2 0x80 129 + 130 + /* MAX77693 VOUT_FLASH1 register */ 131 + #define FLASH_VOUT_MIN 3300 132 + #define FLASH_VOUT_MAX 5500 133 + #define FLASH_VOUT_STEP 25 134 + #define FLASH_VOUT_RMIN 0x0c 135 + 136 + /* MAX77693 FLASH_STATUS register */ 137 + #define FLASH_STATUS_FLASH_ON BIT(3) 138 + #define FLASH_STATUS_TORCH_ON BIT(2) 139 + 140 + /* MAX77693 FLASH_INT register */ 141 + #define FLASH_INT_FLED2_OPEN BIT(0) 142 + #define FLASH_INT_FLED2_SHORT BIT(1) 143 + #define FLASH_INT_FLED1_OPEN BIT(2) 144 + #define FLASH_INT_FLED1_SHORT BIT(3) 145 + #define FLASH_INT_OVER_CURRENT BIT(4) 146 + 88 147 /* MAX77693 CHG_CNFG_00 register */ 89 148 #define CHG_CNFG_00_CHG_MASK 0x1 90 149 #define CHG_CNFG_00_BUCK_MASK 0x4
+40
include/linux/mfd/max77693.h
··· 63 63 int path_uart; 64 64 }; 65 65 66 + /* MAX77693 led flash */ 67 + 68 + /* triggers */ 69 + enum max77693_led_trigger { 70 + MAX77693_LED_TRIG_OFF, 71 + MAX77693_LED_TRIG_FLASH, 72 + MAX77693_LED_TRIG_TORCH, 73 + MAX77693_LED_TRIG_EXT, 74 + MAX77693_LED_TRIG_SOFT, 75 + }; 76 + 77 + /* trigger types */ 78 + enum max77693_led_trigger_type { 79 + MAX77693_LED_TRIG_TYPE_EDGE, 80 + MAX77693_LED_TRIG_TYPE_LEVEL, 81 + }; 82 + 83 + /* boost modes */ 84 + enum max77693_led_boost_mode { 85 + MAX77693_LED_BOOST_NONE, 86 + MAX77693_LED_BOOST_ADAPTIVE, 87 + MAX77693_LED_BOOST_FIXED, 88 + }; 89 + 90 + struct max77693_led_platform_data { 91 + u32 fleds[2]; 92 + u32 iout_torch[2]; 93 + u32 iout_flash[2]; 94 + u32 trigger[2]; 95 + u32 trigger_type[2]; 96 + u32 num_leds; 97 + u32 boost_mode; 98 + u32 flash_timeout; 99 + u32 boost_vout; 100 + u32 low_vsys; 101 + }; 102 + 103 + /* MAX77693 */ 104 + 66 105 struct max77693_platform_data { 67 106 /* regulator data */ 68 107 struct max77693_regulator_data *regulators; ··· 109 70 110 71 /* muic data */ 111 72 struct max77693_muic_platform_data *muic_data; 73 + struct max77693_led_platform_data *led_data; 112 74 }; 113 75 #endif /* __LINUX_MFD_MAX77693_H */