Re: [PATCH 4/5] ASoC: codecs: wcd939x: move to using dev_get_regmap

From: Srinivas Kandagatla
Date: Wed Jul 16 2025 - 11:39:06 EST


On 7/16/25 3:36 PM, Srinivas Kandagatla wrote:
> On 7/16/25 3:31 PM, Mark Brown wrote:
>> On Wed, Jul 16, 2025 at 01:33:22PM +0100, srinivas.kandagatla@xxxxxxxxxxxxxxxx wrote:
>>
>>> Ffor some reason we ended up with a boiler plate for dev_get_regmap in
>>> wcd939x codec and started exporting a symbol for this. Remove this
>>> redundant wrapper and direclty use dev_get_regmap from device pointer..
>>
>>> -struct regmap *wcd939x_swr_get_regmap(struct wcd939x_sdw_priv *wcd)
>>> -{
>>> - if (wcd->regmap)
>>> - return wcd->regmap;
>>> -
>>> - return ERR_PTR(-EINVAL);
>>> -}
>>> -EXPORT_SYMBOL_GPL(wcd939x_swr_get_regmap);
>>
>>
>>> /* Get regmap from TX SoundWire device */
>>> - wcd939x->regmap = wcd939x_swr_get_regmap(wcd939x->sdw_priv[AIF1_CAP]);
>>> - if (IS_ERR(wcd939x->regmap)) {
>>> + wcd939x->regmap = dev_get_regmap(wcd939x->txdev, NULL);
>>> + if (!wcd939x->regmap) {
Infact this turned out to me much simpler and not even use
dev_get_regmap() by just doing a deref of sdw_priv

wcd939x->regmap = wcd939x->sdw_priv[AIF1_CAP]->regmap;

Will fix such instances in next spin.

--srini
>>
>> The existing code should be more efficient than dev_get_regmap(), the
>> latter does a devres_find() to look up the regmap while the above is
>> just a pointer dereference. It's probably a marginal difference in the
>> context of probe() but there is a reason to do something more direct if
>> you can, dev_get_regmap() is mainly intended for generic APIs that get
> Thanks Mark, I did not realize that dev_get_regmap was devres search at
> the end, Will drop this patch and make something similar changes to
> other codecs too.
>
> --srini
>> passed a struct device.
>