|
@@ -77,10 +77,12 @@ Table of Contents
|
|
|
3) OpenPIC Interrupt Controllers
|
|
|
4) ISA Interrupt Controllers
|
|
|
|
|
|
- VIII - Specifying GPIO information for devices
|
|
|
+ IX - Specifying GPIO information for devices
|
|
|
1) gpios property
|
|
|
2) gpio-controller nodes
|
|
|
|
|
|
+ X - Specifying device power management information (sleep property)
|
|
|
+
|
|
|
Appendix A - Sample SOC node for MPC8540
|
|
|
|
|
|
|
|
@@ -2422,8 +2424,8 @@ encodings listed below:
|
|
|
2 = high to low edge sensitive type enabled
|
|
|
3 = low to high edge sensitive type enabled
|
|
|
|
|
|
-VIII - Specifying GPIO information for devices
|
|
|
-==============================================
|
|
|
+IX - Specifying GPIO information for devices
|
|
|
+============================================
|
|
|
|
|
|
1) gpios property
|
|
|
-----------------
|
|
@@ -2471,6 +2473,37 @@ Example of two SOC GPIO banks defined as gpio-controller nodes:
|
|
|
gpio-controller;
|
|
|
};
|
|
|
|
|
|
+X - Specifying Device Power Management Information (sleep property)
|
|
|
+===================================================================
|
|
|
+
|
|
|
+Devices on SOCs often have mechanisms for placing devices into low-power
|
|
|
+states that are decoupled from the devices' own register blocks. Sometimes,
|
|
|
+this information is more complicated than a cell-index property can
|
|
|
+reasonably describe. Thus, each device controlled in such a manner
|
|
|
+may contain a "sleep" property which describes these connections.
|
|
|
+
|
|
|
+The sleep property consists of one or more sleep resources, each of
|
|
|
+which consists of a phandle to a sleep controller, followed by a
|
|
|
+controller-specific sleep specifier of zero or more cells.
|
|
|
+
|
|
|
+The semantics of what type of low power modes are possible are defined
|
|
|
+by the sleep controller. Some examples of the types of low power modes
|
|
|
+that may be supported are:
|
|
|
+
|
|
|
+ - Dynamic: The device may be disabled or enabled at any time.
|
|
|
+ - System Suspend: The device may request to be disabled or remain
|
|
|
+ awake during system suspend, but will not be disabled until then.
|
|
|
+ - Permanent: The device is disabled permanently (until the next hard
|
|
|
+ reset).
|
|
|
+
|
|
|
+Some devices may share a clock domain with each other, such that they should
|
|
|
+only be suspended when none of the devices are in use. Where reasonable,
|
|
|
+such nodes should be placed on a virtual bus, where the bus has the sleep
|
|
|
+property. If the clock domain is shared among devices that cannot be
|
|
|
+reasonably grouped in this manner, then create a virtual sleep controller
|
|
|
+(similar to an interrupt nexus, except that defining a standardized
|
|
|
+sleep-map should wait until its necessity is demonstrated).
|
|
|
+
|
|
|
Appendix A - Sample SOC node for MPC8540
|
|
|
========================================
|
|
|
|
|
@@ -2487,47 +2520,48 @@ not necessary as they are usually the same as the root node.
|
|
|
reg = <e0000000 00003000>;
|
|
|
bus-frequency = <0>;
|
|
|
|
|
|
- mdio@24520 {
|
|
|
- reg = <24520 20>;
|
|
|
- device_type = "mdio";
|
|
|
- compatible = "gianfar";
|
|
|
-
|
|
|
- ethernet-phy@0 {
|
|
|
- linux,phandle = <2452000>
|
|
|
- interrupt-parent = <40000>;
|
|
|
- interrupts = <35 1>;
|
|
|
- reg = <0>;
|
|
|
- device_type = "ethernet-phy";
|
|
|
- };
|
|
|
-
|
|
|
- ethernet-phy@1 {
|
|
|
- linux,phandle = <2452001>
|
|
|
- interrupt-parent = <40000>;
|
|
|
- interrupts = <35 1>;
|
|
|
- reg = <1>;
|
|
|
- device_type = "ethernet-phy";
|
|
|
- };
|
|
|
-
|
|
|
- ethernet-phy@3 {
|
|
|
- linux,phandle = <2452002>
|
|
|
- interrupt-parent = <40000>;
|
|
|
- interrupts = <35 1>;
|
|
|
- reg = <3>;
|
|
|
- device_type = "ethernet-phy";
|
|
|
- };
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
ethernet@24000 {
|
|
|
- #size-cells = <0>;
|
|
|
+ #address-cells = <1>;
|
|
|
+ #size-cells = <1>;
|
|
|
device_type = "network";
|
|
|
model = "TSEC";
|
|
|
- compatible = "gianfar";
|
|
|
+ compatible = "gianfar", "simple-bus";
|
|
|
reg = <24000 1000>;
|
|
|
mac-address = [ 00 E0 0C 00 73 00 ];
|
|
|
interrupts = <d 3 e 3 12 3>;
|
|
|
interrupt-parent = <40000>;
|
|
|
phy-handle = <2452000>;
|
|
|
+ sleep = <&pmc 00000080>;
|
|
|
+ ranges;
|
|
|
+
|
|
|
+ mdio@24520 {
|
|
|
+ reg = <24520 20>;
|
|
|
+ compatible = "fsl,gianfar-mdio";
|
|
|
+
|
|
|
+ ethernet-phy@0 {
|
|
|
+ linux,phandle = <2452000>
|
|
|
+ interrupt-parent = <40000>;
|
|
|
+ interrupts = <35 1>;
|
|
|
+ reg = <0>;
|
|
|
+ device_type = "ethernet-phy";
|
|
|
+ };
|
|
|
+
|
|
|
+ ethernet-phy@1 {
|
|
|
+ linux,phandle = <2452001>
|
|
|
+ interrupt-parent = <40000>;
|
|
|
+ interrupts = <35 1>;
|
|
|
+ reg = <1>;
|
|
|
+ device_type = "ethernet-phy";
|
|
|
+ };
|
|
|
+
|
|
|
+ ethernet-phy@3 {
|
|
|
+ linux,phandle = <2452002>
|
|
|
+ interrupt-parent = <40000>;
|
|
|
+ interrupts = <35 1>;
|
|
|
+ reg = <3>;
|
|
|
+ device_type = "ethernet-phy";
|
|
|
+ };
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
ethernet@25000 {
|
|
@@ -2541,6 +2575,7 @@ not necessary as they are usually the same as the root node.
|
|
|
interrupts = <13 3 14 3 18 3>;
|
|
|
interrupt-parent = <40000>;
|
|
|
phy-handle = <2452001>;
|
|
|
+ sleep = <&pmc 00000040>;
|
|
|
};
|
|
|
|
|
|
ethernet@26000 {
|
|
@@ -2554,15 +2589,33 @@ not necessary as they are usually the same as the root node.
|
|
|
interrupts = <19 3>;
|
|
|
interrupt-parent = <40000>;
|
|
|
phy-handle = <2452002>;
|
|
|
+ sleep = <&pmc 00000020>;
|
|
|
};
|
|
|
|
|
|
serial@4500 {
|
|
|
- device_type = "serial";
|
|
|
- compatible = "ns16550";
|
|
|
- reg = <4500 100>;
|
|
|
- clock-frequency = <0>;
|
|
|
- interrupts = <1a 3>;
|
|
|
- interrupt-parent = <40000>;
|
|
|
+ #address-cells = <1>;
|
|
|
+ #size-cells = <1>;
|
|
|
+ compatible = "fsl,mpc8540-duart", "simple-bus";
|
|
|
+ sleep = <&pmc 00000002>;
|
|
|
+ ranges;
|
|
|
+
|
|
|
+ serial@4500 {
|
|
|
+ device_type = "serial";
|
|
|
+ compatible = "ns16550";
|
|
|
+ reg = <4500 100>;
|
|
|
+ clock-frequency = <0>;
|
|
|
+ interrupts = <1a 3>;
|
|
|
+ interrupt-parent = <40000>;
|
|
|
+ };
|
|
|
+
|
|
|
+ serial@4600 {
|
|
|
+ device_type = "serial";
|
|
|
+ compatible = "ns16550";
|
|
|
+ reg = <4600 100>;
|
|
|
+ clock-frequency = <0>;
|
|
|
+ interrupts = <1a 3>;
|
|
|
+ interrupt-parent = <40000>;
|
|
|
+ };
|
|
|
};
|
|
|
|
|
|
pic@40000 {
|
|
@@ -2581,6 +2634,11 @@ not necessary as they are usually the same as the root node.
|
|
|
device_type = "i2c";
|
|
|
compatible = "fsl-i2c";
|
|
|
dfsrr;
|
|
|
+ sleep = <&pmc 00000004>;
|
|
|
};
|
|
|
|
|
|
+ pmc: power@e0070 {
|
|
|
+ compatible = "fsl,mpc8540-pmc", "fsl,mpc8548-pmc";
|
|
|
+ reg = <e0070 20>;
|
|
|
+ };
|
|
|
};
|