diff options
Diffstat (limited to 'Documentation/powerpc/booting-without-of.txt')
-rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 666 |
1 files changed, 643 insertions, 23 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index 7b4e8a70882c..1d2a772506cf 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>; |
@@ -2592,6 +2601,17 @@ platforms are moved over to use the flattened-device-tree model. | |||
2592 | differ between different families. May be | 2601 | differ between different families. May be |
2593 | 'virtex2p', 'virtex4', or 'virtex5'. | 2602 | 'virtex2p', 'virtex4', or 'virtex5'. |
2594 | 2603 | ||
2604 | vi) Xilinx Uart 16550 | ||
2605 | |||
2606 | Xilinx UART 16550 devices are very similar to the NS16550 but with | ||
2607 | different register spacing and an offset from the base address. | ||
2608 | |||
2609 | Requred properties: | ||
2610 | - clock-frequency : Frequency of the clock input | ||
2611 | - reg-offset : A value of 3 is required | ||
2612 | - reg-shift : A value of 2 is required | ||
2613 | |||
2614 | |||
2595 | p) Freescale Synchronous Serial Interface | 2615 | p) Freescale Synchronous Serial Interface |
2596 | 2616 | ||
2597 | The SSI is a serial device that communicates with audio codecs. It can | 2617 | The SSI is a serial device that communicates with audio codecs. It can |
@@ -2816,10 +2836,562 @@ platforms are moved over to use the flattened-device-tree model. | |||
2816 | big-endian; | 2836 | big-endian; |
2817 | }; | 2837 | }; |
2818 | 2838 | ||
2839 | r) Freescale Display Interface Unit | ||
2840 | |||
2841 | The Freescale DIU is a LCD controller, with proper hardware, it can also | ||
2842 | drive DVI monitors. | ||
2843 | |||
2844 | Required properties: | ||
2845 | - compatible : should be "fsl-diu". | ||
2846 | - reg : should contain at least address and length of the DIU register | ||
2847 | set. | ||
2848 | - Interrupts : one DIU interrupt should be describe here. | ||
2849 | |||
2850 | Example (MPC8610HPCD) | ||
2851 | display@2c000 { | ||
2852 | compatible = "fsl,diu"; | ||
2853 | reg = <0x2c000 100>; | ||
2854 | interrupts = <72 2>; | ||
2855 | interrupt-parent = <&mpic>; | ||
2856 | }; | ||
2857 | |||
2858 | s) Freescale on board FPGA | ||
2859 | |||
2860 | This is the memory-mapped registers for on board FPGA. | ||
2861 | |||
2862 | Required properities: | ||
2863 | - compatible : should be "fsl,fpga-pixis". | ||
2864 | - reg : should contain the address and the lenght of the FPPGA register | ||
2865 | set. | ||
2866 | |||
2867 | Example (MPC8610HPCD) | ||
2868 | board-control@e8000000 { | ||
2869 | compatible = "fsl,fpga-pixis"; | ||
2870 | reg = <0xe8000000 32>; | ||
2871 | }; | ||
2872 | |||
2873 | VII - Marvell Discovery mv64[345]6x System Controller chips | ||
2874 | =========================================================== | ||
2875 | |||
2876 | The Marvell mv64[345]60 series of system controller chips contain | ||
2877 | many of the peripherals needed to implement a complete computer | ||
2878 | system. In this section, we define device tree nodes to describe | ||
2879 | the system controller chip itself and each of the peripherals | ||
2880 | which it contains. Compatible string values for each node are | ||
2881 | prefixed with the string "marvell,", for Marvell Technology Group Ltd. | ||
2882 | |||
2883 | 1) The /system-controller node | ||
2884 | |||
2885 | This node is used to represent the system-controller and must be | ||
2886 | present when the system uses a system contller chip. The top-level | ||
2887 | system-controller node contains information that is global to all | ||
2888 | devices within the system controller chip. The node name begins | ||
2889 | with "system-controller" followed by the unit address, which is | ||
2890 | the base address of the memory-mapped register set for the system | ||
2891 | controller chip. | ||
2892 | |||
2893 | Required properties: | ||
2894 | |||
2895 | - ranges : Describes the translation of system controller addresses | ||
2896 | for memory mapped registers. | ||
2897 | - clock-frequency: Contains the main clock frequency for the system | ||
2898 | controller chip. | ||
2899 | - reg : This property defines the address and size of the | ||
2900 | memory-mapped registers contained within the system controller | ||
2901 | chip. The address specified in the "reg" property should match | ||
2902 | the unit address of the system-controller node. | ||
2903 | - #address-cells : Address representation for system controller | ||
2904 | devices. This field represents the number of cells needed to | ||
2905 | represent the address of the memory-mapped registers of devices | ||
2906 | within the system controller chip. | ||
2907 | - #size-cells : Size representation for for the memory-mapped | ||
2908 | registers within the system controller chip. | ||
2909 | - #interrupt-cells : Defines the width of cells used to represent | ||
2910 | interrupts. | ||
2911 | |||
2912 | Optional properties: | ||
2913 | |||
2914 | - model : The specific model of the system controller chip. Such | ||
2915 | as, "mv64360", "mv64460", or "mv64560". | ||
2916 | - compatible : A string identifying the compatibility identifiers | ||
2917 | of the system controller chip. | ||
2918 | |||
2919 | The system-controller node contains child nodes for each system | ||
2920 | controller device that the platform uses. Nodes should not be created | ||
2921 | for devices which exist on the system controller chip but are not used | ||
2922 | |||
2923 | Example Marvell Discovery mv64360 system-controller node: | ||
2924 | |||
2925 | system-controller@f1000000 { /* Marvell Discovery mv64360 */ | ||
2926 | #address-cells = <1>; | ||
2927 | #size-cells = <1>; | ||
2928 | model = "mv64360"; /* Default */ | ||
2929 | compatible = "marvell,mv64360"; | ||
2930 | clock-frequency = <133333333>; | ||
2931 | reg = <0xf1000000 0x10000>; | ||
2932 | virtual-reg = <0xf1000000>; | ||
2933 | ranges = <0x88000000 0x88000000 0x1000000 /* PCI 0 I/O Space */ | ||
2934 | 0x80000000 0x80000000 0x8000000 /* PCI 0 MEM Space */ | ||
2935 | 0xa0000000 0xa0000000 0x4000000 /* User FLASH */ | ||
2936 | 0x00000000 0xf1000000 0x0010000 /* Bridge's regs */ | ||
2937 | 0xf2000000 0xf2000000 0x0040000>;/* Integrated SRAM */ | ||
2938 | |||
2939 | [ child node definitions... ] | ||
2940 | } | ||
2941 | |||
2942 | 2) Child nodes of /system-controller | ||
2943 | |||
2944 | a) Marvell Discovery MDIO bus | ||
2945 | |||
2946 | The MDIO is a bus to which the PHY devices are connected. For each | ||
2947 | device that exists on this bus, a child node should be created. See | ||
2948 | the definition of the PHY node below for an example of how to define | ||
2949 | a PHY. | ||
2950 | |||
2951 | Required properties: | ||
2952 | - #address-cells : Should be <1> | ||
2953 | - #size-cells : Should be <0> | ||
2954 | - device_type : Should be "mdio" | ||
2955 | - compatible : Should be "marvell,mv64360-mdio" | ||
2956 | |||
2957 | Example: | ||
2958 | |||
2959 | mdio { | ||
2960 | #address-cells = <1>; | ||
2961 | #size-cells = <0>; | ||
2962 | device_type = "mdio"; | ||
2963 | compatible = "marvell,mv64360-mdio"; | ||
2964 | |||
2965 | ethernet-phy@0 { | ||
2966 | ...... | ||
2967 | }; | ||
2968 | }; | ||
2969 | |||
2970 | |||
2971 | b) Marvell Discovery ethernet controller | ||
2972 | |||
2973 | The Discover ethernet controller is described with two levels | ||
2974 | of nodes. The first level describes an ethernet silicon block | ||
2975 | and the second level describes up to 3 ethernet nodes within | ||
2976 | that block. The reason for the multiple levels is that the | ||
2977 | registers for the node are interleaved within a single set | ||
2978 | of registers. The "ethernet-block" level describes the | ||
2979 | shared register set, and the "ethernet" nodes describe ethernet | ||
2980 | port-specific properties. | ||
2981 | |||
2982 | Ethernet block node | ||
2983 | |||
2984 | Required properties: | ||
2985 | - #address-cells : <1> | ||
2986 | - #size-cells : <0> | ||
2987 | - compatible : "marvell,mv64360-eth-block" | ||
2988 | - reg : Offset and length of the register set for this block | ||
2989 | |||
2990 | Example Discovery Ethernet block node: | ||
2991 | ethernet-block@2000 { | ||
2992 | #address-cells = <1>; | ||
2993 | #size-cells = <0>; | ||
2994 | compatible = "marvell,mv64360-eth-block"; | ||
2995 | reg = <0x2000 0x2000>; | ||
2996 | ethernet@0 { | ||
2997 | ....... | ||
2998 | }; | ||
2999 | }; | ||
3000 | |||
3001 | Ethernet port node | ||
3002 | |||
3003 | Required properties: | ||
3004 | - device_type : Should be "network". | ||
3005 | - compatible : Should be "marvell,mv64360-eth". | ||
3006 | - reg : Should be <0>, <1>, or <2>, according to which registers | ||
3007 | within the silicon block the device uses. | ||
3008 | - interrupts : <a> where a is the interrupt number for the port. | ||
3009 | - interrupt-parent : the phandle for the interrupt controller | ||
3010 | that services interrupts for this device. | ||
3011 | - phy : the phandle for the PHY connected to this ethernet | ||
3012 | controller. | ||
3013 | - local-mac-address : 6 bytes, MAC address | ||
3014 | |||
3015 | Example Discovery Ethernet port node: | ||
3016 | ethernet@0 { | ||
3017 | device_type = "network"; | ||
3018 | compatible = "marvell,mv64360-eth"; | ||
3019 | reg = <0>; | ||
3020 | interrupts = <32>; | ||
3021 | interrupt-parent = <&PIC>; | ||
3022 | phy = <&PHY0>; | ||
3023 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
3024 | }; | ||
3025 | |||
3026 | |||
3027 | |||
3028 | c) Marvell Discovery PHY nodes | ||
3029 | |||
3030 | Required properties: | ||
3031 | - device_type : Should be "ethernet-phy" | ||
3032 | - interrupts : <a> where a is the interrupt number for this phy. | ||
3033 | - interrupt-parent : the phandle for the interrupt controller that | ||
3034 | services interrupts for this device. | ||
3035 | - reg : The ID number for the phy, usually a small integer | ||
2819 | 3036 | ||
2820 | More devices will be defined as this spec matures. | 3037 | Example Discovery PHY node: |
3038 | ethernet-phy@1 { | ||
3039 | device_type = "ethernet-phy"; | ||
3040 | compatible = "broadcom,bcm5421"; | ||
3041 | interrupts = <76>; /* GPP 12 */ | ||
3042 | interrupt-parent = <&PIC>; | ||
3043 | reg = <1>; | ||
3044 | }; | ||
2821 | 3045 | ||
2822 | VII - Specifying interrupt information for devices | 3046 | |
3047 | d) Marvell Discovery SDMA nodes | ||
3048 | |||
3049 | Represent DMA hardware associated with the MPSC (multiprotocol | ||
3050 | serial controllers). | ||
3051 | |||
3052 | Required properties: | ||
3053 | - compatible : "marvell,mv64360-sdma" | ||
3054 | - reg : Offset and length of the register set for this device | ||
3055 | - interrupts : <a> where a is the interrupt number for the DMA | ||
3056 | device. | ||
3057 | - interrupt-parent : the phandle for the interrupt controller | ||
3058 | that services interrupts for this device. | ||
3059 | |||
3060 | Example Discovery SDMA node: | ||
3061 | sdma@4000 { | ||
3062 | compatible = "marvell,mv64360-sdma"; | ||
3063 | reg = <0x4000 0xc18>; | ||
3064 | virtual-reg = <0xf1004000>; | ||
3065 | interrupts = <36>; | ||
3066 | interrupt-parent = <&PIC>; | ||
3067 | }; | ||
3068 | |||
3069 | |||
3070 | e) Marvell Discovery BRG nodes | ||
3071 | |||
3072 | Represent baud rate generator hardware associated with the MPSC | ||
3073 | (multiprotocol serial controllers). | ||
3074 | |||
3075 | Required properties: | ||
3076 | - compatible : "marvell,mv64360-brg" | ||
3077 | - reg : Offset and length of the register set for this device | ||
3078 | - clock-src : A value from 0 to 15 which selects the clock | ||
3079 | source for the baud rate generator. This value corresponds | ||
3080 | to the CLKS value in the BRGx configuration register. See | ||
3081 | the mv64x60 User's Manual. | ||
3082 | - clock-frequence : The frequency (in Hz) of the baud rate | ||
3083 | generator's input clock. | ||
3084 | - current-speed : The current speed setting (presumably by | ||
3085 | firmware) of the baud rate generator. | ||
3086 | |||
3087 | Example Discovery BRG node: | ||
3088 | brg@b200 { | ||
3089 | compatible = "marvell,mv64360-brg"; | ||
3090 | reg = <0xb200 0x8>; | ||
3091 | clock-src = <8>; | ||
3092 | clock-frequency = <133333333>; | ||
3093 | current-speed = <9600>; | ||
3094 | }; | ||
3095 | |||
3096 | |||
3097 | f) Marvell Discovery CUNIT nodes | ||
3098 | |||
3099 | Represent the Serial Communications Unit device hardware. | ||
3100 | |||
3101 | Required properties: | ||
3102 | - reg : Offset and length of the register set for this device | ||
3103 | |||
3104 | Example Discovery CUNIT node: | ||
3105 | cunit@f200 { | ||
3106 | reg = <0xf200 0x200>; | ||
3107 | }; | ||
3108 | |||
3109 | |||
3110 | g) Marvell Discovery MPSCROUTING nodes | ||
3111 | |||
3112 | Represent the Discovery's MPSC routing hardware | ||
3113 | |||
3114 | Required properties: | ||
3115 | - reg : Offset and length of the register set for this device | ||
3116 | |||
3117 | Example Discovery CUNIT node: | ||
3118 | mpscrouting@b500 { | ||
3119 | reg = <0xb400 0xc>; | ||
3120 | }; | ||
3121 | |||
3122 | |||
3123 | h) Marvell Discovery MPSCINTR nodes | ||
3124 | |||
3125 | Represent the Discovery's MPSC DMA interrupt hardware registers | ||
3126 | (SDMA cause and mask registers). | ||
3127 | |||
3128 | Required properties: | ||
3129 | - reg : Offset and length of the register set for this device | ||
3130 | |||
3131 | Example Discovery MPSCINTR node: | ||
3132 | mpsintr@b800 { | ||
3133 | reg = <0xb800 0x100>; | ||
3134 | }; | ||
3135 | |||
3136 | |||
3137 | i) Marvell Discovery MPSC nodes | ||
3138 | |||
3139 | Represent the Discovery's MPSC (Multiprotocol Serial Controller) | ||
3140 | serial port. | ||
3141 | |||
3142 | Required properties: | ||
3143 | - device_type : "serial" | ||
3144 | - compatible : "marvell,mv64360-mpsc" | ||
3145 | - reg : Offset and length of the register set for this device | ||
3146 | - sdma : the phandle for the SDMA node used by this port | ||
3147 | - brg : the phandle for the BRG node used by this port | ||
3148 | - cunit : the phandle for the CUNIT node used by this port | ||
3149 | - mpscrouting : the phandle for the MPSCROUTING node used by this port | ||
3150 | - mpscintr : the phandle for the MPSCINTR node used by this port | ||
3151 | - cell-index : the hardware index of this cell in the MPSC core | ||
3152 | - max_idle : value needed for MPSC CHR3 (Maximum Frame Length) | ||
3153 | register | ||
3154 | - interrupts : <a> where a is the interrupt number for the MPSC. | ||
3155 | - interrupt-parent : the phandle for the interrupt controller | ||
3156 | that services interrupts for this device. | ||
3157 | |||
3158 | Example Discovery MPSCINTR node: | ||
3159 | mpsc@8000 { | ||
3160 | device_type = "serial"; | ||
3161 | compatible = "marvell,mv64360-mpsc"; | ||
3162 | reg = <0x8000 0x38>; | ||
3163 | virtual-reg = <0xf1008000>; | ||
3164 | sdma = <&SDMA0>; | ||
3165 | brg = <&BRG0>; | ||
3166 | cunit = <&CUNIT>; | ||
3167 | mpscrouting = <&MPSCROUTING>; | ||
3168 | mpscintr = <&MPSCINTR>; | ||
3169 | cell-index = <0>; | ||
3170 | max_idle = <40>; | ||
3171 | interrupts = <40>; | ||
3172 | interrupt-parent = <&PIC>; | ||
3173 | }; | ||
3174 | |||
3175 | |||
3176 | j) Marvell Discovery Watch Dog Timer nodes | ||
3177 | |||
3178 | Represent the Discovery's watchdog timer hardware | ||
3179 | |||
3180 | Required properties: | ||
3181 | - compatible : "marvell,mv64360-wdt" | ||
3182 | - reg : Offset and length of the register set for this device | ||
3183 | |||
3184 | Example Discovery Watch Dog Timer node: | ||
3185 | wdt@b410 { | ||
3186 | compatible = "marvell,mv64360-wdt"; | ||
3187 | reg = <0xb410 0x8>; | ||
3188 | }; | ||
3189 | |||
3190 | |||
3191 | k) Marvell Discovery I2C nodes | ||
3192 | |||
3193 | Represent the Discovery's I2C hardware | ||
3194 | |||
3195 | Required properties: | ||
3196 | - device_type : "i2c" | ||
3197 | - compatible : "marvell,mv64360-i2c" | ||
3198 | - reg : Offset and length of the register set for this device | ||
3199 | - interrupts : <a> where a is the interrupt number for the I2C. | ||
3200 | - interrupt-parent : the phandle for the interrupt controller | ||
3201 | that services interrupts for this device. | ||
3202 | |||
3203 | Example Discovery I2C node: | ||
3204 | compatible = "marvell,mv64360-i2c"; | ||
3205 | reg = <0xc000 0x20>; | ||
3206 | virtual-reg = <0xf100c000>; | ||
3207 | interrupts = <37>; | ||
3208 | interrupt-parent = <&PIC>; | ||
3209 | }; | ||
3210 | |||
3211 | |||
3212 | l) Marvell Discovery PIC (Programmable Interrupt Controller) nodes | ||
3213 | |||
3214 | Represent the Discovery's PIC hardware | ||
3215 | |||
3216 | Required properties: | ||
3217 | - #interrupt-cells : <1> | ||
3218 | - #address-cells : <0> | ||
3219 | - compatible : "marvell,mv64360-pic" | ||
3220 | - reg : Offset and length of the register set for this device | ||
3221 | - interrupt-controller | ||
3222 | |||
3223 | Example Discovery PIC node: | ||
3224 | pic { | ||
3225 | #interrupt-cells = <1>; | ||
3226 | #address-cells = <0>; | ||
3227 | compatible = "marvell,mv64360-pic"; | ||
3228 | reg = <0x0 0x88>; | ||
3229 | interrupt-controller; | ||
3230 | }; | ||
3231 | |||
3232 | |||
3233 | m) Marvell Discovery MPP (Multipurpose Pins) multiplexing nodes | ||
3234 | |||
3235 | Represent the Discovery's MPP hardware | ||
3236 | |||
3237 | Required properties: | ||
3238 | - compatible : "marvell,mv64360-mpp" | ||
3239 | - reg : Offset and length of the register set for this device | ||
3240 | |||
3241 | Example Discovery MPP node: | ||
3242 | mpp@f000 { | ||
3243 | compatible = "marvell,mv64360-mpp"; | ||
3244 | reg = <0xf000 0x10>; | ||
3245 | }; | ||
3246 | |||
3247 | |||
3248 | n) Marvell Discovery GPP (General Purpose Pins) nodes | ||
3249 | |||
3250 | Represent the Discovery's GPP hardware | ||
3251 | |||
3252 | Required properties: | ||
3253 | - compatible : "marvell,mv64360-gpp" | ||
3254 | - reg : Offset and length of the register set for this device | ||
3255 | |||
3256 | Example Discovery GPP node: | ||
3257 | gpp@f000 { | ||
3258 | compatible = "marvell,mv64360-gpp"; | ||
3259 | reg = <0xf100 0x20>; | ||
3260 | }; | ||
3261 | |||
3262 | |||
3263 | o) Marvell Discovery PCI host bridge node | ||
3264 | |||
3265 | Represents the Discovery's PCI host bridge device. The properties | ||
3266 | for this node conform to Rev 2.1 of the PCI Bus Binding to IEEE | ||
3267 | 1275-1994. A typical value for the compatible property is | ||
3268 | "marvell,mv64360-pci". | ||
3269 | |||
3270 | Example Discovery PCI host bridge node | ||
3271 | pci@80000000 { | ||
3272 | #address-cells = <3>; | ||
3273 | #size-cells = <2>; | ||
3274 | #interrupt-cells = <1>; | ||
3275 | device_type = "pci"; | ||
3276 | compatible = "marvell,mv64360-pci"; | ||
3277 | reg = <0xcf8 0x8>; | ||
3278 | ranges = <0x01000000 0x0 0x0 | ||
3279 | 0x88000000 0x0 0x01000000 | ||
3280 | 0x02000000 0x0 0x80000000 | ||
3281 | 0x80000000 0x0 0x08000000>; | ||
3282 | bus-range = <0 255>; | ||
3283 | clock-frequency = <66000000>; | ||
3284 | interrupt-parent = <&PIC>; | ||
3285 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; | ||
3286 | interrupt-map = < | ||
3287 | /* IDSEL 0x0a */ | ||
3288 | 0x5000 0 0 1 &PIC 80 | ||
3289 | 0x5000 0 0 2 &PIC 81 | ||
3290 | 0x5000 0 0 3 &PIC 91 | ||
3291 | 0x5000 0 0 4 &PIC 93 | ||
3292 | |||
3293 | /* IDSEL 0x0b */ | ||
3294 | 0x5800 0 0 1 &PIC 91 | ||
3295 | 0x5800 0 0 2 &PIC 93 | ||
3296 | 0x5800 0 0 3 &PIC 80 | ||
3297 | 0x5800 0 0 4 &PIC 81 | ||
3298 | |||
3299 | /* IDSEL 0x0c */ | ||
3300 | 0x6000 0 0 1 &PIC 91 | ||
3301 | 0x6000 0 0 2 &PIC 93 | ||
3302 | 0x6000 0 0 3 &PIC 80 | ||
3303 | 0x6000 0 0 4 &PIC 81 | ||
3304 | |||
3305 | /* IDSEL 0x0d */ | ||
3306 | 0x6800 0 0 1 &PIC 93 | ||
3307 | 0x6800 0 0 2 &PIC 80 | ||
3308 | 0x6800 0 0 3 &PIC 81 | ||
3309 | 0x6800 0 0 4 &PIC 91 | ||
3310 | >; | ||
3311 | }; | ||
3312 | |||
3313 | |||
3314 | p) Marvell Discovery CPU Error nodes | ||
3315 | |||
3316 | Represent the Discovery's CPU error handler device. | ||
3317 | |||
3318 | Required properties: | ||
3319 | - compatible : "marvell,mv64360-cpu-error" | ||
3320 | - reg : Offset and length of the register set for this device | ||
3321 | - interrupts : the interrupt number for this device | ||
3322 | - interrupt-parent : the phandle for the interrupt controller | ||
3323 | that services interrupts for this device. | ||
3324 | |||
3325 | Example Discovery CPU Error node: | ||
3326 | cpu-error@0070 { | ||
3327 | compatible = "marvell,mv64360-cpu-error"; | ||
3328 | reg = <0x70 0x10 0x128 0x28>; | ||
3329 | interrupts = <3>; | ||
3330 | interrupt-parent = <&PIC>; | ||
3331 | }; | ||
3332 | |||
3333 | |||
3334 | q) Marvell Discovery SRAM Controller nodes | ||
3335 | |||
3336 | Represent the Discovery's SRAM controller device. | ||
3337 | |||
3338 | Required properties: | ||
3339 | - compatible : "marvell,mv64360-sram-ctrl" | ||
3340 | - reg : Offset and length of the register set for this device | ||
3341 | - interrupts : the interrupt number for this device | ||
3342 | - interrupt-parent : the phandle for the interrupt controller | ||
3343 | that services interrupts for this device. | ||
3344 | |||
3345 | Example Discovery SRAM Controller node: | ||
3346 | sram-ctrl@0380 { | ||
3347 | compatible = "marvell,mv64360-sram-ctrl"; | ||
3348 | reg = <0x380 0x80>; | ||
3349 | interrupts = <13>; | ||
3350 | interrupt-parent = <&PIC>; | ||
3351 | }; | ||
3352 | |||
3353 | |||
3354 | r) Marvell Discovery PCI Error Handler nodes | ||
3355 | |||
3356 | Represent the Discovery's PCI error handler device. | ||
3357 | |||
3358 | Required properties: | ||
3359 | - compatible : "marvell,mv64360-pci-error" | ||
3360 | - reg : Offset and length of the register set for this device | ||
3361 | - interrupts : the interrupt number for this device | ||
3362 | - interrupt-parent : the phandle for the interrupt controller | ||
3363 | that services interrupts for this device. | ||
3364 | |||
3365 | Example Discovery PCI Error Handler node: | ||
3366 | pci-error@1d40 { | ||
3367 | compatible = "marvell,mv64360-pci-error"; | ||
3368 | reg = <0x1d40 0x40 0xc28 0x4>; | ||
3369 | interrupts = <12>; | ||
3370 | interrupt-parent = <&PIC>; | ||
3371 | }; | ||
3372 | |||
3373 | |||
3374 | s) Marvell Discovery Memory Controller nodes | ||
3375 | |||
3376 | Represent the Discovery's memory controller device. | ||
3377 | |||
3378 | Required properties: | ||
3379 | - compatible : "marvell,mv64360-mem-ctrl" | ||
3380 | - reg : Offset and length of the register set for this device | ||
3381 | - interrupts : the interrupt number for this device | ||
3382 | - interrupt-parent : the phandle for the interrupt controller | ||
3383 | that services interrupts for this device. | ||
3384 | |||
3385 | Example Discovery Memory Controller node: | ||
3386 | mem-ctrl@1400 { | ||
3387 | compatible = "marvell,mv64360-mem-ctrl"; | ||
3388 | reg = <0x1400 0x60>; | ||
3389 | interrupts = <17>; | ||
3390 | interrupt-parent = <&PIC>; | ||
3391 | }; | ||
3392 | |||
3393 | |||
3394 | VIII - Specifying interrupt information for devices | ||
2823 | =================================================== | 3395 | =================================================== |
2824 | 3396 | ||
2825 | The device tree represents the busses and devices of a hardware | 3397 | The device tree represents the busses and devices of a hardware |
@@ -2905,6 +3477,54 @@ encodings listed below: | |||
2905 | 2 = high to low edge sensitive type enabled | 3477 | 2 = high to low edge sensitive type enabled |
2906 | 3 = low to high edge sensitive type enabled | 3478 | 3 = low to high edge sensitive type enabled |
2907 | 3479 | ||
3480 | VIII - Specifying GPIO information for devices | ||
3481 | ============================================== | ||
3482 | |||
3483 | 1) gpios property | ||
3484 | ----------------- | ||
3485 | |||
3486 | Nodes that makes use of GPIOs should define them using `gpios' property, | ||
3487 | format of which is: <&gpio-controller1-phandle gpio1-specifier | ||
3488 | &gpio-controller2-phandle gpio2-specifier | ||
3489 | 0 /* holes are permitted, means no GPIO 3 */ | ||
3490 | &gpio-controller4-phandle gpio4-specifier | ||
3491 | ...>; | ||
3492 | |||
3493 | Note that gpio-specifier length is controller dependent. | ||
3494 | |||
3495 | gpio-specifier may encode: bank, pin position inside the bank, | ||
3496 | whether pin is open-drain and whether pin is logically inverted. | ||
3497 | |||
3498 | Example of the node using GPIOs: | ||
3499 | |||
3500 | node { | ||
3501 | gpios = <&qe_pio_e 18 0>; | ||
3502 | }; | ||
3503 | |||
3504 | In this example gpio-specifier is "18 0" and encodes GPIO pin number, | ||
3505 | and empty GPIO flags as accepted by the "qe_pio_e" gpio-controller. | ||
3506 | |||
3507 | 2) gpio-controller nodes | ||
3508 | ------------------------ | ||
3509 | |||
3510 | Every GPIO controller node must have #gpio-cells property defined, | ||
3511 | this information will be used to translate gpio-specifiers. | ||
3512 | |||
3513 | Example of two SOC GPIO banks defined as gpio-controller nodes: | ||
3514 | |||
3515 | qe_pio_a: gpio-controller@1400 { | ||
3516 | #gpio-cells = <2>; | ||
3517 | compatible = "fsl,qe-pario-bank-a", "fsl,qe-pario-bank"; | ||
3518 | reg = <0x1400 0x18>; | ||
3519 | gpio-controller; | ||
3520 | }; | ||
3521 | |||
3522 | qe_pio_e: gpio-controller@1460 { | ||
3523 | #gpio-cells = <2>; | ||
3524 | compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank"; | ||
3525 | reg = <0x1460 0x18>; | ||
3526 | gpio-controller; | ||
3527 | }; | ||
2908 | 3528 | ||
2909 | Appendix A - Sample SOC node for MPC8540 | 3529 | Appendix A - Sample SOC node for MPC8540 |
2910 | ======================================== | 3530 | ======================================== |