Re: [PATCH] ASoC: max98373: Added Amplifier Driver

From: Kuninori Morimoto
Date: Thu Dec 21 2017 - 21:24:38 EST



Hi Ryan

> Signed-off-by: Ryan Lee <ryans.lee@xxxxxxxxxxxxxxxxxxx>
> ---
>
> Created max98373 amplifier driver.
>
> .../devicetree/bindings/sound/max98373.txt | 43 +
> sound/soc/codecs/Kconfig | 5 +
> sound/soc/codecs/Makefile | 2 +
> sound/soc/codecs/max98373.c | 996 +++++++++++++++++++++
> sound/soc/codecs/max98373.h | 225 +++++
> 5 files changed, 1271 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/sound/max98373.txt
> create mode 100644 sound/soc/codecs/max98373.c
> create mode 100644 sound/soc/codecs/max98373.h
(snip)
> +struct max98373_priv {
> + struct regmap *regmap;
> + struct snd_soc_codec *codec;
> + unsigned int sysclk;
> + unsigned int v_slot;
> + unsigned int i_slot;
> + unsigned int spkfb_slot;
> + bool interleave_mode;
> + unsigned int ch_size;
> + unsigned int iface;
> + bool tdm_mode;
> +};

About this max98373->codec.
This user is only max98373_set_clock(), and it is called from
max98373_dai_hw_params().
You are getting *codec from dai->codec in this function,
and max98373 is came from it.
This means, we can remove max98373->codec ?

About max98373->regmap.
You are using devm_regmap_init_i2c(), and keeping it on max98373.
Can you check snd_soc_component_add() which is called from
snd_soc_add_component().
It will set component->regmap if you called devm_regmap_init_i2c().
I think you can use snd_soc_component_read/write instead of regmap_read/write.
Then, we can remove max98373->regmap too ?
Ahh, you want to check Revision ID.
then, snd_soc_component_init_regmap() can help you ?

Best regards
---
Kuninori Morimoto