Message ID | 20191220115653.6487-1-a.swigon@samsung.com (mailing list archive) |
---|---|
Headers | show |
Series | PM / devfreq: Simple QoS for exynos-bus using interconnect | expand |
Hi Artur, I agree this approach. On next version, please update exynos-bus dt-binding document with example. On Fri, Dec 20, 2019 at 9:01 PM Artur Świgoń <a.swigon@samsung.com> wrote: > > The following patchset adds interconnect[1][2] framework support to the > exynos-bus devfreq driver. Extending the devfreq driver with > interconnect functionality started as a response to the issue referenced > in [3]. The patches can be subdivided into three groups: > > (a) Tweaking the interconnect framework to support the exynos-bus use > case (patches 01--03/07). Exporting of_icc_get_from_provider() allows to > avoid hardcoding every single graph edge in the DT or driver source, and > relaxing the requirement on #interconnect-cells removes the need to > provide dummy node IDs in the DT. A new field in struct icc_provider is > used to explicitly allow configuring node pairs from two different > providers. > > (b) Implementing interconnect providers in the exynos-bus devfreq driver > and adding required DT properties for one selected platform, namely > Exynos4412 (patches 04--05/07). Due to the fact that this aims to be a > generic driver for various Exynos SoCs, node IDs are generated > dynamically (rather than hardcoded). > > (c) Implementing a sample interconnect consumer for exynos-mixer > targeted at solving the issue referenced in [3], again with DT > properties only for Exynos4412 (patches 06--07/07). > > Integration of devfreq and interconnect frameworks is achieved by using > the dev_pm_qos_*() API. When CONFIG_INTERCONNECT is 'n' (such as in > exynos_defconfig) all interconnect API functions are no-ops. > > This series depends on these three patches (merged into devfreq-next[6]): > * https://patchwork.kernel.org/patch/11279087/ > * https://patchwork.kernel.org/patch/11279093/ > * https://patchwork.kernel.org/patch/11293765/ > and on this series: > * https://patchwork.kernel.org/cover/11304545/ > (which does not apply cleanly on next-20191220, adding > --exclude=arch/arm/boot/dts/exynos5422-odroid-core.dtsi to 'git am' is a > quick workaround) > > --- > Changes since v2 [5]: > * Use icc_std_aggregate(). > * Implement a different modification of apply_constraints() in > drivers/interconnect/core.c (patch 03). > * Use 'exynos,interconnect-parent-node' in the DT instead of > 'devfreq'/'parent', depending on the bus. > * Rebase on DT patches that deprecate the 'devfreq' DT property. > * Improve error handling, including freeing generated IDs on failure. > * Remove exynos_bus_icc_connect() and add exynos_bus_icc_get_parent(). > > --- > Changes since v1 [4]: > * Rebase on coupled regulators patches. > * Use dev_pm_qos_*() API instead of overriding frequency in > exynos_bus_target(). > * Use IDR for node ID allocation. > * Reverse order of multiplication and division in > mixer_set_memory_bandwidth() (patch 07) to avoid integer overflow. > > --- > Artur Świgoń > Samsung R&D Institute Poland > Samsung Electronics > > --- > References: > [1] Documentation/interconnect/interconnect.rst > [2] Documentation/devicetree/bindings/interconnect/interconnect.txt > [3] https://patchwork.kernel.org/patch/10861757/ (original issue) > [4] https://patchwork.kernel.org/cover/11054417/ (v1 of this RFC) > [5] https://patchwork.kernel.org/cover/11152595/ (v2 of this RFC) > [6] https://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git/log/?h=devfreq-next > > Artur Świgoń (6): > interconnect: Export of_icc_get_from_provider() > interconnect: Relax requirement in of_icc_get_from_provider() > interconnect: Allow inter-provider pairs to be configured > arm: dts: exynos: Add interconnect bindings for Exynos4412 > devfreq: exynos-bus: Add interconnect functionality to exynos-bus > arm: dts: exynos: Add interconnects to Exynos4412 mixer > > Marek Szyprowski (1): > drm: exynos: mixer: Add interconnect support > > .../boot/dts/exynos4412-odroid-common.dtsi | 5 + > arch/arm/boot/dts/exynos4412.dtsi | 1 + > drivers/devfreq/exynos-bus.c | 144 ++++++++++++++++++ > drivers/gpu/drm/exynos/exynos_mixer.c | 71 ++++++++- > drivers/interconnect/core.c | 16 +- > include/linux/interconnect-provider.h | 8 + > 6 files changed, 232 insertions(+), 13 deletions(-) > > -- > 2.17.1 >