From patchwork Sat Oct 24 06:41:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxin Yu X-Patchwork-Id: 11854705 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E93C8157C for ; Sat, 24 Oct 2020 06:41:52 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6E5422225F for ; Sat, 24 Oct 2020 06:41:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="B2SgiYJ8"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="DtJH2YXm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6E5422225F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=9XeXKdLIJ1FggsV9yN8Or8jV0NWVzDL50DwGl+7/5zk=; b=B2SgiYJ8YUJbvqZTqCqSVAQMs o4cjQjJIKHTbTTtuy1fJBZLgUIlI7s9wCO0FrF14FK9OX7rBHDdzduGpdGTyodLMXZ6ZszWLv8Xsi vk0NUCPgpe0J0c5m1LoQVMrNBASBhuY0bD//VaXkaBwlTKcZi8erQOQYf9NOIsxOLr/KeqIvSZDVL pxMLlgzdusGiXAzbCv7izCujoZOmvvJAFebP0qtRTvQz76fNRUrEWK7nIEo06XduPw8p5TAWriJYW VHLPjq6j3jdBT2kw2OdkNlKOquLmz7s8TKBbiEV9ZitQ7jkD55hCu2X534pQkWxQas2MBotLUNFqP EXGrxMgSA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kWDFN-0004dw-5c; Sat, 24 Oct 2020 06:41:49 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kWDFI-0004dC-7o; Sat, 24 Oct 2020 06:41:46 +0000 X-UUID: 69d02474ade143f5804d245336363e22-20201023 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=eMseszq2LMKp8DF0+brP69RgUkalkJoCAr4vCF2JXvY=; b=DtJH2YXmsPm2gzH5NGJKRUoBbObKreRrOpkOTQ0oy21f94j1LEbyKEGLOFIQ7F58Ec2qF1/i5E0QZikU1EwOVOGWfWV3T6A271I1cd0gZNAdlFsytysbyCVN8IZQY3wAtapwG/8mxZZXMp4gVS7PhzjO9Vi+u/5/E9PXIYsvG1k=; X-UUID: 69d02474ade143f5804d245336363e22-20201023 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1997008353; Fri, 23 Oct 2020 22:41:33 -0800 Received: from mtkmbs07n1.mediatek.inc (172.21.101.16) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 23 Oct 2020 23:41:31 -0700 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 24 Oct 2020 14:41:29 +0800 Received: from localhost.localdomain (10.17.3.153) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 24 Oct 2020 14:41:29 +0800 From: Jiaxin Yu To: , , , , , , , , Subject: [PATCH 1/2] ASoC: mt6359: skip first time data at the beginning of DMIC recording Date: Sat, 24 Oct 2020 14:41:25 +0800 Message-ID: <1603521686-13036-2-git-send-email-jiaxin.yu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1603521686-13036-1-git-send-email-jiaxin.yu@mediatek.com> References: <1603521686-13036-1-git-send-email-jiaxin.yu@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201024_024144_441460_4ED12076 X-CRM114-Status: GOOD ( 18.43 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 MIME_BASE64_TEXT RAW: Message text disguised using base64 encoding -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: shane.chien@mediatek.com, Jiaxin Yu Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org We can choose to drop away any length of data from the beginning according to project needs. Some projects don't want to throw away any data, because they want to use recorded data to do echo cancellation, so they have to make sure that they are aligned with the reference data as much as possible. Or there are other algorithms in the upper layer to eliminate this noise. Or some projects want to eliminate this noise form the kernel layer. However, the minimum recommended value is 50ms to skip pop noise. Signed-off-by: Jiaxin Yu --- sound/soc/codecs/mt6359.c | 38 ++++++++++++++++++++++++++++++++++---- sound/soc/codecs/mt6359.h | 1 + 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/mt6359.c b/sound/soc/codecs/mt6359.c index 81aafb553bdd9..9a68656a9f731 100644 --- a/sound/soc/codecs/mt6359.c +++ b/sound/soc/codecs/mt6359.c @@ -1276,6 +1276,29 @@ static int mt_mtkaif_tx_event(struct snd_soc_dapm_widget *w, return 0; } +static int mt_ul_src_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, + int event) +{ + struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); + struct mt6359_priv *priv = snd_soc_component_get_drvdata(cmpnt); + unsigned int time = priv->ul_delay_ms; + + dev_dbg(priv->dev, "%s(), event = 0x%x\n", __func__, event); + + switch (event) { + case SND_SOC_DAPM_POST_PMU: + /* skip first time data to avoid recording pop noise */ + if (time) + usleep_range(1000 * time, 1000 * (time + 1)); + break; + default: + break; + } + + return 0; +} + static int mt_ul_src_dmic_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) @@ -2050,9 +2073,8 @@ static const struct snd_soc_dapm_widget mt6359_dapm_widgets[] = { SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_SUPPLY_S("UL_SRC", SUPPLY_SEQ_UL_SRC, - MT6359_AFE_UL_SRC_CON0_L, - UL_SRC_ON_TMP_CTL_SFT, 0, - NULL, 0), + MT6359_AFE_UL_SRC_CON0_L, UL_SRC_ON_TMP_CTL_SFT, + 0, mt_ul_src_event, SND_SOC_DAPM_POST_PMU), SND_SOC_DAPM_SUPPLY_S("UL_SRC_DMIC", SUPPLY_SEQ_UL_SRC_DMIC, SND_SOC_NOPM, 0, 0, @@ -2062,7 +2084,7 @@ static const struct snd_soc_dapm_widget mt6359_dapm_widgets[] = { SND_SOC_DAPM_SUPPLY_S("UL_SRC_34", SUPPLY_SEQ_UL_SRC, MT6359_AFE_ADDA6_UL_SRC_CON0_L, ADDA6_UL_SRC_ON_TMP_CTL_SFT, 0, - NULL, 0), + mt_ul_src_event, SND_SOC_DAPM_POST_PMU), SND_SOC_DAPM_SUPPLY_S("UL_SRC_34_DMIC", SUPPLY_SEQ_UL_SRC_DMIC, SND_SOC_NOPM, 0, 0, @@ -2674,6 +2696,14 @@ static int mt6359_parse_dt(struct mt6359_priv *priv) priv->mux_select[MUX_MIC_TYPE_2] = MIC_TYPE_MUX_IDLE; } + ret = of_property_read_u32(np, "mediatek,ul-delay-ms", + &priv->ul_delay_ms); + if (ret) { + dev_warn(priv->dev, "%s() failed to read ul-delay-ms\n", + __func__); + priv->ul_delay_ms = 0; + } + return 0; } diff --git a/sound/soc/codecs/mt6359.h b/sound/soc/codecs/mt6359.h index 3792e534a91b6..de66e49b17011 100644 --- a/sound/soc/codecs/mt6359.h +++ b/sound/soc/codecs/mt6359.h @@ -2625,6 +2625,7 @@ struct mt6359_priv { int ana_gain[AUDIO_ANALOG_VOLUME_TYPE_MAX]; unsigned int mux_select[MUX_NUM]; unsigned int dmic_one_wire_mode; + unsigned int ul_delay_ms; int dev_counter[DEVICE_NUM]; int hp_gain_ctl; int hp_hifi_mode; From patchwork Sat Oct 24 06:41:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiaxin Yu X-Patchwork-Id: 11854717 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5655661C for ; Sat, 24 Oct 2020 06:51:47 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0876820829 for ; Sat, 24 Oct 2020 06:51:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="mEAvq+pg"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="djoDf9K8" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0876820829 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=mWe94/tva7t03P12Gcrgu2aUH06LNnrEYHMUP7mDpEU=; b=mEAvq+pgW6Fq6kntH1irmG1hT bikCN0nODfpw3nY1BqEtno6vrJoEDFhU2qIhEwXB29LiDZrYzCg1WY1ec7jXm8AhSuQH2HktnHUg+ 9CL5T62vB9zJqOR4ssmkdpMjZqy9FIIJNdOzLF5qEXZVmVIdYZcs0poE+K+vX+0YzQCtsF6d71axn 74zqpnP06fgjqy0TWzyBGi9ReFmtt8Q2/h3wkz0dycmdqrjJkdmBAFqYxloGgiPzWh7+EsBcE/+Bu 9/ZFY5JOKZWFN6JEijCPSLMv0+AWA+W0YsO0FzKCR1s9kteqtkKwXOoVISyKkDDL299KKKf6vK9Z4 yq2Sa3Tbg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kWDOx-0005Rh-Ka; Sat, 24 Oct 2020 06:51:43 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kWDOt-0005Qh-Ct; Sat, 24 Oct 2020 06:51:40 +0000 X-UUID: 9d96956bf17c47a3b70ad6de07cfb814-20201023 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=z8uG4a3bYliZ7FsgCx8o/eOtrJLS0cww4SngmK83wEA=; b=djoDf9K8nRyrU9Vt5oEHrHdVZaNaEyHIqQOLdV+uXwkOVhmnqmSXE3r3MAw8RyJu2L3e6qpe/1rh0n0/QY6MRwn63hIeq643gV+gCH5u/vWL2tDHN2qgeHf9a+VfFxDCDxMq2hLjwbGPqkiYrPpxUXdNHhnj9SpEsVFKK5vF6u4=; X-UUID: 9d96956bf17c47a3b70ad6de07cfb814-20201023 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 59809210; Fri, 23 Oct 2020 22:51:33 -0800 Received: from MTKMBS07N2.mediatek.inc (172.21.101.141) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 23 Oct 2020 23:41:31 -0700 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 24 Oct 2020 14:41:29 +0800 Received: from localhost.localdomain (10.17.3.153) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 24 Oct 2020 14:41:29 +0800 From: Jiaxin Yu To: , , , , , , , , Subject: [PATCH 2/2] dt-bindings: mediatek: mt8192: add ul-delay-ms property Date: Sat, 24 Oct 2020 14:41:26 +0800 Message-ID: <1603521686-13036-3-git-send-email-jiaxin.yu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1603521686-13036-1-git-send-email-jiaxin.yu@mediatek.com> References: <1603521686-13036-1-git-send-email-jiaxin.yu@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201024_025139_642519_41271C0F X-CRM114-Status: GOOD ( 10.42 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 MIME_BASE64_TEXT RAW: Message text disguised using base64 encoding -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: shane.chien@mediatek.com, Jiaxin Yu Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org We can choose to drop any length of data from the beginning according accroding 'ul-delay-ms'. Signed-off-by: Jiaxin Yu --- Documentation/devicetree/bindings/sound/mt6359.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/sound/mt6359.yaml b/Documentation/devicetree/bindings/sound/mt6359.yaml index a54f466f769d4..fd2d02c97fe7c 100644 --- a/Documentation/devicetree/bindings/sound/mt6359.yaml +++ b/Documentation/devicetree/bindings/sound/mt6359.yaml @@ -49,6 +49,11 @@ properties: description: | Specifies the type of mic type connected to adc2 + mediatek,ul-delay-ms: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + Skip first time data at the beginning of DMIC recording + additionalProperties: false examples: @@ -56,6 +61,7 @@ examples: mt6359codec: mt6359codec { mediatek,dmic-mode = <0>; mediatek,mic-type-0 = <2>; + mediatek,ul-delay-ms = <50>; }; ...