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

mfd: lm3533: Expand control-bank accessors

Expand the control-bank accessors that were implemented using macros.
This allows the definitions of these exported functions to be found more
easily and specifically avoids a W=1 compiler warning due to the
redundant brightness sanity check:

drivers/mfd/lm3533-ctrlbank.c: In function 'lm3533_ctrlbank_set_brightness':
drivers/mfd/lm3533-ctrlbank.c:98:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
98 | if (val > LM3533_##_NAME##_MAX) \
| ^
drivers/mfd/lm3533-ctrlbank.c:125:1: note: in expansion of macro 'lm3533_ctrlbank_set'
125 | lm3533_ctrlbank_set(brightness, BRIGHTNESS);
| ^~~~~~~~~~~~~~~~~~~

Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>

authored by

Johan Hovold and committed by
Lee Jones
4d3ec936 f1d8fe2e

+54 -36
+54 -36
drivers/mfd/lm3533-ctrlbank.c
··· 17 17 #define LM3533_MAX_CURRENT_MAX 29800 18 18 #define LM3533_MAX_CURRENT_STEP 800 19 19 20 - #define LM3533_BRIGHTNESS_MAX 255 21 20 #define LM3533_PWM_MAX 0x3f 22 21 23 22 #define LM3533_REG_PWM_BASE 0x14 ··· 88 89 } 89 90 EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_max_current); 90 91 91 - #define lm3533_ctrlbank_set(_name, _NAME) \ 92 - int lm3533_ctrlbank_set_##_name(struct lm3533_ctrlbank *cb, u8 val) \ 93 - { \ 94 - u8 reg; \ 95 - int ret; \ 96 - \ 97 - if (val > LM3533_##_NAME##_MAX) \ 98 - return -EINVAL; \ 99 - \ 100 - reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_##_NAME##_BASE); \ 101 - ret = lm3533_write(cb->lm3533, reg, val); \ 102 - if (ret) \ 103 - dev_err(cb->dev, "failed to set " #_name "\n"); \ 104 - \ 105 - return ret; \ 106 - } \ 107 - EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_##_name); 92 + int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank *cb, u8 val) 93 + { 94 + u8 reg; 95 + int ret; 108 96 109 - #define lm3533_ctrlbank_get(_name, _NAME) \ 110 - int lm3533_ctrlbank_get_##_name(struct lm3533_ctrlbank *cb, u8 *val) \ 111 - { \ 112 - u8 reg; \ 113 - int ret; \ 114 - \ 115 - reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_##_NAME##_BASE); \ 116 - ret = lm3533_read(cb->lm3533, reg, val); \ 117 - if (ret) \ 118 - dev_err(cb->dev, "failed to get " #_name "\n"); \ 119 - \ 120 - return ret; \ 121 - } \ 122 - EXPORT_SYMBOL_GPL(lm3533_ctrlbank_get_##_name); 97 + reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_BRIGHTNESS_BASE); 98 + ret = lm3533_write(cb->lm3533, reg, val); 99 + if (ret) 100 + dev_err(cb->dev, "failed to set brightness\n"); 123 101 124 - lm3533_ctrlbank_set(brightness, BRIGHTNESS); 125 - lm3533_ctrlbank_get(brightness, BRIGHTNESS); 102 + return ret; 103 + } 104 + EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_brightness); 105 + 106 + int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u8 *val) 107 + { 108 + u8 reg; 109 + int ret; 110 + 111 + reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_BRIGHTNESS_BASE); 112 + ret = lm3533_read(cb->lm3533, reg, val); 113 + if (ret) 114 + dev_err(cb->dev, "failed to get brightness\n"); 115 + 116 + return ret; 117 + } 118 + EXPORT_SYMBOL_GPL(lm3533_ctrlbank_get_brightness); 126 119 127 120 /* 128 121 * PWM-input control mask: ··· 126 135 * bit 1 - PWM-input enabled in Zone 0 127 136 * bit 0 - PWM-input enabled 128 137 */ 129 - lm3533_ctrlbank_set(pwm, PWM); 130 - lm3533_ctrlbank_get(pwm, PWM); 138 + int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb, u8 val) 139 + { 140 + u8 reg; 141 + int ret; 131 142 143 + if (val > LM3533_PWM_MAX) 144 + return -EINVAL; 145 + 146 + reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_PWM_BASE); 147 + ret = lm3533_write(cb->lm3533, reg, val); 148 + if (ret) 149 + dev_err(cb->dev, "failed to set PWM mask\n"); 150 + 151 + return ret; 152 + } 153 + EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_pwm); 154 + 155 + int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u8 *val) 156 + { 157 + u8 reg; 158 + int ret; 159 + 160 + reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_PWM_BASE); 161 + ret = lm3533_read(cb->lm3533, reg, val); 162 + if (ret) 163 + dev_err(cb->dev, "failed to get PWM mask\n"); 164 + 165 + return ret; 166 + } 167 + EXPORT_SYMBOL_GPL(lm3533_ctrlbank_get_pwm); 132 168 133 169 MODULE_AUTHOR("Johan Hovold <jhovold@gmail.com>"); 134 170 MODULE_DESCRIPTION("LM3533 Control Bank interface");