Re: [PATCH v3 2/3] media: i2c: dw9719: Update DW9800K driver

From: kernel test robot

Date: Thu Nov 05 2026 - 14:22:13 EST


Hi Griffin,

kernel test robot noticed the following build errors:

[auto build test ERROR on bc71431221f5ba8bb33918399552636e059c2c45]

url: https://github.com/intel-lab-lkp/linux/commits/Griffin-Kroah-Hartman/dt-bindings-media-i2c-dw9800-Redocument-DW9800K/20261105-112900
base: bc71431221f5ba8bb33918399552636e059c2c45
patch link: https://lore.kernel.org/r/20261105-b4-dw9800k_cleanup-v3-2-6850ee6a5a5a%40fairphone.com
patch subject: [PATCH v3 2/3] media: i2c: dw9719: Update DW9800K driver
config: nios2-randconfig-1001-20261105 (https://download.01.org/0day-ci/archive/20261106/202611060251.DGnOao2F-lkp@xxxxxxxxx/config)
compiler: nios2-linux-gcc (GCC) 10.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261106/202611060251.DGnOao2F-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202611060251.DGnOao2F-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

drivers/media/i2c/dw9719.c: In function 'dw9719_power_up':
>> drivers/media/i2c/dw9719.c:207:3: error: a label can only be part of a statement and a declaration is not a statement
207 | int ring, sac;
| ^~~


vim +207 drivers/media/i2c/dw9719.c

122
123 static int dw9719_power_up(struct dw9719_device *dw9719, bool detect)
124 {
125 u32 reg_pwr = dw9719->model == DW9718S ? DW9718S_PD : DW9719_CONTROL;
126 u64 val;
127 int ret;
128 int err;
129
130 ret = regulator_enable(dw9719->regulator);
131 if (ret)
132 return ret;
133
134 /*
135 * Need 100us to transition from SHUTDOWN to STANDBY.
136 * Jiggle the SCL pin to wake up the device (even when the regulator is
137 * shared) and wait double the time to be sure, as 100us is not enough
138 * at least on the DW9718S as found on the motorola-nora smartphone,
139 * then retry the write.
140 */
141 cci_write(dw9719->regmap, reg_pwr, DW9719_STANDBY, NULL);
142 /* the jiggle is expected to fail, don't even log that as error */
143 fsleep(200);
144 cci_write(dw9719->regmap, reg_pwr, DW9719_STANDBY, &ret);
145
146 if (detect) {
147 /* These models do not have an INFO register */
148 switch (dw9719->model) {
149 case DW9718S:
150 dw9719->sac_mode = DW9718S_DEFAULT_SAC;
151 dw9719->vcm_freq = DW9718S_DEFAULT_VCM_FREQ;
152 goto props;
153 default:
154 break;
155 }
156
157 ret = cci_read(dw9719->regmap, DW9719_INFO, &val, NULL);
158 if (ret < 0)
159 return ret;
160
161 switch (val) {
162 case DW9719_ID:
163 dw9719->model = DW9719;
164 dw9719->mode_low_bits = 0x00;
165 dw9719->sac_mode = DW9719_DEFAULT_SAC;
166 dw9719->vcm_freq = DW9719_DEFAULT_VCM_FREQ;
167 break;
168 case DW9761_ID:
169 dw9719->model = DW9761;
170 dw9719->mode_low_bits = 0x01;
171 dw9719->sac_mode = DW9761_DEFAULT_SAC;
172 dw9719->vcm_freq = DW9761_DEFAULT_VCM_FREQ;
173 break;
174 case DW9800K_ID:
175 dw9719->sac_mode = DW9800K_DEFAULT_SAC;
176 dw9719->vcm_freq = DW9800K_DEFAULT_DIV;
177 dw9719->sac_time = DW9800K_DEFAULT_SACT;
178 break;
179 default:
180 dev_err(dw9719->dev,
181 "Error unknown device id 0x%02llx\n", val);
182 return -ENXIO;
183 }
184
185 props:
186 /* Optional indication of SAC mode select */
187 device_property_read_u32(dw9719->dev, "dongwoon,sac-mode",
188 &dw9719->sac_mode);
189
190 /* Optional indication of VCM frequency */
191 err = device_property_read_u32(dw9719->dev, "dongwoon,vcm-freq",
192 &dw9719->vcm_freq);
193 if (err == 0)
194 dev_warn(dw9719->dev, "dongwoon,vcm-freq property is deprecated, please use dongwoon,vcm-prescale\n");
195
196 /* Optional indication of VCM prescale */
197 device_property_read_u32(dw9719->dev, "dongwoon,vcm-prescale",
198 &dw9719->vcm_freq);
199
200 /* Optional indication of SAC timing */
201 device_property_read_u32(dw9719->dev, "dongwoon,timing-control",
202 &dw9719->sac_time);
203 }
204
205 switch (dw9719->model) {
206 case DW9800K:
> 207 int ring, sac;
208
209 /*
210 * Enable ringing for SAC3-SAC5
211 *
212 * sac_mode reg Mode
213 * ===========================
214 * 0 0X Direct
215 * 1 1X LSC
216 * 2 00 SAC2
217 * 3 01 SAC3
218 * 4 10 SAC4
219 * 5 11 SAC5
220 */
221 switch (dw9719->sac_mode) {
222 case 0:
223 ring = 0;
224 sac = 0;
225 break;
226 case 1:
227 ring = 0;
228 sac = 2;
229 break;
230 default:
231 ring = DW9719_ENABLE_RINGING;
232 sac = dw9719->sac_mode - 2;
233 break;
234 }
235 cci_write(dw9719->regmap, DW9719_CONTROL, ring, &ret);
236 /* DIV is 3 bits split over the bottom bit in reg 6 and the top 2 bits in reg 7 */
237 cci_write(dw9719->regmap, DW9719_MODE,
238 (sac << DW9800K_MODE_SAC_SHIFT) |
239 (dw9719->vcm_freq >> DW9800K_DIV_LOW_SHIFT), &ret);
240 cci_write(dw9719->regmap, DW9800K_RESONANCE,
241 (dw9719->vcm_freq << DW9800K_DIV_SHIFT) |
242 dw9719->sac_time, &ret);
243 break;
244 case DW9718S:
245 /* Datasheet says [OCP/UVLO] should be disabled below 2.5V */
246 dw9719->sac_mode &= DW9718S_CONTROL_SAC_MASK;
247 cci_write(dw9719->regmap, DW9718S_CONTROL,
248 DW9718S_CONTROL_SW_LINEAR |
249 (dw9719->sac_mode << DW9718S_CONTROL_SAC_SHIFT) |
250 DW9718S_CONTROL_OCP_DISABLE |
251 DW9718S_CONTROL_UVLO_DISABLE, &ret);
252 cci_write(dw9719->regmap, DW9718S_SACT,
253 DW9718S_SACT_PERIOD_8_8MS, &ret);
254 cci_write(dw9719->regmap, DW9718S_SW,
255 dw9719->vcm_freq & DW9718S_SW_VCM_FREQ_MASK, &ret);
256 break;
257 case DW9761:
258 cci_write(dw9719->regmap, DW9761_VCM_PRELOAD,
259 DW9761_DEFAULT_VCM_PRELOAD, &ret);
260 fallthrough;
261 case DW9719:
262 cci_write(dw9719->regmap, DW9719_CONTROL, DW9719_ENABLE_RINGING, &ret);
263 cci_write(dw9719->regmap, DW9719_MODE, dw9719->mode_low_bits |
264 (dw9719->sac_mode << DW9719_MODE_SAC_SHIFT), &ret);
265 cci_write(dw9719->regmap, DW9719_VCM_FREQ, dw9719->vcm_freq, &ret);
266 }
267
268 if (ret)
269 dw9719_power_down(dw9719);
270
271 return ret;
272 }
273

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki