Re: [PATCH 4/4] ALSA: hda/cirrus: Make CS8409 driver more generic by using fixups.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vitaly,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on sound/for-next]
[also build test WARNING on next-20210312]
[cannot apply to v5.12-rc2]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Vitaly-Rodionov/ALSA-hda-cirrus-Make-CS8409-driver-more-generic-by-using-fixups/20210313-024937
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next
config: microblaze-randconfig-m031-20210312 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

New smatch warnings:
sound/pci/hda/patch_cirrus.c:2143 cs8409_cs42l42_fixups() warn: always true condition '(caps >= 0) => (0-u32max >= 0)'

Old smatch warnings:
sound/pci/hda/patch_cirrus.c:2150 cs8409_cs42l42_fixups() warn: always true condition '(caps >= 0) => (0-u32max >= 0)'
sound/pci/hda/patch_cirrus.c:2156 cs8409_cs42l42_fixups() warn: always true condition '(caps >= 0) => (0-u32max >= 0)'
sound/pci/hda/patch_cirrus.c:2161 cs8409_cs42l42_fixups() warn: always true condition '(caps >= 0) => (0-u32max >= 0)'

vim +2143 sound/pci/hda/patch_cirrus.c

6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2098  
89b3eea4b1e18f Stefan Binding  2021-03-12  2099  static void cs8409_cs42l42_fixups(struct hda_codec *codec,
89b3eea4b1e18f Stefan Binding  2021-03-12  2100  				    const struct hda_fixup *fix, int action)
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2101  {
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2102  	struct cs_spec *spec = codec->spec;
76e2b57d1d60d1 Stefan Binding  2021-03-12  2103  	unsigned int caps;
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2104  
89b3eea4b1e18f Stefan Binding  2021-03-12  2105  	switch (action) {
89b3eea4b1e18f Stefan Binding  2021-03-12  2106  	case HDA_FIXUP_ACT_PRE_PROBE:
89b3eea4b1e18f Stefan Binding  2021-03-12  2107  		snd_hda_add_verbs(codec, cs8409_cs42l42_init_verbs);
89b3eea4b1e18f Stefan Binding  2021-03-12  2108  		/* verb exec op override */
89b3eea4b1e18f Stefan Binding  2021-03-12  2109  		spec->exec_verb = codec->core.exec_verb;
89b3eea4b1e18f Stefan Binding  2021-03-12  2110  		codec->core.exec_verb = cs8409_cs42l42_exec_verb;
89b3eea4b1e18f Stefan Binding  2021-03-12  2111  
89b3eea4b1e18f Stefan Binding  2021-03-12  2112  		mutex_init(&spec->cs8409_i2c_mux);
89b3eea4b1e18f Stefan Binding  2021-03-12  2113  
89b3eea4b1e18f Stefan Binding  2021-03-12  2114  		codec->patch_ops = cs8409_cs42l42_patch_ops;
89b3eea4b1e18f Stefan Binding  2021-03-12  2115  
89b3eea4b1e18f Stefan Binding  2021-03-12  2116  		spec->gen.suppress_auto_mute = 1;
89b3eea4b1e18f Stefan Binding  2021-03-12  2117  		spec->gen.no_primary_hp = 1;
89b3eea4b1e18f Stefan Binding  2021-03-12  2118  		spec->gen.suppress_vmaster = 1;
89b3eea4b1e18f Stefan Binding  2021-03-12  2119  
89b3eea4b1e18f Stefan Binding  2021-03-12  2120  		/* GPIO 5 out, 3,4 in */
89b3eea4b1e18f Stefan Binding  2021-03-12  2121  		spec->gpio_dir = GPIO5_INT;
89b3eea4b1e18f Stefan Binding  2021-03-12  2122  		spec->gpio_data = 0;
89b3eea4b1e18f Stefan Binding  2021-03-12  2123  		spec->gpio_mask = 0x03f;
89b3eea4b1e18f Stefan Binding  2021-03-12  2124  
89b3eea4b1e18f Stefan Binding  2021-03-12  2125  		spec->cs42l42_hp_jack_in = 0;
89b3eea4b1e18f Stefan Binding  2021-03-12  2126  		spec->cs42l42_mic_jack_in = 0;
89b3eea4b1e18f Stefan Binding  2021-03-12  2127  
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2128  		/* Basic initial sequence for specific hw configuration */
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2129  		snd_hda_sequence_write(codec, cs8409_cs42l42_init_verbs);
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2130  
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2131  		/* CS8409 is simple HDA bridge and intended to be used with a remote
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2132  		 * companion codec. Most of input/output PIN(s) have only basic
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2133  		 * capabilities. NID(s) 0x24 and 0x34 have only OUTC and INC
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2134  		 * capabilities and no presence detect capable (PDC) and call to
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2135  		 * snd_hda_gen_build_controls() will mark them as non detectable
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2136  		 * phantom jacks. However, in this configuration companion codec
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2137  		 * CS42L42 is connected to these pins and it has jack detect
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2138  		 * capabilities. We have to override pin capabilities,
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2139  		 * otherwise they will not be created as input devices.
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2140  		 */
76e2b57d1d60d1 Stefan Binding  2021-03-12  2141  		caps = snd_hdac_read_parm(&codec->core, CS8409_CS42L42_HP_PIN_NID,
76e2b57d1d60d1 Stefan Binding  2021-03-12  2142  				AC_PAR_PIN_CAP);
76e2b57d1d60d1 Stefan Binding  2021-03-12 @2143  		if (caps >= 0)
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2144  			snd_hdac_override_parm(&codec->core,
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2145  				CS8409_CS42L42_HP_PIN_NID, AC_PAR_PIN_CAP,
76e2b57d1d60d1 Stefan Binding  2021-03-12  2146  				(caps | (AC_PINCAP_IMP_SENSE | AC_PINCAP_PRES_DETECT)));
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2147  
76e2b57d1d60d1 Stefan Binding  2021-03-12  2148  		caps = snd_hdac_read_parm(&codec->core, CS8409_CS42L42_AMIC_PIN_NID,
76e2b57d1d60d1 Stefan Binding  2021-03-12  2149  				AC_PAR_PIN_CAP);
76e2b57d1d60d1 Stefan Binding  2021-03-12  2150  		if (caps >= 0)
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2151  			snd_hdac_override_parm(&codec->core,
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2152  				CS8409_CS42L42_AMIC_PIN_NID, AC_PAR_PIN_CAP,
76e2b57d1d60d1 Stefan Binding  2021-03-12  2153  				(caps | (AC_PINCAP_IMP_SENSE | AC_PINCAP_PRES_DETECT)));
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2154  
76e2b57d1d60d1 Stefan Binding  2021-03-12  2155  		caps = get_wcaps(codec, CS8409_CS42L42_HP_PIN_NID);
76e2b57d1d60d1 Stefan Binding  2021-03-12  2156  		if (caps >= 0)
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2157  			snd_hda_override_wcaps(codec, CS8409_CS42L42_HP_PIN_NID,
76e2b57d1d60d1 Stefan Binding  2021-03-12  2158  				(caps | AC_WCAP_UNSOL_CAP));
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2159  
76e2b57d1d60d1 Stefan Binding  2021-03-12  2160  		caps = get_wcaps(codec, CS8409_CS42L42_AMIC_PIN_NID);
76e2b57d1d60d1 Stefan Binding  2021-03-12  2161  		if (caps >= 0)
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2162  			snd_hda_override_wcaps(codec, CS8409_CS42L42_AMIC_PIN_NID,
76e2b57d1d60d1 Stefan Binding  2021-03-12  2163  				(caps | AC_WCAP_UNSOL_CAP));
89b3eea4b1e18f Stefan Binding  2021-03-12  2164  		break;
89b3eea4b1e18f Stefan Binding  2021-03-12  2165  	case HDA_FIXUP_ACT_PROBE:
89b3eea4b1e18f Stefan Binding  2021-03-12  2166  		snd_hda_gen_add_kctl(&spec->gen,
89b3eea4b1e18f Stefan Binding  2021-03-12  2167  			NULL, &cs8409_cs42l42_hp_volume_mixer);
89b3eea4b1e18f Stefan Binding  2021-03-12  2168  		snd_hda_gen_add_kctl(&spec->gen,
89b3eea4b1e18f Stefan Binding  2021-03-12  2169  			NULL, &cs8409_cs42l42_amic_volume_mixer);
89b3eea4b1e18f Stefan Binding  2021-03-12  2170  		cs8409_cs42l42_hw_init(codec);
89b3eea4b1e18f Stefan Binding  2021-03-12  2171  		snd_hda_codec_set_name(codec, "CS8409/CS42L42");
89b3eea4b1e18f Stefan Binding  2021-03-12  2172  		break;
89b3eea4b1e18f Stefan Binding  2021-03-12  2173  	case HDA_FIXUP_ACT_INIT:
89b3eea4b1e18f Stefan Binding  2021-03-12  2174  		cs8409_cs42l42_hw_init(codec);
89b3eea4b1e18f Stefan Binding  2021-03-12  2175  		// Fall through
89b3eea4b1e18f Stefan Binding  2021-03-12  2176  	case HDA_FIXUP_ACT_BUILD:
89b3eea4b1e18f Stefan Binding  2021-03-12  2177  		/* Run jack auto detect first time on boot
89b3eea4b1e18f Stefan Binding  2021-03-12  2178  		 * after controls have been added, to check if jack has
89b3eea4b1e18f Stefan Binding  2021-03-12  2179  		 * been already plugged in.
89b3eea4b1e18f Stefan Binding  2021-03-12  2180  		 * Run immediately after init.
89b3eea4b1e18f Stefan Binding  2021-03-12  2181  		 */
89b3eea4b1e18f Stefan Binding  2021-03-12  2182  		cs8409_cs42l42_run_jack_detect(codec);
89b3eea4b1e18f Stefan Binding  2021-03-12  2183  		usleep_range(100000, 150000);
89b3eea4b1e18f Stefan Binding  2021-03-12  2184  		break;
89b3eea4b1e18f Stefan Binding  2021-03-12  2185  	default:
89b3eea4b1e18f Stefan Binding  2021-03-12  2186  		break;
89b3eea4b1e18f Stefan Binding  2021-03-12  2187  	}
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2188  }
6cc7e93f46a5ce Vitaly Rodionov 2021-03-06  2189  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux