From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> To: alsa-devel@alsa-project.org Cc: tiwai@suse.de, broonie@kernel.org, Andy Shevchenko <andriy.shevchenko@linux.intel.com>, Daniel Matuschek <daniel@hifiberry.com>, Matthias Reichl <hias@horus.com>, Hui Wang <hui.wang@canonical.com>, linux-gpio@vger.kernel.org, Linus Walleij <linus.walleij@linaro.org>, Bartosz Golaszewski <bgolaszewski@baylibre.com>, linux-clk@vger.kernel.org, Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@kernel.org>, Rob Herring <robh+dt@kernel.org>, Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Subject: [RFC PATCH 04/16] ASoC: Intel: sof-pcm512x: detect Hifiberry DAC+ PRO Date: Thu, 9 Apr 2020 14:58:29 -0500 [thread overview] Message-ID: <20200409195841.18901-5-pierre-louis.bossart@linux.intel.com> (raw) In-Reply-To: <20200409195841.18901-1-pierre-louis.bossart@linux.intel.com> Try to detect HifiBerry 44.1 and 48kHz oscillators on codec init Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> --- sound/soc/intel/boards/sof_pcm512x.c | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/sound/soc/intel/boards/sof_pcm512x.c b/sound/soc/intel/boards/sof_pcm512x.c index dcd769b352fa..c1d2a53c1ec8 100644 --- a/sound/soc/intel/boards/sof_pcm512x.c +++ b/sound/soc/intel/boards/sof_pcm512x.c @@ -46,6 +46,8 @@ struct sof_card_private { struct list_head hdmi_pcm_list; bool idisp_codec; struct gpio_desc *gpio_4; + struct clk *sclk; + bool is_dac_pro; }; static int sof_pcm512x_quirk_cb(const struct dmi_system_id *id) @@ -87,6 +89,59 @@ static int sof_hdmi_init(struct snd_soc_pcm_runtime *rtd) static int sof_pcm512x_codec_init(struct snd_soc_pcm_runtime *rtd) { + struct sof_card_private *ctx = snd_soc_card_get_drvdata(rtd->card); + struct device *dev = rtd->card->dev; + unsigned int sck; + int ret; + + ctx->sclk = devm_clk_get(rtd->card->dev, "sclk"); + if (IS_ERR(ctx->sclk)) { + dev_info(dev, "Could not get SCLK, will operate in SOC master mode\n"); + goto skip_dacpro; + } + + /* + * now we have a clk, see if it's really present or if we are on + * plain vanilla DAC+ + */ + + /* Try 48 kHz */ + clk_set_rate(ctx->sclk, 24576000UL); + ret = clk_prepare_enable(ctx->sclk); + if (ret) { + dev_info(dev, "Failed to enable SCLK for DAC+ PRO 48 kHz: %d\n", ret); + goto skip_dacpro; + } + + snd_soc_component_read(rtd->codec_dai->component, + PCM512x_RATE_DET_4, &sck); + clk_disable_unprepare(ctx->sclk); + if (sck & 0x40) { + dev_info(dev, "No SCLK detected for DAC+ PRO 48 kHz\n"); + goto skip_dacpro; + } + + /* Try 44.1 kHz */ + clk_set_rate(ctx->sclk, 22579200UL); + ret = clk_prepare_enable(ctx->sclk); + if (ret) { + dev_info(dev, "Failed to enable SCLK for DAC+ PRO 44.1 kHz: %d\n", ret); + goto skip_dacpro; + } + + snd_soc_component_read(rtd->codec_dai->component, + PCM512x_RATE_DET_4, &sck); + clk_disable_unprepare(ctx->sclk); + + if (sck & 0x40) { + dev_info(dev, "No SCLK detected for DAC+ PRO 44.1 kHz\n"); + goto skip_dacpro; + } + + dev_info(dev, "DAC+ PRO detected\n"); + ctx->is_dac_pro = true; + +skip_dacpro: return 0; } -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> To: alsa-devel@alsa-project.org Cc: Rob Herring <robh+dt@kernel.org>, linux-gpio@vger.kernel.org, tiwai@suse.de, Linus Walleij <linus.walleij@linaro.org>, Stephen Boyd <sboyd@kernel.org>, Daniel Matuschek <daniel@hifiberry.com>, Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>, Hui Wang <hui.wang@canonical.com>, Matthias Reichl <hias@horus.com>, broonie@kernel.org, Bartosz Golaszewski <bgolaszewski@baylibre.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>, Michael Turquette <mturquette@baylibre.com>, linux-clk@vger.kernel.org Subject: [RFC PATCH 04/16] ASoC: Intel: sof-pcm512x: detect Hifiberry DAC+ PRO Date: Thu, 9 Apr 2020 14:58:29 -0500 [thread overview] Message-ID: <20200409195841.18901-5-pierre-louis.bossart@linux.intel.com> (raw) In-Reply-To: <20200409195841.18901-1-pierre-louis.bossart@linux.intel.com> Try to detect HifiBerry 44.1 and 48kHz oscillators on codec init Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> --- sound/soc/intel/boards/sof_pcm512x.c | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/sound/soc/intel/boards/sof_pcm512x.c b/sound/soc/intel/boards/sof_pcm512x.c index dcd769b352fa..c1d2a53c1ec8 100644 --- a/sound/soc/intel/boards/sof_pcm512x.c +++ b/sound/soc/intel/boards/sof_pcm512x.c @@ -46,6 +46,8 @@ struct sof_card_private { struct list_head hdmi_pcm_list; bool idisp_codec; struct gpio_desc *gpio_4; + struct clk *sclk; + bool is_dac_pro; }; static int sof_pcm512x_quirk_cb(const struct dmi_system_id *id) @@ -87,6 +89,59 @@ static int sof_hdmi_init(struct snd_soc_pcm_runtime *rtd) static int sof_pcm512x_codec_init(struct snd_soc_pcm_runtime *rtd) { + struct sof_card_private *ctx = snd_soc_card_get_drvdata(rtd->card); + struct device *dev = rtd->card->dev; + unsigned int sck; + int ret; + + ctx->sclk = devm_clk_get(rtd->card->dev, "sclk"); + if (IS_ERR(ctx->sclk)) { + dev_info(dev, "Could not get SCLK, will operate in SOC master mode\n"); + goto skip_dacpro; + } + + /* + * now we have a clk, see if it's really present or if we are on + * plain vanilla DAC+ + */ + + /* Try 48 kHz */ + clk_set_rate(ctx->sclk, 24576000UL); + ret = clk_prepare_enable(ctx->sclk); + if (ret) { + dev_info(dev, "Failed to enable SCLK for DAC+ PRO 48 kHz: %d\n", ret); + goto skip_dacpro; + } + + snd_soc_component_read(rtd->codec_dai->component, + PCM512x_RATE_DET_4, &sck); + clk_disable_unprepare(ctx->sclk); + if (sck & 0x40) { + dev_info(dev, "No SCLK detected for DAC+ PRO 48 kHz\n"); + goto skip_dacpro; + } + + /* Try 44.1 kHz */ + clk_set_rate(ctx->sclk, 22579200UL); + ret = clk_prepare_enable(ctx->sclk); + if (ret) { + dev_info(dev, "Failed to enable SCLK for DAC+ PRO 44.1 kHz: %d\n", ret); + goto skip_dacpro; + } + + snd_soc_component_read(rtd->codec_dai->component, + PCM512x_RATE_DET_4, &sck); + clk_disable_unprepare(ctx->sclk); + + if (sck & 0x40) { + dev_info(dev, "No SCLK detected for DAC+ PRO 44.1 kHz\n"); + goto skip_dacpro; + } + + dev_info(dev, "DAC+ PRO detected\n"); + ctx->is_dac_pro = true; + +skip_dacpro: return 0; } -- 2.20.1
next prev parent reply other threads:[~2020-04-09 19:59 UTC|newest] Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-09 19:58 [RFC PATCH 00/16] ASoC/SOF/clk/gpio/dt: add Hifiberry DAC+ PRO support Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 01/16] ASoC: pcm512x: expose 6 GPIOs Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-14 17:09 ` Andy Shevchenko 2020-04-14 17:09 ` Andy Shevchenko 2020-04-14 17:52 ` Pierre-Louis Bossart 2020-04-14 17:52 ` Pierre-Louis Bossart 2020-04-15 9:49 ` Andy Shevchenko 2020-04-15 9:49 ` Andy Shevchenko 2020-04-16 11:42 ` Linus Walleij 2020-04-16 11:42 ` Linus Walleij 2020-04-16 14:25 ` Pierre-Louis Bossart 2020-04-16 14:25 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 02/16] ASoC: pcm512x: use "sclk" string to retrieve clock Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-14 17:11 ` Andy Shevchenko 2020-04-14 17:11 ` Andy Shevchenko 2020-04-14 17:54 ` Pierre-Louis Bossart 2020-04-14 17:54 ` Pierre-Louis Bossart 2020-04-15 9:52 ` Andy Shevchenko 2020-04-15 9:52 ` Andy Shevchenko 2020-04-15 14:19 ` Pierre-Louis Bossart 2020-04-15 14:19 ` Pierre-Louis Bossart 2020-04-15 15:10 ` Andy Shevchenko 2020-04-15 15:10 ` Andy Shevchenko 2020-04-14 17:45 ` Mark Brown 2020-04-14 17:45 ` Mark Brown 2020-04-14 18:14 ` Pierre-Louis Bossart 2020-04-14 18:14 ` Pierre-Louis Bossart 2020-04-14 18:27 ` Mark Brown 2020-04-14 18:27 ` Mark Brown 2020-04-14 19:15 ` Pierre-Louis Bossart 2020-04-14 19:15 ` Pierre-Louis Bossart 2020-04-14 19:50 ` Mark Brown 2020-04-14 19:50 ` Mark Brown 2020-04-14 20:13 ` Pierre-Louis Bossart 2020-04-14 20:13 ` Pierre-Louis Bossart 2020-04-14 21:02 ` Pierre-Louis Bossart 2020-04-14 21:02 ` Pierre-Louis Bossart 2020-04-15 11:07 ` Mark Brown 2020-04-15 11:07 ` Mark Brown 2020-04-15 11:36 ` Mark Brown 2020-04-15 11:36 ` Mark Brown 2020-04-15 14:44 ` Pierre-Louis Bossart 2020-04-15 14:44 ` Pierre-Louis Bossart 2020-04-15 16:22 ` Mark Brown 2020-04-15 16:22 ` Mark Brown 2020-04-15 17:26 ` Pierre-Louis Bossart 2020-04-15 17:26 ` Pierre-Louis Bossart 2020-04-15 19:50 ` Mark Brown 2020-04-15 19:50 ` Mark Brown 2020-04-15 20:22 ` Pierre-Louis Bossart 2020-04-15 20:22 ` Pierre-Louis Bossart 2020-04-15 20:39 ` Mark Brown 2020-04-15 20:39 ` Mark Brown 2020-04-09 19:58 ` [RFC PATCH 03/16] ASoC: Intel: sof-pcm512x: use gpiod for LED Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-14 17:17 ` Andy Shevchenko 2020-04-14 17:17 ` Andy Shevchenko 2020-04-14 17:52 ` Mark Brown 2020-04-14 17:52 ` Mark Brown 2020-04-14 17:57 ` Pierre-Louis Bossart 2020-04-14 17:57 ` Pierre-Louis Bossart 2020-04-15 9:51 ` Andy Shevchenko 2020-04-15 9:51 ` Andy Shevchenko 2020-04-09 19:58 ` Pierre-Louis Bossart [this message] 2020-04-09 19:58 ` [RFC PATCH 04/16] ASoC: Intel: sof-pcm512x: detect Hifiberry DAC+ PRO Pierre-Louis Bossart 2020-04-14 17:20 ` Andy Shevchenko 2020-04-14 17:20 ` Andy Shevchenko 2020-04-14 18:02 ` Pierre-Louis Bossart 2020-04-14 18:02 ` Pierre-Louis Bossart 2020-04-15 9:55 ` Andy Shevchenko 2020-04-15 9:55 ` Andy Shevchenko 2020-04-15 14:07 ` Pierre-Louis Bossart 2020-04-15 14:07 ` Pierre-Louis Bossart 2020-04-15 15:05 ` Andy Shevchenko 2020-04-15 15:05 ` Andy Shevchenko 2020-04-09 19:58 ` [RFC PATCH 05/16] ASoC: Intel: sof-pcm512x: reconfigure sclk in hw_params if needed Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-14 17:24 ` Andy Shevchenko 2020-04-14 17:24 ` Andy Shevchenko 2020-04-14 18:06 ` Pierre-Louis Bossart 2020-04-14 18:06 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 06/16] ASoC: Intel: sof-pcm512x: select HIFIBERRY_DACPRO clk Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 07/16] clk: hifiberry-dacpro: initial import Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-14 17:31 ` Andy Shevchenko 2020-04-14 17:31 ` Andy Shevchenko 2020-04-14 18:09 ` Pierre-Louis Bossart 2020-04-14 18:09 ` Pierre-Louis Bossart 2020-04-15 10:00 ` Andy Shevchenko 2020-04-15 10:00 ` Andy Shevchenko 2020-04-09 19:58 ` [RFC PATCH 08/16] clk: hifiberry-dacpro: update SDPX/copyright Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 09/16] clk: hifiberry-dacpro: style cleanups, use devm_ Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 10/16] clk: hifiberry-dacpro: add OF dependency Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 11/16] clk: hifiberry-dacpro: transition to _hw functions Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 12/16] clk: hifiberry-dacpro: add ACPI support Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-22 9:32 ` Stephen Boyd 2020-04-22 9:32 ` Stephen Boyd 2020-04-22 9:47 ` Andy Shevchenko 2020-04-22 9:47 ` Andy Shevchenko 2020-04-22 9:54 ` Pierre-Louis Bossart 2020-04-22 9:54 ` Pierre-Louis Bossart 2020-04-22 20:52 ` Stephen Boyd 2020-04-22 20:52 ` Stephen Boyd 2020-04-22 21:08 ` Pierre-Louis Bossart 2020-04-22 21:08 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 13/16] clk: hifiberry-dacpro: add "sclk" lookup Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-22 9:35 ` Stephen Boyd 2020-04-22 9:35 ` Stephen Boyd 2020-04-22 9:51 ` Pierre-Louis Bossart 2020-04-22 9:51 ` Pierre-Louis Bossart 2020-04-22 11:54 ` Andy Shevchenko 2020-04-22 11:54 ` Andy Shevchenko 2020-04-09 19:58 ` [RFC PATCH 14/16] clk: hifiberry-dacpro: toggle GPIOs on prepare/unprepare Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 15/16] clk: hifiberry-dacpro: add delay on clock prepare/deprepare Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-09 19:58 ` [RFC PATCH 16/16] ASoC: dt-bindings: add document for Hifiberry DAC+ PRO clock Pierre-Louis Bossart 2020-04-09 19:58 ` Pierre-Louis Bossart 2020-04-14 17:27 ` Andy Shevchenko 2020-04-14 17:27 ` Andy Shevchenko 2020-04-14 18:10 ` Pierre-Louis Bossart 2020-04-14 18:10 ` Pierre-Louis Bossart 2020-04-14 16:50 ` [RFC PATCH 00/16] ASoC/SOF/clk/gpio/dt: add Hifiberry DAC+ PRO support Andy Shevchenko 2020-04-14 16:50 ` Andy Shevchenko 2020-04-14 16:57 ` Pierre-Louis Bossart 2020-04-14 16:57 ` Pierre-Louis Bossart
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=20200409195841.18901-5-pierre-louis.bossart@linux.intel.com \ --to=pierre-louis.bossart@linux.intel.com \ --cc=alsa-devel@alsa-project.org \ --cc=andriy.shevchenko@linux.intel.com \ --cc=bgolaszewski@baylibre.com \ --cc=broonie@kernel.org \ --cc=daniel@hifiberry.com \ --cc=hias@horus.com \ --cc=hui.wang@canonical.com \ --cc=linus.walleij@linaro.org \ --cc=linux-clk@vger.kernel.org \ --cc=linux-gpio@vger.kernel.org \ --cc=mturquette@baylibre.com \ --cc=robh+dt@kernel.org \ --cc=sboyd@kernel.org \ --cc=tiwai@suse.de \ /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: linkBe 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.