From: cw00.choi@samsung.com (Chanwoo Choi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v8 07/20] PM / devfreq: exynos: Update documentation for bus devices using passive governor
Date: Fri, 08 Apr 2016 13:24:56 +0900 [thread overview]
Message-ID: <1460089509-16260-8-git-send-email-cw00.choi@samsung.com> (raw)
In-Reply-To: <1460089509-16260-1-git-send-email-cw00.choi@samsung.com>
This patch updates the documentation for passive bus devices and adds the
detailed example of Exynos3250.
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
---
.../devicetree/bindings/devfreq/exynos-bus.txt | 250 ++++++++++++++++++++-
1 file changed, 247 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/devfreq/exynos-bus.txt b/Documentation/devicetree/bindings/devfreq/exynos-bus.txt
index 78171b918e3f..03f13d38f1a1 100644
--- a/Documentation/devicetree/bindings/devfreq/exynos-bus.txt
+++ b/Documentation/devicetree/bindings/devfreq/exynos-bus.txt
@@ -8,22 +8,46 @@ of the bus in runtime. To monitor the usage of each bus in runtime,
the driver uses the PPMU (Platform Performance Monitoring Unit), which
is able to measure the current load of sub-blocks.
+The Exynos SoC includes the various sub-blocks which have the each AXI bus.
+The each AXI bus has the owned source clock but, has not the only owned
+power line. The power line might be shared among one more sub-blocks.
+So, we can divide into two type of device as the role of each sub-block.
+There are two type of bus devices as following:
+- parent bus device
+- passive bus device
+
+Basically, parent and passive bus device share the same power line.
+The parent bus device can only change the voltage of shared power line
+and the rest bus devices (passive bus device) depend on the decision of
+the parent bus device. If there are three blocks which share the VDD_xxx
+power line, Only one block should be parent device and then the rest blocks
+should depend on the parent device as passive device.
+
+ VDD_xxx |--- A block (parent)
+ |--- B block (passive)
+ |--- C block (passive)
+
There are a little different composition among Exynos SoC because each Exynos
SoC has different sub-blocks. Therefore, shch difference should be specified
in devicetree file instead of each device driver. In result, this driver
is able to support the bus frequency for all Exynos SoCs.
-Required properties for bus device:
+Required properties for all bus devices:
- compatible: Should be "samsung,exynos-bus".
- clock-names : the name of clock used by the bus, "bus".
- clocks : phandles for clock specified in "clock-names" property.
- operating-points-v2: the OPP table including frequency/voltage information
to support DVFS (Dynamic Voltage/Frequency Scaling) feature.
+
+Required properties only for parent bus device:
- vdd-supply: the regulator to provide the buses with the voltage.
- devfreq-events: the devfreq-event device to monitor the current utilization
of buses.
-Optional properties for bus device:
+Required properties only for passive bus device:
+- devfreq: the parent bus device.
+
+Optional properties only for parent bus device:
- exynos,saturation-ratio: the percentage value which is used to calibrate
the performance count against total cycle count.
- exynos,voltage-tolerance: the percentage value for bus voltage tolerance
@@ -34,7 +58,20 @@ Example1:
power line (regulator). The MIF (Memory Interface) AXI bus is used to
transfer data between DRAM and CPU and uses the VDD_MIF regualtor.
- - power line(VDD_MIF) --> bus for DMC (Dynamic Memory Controller) block
+ - MIF (Memory Interface) block
+ : VDD_MIF |--- DMC (Dynamic Memory Controller)
+
+ - INT (Internal) block
+ : VDD_INT |--- LEFTBUS (parent device)
+ |--- PERIL
+ |--- MFC
+ |--- G3D
+ |--- RIGHTBUS
+ |--- FSYS
+ |--- LCD0
+ |--- PERIR
+ |--- ISP
+ |--- CAM
- MIF bus's frequency/voltage table
-----------------------
@@ -47,6 +84,24 @@ Example1:
|L5| 400000 |875000 |
-----------------------
+ - INT bus's frequency/voltage table
+ ----------------------------------------------------------
+ |Block|LEFTBUS|RIGHTBUS|MCUISP |ISP |PERIL ||VDD_INT |
+ | name| |LCD0 | | | || |
+ | | |FSYS | | | || |
+ | | |MFC | | | || |
+ ----------------------------------------------------------
+ |Mode |*parent|passive |passive|passive|passive|| |
+ ----------------------------------------------------------
+ |Lv |Frequency ||Voltage |
+ ----------------------------------------------------------
+ |L1 |50000 |50000 |50000 |50000 |50000 ||900000 |
+ |L2 |80000 |80000 |80000 |80000 |80000 ||900000 |
+ |L3 |100000 |100000 |100000 |100000 |100000 ||1000000 |
+ |L4 |134000 |134000 |200000 |200000 | ||1000000 |
+ |L5 |200000 |200000 |400000 |300000 | ||1000000 |
+ ----------------------------------------------------------
+
Example2 :
The bus of DMC (Dynamic Memory Controller) block in exynos3250.dtsi
is listed below:
@@ -85,6 +140,154 @@ Example2 :
};
};
+ bus_leftbus: bus_leftbus {
+ compatible = "samsung,exynos-bus";
+ clocks = <&cmu CLK_DIV_GDL>;
+ clock-names = "bus";
+ operating-points-v2 = <&bus_leftbus_opp_table>;
+ status = "disabled";
+ };
+
+ bus_rightbus: bus_rightbus {
+ compatible = "samsung,exynos-bus";
+ clocks = <&cmu CLK_DIV_GDR>;
+ clock-names = "bus";
+ operating-points-v2 = <&bus_leftbus_opp_table>;
+ status = "disabled";
+ };
+
+ bus_lcd0: bus_lcd0 {
+ compatible = "samsung,exynos-bus";
+ clocks = <&cmu CLK_DIV_ACLK_160>;
+ clock-names = "bus";
+ operating-points-v2 = <&bus_leftbus_opp_table>;
+ status = "disabled";
+ };
+
+ bus_fsys: bus_fsys {
+ compatible = "samsung,exynos-bus";
+ clocks = <&cmu CLK_DIV_ACLK_200>;
+ clock-names = "bus";
+ operating-points-v2 = <&bus_leftbus_opp_table>;
+ status = "disabled";
+ };
+
+ bus_mcuisp: bus_mcuisp {
+ compatible = "samsung,exynos-bus";
+ clocks = <&cmu CLK_DIV_ACLK_400_MCUISP>;
+ clock-names = "bus";
+ operating-points-v2 = <&bus_mcuisp_opp_table>;
+ status = "disabled";
+ };
+
+ bus_isp: bus_isp {
+ compatible = "samsung,exynos-bus";
+ clocks = <&cmu CLK_DIV_ACLK_266>;
+ clock-names = "bus";
+ operating-points-v2 = <&bus_isp_opp_table>;
+ status = "disabled";
+ };
+
+ bus_peril: bus_peril {
+ compatible = "samsung,exynos-bus";
+ clocks = <&cmu CLK_DIV_ACLK_100>;
+ clock-names = "bus";
+ operating-points-v2 = <&bus_peril_opp_table>;
+ status = "disabled";
+ };
+
+ bus_mfc: bus_mfc {
+ compatible = "samsung,exynos-bus";
+ clocks = <&cmu CLK_SCLK_MFC>;
+ clock-names = "bus";
+ operating-points-v2 = <&bus_leftbus_opp_table>;
+ status = "disabled";
+ };
+
+ bus_leftbus_opp_table: opp_table1 {
+ compatible = "operating-points-v2";
+ opp-shared;
+
+ opp at 50000000 {
+ opp-hz = /bits/ 64 <50000000>;
+ opp-microvolt = <900000>;
+ };
+ opp at 80000000 {
+ opp-hz = /bits/ 64 <80000000>;
+ opp-microvolt = <900000>;
+ };
+ opp at 100000000 {
+ opp-hz = /bits/ 64 <100000000>;
+ opp-microvolt = <1000000>;
+ };
+ opp at 134000000 {
+ opp-hz = /bits/ 64 <134000000>;
+ opp-microvolt = <1000000>;
+ };
+ opp at 200000000 {
+ opp-hz = /bits/ 64 <200000000>;
+ opp-microvolt = <1000000>;
+ };
+ };
+
+ bus_mcuisp_opp_table: opp_table2 {
+ compatible = "operating-points-v2";
+ opp-shared;
+
+ opp at 50000000 {
+ opp-hz = /bits/ 64 <50000000>;
+ };
+ opp at 80000000 {
+ opp-hz = /bits/ 64 <80000000>;
+ };
+ opp at 100000000 {
+ opp-hz = /bits/ 64 <100000000>;
+ };
+ opp at 200000000 {
+ opp-hz = /bits/ 64 <200000000>;
+ };
+ opp at 400000000 {
+ opp-hz = /bits/ 64 <400000000>;
+ };
+ };
+
+ bus_isp_opp_table: opp_table3 {
+ compatible = "operating-points-v2";
+ opp-shared;
+
+ opp at 50000000 {
+ opp-hz = /bits/ 64 <50000000>;
+ };
+ opp at 80000000 {
+ opp-hz = /bits/ 64 <80000000>;
+ };
+ opp at 100000000 {
+ opp-hz = /bits/ 64 <100000000>;
+ };
+ opp at 200000000 {
+ opp-hz = /bits/ 64 <200000000>;
+ };
+ opp at 300000000 {
+ opp-hz = /bits/ 64 <300000000>;
+ };
+ };
+
+ bus_peril_opp_table: opp_table4 {
+ compatible = "operating-points-v2";
+ opp-shared;
+
+ opp at 50000000 {
+ opp-hz = /bits/ 64 <50000000>;
+ };
+ opp at 80000000 {
+ opp-hz = /bits/ 64 <80000000>;
+ };
+ opp at 100000000 {
+ opp-hz = /bits/ 64 <100000000>;
+ };
+ };
+
+
Usage case to handle the frequency and voltage of bus on runtime
in exynos3250-rinato.dts is listed below:
@@ -93,3 +296,44 @@ Example2 :
vdd-supply = <&buck1_reg>; /* VDD_MIF */
status = "okay";
};
+
+ &bus_leftbus {
+ devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
+ vdd-supply = <&buck3_reg>;
+ status = "okay";
+ };
+
+ &bus_rightbus {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+ };
+
+ &bus_lcd0 {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+ };
+
+ &bus_fsys {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+ };
+
+ &bus_mcuisp {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+ };
+
+ &bus_isp {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+ };
+
+ &bus_peril {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+ };
+
+ &bus_mfc {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+ };
--
1.9.1
next prev parent reply other threads:[~2016-04-08 4:24 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-08 4:24 [PATCH v8 00/20] PM / devferq: Add generic exynos bus frequency driver and new passive governor Chanwoo Choi
2016-04-08 4:24 ` [PATCH v8 01/20] PM / devfreq: exynos: Add generic exynos bus frequency driver Chanwoo Choi
2016-04-08 4:24 ` [PATCH v8 02/20] PM / devfreq: exynos: Add documentation for " Chanwoo Choi
2016-04-11 15:40 ` Rob Herring
2016-04-11 20:25 ` Chanwoo Choi
2016-04-14 5:10 ` Chanwoo Choi
2016-04-08 4:24 ` [PATCH v8 03/20] PM / devfreq: Add devfreq_get_devfreq_by_phandle() Chanwoo Choi
2016-04-08 4:24 ` [PATCH v8 04/20] PM / devfreq: Add new DEVFREQ_TRANSITION_NOTIFIER notifier Chanwoo Choi
2016-04-08 4:24 ` [PATCH v8 05/20] PM / devfreq: Add new passive governor Chanwoo Choi
2016-04-08 4:24 ` [PATCH v8 06/20] PM / devfreq: exynos: Add support of bus frequency of sub-blocks using " Chanwoo Choi
2016-04-08 4:24 ` Chanwoo Choi [this message]
2016-04-08 4:24 ` [PATCH v8 08/20] PM / devfreq: exynos: Add the detailed correlation between sub-blocks and power line Chanwoo Choi
2016-04-08 4:24 ` [PATCH v8 09/20] PM / devfreq: exynos: Remove unused exynos4/5 busfreq driver Chanwoo Choi
2016-04-08 4:24 ` [PATCH v8 10/20] MAINTAINERS: Add samsung bus frequency driver entry Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 11/20] ARM: dts: Add DMC bus node for Exynos3250 Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 12/20] ARM: dts: Add DMC bus frequency for exynos3250-rinato/monk Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 13/20] ARM: dts: Add bus nodes using VDD_INT for Exynos3250 Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 14/20] ARM: dts: Add bus nodes using VDD_MIF for Exynos4x12 Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 15/20] ARM: dts: Add bus nodes using VDD_INT " Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 16/20] ARM: dts: Add bus nodes using VDD_MIF for Exynos4210 Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 17/20] ARM: dts: Add exynos4412-ppmu-common dtsi to delete duplicate PPMU nodes Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 18/20] ARM: dts: Add support of bus frequency using VDD_INT for exynos3250-rinato Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 19/20] ARM: dts: Expand the voltage range of buck1/3 regulator for exynos4412-odroidu3 Chanwoo Choi
2016-04-08 4:25 ` [PATCH v8 20/20] ARM: dts: Add support of bus frequency for exynos4412-trats/odroidu3 Chanwoo Choi
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=1460089509-16260-8-git-send-email-cw00.choi@samsung.com \
--to=cw00.choi@samsung.com \
--cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox