hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/mfd/lm3533-ctrlbank.c
....@@ -1,14 +1,10 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * lm3533-ctrlbank.c -- LM3533 Generic Control Bank interface
34 *
45 * Copyright (C) 2011-2012 Texas Instruments
56 *
67 * Author: Johan Hovold <jhovold@gmail.com>
7
- *
8
- * This program is free software; you can redistribute it and/or modify it
9
- * under the terms of the GNU General Public License as published by the
10
- * Free Software Foundation; either version 2 of the License, or (at your
11
- * option) any later version.
128 */
139
1410 #include <linux/device.h>
....@@ -21,7 +17,6 @@
2117 #define LM3533_MAX_CURRENT_MAX 29800
2218 #define LM3533_MAX_CURRENT_STEP 800
2319
24
-#define LM3533_BRIGHTNESS_MAX 255
2520 #define LM3533_PWM_MAX 0x3f
2621
2722 #define LM3533_REG_PWM_BASE 0x14
....@@ -93,41 +88,33 @@
9388 }
9489 EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_max_current);
9590
96
-#define lm3533_ctrlbank_set(_name, _NAME) \
97
-int lm3533_ctrlbank_set_##_name(struct lm3533_ctrlbank *cb, u8 val) \
98
-{ \
99
- u8 reg; \
100
- int ret; \
101
- \
102
- if (val > LM3533_##_NAME##_MAX) \
103
- return -EINVAL; \
104
- \
105
- reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_##_NAME##_BASE); \
106
- ret = lm3533_write(cb->lm3533, reg, val); \
107
- if (ret) \
108
- dev_err(cb->dev, "failed to set " #_name "\n"); \
109
- \
110
- return ret; \
111
-} \
112
-EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_##_name);
91
+int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank *cb, u8 val)
92
+{
93
+ u8 reg;
94
+ int ret;
11395
114
-#define lm3533_ctrlbank_get(_name, _NAME) \
115
-int lm3533_ctrlbank_get_##_name(struct lm3533_ctrlbank *cb, u8 *val) \
116
-{ \
117
- u8 reg; \
118
- int ret; \
119
- \
120
- reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_##_NAME##_BASE); \
121
- ret = lm3533_read(cb->lm3533, reg, val); \
122
- if (ret) \
123
- dev_err(cb->dev, "failed to get " #_name "\n"); \
124
- \
125
- return ret; \
126
-} \
127
-EXPORT_SYMBOL_GPL(lm3533_ctrlbank_get_##_name);
96
+ reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_BRIGHTNESS_BASE);
97
+ ret = lm3533_write(cb->lm3533, reg, val);
98
+ if (ret)
99
+ dev_err(cb->dev, "failed to set brightness\n");
128100
129
-lm3533_ctrlbank_set(brightness, BRIGHTNESS);
130
-lm3533_ctrlbank_get(brightness, BRIGHTNESS);
101
+ return ret;
102
+}
103
+EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_brightness);
104
+
105
+int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u8 *val)
106
+{
107
+ u8 reg;
108
+ int ret;
109
+
110
+ reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_BRIGHTNESS_BASE);
111
+ ret = lm3533_read(cb->lm3533, reg, val);
112
+ if (ret)
113
+ dev_err(cb->dev, "failed to get brightness\n");
114
+
115
+ return ret;
116
+}
117
+EXPORT_SYMBOL_GPL(lm3533_ctrlbank_get_brightness);
131118
132119 /*
133120 * PWM-input control mask:
....@@ -139,9 +126,36 @@
139126 * bit 1 - PWM-input enabled in Zone 0
140127 * bit 0 - PWM-input enabled
141128 */
142
-lm3533_ctrlbank_set(pwm, PWM);
143
-lm3533_ctrlbank_get(pwm, PWM);
129
+int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb, u8 val)
130
+{
131
+ u8 reg;
132
+ int ret;
144133
134
+ if (val > LM3533_PWM_MAX)
135
+ return -EINVAL;
136
+
137
+ reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_PWM_BASE);
138
+ ret = lm3533_write(cb->lm3533, reg, val);
139
+ if (ret)
140
+ dev_err(cb->dev, "failed to set PWM mask\n");
141
+
142
+ return ret;
143
+}
144
+EXPORT_SYMBOL_GPL(lm3533_ctrlbank_set_pwm);
145
+
146
+int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u8 *val)
147
+{
148
+ u8 reg;
149
+ int ret;
150
+
151
+ reg = lm3533_ctrlbank_get_reg(cb, LM3533_REG_PWM_BASE);
152
+ ret = lm3533_read(cb->lm3533, reg, val);
153
+ if (ret)
154
+ dev_err(cb->dev, "failed to get PWM mask\n");
155
+
156
+ return ret;
157
+}
158
+EXPORT_SYMBOL_GPL(lm3533_ctrlbank_get_pwm);
145159
146160 MODULE_AUTHOR("Johan Hovold <jhovold@gmail.com>");
147161 MODULE_DESCRIPTION("LM3533 Control Bank interface");