From: Thierry Reding <thierry.reding@gmail.com>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: alsa-devel@alsa-project.org, Nicolas Chauvet <kwizart@gmail.com>,
linux-kernel@vger.kernel.org, Sameer Pujar <spujar@nvidia.com>,
Takashi Iwai <tiwai@suse.com>, Peter Geis <pgwipeout@gmail.com>,
linux-tegra@vger.kernel.org,
Jonathan Hunter <jonathanh@nvidia.com>
Subject: Re: [PATCH v1 1/5] ALSA: hda/tegra: Use clk_bulk helpers
Date: Fri, 15 Jan 2021 16:22:12 +0100 [thread overview]
Message-ID: <YAGzJM7BJqLV0xxY@ulmo> (raw)
In-Reply-To: <20210112125834.21545-2-digetx@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4187 bytes --]
On Tue, Jan 12, 2021 at 03:58:30PM +0300, Dmitry Osipenko wrote:
> Use clk_bulk helpers to make code cleaner.
>
> Tested-by: Peter Geis <pgwipeout@gmail.com>
> Tested-by: Nicolas Chauvet <kwizart@gmail.com>
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
> sound/pci/hda/hda_tegra.c | 68 ++++++---------------------------------
> 1 file changed, 9 insertions(+), 59 deletions(-)
Heh... I have a branch samewhere with this same patch. Glad I can cross
that off my list. One thing jumped out at me, see below.
> diff --git a/sound/pci/hda/hda_tegra.c b/sound/pci/hda/hda_tegra.c
> index 70164d1428d4..4c799661c2f6 100644
> --- a/sound/pci/hda/hda_tegra.c
> +++ b/sound/pci/hda/hda_tegra.c
> @@ -70,9 +70,8 @@
> struct hda_tegra {
> struct azx chip;
> struct device *dev;
> - struct clk *hda_clk;
> - struct clk *hda2codec_2x_clk;
> - struct clk *hda2hdmi_clk;
> + struct clk_bulk_data clocks[3];
> + unsigned int nclocks;
> void __iomem *regs;
> struct work_struct probe_work;
> };
> @@ -113,36 +112,6 @@ static void hda_tegra_init(struct hda_tegra *hda)
> writel(v, hda->regs + HDA_IPFS_INTR_MASK);
> }
>
> -static int hda_tegra_enable_clocks(struct hda_tegra *data)
> -{
> - int rc;
> -
> - rc = clk_prepare_enable(data->hda_clk);
> - if (rc)
> - return rc;
> - rc = clk_prepare_enable(data->hda2codec_2x_clk);
> - if (rc)
> - goto disable_hda;
> - rc = clk_prepare_enable(data->hda2hdmi_clk);
> - if (rc)
> - goto disable_codec_2x;
> -
> - return 0;
> -
> -disable_codec_2x:
> - clk_disable_unprepare(data->hda2codec_2x_clk);
> -disable_hda:
> - clk_disable_unprepare(data->hda_clk);
> - return rc;
> -}
> -
> -static void hda_tegra_disable_clocks(struct hda_tegra *data)
> -{
> - clk_disable_unprepare(data->hda2hdmi_clk);
> - clk_disable_unprepare(data->hda2codec_2x_clk);
> - clk_disable_unprepare(data->hda_clk);
> -}
> -
> /*
> * power management
> */
> @@ -186,7 +155,7 @@ static int __maybe_unused hda_tegra_runtime_suspend(struct device *dev)
> azx_stop_chip(chip);
> azx_enter_link_reset(chip);
> }
> - hda_tegra_disable_clocks(hda);
> + clk_bulk_disable_unprepare(hda->nclocks, hda->clocks);
>
> return 0;
> }
> @@ -198,7 +167,7 @@ static int __maybe_unused hda_tegra_runtime_resume(struct device *dev)
> struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip);
> int rc;
>
> - rc = hda_tegra_enable_clocks(hda);
> + rc = clk_bulk_prepare_enable(hda->nclocks, hda->clocks);
> if (rc != 0)
> return rc;
> if (chip && chip->running) {
> @@ -268,29 +237,6 @@ static int hda_tegra_init_chip(struct azx *chip, struct platform_device *pdev)
> return 0;
> }
>
> -static int hda_tegra_init_clk(struct hda_tegra *hda)
> -{
> - struct device *dev = hda->dev;
> -
> - hda->hda_clk = devm_clk_get(dev, "hda");
> - if (IS_ERR(hda->hda_clk)) {
> - dev_err(dev, "failed to get hda clock\n");
> - return PTR_ERR(hda->hda_clk);
> - }
> - hda->hda2codec_2x_clk = devm_clk_get(dev, "hda2codec_2x");
> - if (IS_ERR(hda->hda2codec_2x_clk)) {
> - dev_err(dev, "failed to get hda2codec_2x clock\n");
> - return PTR_ERR(hda->hda2codec_2x_clk);
> - }
> - hda->hda2hdmi_clk = devm_clk_get(dev, "hda2hdmi");
> - if (IS_ERR(hda->hda2hdmi_clk)) {
> - dev_err(dev, "failed to get hda2hdmi clock\n");
> - return PTR_ERR(hda->hda2hdmi_clk);
> - }
> -
> - return 0;
> -}
> -
> static int hda_tegra_first_init(struct azx *chip, struct platform_device *pdev)
> {
> struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip);
> @@ -495,7 +441,11 @@ static int hda_tegra_probe(struct platform_device *pdev)
> return err;
> }
>
> - err = hda_tegra_init_clk(hda);
> + hda->clocks[hda->nclocks++].id = "hda";
> + hda->clocks[hda->nclocks++].id = "hda2hdmi";
> + hda->clocks[hda->nclocks++].id = "hda2codec_2x";
Originally the code did this in this order: "hda", "hda2codec_2x" and
"hda2hdmi". I don't expect the exact order to be very relevant, but was
there any particular reason to change it?
In either case, this should be fine:
Acked-by: Thierry Reding <treding@nvidia.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Thierry Reding <thierry.reding@gmail.com>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: Jonathan Hunter <jonathanh@nvidia.com>,
Sameer Pujar <spujar@nvidia.com>,
Peter Geis <pgwipeout@gmail.com>,
Nicolas Chauvet <kwizart@gmail.com>,
Takashi Iwai <tiwai@suse.com>, Jaroslav Kysela <perex@perex.cz>,
alsa-devel@alsa-project.org, linux-tegra@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 1/5] ALSA: hda/tegra: Use clk_bulk helpers
Date: Fri, 15 Jan 2021 16:22:12 +0100 [thread overview]
Message-ID: <YAGzJM7BJqLV0xxY@ulmo> (raw)
In-Reply-To: <20210112125834.21545-2-digetx@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4187 bytes --]
On Tue, Jan 12, 2021 at 03:58:30PM +0300, Dmitry Osipenko wrote:
> Use clk_bulk helpers to make code cleaner.
>
> Tested-by: Peter Geis <pgwipeout@gmail.com>
> Tested-by: Nicolas Chauvet <kwizart@gmail.com>
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
> sound/pci/hda/hda_tegra.c | 68 ++++++---------------------------------
> 1 file changed, 9 insertions(+), 59 deletions(-)
Heh... I have a branch samewhere with this same patch. Glad I can cross
that off my list. One thing jumped out at me, see below.
> diff --git a/sound/pci/hda/hda_tegra.c b/sound/pci/hda/hda_tegra.c
> index 70164d1428d4..4c799661c2f6 100644
> --- a/sound/pci/hda/hda_tegra.c
> +++ b/sound/pci/hda/hda_tegra.c
> @@ -70,9 +70,8 @@
> struct hda_tegra {
> struct azx chip;
> struct device *dev;
> - struct clk *hda_clk;
> - struct clk *hda2codec_2x_clk;
> - struct clk *hda2hdmi_clk;
> + struct clk_bulk_data clocks[3];
> + unsigned int nclocks;
> void __iomem *regs;
> struct work_struct probe_work;
> };
> @@ -113,36 +112,6 @@ static void hda_tegra_init(struct hda_tegra *hda)
> writel(v, hda->regs + HDA_IPFS_INTR_MASK);
> }
>
> -static int hda_tegra_enable_clocks(struct hda_tegra *data)
> -{
> - int rc;
> -
> - rc = clk_prepare_enable(data->hda_clk);
> - if (rc)
> - return rc;
> - rc = clk_prepare_enable(data->hda2codec_2x_clk);
> - if (rc)
> - goto disable_hda;
> - rc = clk_prepare_enable(data->hda2hdmi_clk);
> - if (rc)
> - goto disable_codec_2x;
> -
> - return 0;
> -
> -disable_codec_2x:
> - clk_disable_unprepare(data->hda2codec_2x_clk);
> -disable_hda:
> - clk_disable_unprepare(data->hda_clk);
> - return rc;
> -}
> -
> -static void hda_tegra_disable_clocks(struct hda_tegra *data)
> -{
> - clk_disable_unprepare(data->hda2hdmi_clk);
> - clk_disable_unprepare(data->hda2codec_2x_clk);
> - clk_disable_unprepare(data->hda_clk);
> -}
> -
> /*
> * power management
> */
> @@ -186,7 +155,7 @@ static int __maybe_unused hda_tegra_runtime_suspend(struct device *dev)
> azx_stop_chip(chip);
> azx_enter_link_reset(chip);
> }
> - hda_tegra_disable_clocks(hda);
> + clk_bulk_disable_unprepare(hda->nclocks, hda->clocks);
>
> return 0;
> }
> @@ -198,7 +167,7 @@ static int __maybe_unused hda_tegra_runtime_resume(struct device *dev)
> struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip);
> int rc;
>
> - rc = hda_tegra_enable_clocks(hda);
> + rc = clk_bulk_prepare_enable(hda->nclocks, hda->clocks);
> if (rc != 0)
> return rc;
> if (chip && chip->running) {
> @@ -268,29 +237,6 @@ static int hda_tegra_init_chip(struct azx *chip, struct platform_device *pdev)
> return 0;
> }
>
> -static int hda_tegra_init_clk(struct hda_tegra *hda)
> -{
> - struct device *dev = hda->dev;
> -
> - hda->hda_clk = devm_clk_get(dev, "hda");
> - if (IS_ERR(hda->hda_clk)) {
> - dev_err(dev, "failed to get hda clock\n");
> - return PTR_ERR(hda->hda_clk);
> - }
> - hda->hda2codec_2x_clk = devm_clk_get(dev, "hda2codec_2x");
> - if (IS_ERR(hda->hda2codec_2x_clk)) {
> - dev_err(dev, "failed to get hda2codec_2x clock\n");
> - return PTR_ERR(hda->hda2codec_2x_clk);
> - }
> - hda->hda2hdmi_clk = devm_clk_get(dev, "hda2hdmi");
> - if (IS_ERR(hda->hda2hdmi_clk)) {
> - dev_err(dev, "failed to get hda2hdmi clock\n");
> - return PTR_ERR(hda->hda2hdmi_clk);
> - }
> -
> - return 0;
> -}
> -
> static int hda_tegra_first_init(struct azx *chip, struct platform_device *pdev)
> {
> struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip);
> @@ -495,7 +441,11 @@ static int hda_tegra_probe(struct platform_device *pdev)
> return err;
> }
>
> - err = hda_tegra_init_clk(hda);
> + hda->clocks[hda->nclocks++].id = "hda";
> + hda->clocks[hda->nclocks++].id = "hda2hdmi";
> + hda->clocks[hda->nclocks++].id = "hda2codec_2x";
Originally the code did this in this order: "hda", "hda2codec_2x" and
"hda2hdmi". I don't expect the exact order to be very relevant, but was
there any particular reason to change it?
In either case, this should be fine:
Acked-by: Thierry Reding <treding@nvidia.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2021-01-15 15:23 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-12 12:58 [PATCH v1 0/5] Clock and reset improvements for Tegra ALSA drivers Dmitry Osipenko
2021-01-12 12:58 ` Dmitry Osipenko
2021-01-12 12:58 ` [PATCH v1 1/5] ALSA: hda/tegra: Use clk_bulk helpers Dmitry Osipenko
2021-01-12 12:58 ` Dmitry Osipenko
2021-01-15 15:22 ` Thierry Reding [this message]
2021-01-15 15:22 ` Thierry Reding
2021-01-17 23:31 ` Dmitry Osipenko
2021-01-17 23:31 ` Dmitry Osipenko
2021-01-19 17:31 ` Thierry Reding
2021-01-19 17:31 ` Thierry Reding
2021-01-12 12:58 ` [PATCH v1 2/5] ALSA: hda/tegra: Reset hardware Dmitry Osipenko
2021-01-12 12:58 ` Dmitry Osipenko
2021-01-15 15:35 ` Thierry Reding
2021-01-15 15:35 ` Thierry Reding
2021-01-17 23:39 ` Dmitry Osipenko
2021-01-17 23:39 ` Dmitry Osipenko
2021-01-19 17:30 ` Thierry Reding
2021-01-19 17:30 ` Thierry Reding
2021-01-12 12:58 ` [PATCH v1 3/5] ASoC: tegra: ahub: Use of_reset_control_array_get_exclusive() Dmitry Osipenko
2021-01-12 12:58 ` Dmitry Osipenko
2021-01-15 15:37 ` Thierry Reding
2021-01-15 15:37 ` Thierry Reding
2021-01-17 23:57 ` Dmitry Osipenko
2021-01-17 23:57 ` Dmitry Osipenko
2021-01-12 12:58 ` [PATCH v1 4/5] ASoC: tegra: ahub: Use clk_bulk helpers Dmitry Osipenko
2021-01-12 12:58 ` Dmitry Osipenko
2021-01-15 15:38 ` Thierry Reding
2021-01-15 15:38 ` Thierry Reding
2021-01-12 12:58 ` [PATCH v1 5/5] ASoC: tegra: ahub: Reset hardware properly Dmitry Osipenko
2021-01-12 12:58 ` Dmitry Osipenko
2021-01-15 13:02 ` Dmitry Osipenko
2021-01-15 13:02 ` Dmitry Osipenko
2021-01-15 15:44 ` Thierry Reding
2021-01-15 15:44 ` Thierry Reding
2021-01-18 0:02 ` Dmitry Osipenko
2021-01-18 0:02 ` Dmitry Osipenko
2021-01-19 17:34 ` Thierry Reding
2021-01-19 17:34 ` Thierry Reding
2021-01-15 10:18 ` [PATCH v1 0/5] Clock and reset improvements for Tegra ALSA drivers Takashi Iwai
2021-01-15 10:18 ` Takashi Iwai
2021-01-15 10:52 ` Ben Dooks
2021-01-15 10:52 ` Ben Dooks
2021-01-15 12:59 ` Dmitry Osipenko
2021-01-15 12:59 ` Dmitry Osipenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YAGzJM7BJqLV0xxY@ulmo \
--to=thierry.reding@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=digetx@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=kwizart@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=pgwipeout@gmail.com \
--cc=spujar@nvidia.com \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.