diff options
author | Jacek Anaszewski <j.anaszewski@samsung.com> | 2014-08-22 05:06:18 -0400 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2014-09-26 03:15:43 -0400 |
commit | a0bc607208e295f70d0355fa4e632a0c8c27533b (patch) | |
tree | c81be289f8d82eecfa41b6faa75f94812a7e36da | |
parent | 4b5c1f1e080f79c3c226596047a20ccd1c8a9486 (diff) |
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>
-rw-r--r-- | drivers/mfd/max77693.c | 5 | ||||
-rw-r--r-- | include/linux/mfd/max77693-private.h | 59 | ||||
-rw-r--r-- | include/linux/mfd/max77693.h | 40 |
3 files changed, 103 insertions, 1 deletions
diff --git a/drivers/mfd/max77693.c b/drivers/mfd/max77693.c index 249c139ef04a..cf008f45968c 100644 --- a/drivers/mfd/max77693.c +++ b/drivers/mfd/max77693.c | |||
@@ -44,9 +44,12 @@ | |||
44 | static const struct mfd_cell max77693_devs[] = { | 44 | static const struct mfd_cell max77693_devs[] = { |
45 | { .name = "max77693-pmic", }, | 45 | { .name = "max77693-pmic", }, |
46 | { .name = "max77693-charger", }, | 46 | { .name = "max77693-charger", }, |
47 | { .name = "max77693-flash", }, | ||
48 | { .name = "max77693-muic", }, | 47 | { .name = "max77693-muic", }, |
49 | { .name = "max77693-haptic", }, | 48 | { .name = "max77693-haptic", }, |
49 | { | ||
50 | .name = "max77693-flash", | ||
51 | .of_compatible = "maxim,max77693-flash", | ||
52 | }, | ||
50 | }; | 53 | }; |
51 | 54 | ||
52 | static const struct regmap_config max77693_regmap_config = { | 55 | static const struct regmap_config max77693_regmap_config = { |
diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h index 615f12141854..de063773f3b1 100644 --- a/include/linux/mfd/max77693-private.h +++ b/include/linux/mfd/max77693-private.h | |||
@@ -85,6 +85,65 @@ enum max77693_pmic_reg { | |||
85 | MAX77693_PMIC_REG_END, | 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 | /* MAX77693 CHG_CNFG_00 register */ | 147 | /* MAX77693 CHG_CNFG_00 register */ |
89 | #define CHG_CNFG_00_CHG_MASK 0x1 | 148 | #define CHG_CNFG_00_CHG_MASK 0x1 |
90 | #define CHG_CNFG_00_BUCK_MASK 0x4 | 149 | #define CHG_CNFG_00_BUCK_MASK 0x4 |
diff --git a/include/linux/mfd/max77693.h b/include/linux/mfd/max77693.h index 3f3dc45f93ee..f0b6585cd874 100644 --- a/include/linux/mfd/max77693.h +++ b/include/linux/mfd/max77693.h | |||
@@ -63,6 +63,45 @@ struct max77693_muic_platform_data { | |||
63 | int path_uart; | 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 | struct max77693_platform_data { | 105 | struct max77693_platform_data { |
67 | /* regulator data */ | 106 | /* regulator data */ |
68 | struct max77693_regulator_data *regulators; | 107 | struct max77693_regulator_data *regulators; |
@@ -70,5 +109,6 @@ struct max77693_platform_data { | |||
70 | 109 | ||
71 | /* muic data */ | 110 | /* muic data */ |
72 | struct max77693_muic_platform_data *muic_data; | 111 | struct max77693_muic_platform_data *muic_data; |
112 | struct max77693_led_platform_data *led_data; | ||
73 | }; | 113 | }; |
74 | #endif /* __LINUX_MFD_MAX77693_H */ | 114 | #endif /* __LINUX_MFD_MAX77693_H */ |