RE: [PATCH] ASoC: Add MediaTek MT6660 Speaker Amp Driver

From: jeff_chang(張世佳)
Date: Sun Dec 22 2019 - 21:21:00 EST


Dear Mark:

Thanks for your replying.

I have a question about this

> +++ b/sound/soc/codecs/mt6660.c
> @@ -0,0 +1,653 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2019 MediaTek Inc.
> + */

Please make the entire comment a C++ one so things look more intentional.

--> When I check other driver at sound/soc/codecs/ folder, I just follow what others do.
It seems in .h --> /* SPDX-Liencese-Identifier: GPL-2.0 */
In .c --> // SPDK-Liencese-Identifier: GPL-2.0

Is it correct?


Thanks & BRs
Jeff Chang
Tel 886-3-5526789 Ext 2357
14F, No. 8, Taiyuen 1st st., Zhubei City,
Hsinchu County, Taiwan 30288



-----Original Message-----
From: Mark Brown [mailto:broonie@xxxxxxxxxx]
Sent: Friday, December 20, 2019 8:12 PM
To: Jeff Chang <richtek.jeff.chang@xxxxxxxxx>
Cc: lgirdwood@xxxxxxxxx; perex@xxxxxxxx; tiwai@xxxxxxxx; matthias.bgg@xxxxxxxxx; alsa-devel@xxxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; jeff_chang(張世佳) <jeff_chang@xxxxxxxxxxx>
Subject: Re: [PATCH] ASoC: Add MediaTek MT6660 Speaker Amp Driver

On Fri, Dec 20, 2019 at 06:15:34PM +0800, Jeff Chang wrote:

> +++ b/sound/soc/codecs/mt6660.c
> @@ -0,0 +1,653 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2019 MediaTek Inc.
> + */

Please make the entire comment a C++ one so things look more intentional.

> +{ MT6660_REG_DEVID, 2},
> +{ MT6660_REG_TDM_CFG3, 2},
> +{ MT6660_REG_HCLIP_CTRL, 2},
> +{ MT6660_REG_DA_GAIN, 2},

Missing space before the } (the same thing happens in some of the other tables).

> +static int mt6660_component_get_volsw(struct snd_kcontrol *kcontrol,
> + struct snd_ctl_elem_value *ucontrol) {
> +struct snd_soc_component *component =
> +snd_soc_kcontrol_component(kcontrol);
> +struct mt6660_chip *chip = (struct mt6660_chip *)
> +snd_soc_component_get_drvdata(component);
> +int ret = -EINVAL;
> +
> +if (!strcmp(kcontrol->id.name, "Chip_Rev")) {

Why would this be used on a different control?

> +SOC_SINGLE_EXT("BoostMode", MT6660_REG_BST_CTRL, 0, 3, 0,
> + snd_soc_get_volsw, snd_soc_put_volsw),

Boost Mode. You've also got a lot of these controls that are _EXT but you then just use standard operations so it's not clear why you're using _EXT.

> +SOC_SINGLE_EXT("audio input selection", MT6660_REG_DATAO_SEL, 6, 3, 0,
> + snd_soc_get_volsw, snd_soc_put_volsw),

Audio Input Selection, but this looks like it should be a DAPM control if it's controlling audio routing. A simple numerical setting definitely doesn't seem like the right thing.

> +SOC_SINGLE_EXT("AUD LOOP BACK Switch", MT6660_REG_PATH_BYPASS, 4, 1, 0,
> + snd_soc_get_volsw, snd_soc_put_volsw),

This sounds like it should be a DAPM thing too.

> +static int mt6660_component_probe(struct snd_soc_component
> +*component) {
> +struct mt6660_chip *chip = snd_soc_component_get_drvdata(component);
> +int ret = 0;
> +
> +dev_info(component->dev, "%s\n", __func__);

dev_dbg() at most but probably better to remove this and the other similar dev_info()s.

> +static inline int _mt6660_chip_id_check(struct mt6660_chip *chip) {
> +u8 id[2] = {0};
> +int ret = 0;
> +
> +ret = i2c_smbus_read_i2c_block_data(chip->i2c, MT6660_REG_DEVID, 2, id);
> +if (ret < 0)
> +return ret;
> +ret = (id[0] << 8) + id[1];
> +ret &= 0x0ff0;
> +if (ret != 0x00e0 && ret != 0x01e0)
> +return -ENODEV;

It'd be better to print an error message saying we don't recognize the device to help people doing debugging.

> +if (of_property_read_u32(np, "rt,init_setting_num", &val)) {
> +dev_info(dev, "no init setting\n");
> +chip->plat_data.init_setting_num = 0;

You should be adding a DT binding document for any new DT bindings.
************* Email Confidentiality Notice ********************

The information contained in this e-mail message (including any attachments) may be confidential, proprietary, privileged, or otherwise exempt from disclosure under applicable laws. It is intended to be conveyed only to the designated recipient(s). Any use, dissemination, distribution, printing, retaining or copying of this e-mail (including its attachments) by unintended recipient(s) is strictly prohibited and may be unlawful. If you are not an intended recipient of this e-mail, or believe that you have received this e-mail in error, please notify the sender immediately (by replying to this e-mail), delete any and all copies of this e-mail (including any attachments) from your system, and do not disclose the content of this e-mail to any other person. Thank you!