include/sound/cs35l56.h
382
static inline int cs35l56_init_config_for_spi(struct cs35l56_base *cs35l56,
include/sound/cs35l56.h
394
static inline bool cs35l56_is_spi(struct cs35l56_base *cs35l56)
include/sound/cs35l56.h
411
int cs35l56_set_asp_patch(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
412
int cs35l56_set_patch(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
413
int cs35l56_mbox_send(struct cs35l56_base *cs35l56_base, unsigned int command);
include/sound/cs35l56.h
414
int cs35l56_firmware_shutdown(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
415
int cs35l56_wait_for_firmware_boot(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
418
void cs35l56_system_reset(struct cs35l56_base *cs35l56_base, bool is_soundwire);
include/sound/cs35l56.h
419
int cs35l56_irq_request(struct cs35l56_base *cs35l56_base, int irq);
include/sound/cs35l56.h
421
int cs35l56_is_fw_reload_needed(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
422
int cs35l56_runtime_suspend_common(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
423
int cs35l56_runtime_resume_common(struct cs35l56_base *cs35l56_base, bool is_soundwire);
include/sound/cs35l56.h
424
void cs35l56_init_cs_dsp(struct cs35l56_base *cs35l56_base, struct cs_dsp *cs_dsp);
include/sound/cs35l56.h
425
int cs35l56_get_calibration(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
426
int cs35l56_stash_calibration(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
428
ssize_t cs35l56_calibrate_debugfs_write(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
431
ssize_t cs35l56_cal_ambient_debugfs_write(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
434
ssize_t cs35l56_cal_data_debugfs_read(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
437
ssize_t cs35l56_cal_data_debugfs_write(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
440
int cs35l56_factory_calibrate(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
441
void cs35l56_create_cal_debugfs(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
443
void cs35l56_remove_cal_debugfs(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
444
int cs35l56_cal_set_status_get(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
446
int cs35l56_read_prot_status(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
448
void cs35l56_warn_if_firmware_missing(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
449
void cs35l56_log_tuning(struct cs35l56_base *cs35l56_base, struct cs_dsp *cs_dsp);
include/sound/cs35l56.h
450
int cs35l56_hw_init(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
451
int cs35l56_get_speaker_id(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
452
int cs35l56_check_and_save_onchip_spkid_gpios(struct cs35l56_base *cs35l56_base,
include/sound/cs35l56.h
455
int cs35l56_configure_onchip_spkid_pads(struct cs35l56_base *cs35l56_base);
include/sound/cs35l56.h
456
int cs35l56_read_onchip_spkid(struct cs35l56_base *cs35l56_base);
sound/hda/codecs/side-codecs/cs35l56_hda.c
700
struct cs35l56_base *cs35l56_base = file->private_data;
sound/hda/codecs/side-codecs/cs35l56_hda.c
703
PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(cs35l56_base->dev, pm);
sound/hda/codecs/side-codecs/cs35l56_hda.c
708
return cs35l56_calibrate_debugfs_write(cs35l56_base, from, count, ppos);
sound/hda/codecs/side-codecs/cs35l56_hda.c
715
struct cs35l56_base *cs35l56_base = file->private_data;
sound/hda/codecs/side-codecs/cs35l56_hda.c
718
PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(cs35l56_base->dev, pm);
sound/hda/codecs/side-codecs/cs35l56_hda.c
723
return cs35l56_cal_ambient_debugfs_write(cs35l56_base, from, count, ppos);
sound/hda/codecs/side-codecs/cs35l56_hda.c
730
struct cs35l56_base *cs35l56_base = file->private_data;
sound/hda/codecs/side-codecs/cs35l56_hda.c
733
PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(cs35l56_base->dev, pm);
sound/hda/codecs/side-codecs/cs35l56_hda.c
738
return cs35l56_cal_data_debugfs_read(cs35l56_base, to, count, ppos);
sound/hda/codecs/side-codecs/cs35l56_hda.c
745
struct cs35l56_base *cs35l56_base = file->private_data;
sound/hda/codecs/side-codecs/cs35l56_hda.c
746
struct cs35l56_hda *cs35l56 = cs35l56_hda_from_base(cs35l56_base);
sound/hda/codecs/side-codecs/cs35l56_hda.c
749
ret = cs35l56_cal_data_debugfs_write(cs35l56_base, from, count, ppos);
sound/hda/codecs/side-codecs/cs35l56_hda.c
756
PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(cs35l56_base->dev, pm);
sound/hda/codecs/side-codecs/cs35l56_hda.c
763
cs35l56_mbox_send(cs35l56_base, CS35L56_MBOX_CMD_AUDIO_REINIT);
sound/hda/codecs/side-codecs/cs35l56_hda.h
24
struct cs35l56_base base;
sound/hda/codecs/side-codecs/cs35l56_hda.h
47
static inline struct cs35l56_hda *cs35l56_hda_from_base(struct cs35l56_base *cs35l56_base)
sound/hda/codecs/side-codecs/cs35l56_hda.h
49
return container_of(cs35l56_base, struct cs35l56_hda, base);
sound/soc/codecs/cs35l56-shared-test.c
250
struct cs35l56_base *cs35l56_base = priv->cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
263
KUNIT_ASSERT_EQ(test, 0, regmap_read(cs35l56_base->regmap, CS35L56_GPIO_STATUS1, &val));
sound/soc/codecs/cs35l56-shared-test.c
270
KUNIT_ASSERT_EQ(test, 0, regmap_read(cs35l56_base->regmap, CS35L56_GPIO_STATUS1, &val));
sound/soc/codecs/cs35l56-shared-test.c
277
KUNIT_ASSERT_EQ(test, 0, regmap_read(cs35l56_base->regmap, CS35L56_GPIO_STATUS1, &val));
sound/soc/codecs/cs35l56-shared-test.c
286
KUNIT_ASSERT_EQ(test, 0, regmap_read(cs35l56_base->regmap, CS35L56_GPIO_STATUS1, &val));
sound/soc/codecs/cs35l56-shared-test.c
293
KUNIT_ASSERT_EQ(test, 0, regmap_read(cs35l56_base->regmap, CS35L56_GPIO_STATUS1, &val));
sound/soc/codecs/cs35l56-shared-test.c
302
struct cs35l56_base *cs35l56_base = priv->cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
317
cs35l56_base->onchip_spkid_gpios[i] = param->spkid_gpios[i] - 1;
sound/soc/codecs/cs35l56-shared-test.c
318
cs35l56_base->num_onchip_spkid_gpios++;
sound/soc/codecs/cs35l56-shared-test.c
321
cs35l56_base->num_onchip_spkid_pulls = 0;
sound/soc/codecs/cs35l56-shared-test.c
323
KUNIT_EXPECT_EQ(test, cs35l56_configure_onchip_spkid_pads(cs35l56_base), 0);
sound/soc/codecs/cs35l56-shared-test.c
324
KUNIT_EXPECT_EQ(test, cs35l56_read_onchip_spkid(cs35l56_base), param->spkid);
sound/soc/codecs/cs35l56-shared-test.c
33
struct cs35l56_base *cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
332
struct cs35l56_base *cs35l56_base = priv->cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
347
cs35l56_base->onchip_spkid_gpios[i] = param->spkid_gpios[i] - 1;
sound/soc/codecs/cs35l56-shared-test.c
348
cs35l56_base->num_onchip_spkid_gpios++;
sound/soc/codecs/cs35l56-shared-test.c
356
cs35l56_base->onchip_spkid_pulls[i] = param->spkid_pulls[i];
sound/soc/codecs/cs35l56-shared-test.c
357
cs35l56_base->num_onchip_spkid_pulls++;
sound/soc/codecs/cs35l56-shared-test.c
360
KUNIT_EXPECT_EQ(test, cs35l56_configure_onchip_spkid_pads(cs35l56_base), 0);
sound/soc/codecs/cs35l56-shared-test.c
372
if (i < cs35l56_base->num_onchip_spkid_pulls) {
sound/soc/codecs/cs35l56-shared-test.c
382
if (i < cs35l56_base->num_onchip_spkid_pulls) {
sound/soc/codecs/cs35l56-shared-test.c
399
struct cs35l56_base *cs35l56_base = priv->cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
424
cs35l56_base->num_onchip_spkid_gpios = 0;
sound/soc/codecs/cs35l56-shared-test.c
425
cs35l56_base->num_onchip_spkid_pulls = 0;
sound/soc/codecs/cs35l56-shared-test.c
427
KUNIT_ASSERT_LE(test, num_gpios, ARRAY_SIZE(cs35l56_base->onchip_spkid_gpios));
sound/soc/codecs/cs35l56-shared-test.c
428
KUNIT_ASSERT_LE(test, num_pulls, ARRAY_SIZE(cs35l56_base->onchip_spkid_pulls));
sound/soc/codecs/cs35l56-shared-test.c
431
cs35l56_check_and_save_onchip_spkid_gpios(cs35l56_base,
sound/soc/codecs/cs35l56-shared-test.c
436
KUNIT_EXPECT_EQ(test, cs35l56_base->num_onchip_spkid_gpios, num_gpios);
sound/soc/codecs/cs35l56-shared-test.c
437
KUNIT_EXPECT_EQ(test, cs35l56_base->num_onchip_spkid_pulls, num_pulls);
sound/soc/codecs/cs35l56-shared-test.c
441
KUNIT_EXPECT_EQ(test, cs35l56_base->onchip_spkid_gpios[i], gpios[i] - 1);
sound/soc/codecs/cs35l56-shared-test.c
444
KUNIT_EXPECT_EQ(test, cs35l56_base->onchip_spkid_pulls[i], pulls[i]);
sound/soc/codecs/cs35l56-shared-test.c
451
struct cs35l56_base *cs35l56_base = priv->cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
455
cs35l56_check_and_save_onchip_spkid_gpios(cs35l56_base,
sound/soc/codecs/cs35l56-shared-test.c
460
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared-test.c
470
kunit_fail_current_test("Unsupported type:%#x\n", cs35l56_base->type);
sound/soc/codecs/cs35l56-shared-test.c
474
cs35l56_check_and_save_onchip_spkid_gpios(cs35l56_base,
sound/soc/codecs/cs35l56-shared-test.c
482
cs35l56_check_and_save_onchip_spkid_gpios(cs35l56_base,
sound/soc/codecs/cs35l56-shared-test.c
487
static_assert(ARRAY_SIZE(gpios) > ARRAY_SIZE(cs35l56_base->onchip_spkid_gpios));
sound/soc/codecs/cs35l56-shared-test.c
488
static_assert(ARRAY_SIZE(pulls) > ARRAY_SIZE(cs35l56_base->onchip_spkid_pulls));
sound/soc/codecs/cs35l56-shared-test.c
490
cs35l56_check_and_save_onchip_spkid_gpios(cs35l56_base,
sound/soc/codecs/cs35l56-shared-test.c
495
cs35l56_check_and_save_onchip_spkid_gpios(cs35l56_base,
sound/soc/codecs/cs35l56-shared-test.c
504
struct cs35l56_base *cs35l56_base = priv->cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
506
memset(cs35l56_base->onchip_spkid_gpios, 0, sizeof(cs35l56_base->onchip_spkid_gpios));
sound/soc/codecs/cs35l56-shared-test.c
507
memset(cs35l56_base->onchip_spkid_pulls, 0, sizeof(cs35l56_base->onchip_spkid_pulls));
sound/soc/codecs/cs35l56-shared-test.c
508
cs35l56_base->num_onchip_spkid_gpios = 0;
sound/soc/codecs/cs35l56-shared-test.c
509
cs35l56_base->num_onchip_spkid_pulls = 0;
sound/soc/codecs/cs35l56-shared-test.c
510
KUNIT_EXPECT_EQ(test, cs35l56_configure_onchip_spkid_pads(cs35l56_base), 0);
sound/soc/codecs/cs35l56-shared-test.c
511
KUNIT_EXPECT_EQ(test, cs35l56_read_onchip_spkid(cs35l56_base), -ENOENT);
sound/soc/codecs/cs35l56-shared-test.c
528
KUNIT_EXPECT_EQ(test, cs35l56_get_speaker_id(priv->cs35l56_base), 1);
sound/soc/codecs/cs35l56-shared-test.c
540
KUNIT_ASSERT_EQ(test, device_add_software_node(priv->cs35l56_base->dev, &dev_node), 0);
sound/soc/codecs/cs35l56-shared-test.c
544
priv->cs35l56_base->dev));
sound/soc/codecs/cs35l56-shared-test.c
546
KUNIT_EXPECT_EQ(test, cs35l56_get_speaker_id(priv->cs35l56_base), 2);
sound/soc/codecs/cs35l56-shared-test.c
586
priv->cs35l56_base->dev));
sound/soc/codecs/cs35l56-shared-test.c
593
struct cs35l56_base *cs35l56_base = priv->cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
611
_cs35l56_shared_test_create_spkid_swnode(test, cs35l56_base->dev, ref, i);
sound/soc/codecs/cs35l56-shared-test.c
614
KUNIT_EXPECT_EQ(test, cs35l56_get_speaker_id(priv->cs35l56_base), param->spkid);
sound/soc/codecs/cs35l56-shared-test.c
621
struct cs35l56_base *cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
638
cs35l56_base = priv->cs35l56_base;
sound/soc/codecs/cs35l56-shared-test.c
639
cs35l56_base->regmap = regmap_init(cs35l56_base->dev,
sound/soc/codecs/cs35l56-shared-test.c
643
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cs35l56_base->regmap);
sound/soc/codecs/cs35l56-shared-test.c
646
cs35l56_base->regmap));
sound/soc/codecs/cs35l56-shared-test.c
674
priv->cs35l56_base = kunit_kzalloc(test, sizeof(*priv->cs35l56_base), GFP_KERNEL);
sound/soc/codecs/cs35l56-shared-test.c
675
KUNIT_ASSERT_NOT_NULL(test, priv->cs35l56_base);
sound/soc/codecs/cs35l56-shared-test.c
676
priv->cs35l56_base->dev = &priv->amp_dev->dev;
sound/soc/codecs/cs35l56-shared-test.c
677
priv->cs35l56_base->type = type;
sound/soc/codecs/cs35l56-shared-test.c
678
priv->cs35l56_base->rev = rev;
sound/soc/codecs/cs35l56-shared.c
1003
cs35l56_base->cal_data = *data;
sound/soc/codecs/cs35l56-shared.c
1004
cs35l56_base->cal_data_valid = true;
sound/soc/codecs/cs35l56-shared.c
1010
static int cs35l56_perform_calibration(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
1013
cs35l56_base->calibration_controls;
sound/soc/codecs/cs35l56-shared.c
1014
struct cs_dsp *dsp = cs35l56_base->dsp;
sound/soc/codecs/cs35l56-shared.c
1023
if (cs35l56_base->silicon_uid == 0) {
sound/soc/codecs/cs35l56-shared.c
1024
dev_err(cs35l56_base->dev, "Cannot calibrate: no silicon UID\n");
sound/soc/codecs/cs35l56-shared.c
1028
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared.c
1032
if (cs35l56_base->rev < 0xb2) {
sound/soc/codecs/cs35l56-shared.c
1046
ret = pm_runtime_resume_and_get(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
1050
ret = cs35l56_wait_for_ps3(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1056
regmap_update_bits_check(cs35l56_base->regmap, CS35L56_MIXER_NGATE_CH1_CFG,
sound/soc/codecs/cs35l56-shared.c
1058
regmap_update_bits_check(cs35l56_base->regmap, CS35L56_MIXER_NGATE_CH2_CFG,
sound/soc/codecs/cs35l56-shared.c
1067
dev_err(cs35l56_base->dev, "Could not get %s control\n",
sound/soc/codecs/cs35l56-shared.c
1080
dev_err(cs35l56_base->dev, "Could not write %s: %d\n", "CALI_NORM_EN", ret);
sound/soc/codecs/cs35l56-shared.c
1085
ret = cs35l56_mbox_send(cs35l56_base, CS35L56_MBOX_CMD_AUDIO_CALIBRATION);
sound/soc/codecs/cs35l56-shared.c
1097
dev_err(cs35l56_base->dev, "Calibration timed out (CAL_STATUS: %u)\n",
sound/soc/codecs/cs35l56-shared.c
1110
cs35l56_base->cal_data_valid = false;
sound/soc/codecs/cs35l56-shared.c
1118
dev_info(cs35l56_base->dev, "Cal status:%d calR:%d ambient:%d\n",
sound/soc/codecs/cs35l56-shared.c
1121
cal_data.calTarget[0] = (u32)cs35l56_base->silicon_uid;
sound/soc/codecs/cs35l56-shared.c
1122
cal_data.calTarget[1] = (u32)(cs35l56_base->silicon_uid >> 32);
sound/soc/codecs/cs35l56-shared.c
1123
cs35l56_base->cal_data = cal_data;
sound/soc/codecs/cs35l56-shared.c
1124
cs35l56_base->cal_data_valid = true;
sound/soc/codecs/cs35l56-shared.c
1130
regmap_set_bits(cs35l56_base->regmap, CS35L56_MIXER_NGATE_CH1_CFG,
sound/soc/codecs/cs35l56-shared.c
1134
regmap_set_bits(cs35l56_base->regmap, CS35L56_MIXER_NGATE_CH2_CFG,
sound/soc/codecs/cs35l56-shared.c
1138
pm_runtime_put(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
1143
ssize_t cs35l56_calibrate_debugfs_write(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1163
ret = cs35l56_perform_calibration(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1168
if (!cs35l56_base->cal_data_valid)
sound/soc/codecs/cs35l56-shared.c
1171
num_amps = cs35l56_base->num_amps;
sound/soc/codecs/cs35l56-shared.c
1175
ret = cs_amp_set_efi_calibration_data(cs35l56_base->dev,
sound/soc/codecs/cs35l56-shared.c
1176
cs35l56_base->cal_index,
sound/soc/codecs/cs35l56-shared.c
1178
&cs35l56_base->cal_data);
sound/soc/codecs/cs35l56-shared.c
1190
int cs35l56_factory_calibrate(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
1195
return cs35l56_perform_calibration(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1199
ssize_t cs35l56_cal_ambient_debugfs_write(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1212
ret = pm_runtime_resume_and_get(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
1220
ret = cs_amp_write_ambient_temp(cs35l56_base->dsp, cs35l56_base->calibration_controls, val);
sound/soc/codecs/cs35l56-shared.c
1224
pm_runtime_put(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
1233
ssize_t cs35l56_cal_data_debugfs_read(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1240
if (!cs35l56_base->cal_data_valid)
sound/soc/codecs/cs35l56-shared.c
1243
return simple_read_from_buffer(to, count, ppos, &cs35l56_base->cal_data,
sound/soc/codecs/cs35l56-shared.c
1244
sizeof(cs35l56_base->cal_data));
sound/soc/codecs/cs35l56-shared.c
1248
ssize_t cs35l56_cal_data_debugfs_write(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1266
ret = cs35l56_stash_calibration(cs35l56_base, &cal_data);
sound/soc/codecs/cs35l56-shared.c
1274
void cs35l56_create_cal_debugfs(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1280
cs35l56_base->debugfs = cs_amp_create_debugfs(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
1283
0200, cs35l56_base->debugfs, cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1286
0200, cs35l56_base->debugfs, cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1289
0644, cs35l56_base->debugfs, cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1294
void cs35l56_remove_cal_debugfs(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
1296
debugfs_remove_recursive(cs35l56_base->debugfs);
sound/soc/codecs/cs35l56-shared.c
1297
cs35l56_base->debugfs = ERR_PTR(-ENOENT);
sound/soc/codecs/cs35l56-shared.c
1306
int cs35l56_cal_set_status_get(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1309
struct cs_dsp *dsp = cs35l56_base->dsp;
sound/soc/codecs/cs35l56-shared.c
1314
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared.c
1349
int cs35l56_read_prot_status(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1355
ret = regmap_read(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
1356
cs35l56_base->fw_reg->prot_sts, &prot_status);
sound/soc/codecs/cs35l56-shared.c
1358
dev_err(cs35l56_base->dev, "Get PROTECTION_STATUS failed: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
1364
ret = regmap_read(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
1365
cs35l56_base->fw_reg->fw_ver, fw_version);
sound/soc/codecs/cs35l56-shared.c
1367
dev_err(cs35l56_base->dev, "Get FW VER failed: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
1375
void cs35l56_warn_if_firmware_missing(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
1381
ret = cs35l56_read_prot_status(cs35l56_base, &firmware_missing, &firmware_version);
sound/soc/codecs/cs35l56-shared.c
1388
dev_warn(cs35l56_base->dev, "FIRMWARE_MISSING\n");
sound/soc/codecs/cs35l56-shared.c
1392
void cs35l56_log_tuning(struct cs35l56_base *cs35l56_base, struct cs_dsp *cs_dsp)
sound/soc/codecs/cs35l56-shared.c
1398
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared.c
1424
dev_warn(cs35l56_base->dev, "Can't read tuning IDs");
sound/soc/codecs/cs35l56-shared.c
1426
dev_info(cs35l56_base->dev, "Tuning PID: %#x, SID: %#x, TID: %#x\n",
sound/soc/codecs/cs35l56-shared.c
1431
int cs35l56_hw_init(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
1442
if (!cs35l56_base->reset_gpio)
sound/soc/codecs/cs35l56-shared.c
1443
cs35l56_issue_wake_event(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1447
ret = regmap_read_bypassed(cs35l56_base->regmap, CS35L56_REVID, &revid);
sound/soc/codecs/cs35l56-shared.c
1449
dev_err(cs35l56_base->dev, "Get Revision ID failed\n");
sound/soc/codecs/cs35l56-shared.c
1452
cs35l56_base->rev = revid & (CS35L56_AREVID_MASK | CS35L56_MTLREVID_MASK);
sound/soc/codecs/cs35l56-shared.c
1453
cs35l56_set_fw_reg_table(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1455
ret = cs35l56_wait_for_firmware_boot(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1459
ret = regmap_read_bypassed(cs35l56_base->regmap, CS35L56_DEVID, &devid);
sound/soc/codecs/cs35l56-shared.c
1461
dev_err(cs35l56_base->dev, "Get Device ID failed\n");
sound/soc/codecs/cs35l56-shared.c
1470
cs35l56_base->calibration_controls = &cs35l56_calibration_controls;
sound/soc/codecs/cs35l56-shared.c
1473
cs35l56_base->calibration_controls = &cs35l63_calibration_controls;
sound/soc/codecs/cs35l56-shared.c
1477
dev_err(cs35l56_base->dev, "Unknown device %x\n", devid);
sound/soc/codecs/cs35l56-shared.c
1481
cs35l56_base->type = devid & 0xFF;
sound/soc/codecs/cs35l56-shared.c
1484
regcache_cache_only(cs35l56_base->regmap, false);
sound/soc/codecs/cs35l56-shared.c
1486
ret = regmap_read(cs35l56_base->regmap, CS35L56_DSP_RESTRICT_STS1, &secured);
sound/soc/codecs/cs35l56-shared.c
1488
dev_err(cs35l56_base->dev, "Get Secure status failed\n");
sound/soc/codecs/cs35l56-shared.c
1494
cs35l56_base->secured = true;
sound/soc/codecs/cs35l56-shared.c
1496
ret = regmap_read(cs35l56_base->regmap, CS35L56_OTPID, &otpid);
sound/soc/codecs/cs35l56-shared.c
1498
dev_err(cs35l56_base->dev, "Get OTP ID failed\n");
sound/soc/codecs/cs35l56-shared.c
1502
ret = cs35l56_read_prot_status(cs35l56_base, &fw_missing, &fw_ver);
sound/soc/codecs/cs35l56-shared.c
1506
dev_info(cs35l56_base->dev, "Cirrus Logic CS35L%02X%s Rev %02X OTP%d fw:%d.%d.%d (patched=%u)\n",
sound/soc/codecs/cs35l56-shared.c
1507
cs35l56_base->type, cs35l56_base->secured ? "s" : "", cs35l56_base->rev, otpid,
sound/soc/codecs/cs35l56-shared.c
1511
regmap_write(cs35l56_base->regmap, CS35L56_IRQ1_MASK_20, 0xffffffff);
sound/soc/codecs/cs35l56-shared.c
1512
regmap_update_bits(cs35l56_base->regmap, CS35L56_IRQ1_MASK_1,
sound/soc/codecs/cs35l56-shared.c
1515
regmap_update_bits(cs35l56_base->regmap, CS35L56_IRQ1_MASK_8,
sound/soc/codecs/cs35l56-shared.c
1519
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared.c
1523
ret = cs35l56_read_silicon_uid(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1526
ret = cs35l63_read_silicon_uid(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1532
dev_dbg(cs35l56_base->dev, "SiliconID = %#llx\n", cs35l56_base->silicon_uid);
sound/soc/codecs/cs35l56-shared.c
1538
int cs35l56_get_speaker_id(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
1545
ret = cs_amp_get_vendor_spkid(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
1547
dev_dbg(cs35l56_base->dev, "Vendor Speaker ID = %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
1550
dev_err(cs35l56_base->dev, "Error getting vendor Speaker ID: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
1555
ret = device_property_read_u32(cs35l56_base->dev, "cirrus,speaker-id", &speaker_id);
sound/soc/codecs/cs35l56-shared.c
1557
dev_dbg(cs35l56_base->dev, "Speaker ID = %d\n", speaker_id);
sound/soc/codecs/cs35l56-shared.c
1562
descs = gpiod_get_array_optional(cs35l56_base->dev, "spk-id", GPIOD_IN);
sound/soc/codecs/cs35l56-shared.c
1567
return dev_err_probe(cs35l56_base->dev, ret, "Failed to get spk-id-gpios\n");
sound/soc/codecs/cs35l56-shared.c
1574
dev_err_probe(cs35l56_base->dev, ret, "Failed to read spk-id[%d]\n", i);
sound/soc/codecs/cs35l56-shared.c
1581
dev_dbg(cs35l56_base->dev, "Speaker ID = %d\n", speaker_id);
sound/soc/codecs/cs35l56-shared.c
1590
int cs35l56_check_and_save_onchip_spkid_gpios(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
1598
if ((num_gpios > ARRAY_SIZE(cs35l56_base->onchip_spkid_gpios)) ||
sound/soc/codecs/cs35l56-shared.c
1599
(num_pulls > ARRAY_SIZE(cs35l56_base->onchip_spkid_pulls)))
sound/soc/codecs/cs35l56-shared.c
1602
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared.c
1615
dev_err(cs35l56_base->dev, "Invalid spkid GPIO %d\n", gpios[i]);
sound/soc/codecs/cs35l56-shared.c
1621
cs35l56_base->onchip_spkid_gpios[i] = gpios[i] - 1;
sound/soc/codecs/cs35l56-shared.c
1627
cs35l56_base->onchip_spkid_pulls[i] = CS35L56_PAD_PULL_NONE;
sound/soc/codecs/cs35l56-shared.c
1630
cs35l56_base->onchip_spkid_pulls[i] = CS35L56_PAD_PULL_UP;
sound/soc/codecs/cs35l56-shared.c
1633
cs35l56_base->onchip_spkid_pulls[i] = CS35L56_PAD_PULL_DOWN;
sound/soc/codecs/cs35l56-shared.c
1636
dev_err(cs35l56_base->dev, "Invalid spkid pull %d\n", pulls[i]);
sound/soc/codecs/cs35l56-shared.c
1645
cs35l56_base->num_onchip_spkid_gpios = num_gpios;
sound/soc/codecs/cs35l56-shared.c
1646
cs35l56_base->num_onchip_spkid_pulls = num_pulls;
sound/soc/codecs/cs35l56-shared.c
1653
int cs35l56_configure_onchip_spkid_pads(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
1655
struct regmap *regmap = cs35l56_base->regmap;
sound/soc/codecs/cs35l56-shared.c
1660
KUNIT_STATIC_STUB_REDIRECT(cs35l56_configure_onchip_spkid_pads, cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1662
if (cs35l56_base->num_onchip_spkid_gpios == 0)
sound/soc/codecs/cs35l56-shared.c
1665
num_gpios = min(cs35l56_base->num_onchip_spkid_gpios,
sound/soc/codecs/cs35l56-shared.c
1666
ARRAY_SIZE(cs35l56_base->onchip_spkid_gpios));
sound/soc/codecs/cs35l56-shared.c
1667
num_pulls = min(cs35l56_base->num_onchip_spkid_pulls,
sound/soc/codecs/cs35l56-shared.c
1668
ARRAY_SIZE(cs35l56_base->onchip_spkid_pulls));
sound/soc/codecs/cs35l56-shared.c
1671
addr_offset = cs35l56_base->onchip_spkid_gpios[i] * sizeof(u32);
sound/soc/codecs/cs35l56-shared.c
1676
cs35l56_base->onchip_spkid_pulls[i]);
sound/soc/codecs/cs35l56-shared.c
1685
dev_err(cs35l56_base->dev, "GPIO%d set pad fail: %d\n",
sound/soc/codecs/cs35l56-shared.c
1686
cs35l56_base->onchip_spkid_gpios[i] + 1, ret);
sound/soc/codecs/cs35l56-shared.c
1693
dev_err(cs35l56_base->dev, "UPDT_GPIO_PRES failed:%d\n", ret);
sound/soc/codecs/cs35l56-shared.c
1704
int cs35l56_read_onchip_spkid(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
1706
struct regmap *regmap = cs35l56_base->regmap;
sound/soc/codecs/cs35l56-shared.c
1712
KUNIT_STATIC_STUB_REDIRECT(cs35l56_read_onchip_spkid, cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
1714
if (cs35l56_base->num_onchip_spkid_gpios == 0)
sound/soc/codecs/cs35l56-shared.c
1717
num_gpios = min(cs35l56_base->num_onchip_spkid_gpios,
sound/soc/codecs/cs35l56-shared.c
1718
ARRAY_SIZE(cs35l56_base->onchip_spkid_gpios));
sound/soc/codecs/cs35l56-shared.c
1721
addr_offset = cs35l56_base->onchip_spkid_gpios[i] * sizeof(u32);
sound/soc/codecs/cs35l56-shared.c
1727
dev_err(cs35l56_base->dev, "GPIO%u set func fail: %d\n",
sound/soc/codecs/cs35l56-shared.c
1728
cs35l56_base->onchip_spkid_gpios[i] + 1, ret);
sound/soc/codecs/cs35l56-shared.c
1735
dev_err(cs35l56_base->dev, "GPIO status read failed: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
1742
if (val & BIT(cs35l56_base->onchip_spkid_gpios[i]))
sound/soc/codecs/cs35l56-shared.c
1746
dev_dbg(cs35l56_base->dev, "Onchip GPIO Speaker ID = %d\n", speaker_id);
sound/soc/codecs/cs35l56-shared.c
378
static void cs35l56_set_fw_reg_table(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
380
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared.c
382
switch (cs35l56_base->rev) {
sound/soc/codecs/cs35l56-shared.c
384
cs35l56_base->fw_reg = &cs35l56_fw_reg;
sound/soc/codecs/cs35l56-shared.c
387
cs35l56_base->fw_reg = &cs35l56_b2_fw_reg;
sound/soc/codecs/cs35l56-shared.c
392
cs35l56_base->fw_reg = &cs35l63_fw_reg;
sound/soc/codecs/cs35l56-shared.c
397
int cs35l56_mbox_send(struct cs35l56_base *cs35l56_base, unsigned int command)
sound/soc/codecs/cs35l56-shared.c
402
regmap_write(cs35l56_base->regmap, CS35L56_DSP_VIRTUAL1_MBOX_1, command);
sound/soc/codecs/cs35l56-shared.c
403
ret = regmap_read_poll_timeout(cs35l56_base->regmap, CS35L56_DSP_VIRTUAL1_MBOX_1,
sound/soc/codecs/cs35l56-shared.c
407
dev_warn(cs35l56_base->dev, "MBOX command %#x failed: %d\n", command, ret);
sound/soc/codecs/cs35l56-shared.c
415
int cs35l56_firmware_shutdown(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
420
ret = cs35l56_mbox_send(cs35l56_base, CS35L56_MBOX_CMD_SHUTDOWN);
sound/soc/codecs/cs35l56-shared.c
424
ret = regmap_read_poll_timeout(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
425
cs35l56_base->fw_reg->pm_cur_stat,
sound/soc/codecs/cs35l56-shared.c
430
dev_err(cs35l56_base->dev, "Failed to poll PM_CUR_STATE to 1 is %d (ret %d)\n",
sound/soc/codecs/cs35l56-shared.c
436
int cs35l56_wait_for_firmware_boot(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
450
cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
451
cs35l56_base->fw_reg->halo_state,
sound/soc/codecs/cs35l56-shared.c
455
dev_err(cs35l56_base->dev, "Firmware boot timed out(%d): HALO_STATE=%#x\n",
sound/soc/codecs/cs35l56-shared.c
48
int cs35l56_set_asp_patch(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
487
static void cs35l56_spi_issue_bus_locked_reset(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
490
struct cs35l56_spi_payload *buf = cs35l56_base->spi_payload_buf;
sound/soc/codecs/cs35l56-shared.c
50
return regmap_register_patch(cs35l56_base->regmap, cs35l56_asp_patch,
sound/soc/codecs/cs35l56-shared.c
504
dev_warn(cs35l56_base->dev, "spi_sync failed: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
511
static void cs35l56_spi_system_reset(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
513
struct spi_device *spi = to_spi_device(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
523
dev_warn(cs35l56_base->dev, "spi_bus_lock failed: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
527
cs35l56_spi_issue_bus_locked_reset(cs35l56_base, spi);
sound/soc/codecs/cs35l56-shared.c
543
cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
547
dev_err(cs35l56_base->dev, "SPI reboot timed out(%d): MBOX2=%#x\n",
sound/soc/codecs/cs35l56-shared.c
567
void cs35l56_system_reset(struct cs35l56_base *cs35l56_base, bool is_soundwire)
sound/soc/codecs/cs35l56-shared.c
573
regcache_cache_only(cs35l56_base->regmap, true);
sound/soc/codecs/cs35l56-shared.c
575
if (cs35l56_is_spi(cs35l56_base)) {
sound/soc/codecs/cs35l56-shared.c
576
cs35l56_spi_system_reset(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
580
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared.c
584
switch (cs35l56_base->rev) {
sound/soc/codecs/cs35l56-shared.c
586
regmap_multi_reg_write_bypassed(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
591
regmap_multi_reg_write_bypassed(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
598
regmap_multi_reg_write_bypassed(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
616
int cs35l56_irq_request(struct cs35l56_base *cs35l56_base, int irq)
sound/soc/codecs/cs35l56-shared.c
623
ret = devm_request_threaded_irq(cs35l56_base->dev, irq, NULL, cs35l56_irq,
sound/soc/codecs/cs35l56-shared.c
625
"cs35l56", cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
627
cs35l56_base->irq = irq;
sound/soc/codecs/cs35l56-shared.c
629
dev_err(cs35l56_base->dev, "Failed to get IRQ: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
637
struct cs35l56_base *cs35l56_base = data;
sound/soc/codecs/cs35l56-shared.c
645
if (!cs35l56_base->init_done)
sound/soc/codecs/cs35l56-shared.c
648
mutex_lock(&cs35l56_base->irq_lock);
sound/soc/codecs/cs35l56-shared.c
650
rv = pm_runtime_resume_and_get(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
652
dev_err(cs35l56_base->dev, "irq: failed to get pm_runtime: %d\n", rv);
sound/soc/codecs/cs35l56-shared.c
656
regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_STATUS, &val);
sound/soc/codecs/cs35l56-shared.c
658
dev_dbg(cs35l56_base->dev, "Spurious IRQ: no pending interrupt\n");
sound/soc/codecs/cs35l56-shared.c
663
regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_EINT_1, &status1);
sound/soc/codecs/cs35l56-shared.c
664
regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_MASK_1, &mask1);
sound/soc/codecs/cs35l56-shared.c
666
regmap_write(cs35l56_base->regmap, CS35L56_IRQ1_EINT_1, status1);
sound/soc/codecs/cs35l56-shared.c
668
regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_EINT_8, &status8);
sound/soc/codecs/cs35l56-shared.c
669
regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_MASK_8, &mask8);
sound/soc/codecs/cs35l56-shared.c
671
regmap_write(cs35l56_base->regmap, CS35L56_IRQ1_EINT_8, status8);
sound/soc/codecs/cs35l56-shared.c
673
regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_EINT_20, &status20);
sound/soc/codecs/cs35l56-shared.c
674
regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_MASK_20, &mask20);
sound/soc/codecs/cs35l56-shared.c
677
regmap_write(cs35l56_base->regmap, CS35L56_IRQ1_MASK_20, 0xffffffff);
sound/soc/codecs/cs35l56-shared.c
679
dev_dbg(cs35l56_base->dev, "%s: %#x %#x\n", __func__, status1, status8);
sound/soc/codecs/cs35l56-shared.c
686
dev_crit(cs35l56_base->dev, "Amp short error\n");
sound/soc/codecs/cs35l56-shared.c
689
dev_crit(cs35l56_base->dev, "Overtemp error\n");
sound/soc/codecs/cs35l56-shared.c
694
pm_runtime_put(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
696
mutex_unlock(&cs35l56_base->irq_lock);
sound/soc/codecs/cs35l56-shared.c
702
int cs35l56_is_fw_reload_needed(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
712
if (cs35l56_base->secured)
sound/soc/codecs/cs35l56-shared.c
715
ret = pm_runtime_resume_and_get(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
717
dev_err(cs35l56_base->dev, "Failed to runtime_get: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
721
ret = regmap_read(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
722
cs35l56_base->fw_reg->prot_sts,
sound/soc/codecs/cs35l56-shared.c
725
dev_err(cs35l56_base->dev, "Failed to read PROTECTION_STATUS: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
729
pm_runtime_put_autosuspend(cs35l56_base->dev);
sound/soc/codecs/cs35l56-shared.c
740
static void cs35l56_issue_wake_event(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
752
regmap_read_bypassed(cs35l56_base->regmap, CS35L56_IRQ1_STATUS, &val);
sound/soc/codecs/cs35l56-shared.c
756
regmap_read_bypassed(cs35l56_base->regmap, CS35L56_IRQ1_STATUS, &val);
sound/soc/codecs/cs35l56-shared.c
761
static int cs35l56_wait_for_ps3(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
766
ret = regmap_read_poll_timeout(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
767
cs35l56_base->fw_reg->transducer_actual_ps,
sound/soc/codecs/cs35l56-shared.c
772
dev_warn(cs35l56_base->dev, "PS3 wait failed: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
777
int cs35l56_runtime_suspend_common(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
779
if (!cs35l56_base->init_done)
sound/soc/codecs/cs35l56-shared.c
783
cs35l56_wait_for_ps3(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
786
regmap_write(cs35l56_base->regmap, CS35L56_IRQ1_EINT_4, CS35L56_OTP_BOOT_DONE_MASK);
sound/soc/codecs/cs35l56-shared.c
788
if (!cs35l56_base->can_hibernate) {
sound/soc/codecs/cs35l56-shared.c
789
regcache_cache_only(cs35l56_base->regmap, true);
sound/soc/codecs/cs35l56-shared.c
790
dev_dbg(cs35l56_base->dev, "Suspended: no hibernate");
sound/soc/codecs/cs35l56-shared.c
799
regcache_cache_only(cs35l56_base->regmap, true);
sound/soc/codecs/cs35l56-shared.c
801
regmap_multi_reg_write_bypassed(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
805
dev_dbg(cs35l56_base->dev, "Suspended: hibernate");
sound/soc/codecs/cs35l56-shared.c
81
int cs35l56_set_patch(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
811
int cs35l56_runtime_resume_common(struct cs35l56_base *cs35l56_base, bool is_soundwire)
sound/soc/codecs/cs35l56-shared.c
816
if (!cs35l56_base->init_done)
sound/soc/codecs/cs35l56-shared.c
819
if (!cs35l56_base->can_hibernate)
sound/soc/codecs/cs35l56-shared.c
824
cs35l56_issue_wake_event(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
827
ret = cs35l56_wait_for_firmware_boot(cs35l56_base);
sound/soc/codecs/cs35l56-shared.c
829
dev_err(cs35l56_base->dev, "Hibernate wake failed: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
833
regcache_cache_only(cs35l56_base->regmap, false);
sound/soc/codecs/cs35l56-shared.c
835
ret = cs35l56_mbox_send(cs35l56_base, CS35L56_MBOX_CMD_PREVENT_AUTO_HIBERNATE);
sound/soc/codecs/cs35l56-shared.c
840
regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_EINT_4, &val);
sound/soc/codecs/cs35l56-shared.c
842
dev_dbg(cs35l56_base->dev, "Registers reset in suspend\n");
sound/soc/codecs/cs35l56-shared.c
843
regcache_mark_dirty(cs35l56_base->regmap);
sound/soc/codecs/cs35l56-shared.c
846
regcache_sync(cs35l56_base->regmap);
sound/soc/codecs/cs35l56-shared.c
848
dev_dbg(cs35l56_base->dev, "Resumed");
sound/soc/codecs/cs35l56-shared.c
85
ret = regmap_register_patch(cs35l56_base->regmap, cs35l56_patch,
sound/soc/codecs/cs35l56-shared.c
853
regcache_cache_only(cs35l56_base->regmap, true);
sound/soc/codecs/cs35l56-shared.c
855
if (cs35l56_base->can_hibernate) {
sound/soc/codecs/cs35l56-shared.c
856
regmap_multi_reg_write_bypassed(cs35l56_base->regmap,
sound/soc/codecs/cs35l56-shared.c
873
void cs35l56_init_cs_dsp(struct cs35l56_base *cs35l56_base, struct cs_dsp *cs_dsp)
sound/soc/codecs/cs35l56-shared.c
878
cs_dsp->dev = cs35l56_base->dev;
sound/soc/codecs/cs35l56-shared.c
879
cs_dsp->regmap = cs35l56_base->regmap;
sound/soc/codecs/cs35l56-shared.c
886
cs35l56_base->dsp = cs_dsp;
sound/soc/codecs/cs35l56-shared.c
901
static int cs35l56_read_silicon_uid(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
907
ret = regmap_raw_read(cs35l56_base->regmap, CS35L56_OTP_MEM_53, &pte, sizeof(pte));
sound/soc/codecs/cs35l56-shared.c
909
dev_err(cs35l56_base->dev, "Failed to read OTP: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
91
switch (cs35l56_base->type) {
sound/soc/codecs/cs35l56-shared.c
918
cs35l56_base->silicon_uid = unique_id;
sound/soc/codecs/cs35l56-shared.c
923
static int cs35l63_read_silicon_uid(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
929
ret = regmap_bulk_read(cs35l56_base->regmap, CS35L56_DIE_STS1, tmp, ARRAY_SIZE(tmp));
sound/soc/codecs/cs35l56-shared.c
931
dev_err(cs35l56_base->dev, "Cannot obtain CS35L56_DIE_STS: %d\n", ret);
sound/soc/codecs/cs35l56-shared.c
939
cs35l56_base->silicon_uid = unique_id;
sound/soc/codecs/cs35l56-shared.c
95
ret = regmap_register_patch(cs35l56_base->regmap, cs35l56_patch_fw,
sound/soc/codecs/cs35l56-shared.c
964
int cs35l56_get_calibration(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-shared.c
969
if (cs35l56_base->secured)
sound/soc/codecs/cs35l56-shared.c
972
ret = cs_amp_get_efi_calibration_data(cs35l56_base->dev,
sound/soc/codecs/cs35l56-shared.c
973
cs35l56_base->silicon_uid,
sound/soc/codecs/cs35l56-shared.c
974
cs35l56_base->cal_index,
sound/soc/codecs/cs35l56-shared.c
975
&cs35l56_base->cal_data);
sound/soc/codecs/cs35l56-shared.c
984
cs35l56_base->cal_data_valid = true;
sound/soc/codecs/cs35l56-shared.c
99
ret = regmap_register_patch(cs35l56_base->regmap, cs35l63_patch_fw,
sound/soc/codecs/cs35l56-shared.c
990
int cs35l56_stash_calibration(struct cs35l56_base *cs35l56_base,
sound/soc/codecs/cs35l56-shared.c
998
if (cs_amp_cal_target_u64(data) != cs35l56_base->silicon_uid) {
sound/soc/codecs/cs35l56-shared.c
999
dev_err(cs35l56_base->dev, "cal_data not for this silicon ID\n");
sound/soc/codecs/cs35l56-test.c
445
static int cs35l56_test_dummy_read_onchip_spkid(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56-test.c
455
static int cs35l56_test_dummy_configure_onchip_spkid_pads(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56.c
1015
struct cs35l56_base *cs35l56_base = file->private_data;
sound/soc/codecs/cs35l56.c
1016
struct cs35l56_private *cs35l56 = cs35l56_private_from_base(cs35l56_base);
sound/soc/codecs/cs35l56.c
1064
struct cs35l56_base *cs35l56_base = file->private_data;
sound/soc/codecs/cs35l56.c
1065
struct cs35l56_private *cs35l56 = cs35l56_private_from_base(cs35l56_base);
sound/soc/codecs/cs35l56.c
974
struct cs35l56_base *cs35l56_base = file->private_data;
sound/soc/codecs/cs35l56.c
975
struct cs35l56_private *cs35l56 = cs35l56_private_from_base(cs35l56_base);
sound/soc/codecs/cs35l56.c
996
struct cs35l56_base *cs35l56_base = file->private_data;
sound/soc/codecs/cs35l56.c
997
struct cs35l56_private *cs35l56 = cs35l56_private_from_base(cs35l56_base);
sound/soc/codecs/cs35l56.h
34
struct cs35l56_base base;
sound/soc/codecs/cs35l56.h
61
static inline struct cs35l56_private *cs35l56_private_from_base(struct cs35l56_base *cs35l56_base)
sound/soc/codecs/cs35l56.h
63
return container_of(cs35l56_base, struct cs35l56_private, base);
sound/soc/codecs/cs35l56.h
80
int cs35l56_irq_request(struct cs35l56_base *cs35l56_base, int irq);