aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/kernel-parameters.txt2
-rw-r--r--Documentation/powerpc/booting-without-of.txt622
-rw-r--r--Documentation/powerpc/phyp-assisted-dump.txt127
3 files changed, 728 insertions, 23 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index f4839606988b..dfb5bef24013 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -954,6 +954,8 @@ and is between 256 and 4096 characters. It is defined in the file
954 954
955 l2cr= [PPC] 955 l2cr= [PPC]
956 956
957 l3cr= [PPC]
958
957 lapic [X86-32,APIC] Enable the local APIC even if BIOS 959 lapic [X86-32,APIC] Enable the local APIC even if BIOS
958 disabled it. 960 disabled it.
959 961
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index 7b4e8a70882c..4cc780024e6c 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -59,12 +59,39 @@ Table of Contents
59 p) Freescale Synchronous Serial Interface 59 p) Freescale Synchronous Serial Interface
60 q) USB EHCI controllers 60 q) USB EHCI controllers
61 61
62 VII - Specifying interrupt information for devices 62 VII - Marvell Discovery mv64[345]6x System Controller chips
63 1) The /system-controller node
64 2) Child nodes of /system-controller
65 a) Marvell Discovery MDIO bus
66 b) Marvell Discovery ethernet controller
67 c) Marvell Discovery PHY nodes
68 d) Marvell Discovery SDMA nodes
69 e) Marvell Discovery BRG nodes
70 f) Marvell Discovery CUNIT nodes
71 g) Marvell Discovery MPSCROUTING nodes
72 h) Marvell Discovery MPSCINTR nodes
73 i) Marvell Discovery MPSC nodes
74 j) Marvell Discovery Watch Dog Timer nodes
75 k) Marvell Discovery I2C nodes
76 l) Marvell Discovery PIC (Programmable Interrupt Controller) nodes
77 m) Marvell Discovery MPP (Multipurpose Pins) multiplexing nodes
78 n) Marvell Discovery GPP (General Purpose Pins) nodes
79 o) Marvell Discovery PCI host bridge node
80 p) Marvell Discovery CPU Error nodes
81 q) Marvell Discovery SRAM Controller nodes
82 r) Marvell Discovery PCI Error Handler nodes
83 s) Marvell Discovery Memory Controller nodes
84
85 VIII - Specifying interrupt information for devices
63 1) interrupts property 86 1) interrupts property
64 2) interrupt-parent property 87 2) interrupt-parent property
65 3) OpenPIC Interrupt Controllers 88 3) OpenPIC Interrupt Controllers
66 4) ISA Interrupt Controllers 89 4) ISA Interrupt Controllers
67 90
91 VIII - Specifying GPIO information for devices
92 1) gpios property
93 2) gpio-controller nodes
94
68 Appendix A - Sample SOC node for MPC8540 95 Appendix A - Sample SOC node for MPC8540
69 96
70 97
@@ -1269,10 +1296,6 @@ platforms are moved over to use the flattened-device-tree model.
1269 1296
1270 Recommended properties: 1297 Recommended properties:
1271 1298
1272 - linux,network-index : This is the intended "index" of this
1273 network device. This is used by the bootwrapper to interpret
1274 MAC addresses passed by the firmware when no information other
1275 than indices is available to associate an address with a device.
1276 - phy-connection-type : a string naming the controller/PHY interface type, 1299 - phy-connection-type : a string naming the controller/PHY interface type,
1277 i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "sgmii", 1300 i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "sgmii",
1278 "tbi", or "rtbi". This property is only really needed if the connection 1301 "tbi", or "rtbi". This property is only really needed if the connection
@@ -1622,8 +1645,7 @@ platforms are moved over to use the flattened-device-tree model.
1622 - device_type : should be "network", "hldc", "uart", "transparent" 1645 - device_type : should be "network", "hldc", "uart", "transparent"
1623 "bisync", "atm", or "serial". 1646 "bisync", "atm", or "serial".
1624 - compatible : could be "ucc_geth" or "fsl_atm" and so on. 1647 - compatible : could be "ucc_geth" or "fsl_atm" and so on.
1625 - model : should be "UCC". 1648 - cell-index : the ucc number(1-8), corresponding to UCCx in UM.
1626 - device-id : the ucc number(1-8), corresponding to UCCx in UM.
1627 - reg : Offset and length of the register set for the device 1649 - reg : Offset and length of the register set for the device
1628 - interrupts : <a b> where a is the interrupt number and b is a 1650 - interrupts : <a b> where a is the interrupt number and b is a
1629 field that represents an encoding of the sense and level 1651 field that represents an encoding of the sense and level
@@ -1667,10 +1689,6 @@ platforms are moved over to use the flattened-device-tree model.
1667 - phy-handle : The phandle for the PHY connected to this controller. 1689 - phy-handle : The phandle for the PHY connected to this controller.
1668 1690
1669 Recommended properties: 1691 Recommended properties:
1670 - linux,network-index : This is the intended "index" of this
1671 network device. This is used by the bootwrapper to interpret
1672 MAC addresses passed by the firmware when no information other
1673 than indices is available to associate an address with a device.
1674 - phy-connection-type : a string naming the controller/PHY interface type, 1692 - phy-connection-type : a string naming the controller/PHY interface type,
1675 i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id" (Internal 1693 i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id" (Internal
1676 Delay), "rgmii-txid" (delay on TX only), "rgmii-rxid" (delay on RX only), 1694 Delay), "rgmii-txid" (delay on TX only), "rgmii-rxid" (delay on RX only),
@@ -1680,8 +1698,7 @@ platforms are moved over to use the flattened-device-tree model.
1680 ucc@2000 { 1698 ucc@2000 {
1681 device_type = "network"; 1699 device_type = "network";
1682 compatible = "ucc_geth"; 1700 compatible = "ucc_geth";
1683 model = "UCC"; 1701 cell-index = <1>;
1684 device-id = <1>;
1685 reg = <2000 200>; 1702 reg = <2000 200>;
1686 interrupts = <a0 0>; 1703 interrupts = <a0 0>;
1687 interrupt-parent = <700>; 1704 interrupt-parent = <700>;
@@ -1995,7 +2012,6 @@ platforms are moved over to use the flattened-device-tree model.
1995 interrupts = <20 8>; 2012 interrupts = <20 8>;
1996 interrupt-parent = <&PIC>; 2013 interrupt-parent = <&PIC>;
1997 phy-handle = <&PHY0>; 2014 phy-handle = <&PHY0>;
1998 linux,network-index = <0>;
1999 fsl,cpm-command = <12000300>; 2015 fsl,cpm-command = <12000300>;
2000 }; 2016 };
2001 2017
@@ -2217,12 +2233,6 @@ platforms are moved over to use the flattened-device-tree model.
2217 EMAC, that is the content of the current (bogus) "phy-port" 2233 EMAC, that is the content of the current (bogus) "phy-port"
2218 property. 2234 property.
2219 2235
2220 Recommended properties:
2221 - linux,network-index : This is the intended "index" of this
2222 network device. This is used by the bootwrapper to interpret
2223 MAC addresses passed by the firmware when no information other
2224 than indices is available to associate an address with a device.
2225
2226 Optional properties: 2236 Optional properties:
2227 - phy-address : 1 cell, optional, MDIO address of the PHY. If absent, 2237 - phy-address : 1 cell, optional, MDIO address of the PHY. If absent,
2228 a search is performed. 2238 a search is performed.
@@ -2246,7 +2256,6 @@ platforms are moved over to use the flattened-device-tree model.
2246 Example: 2256 Example:
2247 2257
2248 EMAC0: ethernet@40000800 { 2258 EMAC0: ethernet@40000800 {
2249 linux,network-index = <0>;
2250 device_type = "network"; 2259 device_type = "network";
2251 compatible = "ibm,emac-440gp", "ibm,emac"; 2260 compatible = "ibm,emac-440gp", "ibm,emac";
2252 interrupt-parent = <&UIC1>; 2261 interrupt-parent = <&UIC1>;
@@ -2817,9 +2826,528 @@ platforms are moved over to use the flattened-device-tree model.
2817 }; 2826 };
2818 2827
2819 2828
2820 More devices will be defined as this spec matures. 2829VII - Marvell Discovery mv64[345]6x System Controller chips
2830===========================================================
2831
2832The Marvell mv64[345]60 series of system controller chips contain
2833many of the peripherals needed to implement a complete computer
2834system. In this section, we define device tree nodes to describe
2835the system controller chip itself and each of the peripherals
2836which it contains. Compatible string values for each node are
2837prefixed with the string "marvell,", for Marvell Technology Group Ltd.
2838
28391) The /system-controller node
2840
2841 This node is used to represent the system-controller and must be
2842 present when the system uses a system contller chip. The top-level
2843 system-controller node contains information that is global to all
2844 devices within the system controller chip. The node name begins
2845 with "system-controller" followed by the unit address, which is
2846 the base address of the memory-mapped register set for the system
2847 controller chip.
2848
2849 Required properties:
2850
2851 - ranges : Describes the translation of system controller addresses
2852 for memory mapped registers.
2853 - clock-frequency: Contains the main clock frequency for the system
2854 controller chip.
2855 - reg : This property defines the address and size of the
2856 memory-mapped registers contained within the system controller
2857 chip. The address specified in the "reg" property should match
2858 the unit address of the system-controller node.
2859 - #address-cells : Address representation for system controller
2860 devices. This field represents the number of cells needed to
2861 represent the address of the memory-mapped registers of devices
2862 within the system controller chip.
2863 - #size-cells : Size representation for for the memory-mapped
2864 registers within the system controller chip.
2865 - #interrupt-cells : Defines the width of cells used to represent
2866 interrupts.
2867
2868 Optional properties:
2869
2870 - model : The specific model of the system controller chip. Such
2871 as, "mv64360", "mv64460", or "mv64560".
2872 - compatible : A string identifying the compatibility identifiers
2873 of the system controller chip.
2874
2875 The system-controller node contains child nodes for each system
2876 controller device that the platform uses. Nodes should not be created
2877 for devices which exist on the system controller chip but are not used
2878
2879 Example Marvell Discovery mv64360 system-controller node:
2880
2881 system-controller@f1000000 { /* Marvell Discovery mv64360 */
2882 #address-cells = <1>;
2883 #size-cells = <1>;
2884 model = "mv64360"; /* Default */
2885 compatible = "marvell,mv64360";
2886 clock-frequency = <133333333>;
2887 reg = <0xf1000000 0x10000>;
2888 virtual-reg = <0xf1000000>;
2889 ranges = <0x88000000 0x88000000 0x1000000 /* PCI 0 I/O Space */
2890 0x80000000 0x80000000 0x8000000 /* PCI 0 MEM Space */
2891 0xa0000000 0xa0000000 0x4000000 /* User FLASH */
2892 0x00000000 0xf1000000 0x0010000 /* Bridge's regs */
2893 0xf2000000 0xf2000000 0x0040000>;/* Integrated SRAM */
2894
2895 [ child node definitions... ]
2896 }
2897
28982) Child nodes of /system-controller
2899
2900 a) Marvell Discovery MDIO bus
2901
2902 The MDIO is a bus to which the PHY devices are connected. For each
2903 device that exists on this bus, a child node should be created. See
2904 the definition of the PHY node below for an example of how to define
2905 a PHY.
2906
2907 Required properties:
2908 - #address-cells : Should be <1>
2909 - #size-cells : Should be <0>
2910 - device_type : Should be "mdio"
2911 - compatible : Should be "marvell,mv64360-mdio"
2912
2913 Example:
2914
2915 mdio {
2916 #address-cells = <1>;
2917 #size-cells = <0>;
2918 device_type = "mdio";
2919 compatible = "marvell,mv64360-mdio";
2920
2921 ethernet-phy@0 {
2922 ......
2923 };
2924 };
2925
2926
2927 b) Marvell Discovery ethernet controller
2928
2929 The Discover ethernet controller is described with two levels
2930 of nodes. The first level describes an ethernet silicon block
2931 and the second level describes up to 3 ethernet nodes within
2932 that block. The reason for the multiple levels is that the
2933 registers for the node are interleaved within a single set
2934 of registers. The "ethernet-block" level describes the
2935 shared register set, and the "ethernet" nodes describe ethernet
2936 port-specific properties.
2937
2938 Ethernet block node
2939
2940 Required properties:
2941 - #address-cells : <1>
2942 - #size-cells : <0>
2943 - compatible : "marvell,mv64360-eth-block"
2944 - reg : Offset and length of the register set for this block
2945
2946 Example Discovery Ethernet block node:
2947 ethernet-block@2000 {
2948 #address-cells = <1>;
2949 #size-cells = <0>;
2950 compatible = "marvell,mv64360-eth-block";
2951 reg = <0x2000 0x2000>;
2952 ethernet@0 {
2953 .......
2954 };
2955 };
2956
2957 Ethernet port node
2958
2959 Required properties:
2960 - device_type : Should be "network".
2961 - compatible : Should be "marvell,mv64360-eth".
2962 - reg : Should be <0>, <1>, or <2>, according to which registers
2963 within the silicon block the device uses.
2964 - interrupts : <a> where a is the interrupt number for the port.
2965 - interrupt-parent : the phandle for the interrupt controller
2966 that services interrupts for this device.
2967 - phy : the phandle for the PHY connected to this ethernet
2968 controller.
2969 - local-mac-address : 6 bytes, MAC address
2970
2971 Example Discovery Ethernet port node:
2972 ethernet@0 {
2973 device_type = "network";
2974 compatible = "marvell,mv64360-eth";
2975 reg = <0>;
2976 interrupts = <32>;
2977 interrupt-parent = <&PIC>;
2978 phy = <&PHY0>;
2979 local-mac-address = [ 00 00 00 00 00 00 ];
2980 };
2981
2982
2983
2984 c) Marvell Discovery PHY nodes
2985
2986 Required properties:
2987 - device_type : Should be "ethernet-phy"
2988 - interrupts : <a> where a is the interrupt number for this phy.
2989 - interrupt-parent : the phandle for the interrupt controller that
2990 services interrupts for this device.
2991 - reg : The ID number for the phy, usually a small integer
2992
2993 Example Discovery PHY node:
2994 ethernet-phy@1 {
2995 device_type = "ethernet-phy";
2996 compatible = "broadcom,bcm5421";
2997 interrupts = <76>; /* GPP 12 */
2998 interrupt-parent = <&PIC>;
2999 reg = <1>;
3000 };
3001
3002
3003 d) Marvell Discovery SDMA nodes
3004
3005 Represent DMA hardware associated with the MPSC (multiprotocol
3006 serial controllers).
3007
3008 Required properties:
3009 - compatible : "marvell,mv64360-sdma"
3010 - reg : Offset and length of the register set for this device
3011 - interrupts : <a> where a is the interrupt number for the DMA
3012 device.
3013 - interrupt-parent : the phandle for the interrupt controller
3014 that services interrupts for this device.
3015
3016 Example Discovery SDMA node:
3017 sdma@4000 {
3018 compatible = "marvell,mv64360-sdma";
3019 reg = <0x4000 0xc18>;
3020 virtual-reg = <0xf1004000>;
3021 interrupts = <36>;
3022 interrupt-parent = <&PIC>;
3023 };
3024
3025
3026 e) Marvell Discovery BRG nodes
3027
3028 Represent baud rate generator hardware associated with the MPSC
3029 (multiprotocol serial controllers).
3030
3031 Required properties:
3032 - compatible : "marvell,mv64360-brg"
3033 - reg : Offset and length of the register set for this device
3034 - clock-src : A value from 0 to 15 which selects the clock
3035 source for the baud rate generator. This value corresponds
3036 to the CLKS value in the BRGx configuration register. See
3037 the mv64x60 User's Manual.
3038 - clock-frequence : The frequency (in Hz) of the baud rate
3039 generator's input clock.
3040 - current-speed : The current speed setting (presumably by
3041 firmware) of the baud rate generator.
3042
3043 Example Discovery BRG node:
3044 brg@b200 {
3045 compatible = "marvell,mv64360-brg";
3046 reg = <0xb200 0x8>;
3047 clock-src = <8>;
3048 clock-frequency = <133333333>;
3049 current-speed = <9600>;
3050 };
3051
3052
3053 f) Marvell Discovery CUNIT nodes
3054
3055 Represent the Serial Communications Unit device hardware.
3056
3057 Required properties:
3058 - reg : Offset and length of the register set for this device
3059
3060 Example Discovery CUNIT node:
3061 cunit@f200 {
3062 reg = <0xf200 0x200>;
3063 };
3064
3065
3066 g) Marvell Discovery MPSCROUTING nodes
3067
3068 Represent the Discovery's MPSC routing hardware
3069
3070 Required properties:
3071 - reg : Offset and length of the register set for this device
3072
3073 Example Discovery CUNIT node:
3074 mpscrouting@b500 {
3075 reg = <0xb400 0xc>;
3076 };
3077
3078
3079 h) Marvell Discovery MPSCINTR nodes
3080
3081 Represent the Discovery's MPSC DMA interrupt hardware registers
3082 (SDMA cause and mask registers).
3083
3084 Required properties:
3085 - reg : Offset and length of the register set for this device
2821 3086
2822VII - Specifying interrupt information for devices 3087 Example Discovery MPSCINTR node:
3088 mpsintr@b800 {
3089 reg = <0xb800 0x100>;
3090 };
3091
3092
3093 i) Marvell Discovery MPSC nodes
3094
3095 Represent the Discovery's MPSC (Multiprotocol Serial Controller)
3096 serial port.
3097
3098 Required properties:
3099 - device_type : "serial"
3100 - compatible : "marvell,mv64360-mpsc"
3101 - reg : Offset and length of the register set for this device
3102 - sdma : the phandle for the SDMA node used by this port
3103 - brg : the phandle for the BRG node used by this port
3104 - cunit : the phandle for the CUNIT node used by this port
3105 - mpscrouting : the phandle for the MPSCROUTING node used by this port
3106 - mpscintr : the phandle for the MPSCINTR node used by this port
3107 - cell-index : the hardware index of this cell in the MPSC core
3108 - max_idle : value needed for MPSC CHR3 (Maximum Frame Length)
3109 register
3110 - interrupts : <a> where a is the interrupt number for the MPSC.
3111 - interrupt-parent : the phandle for the interrupt controller
3112 that services interrupts for this device.
3113
3114 Example Discovery MPSCINTR node:
3115 mpsc@8000 {
3116 device_type = "serial";
3117 compatible = "marvell,mv64360-mpsc";
3118 reg = <0x8000 0x38>;
3119 virtual-reg = <0xf1008000>;
3120 sdma = <&SDMA0>;
3121 brg = <&BRG0>;
3122 cunit = <&CUNIT>;
3123 mpscrouting = <&MPSCROUTING>;
3124 mpscintr = <&MPSCINTR>;
3125 cell-index = <0>;
3126 max_idle = <40>;
3127 interrupts = <40>;
3128 interrupt-parent = <&PIC>;
3129 };
3130
3131
3132 j) Marvell Discovery Watch Dog Timer nodes
3133
3134 Represent the Discovery's watchdog timer hardware
3135
3136 Required properties:
3137 - compatible : "marvell,mv64360-wdt"
3138 - reg : Offset and length of the register set for this device
3139
3140 Example Discovery Watch Dog Timer node:
3141 wdt@b410 {
3142 compatible = "marvell,mv64360-wdt";
3143 reg = <0xb410 0x8>;
3144 };
3145
3146
3147 k) Marvell Discovery I2C nodes
3148
3149 Represent the Discovery's I2C hardware
3150
3151 Required properties:
3152 - device_type : "i2c"
3153 - compatible : "marvell,mv64360-i2c"
3154 - reg : Offset and length of the register set for this device
3155 - interrupts : <a> where a is the interrupt number for the I2C.
3156 - interrupt-parent : the phandle for the interrupt controller
3157 that services interrupts for this device.
3158
3159 Example Discovery I2C node:
3160 compatible = "marvell,mv64360-i2c";
3161 reg = <0xc000 0x20>;
3162 virtual-reg = <0xf100c000>;
3163 interrupts = <37>;
3164 interrupt-parent = <&PIC>;
3165 };
3166
3167
3168 l) Marvell Discovery PIC (Programmable Interrupt Controller) nodes
3169
3170 Represent the Discovery's PIC hardware
3171
3172 Required properties:
3173 - #interrupt-cells : <1>
3174 - #address-cells : <0>
3175 - compatible : "marvell,mv64360-pic"
3176 - reg : Offset and length of the register set for this device
3177 - interrupt-controller
3178
3179 Example Discovery PIC node:
3180 pic {
3181 #interrupt-cells = <1>;
3182 #address-cells = <0>;
3183 compatible = "marvell,mv64360-pic";
3184 reg = <0x0 0x88>;
3185 interrupt-controller;
3186 };
3187
3188
3189 m) Marvell Discovery MPP (Multipurpose Pins) multiplexing nodes
3190
3191 Represent the Discovery's MPP hardware
3192
3193 Required properties:
3194 - compatible : "marvell,mv64360-mpp"
3195 - reg : Offset and length of the register set for this device
3196
3197 Example Discovery MPP node:
3198 mpp@f000 {
3199 compatible = "marvell,mv64360-mpp";
3200 reg = <0xf000 0x10>;
3201 };
3202
3203
3204 n) Marvell Discovery GPP (General Purpose Pins) nodes
3205
3206 Represent the Discovery's GPP hardware
3207
3208 Required properties:
3209 - compatible : "marvell,mv64360-gpp"
3210 - reg : Offset and length of the register set for this device
3211
3212 Example Discovery GPP node:
3213 gpp@f000 {
3214 compatible = "marvell,mv64360-gpp";
3215 reg = <0xf100 0x20>;
3216 };
3217
3218
3219 o) Marvell Discovery PCI host bridge node
3220
3221 Represents the Discovery's PCI host bridge device. The properties
3222 for this node conform to Rev 2.1 of the PCI Bus Binding to IEEE
3223 1275-1994. A typical value for the compatible property is
3224 "marvell,mv64360-pci".
3225
3226 Example Discovery PCI host bridge node
3227 pci@80000000 {
3228 #address-cells = <3>;
3229 #size-cells = <2>;
3230 #interrupt-cells = <1>;
3231 device_type = "pci";
3232 compatible = "marvell,mv64360-pci";
3233 reg = <0xcf8 0x8>;
3234 ranges = <0x01000000 0x0 0x0
3235 0x88000000 0x0 0x01000000
3236 0x02000000 0x0 0x80000000
3237 0x80000000 0x0 0x08000000>;
3238 bus-range = <0 255>;
3239 clock-frequency = <66000000>;
3240 interrupt-parent = <&PIC>;
3241 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
3242 interrupt-map = <
3243 /* IDSEL 0x0a */
3244 0x5000 0 0 1 &PIC 80
3245 0x5000 0 0 2 &PIC 81
3246 0x5000 0 0 3 &PIC 91
3247 0x5000 0 0 4 &PIC 93
3248
3249 /* IDSEL 0x0b */
3250 0x5800 0 0 1 &PIC 91
3251 0x5800 0 0 2 &PIC 93
3252 0x5800 0 0 3 &PIC 80
3253 0x5800 0 0 4 &PIC 81
3254
3255 /* IDSEL 0x0c */
3256 0x6000 0 0 1 &PIC 91
3257 0x6000 0 0 2 &PIC 93
3258 0x6000 0 0 3 &PIC 80
3259 0x6000 0 0 4 &PIC 81
3260
3261 /* IDSEL 0x0d */
3262 0x6800 0 0 1 &PIC 93
3263 0x6800 0 0 2 &PIC 80
3264 0x6800 0 0 3 &PIC 81
3265 0x6800 0 0 4 &PIC 91
3266 >;
3267 };
3268
3269
3270 p) Marvell Discovery CPU Error nodes
3271
3272 Represent the Discovery's CPU error handler device.
3273
3274 Required properties:
3275 - compatible : "marvell,mv64360-cpu-error"
3276 - reg : Offset and length of the register set for this device
3277 - interrupts : the interrupt number for this device
3278 - interrupt-parent : the phandle for the interrupt controller
3279 that services interrupts for this device.
3280
3281 Example Discovery CPU Error node:
3282 cpu-error@0070 {
3283 compatible = "marvell,mv64360-cpu-error";
3284 reg = <0x70 0x10 0x128 0x28>;
3285 interrupts = <3>;
3286 interrupt-parent = <&PIC>;
3287 };
3288
3289
3290 q) Marvell Discovery SRAM Controller nodes
3291
3292 Represent the Discovery's SRAM controller device.
3293
3294 Required properties:
3295 - compatible : "marvell,mv64360-sram-ctrl"
3296 - reg : Offset and length of the register set for this device
3297 - interrupts : the interrupt number for this device
3298 - interrupt-parent : the phandle for the interrupt controller
3299 that services interrupts for this device.
3300
3301 Example Discovery SRAM Controller node:
3302 sram-ctrl@0380 {
3303 compatible = "marvell,mv64360-sram-ctrl";
3304 reg = <0x380 0x80>;
3305 interrupts = <13>;
3306 interrupt-parent = <&PIC>;
3307 };
3308
3309
3310 r) Marvell Discovery PCI Error Handler nodes
3311
3312 Represent the Discovery's PCI error handler device.
3313
3314 Required properties:
3315 - compatible : "marvell,mv64360-pci-error"
3316 - reg : Offset and length of the register set for this device
3317 - interrupts : the interrupt number for this device
3318 - interrupt-parent : the phandle for the interrupt controller
3319 that services interrupts for this device.
3320
3321 Example Discovery PCI Error Handler node:
3322 pci-error@1d40 {
3323 compatible = "marvell,mv64360-pci-error";
3324 reg = <0x1d40 0x40 0xc28 0x4>;
3325 interrupts = <12>;
3326 interrupt-parent = <&PIC>;
3327 };
3328
3329
3330 s) Marvell Discovery Memory Controller nodes
3331
3332 Represent the Discovery's memory controller device.
3333
3334 Required properties:
3335 - compatible : "marvell,mv64360-mem-ctrl"
3336 - reg : Offset and length of the register set for this device
3337 - interrupts : the interrupt number for this device
3338 - interrupt-parent : the phandle for the interrupt controller
3339 that services interrupts for this device.
3340
3341 Example Discovery Memory Controller node:
3342 mem-ctrl@1400 {
3343 compatible = "marvell,mv64360-mem-ctrl";
3344 reg = <0x1400 0x60>;
3345 interrupts = <17>;
3346 interrupt-parent = <&PIC>;
3347 };
3348
3349
3350VIII - Specifying interrupt information for devices
2823=================================================== 3351===================================================
2824 3352
2825The device tree represents the busses and devices of a hardware 3353The device tree represents the busses and devices of a hardware
@@ -2905,6 +3433,54 @@ encodings listed below:
2905 2 = high to low edge sensitive type enabled 3433 2 = high to low edge sensitive type enabled
2906 3 = low to high edge sensitive type enabled 3434 3 = low to high edge sensitive type enabled
2907 3435
3436VIII - Specifying GPIO information for devices
3437==============================================
3438
34391) gpios property
3440-----------------
3441
3442Nodes that makes use of GPIOs should define them using `gpios' property,
3443format of which is: <&gpio-controller1-phandle gpio1-specifier
3444 &gpio-controller2-phandle gpio2-specifier
3445 0 /* holes are permitted, means no GPIO 3 */
3446 &gpio-controller4-phandle gpio4-specifier
3447 ...>;
3448
3449Note that gpio-specifier length is controller dependent.
3450
3451gpio-specifier may encode: bank, pin position inside the bank,
3452whether pin is open-drain and whether pin is logically inverted.
3453
3454Example of the node using GPIOs:
3455
3456 node {
3457 gpios = <&qe_pio_e 18 0>;
3458 };
3459
3460In this example gpio-specifier is "18 0" and encodes GPIO pin number,
3461and empty GPIO flags as accepted by the "qe_pio_e" gpio-controller.
3462
34632) gpio-controller nodes
3464------------------------
3465
3466Every GPIO controller node must have #gpio-cells property defined,
3467this information will be used to translate gpio-specifiers.
3468
3469Example of two SOC GPIO banks defined as gpio-controller nodes:
3470
3471 qe_pio_a: gpio-controller@1400 {
3472 #gpio-cells = <2>;
3473 compatible = "fsl,qe-pario-bank-a", "fsl,qe-pario-bank";
3474 reg = <0x1400 0x18>;
3475 gpio-controller;
3476 };
3477
3478 qe_pio_e: gpio-controller@1460 {
3479 #gpio-cells = <2>;
3480 compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
3481 reg = <0x1460 0x18>;
3482 gpio-controller;
3483 };
2908 3484
2909Appendix A - Sample SOC node for MPC8540 3485Appendix A - Sample SOC node for MPC8540
2910======================================== 3486========================================
diff --git a/Documentation/powerpc/phyp-assisted-dump.txt b/Documentation/powerpc/phyp-assisted-dump.txt
new file mode 100644
index 000000000000..c4682b982a2e
--- /dev/null
+++ b/Documentation/powerpc/phyp-assisted-dump.txt
@@ -0,0 +1,127 @@
1
2 Hypervisor-Assisted Dump
3 ------------------------
4 November 2007
5
6The goal of hypervisor-assisted dump is to enable the dump of
7a crashed system, and to do so from a fully-reset system, and
8to minimize the total elapsed time until the system is back
9in production use.
10
11As compared to kdump or other strategies, hypervisor-assisted
12dump offers several strong, practical advantages:
13
14-- Unlike kdump, the system has been reset, and loaded
15 with a fresh copy of the kernel. In particular,
16 PCI and I/O devices have been reinitialized and are
17 in a clean, consistent state.
18-- As the dump is performed, the dumped memory becomes
19 immediately available to the system for normal use.
20-- After the dump is completed, no further reboots are
21 required; the system will be fully usable, and running
22 in it's normal, production mode on it normal kernel.
23
24The above can only be accomplished by coordination with,
25and assistance from the hypervisor. The procedure is
26as follows:
27
28-- When a system crashes, the hypervisor will save
29 the low 256MB of RAM to a previously registered
30 save region. It will also save system state, system
31 registers, and hardware PTE's.
32
33-- After the low 256MB area has been saved, the
34 hypervisor will reset PCI and other hardware state.
35 It will *not* clear RAM. It will then launch the
36 bootloader, as normal.
37
38-- The freshly booted kernel will notice that there
39 is a new node (ibm,dump-kernel) in the device tree,
40 indicating that there is crash data available from
41 a previous boot. It will boot into only 256MB of RAM,
42 reserving the rest of system memory.
43
44-- Userspace tools will parse /sys/kernel/release_region
45 and read /proc/vmcore to obtain the contents of memory,
46 which holds the previous crashed kernel. The userspace
47 tools may copy this info to disk, or network, nas, san,
48 iscsi, etc. as desired.
49
50 For Example: the values in /sys/kernel/release-region
51 would look something like this (address-range pairs).
52 CPU:0x177fee000-0x10000: HPTE:0x177ffe020-0x1000: /
53 DUMP:0x177fff020-0x10000000, 0x10000000-0x16F1D370A
54
55-- As the userspace tools complete saving a portion of
56 dump, they echo an offset and size to
57 /sys/kernel/release_region to release the reserved
58 memory back to general use.
59
60 An example of this is:
61 "echo 0x40000000 0x10000000 > /sys/kernel/release_region"
62 which will release 256MB at the 1GB boundary.
63
64Please note that the hypervisor-assisted dump feature
65is only available on Power6-based systems with recent
66firmware versions.
67
68Implementation details:
69----------------------
70
71During boot, a check is made to see if firmware supports
72this feature on this particular machine. If it does, then
73we check to see if a active dump is waiting for us. If yes
74then everything but 256 MB of RAM is reserved during early
75boot. This area is released once we collect a dump from user
76land scripts that are run. If there is dump data, then
77the /sys/kernel/release_region file is created, and
78the reserved memory is held.
79
80If there is no waiting dump data, then only the highest
81256MB of the ram is reserved as a scratch area. This area
82is *not* released: this region will be kept permanently
83reserved, so that it can act as a receptacle for a copy
84of the low 256MB in the case a crash does occur. See,
85however, "open issues" below, as to whether
86such a reserved region is really needed.
87
88Currently the dump will be copied from /proc/vmcore to a
89a new file upon user intervention. The starting address
90to be read and the range for each data point in provided
91in /sys/kernel/release_region.
92
93The tools to examine the dump will be same as the ones
94used for kdump.
95
96General notes:
97--------------
98Security: please note that there are potential security issues
99with any sort of dump mechanism. In particular, plaintext
100(unencrypted) data, and possibly passwords, may be present in
101the dump data. Userspace tools must take adequate precautions to
102preserve security.
103
104Open issues/ToDo:
105------------
106 o The various code paths that tell the hypervisor that a crash
107 occurred, vs. it simply being a normal reboot, should be
108 reviewed, and possibly clarified/fixed.
109
110 o Instead of using /sys/kernel, should there be a /sys/dump
111 instead? There is a dump_subsys being created by the s390 code,
112 perhaps the pseries code should use a similar layout as well.
113
114 o Is reserving a 256MB region really required? The goal of
115 reserving a 256MB scratch area is to make sure that no
116 important crash data is clobbered when the hypervisor
117 save low mem to the scratch area. But, if one could assure
118 that nothing important is located in some 256MB area, then
119 it would not need to be reserved. Something that can be
120 improved in subsequent versions.
121
122 o Still working the kdump team to integrate this with kdump,
123 some work remains but this would not affect the current
124 patches.
125
126 o Still need to write a shell script, to copy the dump away.
127 Currently I am parsing it manually.