From: Thierry Reding <thierry.reding@gmail.com>
To: Dmitry Osipenko <digetx@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Joseph Lo <josephl@nvidia.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
Peter De Schrijver <pdeschrijver@nvidia.com>,
Prashant Gaikwad <pgaikwad@nvidia.com>,
Stephen Boyd <sboyd@kernel.org>,
devicetree@vger.kernel.org, linux-clk@vger.kernel.org,
linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v10 00/15] memory: tegra: Introduce Tegra30 EMC driver
Date: Tue, 29 Oct 2019 14:51:52 +0100 [thread overview]
Message-ID: <20191029135152.GJ508460@ulmo> (raw)
In-Reply-To: <20190811210043.20122-1-digetx@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 9185 bytes --]
On Mon, Aug 12, 2019 at 12:00:28AM +0300, Dmitry Osipenko wrote:
> Hello,
>
> This series introduces driver for the External Memory Controller (EMC)
> found on Tegra30 chips, it controls the external DRAM on the board. The
> purpose of this driver is to program memory timing for external memory on
> the EMC clock rate change. The driver was tested using the ACTMON devfreq
> driver that performs memory frequency scaling based on memory-usage load.
>
> Changelog:
>
> v10: - Addressed review comments that were made by Rob Herring to v9 by
> dropping unnecessary reg descriptions, specifying valid ranges and
> using boolean type where appropriate in the device-tree patches.
>
> v9: - Fixed memory corruption bug that was uncovered after introducing
> some extra optimizations to the devfreq driver that allows CPU
> to stay longer in the LP2 cpuidle state. The corruption is caused by
> a very late AUTO-REFRESH re-enabling due to a possible schedule on
> waiting for clk-change completion, the re-enabling is now a part of
> "EMC exec-after-clkchange" hardware sequence.
>
> - Added "type: object" to T124 MC YAML, that was missed in v8 by accident.
>
> v8: - Added two new patches:
>
> memory: tegra20-emc: Increase handshake timeout
> memory: tegra20-emc: wait_for_completion_timeout() doesn't return error
>
> Turned out that memory-clk handshake may take much more time under
> some circumstances. The second patch is a minor cleanup. The same
> changes are also applied to the Terga30 EMC driver addition-patch.
>
> The pattern-properties of YAML bindings gained "type: object", for
> consistency.
>
> v7: - Addressed review comments that were made by Rob Herring to v6 by
> removing old Terga30 Memory Controller binding once it's converted
> to YAML, by using explicit patterns for the sub-nodes and specifying
> min/max clock rates in the YAML.
>
> - Two patches that were added in v6 are removed from the series:
>
> clk: tegra20: emc: Add tegra20_clk_emc_on_pllp()
> ARM: tegra30: cpuidle: Don't enter LP2 on CPU0 when EMC runs off PLLP
>
> Because the problem with the PLLP is resolved now, turned out it was
> a bug in the CPU-suspend code.
>
> - The "Introduce Tegra30 EMC driver" patch got a fix for the "Same Freq"
> bit typo, it's a bit 27 and not 16.
>
> v6: - Tegra124 Memory Controller binding factored out into standalone
> binding because it requires to specify MC_EMEM_ARB_MISC1 for EMEM
> programming, which is not required for Tegra30. This makes the
> upstream MC registers specification to match downstream exactly,
> easing porting of boards memory timings configuration to upstream.
>
> - Tegra30/124 Memory Controller binding converted to YAML.
>
> - Tegra30 External Memory Controller binding now is in YAML format.
>
> - Added workaround for hanging during LP2 when EMC runs off PLLP on
> Tegra30 in this new patches:
>
> clk: tegra20: emc: Add tegra20_clk_emc_on_pllp()
> ARM: tegra30: cpuidle: Don't enter LP2 on CPU0 when EMC runs off PLLP
>
> - Added info message to the Tegra20/30 EMC drivers, telling about
> RAM code and a number of available timings:
>
> memory: tegra20-emc: Print a brief info message about the timings
>
> v5: - Addressed review comments that were made by Thierry Reding to v4 by
> adding appropriate copyrights to the source code headers and making
> Tegra30 EMC driver to use common Tegra20 CLK API directly instead
> of having a dummy-proxy functions specifically for Tegra30.
>
> - Addressed review comments that were made by Stephen Boyd to v4 by
> rewording commit message of the "Add custom EMC clock implementation"
> patch and adding clarifying comment (to that patch as well) which
> tells why EMC is a critical clock.
>
> - Added suspend-resume to Tegra30 EMC driver to error out if EMC driver
> is in a "bad state" as it will likely cause a hang on entering suspend.
>
> - Dropped patch "tegra20-emc: Replace clk_get_sys with devm_clk_get"
> because the replaced clocks are actually should be removed altogether
> in the "Drop setting EMC rate to max on probe" patch and that was
> missed by an accident.
>
> - Added "tegra20-emc: Pre-configure debug register" patch which ensures
> that inappropriate HW debug features are disabled at a probe time.
> The same change is also made in the "Introduce Tegra30 EMC driver"
> patch.
>
> - Added ACKs to the patches from Peter De Schrijver that he gave to v4
> since all of the v5 changes are actually very minor.
>
> v4: - Addressed review comments that were made by Peter De Schrijver to v3
> by adding fence_udelay() after writes in the "Add custom EMC clock
> implementation" patch.
>
> - Added two new minor patches:
>
> memory: tegra: Ensure timing control debug features are disabled
> memory: tegra: Consolidate registers definition into one place
>
> The first one is needed to ensure that EMC driver will work
> properly regardless of hardware configuration left after boot.
> The second patch is just a minor code cleanup.
>
> - The "Introduce Tegra30 EMC driver" got also few very minor changes.
> Now every possible error case is handled, nothing is ignored.
> The EMC_DBG register is explicitly initialized during probe to be
> on the safe side.
>
> v3: - Addressed review comments that were made by Stephen Boyd to v2 by
> adding explicit typing for the callback variable, by including
> "clk-provider.h" directly in the code and by dropping __clk_lookup
> usage where possible.
>
> - Added more patches into this series:
>
> memory: tegra20-emc: Drop setting EMC rate to max on probe
> memory: tegra20-emc: Adapt for clock driver changes
> memory: tegra20-emc: Include io.h instead of iopoll.h
> memory: tegra20-emc: Replace clk_get_sys with devm_clk_get
>
> Initially I was going to include these patches into other patchset,
> but changed my mind after rearranging things a tad. The "Adapt for
> clock driver changes" patch is directly related to the clock changes
> done in the first patch of this series, the rest are minor cleanups
> that are fine to include here as well.
>
> - Added some more words to the commit message of "Add binding for NVIDIA
> Tegra30 External Memory Controller" patch, clarifying why common DDR
> timing device-tree form isn't suitable for Tegra30.
>
> - The Tegra30 EMC driver now explicitly selects the registers access
> mode (EMC_DBG mux), not relying on the setting left from bootloader.
>
> v2: - Added support for changing MC clock diver configuration based on
> Memory Controller (MC) configuration which is part of the memory
> timing.
>
> - Merged the "Add custom EMC clock implementation" patch into this
> series because the "Introduce Tegra30 EMC driver" patch directly
> depends on it. Please note that Tegra20 EMC driver will need to be
> adapted for the clock changes as well, I'll send out the Tegra20
> patches after this series will be applied because of some other
> dependencies (devfreq) and because the temporary breakage won't
> be critical (driver will just error out on probe).
>
> - EMC driver now performs MC configuration validation by checking
> that the number of MC / EMC timings matches and that the timings
> rate is the same.
>
> - EMC driver now supports timings that want to change the MC clock
> configuration.
>
> - Other minor prettifying changes of the code.
>
> Dmitry Osipenko (15):
> clk: tegra20/30: Add custom EMC clock implementation
> memory: tegra20-emc: Drop setting EMC rate to max on probe
> memory: tegra20-emc: Adapt for clock driver changes
> memory: tegra20-emc: Include io.h instead of iopoll.h
> memory: tegra20-emc: Pre-configure debug register
> memory: tegra20-emc: Print a brief info message about the timings
> memory: tegra20-emc: Increase handshake timeout
> memory: tegra20-emc: wait_for_completion_timeout() doesn't return
> error
> dt-bindings: memory: tegra30: Convert to Tegra124 YAML
> dt-bindings: memory: Add binding for NVIDIA Tegra30 Memory Controller
> dt-bindings: memory: Add binding for NVIDIA Tegra30 External Memory
> Controller
> memory: tegra: Introduce Tegra30 EMC driver
> memory: tegra: Ensure timing control debug features are disabled
> memory: tegra: Consolidate registers definition into common header
> ARM: dts: tegra30: Add External Memory Controller node
Applied these to for-5.5/clk, for-5.5/dt-bindings, for-5.5/memory and
for-5.5/arm/dt, thanks.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2019-10-29 13:52 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-11 21:00 [PATCH v10 00/15] memory: tegra: Introduce Tegra30 EMC driver Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 01/15] clk: tegra20/30: Add custom EMC clock implementation Dmitry Osipenko
2019-08-12 23:12 ` Michał Mirosław
2019-08-13 2:36 ` Dmitry Osipenko
2019-08-21 16:46 ` Thierry Reding
2019-09-10 10:33 ` Stephen Boyd
2019-08-11 21:00 ` [PATCH v10 02/15] memory: tegra20-emc: Drop setting EMC rate to max on probe Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 03/15] memory: tegra20-emc: Adapt for clock driver changes Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 04/15] memory: tegra20-emc: Include io.h instead of iopoll.h Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 05/15] memory: tegra20-emc: Pre-configure debug register Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 06/15] memory: tegra20-emc: Print a brief info message about the timings Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 07/15] memory: tegra20-emc: Increase handshake timeout Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 08/15] memory: tegra20-emc: wait_for_completion_timeout() doesn't return error Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 09/15] dt-bindings: memory: tegra30: Convert to Tegra124 YAML Dmitry Osipenko
2019-08-12 19:53 ` Rob Herring
2019-08-12 19:54 ` Rob Herring
2019-08-12 20:19 ` Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 10/15] dt-bindings: memory: Add binding for NVIDIA Tegra30 Memory Controller Dmitry Osipenko
2019-08-12 19:55 ` Rob Herring
2019-08-11 21:00 ` [PATCH v10 11/15] dt-bindings: memory: Add binding for NVIDIA Tegra30 External " Dmitry Osipenko
2019-08-12 19:56 ` Rob Herring
2019-08-11 21:00 ` [PATCH v10 12/15] memory: tegra: Introduce Tegra30 EMC driver Dmitry Osipenko
2019-10-05 16:28 ` Peter Geis
2019-10-09 8:52 ` Dmitry Osipenko
2019-11-15 12:54 ` Jon Hunter
2019-11-15 12:54 ` Jon Hunter
2019-11-15 13:17 ` Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 13/15] memory: tegra: Ensure timing control debug features are disabled Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 14/15] memory: tegra: Consolidate registers definition into common header Dmitry Osipenko
2019-08-11 21:00 ` [PATCH v10 15/15] ARM: dts: tegra30: Add External Memory Controller node Dmitry Osipenko
2019-10-29 13:51 ` Thierry Reding [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=20191029135152.GJ508460@ulmo \
--to=thierry.reding@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=digetx@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=josephl@nvidia.com \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=pdeschrijver@nvidia.com \
--cc=pgaikwad@nvidia.com \
--cc=robh+dt@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.