From: kernel test robot <lkp@intel.com>
To: Charles Keepax <ckeepax@opensource.cirrus.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v2 13/13] ASoC: Tidy up SOC_DOUBLE_* and SOC_SINGLE_* helpers
Date: Tue, 4 Mar 2025 20:36:35 +0800 [thread overview]
Message-ID: <202503042053.coONSnOx-lkp@intel.com> (raw)
In-Reply-To: <20250303171424.444556-14-ckeepax@opensource.cirrus.com>
Hi Charles,
kernel test robot noticed the following build errors:
[auto build test ERROR on broonie-sound/for-next]
[also build test ERROR on linus/master v6.14-rc5 next-20250304]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Charles-Keepax/ASoC-Remove-unused-helper-macro/20250304-015303
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
patch link: https://lore.kernel.org/r/20250303171424.444556-14-ckeepax%40opensource.cirrus.com
patch subject: [PATCH v2 13/13] ASoC: Tidy up SOC_DOUBLE_* and SOC_SINGLE_* helpers
config: x86_64-buildonly-randconfig-005-20250304 (https://download.01.org/0day-ci/archive/20250304/202503042053.coONSnOx-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250304/202503042053.coONSnOx-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202503042053.coONSnOx-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from sound/soc/codecs/rk3308_codec.c:24:
>> include/sound/soc.h:150:49: error: 'shift_left' undeclared here (not in a function)
150 | .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
| ^~~~~~~~~~
include/sound/soc.h:45:46: note: in definition of macro 'SOC_DOUBLE_S_VALUE'
45 | {.reg = xreg, .rreg = xreg, .shift = shift_left, \
| ^~~~~~~~~~
include/sound/soc.h:150:26: note: in expansion of macro 'SOC_DOUBLE_VALUE'
150 | .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
| ^~~~~~~~~~~~~~~~
sound/soc/codecs/rk3308_codec.c:171:9: note: in expansion of macro 'SOC_DOUBLE_RANGE_TLV'
171 | SOC_DOUBLE_RANGE_TLV("DAC HPMIX Playback Volume",
| ^~~~~~~~~~~~~~~~~~~~
>> include/sound/soc.h:150:61: error: 'shift_right' undeclared here (not in a function)
150 | .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
| ^~~~~~~~~~~
include/sound/soc.h:46:19: note: in definition of macro 'SOC_DOUBLE_S_VALUE'
46 | .rshift = shift_right, .min = xmin, .max = xmax, \
| ^~~~~~~~~~~
include/sound/soc.h:150:26: note: in expansion of macro 'SOC_DOUBLE_VALUE'
150 | .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
| ^~~~~~~~~~~~~~~~
sound/soc/codecs/rk3308_codec.c:171:9: note: in expansion of macro 'SOC_DOUBLE_RANGE_TLV'
171 | SOC_DOUBLE_RANGE_TLV("DAC HPMIX Playback Volume",
| ^~~~~~~~~~~~~~~~~~~~
--
In file included from rk3308_codec.c:24:
>> include/sound/soc.h:150:49: error: 'shift_left' undeclared here (not in a function)
150 | .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
| ^~~~~~~~~~
include/sound/soc.h:45:46: note: in definition of macro 'SOC_DOUBLE_S_VALUE'
45 | {.reg = xreg, .rreg = xreg, .shift = shift_left, \
| ^~~~~~~~~~
include/sound/soc.h:150:26: note: in expansion of macro 'SOC_DOUBLE_VALUE'
150 | .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
| ^~~~~~~~~~~~~~~~
rk3308_codec.c:171:9: note: in expansion of macro 'SOC_DOUBLE_RANGE_TLV'
171 | SOC_DOUBLE_RANGE_TLV("DAC HPMIX Playback Volume",
| ^~~~~~~~~~~~~~~~~~~~
>> include/sound/soc.h:150:61: error: 'shift_right' undeclared here (not in a function)
150 | .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
| ^~~~~~~~~~~
include/sound/soc.h:46:19: note: in definition of macro 'SOC_DOUBLE_S_VALUE'
46 | .rshift = shift_right, .min = xmin, .max = xmax, \
| ^~~~~~~~~~~
include/sound/soc.h:150:26: note: in expansion of macro 'SOC_DOUBLE_VALUE'
150 | .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
| ^~~~~~~~~~~~~~~~
rk3308_codec.c:171:9: note: in expansion of macro 'SOC_DOUBLE_RANGE_TLV'
171 | SOC_DOUBLE_RANGE_TLV("DAC HPMIX Playback Volume",
| ^~~~~~~~~~~~~~~~~~~~
vim +/shift_left +150 include/sound/soc.h
38
39 /*
40 * Convenience kcontrol builders
41 */
42 #define SOC_DOUBLE_S_VALUE(xreg, shift_left, shift_right, xmin, xmax, xsign_bit, \
43 xinvert, xautodisable) \
44 ((unsigned long)&(struct soc_mixer_control) \
> 45 {.reg = xreg, .rreg = xreg, .shift = shift_left, \
46 .rshift = shift_right, .min = xmin, .max = xmax, \
47 .sign_bit = xsign_bit, .invert = xinvert, .autodisable = xautodisable})
48 #define SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, xmin, xmax, xinvert, xautodisable) \
49 SOC_DOUBLE_S_VALUE(xreg, shift_left, shift_right, xmin, xmax, 0, xinvert, \
50 xautodisable)
51 #define SOC_SINGLE_VALUE(xreg, xshift, xmin, xmax, xinvert, xautodisable) \
52 SOC_DOUBLE_VALUE(xreg, xshift, xshift, xmin, xmax, xinvert, xautodisable)
53 #define SOC_DOUBLE_R_S_VALUE(xlreg, xrreg, xshift, xmin, xmax, xsign_bit, xinvert) \
54 ((unsigned long)&(struct soc_mixer_control) \
55 {.reg = xlreg, .rreg = xrreg, .shift = xshift, .rshift = xshift, \
56 .max = xmax, .min = xmin, .sign_bit = xsign_bit, \
57 .invert = xinvert})
58 #define SOC_DOUBLE_R_VALUE(xlreg, xrreg, xshift, xmin, xmax, xinvert) \
59 SOC_DOUBLE_R_S_VALUE(xlreg, xrreg, xshift, xmin, xmax, 0, xinvert)
60
61 #define SOC_SINGLE(xname, reg, shift, max, invert) \
62 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
63 .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\
64 .put = snd_soc_put_volsw, \
65 .private_value = SOC_SINGLE_VALUE(reg, shift, 0, max, invert, 0) }
66 #define SOC_SINGLE_RANGE(xname, xreg, xshift, xmin, xmax, xinvert) \
67 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
68 .info = snd_soc_info_volsw_range, .get = snd_soc_get_volsw_range, \
69 .put = snd_soc_put_volsw_range, \
70 .private_value = SOC_SINGLE_VALUE(xreg, xshift, xmin, xmax, xinvert, 0) }
71 #define SOC_SINGLE_TLV(xname, reg, shift, max, invert, tlv_array) \
72 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
73 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
74 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
75 .tlv.p = (tlv_array), \
76 .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\
77 .put = snd_soc_put_volsw, \
78 .private_value = SOC_SINGLE_VALUE(reg, shift, 0, max, invert, 0) }
79 #define SOC_SINGLE_SX_TLV(xname, xreg, xshift, xmin, xmax, tlv_array) \
80 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
81 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
82 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
83 .tlv.p = (tlv_array),\
84 .info = snd_soc_info_volsw_sx, \
85 .get = snd_soc_get_volsw_sx,\
86 .put = snd_soc_put_volsw_sx, \
87 .private_value = SOC_SINGLE_VALUE(xreg, xshift, xmin, xmax, 0, 0) }
88 #define SOC_SINGLE_RANGE_TLV(xname, xreg, xshift, xmin, xmax, xinvert, tlv_array) \
89 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
90 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
91 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
92 .tlv.p = (tlv_array), \
93 .info = snd_soc_info_volsw_range, \
94 .get = snd_soc_get_volsw_range, .put = snd_soc_put_volsw_range, \
95 .private_value = SOC_SINGLE_VALUE(xreg, xshift, xmin, xmax, xinvert, 0) }
96 #define SOC_DOUBLE(xname, reg, shift_left, shift_right, max, invert) \
97 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
98 .info = snd_soc_info_volsw, .get = snd_soc_get_volsw, \
99 .put = snd_soc_put_volsw, \
100 .private_value = SOC_DOUBLE_VALUE(reg, shift_left, shift_right, \
101 0, max, invert, 0) }
102 #define SOC_DOUBLE_STS(xname, reg, shift_left, shift_right, max, invert) \
103 { \
104 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
105 .info = snd_soc_info_volsw, .get = snd_soc_get_volsw, \
106 .access = SNDRV_CTL_ELEM_ACCESS_READ | \
107 SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
108 .private_value = SOC_DOUBLE_VALUE(reg, shift_left, shift_right, \
109 0, max, invert, 0) }
110 #define SOC_DOUBLE_R(xname, reg_left, reg_right, xshift, xmax, xinvert) \
111 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
112 .info = snd_soc_info_volsw, \
113 .get = snd_soc_get_volsw, .put = snd_soc_put_volsw, \
114 .private_value = SOC_DOUBLE_R_VALUE(reg_left, reg_right, xshift, \
115 0, xmax, xinvert) }
116 #define SOC_DOUBLE_R_RANGE(xname, reg_left, reg_right, xshift, xmin, \
117 xmax, xinvert) \
118 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
119 .info = snd_soc_info_volsw_range, \
120 .get = snd_soc_get_volsw_range, .put = snd_soc_put_volsw_range, \
121 .private_value = SOC_DOUBLE_R_VALUE(reg_left, reg_right, \
122 xshift, xmin, xmax, xinvert) }
123 #define SOC_DOUBLE_TLV(xname, reg, shift_left, shift_right, max, invert, tlv_array) \
124 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
125 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
126 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
127 .tlv.p = (tlv_array), \
128 .info = snd_soc_info_volsw, .get = snd_soc_get_volsw, \
129 .put = snd_soc_put_volsw, \
130 .private_value = SOC_DOUBLE_VALUE(reg, shift_left, shift_right, \
131 0, max, invert, 0) }
132 #define SOC_DOUBLE_SX_TLV(xname, xreg, shift_left, shift_right, xmin, xmax, tlv_array) \
133 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
134 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
135 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
136 .tlv.p = (tlv_array), \
137 .info = snd_soc_info_volsw_sx, \
138 .get = snd_soc_get_volsw_sx, \
139 .put = snd_soc_put_volsw_sx, \
140 .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
141 xmin, xmax, 0, 0) }
142 #define SOC_DOUBLE_RANGE_TLV(xname, xreg, xshift_left, xshift_right, xmin, xmax, \
143 xinvert, tlv_array) \
144 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
145 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
146 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
147 .tlv.p = (tlv_array), \
148 .info = snd_soc_info_volsw, \
149 .get = snd_soc_get_volsw, .put = snd_soc_put_volsw, \
> 150 .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
151 xmin, xmax, xinvert, 0) }
152 #define SOC_DOUBLE_R_TLV(xname, reg_left, reg_right, xshift, xmax, xinvert, tlv_array) \
153 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
154 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
155 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
156 .tlv.p = (tlv_array), \
157 .info = snd_soc_info_volsw, \
158 .get = snd_soc_get_volsw, .put = snd_soc_put_volsw, \
159 .private_value = SOC_DOUBLE_R_VALUE(reg_left, reg_right, xshift, \
160 0, xmax, xinvert) }
161 #define SOC_DOUBLE_R_RANGE_TLV(xname, reg_left, reg_right, xshift, xmin, \
162 xmax, xinvert, tlv_array) \
163 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
164 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
165 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
166 .tlv.p = (tlv_array), \
167 .info = snd_soc_info_volsw_range, \
168 .get = snd_soc_get_volsw_range, .put = snd_soc_put_volsw_range, \
169 .private_value = SOC_DOUBLE_R_VALUE(reg_left, reg_right, \
170 xshift, xmin, xmax, xinvert) }
171 #define SOC_DOUBLE_R_SX_TLV(xname, xreg, xrreg, xshift, xmin, xmax, tlv_array) \
172 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
173 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
174 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
175 .tlv.p = (tlv_array), \
176 .info = snd_soc_info_volsw_sx, \
177 .get = snd_soc_get_volsw_sx, \
178 .put = snd_soc_put_volsw_sx, \
179 .private_value = SOC_DOUBLE_R_VALUE(xreg, xrreg, xshift, xmin, xmax, 0) }
180 #define SOC_DOUBLE_R_S_TLV(xname, reg_left, reg_right, xshift, xmin, xmax, xsign_bit, xinvert, tlv_array) \
181 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
182 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
183 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
184 .tlv.p = (tlv_array), \
185 .info = snd_soc_info_volsw, \
186 .get = snd_soc_get_volsw, .put = snd_soc_put_volsw, \
187 .private_value = SOC_DOUBLE_R_S_VALUE(reg_left, reg_right, xshift, \
188 xmin, xmax, xsign_bit, xinvert) }
189 #define SOC_SINGLE_S_TLV(xname, xreg, xshift, xmin, xmax, xsign_bit, xinvert, tlv_array) \
190 SOC_DOUBLE_R_S_TLV(xname, xreg, xreg, xshift, xmin, xmax, xsign_bit, xinvert, tlv_array)
191 #define SOC_SINGLE_S8_TLV(xname, xreg, xmin, xmax, tlv_array) \
192 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
193 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
194 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
195 .tlv.p = (tlv_array), \
196 .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\
197 .put = snd_soc_put_volsw, \
198 .private_value = (unsigned long)&(struct soc_mixer_control) \
199 {.reg = xreg, .rreg = xreg, \
200 .min = xmin, .max = xmax, \
201 .sign_bit = 7,} }
202 #define SOC_DOUBLE_S8_TLV(xname, xreg, xmin, xmax, tlv_array) \
203 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
204 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
205 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
206 .tlv.p = (tlv_array), \
207 .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\
208 .put = snd_soc_put_volsw, \
209 .private_value = SOC_DOUBLE_S_VALUE(xreg, 0, 8, xmin, xmax, 7, 0, 0) }
210 #define SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xitems, xtexts) \
211 { .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
212 .items = xitems, .texts = xtexts, \
213 .mask = xitems ? roundup_pow_of_two(xitems) - 1 : 0}
214 #define SOC_ENUM_SINGLE(xreg, xshift, xitems, xtexts) \
215 SOC_ENUM_DOUBLE(xreg, xshift, xshift, xitems, xtexts)
216 #define SOC_ENUM_SINGLE_EXT(xitems, xtexts) \
217 { .items = xitems, .texts = xtexts }
218 #define SOC_VALUE_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, xitems, xtexts, xvalues) \
219 { .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
220 .mask = xmask, .items = xitems, .texts = xtexts, .values = xvalues}
221 #define SOC_VALUE_ENUM_SINGLE(xreg, xshift, xmask, xitems, xtexts, xvalues) \
222 SOC_VALUE_ENUM_DOUBLE(xreg, xshift, xshift, xmask, xitems, xtexts, xvalues)
223 #define SOC_VALUE_ENUM_SINGLE_AUTODISABLE(xreg, xshift, xmask, xitems, xtexts, xvalues) \
224 { .reg = xreg, .shift_l = xshift, .shift_r = xshift, \
225 .mask = xmask, .items = xitems, .texts = xtexts, \
226 .values = xvalues, .autodisable = 1}
227 #define SOC_ENUM_SINGLE_VIRT(xitems, xtexts) \
228 SOC_ENUM_SINGLE(SND_SOC_NOPM, 0, xitems, xtexts)
229 #define SOC_ENUM(xname, xenum) \
230 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname,\
231 .info = snd_soc_info_enum_double, \
232 .get = snd_soc_get_enum_double, .put = snd_soc_put_enum_double, \
233 .private_value = (unsigned long)&xenum }
234 #define SOC_SINGLE_EXT(xname, xreg, xshift, xmax, xinvert,\
235 xhandler_get, xhandler_put) \
236 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
237 .info = snd_soc_info_volsw, \
238 .get = xhandler_get, .put = xhandler_put, \
239 .private_value = SOC_SINGLE_VALUE(xreg, xshift, 0, xmax, xinvert, 0) }
240 #define SOC_DOUBLE_EXT(xname, reg, shift_left, shift_right, max, invert,\
241 xhandler_get, xhandler_put) \
242 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
243 .info = snd_soc_info_volsw, \
244 .get = xhandler_get, .put = xhandler_put, \
245 .private_value = \
246 SOC_DOUBLE_VALUE(reg, shift_left, shift_right, 0, max, invert, 0) }
247 #define SOC_DOUBLE_R_EXT(xname, reg_left, reg_right, xshift, xmax, xinvert,\
248 xhandler_get, xhandler_put) \
249 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
250 .info = snd_soc_info_volsw, \
251 .get = xhandler_get, .put = xhandler_put, \
252 .private_value = SOC_DOUBLE_R_VALUE(reg_left, reg_right, xshift, \
253 0, xmax, xinvert) }
254 #define SOC_SINGLE_EXT_TLV(xname, xreg, xshift, xmax, xinvert,\
255 xhandler_get, xhandler_put, tlv_array) \
256 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
257 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
258 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
259 .tlv.p = (tlv_array), \
260 .info = snd_soc_info_volsw, \
261 .get = xhandler_get, .put = xhandler_put, \
262 .private_value = SOC_SINGLE_VALUE(xreg, xshift, 0, xmax, xinvert, 0) }
263 #define SOC_SINGLE_RANGE_EXT_TLV(xname, xreg, xshift, xmin, xmax, xinvert, \
264 xhandler_get, xhandler_put, tlv_array) \
265 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
266 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |\
267 SNDRV_CTL_ELEM_ACCESS_READWRITE,\
268 .tlv.p = (tlv_array), \
269 .info = snd_soc_info_volsw_range, \
270 .get = xhandler_get, .put = xhandler_put, \
271 .private_value = SOC_SINGLE_VALUE(xreg, xshift, xmin, xmax, xinvert, 0) }
272 #define SOC_DOUBLE_EXT_TLV(xname, xreg, shift_left, shift_right, xmax, xinvert,\
273 xhandler_get, xhandler_put, tlv_array) \
274 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
275 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
276 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
277 .tlv.p = (tlv_array), \
278 .info = snd_soc_info_volsw, \
279 .get = xhandler_get, .put = xhandler_put, \
280 .private_value = SOC_DOUBLE_VALUE(xreg, shift_left, shift_right, \
281 0, xmax, xinvert, 0) }
282 #define SOC_DOUBLE_R_EXT_TLV(xname, reg_left, reg_right, xshift, xmax, xinvert,\
283 xhandler_get, xhandler_put, tlv_array) \
284 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
285 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
286 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
287 .tlv.p = (tlv_array), \
288 .info = snd_soc_info_volsw, \
289 .get = xhandler_get, .put = xhandler_put, \
290 .private_value = SOC_DOUBLE_R_VALUE(reg_left, reg_right, xshift, \
291 0, xmax, xinvert) }
292 #define SOC_DOUBLE_R_S_EXT_TLV(xname, reg_left, reg_right, xshift, xmin, xmax, \
293 xsign_bit, xinvert, xhandler_get, xhandler_put, \
294 tlv_array) \
295 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
296 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
297 SNDRV_CTL_ELEM_ACCESS_READWRITE, \
298 .tlv.p = (tlv_array), \
299 .info = snd_soc_info_volsw, \
300 .get = xhandler_get, .put = xhandler_put, \
301 .private_value = SOC_DOUBLE_R_S_VALUE(reg_left, reg_right, xshift, \
302 xmin, xmax, xsign_bit, xinvert) }
303 #define SOC_SINGLE_S_EXT_TLV(xname, xreg, xshift, xmin, xmax, \
304 xsign_bit, xinvert, xhandler_get, xhandler_put, \
305 tlv_array) \
306 SOC_DOUBLE_R_S_EXT_TLV(xname, xreg, xreg, xshift, xmin, xmax, \
307 xsign_bit, xinvert, xhandler_get, xhandler_put, \
308 tlv_array)
309 #define SOC_SINGLE_BOOL_EXT(xname, xdata, xhandler_get, xhandler_put) \
310 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
311 .info = snd_soc_info_bool_ext, \
312 .get = xhandler_get, .put = xhandler_put, \
313 .private_value = xdata }
314 #define SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \
315 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
316 .info = snd_soc_info_enum_double, \
317 .get = xhandler_get, .put = xhandler_put, \
318 .private_value = (unsigned long)&xenum }
319 #define SOC_VALUE_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \
320 SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put)
321
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2025-03-04 12:37 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-03 17:14 [PATCH v2 00/13] Tidy up ASoC VALUE control macros Charles Keepax
2025-03-03 17:14 ` [PATCH v2 01/13] ASoC: Remove unused helper macro Charles Keepax
2025-03-03 17:14 ` [PATCH v2 02/13] ASoC: rt715: Remove duplicate SOC_DOUBLE_R_EXT() " Charles Keepax
2025-03-03 17:14 ` [PATCH v2 03/13] ASoC: sma1307: Use SOC_SINGLE_EXT() " Charles Keepax
2025-03-03 17:14 ` [PATCH v2 04/13] ASoC: tas2562: Use SOC_SINGLE_EXT_TLV() " Charles Keepax
2025-03-03 17:14 ` [PATCH v2 05/13] ASoC: wcd938x: " Charles Keepax
2025-03-03 17:14 ` [PATCH v2 06/13] ASoC: wm9712: Use SOC_SINGLE_EXT() " Charles Keepax
2025-03-03 17:14 ` [PATCH v2 07/13] ASoC: wm9713: Use SOC_DOUBLE_EXT() " Charles Keepax
2025-03-03 17:14 ` [PATCH v2 08/13] ASoC: wsa881x: Use SOC_SINGLE_EXT_TLV() " Charles Keepax
2025-03-03 17:14 ` [PATCH v2 09/13] ASoC: atmel: tse850-pcm5142: Use SOC_SINGLE_EXT() " Charles Keepax
2025-03-03 17:14 ` [PATCH v2 10/13] ASoC: dapm: Add missing SOC_DAPM_DOUBLE_R_TLV() helper Charles Keepax
2025-03-03 17:14 ` [PATCH v2 11/13] ASoC: dapm: Use ASoC control macros where possible Charles Keepax
2025-03-03 17:14 ` [PATCH v2 12/13] ASoC: Tidy up SOC_DOUBLE_R_* helpers Charles Keepax
2025-03-03 17:14 ` [PATCH v2 13/13] ASoC: Tidy up SOC_DOUBLE_* and SOC_SINGLE_* helpers Charles Keepax
2025-03-03 18:53 ` Mark Brown
2025-03-04 9:19 ` Charles Keepax
2025-03-04 12:36 ` kernel test robot [this message]
2025-03-04 16:53 ` [PATCH v2 00/13] Tidy up ASoC VALUE control macros Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202503042053.coONSnOx-lkp@intel.com \
--to=lkp@intel.com \
--cc=ckeepax@opensource.cirrus.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.