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

From: kernel test robot
Date: Fri Mar 12 2021 - 17:00:37 EST


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