On 29.11.2023 16:12, neil.armstrong@xxxxxxxxxx wrote: > On 29/11/2023 14:46, Konrad Dybcio wrote: >> On 28.11.2023 16:01, Neil Armstrong wrote: >>> On 25/11/2023 13:07, Konrad Dybcio wrote: >>> >>> <snip> >>> >>>>> + >>>>> +static int wcd939x_io_init(struct snd_soc_component *component) >>>>> +{ >>>>> + snd_soc_component_write_field(component, WCD939X_ANA_BIAS, >>>>> + WCD939X_BIAS_ANALOG_BIAS_EN, 1); >>>> All of these values are BIT()s or 2-4 ORed BIT()s, can you check what they >>>> mean? >>>> >>>> Same for almost all other snd_soc_component_ write/modify functions >>> >>> It uses snd_soc_component_write_field() with is the same as >>> regmap_write_bits(REGISTER, REGISTER_MASK, >>> FIELD_PREP(REGISTER_MASK, value); >>> >>> So the 1 mean write in enable mask in this case, and mask is single bit, >>> read it exactly like if it was using FIELD_PREP(), but even for BITs. >>> >>> I did check every single snd_soc_component_write_field() so far to check >>> it matches. >>> >>> Or it's another question ? >> What I wanted to ask is whether it's possible to #define these magic >> values within these fields > > OK, so most of writes are to boolean enable bits, I can use true/false > instead of 0 & 1 for those, would it be more readable ? Yes, I think that would convey their meaning quite well > > For the rest, those a integer values to a field, those are not bitmasks > and I do not have the definition of the values. > > I did a full cleanup and tried to define as much as possible, > there were still lot of places where not defined bitmasks we used, > but there's still some integer values, but I think it's acceptable. No worries, what you say already sounds very cool! Konrad