From patchwork Fri Aug 14 09:32:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shengjiu Wang X-Patchwork-Id: 247698 Delivered-To: patch@linaro.org Received: by 2002:a92:cc90:0:0:0:0:0 with SMTP id x16csp219558ilo; Fri, 14 Aug 2020 02:37:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynDtU1mUha0+9T819kLHPEFTd5JqLJcqxeulsogV43yYXdOjcNwJ7ZZnmF7Bud2IZALf/4 X-Received: by 2002:a17:906:a141:: with SMTP id bu1mr1507486ejb.303.1597397879003; Fri, 14 Aug 2020 02:37:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597397878; cv=none; d=google.com; s=arc-20160816; b=BIodSkpwc0NeZtemqNigysy2KVJCSddWVeOmS0JJV0WDBwE4GPYBhvntd3I19j9K1B TzhPcDnStl8ql4ocOb7ddWTbRNeZo7nH+tngbpLHzmnAI+eZNmj24mQR20gMTQ8x9ntj sRnnvliNNhILk2KOYj+NFsuPHJ4qVkm4Hn8gV6n4P7hGY+t3YTHDIZik3B0uJ6ffX2Lc 9vqwMqa2Dt2Lz+i5TKyhyw50kWtutYvtZbj2c/UNl6pZmCmZOpAaKIWyq44nv7pl3XqQ 6Vl4XlpDIV39O3PuOFqEEZm8I6yAvQLlnzaJouw0o7qLcTUtGu+ULaP8S1quMlHXfQoi Bghg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:to:from; bh=SEEG0rR1FX5W5/3ko0BolNHgbMzfUSTJ6BFdpmNPCJk=; b=YB5GOC+AxGLd/VOU7oD0q9Tl34Uj4NjtG5Q+48En+Ygps3e9SdIatccPTtWwUmSUWh swo9tJWGvrClFIALFjY81kkTIUA+I5hlkuD13khKUvnQNI+wOK2wcQjzo5q9TFBMNbYn vUAE5IxdxJs7IZvJwgh1ySkV95Qj94b+/welB0ocSUhVhv7CGT1YriePqeKDcXWyFFWe 4vWM76UzoJIJZwqC5dSh2hBH4yTIeM9T8kF6JAahFYipvuTEcd02+qlYbohYL6E31lkM dgMGRroBthuGTa3KYIRHZQDl8cFC+aPX8vmL3Uw/uM0StHn49H9up1pBji0JYXcsSIfd mcvQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h14si4869060eds.339.2020.08.14.02.37.58; Fri, 14 Aug 2020 02:37:58 -0700 (PDT) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726680AbgHNJh6 (ORCPT + 6 others); Fri, 14 Aug 2020 05:37:58 -0400 Received: from inva020.nxp.com ([92.121.34.13]:42030 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726227AbgHNJh6 (ORCPT ); Fri, 14 Aug 2020 05:37:58 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 73E181A0391; Fri, 14 Aug 2020 11:37:56 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 132D51A0387; Fri, 14 Aug 2020 11:37:53 +0200 (CEST) Received: from 10.192.242.69 (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 82B3B402C1; Fri, 14 Aug 2020 11:37:48 +0200 (CEST) From: Shengjiu Wang To: lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, devicetree@vger.kernel.org Subject: [PATCH 1/2] ASoC: dt-bindings: ak4458: Add power supply property Date: Fri, 14 Aug 2020 17:32:40 +0800 Message-Id: <1597397561-2426-1-git-send-email-shengjiu.wang@nxp.com> X-Mailer: git-send-email 2.7.4 X-Virus-Scanned: ClamAV using ClamSMTP Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org AVDD-supply is for Analog power supply DVDD-supply is for Digital power supply Signed-off-by: Shengjiu Wang --- Documentation/devicetree/bindings/sound/ak4458.txt | 2 ++ 1 file changed, 2 insertions(+) -- 2.27.0 diff --git a/Documentation/devicetree/bindings/sound/ak4458.txt b/Documentation/devicetree/bindings/sound/ak4458.txt index e5820235e0d5..8f6c84f21468 100644 --- a/Documentation/devicetree/bindings/sound/ak4458.txt +++ b/Documentation/devicetree/bindings/sound/ak4458.txt @@ -10,6 +10,8 @@ Required properties: Optional properties: - reset-gpios: A GPIO specifier for the power down & reset pin - mute-gpios: A GPIO specifier for the soft mute pin +- AVDD-supply: Analog power supply +- DVDD-supply: Digital power supply Example: From patchwork Fri Aug 14 09:32:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shengjiu Wang X-Patchwork-Id: 247699 Delivered-To: patch@linaro.org Received: by 2002:a92:cc90:0:0:0:0:0 with SMTP id x16csp219679ilo; Fri, 14 Aug 2020 02:38:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxxcQzobg2q0FR5C10EfHzFRK3hy9CGkiKUZgu4xT9DekVn5VWyGNWQCel6nupafjPaiMPd X-Received: by 2002:a17:907:7255:: with SMTP id ds21mr1676464ejc.44.1597397892641; Fri, 14 Aug 2020 02:38:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597397892; cv=none; d=google.com; s=arc-20160816; b=fHQRilRoQVkwmN/AoJWrsUzYnOnWhO9oHLDyxyPPE0fzzBRXcb5Mrve2nkzkQh2ICb /lo3LoYZLyZHJTS98Hslv4pKhQN0gnFo0SkwDBLtLOUQl56NO6bmdHvAEFnDz1y5KvZH mi5gJSF15gAHSdGZFBij1hYI477bm3LO0VQHQBiFC122sr1+0BiQ0AYK/wttgTByEc/B h9ZZ+eIAlcsP3Cno9tiyzPjqH2TeKpphlTPsxE3CbH1L9YvvyA4vsx1gZsYRyoeusFqX 6/k79seE0g/c5a9kC6keVUDhzrOa/v8fqDvZ7LIIPuDCs2m8VpKD7sJAYKxO+jPucrLP E2eQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:to:from; bh=+xES0nQpi1A93MwQdkTxB+blFf9OsPOzSBJM5xEec2U=; b=gxISP1MV4mlrMBwkrVIvpOAD7oxJglSMhJlFeI3V9WoDILd0qQQncn3xpB2372yISZ rQex6rMNyoq5QusdTiV3Ooi0SFdz8LWJVecC4qEAs5K0j2FLsx2OWqHlQP6s+gJgYB45 RsIvqYm0jDFrFoEmkqWeCB87rYNxydDjFF7IMVmUv02QdXgt1E/I8FPACaMi7g4xyaIz xCc9GOvbjR4xVqBF43lgjwrK9HMbuZj3MDq0rKGYSJLZ1VduHgTs9dDx38hWsksLXoqG thn+ieBQCxy7HWul5cjr/O4dqdNKdx38Od2y39Pl55jYhQtuv9fVnQTywAenyprEY60t aoow== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gw21si4919774ejb.656.2020.08.14.02.38.12; Fri, 14 Aug 2020 02:38:12 -0700 (PDT) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726741AbgHNJiF (ORCPT + 6 others); Fri, 14 Aug 2020 05:38:05 -0400 Received: from inva021.nxp.com ([92.121.34.21]:56394 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726227AbgHNJiF (ORCPT ); Fri, 14 Aug 2020 05:38:05 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 10F5D2011EB; Fri, 14 Aug 2020 11:38:03 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id A7DAF2000BB; Fri, 14 Aug 2020 11:37:59 +0200 (CEST) Received: from 10.192.242.69 (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 2E206402C9; Fri, 14 Aug 2020 11:37:55 +0200 (CEST) From: Shengjiu Wang To: lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, devicetree@vger.kernel.org Subject: [PATCH 2/2] ASoC: ak4458: Add regulator support Date: Fri, 14 Aug 2020 17:32:41 +0800 Message-Id: <1597397561-2426-2-git-send-email-shengjiu.wang@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1597397561-2426-1-git-send-email-shengjiu.wang@nxp.com> References: <1597397561-2426-1-git-send-email-shengjiu.wang@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org "AVDD" is for analog power supply, "DVDD" is for digital power supply, they can improve the power management. As the regulator is enabled in pm runtime resume, which is behind the component driver probe, so accessing registers in component driver probe will fail. Fix this issue by enabling regcache_cache_only after pm_runtime_enable. Signed-off-by: Shengjiu Wang --- sound/soc/codecs/ak4458.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) -- 2.27.0 diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c index cbe3c782e0ca..763e6839428f 100644 --- a/sound/soc/codecs/ak4458.c +++ b/sound/soc/codecs/ak4458.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -21,6 +22,12 @@ #include "ak4458.h" +#define AK4458_NUM_SUPPLIES 2 +static const char *ak4458_supply_names[AK4458_NUM_SUPPLIES] = { + "DVDD", + "AVDD", +}; + struct ak4458_drvdata { struct snd_soc_dai_driver *dai_drv; const struct snd_soc_component_driver *comp_drv; @@ -28,6 +35,7 @@ struct ak4458_drvdata { /* AK4458 Codec Private Data */ struct ak4458_priv { + struct regulator_bulk_data supplies[AK4458_NUM_SUPPLIES]; struct device *dev; struct regmap *regmap; struct gpio_desc *reset_gpiod; @@ -587,12 +595,22 @@ static int __maybe_unused ak4458_runtime_suspend(struct device *dev) if (ak4458->mute_gpiod) gpiod_set_value_cansleep(ak4458->mute_gpiod, 0); + regulator_bulk_disable(ARRAY_SIZE(ak4458->supplies), + ak4458->supplies); return 0; } static int __maybe_unused ak4458_runtime_resume(struct device *dev) { struct ak4458_priv *ak4458 = dev_get_drvdata(dev); + int ret; + + ret = regulator_bulk_enable(ARRAY_SIZE(ak4458->supplies), + ak4458->supplies); + if (ret != 0) { + dev_err(ak4458->dev, "Failed to enable supplies: %d\n", ret); + return ret; + } if (ak4458->mute_gpiod) gpiod_set_value_cansleep(ak4458->mute_gpiod, 1); @@ -667,7 +685,7 @@ static int ak4458_i2c_probe(struct i2c_client *i2c) { struct ak4458_priv *ak4458; const struct ak4458_drvdata *drvdata; - int ret; + int ret, i; ak4458 = devm_kzalloc(&i2c->dev, sizeof(*ak4458), GFP_KERNEL); if (!ak4458) @@ -692,6 +710,16 @@ static int ak4458_i2c_probe(struct i2c_client *i2c) if (IS_ERR(ak4458->mute_gpiod)) return PTR_ERR(ak4458->mute_gpiod); + for (i = 0; i < ARRAY_SIZE(ak4458->supplies); i++) + ak4458->supplies[i].supply = ak4458_supply_names[i]; + + ret = devm_regulator_bulk_get(ak4458->dev, ARRAY_SIZE(ak4458->supplies), + ak4458->supplies); + if (ret != 0) { + dev_err(ak4458->dev, "Failed to request supplies: %d\n", ret); + return ret; + } + ret = devm_snd_soc_register_component(ak4458->dev, drvdata->comp_drv, drvdata->dai_drv, 1); if (ret < 0) { @@ -700,6 +728,7 @@ static int ak4458_i2c_probe(struct i2c_client *i2c) } pm_runtime_enable(&i2c->dev); + regcache_cache_only(ak4458->regmap, true); return 0; }