Lines Matching +full:- +full:10

1 // SPDX-License-Identifier: GPL-2.0-only
13 #include <sound/soc-component.h>
124 ITEST("Test Control", SINGLE, INTEGER, volsw, 0, 20, -10, 10, 0, 4, 0),
125 ITEST("Test Control", SINGLE, INTEGER, volsw, 0, 15, -10, 10, 15, 4, 0),
126 ITEST("Test Control", SINGLE, INTEGER, volsw, 0, 20, -10, 10, 0, 4, 1),
127 ITEST("Test Control", SINGLE, INTEGER, volsw, 0, 15, -10, 10, 15, 4, 1),
142 ATEST(SINGLE, volsw, 10, 1, false, 0x1F, 0x0A, 0, 20, 0, 0, 0),
145 ATEST(SINGLE, volsw, 10, 1, false, 0x1F, 0x0A, 0, 20, 15, 0, 0),
146 ATEST(SINGLE, volsw, 25, -22, false, 0x1F, 0x00, 0, 20, 15, 0, 0),
149 ATEST(SINGLE, volsw, 10, 1, false, 0x1F, 0x0A, 0, 20, 0, 0, 1),
152 ATEST(SINGLE, volsw, 10, 1, false, 0x1F, 0x0A, 0, 20, 15, 0, 1),
153 ATEST(SINGLE, volsw, 25, -22, false, 0x1F, 0x00, 0, 20, 15, 0, 1),
155 ATEST(SINGLE, volsw, 10, 1, true, 0x1F, 0x0A, 0, 20, 0, 0, 0),
158 ATEST(SINGLE, volsw, 10, 1, true, 0x1F, 0x0A, 0, 20, 15, 0, 0),
159 ATEST(SINGLE, volsw, 25, -22, true, 0x1F, 0x00, 0, 20, 15, 0, 0),
162 ATEST(SINGLE, volsw, 10, 0, false, 0x1F, 0x00, -10, 10, 0, 4, 0),
163 ATEST(SINGLE, volsw, 0, 1, false, 0x1F, 0x16, -10, 10, 0, 4, 0),
164 ATEST(SINGLE, volsw, 20, 1, false, 0x1F, 0x0A, -10, 10, 0, 4, 0),
165 ATEST(SINGLE, volsw, 10, 0, false, 0x1F, 0x00, -10, 10, 15, 4, 0),
166 ATEST(SINGLE, volsw, 25, -22, false, 0x1F, 0x00, -10, 10, 15, 4, 0),
167 ATEST(SINGLE, volsw, 15, 1, false, 0x1F, 0x05, -10, 10, 15, 4, 0),
168 // Single non-zero minimum positive value controls
169 ATEST(SINGLE, volsw, 10, 1, false, 0x1F, 0x14, 10, 30, 0, 0, 0),
170 ATEST(SINGLE, volsw, 0, 1, false, 0x1F, 0x0A, 10, 30, 0, 0, 0),
171 ATEST(SINGLE, volsw, 20, 1, false, 0x1F, 0x1E, 10, 30, 0, 0, 0),
172 ATEST(SINGLE, volsw, 10, 1, false, 0x1F, 0x14, 10, 30, 15, 0, 0),
173 ATEST(SINGLE, volsw, 25, -22, false, 0x1F, 0x00, 10, 30, 15, 0, 0),
174 ATEST(SINGLE, volsw, 15, 1, false, 0x1F, 0x19, 10, 30, 15, 0, 0),
175 // Inverted single non-zero minimum positive value controls
176 ATEST(SINGLE, volsw, 10, 1, false, 0x1F, 0x14, 10, 30, 0, 0, 1),
177 ATEST(SINGLE, volsw, 0, 1, false, 0x1F, 0x1E, 10, 30, 0, 0, 1),
178 ATEST(SINGLE, volsw, 20, 1, false, 0x1F, 0x0A, 10, 30, 0, 0, 1),
179 ATEST(SINGLE, volsw, 10, 1, false, 0x1F, 0x14, 10, 30, 15, 0, 1),
180 ATEST(SINGLE, volsw, 25, -22, false, 0x1F, 0x00, 10, 30, 15, 0, 1),
181 ATEST(SINGLE, volsw, 15, 1, false, 0x1F, 0x0F, 10, 30, 15, 0, 1),
183 ATEST(DOUBLE_R, volsw, 10, 1, false, 0x1F, 0x0A, 0, 20, 0, 0, 0),
186 ATEST(DOUBLE_R, volsw, 10, 1, false, 0x1F, 0x0A, 0, 20, 15, 0, 0),
187 ATEST(DOUBLE_R, volsw, 25, -22, false, 0x1F, 0x00, 0, 20, 15, 0, 0),
190 ATEST(DOUBLE_R, volsw, 10, 0, false, 0x1F, 0x00, -10, 10, 0, 4, 0),
191 ATEST(DOUBLE_R, volsw, 0, 1, false, 0x1F, 0x16, -10, 10, 0, 4, 0),
192 ATEST(DOUBLE_R, volsw, 20, 1, false, 0x1F, 0x0A, -10, 10, 0, 4, 0),
193 ATEST(DOUBLE_R, volsw, 10, 0, false, 0x1F, 0x00, -10, 10, 15, 4, 0),
194 ATEST(DOUBLE_R, volsw, 25, -22, false, 0x1F, 0x00, -10, 10, 15, 4, 0),
195 ATEST(DOUBLE_R, volsw, 15, 1, false, 0x1F, 0x05, -10, 10, 15, 4, 0),
196 ATEST(DOUBLE_R, volsw, 10, 1, true, 0x1F, 0x00, -10, 10, 0, 4, 0),
197 ATEST(DOUBLE_R, volsw, 0, 1, true, 0x1F, 0x16, -10, 10, 0, 4, 0),
198 ATEST(DOUBLE_R, volsw, 20, 1, true, 0x1F, 0x0A, -10, 10, 0, 4, 0),
199 ATEST(DOUBLE_R, volsw, 10, 1, true, 0x1F, 0x00, -10, 10, 15, 4, 0),
200 ATEST(DOUBLE_R, volsw, 25, -22, true, 0x1F, 0x00, -10, 10, 15, 4, 0),
201 ATEST(DOUBLE_R, volsw, 15, 1, true, 0x1F, 0x05, -10, 10, 15, 4, 0),
203 ATEST(DOUBLE_R, volsw, 10, 1, true, 0x1F, 0x00, -10, 10, 0, 4, 1),
204 ATEST(DOUBLE_R, volsw, 0, 1, true, 0x1F, 0x0A, -10, 10, 0, 4, 1),
205 ATEST(DOUBLE_R, volsw, 20, 1, true, 0x1F, 0x16, -10, 10, 0, 4, 1),
206 ATEST(DOUBLE_R, volsw, 10, 1, true, 0x1F, 0x00, -10, 10, 15, 4, 1),
207 ATEST(DOUBLE_R, volsw, 25, -22, true, 0x1F, 0x00, -10, 10, 15, 4, 1),
208 ATEST(DOUBLE_R, volsw, 15, 1, true, 0x1F, 0x1B, -10, 10, 15, 4, 1),
209 // Double register non-zero minimum positive value controls
210 ATEST(DOUBLE_R, volsw, 10, 1, false, 0x1F, 0x14, 10, 30, 0, 0, 0),
211 ATEST(DOUBLE_R, volsw, 0, 1, false, 0x1F, 0x0A, 10, 30, 0, 0, 0),
212 ATEST(DOUBLE_R, volsw, 20, 1, false, 0x1F, 0x1E, 10, 30, 0, 0, 0),
213 ATEST(DOUBLE_R, volsw, 10, 1, false, 0x1F, 0x14, 10, 30, 15, 0, 0),
214 ATEST(DOUBLE_R, volsw, 25, -22, false, 0x1F, 0x00, 10, 30, 15, 0, 0),
215 ATEST(DOUBLE_R, volsw, 15, 1, false, 0x1F, 0x19, 10, 30, 15, 0, 0),
217 ATEST(DOUBLE, volsw, 10, 1, false, 0x1F, 0x0A, 0, 20, 0, 0, 0),
220 ATEST(DOUBLE, volsw, 10, 1, false, 0x1F, 0x0A, 0, 20, 15, 0, 0),
221 ATEST(DOUBLE, volsw, 25, -22, false, 0x1F, 0x00, 0, 20, 15, 0, 0),
224 ATEST(DOUBLE, volsw, 10, 0, false, 0x1F, 0x00, -10, 10, 0, 4, 0),
225 ATEST(DOUBLE, volsw, 0, 1, false, 0x1F, 0x16, -10, 10, 0, 4, 0),
226 ATEST(DOUBLE, volsw, 20, 1, false, 0x1F, 0x0A, -10, 10, 0, 4, 0),
227 ATEST(DOUBLE, volsw, 10, 0, false, 0x1F, 0x00, -10, 10, 15, 4, 0),
228 ATEST(DOUBLE, volsw, 25, -22, false, 0x1F, 0x00, -10, 10, 15, 4, 0),
229 ATEST(DOUBLE, volsw, 15, 1, false, 0x1F, 0x05, -10, 10, 15, 4, 0),
231 ATEST(DOUBLE, volsw, 10, 0, false, 0x1F, 0x00, -10, 10, 0, 4, 1),
232 ATEST(DOUBLE, volsw, 0, 1, false, 0x1F, 0x0A, -10, 10, 0, 4, 1),
233 ATEST(DOUBLE, volsw, 20, 1, false, 0x1F, 0x16, -10, 10, 0, 4, 1),
234 ATEST(DOUBLE, volsw, 10, 0, false, 0x1F, 0x00, -10, 10, 15, 4, 1),
235 ATEST(DOUBLE, volsw, 25, -22, false, 0x1F, 0x00, -10, 10, 15, 4, 1),
236 ATEST(DOUBLE, volsw, 15, 1, false, 0x1F, 0x1B, -10, 10, 15, 4, 1),
237 // Double shift non-zero minimum positive value controls
238 ATEST(DOUBLE, volsw, 10, 1, false, 0x1F, 0x14, 10, 30, 0, 0, 0),
239 ATEST(DOUBLE, volsw, 0, 1, false, 0x1F, 0x0A, 10, 30, 0, 0, 0),
240 ATEST(DOUBLE, volsw, 20, 1, false, 0x1F, 0x1E, 10, 30, 0, 0, 0),
241 ATEST(DOUBLE, volsw, 10, 1, false, 0x1F, 0x14, 10, 30, 15, 0, 0),
242 ATEST(DOUBLE, volsw, 25, -22, false, 0x1F, 0x00, 10, 30, 15, 0, 0),
243 ATEST(DOUBLE, volsw, 15, 1, false, 0x1F, 0x19, 10, 30, 15, 0, 0),
244 ATEST(DOUBLE, volsw, 10, 1, true, 0x1F, 0x14, 10, 30, 0, 0, 0),
245 ATEST(DOUBLE, volsw, 0, 1, true, 0x1F, 0x0A, 10, 30, 0, 0, 0),
246 ATEST(DOUBLE, volsw, 20, 1, true, 0x1F, 0x1E, 10, 30, 0, 0, 0),
247 ATEST(DOUBLE, volsw, 10, 1, true, 0x1F, 0x14, 10, 30, 15, 0, 0),
248 ATEST(DOUBLE, volsw, 25, -22, true, 0x1F, 0x00, 10, 30, 15, 0, 0),
249 ATEST(DOUBLE, volsw, 15, 1, true, 0x1F, 0x19, 10, 30, 15, 0, 0),
256 ATEST(SINGLE, volsw_sx, 5, -22, false, 0xF, 0x00, 0x0F, 4, 0, 0, 0),
262 ATEST(SINGLE, volsw_sx, 5, -22, true, 0xF, 0x00, 0x0F, 4, 0, 0, 0),
269 ATEST(SINGLE, volsw_sx, 5, -22, false, 0x1F, 0x00, 0x0F, 4, 0, 0, 1),
278 ATEST(SINGLE, volsw_sx, 145, -22, false, 0xFF, 0x00, 0x88, 144, 0, 0, 0),
286 ATEST(SINGLE, volsw_sx, 145, -22, true, 0xFF, 0x00, 0x88, 144, 0, 0, 0),
295 ATEST(DOUBLE, volsw_sx, 145, -22, true, 0xFF, 0x00, 0x88, 144, 0, 0, 0),
304 ATEST(DOUBLE_R, volsw_sx, 145, -22, true, 0xFF, 0x00, 0x88, 144, 0, 0, 0),
339 KUNIT_FAIL(priv->test, "Unexpected bus read"); in mock_regmap_read()
341 return -EIO; in mock_regmap_read()
350 KUNIT_FAIL(priv->test, "Unexpected bus gather_write"); in mock_regmap_gather_write()
352 return -EIO; in mock_regmap_gather_write()
360 KUNIT_FAIL(priv->test, "Unexpected bus write"); in mock_regmap_write()
362 return -EIO; in mock_regmap_write()
390 return -ENOMEM; in soc_ops_test_init()
392 priv->test = test; in soc_ops_test_init()
405 priv->component.dev = dev; in soc_ops_test_init()
406 priv->component.regmap = regmap; in soc_ops_test_init()
407 mutex_init(&priv->component.io_mutex); in soc_ops_test_init()
409 test->priv = priv; in soc_ops_test_init()
416 struct soc_ops_test_priv *priv = test->priv; in soc_ops_test_exit()
418 kunit_device_unregister(test, priv->component.dev); in soc_ops_test_exit()
424 "%s %s %s: ctl range: %ld->%ld, reg range: %d->%d(%d), sign: %d, inv: %d", in info_test_desc()
425 control_layout_str(param->layout), param->func_name, in info_test_desc()
426 control_type_str(param->uinfo.type), in info_test_desc()
427 param->uinfo.value.integer.min, param->uinfo.value.integer.max, in info_test_desc()
428 param->mc.min, param->mc.max, param->mc.platform_max, in info_test_desc()
429 param->mc.sign_bit, param->mc.invert); in info_test_desc()
434 struct soc_ops_test_priv *priv = test->priv; in soc_ops_test_info()
435 const struct info_test_param *param = test->param_value; in soc_ops_test_info()
436 const struct snd_ctl_elem_info *target = &param->uinfo; in soc_ops_test_info()
439 .private_data = &priv->component, in soc_ops_test_info()
440 .private_value = (unsigned long)&param->mc, in soc_ops_test_info()
444 strscpy(kctl.id.name, param->name, sizeof(kctl.id.name)); in soc_ops_test_info()
446 ret = param->info(&kctl, &result); in soc_ops_test_info()
449 KUNIT_EXPECT_EQ(test, result.count, target->count); in soc_ops_test_info()
450 KUNIT_EXPECT_EQ(test, result.type, target->type); in soc_ops_test_info()
451 KUNIT_EXPECT_EQ(test, result.value.integer.min, target->value.integer.min); in soc_ops_test_info()
452 KUNIT_EXPECT_EQ(test, result.value.integer.max, target->value.integer.max); in soc_ops_test_info()
457 if (param->ret < 0) { in access_test_desc()
459 "%s %s: %ld,%ld -> range: %d->%d(%d), sign: %d, inv: %d -> err: %d", in access_test_desc()
460 control_layout_str(param->layout), param->func_name, in access_test_desc()
461 param->lctl, param->rctl, in access_test_desc()
462 param->mc.min, param->mc.max, param->mc.platform_max, in access_test_desc()
463 param->mc.sign_bit, param->mc.invert, in access_test_desc()
464 param->ret); in access_test_desc()
467 "%s %s: %ld,%ld -> range: %d->%d(%d), sign: %d, inv: %d -> %#x,%#x", in access_test_desc()
468 control_layout_str(param->layout), param->func_name, in access_test_desc()
469 param->lctl, param->rctl, in access_test_desc()
470 param->mc.min, param->mc.max, param->mc.platform_max, in access_test_desc()
471 param->mc.sign_bit, param->mc.invert, in access_test_desc()
472 param->lreg, param->rreg); in access_test_desc()
478 struct soc_ops_test_priv *priv = test->priv; in soc_ops_test_access()
479 const struct access_test_param *param = test->param_value; in soc_ops_test_access()
481 .private_data = &priv->component, in soc_ops_test_access()
482 .private_value = (unsigned long)&param->mc, in soc_ops_test_access()
493 ret = regmap_write(priv->component.regmap, 0x0, param->init); in soc_ops_test_access()
495 ret = regmap_write(priv->component.regmap, 0x1, param->init); in soc_ops_test_access()
498 result->value.integer.value[0] = param->lctl; in soc_ops_test_access()
499 result->value.integer.value[1] = param->rctl; in soc_ops_test_access()
501 ret = param->put(&kctl, result); in soc_ops_test_access()
502 KUNIT_ASSERT_EQ(test, ret, param->ret); in soc_ops_test_access()
506 ret = regmap_read(priv->component.regmap, 0x0, &val); in soc_ops_test_access()
508 KUNIT_EXPECT_EQ(test, val, (param->init & ~param->lmask) | param->lreg); in soc_ops_test_access()
510 ret = regmap_read(priv->component.regmap, 0x1, &val); in soc_ops_test_access()
512 KUNIT_EXPECT_EQ(test, val, (param->init & ~param->rmask) | param->rreg); in soc_ops_test_access()
514 result->value.integer.value[0] = 0; in soc_ops_test_access()
515 result->value.integer.value[1] = 0; in soc_ops_test_access()
517 ret = param->get(&kctl, result); in soc_ops_test_access()
520 KUNIT_EXPECT_EQ(test, result->value.integer.value[0], param->lctl); in soc_ops_test_access()
521 if (param->layout != SOC_OPS_TEST_SINGLE) in soc_ops_test_access()
522 KUNIT_EXPECT_EQ(test, result->value.integer.value[1], param->rctl); in soc_ops_test_access()
524 KUNIT_EXPECT_EQ(test, result->value.integer.value[1], 0); in soc_ops_test_access()
539 .name = "soc-ops",
547 MODULE_DESCRIPTION("ASoC soc-ops kunit test");