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

Configure Feed

Select the types of activity you want to include in your feed.

cs35l56: Log tuning unique identifiers during firmware

Merge series from Simon Trimmer <simont@opensource.cirrus.com>:

These two patches introduce a log message when provisioning the cs35l56
family of devices that uniquely identifies the firmware tuning.

+32
+1
include/sound/cs35l56.h
··· 360 360 int cs35l56_get_calibration(struct cs35l56_base *cs35l56_base); 361 361 int cs35l56_read_prot_status(struct cs35l56_base *cs35l56_base, 362 362 bool *fw_missing, unsigned int *fw_version); 363 + void cs35l56_log_tuning(struct cs35l56_base *cs35l56_base, struct cs_dsp *cs_dsp); 363 364 int cs35l56_hw_init(struct cs35l56_base *cs35l56_base); 364 365 int cs35l56_get_speaker_id(struct cs35l56_base *cs35l56_base); 365 366 int cs35l56_get_bclk_freq_id(unsigned int freq);
+2
sound/pci/hda/cs35l56_hda.c
··· 676 676 if (ret) 677 677 cs_dsp_stop(&cs35l56->cs_dsp); 678 678 679 + cs35l56_log_tuning(&cs35l56->base, &cs35l56->cs_dsp); 680 + 679 681 err_powered_up: 680 682 if (!cs35l56->base.fw_patched) 681 683 cs_dsp_power_down(&cs35l56->cs_dsp);
+28
sound/soc/codecs/cs35l56-shared.c
··· 909 909 } 910 910 EXPORT_SYMBOL_NS_GPL(cs35l56_read_prot_status, "SND_SOC_CS35L56_SHARED"); 911 911 912 + void cs35l56_log_tuning(struct cs35l56_base *cs35l56_base, struct cs_dsp *cs_dsp) 913 + { 914 + __be32 pid, sid, tid; 915 + int ret; 916 + 917 + scoped_guard(mutex, &cs_dsp->pwr_lock) { 918 + ret = cs_dsp_coeff_read_ctrl(cs_dsp_get_ctl(cs_dsp, "AS_PRJCT_ID", 919 + WMFW_ADSP2_XM, 0x9f212), 920 + 0, &pid, sizeof(pid)); 921 + if (!ret) 922 + ret = cs_dsp_coeff_read_ctrl(cs_dsp_get_ctl(cs_dsp, "AS_CHNNL_ID", 923 + WMFW_ADSP2_XM, 0x9f212), 924 + 0, &sid, sizeof(sid)); 925 + if (!ret) 926 + ret = cs_dsp_coeff_read_ctrl(cs_dsp_get_ctl(cs_dsp, "AS_SNPSHT_ID", 927 + WMFW_ADSP2_XM, 0x9f212), 928 + 0, &tid, sizeof(tid)); 929 + } 930 + 931 + if (ret) 932 + dev_warn(cs35l56_base->dev, "Can't read tuning IDs"); 933 + else 934 + dev_info(cs35l56_base->dev, "Tuning PID: %#x, SID: %#x, TID: %#x\n", 935 + be32_to_cpu(pid), be32_to_cpu(sid), be32_to_cpu(tid)); 936 + } 937 + EXPORT_SYMBOL_NS_GPL(cs35l56_log_tuning, "SND_SOC_CS35L56_SHARED"); 938 + 912 939 int cs35l56_hw_init(struct cs35l56_base *cs35l56_base) 913 940 { 914 941 int ret; ··· 1276 1249 MODULE_AUTHOR("Simon Trimmer <simont@opensource.cirrus.com>"); 1277 1250 MODULE_LICENSE("GPL"); 1278 1251 MODULE_IMPORT_NS("SND_SOC_CS_AMP_LIB"); 1252 + MODULE_IMPORT_NS("FW_CS_DSP");
+1
sound/soc/codecs/cs35l56.c
··· 847 847 else 848 848 cs35l56_patch(cs35l56, firmware_missing); 849 849 850 + cs35l56_log_tuning(&cs35l56->base, &cs35l56->dsp.cs_dsp); 850 851 err: 851 852 pm_runtime_mark_last_busy(cs35l56->base.dev); 852 853 pm_runtime_put_autosuspend(cs35l56->base.dev);