[<prev] [next>] [day] [month] [year] [list]
Message-ID: <OS0PR01MB592217664FC7D09EB968947486A49@OS0PR01MB5922.jpnprd01.prod.outlook.com>
Date: Mon, 20 Feb 2023 13:18:08 +0000
From: Biju Das <biju.das.jz@...renesas.com>
To: Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>
CC: "linux-clk@...r.kernel.org" <linux-clk@...r.kernel.org>,
Geert Uytterhoeven <geert+renesas@...der.be>,
Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>,
Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@...renesas.com>,
Fabrizio Castro <fabrizio.castro.jz@...esas.com>,
Mark Brown <broonie@...nel.org>, Takashi Iwai <tiwai@...e.de>,
"alsa-devel@...a-project.org" <alsa-devel@...a-project.org>,
"linux-renesas-soc@...r.kernel.org"
<linux-renesas-soc@...r.kernel.org>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH RFC 0/3] Add Versa3 clock generator support
+ Rob , Krzysztof Kozlowski
> -----Original Message-----
> From: Biju Das <biju.das.jz@...renesas.com>
> Sent: Monday, February 20, 2023 1:13 PM
> To: Michael Turquette <mturquette@...libre.com>; Stephen Boyd
> <sboyd@...nel.org>
> Cc: Biju Das <biju.das.jz@...renesas.com>; linux-clk@...r.kernel.org; Geert
> Uytterhoeven <geert+renesas@...der.be>; Kuninori Morimoto
> <kuninori.morimoto.gx@...esas.com>; Prabhakar Mahadev Lad
> <prabhakar.mahadev-lad.rj@...renesas.com>; Fabrizio Castro
> <fabrizio.castro.jz@...esas.com>; Mark Brown <broonie@...nel.org>; Takashi
> Iwai <tiwai@...e.de>; alsa-devel@...a-project.org; linux-renesas-
> soc@...r.kernel.org
> Subject: [PATCH RFC 0/3] Add Versa3 clock generator support
>
> The 5P35023 is a VersaClock programmable clock generator and it provides 6
> clk outputs {diff2, diff1, se3, se2, se1 and refin}.
>
> It has an internal OTP memory allows the user to store the configuration in
> the device. After power up, the user can change the device register settings
> through the I2C interface when I2C mode is selected.
>
> This driver is for overriding OTP default values during boot based on a full
> register map from DT, and also minimal support to change the parent of a
> output clock.
>
> The motivation for developing this driver is for supporting 48KHz
> playback/record with audio codec on RZ/G2L SMARC EVK.
>
> On RZ/G2L SMARC EVK, By default audio mclk is connected to
> 11.2896 MHz clk which is multiple of 44.1KHz.
>
> Please see the below default OTP configuration of Dividers connected to
> output clocks.
>
> DIV3 12.2880 MHz DIFF2--> Audio clk2
> DIV5 11.2896 MHz SE1 --> Audio clk1
> DIV5 11.2896 MHz SE2 --> Audio mck
> DIV4 12 MHz SE3 --> This clk Not used
> DIV1 25 MHz DIFF1-->Ethernet clk
> Ref1-> 24MHz
>
> With this setup, we won't be able to do 48KHz playback/record on audio
> codec, as mck is always connected to 11.2896MHz clk.
>
> But by programming the i2c, we can make use of DIV4 to generate 12.2880 MHz
> and make that as parent of SE2 and there by supporting 48KHz
> playback/record.
>
> A block diagram with modification can be find here[1]
> [1] https://paste.pics/a253ce7cdc8720c3b5eb6953b97b25ff
>
> DIV3 12.2880 MHz DIFF2--> Audio clk2
> DIV5 11.2896 MHz SE1 --> Audio clk1
> DIV5 11.2896 MHz | SE2 --> Audio mck
> DIV4 12.2880 MHz |
> DIV2 12 MHz SE3 --> This clk Not used
> DIV1 25 MHz DIFF1--> Ethernet clk
> Ref1-> 24MHz
>
> The driver can read a full register map from the DT, and will use that
> register map to initialize the clk generator when the system boots.
> and later, based on sampling rate, it switches the parent of SE2 and support
> both 44.1 and 48 KHz playback/record at run time.
>
> 48KHz playback
> 1f: f6 --> setting Div4 as clock source for se2 Read at address 0x10049C00
> : 0x300B4022 --> Setting Audio clk2 in SSI
> pfd2 1 1 0 24000000
> pll2 1 1 0 491519897
> div4_mux 1 1 0 491519897
> div4 1 1 0 12287998
> se2_mux 1 1 0 12287998
> se2 1 1 0 12287998
>
> 44.1KHz playback
> 1f: b6 --> setting Div5 as clock source for se2 Read at address 0x10049C00:
> 0x700B4022--> Setting Audio clk1 in SSI
> pfd3_mux 1 1 0 24000000
> pfd3 1 1 0 960000
> pll3 1 1 0 564480000
> div5 1 1 0 11289600
> se2_mux 1 1 0 11289600
> se2 1 1 0 11289600
>
> Please provide your valuable comment for this patch series.
>
> Biju Das (3):
> dt-bindings: clock: Add Renesas versa3 clock generator bindings
> drivers: clk: Add support for versa3 clock driver
> arm64: dts: renesas: rzg2l-smarc: Use versa3 clk for audio mclk
>
> .../bindings/clock/renesas,versaclock3.yaml | 135 ++
> .../boot/dts/renesas/rz-smarc-common.dtsi | 7 -
> arch/arm64/boot/dts/renesas/rzg2l-smarc.dtsi | 35 +
> drivers/clk/Kconfig | 9 +
> drivers/clk/Makefile | 1 +
> drivers/clk/clk-versaclock3.c | 1134 +++++++++++++++++
> 6 files changed, 1314 insertions(+), 7 deletions(-) create mode 100644
> Documentation/devicetree/bindings/clock/renesas,versaclock3.yaml
> create mode 100644 drivers/clk/clk-versaclock3.c
>
> --
> 2.25.1
Powered by blists - more mailing lists