From: Sowjanya Komatineni <skomatineni@nvidia.com>
To: <skomatineni@nvidia.com>, <thierry.reding@gmail.com>,
<jonathanh@nvidia.com>, <broonie@kernel.org>,
<lgirdwood@gmail.com>, <perex@perex.cz>, <tiwai@suse.com>,
<digetx@gmail.com>, <mperttunen@nvidia.com>,
<gregkh@linuxfoundation.org>, <sboyd@kernel.org>,
<robh+dt@kernel.org>, <mark.rutland@arm.com>
Cc: <pdeschrijver@nvidia.com>, <pgaikwad@nvidia.com>,
<spujar@nvidia.com>, <josephl@nvidia.com>,
<daniel.lezcano@linaro.org>, <mmaddireddy@nvidia.com>,
<markz@nvidia.com>, <devicetree@vger.kernel.org>,
<linux-clk@vger.kernel.org>, <linux-tegra@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: [PATCH v8 00/22] Move PMC clocks into Tegra PMC driver
Date: Mon, 13 Jan 2020 23:24:05 -0800 [thread overview]
Message-ID: <1578986667-16041-1-git-send-email-skomatineni@nvidia.com> (raw)
This patch series moves Tegra PMC clocks from clock driver to pmc driver
along with the device trees changes and audio driver which uses one of
the pmc clock for audio mclk.
Tegra PMC has clk_out_1, clk_out_2, clk_out_3 and blink controls which
are currently registered by Tegra clock driver using clk_regiser_mux and
clk_register_gate which performs direct Tegra PMC register access.
When Tegra PMC is in secure mode, any access from non-secure world will
not go through.
This patch series adds these Tegra PMC clocks and blink controls to Tegra
PMC driver with PMC as clock provider and removes them from Tegra clock
driver.
PMC clock clk_out_1 is dedicated for audio mclk from Tegra30 thru Tegra210
and clock driver does inital parent configuration for it and enables them.
But this clock should be taken care by audio driver as there is no need
to have this clock pre enabled.
So, this series also includes patch that updates ASoC utils to take
care of parent configuration for mclk if device tree don't specify
initial parent configuration using assigned-clock-parents and enable
audio mclk during utils init.
DTs are also updated to use clk_out_1 as audio mclk rather than extern1.
This series also includes a patch for mclk fallback to extern1 when
retrieving mclk fails to have this backward compatible of new DT with
old kernels.
[v8]: Changes between v7 and v8 are
- v7 minor feedback
- Audio mclk is needed only for audio, but there is some unknown
dependency of audio mclk and suspend-resume on Tegra30 where when
mclk is disable, suspend-resume doesn't work.
So v8 undoes v7 change of mclk enable and disable during machine
startup and shutdown and keeps audio mclk enabled in ASoC driver
tegra_asoc_utils_init.
- change in the patches order.
Note:
- Patches 1 thru 5 are to change CLK_M_DIV clocks to OSC_DIV clocks.
OSC_DIV clocks uses same ID as CLK_M_DIV clocks during the
transition to replace CLK_M_DIV with OSC_DIV.
- Patches 8 and 10 registers pmc clocks as pmc_clk_out_1/2/3, and
pmc_blink to avoid using same clock names as pmc clocks from
tegra_car provider to have them functionally work with all the
transition patches.
- Patch 11 adds audio mclk fallback to extern1 to have new DT work
with old kernels. This patch need to be back-ported.
- Patch 18 adds audio mclk parent configuration when DT doesn't
specify parent configs. This patch retrieves pmc_clk_out_1 as audio
mclk so added this patch after all DT updates to use pmc clocks
from tegra_pmc.
- Patch 19 does audio mclk enable during utils init to have it
enabled all the time.
- Patch 20 and 21 removes PMC clocks from clock driver and their IDs
at the end of PMC clocks transition to tegra_pmc.
[v7]: Changes between v6 and v7 are
- v6 minor feedback
- Added DT id for Tegra OSC to use in device tree for pmc clock
parent.
[v6]: Changes between v5 and v6 are
- v5 feedback
- Added ASoC machine startup and shutdown callbacks to control audio
mclk enable/disable and removed default mclk enable from clock driver.
- Updated tegra_asoc_utils_set_rate to disable mclk only during PLLA
rate change and removed disabling PLLA as its already taken care by
pll clock driver.
- Removed tegra_asoc_utils_set_rate call from utils_init as set_rate
is set during machine hw_params and during utils_init mclk is
already in disabled state and this causes warning during mclk disable
in utils_set_rate.
[v5]: Changes between v4 and v5 are
- v4 feedback
- updated dt-binding pmc YAML schema with more description on power
gate nodes and pad configuration state nodes.
- update tegra_asoc_utils_set_rate to disable audio mclk only if
its in enable state.
[v4]: Changes between v3 and v4 are
- v3 Feedback
- Updated clocks clk_m_div2 and clk_m_div4 as osc_div2 and osc_div4.
Tegra don't have clk_m_div2, clk_m_div4 and they should actually
be osc_div2 and osc_div4 clocks from osc pads.
- Fixed PMC clock parents to use osc, osc_div2, osc_div4.
This is not a functional bug fix but correction to use proper parent
name.
- Register each PMC clock as single clock rather than separate
mux and gate clocks.
- Update ASoC utils to use resource managed APIs rather than
using clk_get and clk_put.
- Updated device tree and ASoC driver to use clk_out_1 instead of
clk_out_1_mux as PMC clocks are registered as single clock.
- Update clock driver init_table to not enable audio related clocks
as ASoC utils will do audio clock enables.
[v3]: Changes between v2 and v3 are
- Removes set parent of clk_out_1_mux to extern1 and enabling
extern1 from the clock driver.
- Doesn't enable clk_out_1 and blink by default in pmc driver
- Updates ASoC driver to take care of audio mclk parent
configuration incase if device tree don't specify assigned
clock parent properties and enables mclk using both clk_out_1
and extern1.
- updates all device trees using extern1 as mclk in sound node
to use clk_out_1 from pmc.
- patch for YAML format pmc dt-binding
- Includes v2 feedback
[v2]: Changes between v1 and v2 are
- v2 includes patches for adding clk_out_1, clk_out_2, clk_out_3,
blink controls to Tegra PMC driver and removing clk-tegra-pmc.
- feedback related to pmc clocks in Tegra PMC driver from v1
- Removed patches for WB0 PLLM overrides and PLLE IDDQ PMC programming
by the clock driver using helper functions from Tegra PMC.
Note:
To use helper functions from PMC driver, PMC early init need to
happen prior to using helper functions and these helper functions are
for PLLM Override and PLLE IDDQ programming in PMC during PLLM/PLLE
clock registration which happen in clock_init prior to Tegra PMC
probe.
Moving PLLM/PLLE clocks registration to happen after Tegra PMC
impacts other clocks EMC, MC and corresponding tegra_emc_init and
tegra_mc_init.
This implementation of configuring PMC registers thru helper
functions in clock driver needs proper changes across PMC, Clock,
EMC and MC inits to have it work across all Tegra platforms.
Currently PLLM Override is not enabled in the bootloader so proper
patches for this fix will be taken care separately.
[v1]: v1 includes patches for below fixes.
- adding clk_out_1, clk_out_2, clk_out_3, blink controls to Tegra PMC
driver and removing clk-tegra-pmc.
- updated clock provider from tegra_car to pmc in the device tree
tegra210-smaug.dts that uses clk_out_2.
- Added helper functions in PMC driver for WB0 PLLM overrides and PLLE
IDDQ programming to use by clock driver and updated clock driver to
use these helper functions and removed direct PMC access from clock
driver and all pmc base address references in clock driver.
Sowjanya Komatineni (22):
dt-bindings: clock: tegra: Add IDs for OSC clocks
clk: tegra: Add support for OSC_DIV fixed clocks
clk: tegra: Add Tegra OSC to clock lookup
clk: tegra: Fix Tegra PMC clock out parents
clk: tegra: Remove CLK_M_DIV fixed clocks
dt-bindings: tegra: Convert Tegra PMC bindings to YAML
dt-bindings: soc: tegra-pmc: Add Tegra PMC clock bindings
soc: tegra: Add Tegra PMC clocks registration into PMC driver
dt-bindings: soc: tegra-pmc: Add id for Tegra PMC 32KHz blink clock
soc: tegra: Add support for 32KHz blink clock
ASoC: tegra: Add fallback implementation for audio mclk
ASoC: tegra: Use device managed resource APIs to get the clock
ARM: dts: tegra: Add clock-cells property to pmc
arm64: tegra: Add clock-cells property to Tegra PMC node
ARM: tegra: Update sound node clocks in device tree
arm64: tegra: smaug: Change clk_out_2 provider to pmc
ASoC: nau8825: change Tegra clk_out_2 provider to tegra_pmc
ASoC: tegra: Add audio mclk parent configuration
ASoC: tegra: Enable audio mclk during tegra_asoc_utils_init
clk: tegra: Remove tegra_pmc_clk_init along with clk ids
dt-bindings: clock: tegra: Remove pmc clock ids from clock dt-bindings
clk: tegra: Remove audio clocks configuration from clock driver
.../bindings/arm/tegra/nvidia,tegra20-pmc.txt | 300 -----------------
.../bindings/arm/tegra/nvidia,tegra20-pmc.yaml | 354 +++++++++++++++++++++
.../devicetree/bindings/sound/nau8825.txt | 2 +-
arch/arm/boot/dts/tegra114-dalmore.dts | 8 +-
arch/arm/boot/dts/tegra114.dtsi | 4 +-
arch/arm/boot/dts/tegra124-apalis-v1.2.dtsi | 8 +-
arch/arm/boot/dts/tegra124-apalis.dtsi | 8 +-
arch/arm/boot/dts/tegra124-jetson-tk1.dts | 8 +-
arch/arm/boot/dts/tegra124-nyan.dtsi | 8 +-
arch/arm/boot/dts/tegra124-venice2.dts | 8 +-
arch/arm/boot/dts/tegra124.dtsi | 4 +-
arch/arm/boot/dts/tegra20.dtsi | 4 +-
arch/arm/boot/dts/tegra30-apalis-v1.1.dtsi | 8 +-
arch/arm/boot/dts/tegra30-apalis.dtsi | 8 +-
arch/arm/boot/dts/tegra30-beaver.dts | 8 +-
arch/arm/boot/dts/tegra30-cardhu.dtsi | 8 +-
arch/arm/boot/dts/tegra30-colibri.dtsi | 8 +-
arch/arm/boot/dts/tegra30.dtsi | 4 +-
arch/arm64/boot/dts/nvidia/tegra132.dtsi | 4 +-
arch/arm64/boot/dts/nvidia/tegra210-smaug.dts | 2 +-
arch/arm64/boot/dts/nvidia/tegra210.dtsi | 6 +-
drivers/clk/tegra/Makefile | 1 -
drivers/clk/tegra/clk-id.h | 12 +-
drivers/clk/tegra/clk-tegra-fixed.c | 37 ++-
drivers/clk/tegra/clk-tegra-pmc.c | 122 -------
drivers/clk/tegra/clk-tegra114.c | 43 +--
drivers/clk/tegra/clk-tegra124.c | 48 ++-
drivers/clk/tegra/clk-tegra20.c | 9 +-
drivers/clk/tegra/clk-tegra210.c | 32 +-
drivers/clk/tegra/clk-tegra30.c | 33 +-
drivers/clk/tegra/clk.h | 1 -
drivers/soc/tegra/pmc.c | 354 +++++++++++++++++++++
include/dt-bindings/clock/tegra114-car.h | 18 +-
include/dt-bindings/clock/tegra124-car-common.h | 18 +-
include/dt-bindings/clock/tegra20-car.h | 2 +-
include/dt-bindings/clock/tegra210-car.h | 18 +-
include/dt-bindings/clock/tegra30-car.h | 18 +-
include/dt-bindings/soc/tegra-pmc.h | 16 +
sound/soc/tegra/tegra_alc5632.c | 7 +-
sound/soc/tegra/tegra_asoc_utils.c | 126 ++++----
sound/soc/tegra/tegra_asoc_utils.h | 1 -
sound/soc/tegra/tegra_max98090.c | 22 +-
sound/soc/tegra/tegra_rt5640.c | 22 +-
sound/soc/tegra/tegra_rt5677.c | 7 +-
sound/soc/tegra/tegra_sgtl5000.c | 7 +-
sound/soc/tegra/tegra_wm8753.c | 22 +-
sound/soc/tegra/tegra_wm8903.c | 22 +-
sound/soc/tegra/tegra_wm9712.c | 8 +-
sound/soc/tegra/trimslice.c | 18 +-
49 files changed, 1041 insertions(+), 775 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt
create mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.yaml
delete mode 100644 drivers/clk/tegra/clk-tegra-pmc.c
create mode 100644 include/dt-bindings/soc/tegra-pmc.h
--
2.7.4
next reply other threads:[~2020-01-14 7:26 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-14 7:24 Sowjanya Komatineni [this message]
2020-01-14 7:24 ` [PATCH v8 01/22] dt-bindings: clock: tegra: Add IDs for OSC clocks Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 02/22] clk: tegra: Add support for OSC_DIV fixed clocks Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 03/22] clk: tegra: Add Tegra OSC to clock lookup Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 04/22] clk: tegra: Fix Tegra PMC clock out parents Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 05/22] clk: tegra: Remove CLK_M_DIV fixed clocks Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 06/22] dt-bindings: tegra: Convert Tegra PMC bindings to YAML Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 07/22] dt-bindings: soc: tegra-pmc: Add Tegra PMC clock bindings Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 08/22] soc: tegra: Add Tegra PMC clocks registration into PMC driver Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 09/22] dt-bindings: soc: tegra-pmc: Add id for Tegra PMC 32KHz blink clock Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 10/22] soc: tegra: Add support for " Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 11/22] ASoC: tegra: Add fallback implementation for audio mclk Sowjanya Komatineni
2020-01-19 15:08 ` Dmitry Osipenko
2020-01-23 23:56 ` Dmitry Osipenko
2020-02-17 9:29 ` Thierry Reding
2020-02-17 9:40 ` Thierry Reding
2020-02-17 14:51 ` Dmitry Osipenko
2020-01-14 7:24 ` [PATCH v8 12/22] ASoC: tegra: Use device managed resource APIs to get the clock Sowjanya Komatineni
2020-02-17 9:48 ` Thierry Reding
2020-01-14 7:24 ` [PATCH v8 13/22] ARM: dts: tegra: Add clock-cells property to pmc Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 14/22] arm64: tegra: Add clock-cells property to Tegra PMC node Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 15/22] ARM: tegra: Update sound node clocks in device tree Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 16/22] arm64: tegra: smaug: Change clk_out_2 provider to pmc Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 17/22] ASoC: nau8825: change Tegra clk_out_2 provider to tegra_pmc Sowjanya Komatineni
2020-02-17 9:52 ` Thierry Reding
2020-01-14 7:24 ` [PATCH v8 18/22] ASoC: tegra: Add audio mclk parent configuration Sowjanya Komatineni
2020-02-17 9:53 ` Thierry Reding
2020-01-14 7:24 ` [PATCH v8 19/22] ASoC: tegra: Enable audio mclk during tegra_asoc_utils_init Sowjanya Komatineni
2020-01-19 15:14 ` Dmitry Osipenko
2020-01-20 4:10 ` Sameer Pujar
2020-01-20 15:32 ` Dmitry Osipenko
2020-02-17 9:53 ` Thierry Reding
2020-01-14 7:24 ` [PATCH v8 20/22] clk: tegra: Remove tegra_pmc_clk_init along with clk ids Sowjanya Komatineni
2020-02-17 9:55 ` Thierry Reding
2020-01-14 7:24 ` [PATCH v8 21/22] dt-bindings: clock: tegra: Remove pmc clock ids from clock dt-bindings Sowjanya Komatineni
2020-01-14 7:24 ` [PATCH v8 22/22] clk: tegra: Remove audio clocks configuration from clock driver Sowjanya Komatineni
2020-01-19 15:04 ` Dmitry Osipenko
2020-01-21 16:19 ` Sowjanya Komatineni
2020-01-21 16:57 ` Dmitry Osipenko
2020-01-24 4:34 ` Dmitry Osipenko
2020-01-24 8:50 ` Ben Dooks
2020-02-17 9:59 ` [PATCH v8 00/22] Move PMC clocks into Tegra PMC driver Thierry Reding
2020-03-04 19:26 ` Dmitry Osipenko
2020-03-04 21:22 ` Dmitry Osipenko
2020-03-25 21:27 ` Thierry Reding
2020-03-27 15:45 ` Mark Brown
2020-04-21 13:52 ` Jon Hunter
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=1578986667-16041-1-git-send-email-skomatineni@nvidia.com \
--to=skomatineni@nvidia.com \
--cc=broonie@kernel.org \
--cc=daniel.lezcano@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=digetx@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=jonathanh@nvidia.com \
--cc=josephl@nvidia.com \
--cc=lgirdwood@gmail.com \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=markz@nvidia.com \
--cc=mmaddireddy@nvidia.com \
--cc=mperttunen@nvidia.com \
--cc=pdeschrijver@nvidia.com \
--cc=perex@perex.cz \
--cc=pgaikwad@nvidia.com \
--cc=robh+dt@kernel.org \
--cc=sboyd@kernel.org \
--cc=spujar@nvidia.com \
--cc=thierry.reding@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).