From: Brian Masney <bmasney@redhat.com>
To: Marek Vasut <marex@nabladev.com>
Cc: linux-clk@vger.kernel.org, Michael Walle <mwalle@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Michael Walle <michael@walle.cc>, Rob Herring <robh@kernel.org>,
Stephen Boyd <sboyd@kernel.org>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 6/6] clk: fsl-sai: Add MCLK generation support
Date: Tue, 7 Apr 2026 15:57:30 -0400 [thread overview]
Message-ID: <adVhqkj-cFbFBrZH@redhat.com> (raw)
In-Reply-To: <20260406215150.176599-6-marex@nabladev.com>
Hi Marek,
On Mon, Apr 06, 2026 at 11:49:46PM +0200, Marek Vasut wrote:
> The driver currently supports generating BCLK. There are systems which
> require generation of MCLK instead. Register new MCLK clock and handle
> clock-cells = <1> to differentiate between BCLK and MCLK. In case of a
> legacy system with clock-cells = <0>, the driver behaves as before, i.e.
> always returns BCLK.
>
> Note that it is not possible re-use the current SAI audio driver to
> generate MCLK and correctly enable and disable the MCLK.
>
> If SAI (audio driver) is used to control the MCLK enablement, then MCLK
> clock is not always enabled, and it is not necessarily enabled when the
> codec may need the clock to be enabled. There is also no way for the
> codec node to specify phandle to clock provider in DT, because the SAI
> (audio driver) is not clock provider.
>
> If SAI (clock driver) is used to control the MCLK enablement, then MCLK
> clock is enabled when the codec needs the clock enabled, because the
> codec is the clock consumer and the SAI (clock driver) is the clock
> provider, and the codec driver can request the clock to be enabled when
> needed. There is also the usual phandle to clock provider in DT, because
> the SAI (clock driver) is clock provider.
>
> Acked-by: Michael Walle <mwalle@kernel.org>
> Signed-off-by: Marek Vasut <marex@nabladev.com>
> ---
> Cc: Brian Masney <bmasney@redhat.com>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Michael Walle <michael@walle.cc>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Stephen Boyd <sboyd@kernel.org>
> Cc: devicetree@vger.kernel.org
> Cc: linux-clk@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
> V2: No change
> V3: - Rebase on current next, update mail address
> - Update commit message according to clarify the difference between
> SAI audio and SAI clock driver
> - Pick ancient AB from Michael, although this may be outdated
> https://patchwork.kernel.org/project/alsa-devel/patch/20241226162234.40141-4-marex@denx.de/
> V4: Use the fsl_sai_clk_register() helper.
> ---
> drivers/clk/clk-fsl-sai.c | 31 ++++++++++++++++++++++++++++++-
> 1 file changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/clk-fsl-sai.c b/drivers/clk/clk-fsl-sai.c
> index 7ec9a4f22735c..386ee5f77a986 100644
> --- a/drivers/clk/clk-fsl-sai.c
> +++ b/drivers/clk/clk-fsl-sai.c
> @@ -6,6 +6,7 @@
> */
>
> #include <linux/clk-provider.h>
> +#include <linux/clk.h>
This include needs to be moved earlier into the series to keep
bisectability. It looks like on patch 2. I'll also comment there.
> #include <linux/err.h>
> #include <linux/module.h>
> #include <linux/of.h>
> @@ -15,22 +16,37 @@
>
> #define I2S_CSR 0x00
> #define I2S_CR2 0x08
> +#define I2S_MCR 0x100
> #define CSR_BCE_BIT 28
> +#define CSR_TE_BIT 31
> #define CR2_BCD BIT(24)
> #define CR2_DIV_SHIFT 0
> #define CR2_DIV_WIDTH 8
> +#define MCR_MOE BIT(30)
>
> struct fsl_sai_clk {
> struct clk_divider bclk_div;
> + struct clk_divider mclk_div;
> struct clk_gate bclk_gate;
> + struct clk_gate mclk_gate;
> struct clk_hw *bclk_hw;
> + struct clk_hw *mclk_hw;
> spinlock_t lock;
> };
>
> struct fsl_sai_data {
> unsigned int offset; /* Register offset */
> + bool have_mclk; /* Have MCLK control */
> };
>
> +static struct clk_hw *
> +fsl_sai_of_clk_get(struct of_phandle_args *clkspec, void *data)
> +{
> + struct fsl_sai_clk *sai_clk = data;
> +
> + return clkspec->args[0] ? sai_clk->mclk_hw : sai_clk->bclk_hw;
For the case when clock-cells is 0, should this check:
clkspec->args_count == 0 || return clkspec->args[0]
Brian
prev parent reply other threads:[~2026-04-07 19:57 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-06 21:49 [PATCH v4 1/6] dt-bindings: clock: fsl-sai: Document i.MX8M support Marek Vasut
2026-04-06 21:49 ` [PATCH v4 2/6] clk: fsl-sai: Add i.MX8M support with 8 byte register offset Marek Vasut
2026-04-07 19:58 ` Brian Masney
2026-04-06 21:49 ` [PATCH v4 3/6] dt-bindings: clock: fsl-sai: Document clock-cells = <1> support Marek Vasut
2026-04-06 21:49 ` [PATCH v4 4/6] clk: fsl-sai: Sort the headers Marek Vasut
2026-04-07 18:48 ` Brian Masney
2026-04-06 21:49 ` [PATCH v4 5/6] clk: fsl-sai: Extract clock setup into fsl_sai_clk_register() Marek Vasut
2026-04-07 19:03 ` Brian Masney
2026-04-07 20:43 ` Marek Vasut
2026-04-06 21:49 ` [PATCH v4 6/6] clk: fsl-sai: Add MCLK generation support Marek Vasut
2026-04-07 8:02 ` Michael Walle
2026-04-07 19:57 ` Brian Masney [this message]
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=adVhqkj-cFbFBrZH@redhat.com \
--to=bmasney@redhat.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marex@nabladev.com \
--cc=michael@walle.cc \
--cc=mturquette@baylibre.com \
--cc=mwalle@kernel.org \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
/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.