diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-21 18:50:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-21 18:50:49 -0400 |
commit | 9a64388d83f6ef08dfff405a9d122e3dbcb6bf38 (patch) | |
tree | a77532ce4d6d56be6c6c7f405cd901a0184250fb /Documentation | |
parent | e80ab411e589e00550e2e6e5a6a02d59cc730357 (diff) | |
parent | 14b3ca4022f050f8622ed282b734ddf445464583 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (202 commits)
[POWERPC] Fix compile breakage for 64-bit UP configs
[POWERPC] Define copy_siginfo_from_user32
[POWERPC] Add compat handler for PTRACE_GETSIGINFO
[POWERPC] i2c: Fix build breakage introduced by OF helpers
[POWERPC] Optimize fls64() on 64-bit processors
[POWERPC] irqtrace support for 64-bit powerpc
[POWERPC] Stacktrace support for lockdep
[POWERPC] Move stackframe definitions to common header
[POWERPC] Fix device-tree locking vs. interrupts
[POWERPC] Make pci_bus_to_host()'s struct pci_bus * argument const
[POWERPC] Remove unused __max_memory variable
[POWERPC] Simplify xics direct/lpar irq_host setup
[POWERPC] Use pseries_setup_i8259_cascade() in pseries_mpic_init_IRQ()
[POWERPC] Turn xics_setup_8259_cascade() into a generic pseries_setup_i8259_cascade()
[POWERPC] Move xics_setup_8259_cascade() into platforms/pseries/setup.c
[POWERPC] Use asm-generic/bitops/find.h in bitops.h
[POWERPC] 83xx: mpc8315 - fix USB UTMI Host setup
[POWERPC] 85xx: Fix the size of qe muram for MPC8568E
[POWERPC] 86xx: mpc86xx_hpcn - Temporarily accept old dts node identifier.
[POWERPC] 86xx: mark functions static, other minor cleanups
...
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/kernel-parameters.txt | 2 | ||||
-rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 622 | ||||
-rw-r--r-- | Documentation/powerpc/phyp-assisted-dump.txt | 127 |
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. | 2829 | VII - Marvell Discovery mv64[345]6x System Controller chips |
2830 | =========================================================== | ||
2831 | |||
2832 | The Marvell mv64[345]60 series of system controller chips contain | ||
2833 | many of the peripherals needed to implement a complete computer | ||
2834 | system. In this section, we define device tree nodes to describe | ||
2835 | the system controller chip itself and each of the peripherals | ||
2836 | which it contains. Compatible string values for each node are | ||
2837 | prefixed with the string "marvell,", for Marvell Technology Group Ltd. | ||
2838 | |||
2839 | 1) 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 | |||
2898 | 2) 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 | ||
2822 | VII - 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 | |||
3350 | VIII - Specifying interrupt information for devices | ||
2823 | =================================================== | 3351 | =================================================== |
2824 | 3352 | ||
2825 | The device tree represents the busses and devices of a hardware | 3353 | The 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 | ||
3436 | VIII - Specifying GPIO information for devices | ||
3437 | ============================================== | ||
3438 | |||
3439 | 1) gpios property | ||
3440 | ----------------- | ||
3441 | |||
3442 | Nodes that makes use of GPIOs should define them using `gpios' property, | ||
3443 | format 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 | |||
3449 | Note that gpio-specifier length is controller dependent. | ||
3450 | |||
3451 | gpio-specifier may encode: bank, pin position inside the bank, | ||
3452 | whether pin is open-drain and whether pin is logically inverted. | ||
3453 | |||
3454 | Example of the node using GPIOs: | ||
3455 | |||
3456 | node { | ||
3457 | gpios = <&qe_pio_e 18 0>; | ||
3458 | }; | ||
3459 | |||
3460 | In this example gpio-specifier is "18 0" and encodes GPIO pin number, | ||
3461 | and empty GPIO flags as accepted by the "qe_pio_e" gpio-controller. | ||
3462 | |||
3463 | 2) gpio-controller nodes | ||
3464 | ------------------------ | ||
3465 | |||
3466 | Every GPIO controller node must have #gpio-cells property defined, | ||
3467 | this information will be used to translate gpio-specifiers. | ||
3468 | |||
3469 | Example 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 | ||
2909 | Appendix A - Sample SOC node for MPC8540 | 3485 | Appendix 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 | |||
6 | The goal of hypervisor-assisted dump is to enable the dump of | ||
7 | a crashed system, and to do so from a fully-reset system, and | ||
8 | to minimize the total elapsed time until the system is back | ||
9 | in production use. | ||
10 | |||
11 | As compared to kdump or other strategies, hypervisor-assisted | ||
12 | dump 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 | |||
24 | The above can only be accomplished by coordination with, | ||
25 | and assistance from the hypervisor. The procedure is | ||
26 | as 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 | |||
64 | Please note that the hypervisor-assisted dump feature | ||
65 | is only available on Power6-based systems with recent | ||
66 | firmware versions. | ||
67 | |||
68 | Implementation details: | ||
69 | ---------------------- | ||
70 | |||
71 | During boot, a check is made to see if firmware supports | ||
72 | this feature on this particular machine. If it does, then | ||
73 | we check to see if a active dump is waiting for us. If yes | ||
74 | then everything but 256 MB of RAM is reserved during early | ||
75 | boot. This area is released once we collect a dump from user | ||
76 | land scripts that are run. If there is dump data, then | ||
77 | the /sys/kernel/release_region file is created, and | ||
78 | the reserved memory is held. | ||
79 | |||
80 | If there is no waiting dump data, then only the highest | ||
81 | 256MB of the ram is reserved as a scratch area. This area | ||
82 | is *not* released: this region will be kept permanently | ||
83 | reserved, so that it can act as a receptacle for a copy | ||
84 | of the low 256MB in the case a crash does occur. See, | ||
85 | however, "open issues" below, as to whether | ||
86 | such a reserved region is really needed. | ||
87 | |||
88 | Currently the dump will be copied from /proc/vmcore to a | ||
89 | a new file upon user intervention. The starting address | ||
90 | to be read and the range for each data point in provided | ||
91 | in /sys/kernel/release_region. | ||
92 | |||
93 | The tools to examine the dump will be same as the ones | ||
94 | used for kdump. | ||
95 | |||
96 | General notes: | ||
97 | -------------- | ||
98 | Security: please note that there are potential security issues | ||
99 | with any sort of dump mechanism. In particular, plaintext | ||
100 | (unencrypted) data, and possibly passwords, may be present in | ||
101 | the dump data. Userspace tools must take adequate precautions to | ||
102 | preserve security. | ||
103 | |||
104 | Open 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. | ||