diff options
421 files changed, 14541 insertions, 4552 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. | ||
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 1189d8d6170d..4bb2e9310a56 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -49,6 +49,19 @@ config IRQ_PER_CPU | |||
49 | bool | 49 | bool |
50 | default y | 50 | default y |
51 | 51 | ||
52 | config STACKTRACE_SUPPORT | ||
53 | bool | ||
54 | default y | ||
55 | |||
56 | config TRACE_IRQFLAGS_SUPPORT | ||
57 | bool | ||
58 | depends on PPC64 | ||
59 | default y | ||
60 | |||
61 | config LOCKDEP_SUPPORT | ||
62 | bool | ||
63 | default y | ||
64 | |||
52 | config RWSEM_GENERIC_SPINLOCK | 65 | config RWSEM_GENERIC_SPINLOCK |
53 | bool | 66 | bool |
54 | 67 | ||
@@ -81,6 +94,11 @@ config GENERIC_FIND_NEXT_BIT | |||
81 | bool | 94 | bool |
82 | default y | 95 | default y |
83 | 96 | ||
97 | config GENERIC_GPIO | ||
98 | bool | ||
99 | help | ||
100 | Generic GPIO API support | ||
101 | |||
84 | config ARCH_NO_VIRT_TO_BUS | 102 | config ARCH_NO_VIRT_TO_BUS |
85 | def_bool PPC64 | 103 | def_bool PPC64 |
86 | 104 | ||
@@ -91,6 +109,7 @@ config PPC | |||
91 | select HAVE_OPROFILE | 109 | select HAVE_OPROFILE |
92 | select HAVE_KPROBES | 110 | select HAVE_KPROBES |
93 | select HAVE_KRETPROBES | 111 | select HAVE_KRETPROBES |
112 | select HAVE_LMB | ||
94 | 113 | ||
95 | config EARLY_PRINTK | 114 | config EARLY_PRINTK |
96 | bool | 115 | bool |
@@ -210,15 +229,6 @@ source kernel/Kconfig.hz | |||
210 | source kernel/Kconfig.preempt | 229 | source kernel/Kconfig.preempt |
211 | source "fs/Kconfig.binfmt" | 230 | source "fs/Kconfig.binfmt" |
212 | 231 | ||
213 | # We optimistically allocate largepages from the VM, so make the limit | ||
214 | # large enough (16MB). This badly named config option is actually | ||
215 | # max order + 1 | ||
216 | config FORCE_MAX_ZONEORDER | ||
217 | int | ||
218 | depends on PPC64 | ||
219 | default "9" if PPC_64K_PAGES | ||
220 | default "13" | ||
221 | |||
222 | config HUGETLB_PAGE_SIZE_VARIABLE | 232 | config HUGETLB_PAGE_SIZE_VARIABLE |
223 | bool | 233 | bool |
224 | depends on HUGETLB_PAGE | 234 | depends on HUGETLB_PAGE |
@@ -307,6 +317,16 @@ config CRASH_DUMP | |||
307 | 317 | ||
308 | Don't change this unless you know what you are doing. | 318 | Don't change this unless you know what you are doing. |
309 | 319 | ||
320 | config PHYP_DUMP | ||
321 | bool "Hypervisor-assisted dump (EXPERIMENTAL)" | ||
322 | depends on PPC_PSERIES && EXPERIMENTAL | ||
323 | help | ||
324 | Hypervisor-assisted dump is meant to be a kdump replacement | ||
325 | offering robustness and speed not possible without system | ||
326 | hypervisor assistence. | ||
327 | |||
328 | If unsure, say "N" | ||
329 | |||
310 | config PPCBUG_NVRAM | 330 | config PPCBUG_NVRAM |
311 | bool "Enable reading PPCBUG NVRAM during boot" if PPLUS || LOPEC | 331 | bool "Enable reading PPCBUG NVRAM during boot" if PPLUS || LOPEC |
312 | default y if PPC_PREP | 332 | default y if PPC_PREP |
@@ -381,6 +401,26 @@ config PPC_64K_PAGES | |||
381 | while on hardware with such support, it will be used to map | 401 | while on hardware with such support, it will be used to map |
382 | normal application pages. | 402 | normal application pages. |
383 | 403 | ||
404 | config FORCE_MAX_ZONEORDER | ||
405 | int "Maximum zone order" | ||
406 | default "9" if PPC_64K_PAGES | ||
407 | default "13" if PPC64 && !PPC_64K_PAGES | ||
408 | default "11" | ||
409 | help | ||
410 | The kernel memory allocator divides physically contiguous memory | ||
411 | blocks into "zones", where each zone is a power of two number of | ||
412 | pages. This option selects the largest power of two that the kernel | ||
413 | keeps in the memory allocator. If you need to allocate very large | ||
414 | blocks of physically contiguous memory, then you may need to | ||
415 | increase this value. | ||
416 | |||
417 | This config option is actually maximum order plus one. For example, | ||
418 | a value of 11 means that the largest free memory block is 2^10 pages. | ||
419 | |||
420 | The page size is not necessarily 4KB. For example, on 64-bit | ||
421 | systems, 64KB pages can be enabled via CONFIG_PPC_64K_PAGES. Keep | ||
422 | this in mind when choosing a value for this option. | ||
423 | |||
384 | config PPC_SUBPAGE_PROT | 424 | config PPC_SUBPAGE_PROT |
385 | bool "Support setting protections for 4k subpages" | 425 | bool "Support setting protections for 4k subpages" |
386 | depends on PPC_64K_PAGES | 426 | depends on PPC_64K_PAGES |
@@ -490,6 +530,14 @@ config FSL_PCI | |||
490 | bool | 530 | bool |
491 | select PPC_INDIRECT_PCI | 531 | select PPC_INDIRECT_PCI |
492 | 532 | ||
533 | config 4xx_SOC | ||
534 | bool | ||
535 | |||
536 | config FSL_LBC | ||
537 | bool | ||
538 | help | ||
539 | Freescale Localbus support | ||
540 | |||
493 | # Yes MCA RS/6000s exist but Linux-PPC does not currently support any | 541 | # Yes MCA RS/6000s exist but Linux-PPC does not currently support any |
494 | config MCA | 542 | config MCA |
495 | bool | 543 | bool |
@@ -663,22 +711,6 @@ config CONSISTENT_SIZE | |||
663 | hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL | 711 | hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL |
664 | default "0x00200000" if NOT_COHERENT_CACHE | 712 | default "0x00200000" if NOT_COHERENT_CACHE |
665 | 713 | ||
666 | config BOOT_LOAD_BOOL | ||
667 | bool "Set the boot link/load address" | ||
668 | depends on ADVANCED_OPTIONS && !PPC_MULTIPLATFORM | ||
669 | help | ||
670 | This option allows you to set the initial load address of the zImage | ||
671 | or zImage.initrd file. This can be useful if you are on a board | ||
672 | which has a small amount of memory. | ||
673 | |||
674 | Say N here unless you know what you are doing. | ||
675 | |||
676 | config BOOT_LOAD | ||
677 | hex "Link/load address for booting" if BOOT_LOAD_BOOL | ||
678 | default "0x00400000" if 40x || 8xx || 8260 | ||
679 | default "0x01000000" if 44x | ||
680 | default "0x00800000" | ||
681 | |||
682 | config PIN_TLB | 714 | config PIN_TLB |
683 | bool "Pinned Kernel TLBs (860 ONLY)" | 715 | bool "Pinned Kernel TLBs (860 ONLY)" |
684 | depends on ADVANCED_OPTIONS && 8xx | 716 | depends on ADVANCED_OPTIONS && 8xx |
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug index db7cc34c24d4..a86d8d853214 100644 --- a/arch/powerpc/Kconfig.debug +++ b/arch/powerpc/Kconfig.debug | |||
@@ -269,7 +269,7 @@ config PPC_EARLY_DEBUG_CPM_ADDR | |||
269 | hex "CPM UART early debug transmit descriptor address" | 269 | hex "CPM UART early debug transmit descriptor address" |
270 | depends on PPC_EARLY_DEBUG_CPM | 270 | depends on PPC_EARLY_DEBUG_CPM |
271 | default "0xfa202008" if PPC_EP88XC | 271 | default "0xfa202008" if PPC_EP88XC |
272 | default "0xf0000008" if CPM2 | 272 | default "0xf0001ff8" if CPM2 |
273 | default "0xff002008" if CPM1 | 273 | default "0xff002008" if CPM1 |
274 | help | 274 | help |
275 | This specifies the address of the transmit descriptor | 275 | This specifies the address of the transmit descriptor |
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index ab5cfe8ef988..e2ec4a91ccef 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
@@ -71,13 +71,11 @@ endif | |||
71 | 71 | ||
72 | LDFLAGS_vmlinux := -Bstatic | 72 | LDFLAGS_vmlinux := -Bstatic |
73 | 73 | ||
74 | CPPFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) | ||
75 | AFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) | ||
76 | CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=none -mcall-aixdesc | 74 | CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=none -mcall-aixdesc |
77 | CFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) -ffixed-r2 -mmultiple | 75 | CFLAGS-$(CONFIG_PPC32) := -ffixed-r2 -mmultiple |
78 | KBUILD_CPPFLAGS += $(CPPFLAGS-y) | 76 | KBUILD_CPPFLAGS += -Iarch/$(ARCH) |
79 | KBUILD_AFLAGS += $(AFLAGS-y) | 77 | KBUILD_AFLAGS += -Iarch/$(ARCH) |
80 | KBUILD_CFLAGS += -msoft-float -pipe $(CFLAGS-y) | 78 | KBUILD_CFLAGS += -msoft-float -pipe -Iarch/$(ARCH) $(CFLAGS-y) |
81 | CPP = $(CC) -E $(KBUILD_CFLAGS) | 79 | CPP = $(CC) -E $(KBUILD_CFLAGS) |
82 | 80 | ||
83 | CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__ | 81 | CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__ |
@@ -164,7 +162,7 @@ boot := arch/$(ARCH)/boot | |||
164 | $(BOOT_TARGETS): vmlinux | 162 | $(BOOT_TARGETS): vmlinux |
165 | $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@) | 163 | $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@) |
166 | 164 | ||
167 | bootwrapper_install: | 165 | bootwrapper_install %.dtb: |
168 | $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@) | 166 | $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@) |
169 | 167 | ||
170 | define archhelp | 168 | define archhelp |
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 1aded8f759d0..5ba50c673390 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -40,6 +40,7 @@ $(obj)/ebony.o: BOOTCFLAGS += -mcpu=405 | |||
40 | $(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405 | 40 | $(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405 |
41 | $(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405 | 41 | $(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405 |
42 | $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 | 42 | $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 |
43 | $(obj)/virtex405-head.o: BOOTCFLAGS += -mcpu=405 | ||
43 | 44 | ||
44 | 45 | ||
45 | zlib := inffast.c inflate.c inftrees.c | 46 | zlib := inffast.c inflate.c inftrees.c |
@@ -64,7 +65,8 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c | |||
64 | cuboot-bamboo.c cuboot-mpc7448hpc2.c cuboot-taishan.c \ | 65 | cuboot-bamboo.c cuboot-mpc7448hpc2.c cuboot-taishan.c \ |
65 | fixed-head.S ep88xc.c ep405.c \ | 66 | fixed-head.S ep88xc.c ep405.c \ |
66 | cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \ | 67 | cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \ |
67 | cuboot-warp.c cuboot-85xx-cpm2.c | 68 | cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ |
69 | virtex405-head.S | ||
68 | src-boot := $(src-wlib) $(src-plat) empty.c | 70 | src-boot := $(src-wlib) $(src-plat) empty.c |
69 | 71 | ||
70 | src-boot := $(addprefix $(obj)/, $(src-boot)) | 72 | src-boot := $(addprefix $(obj)/, $(src-boot)) |
@@ -192,7 +194,7 @@ image-$(CONFIG_PPC_CHRP) += zImage.chrp | |||
192 | image-$(CONFIG_PPC_EFIKA) += zImage.chrp | 194 | image-$(CONFIG_PPC_EFIKA) += zImage.chrp |
193 | image-$(CONFIG_PPC_PMAC) += zImage.pmac | 195 | image-$(CONFIG_PPC_PMAC) += zImage.pmac |
194 | image-$(CONFIG_PPC_HOLLY) += zImage.holly | 196 | image-$(CONFIG_PPC_HOLLY) += zImage.holly |
195 | image-$(CONFIG_PPC_PRPMC2800) += zImage.prpmc2800 | 197 | image-$(CONFIG_PPC_PRPMC2800) += dtbImage.prpmc2800 |
196 | image-$(CONFIG_PPC_ISERIES) += zImage.iseries | 198 | image-$(CONFIG_PPC_ISERIES) += zImage.iseries |
197 | image-$(CONFIG_DEFAULT_UIMAGE) += uImage | 199 | image-$(CONFIG_DEFAULT_UIMAGE) += uImage |
198 | 200 | ||
@@ -216,6 +218,7 @@ image-$(CONFIG_RAINIER) += cuImage.rainier | |||
216 | image-$(CONFIG_TAISHAN) += cuImage.taishan | 218 | image-$(CONFIG_TAISHAN) += cuImage.taishan |
217 | image-$(CONFIG_KATMAI) += cuImage.katmai | 219 | image-$(CONFIG_KATMAI) += cuImage.katmai |
218 | image-$(CONFIG_WARP) += cuImage.warp | 220 | image-$(CONFIG_WARP) += cuImage.warp |
221 | image-$(CONFIG_YOSEMITE) += cuImage.yosemite | ||
219 | 222 | ||
220 | # Board ports in arch/powerpc/platform/8xx/Kconfig | 223 | # Board ports in arch/powerpc/platform/8xx/Kconfig |
221 | image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads | 224 | image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads |
@@ -255,6 +258,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm8555 | |||
255 | image-$(CONFIG_TQM8560) += cuImage.tqm8560 | 258 | image-$(CONFIG_TQM8560) += cuImage.tqm8560 |
256 | image-$(CONFIG_SBC8548) += cuImage.sbc8548 | 259 | image-$(CONFIG_SBC8548) += cuImage.sbc8548 |
257 | image-$(CONFIG_SBC8560) += cuImage.sbc8560 | 260 | image-$(CONFIG_SBC8560) += cuImage.sbc8560 |
261 | image-$(CONFIG_KSI8560) += cuImage.ksi8560 | ||
258 | 262 | ||
259 | # Board ports in arch/powerpc/platform/embedded6xx/Kconfig | 263 | # Board ports in arch/powerpc/platform/embedded6xx/Kconfig |
260 | image-$(CONFIG_STORCENTER) += cuImage.storcenter | 264 | image-$(CONFIG_STORCENTER) += cuImage.storcenter |
@@ -285,11 +289,11 @@ $(obj)/zImage.%: vmlinux $(wrapperbits) | |||
285 | $(call if_changed,wrap,$*) | 289 | $(call if_changed,wrap,$*) |
286 | 290 | ||
287 | # dtbImage% - a dtbImage is a zImage with an embedded device tree blob | 291 | # dtbImage% - a dtbImage is a zImage with an embedded device tree blob |
288 | $(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts | 292 | $(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(obj)/%.dtb |
289 | $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz) | 293 | $(call if_changed,wrap,$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz) |
290 | 294 | ||
291 | $(obj)/dtbImage.%: vmlinux $(wrapperbits) $(dtstree)/%.dts | 295 | $(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb |
292 | $(call if_changed,wrap,$*,$(dtstree)/$*.dts) | 296 | $(call if_changed,wrap,$*,,$(obj)/$*.dtb) |
293 | 297 | ||
294 | # This cannot be in the root of $(src) as the zImage rule always adds a $(obj) | 298 | # This cannot be in the root of $(src) as the zImage rule always adds a $(obj) |
295 | # prefix | 299 | # prefix |
@@ -302,14 +306,24 @@ $(obj)/zImage.iseries: vmlinux | |||
302 | $(obj)/uImage: vmlinux $(wrapperbits) | 306 | $(obj)/uImage: vmlinux $(wrapperbits) |
303 | $(call if_changed,wrap,uboot) | 307 | $(call if_changed,wrap,uboot) |
304 | 308 | ||
305 | $(obj)/cuImage.%: vmlinux $(dtstree)/%.dts $(wrapperbits) | 309 | $(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) |
306 | $(call if_changed,wrap,cuboot-$*,$(dtstree)/$*.dts) | 310 | $(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb) |
307 | 311 | ||
308 | $(obj)/treeImage.initrd.%: vmlinux $(dtstree)/%.dts $(wrapperbits) | 312 | $(obj)/simpleImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) |
309 | $(call if_changed,wrap,treeboot-$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz) | 313 | $(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz) |
310 | 314 | ||
311 | $(obj)/treeImage.%: vmlinux $(dtstree)/%.dts $(wrapperbits) | 315 | $(obj)/simpleImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) |
312 | $(call if_changed,wrap,treeboot-$*,$(dtstree)/$*.dts) | 316 | $(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb) |
317 | |||
318 | $(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) | ||
319 | $(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz) | ||
320 | |||
321 | $(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) | ||
322 | $(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb) | ||
323 | |||
324 | # Rule to build device tree blobs | ||
325 | $(obj)/%.dtb: $(dtstree)/%.dts $(obj)/dtc | ||
326 | $(obj)/dtc -O dtb -o $(obj)/$*.dtb -b 0 $(DTS_FLAGS) $(dtstree)/$*.dts | ||
313 | 327 | ||
314 | # If there isn't a platform selected then just strip the vmlinux. | 328 | # If there isn't a platform selected then just strip the vmlinux. |
315 | ifeq (,$(image-y)) | 329 | ifeq (,$(image-y)) |
@@ -326,7 +340,7 @@ install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y)) | |||
326 | 340 | ||
327 | # anything not in $(targets) | 341 | # anything not in $(targets) |
328 | clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* treeImage.* \ | 342 | clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* treeImage.* \ |
329 | otheros.bld | 343 | otheros.bld *.dtb |
330 | 344 | ||
331 | # clean up files cached by wrapper | 345 | # clean up files cached by wrapper |
332 | clean-kernel := vmlinux.strip vmlinux.bin | 346 | clean-kernel := vmlinux.strip vmlinux.bin |
diff --git a/arch/powerpc/boot/bamboo.c b/arch/powerpc/boot/bamboo.c index 54b33f1500e2..b82cacbc60db 100644 --- a/arch/powerpc/boot/bamboo.c +++ b/arch/powerpc/boot/bamboo.c | |||
@@ -33,7 +33,8 @@ static void bamboo_fixups(void) | |||
33 | ibm440ep_fixup_clocks(sysclk, 11059200, 25000000); | 33 | ibm440ep_fixup_clocks(sysclk, 11059200, 25000000); |
34 | ibm4xx_sdram_fixup_memsize(); | 34 | ibm4xx_sdram_fixup_memsize(); |
35 | ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00); | 35 | ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00); |
36 | dt_fixup_mac_addresses(bamboo_mac0, bamboo_mac1); | 36 | dt_fixup_mac_address_by_alias("ethernet0", bamboo_mac0); |
37 | dt_fixup_mac_address_by_alias("ethernet1", bamboo_mac1); | ||
37 | } | 38 | } |
38 | 39 | ||
39 | void bamboo_init(void *mac0, void *mac1) | 40 | void bamboo_init(void *mac0, void *mac1) |
diff --git a/arch/powerpc/boot/cpm-serial.c b/arch/powerpc/boot/cpm-serial.c index 28296facb2ae..19dc15abe43d 100644 --- a/arch/powerpc/boot/cpm-serial.c +++ b/arch/powerpc/boot/cpm-serial.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include "types.h" | 11 | #include "types.h" |
12 | #include "io.h" | 12 | #include "io.h" |
13 | #include "ops.h" | 13 | #include "ops.h" |
14 | #include "page.h" | ||
14 | 15 | ||
15 | struct cpm_scc { | 16 | struct cpm_scc { |
16 | u32 gsmrl; | 17 | u32 gsmrl; |
@@ -42,6 +43,22 @@ struct cpm_param { | |||
42 | u16 tbase; | 43 | u16 tbase; |
43 | u8 rfcr; | 44 | u8 rfcr; |
44 | u8 tfcr; | 45 | u8 tfcr; |
46 | u16 mrblr; | ||
47 | u32 rstate; | ||
48 | u8 res1[4]; | ||
49 | u16 rbptr; | ||
50 | u8 res2[6]; | ||
51 | u32 tstate; | ||
52 | u8 res3[4]; | ||
53 | u16 tbptr; | ||
54 | u8 res4[6]; | ||
55 | u16 maxidl; | ||
56 | u16 idlc; | ||
57 | u16 brkln; | ||
58 | u16 brkec; | ||
59 | u16 brkcr; | ||
60 | u16 rmask; | ||
61 | u8 res5[4]; | ||
45 | }; | 62 | }; |
46 | 63 | ||
47 | struct cpm_bd { | 64 | struct cpm_bd { |
@@ -54,10 +71,10 @@ static void *cpcr; | |||
54 | static struct cpm_param *param; | 71 | static struct cpm_param *param; |
55 | static struct cpm_smc *smc; | 72 | static struct cpm_smc *smc; |
56 | static struct cpm_scc *scc; | 73 | static struct cpm_scc *scc; |
57 | struct cpm_bd *tbdf, *rbdf; | 74 | static struct cpm_bd *tbdf, *rbdf; |
58 | static u32 cpm_cmd; | 75 | static u32 cpm_cmd; |
59 | static u8 *muram_start; | 76 | static void *cbd_addr; |
60 | static u32 muram_offset; | 77 | static u32 cbd_offset; |
61 | 78 | ||
62 | static void (*do_cmd)(int op); | 79 | static void (*do_cmd)(int op); |
63 | static void (*enable_port)(void); | 80 | static void (*enable_port)(void); |
@@ -119,20 +136,25 @@ static int cpm_serial_open(void) | |||
119 | 136 | ||
120 | out_8(¶m->rfcr, 0x10); | 137 | out_8(¶m->rfcr, 0x10); |
121 | out_8(¶m->tfcr, 0x10); | 138 | out_8(¶m->tfcr, 0x10); |
122 | 139 | out_be16(¶m->mrblr, 1); | |
123 | rbdf = (struct cpm_bd *)muram_start; | 140 | out_be16(¶m->maxidl, 0); |
124 | rbdf->addr = (u8 *)(rbdf + 2); | 141 | out_be16(¶m->brkec, 0); |
142 | out_be16(¶m->brkln, 0); | ||
143 | out_be16(¶m->brkcr, 0); | ||
144 | |||
145 | rbdf = cbd_addr; | ||
146 | rbdf->addr = (u8 *)rbdf - 1; | ||
125 | rbdf->sc = 0xa000; | 147 | rbdf->sc = 0xa000; |
126 | rbdf->len = 1; | 148 | rbdf->len = 1; |
127 | 149 | ||
128 | tbdf = rbdf + 1; | 150 | tbdf = rbdf + 1; |
129 | tbdf->addr = (u8 *)(rbdf + 2) + 1; | 151 | tbdf->addr = (u8 *)rbdf - 2; |
130 | tbdf->sc = 0x2000; | 152 | tbdf->sc = 0x2000; |
131 | tbdf->len = 1; | 153 | tbdf->len = 1; |
132 | 154 | ||
133 | sync(); | 155 | sync(); |
134 | out_be16(¶m->rbase, muram_offset); | 156 | out_be16(¶m->rbase, cbd_offset); |
135 | out_be16(¶m->tbase, muram_offset + sizeof(struct cpm_bd)); | 157 | out_be16(¶m->tbase, cbd_offset + sizeof(struct cpm_bd)); |
136 | 158 | ||
137 | do_cmd(CPM_CMD_INIT_RX_TX); | 159 | do_cmd(CPM_CMD_INIT_RX_TX); |
138 | 160 | ||
@@ -175,10 +197,12 @@ static unsigned char cpm_serial_getc(void) | |||
175 | 197 | ||
176 | int cpm_console_init(void *devp, struct serial_console_data *scdp) | 198 | int cpm_console_init(void *devp, struct serial_console_data *scdp) |
177 | { | 199 | { |
178 | void *reg_virt[2]; | 200 | void *vreg[2]; |
179 | int is_smc = 0, is_cpm2 = 0, n; | 201 | u32 reg[2]; |
180 | unsigned long reg_phys; | 202 | int is_smc = 0, is_cpm2 = 0; |
181 | void *parent, *muram; | 203 | void *parent, *muram; |
204 | void *muram_addr; | ||
205 | unsigned long muram_offset, muram_size; | ||
182 | 206 | ||
183 | if (dt_is_compatible(devp, "fsl,cpm1-smc-uart")) { | 207 | if (dt_is_compatible(devp, "fsl,cpm1-smc-uart")) { |
184 | is_smc = 1; | 208 | is_smc = 1; |
@@ -202,63 +226,64 @@ int cpm_console_init(void *devp, struct serial_console_data *scdp) | |||
202 | else | 226 | else |
203 | do_cmd = cpm1_cmd; | 227 | do_cmd = cpm1_cmd; |
204 | 228 | ||
205 | n = getprop(devp, "fsl,cpm-command", &cpm_cmd, 4); | 229 | if (getprop(devp, "fsl,cpm-command", &cpm_cmd, 4) < 4) |
206 | if (n < 4) | ||
207 | return -1; | 230 | return -1; |
208 | 231 | ||
209 | n = getprop(devp, "virtual-reg", reg_virt, sizeof(reg_virt)); | 232 | if (dt_get_virtual_reg(devp, vreg, 2) < 2) |
210 | if (n < (int)sizeof(reg_virt)) { | 233 | return -1; |
211 | for (n = 0; n < 2; n++) { | ||
212 | if (!dt_xlate_reg(devp, n, ®_phys, NULL)) | ||
213 | return -1; | ||
214 | |||
215 | reg_virt[n] = (void *)reg_phys; | ||
216 | } | ||
217 | } | ||
218 | 234 | ||
219 | if (is_smc) | 235 | if (is_smc) |
220 | smc = reg_virt[0]; | 236 | smc = vreg[0]; |
221 | else | 237 | else |
222 | scc = reg_virt[0]; | 238 | scc = vreg[0]; |
223 | 239 | ||
224 | param = reg_virt[1]; | 240 | param = vreg[1]; |
225 | 241 | ||
226 | parent = get_parent(devp); | 242 | parent = get_parent(devp); |
227 | if (!parent) | 243 | if (!parent) |
228 | return -1; | 244 | return -1; |
229 | 245 | ||
230 | n = getprop(parent, "virtual-reg", reg_virt, sizeof(reg_virt)); | 246 | if (dt_get_virtual_reg(parent, &cpcr, 1) < 1) |
231 | if (n < (int)sizeof(reg_virt)) { | 247 | return -1; |
232 | if (!dt_xlate_reg(parent, 0, ®_phys, NULL)) | ||
233 | return -1; | ||
234 | |||
235 | reg_virt[0] = (void *)reg_phys; | ||
236 | } | ||
237 | |||
238 | cpcr = reg_virt[0]; | ||
239 | 248 | ||
240 | muram = finddevice("/soc/cpm/muram/data"); | 249 | muram = finddevice("/soc/cpm/muram/data"); |
241 | if (!muram) | 250 | if (!muram) |
242 | return -1; | 251 | return -1; |
243 | 252 | ||
244 | /* For bootwrapper-compatible device trees, we assume that the first | 253 | /* For bootwrapper-compatible device trees, we assume that the first |
245 | * entry has at least 18 bytes, and that #address-cells/#data-cells | 254 | * entry has at least 128 bytes, and that #address-cells/#data-cells |
246 | * is one for both parent and child. | 255 | * is one for both parent and child. |
247 | */ | 256 | */ |
248 | 257 | ||
249 | n = getprop(muram, "virtual-reg", reg_virt, sizeof(reg_virt)); | 258 | if (dt_get_virtual_reg(muram, &muram_addr, 1) < 1) |
250 | if (n < (int)sizeof(reg_virt)) { | 259 | return -1; |
251 | if (!dt_xlate_reg(muram, 0, ®_phys, NULL)) | ||
252 | return -1; | ||
253 | 260 | ||
254 | reg_virt[0] = (void *)reg_phys; | 261 | if (getprop(muram, "reg", reg, 8) < 8) |
255 | } | 262 | return -1; |
256 | 263 | ||
257 | muram_start = reg_virt[0]; | 264 | muram_offset = reg[0]; |
265 | muram_size = reg[1]; | ||
258 | 266 | ||
259 | n = getprop(muram, "reg", &muram_offset, 4); | 267 | /* Store the buffer descriptors at the end of the first muram chunk. |
260 | if (n < 4) | 268 | * For SMC ports on CPM2-based platforms, relocate the parameter RAM |
261 | return -1; | 269 | * just before the buffer descriptors. |
270 | */ | ||
271 | |||
272 | cbd_offset = muram_offset + muram_size - 2 * sizeof(struct cpm_bd); | ||
273 | |||
274 | if (is_cpm2 && is_smc) { | ||
275 | u16 *smc_base = (u16 *)param; | ||
276 | u16 pram_offset; | ||
277 | |||
278 | pram_offset = cbd_offset - 64; | ||
279 | pram_offset = _ALIGN_DOWN(pram_offset, 64); | ||
280 | |||
281 | disable_port(); | ||
282 | out_be16(smc_base, pram_offset); | ||
283 | param = muram_addr - muram_offset + pram_offset; | ||
284 | } | ||
285 | |||
286 | cbd_addr = muram_addr - muram_offset + cbd_offset; | ||
262 | 287 | ||
263 | scdp->open = cpm_serial_open; | 288 | scdp->open = cpm_serial_open; |
264 | scdp->putc = cpm_serial_putc; | 289 | scdp->putc = cpm_serial_putc; |
diff --git a/arch/powerpc/boot/cuboot-pq2.c b/arch/powerpc/boot/cuboot-pq2.c index f56ac6cae9f3..9c7d13428293 100644 --- a/arch/powerpc/boot/cuboot-pq2.c +++ b/arch/powerpc/boot/cuboot-pq2.c | |||
@@ -128,7 +128,7 @@ static void fixup_pci(void) | |||
128 | u8 *soc_regs; | 128 | u8 *soc_regs; |
129 | int i, len; | 129 | int i, len; |
130 | void *node, *parent_node; | 130 | void *node, *parent_node; |
131 | u32 naddr, nsize, mem_log2; | 131 | u32 naddr, nsize, mem_pow2, mem_mask; |
132 | 132 | ||
133 | node = finddevice("/pci"); | 133 | node = finddevice("/pci"); |
134 | if (!node || !dt_is_compatible(node, "fsl,pq2-pci")) | 134 | if (!node || !dt_is_compatible(node, "fsl,pq2-pci")) |
@@ -141,7 +141,7 @@ static void fixup_pci(void) | |||
141 | 141 | ||
142 | soc_regs = (u8 *)fsl_get_immr(); | 142 | soc_regs = (u8 *)fsl_get_immr(); |
143 | if (!soc_regs) | 143 | if (!soc_regs) |
144 | goto err; | 144 | goto unhandled; |
145 | 145 | ||
146 | dt_get_reg_format(node, &naddr, &nsize); | 146 | dt_get_reg_format(node, &naddr, &nsize); |
147 | if (naddr != 3 || nsize != 2) | 147 | if (naddr != 3 || nsize != 2) |
@@ -153,7 +153,7 @@ static void fixup_pci(void) | |||
153 | 153 | ||
154 | dt_get_reg_format(parent_node, &naddr, &nsize); | 154 | dt_get_reg_format(parent_node, &naddr, &nsize); |
155 | if (naddr != 1 || nsize != 1) | 155 | if (naddr != 1 || nsize != 1) |
156 | goto err; | 156 | goto unhandled; |
157 | 157 | ||
158 | len = getprop(node, "ranges", pci_ranges_buf, | 158 | len = getprop(node, "ranges", pci_ranges_buf, |
159 | sizeof(pci_ranges_buf)); | 159 | sizeof(pci_ranges_buf)); |
@@ -170,14 +170,20 @@ static void fixup_pci(void) | |||
170 | } | 170 | } |
171 | 171 | ||
172 | if (!mem || !mmio || !io) | 172 | if (!mem || !mmio || !io) |
173 | goto err; | 173 | goto unhandled; |
174 | if (mem->size[1] != mmio->size[1]) | ||
175 | goto unhandled; | ||
176 | if (mem->size[1] & (mem->size[1] - 1)) | ||
177 | goto unhandled; | ||
178 | if (io->size[1] & (io->size[1] - 1)) | ||
179 | goto unhandled; | ||
174 | 180 | ||
175 | if (mem->phys_addr + mem->size[1] == mmio->phys_addr) | 181 | if (mem->phys_addr + mem->size[1] == mmio->phys_addr) |
176 | mem_base = mem; | 182 | mem_base = mem; |
177 | else if (mmio->phys_addr + mmio->size[1] == mem->phys_addr) | 183 | else if (mmio->phys_addr + mmio->size[1] == mem->phys_addr) |
178 | mem_base = mmio; | 184 | mem_base = mmio; |
179 | else | 185 | else |
180 | goto err; | 186 | goto unhandled; |
181 | 187 | ||
182 | out_be32(&pci_regs[1][0], mem_base->phys_addr | 1); | 188 | out_be32(&pci_regs[1][0], mem_base->phys_addr | 1); |
183 | out_be32(&pci_regs[2][0], ~(mem->size[1] + mmio->size[1] - 1)); | 189 | out_be32(&pci_regs[2][0], ~(mem->size[1] + mmio->size[1] - 1)); |
@@ -201,8 +207,9 @@ static void fixup_pci(void) | |||
201 | out_le32(&pci_regs[0][58], 0); | 207 | out_le32(&pci_regs[0][58], 0); |
202 | out_le32(&pci_regs[0][60], 0); | 208 | out_le32(&pci_regs[0][60], 0); |
203 | 209 | ||
204 | mem_log2 = 1 << (__ilog2_u32(bd.bi_memsize - 1) + 1); | 210 | mem_pow2 = 1 << (__ilog2_u32(bd.bi_memsize - 1) + 1); |
205 | out_le32(&pci_regs[0][62], 0xa0000000 | ~((1 << (mem_log2 - 12)) - 1)); | 211 | mem_mask = ~(mem_pow2 - 1) >> 12; |
212 | out_le32(&pci_regs[0][62], 0xa0000000 | mem_mask); | ||
206 | 213 | ||
207 | /* If PCI is disabled, drive RST high to enable. */ | 214 | /* If PCI is disabled, drive RST high to enable. */ |
208 | if (!(in_le32(&pci_regs[0][32]) & 1)) { | 215 | if (!(in_le32(&pci_regs[0][32]) & 1)) { |
@@ -228,7 +235,11 @@ static void fixup_pci(void) | |||
228 | return; | 235 | return; |
229 | 236 | ||
230 | err: | 237 | err: |
231 | printf("Bad PCI node\r\n"); | 238 | printf("Bad PCI node -- using existing firmware setup.\r\n"); |
239 | return; | ||
240 | |||
241 | unhandled: | ||
242 | printf("Unsupported PCI node -- using existing firmware setup.\r\n"); | ||
232 | } | 243 | } |
233 | 244 | ||
234 | static void pq2_platform_fixups(void) | 245 | static void pq2_platform_fixups(void) |
diff --git a/arch/powerpc/boot/cuboot-rainier.c b/arch/powerpc/boot/cuboot-rainier.c index cf452b66dce8..0a3fddee54df 100644 --- a/arch/powerpc/boot/cuboot-rainier.c +++ b/arch/powerpc/boot/cuboot-rainier.c | |||
@@ -42,7 +42,8 @@ static void rainier_fixups(void) | |||
42 | ibm440ep_fixup_clocks(sysclk, 11059200, 50000000); | 42 | ibm440ep_fixup_clocks(sysclk, 11059200, 50000000); |
43 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); | 43 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); |
44 | ibm4xx_denali_fixup_memsize(); | 44 | ibm4xx_denali_fixup_memsize(); |
45 | dt_fixup_mac_addresses(&bd.bi_enetaddr, &bd.bi_enet1addr); | 45 | dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); |
46 | dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); | ||
46 | } | 47 | } |
47 | 48 | ||
48 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | 49 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, |
diff --git a/arch/powerpc/boot/cuboot-sequoia.c b/arch/powerpc/boot/cuboot-sequoia.c index f555575a44de..caf8f2e842ea 100644 --- a/arch/powerpc/boot/cuboot-sequoia.c +++ b/arch/powerpc/boot/cuboot-sequoia.c | |||
@@ -42,7 +42,8 @@ static void sequoia_fixups(void) | |||
42 | ibm440ep_fixup_clocks(sysclk, 11059200, 50000000); | 42 | ibm440ep_fixup_clocks(sysclk, 11059200, 50000000); |
43 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); | 43 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); |
44 | ibm4xx_denali_fixup_memsize(); | 44 | ibm4xx_denali_fixup_memsize(); |
45 | dt_fixup_mac_addresses(&bd.bi_enetaddr, &bd.bi_enet1addr); | 45 | dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); |
46 | dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); | ||
46 | } | 47 | } |
47 | 48 | ||
48 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | 49 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, |
diff --git a/arch/powerpc/boot/cuboot-taishan.c b/arch/powerpc/boot/cuboot-taishan.c index b55b80467eed..9bc906a754dd 100644 --- a/arch/powerpc/boot/cuboot-taishan.c +++ b/arch/powerpc/boot/cuboot-taishan.c | |||
@@ -40,7 +40,8 @@ static void taishan_fixups(void) | |||
40 | 40 | ||
41 | ibm4xx_sdram_fixup_memsize(); | 41 | ibm4xx_sdram_fixup_memsize(); |
42 | 42 | ||
43 | dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr); | 43 | dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); |
44 | dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); | ||
44 | 45 | ||
45 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); | 46 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); |
46 | } | 47 | } |
diff --git a/arch/powerpc/boot/cuboot-warp.c b/arch/powerpc/boot/cuboot-warp.c index 3db93e85e9ea..eb108a877492 100644 --- a/arch/powerpc/boot/cuboot-warp.c +++ b/arch/powerpc/boot/cuboot-warp.c | |||
@@ -24,7 +24,7 @@ static void warp_fixups(void) | |||
24 | ibm440ep_fixup_clocks(sysclk, 11059200, 50000000); | 24 | ibm440ep_fixup_clocks(sysclk, 11059200, 50000000); |
25 | ibm4xx_sdram_fixup_memsize(); | 25 | ibm4xx_sdram_fixup_memsize(); |
26 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); | 26 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); |
27 | dt_fixup_mac_addresses(&bd.bi_enetaddr); | 27 | dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); |
28 | } | 28 | } |
29 | 29 | ||
30 | 30 | ||
diff --git a/arch/powerpc/boot/cuboot-yosemite.c b/arch/powerpc/boot/cuboot-yosemite.c new file mode 100644 index 000000000000..cc6e338c5d0d --- /dev/null +++ b/arch/powerpc/boot/cuboot-yosemite.c | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for Yosemite | ||
3 | * | ||
4 | * Author: Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
5 | * | ||
6 | * Copyright 2008 IBM Corporation | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License version 2 as published | ||
10 | * by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include "ops.h" | ||
14 | #include "stdio.h" | ||
15 | #include "4xx.h" | ||
16 | #include "44x.h" | ||
17 | #include "cuboot.h" | ||
18 | |||
19 | #define TARGET_4xx | ||
20 | #define TARGET_44x | ||
21 | #include "ppcboot.h" | ||
22 | |||
23 | static bd_t bd; | ||
24 | |||
25 | static void yosemite_fixups(void) | ||
26 | { | ||
27 | unsigned long sysclk = 66666666; | ||
28 | |||
29 | ibm440ep_fixup_clocks(sysclk, 11059200, 50000000); | ||
30 | ibm4xx_sdram_fixup_memsize(); | ||
31 | ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00); | ||
32 | dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); | ||
33 | dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); | ||
34 | } | ||
35 | |||
36 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
37 | unsigned long r6, unsigned long r7) | ||
38 | { | ||
39 | CUBOOT_INIT(); | ||
40 | platform_ops.fixups = yosemite_fixups; | ||
41 | platform_ops.exit = ibm44x_dbcr_reset; | ||
42 | fdt_init(_dtb_start); | ||
43 | serial_console_init(); | ||
44 | } | ||
diff --git a/arch/powerpc/boot/devtree.c b/arch/powerpc/boot/devtree.c index 60f561e307a9..5d12336dc360 100644 --- a/arch/powerpc/boot/devtree.c +++ b/arch/powerpc/boot/devtree.c | |||
@@ -350,3 +350,23 @@ int dt_is_compatible(void *node, const char *compat) | |||
350 | 350 | ||
351 | return 0; | 351 | return 0; |
352 | } | 352 | } |
353 | |||
354 | int dt_get_virtual_reg(void *node, void **addr, int nres) | ||
355 | { | ||
356 | unsigned long xaddr; | ||
357 | int n; | ||
358 | |||
359 | n = getprop(node, "virtual-reg", addr, nres * 4); | ||
360 | if (n > 0) | ||
361 | return n / 4; | ||
362 | |||
363 | for (n = 0; n < nres; n++) { | ||
364 | if (!dt_xlate_reg(node, n, &xaddr, NULL)) | ||
365 | break; | ||
366 | |||
367 | addr[n] = (void *)xaddr; | ||
368 | } | ||
369 | |||
370 | return n; | ||
371 | } | ||
372 | |||
diff --git a/arch/powerpc/boot/dts/bamboo.dts b/arch/powerpc/boot/dts/bamboo.dts index 7dc37c9a7446..ba2521bdaab1 100644 --- a/arch/powerpc/boot/dts/bamboo.dts +++ b/arch/powerpc/boot/dts/bamboo.dts | |||
@@ -204,7 +204,6 @@ | |||
204 | }; | 204 | }; |
205 | 205 | ||
206 | EMAC0: ethernet@ef600e00 { | 206 | EMAC0: ethernet@ef600e00 { |
207 | linux,network-index = <0>; | ||
208 | device_type = "network"; | 207 | device_type = "network"; |
209 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | 208 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; |
210 | interrupt-parent = <&UIC1>; | 209 | interrupt-parent = <&UIC1>; |
@@ -225,7 +224,6 @@ | |||
225 | }; | 224 | }; |
226 | 225 | ||
227 | EMAC1: ethernet@ef600f00 { | 226 | EMAC1: ethernet@ef600f00 { |
228 | linux,network-index = <1>; | ||
229 | device_type = "network"; | 227 | device_type = "network"; |
230 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | 228 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; |
231 | interrupt-parent = <&UIC1>; | 229 | interrupt-parent = <&UIC1>; |
diff --git a/arch/powerpc/boot/dts/canyonlands.dts b/arch/powerpc/boot/dts/canyonlands.dts new file mode 100644 index 000000000000..6f3d38a1554f --- /dev/null +++ b/arch/powerpc/boot/dts/canyonlands.dts | |||
@@ -0,0 +1,402 @@ | |||
1 | /* | ||
2 | * Device Tree Source for AMCC Canyonlands (460EX) | ||
3 | * | ||
4 | * Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without | ||
8 | * any warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | / { | ||
12 | #address-cells = <2>; | ||
13 | #size-cells = <1>; | ||
14 | model = "amcc,canyonlands"; | ||
15 | compatible = "amcc,canyonlands"; | ||
16 | dcr-parent = <&/cpus/cpu@0>; | ||
17 | |||
18 | aliases { | ||
19 | ethernet0 = &EMAC0; | ||
20 | ethernet1 = &EMAC1; | ||
21 | serial0 = &UART0; | ||
22 | serial1 = &UART1; | ||
23 | }; | ||
24 | |||
25 | cpus { | ||
26 | #address-cells = <1>; | ||
27 | #size-cells = <0>; | ||
28 | |||
29 | cpu@0 { | ||
30 | device_type = "cpu"; | ||
31 | model = "PowerPC,460EX"; | ||
32 | reg = <0>; | ||
33 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
34 | timebase-frequency = <0>; /* Filled in by U-Boot */ | ||
35 | i-cache-line-size = <20>; | ||
36 | d-cache-line-size = <20>; | ||
37 | i-cache-size = <8000>; | ||
38 | d-cache-size = <8000>; | ||
39 | dcr-controller; | ||
40 | dcr-access-method = "native"; | ||
41 | }; | ||
42 | }; | ||
43 | |||
44 | memory { | ||
45 | device_type = "memory"; | ||
46 | reg = <0 0 0>; /* Filled in by U-Boot */ | ||
47 | }; | ||
48 | |||
49 | UIC0: interrupt-controller0 { | ||
50 | compatible = "ibm,uic-460ex","ibm,uic"; | ||
51 | interrupt-controller; | ||
52 | cell-index = <0>; | ||
53 | dcr-reg = <0c0 009>; | ||
54 | #address-cells = <0>; | ||
55 | #size-cells = <0>; | ||
56 | #interrupt-cells = <2>; | ||
57 | }; | ||
58 | |||
59 | UIC1: interrupt-controller1 { | ||
60 | compatible = "ibm,uic-460ex","ibm,uic"; | ||
61 | interrupt-controller; | ||
62 | cell-index = <1>; | ||
63 | dcr-reg = <0d0 009>; | ||
64 | #address-cells = <0>; | ||
65 | #size-cells = <0>; | ||
66 | #interrupt-cells = <2>; | ||
67 | interrupts = <1e 4 1f 4>; /* cascade */ | ||
68 | interrupt-parent = <&UIC0>; | ||
69 | }; | ||
70 | |||
71 | UIC2: interrupt-controller2 { | ||
72 | compatible = "ibm,uic-460ex","ibm,uic"; | ||
73 | interrupt-controller; | ||
74 | cell-index = <2>; | ||
75 | dcr-reg = <0e0 009>; | ||
76 | #address-cells = <0>; | ||
77 | #size-cells = <0>; | ||
78 | #interrupt-cells = <2>; | ||
79 | interrupts = <a 4 b 4>; /* cascade */ | ||
80 | interrupt-parent = <&UIC0>; | ||
81 | }; | ||
82 | |||
83 | UIC3: interrupt-controller3 { | ||
84 | compatible = "ibm,uic-460ex","ibm,uic"; | ||
85 | interrupt-controller; | ||
86 | cell-index = <3>; | ||
87 | dcr-reg = <0f0 009>; | ||
88 | #address-cells = <0>; | ||
89 | #size-cells = <0>; | ||
90 | #interrupt-cells = <2>; | ||
91 | interrupts = <10 4 11 4>; /* cascade */ | ||
92 | interrupt-parent = <&UIC0>; | ||
93 | }; | ||
94 | |||
95 | SDR0: sdr { | ||
96 | compatible = "ibm,sdr-460ex"; | ||
97 | dcr-reg = <00e 002>; | ||
98 | }; | ||
99 | |||
100 | CPR0: cpr { | ||
101 | compatible = "ibm,cpr-460ex"; | ||
102 | dcr-reg = <00c 002>; | ||
103 | }; | ||
104 | |||
105 | plb { | ||
106 | compatible = "ibm,plb-460ex", "ibm,plb4"; | ||
107 | #address-cells = <2>; | ||
108 | #size-cells = <1>; | ||
109 | ranges; | ||
110 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
111 | |||
112 | SDRAM0: sdram { | ||
113 | compatible = "ibm,sdram-460ex", "ibm,sdram-405gp"; | ||
114 | dcr-reg = <010 2>; | ||
115 | }; | ||
116 | |||
117 | MAL0: mcmal { | ||
118 | compatible = "ibm,mcmal-460ex", "ibm,mcmal2"; | ||
119 | dcr-reg = <180 62>; | ||
120 | num-tx-chans = <2>; | ||
121 | num-rx-chans = <10>; | ||
122 | #address-cells = <0>; | ||
123 | #size-cells = <0>; | ||
124 | interrupt-parent = <&UIC2>; | ||
125 | interrupts = < /*TXEOB*/ 6 4 | ||
126 | /*RXEOB*/ 7 4 | ||
127 | /*SERR*/ 3 4 | ||
128 | /*TXDE*/ 4 4 | ||
129 | /*RXDE*/ 5 4>; | ||
130 | }; | ||
131 | |||
132 | POB0: opb { | ||
133 | compatible = "ibm,opb-460ex", "ibm,opb"; | ||
134 | #address-cells = <1>; | ||
135 | #size-cells = <1>; | ||
136 | ranges = <b0000000 4 b0000000 50000000>; | ||
137 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
138 | |||
139 | EBC0: ebc { | ||
140 | compatible = "ibm,ebc-460ex", "ibm,ebc"; | ||
141 | dcr-reg = <012 2>; | ||
142 | #address-cells = <2>; | ||
143 | #size-cells = <1>; | ||
144 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
145 | interrupts = <6 4>; | ||
146 | interrupt-parent = <&UIC1>; | ||
147 | }; | ||
148 | |||
149 | UART0: serial@ef600300 { | ||
150 | device_type = "serial"; | ||
151 | compatible = "ns16550"; | ||
152 | reg = <ef600300 8>; | ||
153 | virtual-reg = <ef600300>; | ||
154 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
155 | current-speed = <0>; /* Filled in by U-Boot */ | ||
156 | interrupt-parent = <&UIC1>; | ||
157 | interrupts = <1 4>; | ||
158 | }; | ||
159 | |||
160 | UART1: serial@ef600400 { | ||
161 | device_type = "serial"; | ||
162 | compatible = "ns16550"; | ||
163 | reg = <ef600400 8>; | ||
164 | virtual-reg = <ef600400>; | ||
165 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
166 | current-speed = <0>; /* Filled in by U-Boot */ | ||
167 | interrupt-parent = <&UIC0>; | ||
168 | interrupts = <1 4>; | ||
169 | }; | ||
170 | |||
171 | UART2: serial@ef600500 { | ||
172 | device_type = "serial"; | ||
173 | compatible = "ns16550"; | ||
174 | reg = <ef600500 8>; | ||
175 | virtual-reg = <ef600500>; | ||
176 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
177 | current-speed = <0>; /* Filled in by U-Boot */ | ||
178 | interrupt-parent = <&UIC1>; | ||
179 | interrupts = <1d 4>; | ||
180 | }; | ||
181 | |||
182 | UART3: serial@ef600600 { | ||
183 | device_type = "serial"; | ||
184 | compatible = "ns16550"; | ||
185 | reg = <ef600600 8>; | ||
186 | virtual-reg = <ef600600>; | ||
187 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
188 | current-speed = <0>; /* Filled in by U-Boot */ | ||
189 | interrupt-parent = <&UIC1>; | ||
190 | interrupts = <1e 4>; | ||
191 | }; | ||
192 | |||
193 | IIC0: i2c@ef600700 { | ||
194 | compatible = "ibm,iic-460ex", "ibm,iic"; | ||
195 | reg = <ef600700 14>; | ||
196 | interrupt-parent = <&UIC0>; | ||
197 | interrupts = <2 4>; | ||
198 | }; | ||
199 | |||
200 | IIC1: i2c@ef600800 { | ||
201 | compatible = "ibm,iic-460ex", "ibm,iic"; | ||
202 | reg = <ef600800 14>; | ||
203 | interrupt-parent = <&UIC0>; | ||
204 | interrupts = <3 4>; | ||
205 | }; | ||
206 | |||
207 | ZMII0: emac-zmii@ef600d00 { | ||
208 | compatible = "ibm,zmii-460ex", "ibm,zmii"; | ||
209 | reg = <ef600d00 c>; | ||
210 | }; | ||
211 | |||
212 | RGMII0: emac-rgmii@ef601500 { | ||
213 | compatible = "ibm,rgmii-460ex", "ibm,rgmii"; | ||
214 | reg = <ef601500 8>; | ||
215 | has-mdio; | ||
216 | }; | ||
217 | |||
218 | TAH0: emac-tah@ef601350 { | ||
219 | compatible = "ibm,tah-460ex", "ibm,tah"; | ||
220 | reg = <ef601350 30>; | ||
221 | }; | ||
222 | |||
223 | TAH1: emac-tah@ef601450 { | ||
224 | compatible = "ibm,tah-460ex", "ibm,tah"; | ||
225 | reg = <ef601450 30>; | ||
226 | }; | ||
227 | |||
228 | EMAC0: ethernet@ef600e00 { | ||
229 | device_type = "network"; | ||
230 | compatible = "ibm,emac-460ex", "ibm,emac4"; | ||
231 | interrupt-parent = <&EMAC0>; | ||
232 | interrupts = <0 1>; | ||
233 | #interrupt-cells = <1>; | ||
234 | #address-cells = <0>; | ||
235 | #size-cells = <0>; | ||
236 | interrupt-map = </*Status*/ 0 &UIC2 10 4 | ||
237 | /*Wake*/ 1 &UIC2 14 4>; | ||
238 | reg = <ef600e00 70>; | ||
239 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
240 | mal-device = <&MAL0>; | ||
241 | mal-tx-channel = <0>; | ||
242 | mal-rx-channel = <0>; | ||
243 | cell-index = <0>; | ||
244 | max-frame-size = <2328>; | ||
245 | rx-fifo-size = <1000>; | ||
246 | tx-fifo-size = <800>; | ||
247 | phy-mode = "rgmii"; | ||
248 | phy-map = <00000000>; | ||
249 | rgmii-device = <&RGMII0>; | ||
250 | rgmii-channel = <0>; | ||
251 | tah-device = <&TAH0>; | ||
252 | tah-channel = <0>; | ||
253 | has-inverted-stacr-oc; | ||
254 | has-new-stacr-staopc; | ||
255 | }; | ||
256 | |||
257 | EMAC1: ethernet@ef600f00 { | ||
258 | device_type = "network"; | ||
259 | compatible = "ibm,emac-460ex", "ibm,emac4"; | ||
260 | interrupt-parent = <&EMAC1>; | ||
261 | interrupts = <0 1>; | ||
262 | #interrupt-cells = <1>; | ||
263 | #address-cells = <0>; | ||
264 | #size-cells = <0>; | ||
265 | interrupt-map = </*Status*/ 0 &UIC2 11 4 | ||
266 | /*Wake*/ 1 &UIC2 15 4>; | ||
267 | reg = <ef600f00 70>; | ||
268 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
269 | mal-device = <&MAL0>; | ||
270 | mal-tx-channel = <1>; | ||
271 | mal-rx-channel = <8>; | ||
272 | cell-index = <1>; | ||
273 | max-frame-size = <2328>; | ||
274 | rx-fifo-size = <1000>; | ||
275 | tx-fifo-size = <800>; | ||
276 | phy-mode = "rgmii"; | ||
277 | phy-map = <00000000>; | ||
278 | rgmii-device = <&RGMII0>; | ||
279 | rgmii-channel = <1>; | ||
280 | tah-device = <&TAH1>; | ||
281 | tah-channel = <1>; | ||
282 | has-inverted-stacr-oc; | ||
283 | has-new-stacr-staopc; | ||
284 | mdio-device = <&EMAC0>; | ||
285 | }; | ||
286 | }; | ||
287 | |||
288 | PCIX0: pci@c0ec00000 { | ||
289 | device_type = "pci"; | ||
290 | #interrupt-cells = <1>; | ||
291 | #size-cells = <2>; | ||
292 | #address-cells = <3>; | ||
293 | compatible = "ibm,plb-pcix-460ex", "ibm,plb-pcix"; | ||
294 | primary; | ||
295 | large-inbound-windows; | ||
296 | enable-msi-hole; | ||
297 | reg = <c 0ec00000 8 /* Config space access */ | ||
298 | 0 0 0 /* no IACK cycles */ | ||
299 | c 0ed00000 4 /* Special cycles */ | ||
300 | c 0ec80000 100 /* Internal registers */ | ||
301 | c 0ec80100 fc>; /* Internal messaging registers */ | ||
302 | |||
303 | /* Outbound ranges, one memory and one IO, | ||
304 | * later cannot be changed | ||
305 | */ | ||
306 | ranges = <02000000 0 80000000 0000000d 80000000 0 80000000 | ||
307 | 01000000 0 00000000 0000000c 08000000 0 00010000>; | ||
308 | |||
309 | /* Inbound 2GB range starting at 0 */ | ||
310 | dma-ranges = <42000000 0 0 0 0 0 80000000>; | ||
311 | |||
312 | /* This drives busses 0 to 0x3f */ | ||
313 | bus-range = <0 3f>; | ||
314 | |||
315 | /* All PCI interrupts are routed to ext IRQ 2 -> UIC1-0 */ | ||
316 | interrupt-map-mask = <0000 0 0 0>; | ||
317 | interrupt-map = < 0000 0 0 0 &UIC1 0 8 >; | ||
318 | }; | ||
319 | |||
320 | PCIE0: pciex@d00000000 { | ||
321 | device_type = "pci"; | ||
322 | #interrupt-cells = <1>; | ||
323 | #size-cells = <2>; | ||
324 | #address-cells = <3>; | ||
325 | compatible = "ibm,plb-pciex-460ex", "ibm,plb-pciex"; | ||
326 | primary; | ||
327 | port = <0>; /* port number */ | ||
328 | reg = <d 00000000 20000000 /* Config space access */ | ||
329 | c 08010000 00001000>; /* Registers */ | ||
330 | dcr-reg = <100 020>; | ||
331 | sdr-base = <300>; | ||
332 | |||
333 | /* Outbound ranges, one memory and one IO, | ||
334 | * later cannot be changed | ||
335 | */ | ||
336 | ranges = <02000000 0 80000000 0000000e 00000000 0 80000000 | ||
337 | 01000000 0 00000000 0000000f 80000000 0 00010000>; | ||
338 | |||
339 | /* Inbound 2GB range starting at 0 */ | ||
340 | dma-ranges = <42000000 0 0 0 0 0 80000000>; | ||
341 | |||
342 | /* This drives busses 40 to 0x7f */ | ||
343 | bus-range = <40 7f>; | ||
344 | |||
345 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
346 | * to invert PCIe legacy interrupts). | ||
347 | * We are de-swizzling here because the numbers are actually for | ||
348 | * port of the root complex virtual P2P bridge. But I want | ||
349 | * to avoid putting a node for it in the tree, so the numbers | ||
350 | * below are basically de-swizzled numbers. | ||
351 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
352 | */ | ||
353 | interrupt-map-mask = <0000 0 0 7>; | ||
354 | interrupt-map = < | ||
355 | 0000 0 0 1 &UIC3 c 4 /* swizzled int A */ | ||
356 | 0000 0 0 2 &UIC3 d 4 /* swizzled int B */ | ||
357 | 0000 0 0 3 &UIC3 e 4 /* swizzled int C */ | ||
358 | 0000 0 0 4 &UIC3 f 4 /* swizzled int D */>; | ||
359 | }; | ||
360 | |||
361 | PCIE1: pciex@d20000000 { | ||
362 | device_type = "pci"; | ||
363 | #interrupt-cells = <1>; | ||
364 | #size-cells = <2>; | ||
365 | #address-cells = <3>; | ||
366 | compatible = "ibm,plb-pciex-460ex", "ibm,plb-pciex"; | ||
367 | primary; | ||
368 | port = <1>; /* port number */ | ||
369 | reg = <d 20000000 20000000 /* Config space access */ | ||
370 | c 08011000 00001000>; /* Registers */ | ||
371 | dcr-reg = <120 020>; | ||
372 | sdr-base = <340>; | ||
373 | |||
374 | /* Outbound ranges, one memory and one IO, | ||
375 | * later cannot be changed | ||
376 | */ | ||
377 | ranges = <02000000 0 80000000 0000000e 80000000 0 80000000 | ||
378 | 01000000 0 00000000 0000000f 80010000 0 00010000>; | ||
379 | |||
380 | /* Inbound 2GB range starting at 0 */ | ||
381 | dma-ranges = <42000000 0 0 0 0 0 80000000>; | ||
382 | |||
383 | /* This drives busses 80 to 0xbf */ | ||
384 | bus-range = <80 bf>; | ||
385 | |||
386 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
387 | * to invert PCIe legacy interrupts). | ||
388 | * We are de-swizzling here because the numbers are actually for | ||
389 | * port of the root complex virtual P2P bridge. But I want | ||
390 | * to avoid putting a node for it in the tree, so the numbers | ||
391 | * below are basically de-swizzled numbers. | ||
392 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
393 | */ | ||
394 | interrupt-map-mask = <0000 0 0 7>; | ||
395 | interrupt-map = < | ||
396 | 0000 0 0 1 &UIC3 10 4 /* swizzled int A */ | ||
397 | 0000 0 0 2 &UIC3 11 4 /* swizzled int B */ | ||
398 | 0000 0 0 3 &UIC3 12 4 /* swizzled int C */ | ||
399 | 0000 0 0 4 &UIC3 13 4 /* swizzled int D */>; | ||
400 | }; | ||
401 | }; | ||
402 | }; | ||
diff --git a/arch/powerpc/boot/dts/ebony.dts b/arch/powerpc/boot/dts/ebony.dts index 0b000cb7ed8b..5079dc890e0e 100644 --- a/arch/powerpc/boot/dts/ebony.dts +++ b/arch/powerpc/boot/dts/ebony.dts | |||
@@ -241,7 +241,6 @@ | |||
241 | }; | 241 | }; |
242 | 242 | ||
243 | EMAC0: ethernet@40000800 { | 243 | EMAC0: ethernet@40000800 { |
244 | linux,network-index = <0>; | ||
245 | device_type = "network"; | 244 | device_type = "network"; |
246 | compatible = "ibm,emac-440gp", "ibm,emac"; | 245 | compatible = "ibm,emac-440gp", "ibm,emac"; |
247 | interrupt-parent = <&UIC1>; | 246 | interrupt-parent = <&UIC1>; |
@@ -261,7 +260,6 @@ | |||
261 | zmii-channel = <0>; | 260 | zmii-channel = <0>; |
262 | }; | 261 | }; |
263 | EMAC1: ethernet@40000900 { | 262 | EMAC1: ethernet@40000900 { |
264 | linux,network-index = <1>; | ||
265 | device_type = "network"; | 263 | device_type = "network"; |
266 | compatible = "ibm,emac-440gp", "ibm,emac"; | 264 | compatible = "ibm,emac-440gp", "ibm,emac"; |
267 | interrupt-parent = <&UIC1>; | 265 | interrupt-parent = <&UIC1>; |
diff --git a/arch/powerpc/boot/dts/ep8248e.dts b/arch/powerpc/boot/dts/ep8248e.dts index 5d2fb76a72c1..756758fb5b7b 100644 --- a/arch/powerpc/boot/dts/ep8248e.dts +++ b/arch/powerpc/boot/dts/ep8248e.dts | |||
@@ -121,8 +121,7 @@ | |||
121 | 121 | ||
122 | data@0 { | 122 | data@0 { |
123 | compatible = "fsl,cpm-muram-data"; | 123 | compatible = "fsl,cpm-muram-data"; |
124 | reg = <0 0x1100 0x1140 | 124 | reg = <0 0x2000 0x9800 0x800>; |
125 | 0xec0 0x9800 0x800>; | ||
126 | }; | 125 | }; |
127 | }; | 126 | }; |
128 | 127 | ||
@@ -138,7 +137,7 @@ | |||
138 | device_type = "serial"; | 137 | device_type = "serial"; |
139 | compatible = "fsl,mpc8248-smc-uart", | 138 | compatible = "fsl,mpc8248-smc-uart", |
140 | "fsl,cpm2-smc-uart"; | 139 | "fsl,cpm2-smc-uart"; |
141 | reg = <0x11a80 0x20 0x1100 0x40>; | 140 | reg = <0x11a80 0x20 0x87fc 2>; |
142 | interrupts = <4 8>; | 141 | interrupts = <4 8>; |
143 | interrupt-parent = <&PIC>; | 142 | interrupt-parent = <&PIC>; |
144 | fsl,cpm-brg = <7>; | 143 | fsl,cpm-brg = <7>; |
diff --git a/arch/powerpc/boot/dts/ep88xc.dts b/arch/powerpc/boot/dts/ep88xc.dts index 02705f299790..ae57d6240120 100644 --- a/arch/powerpc/boot/dts/ep88xc.dts +++ b/arch/powerpc/boot/dts/ep88xc.dts | |||
@@ -2,7 +2,7 @@ | |||
2 | * EP88xC Device Tree Source | 2 | * EP88xC Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 MontaVista Software, Inc. | 4 | * Copyright 2006 MontaVista Software, Inc. |
5 | * Copyright 2007 Freescale Semiconductor, Inc. | 5 | * Copyright 2007,2008 Freescale Semiconductor, Inc. |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify it | 7 | * This program is free software; you can redistribute it and/or modify it |
8 | * under the terms of the GNU General Public License as published by the | 8 | * under the terms of the GNU General Public License as published by the |
@@ -10,6 +10,7 @@ | |||
10 | * option) any later version. | 10 | * option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | /dts-v1/; | ||
13 | 14 | ||
14 | / { | 15 | / { |
15 | model = "EP88xC"; | 16 | model = "EP88xC"; |
@@ -23,44 +24,44 @@ | |||
23 | 24 | ||
24 | PowerPC,885@0 { | 25 | PowerPC,885@0 { |
25 | device_type = "cpu"; | 26 | device_type = "cpu"; |
26 | reg = <0>; | 27 | reg = <0x0>; |
27 | d-cache-line-size = <d#16>; | 28 | d-cache-line-size = <16>; |
28 | i-cache-line-size = <d#16>; | 29 | i-cache-line-size = <16>; |
29 | d-cache-size = <d#8192>; | 30 | d-cache-size = <8192>; |
30 | i-cache-size = <d#8192>; | 31 | i-cache-size = <8192>; |
31 | timebase-frequency = <0>; | 32 | timebase-frequency = <0>; |
32 | bus-frequency = <0>; | 33 | bus-frequency = <0>; |
33 | clock-frequency = <0>; | 34 | clock-frequency = <0>; |
34 | interrupts = <f 2>; // decrementer interrupt | 35 | interrupts = <15 2>; // decrementer interrupt |
35 | interrupt-parent = <&PIC>; | 36 | interrupt-parent = <&PIC>; |
36 | }; | 37 | }; |
37 | }; | 38 | }; |
38 | 39 | ||
39 | memory { | 40 | memory { |
40 | device_type = "memory"; | 41 | device_type = "memory"; |
41 | reg = <0 0>; | 42 | reg = <0x0 0x0>; |
42 | }; | 43 | }; |
43 | 44 | ||
44 | localbus@fa200100 { | 45 | localbus@fa200100 { |
45 | compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus"; | 46 | compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus"; |
46 | #address-cells = <2>; | 47 | #address-cells = <2>; |
47 | #size-cells = <1>; | 48 | #size-cells = <1>; |
48 | reg = <fa200100 40>; | 49 | reg = <0xfa200100 0x40>; |
49 | 50 | ||
50 | ranges = < | 51 | ranges = < |
51 | 0 0 fc000000 04000000 | 52 | 0x0 0x0 0xfc000000 0x4000000 |
52 | 3 0 fa000000 01000000 | 53 | 0x3 0x0 0xfa000000 0x1000000 |
53 | >; | 54 | >; |
54 | 55 | ||
55 | flash@0,2000000 { | 56 | flash@0,2000000 { |
56 | compatible = "cfi-flash"; | 57 | compatible = "cfi-flash"; |
57 | reg = <0 2000000 2000000>; | 58 | reg = <0x0 0x2000000 0x2000000>; |
58 | bank-width = <4>; | 59 | bank-width = <4>; |
59 | device-width = <2>; | 60 | device-width = <2>; |
60 | }; | 61 | }; |
61 | 62 | ||
62 | board-control@3,400000 { | 63 | board-control@3,400000 { |
63 | reg = <3 400000 10>; | 64 | reg = <0x3 0x400000 0x10>; |
64 | compatible = "fsl,ep88xc-bcsr"; | 65 | compatible = "fsl,ep88xc-bcsr"; |
65 | }; | 66 | }; |
66 | }; | 67 | }; |
@@ -70,25 +71,25 @@ | |||
70 | #address-cells = <1>; | 71 | #address-cells = <1>; |
71 | #size-cells = <1>; | 72 | #size-cells = <1>; |
72 | device_type = "soc"; | 73 | device_type = "soc"; |
73 | ranges = <0 fa200000 00004000>; | 74 | ranges = <0x0 0xfa200000 0x4000>; |
74 | bus-frequency = <0>; | 75 | bus-frequency = <0>; |
75 | 76 | ||
76 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). | 77 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). |
77 | reg = <fa200000 4000>; | 78 | reg = <0xfa200000 0x4000>; |
78 | 79 | ||
79 | mdio@e00 { | 80 | mdio@e00 { |
80 | compatible = "fsl,mpc885-fec-mdio", "fsl,pq1-fec-mdio"; | 81 | compatible = "fsl,mpc885-fec-mdio", "fsl,pq1-fec-mdio"; |
81 | reg = <e00 188>; | 82 | reg = <0xe00 0x188>; |
82 | #address-cells = <1>; | 83 | #address-cells = <1>; |
83 | #size-cells = <0>; | 84 | #size-cells = <0>; |
84 | 85 | ||
85 | PHY0: ethernet-phy@0 { | 86 | PHY0: ethernet-phy@0 { |
86 | reg = <0>; | 87 | reg = <0x0>; |
87 | device_type = "ethernet-phy"; | 88 | device_type = "ethernet-phy"; |
88 | }; | 89 | }; |
89 | 90 | ||
90 | PHY1: ethernet-phy@1 { | 91 | PHY1: ethernet-phy@1 { |
91 | reg = <1>; | 92 | reg = <0x1>; |
92 | device_type = "ethernet-phy"; | 93 | device_type = "ethernet-phy"; |
93 | }; | 94 | }; |
94 | }; | 95 | }; |
@@ -97,7 +98,7 @@ | |||
97 | device_type = "network"; | 98 | device_type = "network"; |
98 | compatible = "fsl,mpc885-fec-enet", | 99 | compatible = "fsl,mpc885-fec-enet", |
99 | "fsl,pq1-fec-enet"; | 100 | "fsl,pq1-fec-enet"; |
100 | reg = <e00 188>; | 101 | reg = <0xe00 0x188>; |
101 | local-mac-address = [ 00 00 00 00 00 00 ]; | 102 | local-mac-address = [ 00 00 00 00 00 00 ]; |
102 | interrupts = <3 1>; | 103 | interrupts = <3 1>; |
103 | interrupt-parent = <&PIC>; | 104 | interrupt-parent = <&PIC>; |
@@ -109,7 +110,7 @@ | |||
109 | device_type = "network"; | 110 | device_type = "network"; |
110 | compatible = "fsl,mpc885-fec-enet", | 111 | compatible = "fsl,mpc885-fec-enet", |
111 | "fsl,pq1-fec-enet"; | 112 | "fsl,pq1-fec-enet"; |
112 | reg = <1e00 188>; | 113 | reg = <0x1e00 0x188>; |
113 | local-mac-address = [ 00 00 00 00 00 00 ]; | 114 | local-mac-address = [ 00 00 00 00 00 00 ]; |
114 | interrupts = <7 1>; | 115 | interrupts = <7 1>; |
115 | interrupt-parent = <&PIC>; | 116 | interrupt-parent = <&PIC>; |
@@ -120,7 +121,7 @@ | |||
120 | PIC: interrupt-controller@0 { | 121 | PIC: interrupt-controller@0 { |
121 | interrupt-controller; | 122 | interrupt-controller; |
122 | #interrupt-cells = <2>; | 123 | #interrupt-cells = <2>; |
123 | reg = <0 24>; | 124 | reg = <0x0 0x24>; |
124 | compatible = "fsl,mpc885-pic", "fsl,pq1-pic"; | 125 | compatible = "fsl,mpc885-pic", "fsl,pq1-pic"; |
125 | }; | 126 | }; |
126 | 127 | ||
@@ -130,29 +131,29 @@ | |||
130 | #size-cells = <2>; | 131 | #size-cells = <2>; |
131 | compatible = "fsl,pq-pcmcia"; | 132 | compatible = "fsl,pq-pcmcia"; |
132 | device_type = "pcmcia"; | 133 | device_type = "pcmcia"; |
133 | reg = <80 80>; | 134 | reg = <0x80 0x80>; |
134 | interrupt-parent = <&PIC>; | 135 | interrupt-parent = <&PIC>; |
135 | interrupts = <d 1>; | 136 | interrupts = <13 1>; |
136 | }; | 137 | }; |
137 | 138 | ||
138 | cpm@9c0 { | 139 | cpm@9c0 { |
139 | #address-cells = <1>; | 140 | #address-cells = <1>; |
140 | #size-cells = <1>; | 141 | #size-cells = <1>; |
141 | compatible = "fsl,mpc885-cpm", "fsl,cpm1"; | 142 | compatible = "fsl,mpc885-cpm", "fsl,cpm1"; |
142 | command-proc = <9c0>; | 143 | command-proc = <0x9c0>; |
143 | interrupts = <0>; // cpm error interrupt | 144 | interrupts = <0>; // cpm error interrupt |
144 | interrupt-parent = <&CPM_PIC>; | 145 | interrupt-parent = <&CPM_PIC>; |
145 | reg = <9c0 40>; | 146 | reg = <0x9c0 0x40>; |
146 | ranges; | 147 | ranges; |
147 | 148 | ||
148 | muram@2000 { | 149 | muram@2000 { |
149 | #address-cells = <1>; | 150 | #address-cells = <1>; |
150 | #size-cells = <1>; | 151 | #size-cells = <1>; |
151 | ranges = <0 2000 2000>; | 152 | ranges = <0x0 0x2000 0x2000>; |
152 | 153 | ||
153 | data@0 { | 154 | data@0 { |
154 | compatible = "fsl,cpm-muram-data"; | 155 | compatible = "fsl,cpm-muram-data"; |
155 | reg = <0 1c00>; | 156 | reg = <0x0 0x1c00>; |
156 | }; | 157 | }; |
157 | }; | 158 | }; |
158 | 159 | ||
@@ -160,7 +161,7 @@ | |||
160 | compatible = "fsl,mpc885-brg", | 161 | compatible = "fsl,mpc885-brg", |
161 | "fsl,cpm1-brg", | 162 | "fsl,cpm1-brg", |
162 | "fsl,cpm-brg"; | 163 | "fsl,cpm-brg"; |
163 | reg = <9f0 10>; | 164 | reg = <0x9f0 0x10>; |
164 | }; | 165 | }; |
165 | 166 | ||
166 | CPM_PIC: interrupt-controller@930 { | 167 | CPM_PIC: interrupt-controller@930 { |
@@ -168,7 +169,7 @@ | |||
168 | #interrupt-cells = <1>; | 169 | #interrupt-cells = <1>; |
169 | interrupts = <5 2 0 2>; | 170 | interrupts = <5 2 0 2>; |
170 | interrupt-parent = <&PIC>; | 171 | interrupt-parent = <&PIC>; |
171 | reg = <930 20>; | 172 | reg = <0x930 0x20>; |
172 | compatible = "fsl,mpc885-cpm-pic", | 173 | compatible = "fsl,mpc885-cpm-pic", |
173 | "fsl,cpm1-pic"; | 174 | "fsl,cpm1-pic"; |
174 | }; | 175 | }; |
@@ -178,11 +179,11 @@ | |||
178 | device_type = "serial"; | 179 | device_type = "serial"; |
179 | compatible = "fsl,mpc885-smc-uart", | 180 | compatible = "fsl,mpc885-smc-uart", |
180 | "fsl,cpm1-smc-uart"; | 181 | "fsl,cpm1-smc-uart"; |
181 | reg = <a80 10 3e80 40>; | 182 | reg = <0xa80 0x10 0x3e80 0x40>; |
182 | interrupts = <4>; | 183 | interrupts = <4>; |
183 | interrupt-parent = <&CPM_PIC>; | 184 | interrupt-parent = <&CPM_PIC>; |
184 | fsl,cpm-brg = <1>; | 185 | fsl,cpm-brg = <1>; |
185 | fsl,cpm-command = <0090>; | 186 | fsl,cpm-command = <0x90>; |
186 | linux,planetcore-label = "SMC1"; | 187 | linux,planetcore-label = "SMC1"; |
187 | }; | 188 | }; |
188 | 189 | ||
@@ -191,11 +192,11 @@ | |||
191 | device_type = "serial"; | 192 | device_type = "serial"; |
192 | compatible = "fsl,mpc885-scc-uart", | 193 | compatible = "fsl,mpc885-scc-uart", |
193 | "fsl,cpm1-scc-uart"; | 194 | "fsl,cpm1-scc-uart"; |
194 | reg = <a20 20 3d00 80>; | 195 | reg = <0xa20 0x20 0x3d00 0x80>; |
195 | interrupts = <1d>; | 196 | interrupts = <29>; |
196 | interrupt-parent = <&CPM_PIC>; | 197 | interrupt-parent = <&CPM_PIC>; |
197 | fsl,cpm-brg = <2>; | 198 | fsl,cpm-brg = <2>; |
198 | fsl,cpm-command = <0040>; | 199 | fsl,cpm-command = <0x40>; |
199 | linux,planetcore-label = "SCC2"; | 200 | linux,planetcore-label = "SCC2"; |
200 | }; | 201 | }; |
201 | 202 | ||
@@ -204,9 +205,9 @@ | |||
204 | #size-cells = <0>; | 205 | #size-cells = <0>; |
205 | compatible = "fsl,mpc885-usb", | 206 | compatible = "fsl,mpc885-usb", |
206 | "fsl,cpm1-usb"; | 207 | "fsl,cpm1-usb"; |
207 | reg = <a00 18 1c00 80>; | 208 | reg = <0xa00 0x18 0x1c00 0x80>; |
208 | interrupt-parent = <&CPM_PIC>; | 209 | interrupt-parent = <&CPM_PIC>; |
209 | interrupts = <1e>; | 210 | interrupts = <30>; |
210 | fsl,cpm-command = <0000>; | 211 | fsl,cpm-command = <0000>; |
211 | }; | 212 | }; |
212 | }; | 213 | }; |
diff --git a/arch/powerpc/boot/dts/glacier.dts b/arch/powerpc/boot/dts/glacier.dts new file mode 100644 index 000000000000..958a5ca53d35 --- /dev/null +++ b/arch/powerpc/boot/dts/glacier.dts | |||
@@ -0,0 +1,467 @@ | |||
1 | /* | ||
2 | * Device Tree Source for AMCC Glacier (460GT) | ||
3 | * | ||
4 | * Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without | ||
8 | * any warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | / { | ||
12 | #address-cells = <2>; | ||
13 | #size-cells = <1>; | ||
14 | model = "amcc,glacier"; | ||
15 | compatible = "amcc,glacier", "amcc,canyonlands"; | ||
16 | dcr-parent = <&/cpus/cpu@0>; | ||
17 | |||
18 | aliases { | ||
19 | ethernet0 = &EMAC0; | ||
20 | ethernet1 = &EMAC1; | ||
21 | ethernet2 = &EMAC2; | ||
22 | ethernet3 = &EMAC3; | ||
23 | serial0 = &UART0; | ||
24 | serial1 = &UART1; | ||
25 | }; | ||
26 | |||
27 | cpus { | ||
28 | #address-cells = <1>; | ||
29 | #size-cells = <0>; | ||
30 | |||
31 | cpu@0 { | ||
32 | device_type = "cpu"; | ||
33 | model = "PowerPC,460GT"; | ||
34 | reg = <0>; | ||
35 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
36 | timebase-frequency = <0>; /* Filled in by U-Boot */ | ||
37 | i-cache-line-size = <20>; | ||
38 | d-cache-line-size = <20>; | ||
39 | i-cache-size = <8000>; | ||
40 | d-cache-size = <8000>; | ||
41 | dcr-controller; | ||
42 | dcr-access-method = "native"; | ||
43 | }; | ||
44 | }; | ||
45 | |||
46 | memory { | ||
47 | device_type = "memory"; | ||
48 | reg = <0 0 0>; /* Filled in by U-Boot */ | ||
49 | }; | ||
50 | |||
51 | UIC0: interrupt-controller0 { | ||
52 | compatible = "ibm,uic-460gt","ibm,uic"; | ||
53 | interrupt-controller; | ||
54 | cell-index = <0>; | ||
55 | dcr-reg = <0c0 009>; | ||
56 | #address-cells = <0>; | ||
57 | #size-cells = <0>; | ||
58 | #interrupt-cells = <2>; | ||
59 | }; | ||
60 | |||
61 | UIC1: interrupt-controller1 { | ||
62 | compatible = "ibm,uic-460gt","ibm,uic"; | ||
63 | interrupt-controller; | ||
64 | cell-index = <1>; | ||
65 | dcr-reg = <0d0 009>; | ||
66 | #address-cells = <0>; | ||
67 | #size-cells = <0>; | ||
68 | #interrupt-cells = <2>; | ||
69 | interrupts = <1e 4 1f 4>; /* cascade */ | ||
70 | interrupt-parent = <&UIC0>; | ||
71 | }; | ||
72 | |||
73 | UIC2: interrupt-controller2 { | ||
74 | compatible = "ibm,uic-460gt","ibm,uic"; | ||
75 | interrupt-controller; | ||
76 | cell-index = <2>; | ||
77 | dcr-reg = <0e0 009>; | ||
78 | #address-cells = <0>; | ||
79 | #size-cells = <0>; | ||
80 | #interrupt-cells = <2>; | ||
81 | interrupts = <a 4 b 4>; /* cascade */ | ||
82 | interrupt-parent = <&UIC0>; | ||
83 | }; | ||
84 | |||
85 | UIC3: interrupt-controller3 { | ||
86 | compatible = "ibm,uic-460gt","ibm,uic"; | ||
87 | interrupt-controller; | ||
88 | cell-index = <3>; | ||
89 | dcr-reg = <0f0 009>; | ||
90 | #address-cells = <0>; | ||
91 | #size-cells = <0>; | ||
92 | #interrupt-cells = <2>; | ||
93 | interrupts = <10 4 11 4>; /* cascade */ | ||
94 | interrupt-parent = <&UIC0>; | ||
95 | }; | ||
96 | |||
97 | SDR0: sdr { | ||
98 | compatible = "ibm,sdr-460gt"; | ||
99 | dcr-reg = <00e 002>; | ||
100 | }; | ||
101 | |||
102 | CPR0: cpr { | ||
103 | compatible = "ibm,cpr-460gt"; | ||
104 | dcr-reg = <00c 002>; | ||
105 | }; | ||
106 | |||
107 | plb { | ||
108 | compatible = "ibm,plb-460gt", "ibm,plb4"; | ||
109 | #address-cells = <2>; | ||
110 | #size-cells = <1>; | ||
111 | ranges; | ||
112 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
113 | |||
114 | SDRAM0: sdram { | ||
115 | compatible = "ibm,sdram-460gt", "ibm,sdram-405gp"; | ||
116 | dcr-reg = <010 2>; | ||
117 | }; | ||
118 | |||
119 | MAL0: mcmal { | ||
120 | compatible = "ibm,mcmal-460gt", "ibm,mcmal2"; | ||
121 | dcr-reg = <180 62>; | ||
122 | num-tx-chans = <4>; | ||
123 | num-rx-chans = <20>; | ||
124 | #address-cells = <0>; | ||
125 | #size-cells = <0>; | ||
126 | interrupt-parent = <&UIC2>; | ||
127 | interrupts = < /*TXEOB*/ 6 4 | ||
128 | /*RXEOB*/ 7 4 | ||
129 | /*SERR*/ 3 4 | ||
130 | /*TXDE*/ 4 4 | ||
131 | /*RXDE*/ 5 4>; | ||
132 | desc-base-addr-high = <8>; | ||
133 | }; | ||
134 | |||
135 | POB0: opb { | ||
136 | compatible = "ibm,opb-460gt", "ibm,opb"; | ||
137 | #address-cells = <1>; | ||
138 | #size-cells = <1>; | ||
139 | ranges = <b0000000 4 b0000000 50000000>; | ||
140 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
141 | |||
142 | EBC0: ebc { | ||
143 | compatible = "ibm,ebc-460gt", "ibm,ebc"; | ||
144 | dcr-reg = <012 2>; | ||
145 | #address-cells = <2>; | ||
146 | #size-cells = <1>; | ||
147 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
148 | interrupts = <6 4>; | ||
149 | interrupt-parent = <&UIC1>; | ||
150 | }; | ||
151 | |||
152 | UART0: serial@ef600300 { | ||
153 | device_type = "serial"; | ||
154 | compatible = "ns16550"; | ||
155 | reg = <ef600300 8>; | ||
156 | virtual-reg = <ef600300>; | ||
157 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
158 | current-speed = <0>; /* Filled in by U-Boot */ | ||
159 | interrupt-parent = <&UIC1>; | ||
160 | interrupts = <1 4>; | ||
161 | }; | ||
162 | |||
163 | UART1: serial@ef600400 { | ||
164 | device_type = "serial"; | ||
165 | compatible = "ns16550"; | ||
166 | reg = <ef600400 8>; | ||
167 | virtual-reg = <ef600400>; | ||
168 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
169 | current-speed = <0>; /* Filled in by U-Boot */ | ||
170 | interrupt-parent = <&UIC0>; | ||
171 | interrupts = <1 4>; | ||
172 | }; | ||
173 | |||
174 | UART2: serial@ef600500 { | ||
175 | device_type = "serial"; | ||
176 | compatible = "ns16550"; | ||
177 | reg = <ef600500 8>; | ||
178 | virtual-reg = <ef600500>; | ||
179 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
180 | current-speed = <0>; /* Filled in by U-Boot */ | ||
181 | interrupt-parent = <&UIC1>; | ||
182 | interrupts = <1d 4>; | ||
183 | }; | ||
184 | |||
185 | UART3: serial@ef600600 { | ||
186 | device_type = "serial"; | ||
187 | compatible = "ns16550"; | ||
188 | reg = <ef600600 8>; | ||
189 | virtual-reg = <ef600600>; | ||
190 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
191 | current-speed = <0>; /* Filled in by U-Boot */ | ||
192 | interrupt-parent = <&UIC1>; | ||
193 | interrupts = <1e 4>; | ||
194 | }; | ||
195 | |||
196 | IIC0: i2c@ef600700 { | ||
197 | compatible = "ibm,iic-460gt", "ibm,iic"; | ||
198 | reg = <ef600700 14>; | ||
199 | interrupt-parent = <&UIC0>; | ||
200 | interrupts = <2 4>; | ||
201 | }; | ||
202 | |||
203 | IIC1: i2c@ef600800 { | ||
204 | compatible = "ibm,iic-460gt", "ibm,iic"; | ||
205 | reg = <ef600800 14>; | ||
206 | interrupt-parent = <&UIC0>; | ||
207 | interrupts = <3 4>; | ||
208 | }; | ||
209 | |||
210 | ZMII0: emac-zmii@ef600d00 { | ||
211 | compatible = "ibm,zmii-460gt", "ibm,zmii"; | ||
212 | reg = <ef600d00 c>; | ||
213 | }; | ||
214 | |||
215 | RGMII0: emac-rgmii@ef601500 { | ||
216 | compatible = "ibm,rgmii-460gt", "ibm,rgmii"; | ||
217 | reg = <ef601500 8>; | ||
218 | has-mdio; | ||
219 | }; | ||
220 | |||
221 | RGMII1: emac-rgmii@ef601600 { | ||
222 | compatible = "ibm,rgmii-460gt", "ibm,rgmii"; | ||
223 | reg = <ef601600 8>; | ||
224 | has-mdio; | ||
225 | }; | ||
226 | |||
227 | TAH0: emac-tah@ef601350 { | ||
228 | compatible = "ibm,tah-460gt", "ibm,tah"; | ||
229 | reg = <ef601350 30>; | ||
230 | }; | ||
231 | |||
232 | TAH1: emac-tah@ef601450 { | ||
233 | compatible = "ibm,tah-460gt", "ibm,tah"; | ||
234 | reg = <ef601450 30>; | ||
235 | }; | ||
236 | |||
237 | EMAC0: ethernet@ef600e00 { | ||
238 | device_type = "network"; | ||
239 | compatible = "ibm,emac-460gt", "ibm,emac4"; | ||
240 | interrupt-parent = <&EMAC0>; | ||
241 | interrupts = <0 1>; | ||
242 | #interrupt-cells = <1>; | ||
243 | #address-cells = <0>; | ||
244 | #size-cells = <0>; | ||
245 | interrupt-map = </*Status*/ 0 &UIC2 10 4 | ||
246 | /*Wake*/ 1 &UIC2 14 4>; | ||
247 | reg = <ef600e00 70>; | ||
248 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
249 | mal-device = <&MAL0>; | ||
250 | mal-tx-channel = <0>; | ||
251 | mal-rx-channel = <0>; | ||
252 | cell-index = <0>; | ||
253 | max-frame-size = <2328>; | ||
254 | rx-fifo-size = <1000>; | ||
255 | tx-fifo-size = <800>; | ||
256 | phy-mode = "rgmii"; | ||
257 | phy-map = <00000000>; | ||
258 | rgmii-device = <&RGMII0>; | ||
259 | rgmii-channel = <0>; | ||
260 | tah-device = <&TAH0>; | ||
261 | tah-channel = <0>; | ||
262 | has-inverted-stacr-oc; | ||
263 | has-new-stacr-staopc; | ||
264 | }; | ||
265 | |||
266 | EMAC1: ethernet@ef600f00 { | ||
267 | device_type = "network"; | ||
268 | compatible = "ibm,emac-460gt", "ibm,emac4"; | ||
269 | interrupt-parent = <&EMAC1>; | ||
270 | interrupts = <0 1>; | ||
271 | #interrupt-cells = <1>; | ||
272 | #address-cells = <0>; | ||
273 | #size-cells = <0>; | ||
274 | interrupt-map = </*Status*/ 0 &UIC2 11 4 | ||
275 | /*Wake*/ 1 &UIC2 15 4>; | ||
276 | reg = <ef600f00 70>; | ||
277 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
278 | mal-device = <&MAL0>; | ||
279 | mal-tx-channel = <1>; | ||
280 | mal-rx-channel = <8>; | ||
281 | cell-index = <1>; | ||
282 | max-frame-size = <2328>; | ||
283 | rx-fifo-size = <1000>; | ||
284 | tx-fifo-size = <800>; | ||
285 | phy-mode = "rgmii"; | ||
286 | phy-map = <00000000>; | ||
287 | rgmii-device = <&RGMII0>; | ||
288 | rgmii-channel = <1>; | ||
289 | tah-device = <&TAH1>; | ||
290 | tah-channel = <1>; | ||
291 | has-inverted-stacr-oc; | ||
292 | has-new-stacr-staopc; | ||
293 | mdio-device = <&EMAC0>; | ||
294 | }; | ||
295 | |||
296 | EMAC2: ethernet@ef601100 { | ||
297 | device_type = "network"; | ||
298 | compatible = "ibm,emac-460gt", "ibm,emac4"; | ||
299 | interrupt-parent = <&EMAC2>; | ||
300 | interrupts = <0 1>; | ||
301 | #interrupt-cells = <1>; | ||
302 | #address-cells = <0>; | ||
303 | #size-cells = <0>; | ||
304 | interrupt-map = </*Status*/ 0 &UIC2 12 4 | ||
305 | /*Wake*/ 1 &UIC2 16 4>; | ||
306 | reg = <ef601100 70>; | ||
307 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
308 | mal-device = <&MAL0>; | ||
309 | mal-tx-channel = <2>; | ||
310 | mal-rx-channel = <10>; | ||
311 | cell-index = <2>; | ||
312 | max-frame-size = <2328>; | ||
313 | rx-fifo-size = <1000>; | ||
314 | tx-fifo-size = <800>; | ||
315 | phy-mode = "rgmii"; | ||
316 | phy-map = <00000000>; | ||
317 | rgmii-device = <&RGMII1>; | ||
318 | rgmii-channel = <0>; | ||
319 | has-inverted-stacr-oc; | ||
320 | has-new-stacr-staopc; | ||
321 | mdio-device = <&EMAC0>; | ||
322 | }; | ||
323 | |||
324 | EMAC3: ethernet@ef601200 { | ||
325 | device_type = "network"; | ||
326 | compatible = "ibm,emac-460gt", "ibm,emac4"; | ||
327 | interrupt-parent = <&EMAC3>; | ||
328 | interrupts = <0 1>; | ||
329 | #interrupt-cells = <1>; | ||
330 | #address-cells = <0>; | ||
331 | #size-cells = <0>; | ||
332 | interrupt-map = </*Status*/ 0 &UIC2 13 4 | ||
333 | /*Wake*/ 1 &UIC2 17 4>; | ||
334 | reg = <ef601200 70>; | ||
335 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
336 | mal-device = <&MAL0>; | ||
337 | mal-tx-channel = <3>; | ||
338 | mal-rx-channel = <18>; | ||
339 | cell-index = <3>; | ||
340 | max-frame-size = <2328>; | ||
341 | rx-fifo-size = <1000>; | ||
342 | tx-fifo-size = <800>; | ||
343 | phy-mode = "rgmii"; | ||
344 | phy-map = <00000000>; | ||
345 | rgmii-device = <&RGMII1>; | ||
346 | rgmii-channel = <1>; | ||
347 | has-inverted-stacr-oc; | ||
348 | has-new-stacr-staopc; | ||
349 | mdio-device = <&EMAC0>; | ||
350 | }; | ||
351 | }; | ||
352 | |||
353 | PCIX0: pci@c0ec00000 { | ||
354 | device_type = "pci"; | ||
355 | #interrupt-cells = <1>; | ||
356 | #size-cells = <2>; | ||
357 | #address-cells = <3>; | ||
358 | compatible = "ibm,plb-pcix-460gt", "ibm,plb-pcix"; | ||
359 | primary; | ||
360 | large-inbound-windows; | ||
361 | enable-msi-hole; | ||
362 | reg = <c 0ec00000 8 /* Config space access */ | ||
363 | 0 0 0 /* no IACK cycles */ | ||
364 | c 0ed00000 4 /* Special cycles */ | ||
365 | c 0ec80000 100 /* Internal registers */ | ||
366 | c 0ec80100 fc>; /* Internal messaging registers */ | ||
367 | |||
368 | /* Outbound ranges, one memory and one IO, | ||
369 | * later cannot be changed | ||
370 | */ | ||
371 | ranges = <02000000 0 80000000 0000000d 80000000 0 80000000 | ||
372 | 01000000 0 00000000 0000000c 08000000 0 00010000>; | ||
373 | |||
374 | /* Inbound 2GB range starting at 0 */ | ||
375 | dma-ranges = <42000000 0 0 0 0 0 80000000>; | ||
376 | |||
377 | /* This drives busses 0 to 0x3f */ | ||
378 | bus-range = <0 3f>; | ||
379 | |||
380 | /* All PCI interrupts are routed to ext IRQ 2 -> UIC1-0 */ | ||
381 | interrupt-map-mask = <0000 0 0 0>; | ||
382 | interrupt-map = < 0000 0 0 0 &UIC1 0 8 >; | ||
383 | }; | ||
384 | |||
385 | PCIE0: pciex@d00000000 { | ||
386 | device_type = "pci"; | ||
387 | #interrupt-cells = <1>; | ||
388 | #size-cells = <2>; | ||
389 | #address-cells = <3>; | ||
390 | compatible = "ibm,plb-pciex-460ex", "ibm,plb-pciex"; | ||
391 | primary; | ||
392 | port = <0>; /* port number */ | ||
393 | reg = <d 00000000 20000000 /* Config space access */ | ||
394 | c 08010000 00001000>; /* Registers */ | ||
395 | dcr-reg = <100 020>; | ||
396 | sdr-base = <300>; | ||
397 | |||
398 | /* Outbound ranges, one memory and one IO, | ||
399 | * later cannot be changed | ||
400 | */ | ||
401 | ranges = <02000000 0 80000000 0000000e 00000000 0 80000000 | ||
402 | 01000000 0 00000000 0000000f 80000000 0 00010000>; | ||
403 | |||
404 | /* Inbound 2GB range starting at 0 */ | ||
405 | dma-ranges = <42000000 0 0 0 0 0 80000000>; | ||
406 | |||
407 | /* This drives busses 40 to 0x7f */ | ||
408 | bus-range = <40 7f>; | ||
409 | |||
410 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
411 | * to invert PCIe legacy interrupts). | ||
412 | * We are de-swizzling here because the numbers are actually for | ||
413 | * port of the root complex virtual P2P bridge. But I want | ||
414 | * to avoid putting a node for it in the tree, so the numbers | ||
415 | * below are basically de-swizzled numbers. | ||
416 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
417 | */ | ||
418 | interrupt-map-mask = <0000 0 0 7>; | ||
419 | interrupt-map = < | ||
420 | 0000 0 0 1 &UIC3 c 4 /* swizzled int A */ | ||
421 | 0000 0 0 2 &UIC3 d 4 /* swizzled int B */ | ||
422 | 0000 0 0 3 &UIC3 e 4 /* swizzled int C */ | ||
423 | 0000 0 0 4 &UIC3 f 4 /* swizzled int D */>; | ||
424 | }; | ||
425 | |||
426 | PCIE1: pciex@d20000000 { | ||
427 | device_type = "pci"; | ||
428 | #interrupt-cells = <1>; | ||
429 | #size-cells = <2>; | ||
430 | #address-cells = <3>; | ||
431 | compatible = "ibm,plb-pciex-460ex", "ibm,plb-pciex"; | ||
432 | primary; | ||
433 | port = <1>; /* port number */ | ||
434 | reg = <d 20000000 20000000 /* Config space access */ | ||
435 | c 08011000 00001000>; /* Registers */ | ||
436 | dcr-reg = <120 020>; | ||
437 | sdr-base = <340>; | ||
438 | |||
439 | /* Outbound ranges, one memory and one IO, | ||
440 | * later cannot be changed | ||
441 | */ | ||
442 | ranges = <02000000 0 80000000 0000000e 80000000 0 80000000 | ||
443 | 01000000 0 00000000 0000000f 80010000 0 00010000>; | ||
444 | |||
445 | /* Inbound 2GB range starting at 0 */ | ||
446 | dma-ranges = <42000000 0 0 0 0 0 80000000>; | ||
447 | |||
448 | /* This drives busses 80 to 0xbf */ | ||
449 | bus-range = <80 bf>; | ||
450 | |||
451 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
452 | * to invert PCIe legacy interrupts). | ||
453 | * We are de-swizzling here because the numbers are actually for | ||
454 | * port of the root complex virtual P2P bridge. But I want | ||
455 | * to avoid putting a node for it in the tree, so the numbers | ||
456 | * below are basically de-swizzled numbers. | ||
457 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
458 | */ | ||
459 | interrupt-map-mask = <0000 0 0 7>; | ||
460 | interrupt-map = < | ||
461 | 0000 0 0 1 &UIC3 10 4 /* swizzled int A */ | ||
462 | 0000 0 0 2 &UIC3 11 4 /* swizzled int B */ | ||
463 | 0000 0 0 3 &UIC3 12 4 /* swizzled int C */ | ||
464 | 0000 0 0 4 &UIC3 13 4 /* swizzled int D */>; | ||
465 | }; | ||
466 | }; | ||
467 | }; | ||
diff --git a/arch/powerpc/boot/dts/haleakala.dts b/arch/powerpc/boot/dts/haleakala.dts index ae68fefc01b6..b5d95ac24dbf 100644 --- a/arch/powerpc/boot/dts/haleakala.dts +++ b/arch/powerpc/boot/dts/haleakala.dts | |||
@@ -12,7 +12,7 @@ | |||
12 | #address-cells = <1>; | 12 | #address-cells = <1>; |
13 | #size-cells = <1>; | 13 | #size-cells = <1>; |
14 | model = "amcc,haleakala"; | 14 | model = "amcc,haleakala"; |
15 | compatible = "amcc,kilauea"; | 15 | compatible = "amcc,haleakala", "amcc,kilauea"; |
16 | dcr-parent = <&/cpus/cpu@0>; | 16 | dcr-parent = <&/cpus/cpu@0>; |
17 | 17 | ||
18 | aliases { | 18 | aliases { |
@@ -218,7 +218,7 @@ | |||
218 | mal-tx-channel = <0>; | 218 | mal-tx-channel = <0>; |
219 | mal-rx-channel = <0>; | 219 | mal-rx-channel = <0>; |
220 | cell-index = <0>; | 220 | cell-index = <0>; |
221 | max-frame-size = <5dc>; | 221 | max-frame-size = <2328>; |
222 | rx-fifo-size = <1000>; | 222 | rx-fifo-size = <1000>; |
223 | tx-fifo-size = <800>; | 223 | tx-fifo-size = <800>; |
224 | phy-mode = "rgmii"; | 224 | phy-mode = "rgmii"; |
diff --git a/arch/powerpc/boot/dts/katmai.dts b/arch/powerpc/boot/dts/katmai.dts index fc86e5a3afc4..cc2873a531d2 100644 --- a/arch/powerpc/boot/dts/katmai.dts +++ b/arch/powerpc/boot/dts/katmai.dts | |||
@@ -212,7 +212,7 @@ | |||
212 | mal-tx-channel = <0>; | 212 | mal-tx-channel = <0>; |
213 | mal-rx-channel = <0>; | 213 | mal-rx-channel = <0>; |
214 | cell-index = <0>; | 214 | cell-index = <0>; |
215 | max-frame-size = <5dc>; | 215 | max-frame-size = <2328>; |
216 | rx-fifo-size = <1000>; | 216 | rx-fifo-size = <1000>; |
217 | tx-fifo-size = <800>; | 217 | tx-fifo-size = <800>; |
218 | phy-mode = "gmii"; | 218 | phy-mode = "gmii"; |
diff --git a/arch/powerpc/boot/dts/kilauea.dts b/arch/powerpc/boot/dts/kilauea.dts index 8baef61f31cd..48c9a6e71f1a 100644 --- a/arch/powerpc/boot/dts/kilauea.dts +++ b/arch/powerpc/boot/dts/kilauea.dts | |||
@@ -219,7 +219,7 @@ | |||
219 | mal-tx-channel = <0>; | 219 | mal-tx-channel = <0>; |
220 | mal-rx-channel = <0>; | 220 | mal-rx-channel = <0>; |
221 | cell-index = <0>; | 221 | cell-index = <0>; |
222 | max-frame-size = <5dc>; | 222 | max-frame-size = <2328>; |
223 | rx-fifo-size = <1000>; | 223 | rx-fifo-size = <1000>; |
224 | tx-fifo-size = <800>; | 224 | tx-fifo-size = <800>; |
225 | phy-mode = "rgmii"; | 225 | phy-mode = "rgmii"; |
@@ -247,7 +247,7 @@ | |||
247 | mal-tx-channel = <1>; | 247 | mal-tx-channel = <1>; |
248 | mal-rx-channel = <1>; | 248 | mal-rx-channel = <1>; |
249 | cell-index = <1>; | 249 | cell-index = <1>; |
250 | max-frame-size = <5dc>; | 250 | max-frame-size = <2328>; |
251 | rx-fifo-size = <1000>; | 251 | rx-fifo-size = <1000>; |
252 | tx-fifo-size = <800>; | 252 | tx-fifo-size = <800>; |
253 | phy-mode = "rgmii"; | 253 | phy-mode = "rgmii"; |
diff --git a/arch/powerpc/boot/dts/ksi8560.dts b/arch/powerpc/boot/dts/ksi8560.dts new file mode 100644 index 000000000000..f869ce3ca0b7 --- /dev/null +++ b/arch/powerpc/boot/dts/ksi8560.dts | |||
@@ -0,0 +1,267 @@ | |||
1 | /* | ||
2 | * Device Tree Source for Emerson KSI8560 | ||
3 | * | ||
4 | * Author: Alexandr Smirnov <asmirnov@ru.mvista.com> | ||
5 | * | ||
6 | * Based on mpc8560ads.dts | ||
7 | * | ||
8 | * 2008 (c) MontaVista, Software, Inc. This file is licensed under | ||
9 | * the terms of the GNU General Public License version 2. This program | ||
10 | * is licensed "as is" without any warranty of any kind, whether express | ||
11 | * or implied. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | /dts-v1/; | ||
16 | |||
17 | / { | ||
18 | model = "KSI8560"; | ||
19 | compatible = "emerson,KSI8560"; | ||
20 | #address-cells = <1>; | ||
21 | #size-cells = <1>; | ||
22 | |||
23 | aliases { | ||
24 | ethernet0 = &enet0; | ||
25 | ethernet1 = &enet1; | ||
26 | ethernet2 = &enet2; | ||
27 | }; | ||
28 | |||
29 | cpus { | ||
30 | #address-cells = <1>; | ||
31 | #size-cells = <0>; | ||
32 | |||
33 | PowerPC,8560@0 { | ||
34 | device_type = "cpu"; | ||
35 | reg = <0>; | ||
36 | d-cache-line-size = <32>; | ||
37 | i-cache-line-size = <32>; | ||
38 | d-cache-size = <0x8000>; /* L1, 32K */ | ||
39 | i-cache-size = <0x8000>; /* L1, 32K */ | ||
40 | timebase-frequency = <0>; /* From U-boot */ | ||
41 | bus-frequency = <0>; /* From U-boot */ | ||
42 | clock-frequency = <0>; /* From U-boot */ | ||
43 | }; | ||
44 | }; | ||
45 | |||
46 | memory { | ||
47 | device_type = "memory"; | ||
48 | reg = <0x00000000 0x10000000>; /* Fixed by bootwrapper */ | ||
49 | }; | ||
50 | |||
51 | soc@fdf00000 { | ||
52 | #address-cells = <1>; | ||
53 | #size-cells = <1>; | ||
54 | device_type = "soc"; | ||
55 | ranges = <0x00000000 0xfdf00000 0x00100000>; | ||
56 | bus-frequency = <0>; /* Fixed by bootwrapper */ | ||
57 | |||
58 | memory-controller@2000 { | ||
59 | compatible = "fsl,8540-memory-controller"; | ||
60 | reg = <0x2000 0x1000>; | ||
61 | interrupt-parent = <&MPIC>; | ||
62 | interrupts = <0x12 0x2>; | ||
63 | }; | ||
64 | |||
65 | l2-cache-controller@20000 { | ||
66 | compatible = "fsl,8540-l2-cache-controller"; | ||
67 | reg = <0x20000 0x1000>; | ||
68 | cache-line-size = <0x20>; /* 32 bytes */ | ||
69 | cache-size = <0x40000>; /* L2, 256K */ | ||
70 | interrupt-parent = <&MPIC>; | ||
71 | interrupts = <0x10 0x2>; | ||
72 | }; | ||
73 | |||
74 | i2c@3000 { | ||
75 | #address-cells = <1>; | ||
76 | #size-cells = <0>; | ||
77 | cell-index = <0>; | ||
78 | compatible = "fsl-i2c"; | ||
79 | reg = <0x3000 0x100>; | ||
80 | interrupts = <0x2b 0x2>; | ||
81 | interrupt-parent = <&MPIC>; | ||
82 | dfsrr; | ||
83 | }; | ||
84 | |||
85 | mdio@24520 { /* For TSECs */ | ||
86 | #address-cells = <1>; | ||
87 | #size-cells = <0>; | ||
88 | compatible = "fsl,gianfar-mdio"; | ||
89 | reg = <0x24520 0x20>; | ||
90 | |||
91 | PHY1: ethernet-phy@1 { | ||
92 | interrupt-parent = <&MPIC>; | ||
93 | reg = <0x1>; | ||
94 | device_type = "ethernet-phy"; | ||
95 | }; | ||
96 | |||
97 | PHY2: ethernet-phy@2 { | ||
98 | interrupt-parent = <&MPIC>; | ||
99 | reg = <0x2>; | ||
100 | device_type = "ethernet-phy"; | ||
101 | }; | ||
102 | }; | ||
103 | |||
104 | enet0: ethernet@24000 { | ||
105 | device_type = "network"; | ||
106 | model = "TSEC"; | ||
107 | compatible = "gianfar"; | ||
108 | reg = <0x24000 0x1000>; | ||
109 | /* Mac address filled in by bootwrapper */ | ||
110 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
111 | interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>; | ||
112 | interrupt-parent = <&MPIC>; | ||
113 | phy-handle = <&PHY1>; | ||
114 | }; | ||
115 | |||
116 | enet1: ethernet@25000 { | ||
117 | device_type = "network"; | ||
118 | model = "TSEC"; | ||
119 | compatible = "gianfar"; | ||
120 | reg = <0x25000 0x1000>; | ||
121 | /* Mac address filled in by bootwrapper */ | ||
122 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
123 | interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>; | ||
124 | interrupt-parent = <&MPIC>; | ||
125 | phy-handle = <&PHY2>; | ||
126 | }; | ||
127 | |||
128 | MPIC: pic@40000 { | ||
129 | #address-cells = <0>; | ||
130 | #interrupt-cells = <2>; | ||
131 | interrupt-controller; | ||
132 | reg = <0x40000 0x40000>; | ||
133 | device_type = "open-pic"; | ||
134 | }; | ||
135 | |||
136 | cpm@919c0 { | ||
137 | #address-cells = <1>; | ||
138 | #size-cells = <1>; | ||
139 | compatible = "fsl,mpc8560-cpm", "fsl,cpm2"; | ||
140 | reg = <0x919c0 0x30>; | ||
141 | ranges; | ||
142 | |||
143 | muram@80000 { | ||
144 | #address-cells = <1>; | ||
145 | #size-cells = <1>; | ||
146 | ranges = <0x0 0x80000 0x10000>; | ||
147 | |||
148 | data@0 { | ||
149 | compatible = "fsl,cpm-muram-data"; | ||
150 | reg = <0x0 0x4000 0x9000 0x2000>; | ||
151 | }; | ||
152 | }; | ||
153 | |||
154 | brg@919f0 { | ||
155 | compatible = "fsl,mpc8560-brg", | ||
156 | "fsl,cpm2-brg", | ||
157 | "fsl,cpm-brg"; | ||
158 | reg = <0x919f0 0x10 0x915f0 0x10>; | ||
159 | clock-frequency = <165000000>; /* 166MHz */ | ||
160 | }; | ||
161 | |||
162 | CPMPIC: pic@90c00 { | ||
163 | #address-cells = <0>; | ||
164 | #interrupt-cells = <2>; | ||
165 | interrupt-controller; | ||
166 | interrupts = <0x2e 0x2>; | ||
167 | interrupt-parent = <&MPIC>; | ||
168 | reg = <0x90c00 0x80>; | ||
169 | compatible = "fsl,mpc8560-cpm-pic", "fsl,cpm2-pic"; | ||
170 | }; | ||
171 | |||
172 | serial@91a00 { | ||
173 | device_type = "serial"; | ||
174 | compatible = "fsl,mpc8560-scc-uart", | ||
175 | "fsl,cpm2-scc-uart"; | ||
176 | reg = <0x91a00 0x20 0x88000 0x100>; | ||
177 | fsl,cpm-brg = <1>; | ||
178 | fsl,cpm-command = <0x800000>; | ||
179 | current-speed = <0x1c200>; | ||
180 | interrupts = <0x28 0x8>; | ||
181 | interrupt-parent = <&CPMPIC>; | ||
182 | }; | ||
183 | |||
184 | serial@91a20 { | ||
185 | device_type = "serial"; | ||
186 | compatible = "fsl,mpc8560-scc-uart", | ||
187 | "fsl,cpm2-scc-uart"; | ||
188 | reg = <0x91a20 0x20 0x88100 0x100>; | ||
189 | fsl,cpm-brg = <2>; | ||
190 | fsl,cpm-command = <0x4a00000>; | ||
191 | current-speed = <0x1c200>; | ||
192 | interrupts = <0x29 0x8>; | ||
193 | interrupt-parent = <&CPMPIC>; | ||
194 | }; | ||
195 | |||
196 | mdio@90d00 { /* For FCCs */ | ||
197 | #address-cells = <1>; | ||
198 | #size-cells = <0>; | ||
199 | compatible = "fsl,cpm2-mdio-bitbang"; | ||
200 | reg = <0x90d00 0x14>; | ||
201 | fsl,mdio-pin = <24>; | ||
202 | fsl,mdc-pin = <25>; | ||
203 | |||
204 | PHY0: ethernet-phy@0 { | ||
205 | interrupt-parent = <&MPIC>; | ||
206 | reg = <0x0>; | ||
207 | device_type = "ethernet-phy"; | ||
208 | }; | ||
209 | }; | ||
210 | |||
211 | enet2: ethernet@91300 { | ||
212 | device_type = "network"; | ||
213 | compatible = "fsl,mpc8560-fcc-enet", | ||
214 | "fsl,cpm2-fcc-enet"; | ||
215 | reg = <0x91300 0x20 0x88400 0x100 0x91390 0x1>; | ||
216 | /* Mac address filled in by bootwrapper */ | ||
217 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
218 | fsl,cpm-command = <0x12000300>; | ||
219 | interrupts = <0x20 0x8>; | ||
220 | interrupt-parent = <&CPMPIC>; | ||
221 | phy-handle = <&PHY0>; | ||
222 | }; | ||
223 | }; | ||
224 | }; | ||
225 | |||
226 | localbus@fdf05000 { | ||
227 | #address-cells = <2>; | ||
228 | #size-cells = <1>; | ||
229 | compatible = "fsl,mpc8560-localbus"; | ||
230 | reg = <0xfdf05000 0x68>; | ||
231 | |||
232 | ranges = <0x0 0x0 0xe0000000 0x00800000 | ||
233 | 0x4 0x0 0xe8080000 0x00080000>; | ||
234 | |||
235 | flash@0,0 { | ||
236 | #address-cells = <1>; | ||
237 | #size-cells = <1>; | ||
238 | compatible = "jedec-flash"; | ||
239 | reg = <0x0 0x0 0x800000>; | ||
240 | bank-width = <0x2>; | ||
241 | |||
242 | partition@0 { | ||
243 | label = "Primary Kernel"; | ||
244 | reg = <0x0 0x180000>; | ||
245 | }; | ||
246 | partition@180000 { | ||
247 | label = "Primary Filesystem"; | ||
248 | reg = <0x180000 0x580000>; | ||
249 | }; | ||
250 | partition@700000 { | ||
251 | label = "Monitor"; | ||
252 | reg = <0x300000 0x100000>; | ||
253 | read-only; | ||
254 | }; | ||
255 | }; | ||
256 | |||
257 | cpld@4,0 { | ||
258 | compatible = "emerson,KSI8560-cpld"; | ||
259 | reg = <0x4 0x0 0x80000>; | ||
260 | }; | ||
261 | }; | ||
262 | |||
263 | |||
264 | chosen { | ||
265 | linux,stdout-path = "/soc/cpm/serial@91a00"; | ||
266 | }; | ||
267 | }; | ||
diff --git a/arch/powerpc/boot/dts/kuroboxHD.dts b/arch/powerpc/boot/dts/kuroboxHD.dts index 446958854519..2e5a1a1812b6 100644 --- a/arch/powerpc/boot/dts/kuroboxHD.dts +++ b/arch/powerpc/boot/dts/kuroboxHD.dts | |||
@@ -7,6 +7,7 @@ | |||
7 | * Based on sandpoint.dts | 7 | * Based on sandpoint.dts |
8 | * | 8 | * |
9 | * 2006 (c) G. Liakhovetski <g.liakhovetski@gmx.de> | 9 | * 2006 (c) G. Liakhovetski <g.liakhovetski@gmx.de> |
10 | * Copyright 2008 Freescale Semiconductor, Inc. | ||
10 | * | 11 | * |
11 | * This file is licensed under | 12 | * This file is licensed under |
12 | * the terms of the GNU General Public License version 2. This program | 13 | * the terms of the GNU General Public License version 2. This program |
@@ -17,6 +18,8 @@ XXXX add flash parts, rtc, ?? | |||
17 | 18 | ||
18 | */ | 19 | */ |
19 | 20 | ||
21 | /dts-v1/; | ||
22 | |||
20 | / { | 23 | / { |
21 | model = "KuroboxHD"; | 24 | model = "KuroboxHD"; |
22 | compatible = "linkstation"; | 25 | compatible = "linkstation"; |
@@ -35,19 +38,19 @@ XXXX add flash parts, rtc, ?? | |||
35 | 38 | ||
36 | PowerPC,603e { /* Really 8241 */ | 39 | PowerPC,603e { /* Really 8241 */ |
37 | device_type = "cpu"; | 40 | device_type = "cpu"; |
38 | reg = <0>; | 41 | reg = <0x0>; |
39 | clock-frequency = <bebc200>; /* Fixed by bootloader */ | 42 | clock-frequency = <200000000>; /* Fixed by bootloader */ |
40 | timebase-frequency = <1743000>; /* Fixed by bootloader */ | 43 | timebase-frequency = <24391680>; /* Fixed by bootloader */ |
41 | bus-frequency = <0>; /* Fixed by bootloader */ | 44 | bus-frequency = <0>; /* Fixed by bootloader */ |
42 | /* Following required by dtc but not used */ | 45 | /* Following required by dtc but not used */ |
43 | i-cache-size = <4000>; | 46 | i-cache-size = <0x4000>; |
44 | d-cache-size = <4000>; | 47 | d-cache-size = <0x4000>; |
45 | }; | 48 | }; |
46 | }; | 49 | }; |
47 | 50 | ||
48 | memory { | 51 | memory { |
49 | device_type = "memory"; | 52 | device_type = "memory"; |
50 | reg = <00000000 04000000>; | 53 | reg = <0x0 0x4000000>; |
51 | }; | 54 | }; |
52 | 55 | ||
53 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ | 56 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ |
@@ -56,26 +59,26 @@ XXXX add flash parts, rtc, ?? | |||
56 | device_type = "soc"; | 59 | device_type = "soc"; |
57 | compatible = "mpc10x"; | 60 | compatible = "mpc10x"; |
58 | store-gathering = <0>; /* 0 == off, !0 == on */ | 61 | store-gathering = <0>; /* 0 == off, !0 == on */ |
59 | reg = <80000000 00100000>; | 62 | reg = <0x80000000 0x100000>; |
60 | ranges = <80000000 80000000 70000000 /* pci mem space */ | 63 | ranges = <0x80000000 0x80000000 0x70000000 /* pci mem space */ |
61 | fc000000 fc000000 00100000 /* EUMB */ | 64 | 0xfc000000 0xfc000000 0x100000 /* EUMB */ |
62 | fe000000 fe000000 00c00000 /* pci i/o space */ | 65 | 0xfe000000 0xfe000000 0xc00000 /* pci i/o space */ |
63 | fec00000 fec00000 00300000 /* pci cfg regs */ | 66 | 0xfec00000 0xfec00000 0x300000 /* pci cfg regs */ |
64 | fef00000 fef00000 00100000>; /* pci iack */ | 67 | 0xfef00000 0xfef00000 0x100000>; /* pci iack */ |
65 | 68 | ||
66 | i2c@80003000 { | 69 | i2c@80003000 { |
67 | #address-cells = <1>; | 70 | #address-cells = <1>; |
68 | #size-cells = <0>; | 71 | #size-cells = <0>; |
69 | cell-index = <0>; | 72 | cell-index = <0>; |
70 | compatible = "fsl-i2c"; | 73 | compatible = "fsl-i2c"; |
71 | reg = <80003000 1000>; | 74 | reg = <0x80003000 0x1000>; |
72 | interrupts = <5 2>; | 75 | interrupts = <5 2>; |
73 | interrupt-parent = <&mpic>; | 76 | interrupt-parent = <&mpic>; |
74 | 77 | ||
75 | rtc@32 { | 78 | rtc@32 { |
76 | device_type = "rtc"; | 79 | device_type = "rtc"; |
77 | compatible = "ricoh,rs5c372a"; | 80 | compatible = "ricoh,rs5c372a"; |
78 | reg = <32>; | 81 | reg = <0x32>; |
79 | }; | 82 | }; |
80 | }; | 83 | }; |
81 | 84 | ||
@@ -83,9 +86,9 @@ XXXX add flash parts, rtc, ?? | |||
83 | cell-index = <0>; | 86 | cell-index = <0>; |
84 | device_type = "serial"; | 87 | device_type = "serial"; |
85 | compatible = "ns16550"; | 88 | compatible = "ns16550"; |
86 | reg = <80004500 8>; | 89 | reg = <0x80004500 0x8>; |
87 | clock-frequency = <5d08d88>; | 90 | clock-frequency = <97553800>; |
88 | current-speed = <2580>; | 91 | current-speed = <9600>; |
89 | interrupts = <9 0>; | 92 | interrupts = <9 0>; |
90 | interrupt-parent = <&mpic>; | 93 | interrupt-parent = <&mpic>; |
91 | }; | 94 | }; |
@@ -94,10 +97,10 @@ XXXX add flash parts, rtc, ?? | |||
94 | cell-index = <1>; | 97 | cell-index = <1>; |
95 | device_type = "serial"; | 98 | device_type = "serial"; |
96 | compatible = "ns16550"; | 99 | compatible = "ns16550"; |
97 | reg = <80004600 8>; | 100 | reg = <0x80004600 0x8>; |
98 | clock-frequency = <5d08d88>; | 101 | clock-frequency = <97553800>; |
99 | current-speed = <e100>; | 102 | current-speed = <57600>; |
100 | interrupts = <a 0>; | 103 | interrupts = <10 0>; |
101 | interrupt-parent = <&mpic>; | 104 | interrupt-parent = <&mpic>; |
102 | }; | 105 | }; |
103 | 106 | ||
@@ -107,7 +110,7 @@ XXXX add flash parts, rtc, ?? | |||
107 | device_type = "open-pic"; | 110 | device_type = "open-pic"; |
108 | compatible = "chrp,open-pic"; | 111 | compatible = "chrp,open-pic"; |
109 | interrupt-controller; | 112 | interrupt-controller; |
110 | reg = <80040000 40000>; | 113 | reg = <0x80040000 0x40000>; |
111 | }; | 114 | }; |
112 | 115 | ||
113 | pci0: pci@fec00000 { | 116 | pci0: pci@fec00000 { |
@@ -116,29 +119,29 @@ XXXX add flash parts, rtc, ?? | |||
116 | #interrupt-cells = <1>; | 119 | #interrupt-cells = <1>; |
117 | device_type = "pci"; | 120 | device_type = "pci"; |
118 | compatible = "mpc10x-pci"; | 121 | compatible = "mpc10x-pci"; |
119 | reg = <fec00000 400000>; | 122 | reg = <0xfec00000 0x400000>; |
120 | ranges = <01000000 0 0 fe000000 0 00c00000 | 123 | ranges = <0x1000000 0x0 0x0 0xfe000000 0x0 0xc00000 |
121 | 02000000 0 80000000 80000000 0 70000000>; | 124 | 0x2000000 0x0 0x80000000 0x80000000 0x0 0x70000000>; |
122 | bus-range = <0 ff>; | 125 | bus-range = <0 255>; |
123 | clock-frequency = <7f28155>; | 126 | clock-frequency = <133333333>; |
124 | interrupt-parent = <&mpic>; | 127 | interrupt-parent = <&mpic>; |
125 | interrupt-map-mask = <f800 0 0 7>; | 128 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
126 | interrupt-map = < | 129 | interrupt-map = < |
127 | /* IDSEL 11 - IRQ0 ETH */ | 130 | /* IDSEL 11 - IRQ0 ETH */ |
128 | 5800 0 0 1 &mpic 0 1 | 131 | 0x5800 0x0 0x0 0x1 &mpic 0x0 0x1 |
129 | 5800 0 0 2 &mpic 1 1 | 132 | 0x5800 0x0 0x0 0x2 &mpic 0x1 0x1 |
130 | 5800 0 0 3 &mpic 2 1 | 133 | 0x5800 0x0 0x0 0x3 &mpic 0x2 0x1 |
131 | 5800 0 0 4 &mpic 3 1 | 134 | 0x5800 0x0 0x0 0x4 &mpic 0x3 0x1 |
132 | /* IDSEL 12 - IRQ1 IDE0 */ | 135 | /* IDSEL 12 - IRQ1 IDE0 */ |
133 | 6000 0 0 1 &mpic 1 1 | 136 | 0x6000 0x0 0x0 0x1 &mpic 0x1 0x1 |
134 | 6000 0 0 2 &mpic 2 1 | 137 | 0x6000 0x0 0x0 0x2 &mpic 0x2 0x1 |
135 | 6000 0 0 3 &mpic 3 1 | 138 | 0x6000 0x0 0x0 0x3 &mpic 0x3 0x1 |
136 | 6000 0 0 4 &mpic 0 1 | 139 | 0x6000 0x0 0x0 0x4 &mpic 0x0 0x1 |
137 | /* IDSEL 14 - IRQ3 USB2.0 */ | 140 | /* IDSEL 14 - IRQ3 USB2.0 */ |
138 | 7000 0 0 1 &mpic 3 1 | 141 | 0x7000 0x0 0x0 0x1 &mpic 0x3 0x1 |
139 | 7000 0 0 2 &mpic 3 1 | 142 | 0x7000 0x0 0x0 0x2 &mpic 0x3 0x1 |
140 | 7000 0 0 3 &mpic 3 1 | 143 | 0x7000 0x0 0x0 0x3 &mpic 0x3 0x1 |
141 | 7000 0 0 4 &mpic 3 1 | 144 | 0x7000 0x0 0x0 0x4 &mpic 0x3 0x1 |
142 | >; | 145 | >; |
143 | }; | 146 | }; |
144 | }; | 147 | }; |
diff --git a/arch/powerpc/boot/dts/kuroboxHG.dts b/arch/powerpc/boot/dts/kuroboxHG.dts index 8443c85b7b30..e4916e69ad31 100644 --- a/arch/powerpc/boot/dts/kuroboxHG.dts +++ b/arch/powerpc/boot/dts/kuroboxHG.dts | |||
@@ -7,6 +7,7 @@ | |||
7 | * Based on sandpoint.dts | 7 | * Based on sandpoint.dts |
8 | * | 8 | * |
9 | * 2006 (c) G. Liakhovetski <g.liakhovetski@gmx.de> | 9 | * 2006 (c) G. Liakhovetski <g.liakhovetski@gmx.de> |
10 | * Copyright 2008 Freescale Semiconductor, Inc. | ||
10 | * | 11 | * |
11 | * This file is licensed under | 12 | * This file is licensed under |
12 | * the terms of the GNU General Public License version 2. This program | 13 | * the terms of the GNU General Public License version 2. This program |
@@ -17,6 +18,8 @@ XXXX add flash parts, rtc, ?? | |||
17 | 18 | ||
18 | */ | 19 | */ |
19 | 20 | ||
21 | /dts-v1/; | ||
22 | |||
20 | / { | 23 | / { |
21 | model = "KuroboxHG"; | 24 | model = "KuroboxHG"; |
22 | compatible = "linkstation"; | 25 | compatible = "linkstation"; |
@@ -35,19 +38,19 @@ XXXX add flash parts, rtc, ?? | |||
35 | 38 | ||
36 | PowerPC,603e { /* Really 8241 */ | 39 | PowerPC,603e { /* Really 8241 */ |
37 | device_type = "cpu"; | 40 | device_type = "cpu"; |
38 | reg = <0>; | 41 | reg = <0x0>; |
39 | clock-frequency = <fdad680>; /* Fixed by bootloader */ | 42 | clock-frequency = <266000000>; /* Fixed by bootloader */ |
40 | timebase-frequency = <1F04000>; /* Fixed by bootloader */ | 43 | timebase-frequency = <32522240>; /* Fixed by bootloader */ |
41 | bus-frequency = <0>; /* Fixed by bootloader */ | 44 | bus-frequency = <0>; /* Fixed by bootloader */ |
42 | /* Following required by dtc but not used */ | 45 | /* Following required by dtc but not used */ |
43 | i-cache-size = <4000>; | 46 | i-cache-size = <0x4000>; |
44 | d-cache-size = <4000>; | 47 | d-cache-size = <0x4000>; |
45 | }; | 48 | }; |
46 | }; | 49 | }; |
47 | 50 | ||
48 | memory { | 51 | memory { |
49 | device_type = "memory"; | 52 | device_type = "memory"; |
50 | reg = <00000000 08000000>; | 53 | reg = <0x0 0x8000000>; |
51 | }; | 54 | }; |
52 | 55 | ||
53 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ | 56 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ |
@@ -56,26 +59,26 @@ XXXX add flash parts, rtc, ?? | |||
56 | device_type = "soc"; | 59 | device_type = "soc"; |
57 | compatible = "mpc10x"; | 60 | compatible = "mpc10x"; |
58 | store-gathering = <0>; /* 0 == off, !0 == on */ | 61 | store-gathering = <0>; /* 0 == off, !0 == on */ |
59 | reg = <80000000 00100000>; | 62 | reg = <0x80000000 0x100000>; |
60 | ranges = <80000000 80000000 70000000 /* pci mem space */ | 63 | ranges = <0x80000000 0x80000000 0x70000000 /* pci mem space */ |
61 | fc000000 fc000000 00100000 /* EUMB */ | 64 | 0xfc000000 0xfc000000 0x100000 /* EUMB */ |
62 | fe000000 fe000000 00c00000 /* pci i/o space */ | 65 | 0xfe000000 0xfe000000 0xc00000 /* pci i/o space */ |
63 | fec00000 fec00000 00300000 /* pci cfg regs */ | 66 | 0xfec00000 0xfec00000 0x300000 /* pci cfg regs */ |
64 | fef00000 fef00000 00100000>; /* pci iack */ | 67 | 0xfef00000 0xfef00000 0x100000>; /* pci iack */ |
65 | 68 | ||
66 | i2c@80003000 { | 69 | i2c@80003000 { |
67 | #address-cells = <1>; | 70 | #address-cells = <1>; |
68 | #size-cells = <0>; | 71 | #size-cells = <0>; |
69 | cell-index = <0>; | 72 | cell-index = <0>; |
70 | compatible = "fsl-i2c"; | 73 | compatible = "fsl-i2c"; |
71 | reg = <80003000 1000>; | 74 | reg = <0x80003000 0x1000>; |
72 | interrupts = <5 2>; | 75 | interrupts = <5 2>; |
73 | interrupt-parent = <&mpic>; | 76 | interrupt-parent = <&mpic>; |
74 | 77 | ||
75 | rtc@32 { | 78 | rtc@32 { |
76 | device_type = "rtc"; | 79 | device_type = "rtc"; |
77 | compatible = "ricoh,rs5c372a"; | 80 | compatible = "ricoh,rs5c372a"; |
78 | reg = <32>; | 81 | reg = <0x32>; |
79 | }; | 82 | }; |
80 | }; | 83 | }; |
81 | 84 | ||
@@ -83,9 +86,9 @@ XXXX add flash parts, rtc, ?? | |||
83 | cell-index = <0>; | 86 | cell-index = <0>; |
84 | device_type = "serial"; | 87 | device_type = "serial"; |
85 | compatible = "ns16550"; | 88 | compatible = "ns16550"; |
86 | reg = <80004500 8>; | 89 | reg = <0x80004500 0x8>; |
87 | clock-frequency = <7c044a8>; | 90 | clock-frequency = <130041000>; |
88 | current-speed = <2580>; | 91 | current-speed = <9600>; |
89 | interrupts = <9 0>; | 92 | interrupts = <9 0>; |
90 | interrupt-parent = <&mpic>; | 93 | interrupt-parent = <&mpic>; |
91 | }; | 94 | }; |
@@ -94,10 +97,10 @@ XXXX add flash parts, rtc, ?? | |||
94 | cell-index = <1>; | 97 | cell-index = <1>; |
95 | device_type = "serial"; | 98 | device_type = "serial"; |
96 | compatible = "ns16550"; | 99 | compatible = "ns16550"; |
97 | reg = <80004600 8>; | 100 | reg = <0x80004600 0x8>; |
98 | clock-frequency = <7c044a8>; | 101 | clock-frequency = <130041000>; |
99 | current-speed = <e100>; | 102 | current-speed = <57600>; |
100 | interrupts = <a 0>; | 103 | interrupts = <10 0>; |
101 | interrupt-parent = <&mpic>; | 104 | interrupt-parent = <&mpic>; |
102 | }; | 105 | }; |
103 | 106 | ||
@@ -107,7 +110,7 @@ XXXX add flash parts, rtc, ?? | |||
107 | device_type = "open-pic"; | 110 | device_type = "open-pic"; |
108 | compatible = "chrp,open-pic"; | 111 | compatible = "chrp,open-pic"; |
109 | interrupt-controller; | 112 | interrupt-controller; |
110 | reg = <80040000 40000>; | 113 | reg = <0x80040000 0x40000>; |
111 | }; | 114 | }; |
112 | 115 | ||
113 | pci0: pci@fec00000 { | 116 | pci0: pci@fec00000 { |
@@ -116,29 +119,29 @@ XXXX add flash parts, rtc, ?? | |||
116 | #interrupt-cells = <1>; | 119 | #interrupt-cells = <1>; |
117 | device_type = "pci"; | 120 | device_type = "pci"; |
118 | compatible = "mpc10x-pci"; | 121 | compatible = "mpc10x-pci"; |
119 | reg = <fec00000 400000>; | 122 | reg = <0xfec00000 0x400000>; |
120 | ranges = <01000000 0 0 fe000000 0 00c00000 | 123 | ranges = <0x1000000 0x0 0x0 0xfe000000 0x0 0xc00000 |
121 | 02000000 0 80000000 80000000 0 70000000>; | 124 | 0x2000000 0x0 0x80000000 0x80000000 0x0 0x70000000>; |
122 | bus-range = <0 ff>; | 125 | bus-range = <0 255>; |
123 | clock-frequency = <7f28155>; | 126 | clock-frequency = <133333333>; |
124 | interrupt-parent = <&mpic>; | 127 | interrupt-parent = <&mpic>; |
125 | interrupt-map-mask = <f800 0 0 7>; | 128 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
126 | interrupt-map = < | 129 | interrupt-map = < |
127 | /* IDSEL 11 - IRQ0 ETH */ | 130 | /* IDSEL 11 - IRQ0 ETH */ |
128 | 5800 0 0 1 &mpic 0 1 | 131 | 0x5800 0x0 0x0 0x1 &mpic 0x0 0x1 |
129 | 5800 0 0 2 &mpic 1 1 | 132 | 0x5800 0x0 0x0 0x2 &mpic 0x1 0x1 |
130 | 5800 0 0 3 &mpic 2 1 | 133 | 0x5800 0x0 0x0 0x3 &mpic 0x2 0x1 |
131 | 5800 0 0 4 &mpic 3 1 | 134 | 0x5800 0x0 0x0 0x4 &mpic 0x3 0x1 |
132 | /* IDSEL 12 - IRQ1 IDE0 */ | 135 | /* IDSEL 12 - IRQ1 IDE0 */ |
133 | 6000 0 0 1 &mpic 1 1 | 136 | 0x6000 0x0 0x0 0x1 &mpic 0x1 0x1 |
134 | 6000 0 0 2 &mpic 2 1 | 137 | 0x6000 0x0 0x0 0x2 &mpic 0x2 0x1 |
135 | 6000 0 0 3 &mpic 3 1 | 138 | 0x6000 0x0 0x0 0x3 &mpic 0x3 0x1 |
136 | 6000 0 0 4 &mpic 0 1 | 139 | 0x6000 0x0 0x0 0x4 &mpic 0x0 0x1 |
137 | /* IDSEL 14 - IRQ3 USB2.0 */ | 140 | /* IDSEL 14 - IRQ3 USB2.0 */ |
138 | 7000 0 0 1 &mpic 3 1 | 141 | 0x7000 0x0 0x0 0x1 &mpic 0x3 0x1 |
139 | 7000 0 0 2 &mpic 3 1 | 142 | 0x7000 0x0 0x0 0x2 &mpic 0x3 0x1 |
140 | 7000 0 0 3 &mpic 3 1 | 143 | 0x7000 0x0 0x0 0x3 &mpic 0x3 0x1 |
141 | 7000 0 0 4 &mpic 3 1 | 144 | 0x7000 0x0 0x0 0x4 &mpic 0x3 0x1 |
142 | >; | 145 | >; |
143 | }; | 146 | }; |
144 | }; | 147 | }; |
diff --git a/arch/powerpc/boot/dts/makalu.dts b/arch/powerpc/boot/dts/makalu.dts index 710c01168179..84cc5e72ddd8 100644 --- a/arch/powerpc/boot/dts/makalu.dts +++ b/arch/powerpc/boot/dts/makalu.dts | |||
@@ -219,7 +219,7 @@ | |||
219 | mal-tx-channel = <0>; | 219 | mal-tx-channel = <0>; |
220 | mal-rx-channel = <0>; | 220 | mal-rx-channel = <0>; |
221 | cell-index = <0>; | 221 | cell-index = <0>; |
222 | max-frame-size = <5dc>; | 222 | max-frame-size = <2328>; |
223 | rx-fifo-size = <1000>; | 223 | rx-fifo-size = <1000>; |
224 | tx-fifo-size = <800>; | 224 | tx-fifo-size = <800>; |
225 | phy-mode = "rgmii"; | 225 | phy-mode = "rgmii"; |
@@ -247,7 +247,7 @@ | |||
247 | mal-tx-channel = <1>; | 247 | mal-tx-channel = <1>; |
248 | mal-rx-channel = <1>; | 248 | mal-rx-channel = <1>; |
249 | cell-index = <1>; | 249 | cell-index = <1>; |
250 | max-frame-size = <5dc>; | 250 | max-frame-size = <2328>; |
251 | rx-fifo-size = <1000>; | 251 | rx-fifo-size = <1000>; |
252 | tx-fifo-size = <800>; | 252 | tx-fifo-size = <800>; |
253 | phy-mode = "rgmii"; | 253 | phy-mode = "rgmii"; |
diff --git a/arch/powerpc/boot/dts/mpc7448hpc2.dts b/arch/powerpc/boot/dts/mpc7448hpc2.dts index 8fb542387436..4936349b87cd 100644 --- a/arch/powerpc/boot/dts/mpc7448hpc2.dts +++ b/arch/powerpc/boot/dts/mpc7448hpc2.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC7448HPC2 (Taiga) board Device Tree Source | 2 | * MPC7448HPC2 (Taiga) board Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 Freescale Semiconductor Inc. | 4 | * Copyright 2006, 2008 Freescale Semiconductor Inc. |
5 | * 2006 Roy Zang <Roy Zang at freescale.com>. | 5 | * 2006 Roy Zang <Roy Zang at freescale.com>. |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify it | 7 | * This program is free software; you can redistribute it and/or modify it |
@@ -10,6 +10,7 @@ | |||
10 | * option) any later version. | 10 | * option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | /dts-v1/; | ||
13 | 14 | ||
14 | / { | 15 | / { |
15 | model = "mpc7448hpc2"; | 16 | model = "mpc7448hpc2"; |
@@ -23,11 +24,11 @@ | |||
23 | 24 | ||
24 | PowerPC,7448@0 { | 25 | PowerPC,7448@0 { |
25 | device_type = "cpu"; | 26 | device_type = "cpu"; |
26 | reg = <0>; | 27 | reg = <0x0>; |
27 | d-cache-line-size = <20>; // 32 bytes | 28 | d-cache-line-size = <32>; // 32 bytes |
28 | i-cache-line-size = <20>; // 32 bytes | 29 | i-cache-line-size = <32>; // 32 bytes |
29 | d-cache-size = <8000>; // L1, 32K bytes | 30 | d-cache-size = <0x8000>; // L1, 32K bytes |
30 | i-cache-size = <8000>; // L1, 32K bytes | 31 | i-cache-size = <0x8000>; // L1, 32K bytes |
31 | timebase-frequency = <0>; // 33 MHz, from uboot | 32 | timebase-frequency = <0>; // 33 MHz, from uboot |
32 | clock-frequency = <0>; // From U-Boot | 33 | clock-frequency = <0>; // From U-Boot |
33 | bus-frequency = <0>; // From U-Boot | 34 | bus-frequency = <0>; // From U-Boot |
@@ -36,7 +37,7 @@ | |||
36 | 37 | ||
37 | memory { | 38 | memory { |
38 | device_type = "memory"; | 39 | device_type = "memory"; |
39 | reg = <00000000 20000000 // DDR2 512M at 0 | 40 | reg = <0x0 0x20000000 // DDR2 512M at 0 |
40 | >; | 41 | >; |
41 | }; | 42 | }; |
42 | 43 | ||
@@ -44,14 +45,14 @@ | |||
44 | #address-cells = <1>; | 45 | #address-cells = <1>; |
45 | #size-cells = <1>; | 46 | #size-cells = <1>; |
46 | device_type = "tsi-bridge"; | 47 | device_type = "tsi-bridge"; |
47 | ranges = <00000000 c0000000 00010000>; | 48 | ranges = <0x0 0xc0000000 0x10000>; |
48 | reg = <c0000000 00010000>; | 49 | reg = <0xc0000000 0x10000>; |
49 | bus-frequency = <0>; | 50 | bus-frequency = <0>; |
50 | 51 | ||
51 | i2c@7000 { | 52 | i2c@7000 { |
52 | interrupt-parent = <&mpic>; | 53 | interrupt-parent = <&mpic>; |
53 | interrupts = <E 0>; | 54 | interrupts = <14 0>; |
54 | reg = <7000 400>; | 55 | reg = <0x7000 0x400>; |
55 | device_type = "i2c"; | 56 | device_type = "i2c"; |
56 | compatible = "tsi108-i2c"; | 57 | compatible = "tsi108-i2c"; |
57 | }; | 58 | }; |
@@ -59,20 +60,20 @@ | |||
59 | MDIO: mdio@6000 { | 60 | MDIO: mdio@6000 { |
60 | device_type = "mdio"; | 61 | device_type = "mdio"; |
61 | compatible = "tsi108-mdio"; | 62 | compatible = "tsi108-mdio"; |
62 | reg = <6000 50>; | 63 | reg = <0x6000 0x50>; |
63 | #address-cells = <1>; | 64 | #address-cells = <1>; |
64 | #size-cells = <0>; | 65 | #size-cells = <0>; |
65 | 66 | ||
66 | phy8: ethernet-phy@8 { | 67 | phy8: ethernet-phy@8 { |
67 | interrupt-parent = <&mpic>; | 68 | interrupt-parent = <&mpic>; |
68 | interrupts = <2 1>; | 69 | interrupts = <2 1>; |
69 | reg = <8>; | 70 | reg = <0x8>; |
70 | }; | 71 | }; |
71 | 72 | ||
72 | phy9: ethernet-phy@9 { | 73 | phy9: ethernet-phy@9 { |
73 | interrupt-parent = <&mpic>; | 74 | interrupt-parent = <&mpic>; |
74 | interrupts = <2 1>; | 75 | interrupts = <2 1>; |
75 | reg = <9>; | 76 | reg = <0x9>; |
76 | }; | 77 | }; |
77 | 78 | ||
78 | }; | 79 | }; |
@@ -82,9 +83,9 @@ | |||
82 | #size-cells = <0>; | 83 | #size-cells = <0>; |
83 | device_type = "network"; | 84 | device_type = "network"; |
84 | compatible = "tsi108-ethernet"; | 85 | compatible = "tsi108-ethernet"; |
85 | reg = <6000 200>; | 86 | reg = <0x6000 0x200>; |
86 | address = [ 00 06 D2 00 00 01 ]; | 87 | address = [ 00 06 D2 00 00 01 ]; |
87 | interrupts = <10 2>; | 88 | interrupts = <16 2>; |
88 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
89 | mdio-handle = <&MDIO>; | 90 | mdio-handle = <&MDIO>; |
90 | phy-handle = <&phy8>; | 91 | phy-handle = <&phy8>; |
@@ -96,9 +97,9 @@ | |||
96 | #size-cells = <0>; | 97 | #size-cells = <0>; |
97 | device_type = "network"; | 98 | device_type = "network"; |
98 | compatible = "tsi108-ethernet"; | 99 | compatible = "tsi108-ethernet"; |
99 | reg = <6400 200>; | 100 | reg = <0x6400 0x200>; |
100 | address = [ 00 06 D2 00 00 02 ]; | 101 | address = [ 00 06 D2 00 00 02 ]; |
101 | interrupts = <11 2>; | 102 | interrupts = <17 2>; |
102 | interrupt-parent = <&mpic>; | 103 | interrupt-parent = <&mpic>; |
103 | mdio-handle = <&MDIO>; | 104 | mdio-handle = <&MDIO>; |
104 | phy-handle = <&phy9>; | 105 | phy-handle = <&phy9>; |
@@ -107,18 +108,18 @@ | |||
107 | serial@7808 { | 108 | serial@7808 { |
108 | device_type = "serial"; | 109 | device_type = "serial"; |
109 | compatible = "ns16550"; | 110 | compatible = "ns16550"; |
110 | reg = <7808 200>; | 111 | reg = <0x7808 0x200>; |
111 | clock-frequency = <3f6b5a00>; | 112 | clock-frequency = <1064000000>; |
112 | interrupts = <c 0>; | 113 | interrupts = <12 0>; |
113 | interrupt-parent = <&mpic>; | 114 | interrupt-parent = <&mpic>; |
114 | }; | 115 | }; |
115 | 116 | ||
116 | serial@7c08 { | 117 | serial@7c08 { |
117 | device_type = "serial"; | 118 | device_type = "serial"; |
118 | compatible = "ns16550"; | 119 | compatible = "ns16550"; |
119 | reg = <7c08 200>; | 120 | reg = <0x7c08 0x200>; |
120 | clock-frequency = <3f6b5a00>; | 121 | clock-frequency = <1064000000>; |
121 | interrupts = <d 0>; | 122 | interrupts = <13 0>; |
122 | interrupt-parent = <&mpic>; | 123 | interrupt-parent = <&mpic>; |
123 | }; | 124 | }; |
124 | 125 | ||
@@ -127,7 +128,7 @@ | |||
127 | interrupt-controller; | 128 | interrupt-controller; |
128 | #address-cells = <0>; | 129 | #address-cells = <0>; |
129 | #interrupt-cells = <2>; | 130 | #interrupt-cells = <2>; |
130 | reg = <7400 400>; | 131 | reg = <0x7400 0x400>; |
131 | compatible = "chrp,open-pic"; | 132 | compatible = "chrp,open-pic"; |
132 | device_type = "open-pic"; | 133 | device_type = "open-pic"; |
133 | big-endian; | 134 | big-endian; |
@@ -138,39 +139,39 @@ | |||
138 | #interrupt-cells = <1>; | 139 | #interrupt-cells = <1>; |
139 | #size-cells = <2>; | 140 | #size-cells = <2>; |
140 | #address-cells = <3>; | 141 | #address-cells = <3>; |
141 | reg = <1000 1000>; | 142 | reg = <0x1000 0x1000>; |
142 | bus-range = <0 0>; | 143 | bus-range = <0 0>; |
143 | ranges = <02000000 0 e0000000 e0000000 0 1A000000 | 144 | ranges = <0x2000000 0x0 0xe0000000 0xe0000000 0x0 0x1a000000 |
144 | 01000000 0 00000000 fa000000 0 00010000>; | 145 | 0x1000000 0x0 0x0 0xfa000000 0x0 0x10000>; |
145 | clock-frequency = <7f28154>; | 146 | clock-frequency = <133333332>; |
146 | interrupt-parent = <&mpic>; | 147 | interrupt-parent = <&mpic>; |
147 | interrupts = <17 2>; | 148 | interrupts = <23 2>; |
148 | interrupt-map-mask = <f800 0 0 7>; | 149 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
149 | interrupt-map = < | 150 | interrupt-map = < |
150 | 151 | ||
151 | /* IDSEL 0x11 */ | 152 | /* IDSEL 0x11 */ |
152 | 0800 0 0 1 &RT0 24 0 | 153 | 0x800 0x0 0x0 0x1 &RT0 0x24 0x0 |
153 | 0800 0 0 2 &RT0 25 0 | 154 | 0x800 0x0 0x0 0x2 &RT0 0x25 0x0 |
154 | 0800 0 0 3 &RT0 26 0 | 155 | 0x800 0x0 0x0 0x3 &RT0 0x26 0x0 |
155 | 0800 0 0 4 &RT0 27 0 | 156 | 0x800 0x0 0x0 0x4 &RT0 0x27 0x0 |
156 | 157 | ||
157 | /* IDSEL 0x12 */ | 158 | /* IDSEL 0x12 */ |
158 | 1000 0 0 1 &RT0 25 0 | 159 | 0x1000 0x0 0x0 0x1 &RT0 0x25 0x0 |
159 | 1000 0 0 2 &RT0 26 0 | 160 | 0x1000 0x0 0x0 0x2 &RT0 0x26 0x0 |
160 | 1000 0 0 3 &RT0 27 0 | 161 | 0x1000 0x0 0x0 0x3 &RT0 0x27 0x0 |
161 | 1000 0 0 4 &RT0 24 0 | 162 | 0x1000 0x0 0x0 0x4 &RT0 0x24 0x0 |
162 | 163 | ||
163 | /* IDSEL 0x13 */ | 164 | /* IDSEL 0x13 */ |
164 | 1800 0 0 1 &RT0 26 0 | 165 | 0x1800 0x0 0x0 0x1 &RT0 0x26 0x0 |
165 | 1800 0 0 2 &RT0 27 0 | 166 | 0x1800 0x0 0x0 0x2 &RT0 0x27 0x0 |
166 | 1800 0 0 3 &RT0 24 0 | 167 | 0x1800 0x0 0x0 0x3 &RT0 0x24 0x0 |
167 | 1800 0 0 4 &RT0 25 0 | 168 | 0x1800 0x0 0x0 0x4 &RT0 0x25 0x0 |
168 | 169 | ||
169 | /* IDSEL 0x14 */ | 170 | /* IDSEL 0x14 */ |
170 | 2000 0 0 1 &RT0 27 0 | 171 | 0x2000 0x0 0x0 0x1 &RT0 0x27 0x0 |
171 | 2000 0 0 2 &RT0 24 0 | 172 | 0x2000 0x0 0x0 0x2 &RT0 0x24 0x0 |
172 | 2000 0 0 3 &RT0 25 0 | 173 | 0x2000 0x0 0x0 0x3 &RT0 0x25 0x0 |
173 | 2000 0 0 4 &RT0 26 0 | 174 | 0x2000 0x0 0x0 0x4 &RT0 0x26 0x0 |
174 | >; | 175 | >; |
175 | 176 | ||
176 | RT0: router@1180 { | 177 | RT0: router@1180 { |
@@ -180,7 +181,7 @@ | |||
180 | #address-cells = <0>; | 181 | #address-cells = <0>; |
181 | #interrupt-cells = <2>; | 182 | #interrupt-cells = <2>; |
182 | big-endian; | 183 | big-endian; |
183 | interrupts = <17 2>; | 184 | interrupts = <23 2>; |
184 | interrupt-parent = <&mpic>; | 185 | interrupt-parent = <&mpic>; |
185 | }; | 186 | }; |
186 | }; | 187 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts index 7285ca1325fd..46e2da30c3dd 100644 --- a/arch/powerpc/boot/dts/mpc8272ads.dts +++ b/arch/powerpc/boot/dts/mpc8272ads.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8272 ADS Device Tree Source | 2 | * MPC8272 ADS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2005 Freescale Semiconductor Inc. | 4 | * Copyright 2005,2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,8 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
13 | |||
12 | / { | 14 | / { |
13 | model = "MPC8272ADS"; | 15 | model = "MPC8272ADS"; |
14 | compatible = "fsl,mpc8272ads"; | 16 | compatible = "fsl,mpc8272ads"; |
@@ -21,11 +23,11 @@ | |||
21 | 23 | ||
22 | PowerPC,8272@0 { | 24 | PowerPC,8272@0 { |
23 | device_type = "cpu"; | 25 | device_type = "cpu"; |
24 | reg = <0>; | 26 | reg = <0x0>; |
25 | d-cache-line-size = <d#32>; | 27 | d-cache-line-size = <32>; |
26 | i-cache-line-size = <d#32>; | 28 | i-cache-line-size = <32>; |
27 | d-cache-size = <d#16384>; | 29 | d-cache-size = <16384>; |
28 | i-cache-size = <d#16384>; | 30 | i-cache-size = <16384>; |
29 | timebase-frequency = <0>; | 31 | timebase-frequency = <0>; |
30 | bus-frequency = <0>; | 32 | bus-frequency = <0>; |
31 | clock-frequency = <0>; | 33 | clock-frequency = <0>; |
@@ -34,7 +36,7 @@ | |||
34 | 36 | ||
35 | memory { | 37 | memory { |
36 | device_type = "memory"; | 38 | device_type = "memory"; |
37 | reg = <0 0>; | 39 | reg = <0x0 0x0>; |
38 | }; | 40 | }; |
39 | 41 | ||
40 | localbus@f0010100 { | 42 | localbus@f0010100 { |
@@ -42,21 +44,21 @@ | |||
42 | "fsl,pq2-localbus"; | 44 | "fsl,pq2-localbus"; |
43 | #address-cells = <2>; | 45 | #address-cells = <2>; |
44 | #size-cells = <1>; | 46 | #size-cells = <1>; |
45 | reg = <f0010100 40>; | 47 | reg = <0xf0010100 0x40>; |
46 | 48 | ||
47 | ranges = <0 0 fe000000 02000000 | 49 | ranges = <0x0 0x0 0xfe000000 0x2000000 |
48 | 1 0 f4500000 00008000 | 50 | 0x1 0x0 0xf4500000 0x8000 |
49 | 3 0 f8200000 00008000>; | 51 | 0x3 0x0 0xf8200000 0x8000>; |
50 | 52 | ||
51 | flash@0,0 { | 53 | flash@0,0 { |
52 | compatible = "jedec-flash"; | 54 | compatible = "jedec-flash"; |
53 | reg = <0 0 2000000>; | 55 | reg = <0x0 0x0 0x2000000>; |
54 | bank-width = <4>; | 56 | bank-width = <4>; |
55 | device-width = <1>; | 57 | device-width = <1>; |
56 | }; | 58 | }; |
57 | 59 | ||
58 | board-control@1,0 { | 60 | board-control@1,0 { |
59 | reg = <1 0 20>; | 61 | reg = <0x1 0x0 0x20>; |
60 | compatible = "fsl,mpc8272ads-bcsr"; | 62 | compatible = "fsl,mpc8272ads-bcsr"; |
61 | }; | 63 | }; |
62 | 64 | ||
@@ -65,46 +67,46 @@ | |||
65 | "fsl,pq2ads-pci-pic"; | 67 | "fsl,pq2ads-pci-pic"; |
66 | #interrupt-cells = <1>; | 68 | #interrupt-cells = <1>; |
67 | interrupt-controller; | 69 | interrupt-controller; |
68 | reg = <3 0 8>; | 70 | reg = <0x3 0x0 0x8>; |
69 | interrupt-parent = <&PIC>; | 71 | interrupt-parent = <&PIC>; |
70 | interrupts = <14 8>; | 72 | interrupts = <20 8>; |
71 | }; | 73 | }; |
72 | }; | 74 | }; |
73 | 75 | ||
74 | 76 | ||
75 | pci@f0010800 { | 77 | pci@f0010800 { |
76 | device_type = "pci"; | 78 | device_type = "pci"; |
77 | reg = <f0010800 10c f00101ac 8 f00101c4 8>; | 79 | reg = <0xf0010800 0x10c 0xf00101ac 0x8 0xf00101c4 0x8>; |
78 | compatible = "fsl,mpc8272-pci", "fsl,pq2-pci"; | 80 | compatible = "fsl,mpc8272-pci", "fsl,pq2-pci"; |
79 | #interrupt-cells = <1>; | 81 | #interrupt-cells = <1>; |
80 | #size-cells = <2>; | 82 | #size-cells = <2>; |
81 | #address-cells = <3>; | 83 | #address-cells = <3>; |
82 | clock-frequency = <d#66666666>; | 84 | clock-frequency = <66666666>; |
83 | interrupt-map-mask = <f800 0 0 7>; | 85 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
84 | interrupt-map = < | 86 | interrupt-map = < |
85 | /* IDSEL 0x16 */ | 87 | /* IDSEL 0x16 */ |
86 | b000 0 0 1 &PCI_PIC 0 | 88 | 0xb000 0x0 0x0 0x1 &PCI_PIC 0 |
87 | b000 0 0 2 &PCI_PIC 1 | 89 | 0xb000 0x0 0x0 0x2 &PCI_PIC 1 |
88 | b000 0 0 3 &PCI_PIC 2 | 90 | 0xb000 0x0 0x0 0x3 &PCI_PIC 2 |
89 | b000 0 0 4 &PCI_PIC 3 | 91 | 0xb000 0x0 0x0 0x4 &PCI_PIC 3 |
90 | 92 | ||
91 | /* IDSEL 0x17 */ | 93 | /* IDSEL 0x17 */ |
92 | b800 0 0 1 &PCI_PIC 4 | 94 | 0xb800 0x0 0x0 0x1 &PCI_PIC 4 |
93 | b800 0 0 2 &PCI_PIC 5 | 95 | 0xb800 0x0 0x0 0x2 &PCI_PIC 5 |
94 | b800 0 0 3 &PCI_PIC 6 | 96 | 0xb800 0x0 0x0 0x3 &PCI_PIC 6 |
95 | b800 0 0 4 &PCI_PIC 7 | 97 | 0xb800 0x0 0x0 0x4 &PCI_PIC 7 |
96 | 98 | ||
97 | /* IDSEL 0x18 */ | 99 | /* IDSEL 0x18 */ |
98 | c000 0 0 1 &PCI_PIC 8 | 100 | 0xc000 0x0 0x0 0x1 &PCI_PIC 8 |
99 | c000 0 0 2 &PCI_PIC 9 | 101 | 0xc000 0x0 0x0 0x2 &PCI_PIC 9 |
100 | c000 0 0 3 &PCI_PIC a | 102 | 0xc000 0x0 0x0 0x3 &PCI_PIC 10 |
101 | c000 0 0 4 &PCI_PIC b>; | 103 | 0xc000 0x0 0x0 0x4 &PCI_PIC 11>; |
102 | 104 | ||
103 | interrupt-parent = <&PIC>; | 105 | interrupt-parent = <&PIC>; |
104 | interrupts = <12 8>; | 106 | interrupts = <18 8>; |
105 | ranges = <42000000 0 80000000 80000000 0 20000000 | 107 | ranges = <0x42000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
106 | 02000000 0 a0000000 a0000000 0 20000000 | 108 | 0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 |
107 | 01000000 0 00000000 f6000000 0 02000000>; | 109 | 0x1000000 0x0 0x0 0xf6000000 0x0 0x2000000>; |
108 | }; | 110 | }; |
109 | 111 | ||
110 | soc@f0000000 { | 112 | soc@f0000000 { |
@@ -112,26 +114,26 @@ | |||
112 | #size-cells = <1>; | 114 | #size-cells = <1>; |
113 | device_type = "soc"; | 115 | device_type = "soc"; |
114 | compatible = "fsl,mpc8272", "fsl,pq2-soc"; | 116 | compatible = "fsl,mpc8272", "fsl,pq2-soc"; |
115 | ranges = <00000000 f0000000 00053000>; | 117 | ranges = <0x0 0xf0000000 0x53000>; |
116 | 118 | ||
117 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). | 119 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). |
118 | reg = <f0000000 00053000>; | 120 | reg = <0xf0000000 0x53000>; |
119 | 121 | ||
120 | cpm@119c0 { | 122 | cpm@119c0 { |
121 | #address-cells = <1>; | 123 | #address-cells = <1>; |
122 | #size-cells = <1>; | 124 | #size-cells = <1>; |
123 | compatible = "fsl,mpc8272-cpm", "fsl,cpm2"; | 125 | compatible = "fsl,mpc8272-cpm", "fsl,cpm2"; |
124 | reg = <119c0 30>; | 126 | reg = <0x119c0 0x30>; |
125 | ranges; | 127 | ranges; |
126 | 128 | ||
127 | muram@0 { | 129 | muram@0 { |
128 | #address-cells = <1>; | 130 | #address-cells = <1>; |
129 | #size-cells = <1>; | 131 | #size-cells = <1>; |
130 | ranges = <0 0 10000>; | 132 | ranges = <0x0 0x0 0x10000>; |
131 | 133 | ||
132 | data@0 { | 134 | data@0 { |
133 | compatible = "fsl,cpm-muram-data"; | 135 | compatible = "fsl,cpm-muram-data"; |
134 | reg = <0 2000 9800 800>; | 136 | reg = <0x0 0x2000 0x9800 0x800>; |
135 | }; | 137 | }; |
136 | }; | 138 | }; |
137 | 139 | ||
@@ -139,29 +141,29 @@ | |||
139 | compatible = "fsl,mpc8272-brg", | 141 | compatible = "fsl,mpc8272-brg", |
140 | "fsl,cpm2-brg", | 142 | "fsl,cpm2-brg", |
141 | "fsl,cpm-brg"; | 143 | "fsl,cpm-brg"; |
142 | reg = <119f0 10 115f0 10>; | 144 | reg = <0x119f0 0x10 0x115f0 0x10>; |
143 | }; | 145 | }; |
144 | 146 | ||
145 | serial@11a00 { | 147 | serial@11a00 { |
146 | device_type = "serial"; | 148 | device_type = "serial"; |
147 | compatible = "fsl,mpc8272-scc-uart", | 149 | compatible = "fsl,mpc8272-scc-uart", |
148 | "fsl,cpm2-scc-uart"; | 150 | "fsl,cpm2-scc-uart"; |
149 | reg = <11a00 20 8000 100>; | 151 | reg = <0x11a00 0x20 0x8000 0x100>; |
150 | interrupts = <28 8>; | 152 | interrupts = <40 8>; |
151 | interrupt-parent = <&PIC>; | 153 | interrupt-parent = <&PIC>; |
152 | fsl,cpm-brg = <1>; | 154 | fsl,cpm-brg = <1>; |
153 | fsl,cpm-command = <00800000>; | 155 | fsl,cpm-command = <0x800000>; |
154 | }; | 156 | }; |
155 | 157 | ||
156 | serial@11a60 { | 158 | serial@11a60 { |
157 | device_type = "serial"; | 159 | device_type = "serial"; |
158 | compatible = "fsl,mpc8272-scc-uart", | 160 | compatible = "fsl,mpc8272-scc-uart", |
159 | "fsl,cpm2-scc-uart"; | 161 | "fsl,cpm2-scc-uart"; |
160 | reg = <11a60 20 8300 100>; | 162 | reg = <0x11a60 0x20 0x8300 0x100>; |
161 | interrupts = <2b 8>; | 163 | interrupts = <43 8>; |
162 | interrupt-parent = <&PIC>; | 164 | interrupt-parent = <&PIC>; |
163 | fsl,cpm-brg = <4>; | 165 | fsl,cpm-brg = <4>; |
164 | fsl,cpm-command = <0ce00000>; | 166 | fsl,cpm-command = <0xce00000>; |
165 | }; | 167 | }; |
166 | 168 | ||
167 | mdio@10d40 { | 169 | mdio@10d40 { |
@@ -169,23 +171,23 @@ | |||
169 | compatible = "fsl,mpc8272ads-mdio-bitbang", | 171 | compatible = "fsl,mpc8272ads-mdio-bitbang", |
170 | "fsl,mpc8272-mdio-bitbang", | 172 | "fsl,mpc8272-mdio-bitbang", |
171 | "fsl,cpm2-mdio-bitbang"; | 173 | "fsl,cpm2-mdio-bitbang"; |
172 | reg = <10d40 14>; | 174 | reg = <0x10d40 0x14>; |
173 | #address-cells = <1>; | 175 | #address-cells = <1>; |
174 | #size-cells = <0>; | 176 | #size-cells = <0>; |
175 | fsl,mdio-pin = <12>; | 177 | fsl,mdio-pin = <18>; |
176 | fsl,mdc-pin = <13>; | 178 | fsl,mdc-pin = <19>; |
177 | 179 | ||
178 | PHY0: ethernet-phy@0 { | 180 | PHY0: ethernet-phy@0 { |
179 | interrupt-parent = <&PIC>; | 181 | interrupt-parent = <&PIC>; |
180 | interrupts = <17 8>; | 182 | interrupts = <23 8>; |
181 | reg = <0>; | 183 | reg = <0x0>; |
182 | device_type = "ethernet-phy"; | 184 | device_type = "ethernet-phy"; |
183 | }; | 185 | }; |
184 | 186 | ||
185 | PHY1: ethernet-phy@1 { | 187 | PHY1: ethernet-phy@1 { |
186 | interrupt-parent = <&PIC>; | 188 | interrupt-parent = <&PIC>; |
187 | interrupts = <17 8>; | 189 | interrupts = <23 8>; |
188 | reg = <3>; | 190 | reg = <0x3>; |
189 | device_type = "ethernet-phy"; | 191 | device_type = "ethernet-phy"; |
190 | }; | 192 | }; |
191 | }; | 193 | }; |
@@ -194,33 +196,33 @@ | |||
194 | device_type = "network"; | 196 | device_type = "network"; |
195 | compatible = "fsl,mpc8272-fcc-enet", | 197 | compatible = "fsl,mpc8272-fcc-enet", |
196 | "fsl,cpm2-fcc-enet"; | 198 | "fsl,cpm2-fcc-enet"; |
197 | reg = <11300 20 8400 100 11390 1>; | 199 | reg = <0x11300 0x20 0x8400 0x100 0x11390 0x1>; |
198 | local-mac-address = [ 00 00 00 00 00 00 ]; | 200 | local-mac-address = [ 00 00 00 00 00 00 ]; |
199 | interrupts = <20 8>; | 201 | interrupts = <32 8>; |
200 | interrupt-parent = <&PIC>; | 202 | interrupt-parent = <&PIC>; |
201 | phy-handle = <&PHY0>; | 203 | phy-handle = <&PHY0>; |
202 | linux,network-index = <0>; | 204 | linux,network-index = <0>; |
203 | fsl,cpm-command = <12000300>; | 205 | fsl,cpm-command = <0x12000300>; |
204 | }; | 206 | }; |
205 | 207 | ||
206 | ethernet@11320 { | 208 | ethernet@11320 { |
207 | device_type = "network"; | 209 | device_type = "network"; |
208 | compatible = "fsl,mpc8272-fcc-enet", | 210 | compatible = "fsl,mpc8272-fcc-enet", |
209 | "fsl,cpm2-fcc-enet"; | 211 | "fsl,cpm2-fcc-enet"; |
210 | reg = <11320 20 8500 100 113b0 1>; | 212 | reg = <0x11320 0x20 0x8500 0x100 0x113b0 0x1>; |
211 | local-mac-address = [ 00 00 00 00 00 00 ]; | 213 | local-mac-address = [ 00 00 00 00 00 00 ]; |
212 | interrupts = <21 8>; | 214 | interrupts = <33 8>; |
213 | interrupt-parent = <&PIC>; | 215 | interrupt-parent = <&PIC>; |
214 | phy-handle = <&PHY1>; | 216 | phy-handle = <&PHY1>; |
215 | linux,network-index = <1>; | 217 | linux,network-index = <1>; |
216 | fsl,cpm-command = <16200300>; | 218 | fsl,cpm-command = <0x16200300>; |
217 | }; | 219 | }; |
218 | }; | 220 | }; |
219 | 221 | ||
220 | PIC: interrupt-controller@10c00 { | 222 | PIC: interrupt-controller@10c00 { |
221 | #interrupt-cells = <2>; | 223 | #interrupt-cells = <2>; |
222 | interrupt-controller; | 224 | interrupt-controller; |
223 | reg = <10c00 80>; | 225 | reg = <0x10c00 0x80>; |
224 | compatible = "fsl,mpc8272-pic", "fsl,cpm2-pic"; | 226 | compatible = "fsl,mpc8272-pic", "fsl,cpm2-pic"; |
225 | }; | 227 | }; |
226 | 228 | ||
@@ -232,14 +234,14 @@ | |||
232 | "fsl,talitos-sec2", | 234 | "fsl,talitos-sec2", |
233 | "fsl,talitos", | 235 | "fsl,talitos", |
234 | "talitos"; | 236 | "talitos"; |
235 | reg = <30000 10000>; | 237 | reg = <0x30000 0x10000>; |
236 | interrupts = <b 8>; | 238 | interrupts = <11 8>; |
237 | interrupt-parent = <&PIC>; | 239 | interrupt-parent = <&PIC>; |
238 | num-channels = <4>; | 240 | num-channels = <4>; |
239 | channel-fifo-len = <18>; | 241 | channel-fifo-len = <24>; |
240 | exec-units-mask = <0000007e>; | 242 | exec-units-mask = <0x7e>; |
241 | /* desc mask is for rev1.x, we need runtime fixup for >=2.x */ | 243 | /* desc mask is for rev1.x, we need runtime fixup for >=2.x */ |
242 | descriptor-types-mask = <01010ebf>; | 244 | descriptor-types-mask = <0x1010ebf>; |
243 | }; | 245 | }; |
244 | }; | 246 | }; |
245 | 247 | ||
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts index 9bb408371bcd..539e02fb3526 100644 --- a/arch/powerpc/boot/dts/mpc832x_mds.dts +++ b/arch/powerpc/boot/dts/mpc832x_mds.dts | |||
@@ -255,9 +255,7 @@ | |||
255 | enet0: ucc@2200 { | 255 | enet0: ucc@2200 { |
256 | device_type = "network"; | 256 | device_type = "network"; |
257 | compatible = "ucc_geth"; | 257 | compatible = "ucc_geth"; |
258 | model = "UCC"; | ||
259 | cell-index = <3>; | 258 | cell-index = <3>; |
260 | device-id = <3>; | ||
261 | reg = <0x2200 0x200>; | 259 | reg = <0x2200 0x200>; |
262 | interrupts = <34>; | 260 | interrupts = <34>; |
263 | interrupt-parent = <&qeic>; | 261 | interrupt-parent = <&qeic>; |
@@ -271,9 +269,7 @@ | |||
271 | enet1: ucc@3200 { | 269 | enet1: ucc@3200 { |
272 | device_type = "network"; | 270 | device_type = "network"; |
273 | compatible = "ucc_geth"; | 271 | compatible = "ucc_geth"; |
274 | model = "UCC"; | ||
275 | cell-index = <4>; | 272 | cell-index = <4>; |
276 | device-id = <4>; | ||
277 | reg = <0x3200 0x200>; | 273 | reg = <0x3200 0x200>; |
278 | interrupts = <35>; | 274 | interrupts = <35>; |
279 | interrupt-parent = <&qeic>; | 275 | interrupt-parent = <&qeic>; |
@@ -287,8 +283,7 @@ | |||
287 | ucc@2400 { | 283 | ucc@2400 { |
288 | device_type = "serial"; | 284 | device_type = "serial"; |
289 | compatible = "ucc_uart"; | 285 | compatible = "ucc_uart"; |
290 | model = "UCC"; | 286 | cell-index = <5>; /* The UCC number, 1-7*/ |
291 | device-id = <5>; /* The UCC number, 1-7*/ | ||
292 | port-number = <0>; /* Which ttyQEx device */ | 287 | port-number = <0>; /* Which ttyQEx device */ |
293 | soft-uart; /* We need Soft-UART */ | 288 | soft-uart; /* We need Soft-UART */ |
294 | reg = <0x2400 0x200>; | 289 | reg = <0x2400 0x200>; |
diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts index 94f93d209de8..179c81c6a7ac 100644 --- a/arch/powerpc/boot/dts/mpc832x_rdb.dts +++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts | |||
@@ -208,9 +208,7 @@ | |||
208 | enet0: ucc@3000 { | 208 | enet0: ucc@3000 { |
209 | device_type = "network"; | 209 | device_type = "network"; |
210 | compatible = "ucc_geth"; | 210 | compatible = "ucc_geth"; |
211 | model = "UCC"; | ||
212 | cell-index = <2>; | 211 | cell-index = <2>; |
213 | device-id = <2>; | ||
214 | reg = <0x3000 0x200>; | 212 | reg = <0x3000 0x200>; |
215 | interrupts = <33>; | 213 | interrupts = <33>; |
216 | interrupt-parent = <&qeic>; | 214 | interrupt-parent = <&qeic>; |
@@ -224,9 +222,7 @@ | |||
224 | enet1: ucc@2200 { | 222 | enet1: ucc@2200 { |
225 | device_type = "network"; | 223 | device_type = "network"; |
226 | compatible = "ucc_geth"; | 224 | compatible = "ucc_geth"; |
227 | model = "UCC"; | ||
228 | cell-index = <3>; | 225 | cell-index = <3>; |
229 | device-id = <3>; | ||
230 | reg = <0x2200 0x200>; | 226 | reg = <0x2200 0x200>; |
231 | interrupts = <34>; | 227 | interrupts = <34>; |
232 | interrupt-parent = <&qeic>; | 228 | interrupt-parent = <&qeic>; |
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts index 55f03e8dc97f..8160ff24e87e 100644 --- a/arch/powerpc/boot/dts/mpc836x_mds.dts +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts | |||
@@ -257,9 +257,7 @@ | |||
257 | enet0: ucc@2000 { | 257 | enet0: ucc@2000 { |
258 | device_type = "network"; | 258 | device_type = "network"; |
259 | compatible = "ucc_geth"; | 259 | compatible = "ucc_geth"; |
260 | model = "UCC"; | ||
261 | cell-index = <1>; | 260 | cell-index = <1>; |
262 | device-id = <1>; | ||
263 | reg = <0x2000 0x200>; | 261 | reg = <0x2000 0x200>; |
264 | interrupts = <32>; | 262 | interrupts = <32>; |
265 | interrupt-parent = <&qeic>; | 263 | interrupt-parent = <&qeic>; |
@@ -274,9 +272,7 @@ | |||
274 | enet1: ucc@3000 { | 272 | enet1: ucc@3000 { |
275 | device_type = "network"; | 273 | device_type = "network"; |
276 | compatible = "ucc_geth"; | 274 | compatible = "ucc_geth"; |
277 | model = "UCC"; | ||
278 | cell-index = <2>; | 275 | cell-index = <2>; |
279 | device-id = <2>; | ||
280 | reg = <0x3000 0x200>; | 276 | reg = <0x3000 0x200>; |
281 | interrupts = <33>; | 277 | interrupts = <33>; |
282 | interrupt-parent = <&qeic>; | 278 | interrupt-parent = <&qeic>; |
diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts index 975248491b7b..18033ed0b535 100644 --- a/arch/powerpc/boot/dts/mpc8540ads.dts +++ b/arch/powerpc/boot/dts/mpc8540ads.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8540 ADS Device Tree Source | 2 | * MPC8540 ADS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 Freescale Semiconductor Inc. | 4 | * Copyright 2006, 2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,7 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
12 | 13 | ||
13 | / { | 14 | / { |
14 | model = "MPC8540ADS"; | 15 | model = "MPC8540ADS"; |
@@ -31,11 +32,11 @@ | |||
31 | 32 | ||
32 | PowerPC,8540@0 { | 33 | PowerPC,8540@0 { |
33 | device_type = "cpu"; | 34 | device_type = "cpu"; |
34 | reg = <0>; | 35 | reg = <0x0>; |
35 | d-cache-line-size = <20>; // 32 bytes | 36 | d-cache-line-size = <32>; // 32 bytes |
36 | i-cache-line-size = <20>; // 32 bytes | 37 | i-cache-line-size = <32>; // 32 bytes |
37 | d-cache-size = <8000>; // L1, 32K | 38 | d-cache-size = <0x8000>; // L1, 32K |
38 | i-cache-size = <8000>; // L1, 32K | 39 | i-cache-size = <0x8000>; // L1, 32K |
39 | timebase-frequency = <0>; // 33 MHz, from uboot | 40 | timebase-frequency = <0>; // 33 MHz, from uboot |
40 | bus-frequency = <0>; // 166 MHz | 41 | bus-frequency = <0>; // 166 MHz |
41 | clock-frequency = <0>; // 825 MHz, from uboot | 42 | clock-frequency = <0>; // 825 MHz, from uboot |
@@ -44,31 +45,31 @@ | |||
44 | 45 | ||
45 | memory { | 46 | memory { |
46 | device_type = "memory"; | 47 | device_type = "memory"; |
47 | reg = <00000000 08000000>; // 128M at 0x0 | 48 | reg = <0x0 0x8000000>; // 128M at 0x0 |
48 | }; | 49 | }; |
49 | 50 | ||
50 | soc8540@e0000000 { | 51 | soc8540@e0000000 { |
51 | #address-cells = <1>; | 52 | #address-cells = <1>; |
52 | #size-cells = <1>; | 53 | #size-cells = <1>; |
53 | device_type = "soc"; | 54 | device_type = "soc"; |
54 | ranges = <0 e0000000 00100000>; | 55 | ranges = <0x0 0xe0000000 0x100000>; |
55 | reg = <e0000000 00100000>; // CCSRBAR 1M | 56 | reg = <0xe0000000 0x100000>; // CCSRBAR 1M |
56 | bus-frequency = <0>; | 57 | bus-frequency = <0>; |
57 | 58 | ||
58 | memory-controller@2000 { | 59 | memory-controller@2000 { |
59 | compatible = "fsl,8540-memory-controller"; | 60 | compatible = "fsl,8540-memory-controller"; |
60 | reg = <2000 1000>; | 61 | reg = <0x2000 0x1000>; |
61 | interrupt-parent = <&mpic>; | 62 | interrupt-parent = <&mpic>; |
62 | interrupts = <12 2>; | 63 | interrupts = <18 2>; |
63 | }; | 64 | }; |
64 | 65 | ||
65 | l2-cache-controller@20000 { | 66 | l2-cache-controller@20000 { |
66 | compatible = "fsl,8540-l2-cache-controller"; | 67 | compatible = "fsl,8540-l2-cache-controller"; |
67 | reg = <20000 1000>; | 68 | reg = <0x20000 0x1000>; |
68 | cache-line-size = <20>; // 32 bytes | 69 | cache-line-size = <32>; // 32 bytes |
69 | cache-size = <40000>; // L2, 256K | 70 | cache-size = <0x40000>; // L2, 256K |
70 | interrupt-parent = <&mpic>; | 71 | interrupt-parent = <&mpic>; |
71 | interrupts = <10 2>; | 72 | interrupts = <16 2>; |
72 | }; | 73 | }; |
73 | 74 | ||
74 | i2c@3000 { | 75 | i2c@3000 { |
@@ -76,8 +77,8 @@ | |||
76 | #size-cells = <0>; | 77 | #size-cells = <0>; |
77 | cell-index = <0>; | 78 | cell-index = <0>; |
78 | compatible = "fsl-i2c"; | 79 | compatible = "fsl-i2c"; |
79 | reg = <3000 100>; | 80 | reg = <0x3000 0x100>; |
80 | interrupts = <2b 2>; | 81 | interrupts = <43 2>; |
81 | interrupt-parent = <&mpic>; | 82 | interrupt-parent = <&mpic>; |
82 | dfsrr; | 83 | dfsrr; |
83 | }; | 84 | }; |
@@ -86,24 +87,24 @@ | |||
86 | #address-cells = <1>; | 87 | #address-cells = <1>; |
87 | #size-cells = <0>; | 88 | #size-cells = <0>; |
88 | compatible = "fsl,gianfar-mdio"; | 89 | compatible = "fsl,gianfar-mdio"; |
89 | reg = <24520 20>; | 90 | reg = <0x24520 0x20>; |
90 | 91 | ||
91 | phy0: ethernet-phy@0 { | 92 | phy0: ethernet-phy@0 { |
92 | interrupt-parent = <&mpic>; | 93 | interrupt-parent = <&mpic>; |
93 | interrupts = <5 1>; | 94 | interrupts = <5 1>; |
94 | reg = <0>; | 95 | reg = <0x0>; |
95 | device_type = "ethernet-phy"; | 96 | device_type = "ethernet-phy"; |
96 | }; | 97 | }; |
97 | phy1: ethernet-phy@1 { | 98 | phy1: ethernet-phy@1 { |
98 | interrupt-parent = <&mpic>; | 99 | interrupt-parent = <&mpic>; |
99 | interrupts = <5 1>; | 100 | interrupts = <5 1>; |
100 | reg = <1>; | 101 | reg = <0x1>; |
101 | device_type = "ethernet-phy"; | 102 | device_type = "ethernet-phy"; |
102 | }; | 103 | }; |
103 | phy3: ethernet-phy@3 { | 104 | phy3: ethernet-phy@3 { |
104 | interrupt-parent = <&mpic>; | 105 | interrupt-parent = <&mpic>; |
105 | interrupts = <7 1>; | 106 | interrupts = <7 1>; |
106 | reg = <3>; | 107 | reg = <0x3>; |
107 | device_type = "ethernet-phy"; | 108 | device_type = "ethernet-phy"; |
108 | }; | 109 | }; |
109 | }; | 110 | }; |
@@ -113,9 +114,9 @@ | |||
113 | device_type = "network"; | 114 | device_type = "network"; |
114 | model = "TSEC"; | 115 | model = "TSEC"; |
115 | compatible = "gianfar"; | 116 | compatible = "gianfar"; |
116 | reg = <24000 1000>; | 117 | reg = <0x24000 0x1000>; |
117 | local-mac-address = [ 00 00 00 00 00 00 ]; | 118 | local-mac-address = [ 00 00 00 00 00 00 ]; |
118 | interrupts = <1d 2 1e 2 22 2>; | 119 | interrupts = <29 2 30 2 34 2>; |
119 | interrupt-parent = <&mpic>; | 120 | interrupt-parent = <&mpic>; |
120 | phy-handle = <&phy0>; | 121 | phy-handle = <&phy0>; |
121 | }; | 122 | }; |
@@ -125,9 +126,9 @@ | |||
125 | device_type = "network"; | 126 | device_type = "network"; |
126 | model = "TSEC"; | 127 | model = "TSEC"; |
127 | compatible = "gianfar"; | 128 | compatible = "gianfar"; |
128 | reg = <25000 1000>; | 129 | reg = <0x25000 0x1000>; |
129 | local-mac-address = [ 00 00 00 00 00 00 ]; | 130 | local-mac-address = [ 00 00 00 00 00 00 ]; |
130 | interrupts = <23 2 24 2 28 2>; | 131 | interrupts = <35 2 36 2 40 2>; |
131 | interrupt-parent = <&mpic>; | 132 | interrupt-parent = <&mpic>; |
132 | phy-handle = <&phy1>; | 133 | phy-handle = <&phy1>; |
133 | }; | 134 | }; |
@@ -137,9 +138,9 @@ | |||
137 | device_type = "network"; | 138 | device_type = "network"; |
138 | model = "FEC"; | 139 | model = "FEC"; |
139 | compatible = "gianfar"; | 140 | compatible = "gianfar"; |
140 | reg = <26000 1000>; | 141 | reg = <0x26000 0x1000>; |
141 | local-mac-address = [ 00 00 00 00 00 00 ]; | 142 | local-mac-address = [ 00 00 00 00 00 00 ]; |
142 | interrupts = <29 2>; | 143 | interrupts = <41 2>; |
143 | interrupt-parent = <&mpic>; | 144 | interrupt-parent = <&mpic>; |
144 | phy-handle = <&phy3>; | 145 | phy-handle = <&phy3>; |
145 | }; | 146 | }; |
@@ -148,9 +149,9 @@ | |||
148 | cell-index = <0>; | 149 | cell-index = <0>; |
149 | device_type = "serial"; | 150 | device_type = "serial"; |
150 | compatible = "ns16550"; | 151 | compatible = "ns16550"; |
151 | reg = <4500 100>; // reg base, size | 152 | reg = <0x4500 0x100>; // reg base, size |
152 | clock-frequency = <0>; // should we fill in in uboot? | 153 | clock-frequency = <0>; // should we fill in in uboot? |
153 | interrupts = <2a 2>; | 154 | interrupts = <42 2>; |
154 | interrupt-parent = <&mpic>; | 155 | interrupt-parent = <&mpic>; |
155 | }; | 156 | }; |
156 | 157 | ||
@@ -158,9 +159,9 @@ | |||
158 | cell-index = <1>; | 159 | cell-index = <1>; |
159 | device_type = "serial"; | 160 | device_type = "serial"; |
160 | compatible = "ns16550"; | 161 | compatible = "ns16550"; |
161 | reg = <4600 100>; // reg base, size | 162 | reg = <0x4600 0x100>; // reg base, size |
162 | clock-frequency = <0>; // should we fill in in uboot? | 163 | clock-frequency = <0>; // should we fill in in uboot? |
163 | interrupts = <2a 2>; | 164 | interrupts = <42 2>; |
164 | interrupt-parent = <&mpic>; | 165 | interrupt-parent = <&mpic>; |
165 | }; | 166 | }; |
166 | mpic: pic@40000 { | 167 | mpic: pic@40000 { |
@@ -168,7 +169,7 @@ | |||
168 | interrupt-controller; | 169 | interrupt-controller; |
169 | #address-cells = <0>; | 170 | #address-cells = <0>; |
170 | #interrupt-cells = <2>; | 171 | #interrupt-cells = <2>; |
171 | reg = <40000 40000>; | 172 | reg = <0x40000 0x40000>; |
172 | compatible = "chrp,open-pic"; | 173 | compatible = "chrp,open-pic"; |
173 | device_type = "open-pic"; | 174 | device_type = "open-pic"; |
174 | big-endian; | 175 | big-endian; |
@@ -177,90 +178,90 @@ | |||
177 | 178 | ||
178 | pci0: pci@e0008000 { | 179 | pci0: pci@e0008000 { |
179 | cell-index = <0>; | 180 | cell-index = <0>; |
180 | interrupt-map-mask = <f800 0 0 7>; | 181 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
181 | interrupt-map = < | 182 | interrupt-map = < |
182 | 183 | ||
183 | /* IDSEL 0x02 */ | 184 | /* IDSEL 0x02 */ |
184 | 1000 0 0 1 &mpic 1 1 | 185 | 0x1000 0x0 0x0 0x1 &mpic 0x1 0x1 |
185 | 1000 0 0 2 &mpic 2 1 | 186 | 0x1000 0x0 0x0 0x2 &mpic 0x2 0x1 |
186 | 1000 0 0 3 &mpic 3 1 | 187 | 0x1000 0x0 0x0 0x3 &mpic 0x3 0x1 |
187 | 1000 0 0 4 &mpic 4 1 | 188 | 0x1000 0x0 0x0 0x4 &mpic 0x4 0x1 |
188 | 189 | ||
189 | /* IDSEL 0x03 */ | 190 | /* IDSEL 0x03 */ |
190 | 1800 0 0 1 &mpic 4 1 | 191 | 0x1800 0x0 0x0 0x1 &mpic 0x4 0x1 |
191 | 1800 0 0 2 &mpic 1 1 | 192 | 0x1800 0x0 0x0 0x2 &mpic 0x1 0x1 |
192 | 1800 0 0 3 &mpic 2 1 | 193 | 0x1800 0x0 0x0 0x3 &mpic 0x2 0x1 |
193 | 1800 0 0 4 &mpic 3 1 | 194 | 0x1800 0x0 0x0 0x4 &mpic 0x3 0x1 |
194 | 195 | ||
195 | /* IDSEL 0x04 */ | 196 | /* IDSEL 0x04 */ |
196 | 2000 0 0 1 &mpic 3 1 | 197 | 0x2000 0x0 0x0 0x1 &mpic 0x3 0x1 |
197 | 2000 0 0 2 &mpic 4 1 | 198 | 0x2000 0x0 0x0 0x2 &mpic 0x4 0x1 |
198 | 2000 0 0 3 &mpic 1 1 | 199 | 0x2000 0x0 0x0 0x3 &mpic 0x1 0x1 |
199 | 2000 0 0 4 &mpic 2 1 | 200 | 0x2000 0x0 0x0 0x4 &mpic 0x2 0x1 |
200 | 201 | ||
201 | /* IDSEL 0x05 */ | 202 | /* IDSEL 0x05 */ |
202 | 2800 0 0 1 &mpic 2 1 | 203 | 0x2800 0x0 0x0 0x1 &mpic 0x2 0x1 |
203 | 2800 0 0 2 &mpic 3 1 | 204 | 0x2800 0x0 0x0 0x2 &mpic 0x3 0x1 |
204 | 2800 0 0 3 &mpic 4 1 | 205 | 0x2800 0x0 0x0 0x3 &mpic 0x4 0x1 |
205 | 2800 0 0 4 &mpic 1 1 | 206 | 0x2800 0x0 0x0 0x4 &mpic 0x1 0x1 |
206 | 207 | ||
207 | /* IDSEL 0x0c */ | 208 | /* IDSEL 0x0c */ |
208 | 6000 0 0 1 &mpic 1 1 | 209 | 0x6000 0x0 0x0 0x1 &mpic 0x1 0x1 |
209 | 6000 0 0 2 &mpic 2 1 | 210 | 0x6000 0x0 0x0 0x2 &mpic 0x2 0x1 |
210 | 6000 0 0 3 &mpic 3 1 | 211 | 0x6000 0x0 0x0 0x3 &mpic 0x3 0x1 |
211 | 6000 0 0 4 &mpic 4 1 | 212 | 0x6000 0x0 0x0 0x4 &mpic 0x4 0x1 |
212 | 213 | ||
213 | /* IDSEL 0x0d */ | 214 | /* IDSEL 0x0d */ |
214 | 6800 0 0 1 &mpic 4 1 | 215 | 0x6800 0x0 0x0 0x1 &mpic 0x4 0x1 |
215 | 6800 0 0 2 &mpic 1 1 | 216 | 0x6800 0x0 0x0 0x2 &mpic 0x1 0x1 |
216 | 6800 0 0 3 &mpic 2 1 | 217 | 0x6800 0x0 0x0 0x3 &mpic 0x2 0x1 |
217 | 6800 0 0 4 &mpic 3 1 | 218 | 0x6800 0x0 0x0 0x4 &mpic 0x3 0x1 |
218 | 219 | ||
219 | /* IDSEL 0x0e */ | 220 | /* IDSEL 0x0e */ |
220 | 7000 0 0 1 &mpic 3 1 | 221 | 0x7000 0x0 0x0 0x1 &mpic 0x3 0x1 |
221 | 7000 0 0 2 &mpic 4 1 | 222 | 0x7000 0x0 0x0 0x2 &mpic 0x4 0x1 |
222 | 7000 0 0 3 &mpic 1 1 | 223 | 0x7000 0x0 0x0 0x3 &mpic 0x1 0x1 |
223 | 7000 0 0 4 &mpic 2 1 | 224 | 0x7000 0x0 0x0 0x4 &mpic 0x2 0x1 |
224 | 225 | ||
225 | /* IDSEL 0x0f */ | 226 | /* IDSEL 0x0f */ |
226 | 7800 0 0 1 &mpic 2 1 | 227 | 0x7800 0x0 0x0 0x1 &mpic 0x2 0x1 |
227 | 7800 0 0 2 &mpic 3 1 | 228 | 0x7800 0x0 0x0 0x2 &mpic 0x3 0x1 |
228 | 7800 0 0 3 &mpic 4 1 | 229 | 0x7800 0x0 0x0 0x3 &mpic 0x4 0x1 |
229 | 7800 0 0 4 &mpic 1 1 | 230 | 0x7800 0x0 0x0 0x4 &mpic 0x1 0x1 |
230 | 231 | ||
231 | /* IDSEL 0x12 */ | 232 | /* IDSEL 0x12 */ |
232 | 9000 0 0 1 &mpic 1 1 | 233 | 0x9000 0x0 0x0 0x1 &mpic 0x1 0x1 |
233 | 9000 0 0 2 &mpic 2 1 | 234 | 0x9000 0x0 0x0 0x2 &mpic 0x2 0x1 |
234 | 9000 0 0 3 &mpic 3 1 | 235 | 0x9000 0x0 0x0 0x3 &mpic 0x3 0x1 |
235 | 9000 0 0 4 &mpic 4 1 | 236 | 0x9000 0x0 0x0 0x4 &mpic 0x4 0x1 |
236 | 237 | ||
237 | /* IDSEL 0x13 */ | 238 | /* IDSEL 0x13 */ |
238 | 9800 0 0 1 &mpic 4 1 | 239 | 0x9800 0x0 0x0 0x1 &mpic 0x4 0x1 |
239 | 9800 0 0 2 &mpic 1 1 | 240 | 0x9800 0x0 0x0 0x2 &mpic 0x1 0x1 |
240 | 9800 0 0 3 &mpic 2 1 | 241 | 0x9800 0x0 0x0 0x3 &mpic 0x2 0x1 |
241 | 9800 0 0 4 &mpic 3 1 | 242 | 0x9800 0x0 0x0 0x4 &mpic 0x3 0x1 |
242 | 243 | ||
243 | /* IDSEL 0x14 */ | 244 | /* IDSEL 0x14 */ |
244 | a000 0 0 1 &mpic 3 1 | 245 | 0xa000 0x0 0x0 0x1 &mpic 0x3 0x1 |
245 | a000 0 0 2 &mpic 4 1 | 246 | 0xa000 0x0 0x0 0x2 &mpic 0x4 0x1 |
246 | a000 0 0 3 &mpic 1 1 | 247 | 0xa000 0x0 0x0 0x3 &mpic 0x1 0x1 |
247 | a000 0 0 4 &mpic 2 1 | 248 | 0xa000 0x0 0x0 0x4 &mpic 0x2 0x1 |
248 | 249 | ||
249 | /* IDSEL 0x15 */ | 250 | /* IDSEL 0x15 */ |
250 | a800 0 0 1 &mpic 2 1 | 251 | 0xa800 0x0 0x0 0x1 &mpic 0x2 0x1 |
251 | a800 0 0 2 &mpic 3 1 | 252 | 0xa800 0x0 0x0 0x2 &mpic 0x3 0x1 |
252 | a800 0 0 3 &mpic 4 1 | 253 | 0xa800 0x0 0x0 0x3 &mpic 0x4 0x1 |
253 | a800 0 0 4 &mpic 1 1>; | 254 | 0xa800 0x0 0x0 0x4 &mpic 0x1 0x1>; |
254 | interrupt-parent = <&mpic>; | 255 | interrupt-parent = <&mpic>; |
255 | interrupts = <18 2>; | 256 | interrupts = <24 2>; |
256 | bus-range = <0 0>; | 257 | bus-range = <0 0>; |
257 | ranges = <02000000 0 80000000 80000000 0 20000000 | 258 | ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
258 | 01000000 0 00000000 e2000000 0 00100000>; | 259 | 0x1000000 0x0 0x0 0xe2000000 0x0 0x100000>; |
259 | clock-frequency = <3f940aa>; | 260 | clock-frequency = <66666666>; |
260 | #interrupt-cells = <1>; | 261 | #interrupt-cells = <1>; |
261 | #size-cells = <2>; | 262 | #size-cells = <2>; |
262 | #address-cells = <3>; | 263 | #address-cells = <3>; |
263 | reg = <e0008000 1000>; | 264 | reg = <0xe0008000 0x1000>; |
264 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | 265 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; |
265 | device_type = "pci"; | 266 | device_type = "pci"; |
266 | }; | 267 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts index fa8d9aaad157..663c7c50ca45 100644 --- a/arch/powerpc/boot/dts/mpc8541cds.dts +++ b/arch/powerpc/boot/dts/mpc8541cds.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8541 CDS Device Tree Source | 2 | * MPC8541 CDS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 Freescale Semiconductor Inc. | 4 | * Copyright 2006, 2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,7 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
12 | 13 | ||
13 | / { | 14 | / { |
14 | model = "MPC8541CDS"; | 15 | model = "MPC8541CDS"; |
@@ -31,11 +32,11 @@ | |||
31 | 32 | ||
32 | PowerPC,8541@0 { | 33 | PowerPC,8541@0 { |
33 | device_type = "cpu"; | 34 | device_type = "cpu"; |
34 | reg = <0>; | 35 | reg = <0x0>; |
35 | d-cache-line-size = <20>; // 32 bytes | 36 | d-cache-line-size = <32>; // 32 bytes |
36 | i-cache-line-size = <20>; // 32 bytes | 37 | i-cache-line-size = <32>; // 32 bytes |
37 | d-cache-size = <8000>; // L1, 32K | 38 | d-cache-size = <0x8000>; // L1, 32K |
38 | i-cache-size = <8000>; // L1, 32K | 39 | i-cache-size = <0x8000>; // L1, 32K |
39 | timebase-frequency = <0>; // 33 MHz, from uboot | 40 | timebase-frequency = <0>; // 33 MHz, from uboot |
40 | bus-frequency = <0>; // 166 MHz | 41 | bus-frequency = <0>; // 166 MHz |
41 | clock-frequency = <0>; // 825 MHz, from uboot | 42 | clock-frequency = <0>; // 825 MHz, from uboot |
@@ -44,31 +45,31 @@ | |||
44 | 45 | ||
45 | memory { | 46 | memory { |
46 | device_type = "memory"; | 47 | device_type = "memory"; |
47 | reg = <00000000 08000000>; // 128M at 0x0 | 48 | reg = <0x0 0x8000000>; // 128M at 0x0 |
48 | }; | 49 | }; |
49 | 50 | ||
50 | soc8541@e0000000 { | 51 | soc8541@e0000000 { |
51 | #address-cells = <1>; | 52 | #address-cells = <1>; |
52 | #size-cells = <1>; | 53 | #size-cells = <1>; |
53 | device_type = "soc"; | 54 | device_type = "soc"; |
54 | ranges = <0 e0000000 00100000>; | 55 | ranges = <0x0 0xe0000000 0x100000>; |
55 | reg = <e0000000 00001000>; // CCSRBAR 1M | 56 | reg = <0xe0000000 0x1000>; // CCSRBAR 1M |
56 | bus-frequency = <0>; | 57 | bus-frequency = <0>; |
57 | 58 | ||
58 | memory-controller@2000 { | 59 | memory-controller@2000 { |
59 | compatible = "fsl,8541-memory-controller"; | 60 | compatible = "fsl,8541-memory-controller"; |
60 | reg = <2000 1000>; | 61 | reg = <0x2000 0x1000>; |
61 | interrupt-parent = <&mpic>; | 62 | interrupt-parent = <&mpic>; |
62 | interrupts = <12 2>; | 63 | interrupts = <18 2>; |
63 | }; | 64 | }; |
64 | 65 | ||
65 | l2-cache-controller@20000 { | 66 | l2-cache-controller@20000 { |
66 | compatible = "fsl,8541-l2-cache-controller"; | 67 | compatible = "fsl,8541-l2-cache-controller"; |
67 | reg = <20000 1000>; | 68 | reg = <0x20000 0x1000>; |
68 | cache-line-size = <20>; // 32 bytes | 69 | cache-line-size = <32>; // 32 bytes |
69 | cache-size = <40000>; // L2, 256K | 70 | cache-size = <0x40000>; // L2, 256K |
70 | interrupt-parent = <&mpic>; | 71 | interrupt-parent = <&mpic>; |
71 | interrupts = <10 2>; | 72 | interrupts = <16 2>; |
72 | }; | 73 | }; |
73 | 74 | ||
74 | i2c@3000 { | 75 | i2c@3000 { |
@@ -76,8 +77,8 @@ | |||
76 | #size-cells = <0>; | 77 | #size-cells = <0>; |
77 | cell-index = <0>; | 78 | cell-index = <0>; |
78 | compatible = "fsl-i2c"; | 79 | compatible = "fsl-i2c"; |
79 | reg = <3000 100>; | 80 | reg = <0x3000 0x100>; |
80 | interrupts = <2b 2>; | 81 | interrupts = <43 2>; |
81 | interrupt-parent = <&mpic>; | 82 | interrupt-parent = <&mpic>; |
82 | dfsrr; | 83 | dfsrr; |
83 | }; | 84 | }; |
@@ -86,18 +87,18 @@ | |||
86 | #address-cells = <1>; | 87 | #address-cells = <1>; |
87 | #size-cells = <0>; | 88 | #size-cells = <0>; |
88 | compatible = "fsl,gianfar-mdio"; | 89 | compatible = "fsl,gianfar-mdio"; |
89 | reg = <24520 20>; | 90 | reg = <0x24520 0x20>; |
90 | 91 | ||
91 | phy0: ethernet-phy@0 { | 92 | phy0: ethernet-phy@0 { |
92 | interrupt-parent = <&mpic>; | 93 | interrupt-parent = <&mpic>; |
93 | interrupts = <5 1>; | 94 | interrupts = <5 1>; |
94 | reg = <0>; | 95 | reg = <0x0>; |
95 | device_type = "ethernet-phy"; | 96 | device_type = "ethernet-phy"; |
96 | }; | 97 | }; |
97 | phy1: ethernet-phy@1 { | 98 | phy1: ethernet-phy@1 { |
98 | interrupt-parent = <&mpic>; | 99 | interrupt-parent = <&mpic>; |
99 | interrupts = <5 1>; | 100 | interrupts = <5 1>; |
100 | reg = <1>; | 101 | reg = <0x1>; |
101 | device_type = "ethernet-phy"; | 102 | device_type = "ethernet-phy"; |
102 | }; | 103 | }; |
103 | }; | 104 | }; |
@@ -107,9 +108,9 @@ | |||
107 | device_type = "network"; | 108 | device_type = "network"; |
108 | model = "TSEC"; | 109 | model = "TSEC"; |
109 | compatible = "gianfar"; | 110 | compatible = "gianfar"; |
110 | reg = <24000 1000>; | 111 | reg = <0x24000 0x1000>; |
111 | local-mac-address = [ 00 00 00 00 00 00 ]; | 112 | local-mac-address = [ 00 00 00 00 00 00 ]; |
112 | interrupts = <1d 2 1e 2 22 2>; | 113 | interrupts = <29 2 30 2 34 2>; |
113 | interrupt-parent = <&mpic>; | 114 | interrupt-parent = <&mpic>; |
114 | phy-handle = <&phy0>; | 115 | phy-handle = <&phy0>; |
115 | }; | 116 | }; |
@@ -119,9 +120,9 @@ | |||
119 | device_type = "network"; | 120 | device_type = "network"; |
120 | model = "TSEC"; | 121 | model = "TSEC"; |
121 | compatible = "gianfar"; | 122 | compatible = "gianfar"; |
122 | reg = <25000 1000>; | 123 | reg = <0x25000 0x1000>; |
123 | local-mac-address = [ 00 00 00 00 00 00 ]; | 124 | local-mac-address = [ 00 00 00 00 00 00 ]; |
124 | interrupts = <23 2 24 2 28 2>; | 125 | interrupts = <35 2 36 2 40 2>; |
125 | interrupt-parent = <&mpic>; | 126 | interrupt-parent = <&mpic>; |
126 | phy-handle = <&phy1>; | 127 | phy-handle = <&phy1>; |
127 | }; | 128 | }; |
@@ -130,9 +131,9 @@ | |||
130 | cell-index = <0>; | 131 | cell-index = <0>; |
131 | device_type = "serial"; | 132 | device_type = "serial"; |
132 | compatible = "ns16550"; | 133 | compatible = "ns16550"; |
133 | reg = <4500 100>; // reg base, size | 134 | reg = <0x4500 0x100>; // reg base, size |
134 | clock-frequency = <0>; // should we fill in in uboot? | 135 | clock-frequency = <0>; // should we fill in in uboot? |
135 | interrupts = <2a 2>; | 136 | interrupts = <42 2>; |
136 | interrupt-parent = <&mpic>; | 137 | interrupt-parent = <&mpic>; |
137 | }; | 138 | }; |
138 | 139 | ||
@@ -140,9 +141,9 @@ | |||
140 | cell-index = <1>; | 141 | cell-index = <1>; |
141 | device_type = "serial"; | 142 | device_type = "serial"; |
142 | compatible = "ns16550"; | 143 | compatible = "ns16550"; |
143 | reg = <4600 100>; // reg base, size | 144 | reg = <0x4600 0x100>; // reg base, size |
144 | clock-frequency = <0>; // should we fill in in uboot? | 145 | clock-frequency = <0>; // should we fill in in uboot? |
145 | interrupts = <2a 2>; | 146 | interrupts = <42 2>; |
146 | interrupt-parent = <&mpic>; | 147 | interrupt-parent = <&mpic>; |
147 | }; | 148 | }; |
148 | 149 | ||
@@ -151,7 +152,7 @@ | |||
151 | interrupt-controller; | 152 | interrupt-controller; |
152 | #address-cells = <0>; | 153 | #address-cells = <0>; |
153 | #interrupt-cells = <2>; | 154 | #interrupt-cells = <2>; |
154 | reg = <40000 40000>; | 155 | reg = <0x40000 0x40000>; |
155 | compatible = "chrp,open-pic"; | 156 | compatible = "chrp,open-pic"; |
156 | device_type = "open-pic"; | 157 | device_type = "open-pic"; |
157 | big-endian; | 158 | big-endian; |
@@ -161,17 +162,17 @@ | |||
161 | #address-cells = <1>; | 162 | #address-cells = <1>; |
162 | #size-cells = <1>; | 163 | #size-cells = <1>; |
163 | compatible = "fsl,mpc8541-cpm", "fsl,cpm2"; | 164 | compatible = "fsl,mpc8541-cpm", "fsl,cpm2"; |
164 | reg = <919c0 30>; | 165 | reg = <0x919c0 0x30>; |
165 | ranges; | 166 | ranges; |
166 | 167 | ||
167 | muram@80000 { | 168 | muram@80000 { |
168 | #address-cells = <1>; | 169 | #address-cells = <1>; |
169 | #size-cells = <1>; | 170 | #size-cells = <1>; |
170 | ranges = <0 80000 10000>; | 171 | ranges = <0x0 0x80000 0x10000>; |
171 | 172 | ||
172 | data@0 { | 173 | data@0 { |
173 | compatible = "fsl,cpm-muram-data"; | 174 | compatible = "fsl,cpm-muram-data"; |
174 | reg = <0 2000 9000 1000>; | 175 | reg = <0x0 0x2000 0x9000 0x1000>; |
175 | }; | 176 | }; |
176 | }; | 177 | }; |
177 | 178 | ||
@@ -179,16 +180,16 @@ | |||
179 | compatible = "fsl,mpc8541-brg", | 180 | compatible = "fsl,mpc8541-brg", |
180 | "fsl,cpm2-brg", | 181 | "fsl,cpm2-brg", |
181 | "fsl,cpm-brg"; | 182 | "fsl,cpm-brg"; |
182 | reg = <919f0 10 915f0 10>; | 183 | reg = <0x919f0 0x10 0x915f0 0x10>; |
183 | }; | 184 | }; |
184 | 185 | ||
185 | cpmpic: pic@90c00 { | 186 | cpmpic: pic@90c00 { |
186 | interrupt-controller; | 187 | interrupt-controller; |
187 | #address-cells = <0>; | 188 | #address-cells = <0>; |
188 | #interrupt-cells = <2>; | 189 | #interrupt-cells = <2>; |
189 | interrupts = <2e 2>; | 190 | interrupts = <46 2>; |
190 | interrupt-parent = <&mpic>; | 191 | interrupt-parent = <&mpic>; |
191 | reg = <90c00 80>; | 192 | reg = <0x90c00 0x80>; |
192 | compatible = "fsl,mpc8541-cpm-pic", "fsl,cpm2-pic"; | 193 | compatible = "fsl,mpc8541-cpm-pic", "fsl,cpm2-pic"; |
193 | }; | 194 | }; |
194 | }; | 195 | }; |
@@ -196,68 +197,68 @@ | |||
196 | 197 | ||
197 | pci0: pci@e0008000 { | 198 | pci0: pci@e0008000 { |
198 | cell-index = <0>; | 199 | cell-index = <0>; |
199 | interrupt-map-mask = <1f800 0 0 7>; | 200 | interrupt-map-mask = <0x1f800 0x0 0x0 0x7>; |
200 | interrupt-map = < | 201 | interrupt-map = < |
201 | 202 | ||
202 | /* IDSEL 0x10 */ | 203 | /* IDSEL 0x10 */ |
203 | 08000 0 0 1 &mpic 0 1 | 204 | 0x8000 0x0 0x0 0x1 &mpic 0x0 0x1 |
204 | 08000 0 0 2 &mpic 1 1 | 205 | 0x8000 0x0 0x0 0x2 &mpic 0x1 0x1 |
205 | 08000 0 0 3 &mpic 2 1 | 206 | 0x8000 0x0 0x0 0x3 &mpic 0x2 0x1 |
206 | 08000 0 0 4 &mpic 3 1 | 207 | 0x8000 0x0 0x0 0x4 &mpic 0x3 0x1 |
207 | 208 | ||
208 | /* IDSEL 0x11 */ | 209 | /* IDSEL 0x11 */ |
209 | 08800 0 0 1 &mpic 0 1 | 210 | 0x8800 0x0 0x0 0x1 &mpic 0x0 0x1 |
210 | 08800 0 0 2 &mpic 1 1 | 211 | 0x8800 0x0 0x0 0x2 &mpic 0x1 0x1 |
211 | 08800 0 0 3 &mpic 2 1 | 212 | 0x8800 0x0 0x0 0x3 &mpic 0x2 0x1 |
212 | 08800 0 0 4 &mpic 3 1 | 213 | 0x8800 0x0 0x0 0x4 &mpic 0x3 0x1 |
213 | 214 | ||
214 | /* IDSEL 0x12 (Slot 1) */ | 215 | /* IDSEL 0x12 (Slot 1) */ |
215 | 09000 0 0 1 &mpic 0 1 | 216 | 0x9000 0x0 0x0 0x1 &mpic 0x0 0x1 |
216 | 09000 0 0 2 &mpic 1 1 | 217 | 0x9000 0x0 0x0 0x2 &mpic 0x1 0x1 |
217 | 09000 0 0 3 &mpic 2 1 | 218 | 0x9000 0x0 0x0 0x3 &mpic 0x2 0x1 |
218 | 09000 0 0 4 &mpic 3 1 | 219 | 0x9000 0x0 0x0 0x4 &mpic 0x3 0x1 |
219 | 220 | ||
220 | /* IDSEL 0x13 (Slot 2) */ | 221 | /* IDSEL 0x13 (Slot 2) */ |
221 | 09800 0 0 1 &mpic 1 1 | 222 | 0x9800 0x0 0x0 0x1 &mpic 0x1 0x1 |
222 | 09800 0 0 2 &mpic 2 1 | 223 | 0x9800 0x0 0x0 0x2 &mpic 0x2 0x1 |
223 | 09800 0 0 3 &mpic 3 1 | 224 | 0x9800 0x0 0x0 0x3 &mpic 0x3 0x1 |
224 | 09800 0 0 4 &mpic 0 1 | 225 | 0x9800 0x0 0x0 0x4 &mpic 0x0 0x1 |
225 | 226 | ||
226 | /* IDSEL 0x14 (Slot 3) */ | 227 | /* IDSEL 0x14 (Slot 3) */ |
227 | 0a000 0 0 1 &mpic 2 1 | 228 | 0xa000 0x0 0x0 0x1 &mpic 0x2 0x1 |
228 | 0a000 0 0 2 &mpic 3 1 | 229 | 0xa000 0x0 0x0 0x2 &mpic 0x3 0x1 |
229 | 0a000 0 0 3 &mpic 0 1 | 230 | 0xa000 0x0 0x0 0x3 &mpic 0x0 0x1 |
230 | 0a000 0 0 4 &mpic 1 1 | 231 | 0xa000 0x0 0x0 0x4 &mpic 0x1 0x1 |
231 | 232 | ||
232 | /* IDSEL 0x15 (Slot 4) */ | 233 | /* IDSEL 0x15 (Slot 4) */ |
233 | 0a800 0 0 1 &mpic 3 1 | 234 | 0xa800 0x0 0x0 0x1 &mpic 0x3 0x1 |
234 | 0a800 0 0 2 &mpic 0 1 | 235 | 0xa800 0x0 0x0 0x2 &mpic 0x0 0x1 |
235 | 0a800 0 0 3 &mpic 1 1 | 236 | 0xa800 0x0 0x0 0x3 &mpic 0x1 0x1 |
236 | 0a800 0 0 4 &mpic 2 1 | 237 | 0xa800 0x0 0x0 0x4 &mpic 0x2 0x1 |
237 | 238 | ||
238 | /* Bus 1 (Tundra Bridge) */ | 239 | /* Bus 1 (Tundra Bridge) */ |
239 | /* IDSEL 0x12 (ISA bridge) */ | 240 | /* IDSEL 0x12 (ISA bridge) */ |
240 | 19000 0 0 1 &mpic 0 1 | 241 | 0x19000 0x0 0x0 0x1 &mpic 0x0 0x1 |
241 | 19000 0 0 2 &mpic 1 1 | 242 | 0x19000 0x0 0x0 0x2 &mpic 0x1 0x1 |
242 | 19000 0 0 3 &mpic 2 1 | 243 | 0x19000 0x0 0x0 0x3 &mpic 0x2 0x1 |
243 | 19000 0 0 4 &mpic 3 1>; | 244 | 0x19000 0x0 0x0 0x4 &mpic 0x3 0x1>; |
244 | interrupt-parent = <&mpic>; | 245 | interrupt-parent = <&mpic>; |
245 | interrupts = <18 2>; | 246 | interrupts = <24 2>; |
246 | bus-range = <0 0>; | 247 | bus-range = <0 0>; |
247 | ranges = <02000000 0 80000000 80000000 0 20000000 | 248 | ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
248 | 01000000 0 00000000 e2000000 0 00100000>; | 249 | 0x1000000 0x0 0x0 0xe2000000 0x0 0x100000>; |
249 | clock-frequency = <3f940aa>; | 250 | clock-frequency = <66666666>; |
250 | #interrupt-cells = <1>; | 251 | #interrupt-cells = <1>; |
251 | #size-cells = <2>; | 252 | #size-cells = <2>; |
252 | #address-cells = <3>; | 253 | #address-cells = <3>; |
253 | reg = <e0008000 1000>; | 254 | reg = <0xe0008000 0x1000>; |
254 | compatible = "fsl,mpc8540-pci"; | 255 | compatible = "fsl,mpc8540-pci"; |
255 | device_type = "pci"; | 256 | device_type = "pci"; |
256 | 257 | ||
257 | i8259@19000 { | 258 | i8259@19000 { |
258 | interrupt-controller; | 259 | interrupt-controller; |
259 | device_type = "interrupt-controller"; | 260 | device_type = "interrupt-controller"; |
260 | reg = <19000 0 0 0 1>; | 261 | reg = <0x19000 0x0 0x0 0x0 0x1>; |
261 | #address-cells = <0>; | 262 | #address-cells = <0>; |
262 | #interrupt-cells = <2>; | 263 | #interrupt-cells = <2>; |
263 | compatible = "chrp,iic"; | 264 | compatible = "chrp,iic"; |
@@ -268,24 +269,24 @@ | |||
268 | 269 | ||
269 | pci1: pci@e0009000 { | 270 | pci1: pci@e0009000 { |
270 | cell-index = <1>; | 271 | cell-index = <1>; |
271 | interrupt-map-mask = <f800 0 0 7>; | 272 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
272 | interrupt-map = < | 273 | interrupt-map = < |
273 | 274 | ||
274 | /* IDSEL 0x15 */ | 275 | /* IDSEL 0x15 */ |
275 | a800 0 0 1 &mpic b 1 | 276 | 0xa800 0x0 0x0 0x1 &mpic 0xb 0x1 |
276 | a800 0 0 2 &mpic b 1 | 277 | 0xa800 0x0 0x0 0x2 &mpic 0xb 0x1 |
277 | a800 0 0 3 &mpic b 1 | 278 | 0xa800 0x0 0x0 0x3 &mpic 0xb 0x1 |
278 | a800 0 0 4 &mpic b 1>; | 279 | 0xa800 0x0 0x0 0x4 &mpic 0xb 0x1>; |
279 | interrupt-parent = <&mpic>; | 280 | interrupt-parent = <&mpic>; |
280 | interrupts = <19 2>; | 281 | interrupts = <25 2>; |
281 | bus-range = <0 0>; | 282 | bus-range = <0 0>; |
282 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 283 | ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 |
283 | 01000000 0 00000000 e3000000 0 00100000>; | 284 | 0x1000000 0x0 0x0 0xe3000000 0x0 0x100000>; |
284 | clock-frequency = <3f940aa>; | 285 | clock-frequency = <66666666>; |
285 | #interrupt-cells = <1>; | 286 | #interrupt-cells = <1>; |
286 | #size-cells = <2>; | 287 | #size-cells = <2>; |
287 | #address-cells = <3>; | 288 | #address-cells = <3>; |
288 | reg = <e0009000 1000>; | 289 | reg = <0xe0009000 0x1000>; |
289 | compatible = "fsl,mpc8540-pci"; | 290 | compatible = "fsl,mpc8540-pci"; |
290 | device_type = "pci"; | 291 | device_type = "pci"; |
291 | }; | 292 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts index 688af9d06382..6a0d8db96d97 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dts +++ b/arch/powerpc/boot/dts/mpc8544ds.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8544 DS Device Tree Source | 2 | * MPC8544 DS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2007 Freescale Semiconductor Inc. | 4 | * Copyright 2007, 2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,7 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
12 | / { | 13 | / { |
13 | model = "MPC8544DS"; | 14 | model = "MPC8544DS"; |
14 | compatible = "MPC8544DS", "MPC85xxDS"; | 15 | compatible = "MPC8544DS", "MPC85xxDS"; |
@@ -27,17 +28,16 @@ | |||
27 | }; | 28 | }; |
28 | 29 | ||
29 | cpus { | 30 | cpus { |
30 | #cpus = <1>; | ||
31 | #address-cells = <1>; | 31 | #address-cells = <1>; |
32 | #size-cells = <0>; | 32 | #size-cells = <0>; |
33 | 33 | ||
34 | PowerPC,8544@0 { | 34 | PowerPC,8544@0 { |
35 | device_type = "cpu"; | 35 | device_type = "cpu"; |
36 | reg = <0>; | 36 | reg = <0x0>; |
37 | d-cache-line-size = <20>; // 32 bytes | 37 | d-cache-line-size = <32>; // 32 bytes |
38 | i-cache-line-size = <20>; // 32 bytes | 38 | i-cache-line-size = <32>; // 32 bytes |
39 | d-cache-size = <8000>; // L1, 32K | 39 | d-cache-size = <0x8000>; // L1, 32K |
40 | i-cache-size = <8000>; // L1, 32K | 40 | i-cache-size = <0x8000>; // L1, 32K |
41 | timebase-frequency = <0>; | 41 | timebase-frequency = <0>; |
42 | bus-frequency = <0>; | 42 | bus-frequency = <0>; |
43 | clock-frequency = <0>; | 43 | clock-frequency = <0>; |
@@ -46,7 +46,7 @@ | |||
46 | 46 | ||
47 | memory { | 47 | memory { |
48 | device_type = "memory"; | 48 | device_type = "memory"; |
49 | reg = <00000000 00000000>; // Filled by U-Boot | 49 | reg = <0x0 0x0>; // Filled by U-Boot |
50 | }; | 50 | }; |
51 | 51 | ||
52 | soc8544@e0000000 { | 52 | soc8544@e0000000 { |
@@ -54,24 +54,24 @@ | |||
54 | #size-cells = <1>; | 54 | #size-cells = <1>; |
55 | device_type = "soc"; | 55 | device_type = "soc"; |
56 | 56 | ||
57 | ranges = <00000000 e0000000 00100000>; | 57 | ranges = <0x0 0xe0000000 0x100000>; |
58 | reg = <e0000000 00001000>; // CCSRBAR 1M | 58 | reg = <0xe0000000 0x1000>; // CCSRBAR 1M |
59 | bus-frequency = <0>; // Filled out by uboot. | 59 | bus-frequency = <0>; // Filled out by uboot. |
60 | 60 | ||
61 | memory-controller@2000 { | 61 | memory-controller@2000 { |
62 | compatible = "fsl,8544-memory-controller"; | 62 | compatible = "fsl,8544-memory-controller"; |
63 | reg = <2000 1000>; | 63 | reg = <0x2000 0x1000>; |
64 | interrupt-parent = <&mpic>; | 64 | interrupt-parent = <&mpic>; |
65 | interrupts = <12 2>; | 65 | interrupts = <18 2>; |
66 | }; | 66 | }; |
67 | 67 | ||
68 | l2-cache-controller@20000 { | 68 | l2-cache-controller@20000 { |
69 | compatible = "fsl,8544-l2-cache-controller"; | 69 | compatible = "fsl,8544-l2-cache-controller"; |
70 | reg = <20000 1000>; | 70 | reg = <0x20000 0x1000>; |
71 | cache-line-size = <20>; // 32 bytes | 71 | cache-line-size = <32>; // 32 bytes |
72 | cache-size = <40000>; // L2, 256K | 72 | cache-size = <0x40000>; // L2, 256K |
73 | interrupt-parent = <&mpic>; | 73 | interrupt-parent = <&mpic>; |
74 | interrupts = <10 2>; | 74 | interrupts = <16 2>; |
75 | }; | 75 | }; |
76 | 76 | ||
77 | i2c@3000 { | 77 | i2c@3000 { |
@@ -79,8 +79,8 @@ | |||
79 | #size-cells = <0>; | 79 | #size-cells = <0>; |
80 | cell-index = <0>; | 80 | cell-index = <0>; |
81 | compatible = "fsl-i2c"; | 81 | compatible = "fsl-i2c"; |
82 | reg = <3000 100>; | 82 | reg = <0x3000 0x100>; |
83 | interrupts = <2b 2>; | 83 | interrupts = <43 2>; |
84 | interrupt-parent = <&mpic>; | 84 | interrupt-parent = <&mpic>; |
85 | dfsrr; | 85 | dfsrr; |
86 | }; | 86 | }; |
@@ -90,8 +90,8 @@ | |||
90 | #size-cells = <0>; | 90 | #size-cells = <0>; |
91 | cell-index = <1>; | 91 | cell-index = <1>; |
92 | compatible = "fsl-i2c"; | 92 | compatible = "fsl-i2c"; |
93 | reg = <3100 100>; | 93 | reg = <0x3100 0x100>; |
94 | interrupts = <2b 2>; | 94 | interrupts = <43 2>; |
95 | interrupt-parent = <&mpic>; | 95 | interrupt-parent = <&mpic>; |
96 | dfsrr; | 96 | dfsrr; |
97 | }; | 97 | }; |
@@ -100,30 +100,71 @@ | |||
100 | #address-cells = <1>; | 100 | #address-cells = <1>; |
101 | #size-cells = <0>; | 101 | #size-cells = <0>; |
102 | compatible = "fsl,gianfar-mdio"; | 102 | compatible = "fsl,gianfar-mdio"; |
103 | reg = <24520 20>; | 103 | reg = <0x24520 0x20>; |
104 | 104 | ||
105 | phy0: ethernet-phy@0 { | 105 | phy0: ethernet-phy@0 { |
106 | interrupt-parent = <&mpic>; | 106 | interrupt-parent = <&mpic>; |
107 | interrupts = <a 1>; | 107 | interrupts = <10 1>; |
108 | reg = <0>; | 108 | reg = <0x0>; |
109 | device_type = "ethernet-phy"; | 109 | device_type = "ethernet-phy"; |
110 | }; | 110 | }; |
111 | phy1: ethernet-phy@1 { | 111 | phy1: ethernet-phy@1 { |
112 | interrupt-parent = <&mpic>; | 112 | interrupt-parent = <&mpic>; |
113 | interrupts = <a 1>; | 113 | interrupts = <10 1>; |
114 | reg = <1>; | 114 | reg = <0x1>; |
115 | device_type = "ethernet-phy"; | 115 | device_type = "ethernet-phy"; |
116 | }; | 116 | }; |
117 | }; | 117 | }; |
118 | 118 | ||
119 | dma@21300 { | ||
120 | #address-cells = <1>; | ||
121 | #size-cells = <1>; | ||
122 | compatible = "fsl,mpc8544-dma", "fsl,eloplus-dma"; | ||
123 | reg = <0x21300 0x4>; | ||
124 | ranges = <0x0 0x21100 0x200>; | ||
125 | cell-index = <0>; | ||
126 | dma-channel@0 { | ||
127 | compatible = "fsl,mpc8544-dma-channel", | ||
128 | "fsl,eloplus-dma-channel"; | ||
129 | reg = <0x0 0x80>; | ||
130 | cell-index = <0>; | ||
131 | interrupt-parent = <&mpic>; | ||
132 | interrupts = <20 2>; | ||
133 | }; | ||
134 | dma-channel@80 { | ||
135 | compatible = "fsl,mpc8544-dma-channel", | ||
136 | "fsl,eloplus-dma-channel"; | ||
137 | reg = <0x80 0x80>; | ||
138 | cell-index = <1>; | ||
139 | interrupt-parent = <&mpic>; | ||
140 | interrupts = <21 2>; | ||
141 | }; | ||
142 | dma-channel@100 { | ||
143 | compatible = "fsl,mpc8544-dma-channel", | ||
144 | "fsl,eloplus-dma-channel"; | ||
145 | reg = <0x100 0x80>; | ||
146 | cell-index = <2>; | ||
147 | interrupt-parent = <&mpic>; | ||
148 | interrupts = <22 2>; | ||
149 | }; | ||
150 | dma-channel@180 { | ||
151 | compatible = "fsl,mpc8544-dma-channel", | ||
152 | "fsl,eloplus-dma-channel"; | ||
153 | reg = <0x180 0x80>; | ||
154 | cell-index = <3>; | ||
155 | interrupt-parent = <&mpic>; | ||
156 | interrupts = <23 2>; | ||
157 | }; | ||
158 | }; | ||
159 | |||
119 | enet0: ethernet@24000 { | 160 | enet0: ethernet@24000 { |
120 | cell-index = <0>; | 161 | cell-index = <0>; |
121 | device_type = "network"; | 162 | device_type = "network"; |
122 | model = "TSEC"; | 163 | model = "TSEC"; |
123 | compatible = "gianfar"; | 164 | compatible = "gianfar"; |
124 | reg = <24000 1000>; | 165 | reg = <0x24000 0x1000>; |
125 | local-mac-address = [ 00 00 00 00 00 00 ]; | 166 | local-mac-address = [ 00 00 00 00 00 00 ]; |
126 | interrupts = <1d 2 1e 2 22 2>; | 167 | interrupts = <29 2 30 2 34 2>; |
127 | interrupt-parent = <&mpic>; | 168 | interrupt-parent = <&mpic>; |
128 | phy-handle = <&phy0>; | 169 | phy-handle = <&phy0>; |
129 | phy-connection-type = "rgmii-id"; | 170 | phy-connection-type = "rgmii-id"; |
@@ -134,9 +175,9 @@ | |||
134 | device_type = "network"; | 175 | device_type = "network"; |
135 | model = "TSEC"; | 176 | model = "TSEC"; |
136 | compatible = "gianfar"; | 177 | compatible = "gianfar"; |
137 | reg = <26000 1000>; | 178 | reg = <0x26000 0x1000>; |
138 | local-mac-address = [ 00 00 00 00 00 00 ]; | 179 | local-mac-address = [ 00 00 00 00 00 00 ]; |
139 | interrupts = <1f 2 20 2 21 2>; | 180 | interrupts = <31 2 32 2 33 2>; |
140 | interrupt-parent = <&mpic>; | 181 | interrupt-parent = <&mpic>; |
141 | phy-handle = <&phy1>; | 182 | phy-handle = <&phy1>; |
142 | phy-connection-type = "rgmii-id"; | 183 | phy-connection-type = "rgmii-id"; |
@@ -146,9 +187,9 @@ | |||
146 | cell-index = <0>; | 187 | cell-index = <0>; |
147 | device_type = "serial"; | 188 | device_type = "serial"; |
148 | compatible = "ns16550"; | 189 | compatible = "ns16550"; |
149 | reg = <4500 100>; | 190 | reg = <0x4500 0x100>; |
150 | clock-frequency = <0>; | 191 | clock-frequency = <0>; |
151 | interrupts = <2a 2>; | 192 | interrupts = <42 2>; |
152 | interrupt-parent = <&mpic>; | 193 | interrupt-parent = <&mpic>; |
153 | }; | 194 | }; |
154 | 195 | ||
@@ -156,15 +197,15 @@ | |||
156 | cell-index = <1>; | 197 | cell-index = <1>; |
157 | device_type = "serial"; | 198 | device_type = "serial"; |
158 | compatible = "ns16550"; | 199 | compatible = "ns16550"; |
159 | reg = <4600 100>; | 200 | reg = <0x4600 0x100>; |
160 | clock-frequency = <0>; | 201 | clock-frequency = <0>; |
161 | interrupts = <2a 2>; | 202 | interrupts = <42 2>; |
162 | interrupt-parent = <&mpic>; | 203 | interrupt-parent = <&mpic>; |
163 | }; | 204 | }; |
164 | 205 | ||
165 | global-utilities@e0000 { //global utilities block | 206 | global-utilities@e0000 { //global utilities block |
166 | compatible = "fsl,mpc8548-guts"; | 207 | compatible = "fsl,mpc8548-guts"; |
167 | reg = <e0000 1000>; | 208 | reg = <0xe0000 0x1000>; |
168 | fsl,has-rstcr; | 209 | fsl,has-rstcr; |
169 | }; | 210 | }; |
170 | 211 | ||
@@ -173,7 +214,7 @@ | |||
173 | interrupt-controller; | 214 | interrupt-controller; |
174 | #address-cells = <0>; | 215 | #address-cells = <0>; |
175 | #interrupt-cells = <2>; | 216 | #interrupt-cells = <2>; |
176 | reg = <40000 40000>; | 217 | reg = <0x40000 0x40000>; |
177 | compatible = "chrp,open-pic"; | 218 | compatible = "chrp,open-pic"; |
178 | device_type = "open-pic"; | 219 | device_type = "open-pic"; |
179 | big-endian; | 220 | big-endian; |
@@ -184,32 +225,32 @@ | |||
184 | cell-index = <0>; | 225 | cell-index = <0>; |
185 | compatible = "fsl,mpc8540-pci"; | 226 | compatible = "fsl,mpc8540-pci"; |
186 | device_type = "pci"; | 227 | device_type = "pci"; |
187 | interrupt-map-mask = <f800 0 0 7>; | 228 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
188 | interrupt-map = < | 229 | interrupt-map = < |
189 | 230 | ||
190 | /* IDSEL 0x11 J17 Slot 1 */ | 231 | /* IDSEL 0x11 J17 Slot 1 */ |
191 | 8800 0 0 1 &mpic 2 1 | 232 | 0x8800 0x0 0x0 0x1 &mpic 0x2 0x1 |
192 | 8800 0 0 2 &mpic 3 1 | 233 | 0x8800 0x0 0x0 0x2 &mpic 0x3 0x1 |
193 | 8800 0 0 3 &mpic 4 1 | 234 | 0x8800 0x0 0x0 0x3 &mpic 0x4 0x1 |
194 | 8800 0 0 4 &mpic 1 1 | 235 | 0x8800 0x0 0x0 0x4 &mpic 0x1 0x1 |
195 | 236 | ||
196 | /* IDSEL 0x12 J16 Slot 2 */ | 237 | /* IDSEL 0x12 J16 Slot 2 */ |
197 | 238 | ||
198 | 9000 0 0 1 &mpic 3 1 | 239 | 0x9000 0x0 0x0 0x1 &mpic 0x3 0x1 |
199 | 9000 0 0 2 &mpic 4 1 | 240 | 0x9000 0x0 0x0 0x2 &mpic 0x4 0x1 |
200 | 9000 0 0 3 &mpic 2 1 | 241 | 0x9000 0x0 0x0 0x3 &mpic 0x2 0x1 |
201 | 9000 0 0 4 &mpic 1 1>; | 242 | 0x9000 0x0 0x0 0x4 &mpic 0x1 0x1>; |
202 | 243 | ||
203 | interrupt-parent = <&mpic>; | 244 | interrupt-parent = <&mpic>; |
204 | interrupts = <18 2>; | 245 | interrupts = <24 2>; |
205 | bus-range = <0 ff>; | 246 | bus-range = <0 255>; |
206 | ranges = <02000000 0 c0000000 c0000000 0 20000000 | 247 | ranges = <0x2000000 0x0 0xc0000000 0xc0000000 0x0 0x20000000 |
207 | 01000000 0 00000000 e1000000 0 00010000>; | 248 | 0x1000000 0x0 0x0 0xe1000000 0x0 0x10000>; |
208 | clock-frequency = <3f940aa>; | 249 | clock-frequency = <66666666>; |
209 | #interrupt-cells = <1>; | 250 | #interrupt-cells = <1>; |
210 | #size-cells = <2>; | 251 | #size-cells = <2>; |
211 | #address-cells = <3>; | 252 | #address-cells = <3>; |
212 | reg = <e0008000 1000>; | 253 | reg = <0xe0008000 0x1000>; |
213 | }; | 254 | }; |
214 | 255 | ||
215 | pci1: pcie@e0009000 { | 256 | pci1: pcie@e0009000 { |
@@ -219,33 +260,33 @@ | |||
219 | #interrupt-cells = <1>; | 260 | #interrupt-cells = <1>; |
220 | #size-cells = <2>; | 261 | #size-cells = <2>; |
221 | #address-cells = <3>; | 262 | #address-cells = <3>; |
222 | reg = <e0009000 1000>; | 263 | reg = <0xe0009000 0x1000>; |
223 | bus-range = <0 ff>; | 264 | bus-range = <0 255>; |
224 | ranges = <02000000 0 80000000 80000000 0 20000000 | 265 | ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
225 | 01000000 0 00000000 e1010000 0 00010000>; | 266 | 0x1000000 0x0 0x0 0xe1010000 0x0 0x10000>; |
226 | clock-frequency = <1fca055>; | 267 | clock-frequency = <33333333>; |
227 | interrupt-parent = <&mpic>; | 268 | interrupt-parent = <&mpic>; |
228 | interrupts = <1a 2>; | 269 | interrupts = <26 2>; |
229 | interrupt-map-mask = <f800 0 0 7>; | 270 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
230 | interrupt-map = < | 271 | interrupt-map = < |
231 | /* IDSEL 0x0 */ | 272 | /* IDSEL 0x0 */ |
232 | 0000 0 0 1 &mpic 4 1 | 273 | 0000 0x0 0x0 0x1 &mpic 0x4 0x1 |
233 | 0000 0 0 2 &mpic 5 1 | 274 | 0000 0x0 0x0 0x2 &mpic 0x5 0x1 |
234 | 0000 0 0 3 &mpic 6 1 | 275 | 0000 0x0 0x0 0x3 &mpic 0x6 0x1 |
235 | 0000 0 0 4 &mpic 7 1 | 276 | 0000 0x0 0x0 0x4 &mpic 0x7 0x1 |
236 | >; | 277 | >; |
237 | pcie@0 { | 278 | pcie@0 { |
238 | reg = <0 0 0 0 0>; | 279 | reg = <0x0 0x0 0x0 0x0 0x0>; |
239 | #size-cells = <2>; | 280 | #size-cells = <2>; |
240 | #address-cells = <3>; | 281 | #address-cells = <3>; |
241 | device_type = "pci"; | 282 | device_type = "pci"; |
242 | ranges = <02000000 0 80000000 | 283 | ranges = <0x2000000 0x0 0x80000000 |
243 | 02000000 0 80000000 | 284 | 0x2000000 0x0 0x80000000 |
244 | 0 20000000 | 285 | 0x0 0x20000000 |
245 | 286 | ||
246 | 01000000 0 00000000 | 287 | 0x1000000 0x0 0x0 |
247 | 01000000 0 00000000 | 288 | 0x1000000 0x0 0x0 |
248 | 0 00010000>; | 289 | 0x0 0x10000>; |
249 | }; | 290 | }; |
250 | }; | 291 | }; |
251 | 292 | ||
@@ -256,33 +297,33 @@ | |||
256 | #interrupt-cells = <1>; | 297 | #interrupt-cells = <1>; |
257 | #size-cells = <2>; | 298 | #size-cells = <2>; |
258 | #address-cells = <3>; | 299 | #address-cells = <3>; |
259 | reg = <e000a000 1000>; | 300 | reg = <0xe000a000 0x1000>; |
260 | bus-range = <0 ff>; | 301 | bus-range = <0 255>; |
261 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | 302 | ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000 |
262 | 01000000 0 00000000 e1020000 0 00010000>; | 303 | 0x1000000 0x0 0x0 0xe1020000 0x0 0x10000>; |
263 | clock-frequency = <1fca055>; | 304 | clock-frequency = <33333333>; |
264 | interrupt-parent = <&mpic>; | 305 | interrupt-parent = <&mpic>; |
265 | interrupts = <19 2>; | 306 | interrupts = <25 2>; |
266 | interrupt-map-mask = <f800 0 0 7>; | 307 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
267 | interrupt-map = < | 308 | interrupt-map = < |
268 | /* IDSEL 0x0 */ | 309 | /* IDSEL 0x0 */ |
269 | 0000 0 0 1 &mpic 0 1 | 310 | 0000 0x0 0x0 0x1 &mpic 0x0 0x1 |
270 | 0000 0 0 2 &mpic 1 1 | 311 | 0000 0x0 0x0 0x2 &mpic 0x1 0x1 |
271 | 0000 0 0 3 &mpic 2 1 | 312 | 0000 0x0 0x0 0x3 &mpic 0x2 0x1 |
272 | 0000 0 0 4 &mpic 3 1 | 313 | 0000 0x0 0x0 0x4 &mpic 0x3 0x1 |
273 | >; | 314 | >; |
274 | pcie@0 { | 315 | pcie@0 { |
275 | reg = <0 0 0 0 0>; | 316 | reg = <0x0 0x0 0x0 0x0 0x0>; |
276 | #size-cells = <2>; | 317 | #size-cells = <2>; |
277 | #address-cells = <3>; | 318 | #address-cells = <3>; |
278 | device_type = "pci"; | 319 | device_type = "pci"; |
279 | ranges = <02000000 0 a0000000 | 320 | ranges = <0x2000000 0x0 0xa0000000 |
280 | 02000000 0 a0000000 | 321 | 0x2000000 0x0 0xa0000000 |
281 | 0 10000000 | 322 | 0x0 0x10000000 |
282 | 323 | ||
283 | 01000000 0 00000000 | 324 | 0x1000000 0x0 0x0 |
284 | 01000000 0 00000000 | 325 | 0x1000000 0x0 0x0 |
285 | 0 00010000>; | 326 | 0x0 0x10000>; |
286 | }; | 327 | }; |
287 | }; | 328 | }; |
288 | 329 | ||
@@ -293,72 +334,72 @@ | |||
293 | #interrupt-cells = <1>; | 334 | #interrupt-cells = <1>; |
294 | #size-cells = <2>; | 335 | #size-cells = <2>; |
295 | #address-cells = <3>; | 336 | #address-cells = <3>; |
296 | reg = <e000b000 1000>; | 337 | reg = <0xe000b000 0x1000>; |
297 | bus-range = <0 ff>; | 338 | bus-range = <0 255>; |
298 | ranges = <02000000 0 b0000000 b0000000 0 00100000 | 339 | ranges = <0x2000000 0x0 0xb0000000 0xb0000000 0x0 0x100000 |
299 | 01000000 0 00000000 b0100000 0 00100000>; | 340 | 0x1000000 0x0 0x0 0xb0100000 0x0 0x100000>; |
300 | clock-frequency = <1fca055>; | 341 | clock-frequency = <33333333>; |
301 | interrupt-parent = <&mpic>; | 342 | interrupt-parent = <&mpic>; |
302 | interrupts = <1b 2>; | 343 | interrupts = <27 2>; |
303 | interrupt-map-mask = <ff00 0 0 1>; | 344 | interrupt-map-mask = <0xff00 0x0 0x0 0x1>; |
304 | interrupt-map = < | 345 | interrupt-map = < |
305 | // IDSEL 0x1c USB | 346 | // IDSEL 0x1c USB |
306 | e000 0 0 1 &i8259 c 2 | 347 | 0xe000 0x0 0x0 0x1 &i8259 0xc 0x2 |
307 | e100 0 0 2 &i8259 9 2 | 348 | 0xe100 0x0 0x0 0x2 &i8259 0x9 0x2 |
308 | e200 0 0 3 &i8259 a 2 | 349 | 0xe200 0x0 0x0 0x3 &i8259 0xa 0x2 |
309 | e300 0 0 4 &i8259 b 2 | 350 | 0xe300 0x0 0x0 0x4 &i8259 0xb 0x2 |
310 | 351 | ||
311 | // IDSEL 0x1d Audio | 352 | // IDSEL 0x1d Audio |
312 | e800 0 0 1 &i8259 6 2 | 353 | 0xe800 0x0 0x0 0x1 &i8259 0x6 0x2 |
313 | 354 | ||
314 | // IDSEL 0x1e Legacy | 355 | // IDSEL 0x1e Legacy |
315 | f000 0 0 1 &i8259 7 2 | 356 | 0xf000 0x0 0x0 0x1 &i8259 0x7 0x2 |
316 | f100 0 0 1 &i8259 7 2 | 357 | 0xf100 0x0 0x0 0x1 &i8259 0x7 0x2 |
317 | 358 | ||
318 | // IDSEL 0x1f IDE/SATA | 359 | // IDSEL 0x1f IDE/SATA |
319 | f800 0 0 1 &i8259 e 2 | 360 | 0xf800 0x0 0x0 0x1 &i8259 0xe 0x2 |
320 | f900 0 0 1 &i8259 5 2 | 361 | 0xf900 0x0 0x0 0x1 &i8259 0x5 0x2 |
321 | >; | 362 | >; |
322 | 363 | ||
323 | pcie@0 { | 364 | pcie@0 { |
324 | reg = <0 0 0 0 0>; | 365 | reg = <0x0 0x0 0x0 0x0 0x0>; |
325 | #size-cells = <2>; | 366 | #size-cells = <2>; |
326 | #address-cells = <3>; | 367 | #address-cells = <3>; |
327 | device_type = "pci"; | 368 | device_type = "pci"; |
328 | ranges = <02000000 0 b0000000 | 369 | ranges = <0x2000000 0x0 0xb0000000 |
329 | 02000000 0 b0000000 | 370 | 0x2000000 0x0 0xb0000000 |
330 | 0 00100000 | 371 | 0x0 0x100000 |
331 | 372 | ||
332 | 01000000 0 00000000 | 373 | 0x1000000 0x0 0x0 |
333 | 01000000 0 00000000 | 374 | 0x1000000 0x0 0x0 |
334 | 0 00100000>; | 375 | 0x0 0x100000>; |
335 | 376 | ||
336 | uli1575@0 { | 377 | uli1575@0 { |
337 | reg = <0 0 0 0 0>; | 378 | reg = <0x0 0x0 0x0 0x0 0x0>; |
338 | #size-cells = <2>; | 379 | #size-cells = <2>; |
339 | #address-cells = <3>; | 380 | #address-cells = <3>; |
340 | ranges = <02000000 0 b0000000 | 381 | ranges = <0x2000000 0x0 0xb0000000 |
341 | 02000000 0 b0000000 | 382 | 0x2000000 0x0 0xb0000000 |
342 | 0 00100000 | 383 | 0x0 0x100000 |
343 | 384 | ||
344 | 01000000 0 00000000 | 385 | 0x1000000 0x0 0x0 |
345 | 01000000 0 00000000 | 386 | 0x1000000 0x0 0x0 |
346 | 0 00100000>; | 387 | 0x0 0x100000>; |
347 | isa@1e { | 388 | isa@1e { |
348 | device_type = "isa"; | 389 | device_type = "isa"; |
349 | #interrupt-cells = <2>; | 390 | #interrupt-cells = <2>; |
350 | #size-cells = <1>; | 391 | #size-cells = <1>; |
351 | #address-cells = <2>; | 392 | #address-cells = <2>; |
352 | reg = <f000 0 0 0 0>; | 393 | reg = <0xf000 0x0 0x0 0x0 0x0>; |
353 | ranges = <1 0 | 394 | ranges = <0x1 0x0 |
354 | 01000000 0 0 | 395 | 0x1000000 0x0 0x0 |
355 | 00001000>; | 396 | 0x1000>; |
356 | interrupt-parent = <&i8259>; | 397 | interrupt-parent = <&i8259>; |
357 | 398 | ||
358 | i8259: interrupt-controller@20 { | 399 | i8259: interrupt-controller@20 { |
359 | reg = <1 20 2 | 400 | reg = <0x1 0x20 0x2 |
360 | 1 a0 2 | 401 | 0x1 0xa0 0x2 |
361 | 1 4d0 2>; | 402 | 0x1 0x4d0 0x2>; |
362 | interrupt-controller; | 403 | interrupt-controller; |
363 | device_type = "interrupt-controller"; | 404 | device_type = "interrupt-controller"; |
364 | #address-cells = <0>; | 405 | #address-cells = <0>; |
@@ -371,28 +412,28 @@ | |||
371 | i8042@60 { | 412 | i8042@60 { |
372 | #size-cells = <0>; | 413 | #size-cells = <0>; |
373 | #address-cells = <1>; | 414 | #address-cells = <1>; |
374 | reg = <1 60 1 1 64 1>; | 415 | reg = <0x1 0x60 0x1 0x1 0x64 0x1>; |
375 | interrupts = <1 3 c 3>; | 416 | interrupts = <1 3 12 3>; |
376 | interrupt-parent = <&i8259>; | 417 | interrupt-parent = <&i8259>; |
377 | 418 | ||
378 | keyboard@0 { | 419 | keyboard@0 { |
379 | reg = <0>; | 420 | reg = <0x0>; |
380 | compatible = "pnpPNP,303"; | 421 | compatible = "pnpPNP,303"; |
381 | }; | 422 | }; |
382 | 423 | ||
383 | mouse@1 { | 424 | mouse@1 { |
384 | reg = <1>; | 425 | reg = <0x1>; |
385 | compatible = "pnpPNP,f03"; | 426 | compatible = "pnpPNP,f03"; |
386 | }; | 427 | }; |
387 | }; | 428 | }; |
388 | 429 | ||
389 | rtc@70 { | 430 | rtc@70 { |
390 | compatible = "pnpPNP,b00"; | 431 | compatible = "pnpPNP,b00"; |
391 | reg = <1 70 2>; | 432 | reg = <0x1 0x70 0x2>; |
392 | }; | 433 | }; |
393 | 434 | ||
394 | gpio@400 { | 435 | gpio@400 { |
395 | reg = <1 400 80>; | 436 | reg = <0x1 0x400 0x80>; |
396 | }; | 437 | }; |
397 | }; | 438 | }; |
398 | }; | 439 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts index 1f470c6a1c63..fa298a8c81cc 100644 --- a/arch/powerpc/boot/dts/mpc8548cds.dts +++ b/arch/powerpc/boot/dts/mpc8548cds.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8548 CDS Device Tree Source | 2 | * MPC8548 CDS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 Freescale Semiconductor Inc. | 4 | * Copyright 2006, 2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,7 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
12 | 13 | ||
13 | / { | 14 | / { |
14 | model = "MPC8548CDS"; | 15 | model = "MPC8548CDS"; |
@@ -36,11 +37,11 @@ | |||
36 | 37 | ||
37 | PowerPC,8548@0 { | 38 | PowerPC,8548@0 { |
38 | device_type = "cpu"; | 39 | device_type = "cpu"; |
39 | reg = <0>; | 40 | reg = <0x0>; |
40 | d-cache-line-size = <20>; // 32 bytes | 41 | d-cache-line-size = <32>; // 32 bytes |
41 | i-cache-line-size = <20>; // 32 bytes | 42 | i-cache-line-size = <32>; // 32 bytes |
42 | d-cache-size = <8000>; // L1, 32K | 43 | d-cache-size = <0x8000>; // L1, 32K |
43 | i-cache-size = <8000>; // L1, 32K | 44 | i-cache-size = <0x8000>; // L1, 32K |
44 | timebase-frequency = <0>; // 33 MHz, from uboot | 45 | timebase-frequency = <0>; // 33 MHz, from uboot |
45 | bus-frequency = <0>; // 166 MHz | 46 | bus-frequency = <0>; // 166 MHz |
46 | clock-frequency = <0>; // 825 MHz, from uboot | 47 | clock-frequency = <0>; // 825 MHz, from uboot |
@@ -49,31 +50,31 @@ | |||
49 | 50 | ||
50 | memory { | 51 | memory { |
51 | device_type = "memory"; | 52 | device_type = "memory"; |
52 | reg = <00000000 08000000>; // 128M at 0x0 | 53 | reg = <0x0 0x8000000>; // 128M at 0x0 |
53 | }; | 54 | }; |
54 | 55 | ||
55 | soc8548@e0000000 { | 56 | soc8548@e0000000 { |
56 | #address-cells = <1>; | 57 | #address-cells = <1>; |
57 | #size-cells = <1>; | 58 | #size-cells = <1>; |
58 | device_type = "soc"; | 59 | device_type = "soc"; |
59 | ranges = <00000000 e0000000 00100000>; | 60 | ranges = <0x0 0xe0000000 0x100000>; |
60 | reg = <e0000000 00001000>; // CCSRBAR | 61 | reg = <0xe0000000 0x1000>; // CCSRBAR |
61 | bus-frequency = <0>; | 62 | bus-frequency = <0>; |
62 | 63 | ||
63 | memory-controller@2000 { | 64 | memory-controller@2000 { |
64 | compatible = "fsl,8548-memory-controller"; | 65 | compatible = "fsl,8548-memory-controller"; |
65 | reg = <2000 1000>; | 66 | reg = <0x2000 0x1000>; |
66 | interrupt-parent = <&mpic>; | 67 | interrupt-parent = <&mpic>; |
67 | interrupts = <12 2>; | 68 | interrupts = <18 2>; |
68 | }; | 69 | }; |
69 | 70 | ||
70 | l2-cache-controller@20000 { | 71 | l2-cache-controller@20000 { |
71 | compatible = "fsl,8548-l2-cache-controller"; | 72 | compatible = "fsl,8548-l2-cache-controller"; |
72 | reg = <20000 1000>; | 73 | reg = <0x20000 0x1000>; |
73 | cache-line-size = <20>; // 32 bytes | 74 | cache-line-size = <32>; // 32 bytes |
74 | cache-size = <80000>; // L2, 512K | 75 | cache-size = <0x80000>; // L2, 512K |
75 | interrupt-parent = <&mpic>; | 76 | interrupt-parent = <&mpic>; |
76 | interrupts = <10 2>; | 77 | interrupts = <16 2>; |
77 | }; | 78 | }; |
78 | 79 | ||
79 | i2c@3000 { | 80 | i2c@3000 { |
@@ -81,8 +82,8 @@ | |||
81 | #size-cells = <0>; | 82 | #size-cells = <0>; |
82 | cell-index = <0>; | 83 | cell-index = <0>; |
83 | compatible = "fsl-i2c"; | 84 | compatible = "fsl-i2c"; |
84 | reg = <3000 100>; | 85 | reg = <0x3000 0x100>; |
85 | interrupts = <2b 2>; | 86 | interrupts = <43 2>; |
86 | interrupt-parent = <&mpic>; | 87 | interrupt-parent = <&mpic>; |
87 | dfsrr; | 88 | dfsrr; |
88 | }; | 89 | }; |
@@ -92,8 +93,8 @@ | |||
92 | #size-cells = <0>; | 93 | #size-cells = <0>; |
93 | cell-index = <1>; | 94 | cell-index = <1>; |
94 | compatible = "fsl-i2c"; | 95 | compatible = "fsl-i2c"; |
95 | reg = <3100 100>; | 96 | reg = <0x3100 0x100>; |
96 | interrupts = <2b 2>; | 97 | interrupts = <43 2>; |
97 | interrupt-parent = <&mpic>; | 98 | interrupt-parent = <&mpic>; |
98 | dfsrr; | 99 | dfsrr; |
99 | }; | 100 | }; |
@@ -102,30 +103,30 @@ | |||
102 | #address-cells = <1>; | 103 | #address-cells = <1>; |
103 | #size-cells = <0>; | 104 | #size-cells = <0>; |
104 | compatible = "fsl,gianfar-mdio"; | 105 | compatible = "fsl,gianfar-mdio"; |
105 | reg = <24520 20>; | 106 | reg = <0x24520 0x20>; |
106 | 107 | ||
107 | phy0: ethernet-phy@0 { | 108 | phy0: ethernet-phy@0 { |
108 | interrupt-parent = <&mpic>; | 109 | interrupt-parent = <&mpic>; |
109 | interrupts = <5 1>; | 110 | interrupts = <5 1>; |
110 | reg = <0>; | 111 | reg = <0x0>; |
111 | device_type = "ethernet-phy"; | 112 | device_type = "ethernet-phy"; |
112 | }; | 113 | }; |
113 | phy1: ethernet-phy@1 { | 114 | phy1: ethernet-phy@1 { |
114 | interrupt-parent = <&mpic>; | 115 | interrupt-parent = <&mpic>; |
115 | interrupts = <5 1>; | 116 | interrupts = <5 1>; |
116 | reg = <1>; | 117 | reg = <0x1>; |
117 | device_type = "ethernet-phy"; | 118 | device_type = "ethernet-phy"; |
118 | }; | 119 | }; |
119 | phy2: ethernet-phy@2 { | 120 | phy2: ethernet-phy@2 { |
120 | interrupt-parent = <&mpic>; | 121 | interrupt-parent = <&mpic>; |
121 | interrupts = <5 1>; | 122 | interrupts = <5 1>; |
122 | reg = <2>; | 123 | reg = <0x2>; |
123 | device_type = "ethernet-phy"; | 124 | device_type = "ethernet-phy"; |
124 | }; | 125 | }; |
125 | phy3: ethernet-phy@3 { | 126 | phy3: ethernet-phy@3 { |
126 | interrupt-parent = <&mpic>; | 127 | interrupt-parent = <&mpic>; |
127 | interrupts = <5 1>; | 128 | interrupts = <5 1>; |
128 | reg = <3>; | 129 | reg = <0x3>; |
129 | device_type = "ethernet-phy"; | 130 | device_type = "ethernet-phy"; |
130 | }; | 131 | }; |
131 | }; | 132 | }; |
@@ -135,9 +136,9 @@ | |||
135 | device_type = "network"; | 136 | device_type = "network"; |
136 | model = "eTSEC"; | 137 | model = "eTSEC"; |
137 | compatible = "gianfar"; | 138 | compatible = "gianfar"; |
138 | reg = <24000 1000>; | 139 | reg = <0x24000 0x1000>; |
139 | local-mac-address = [ 00 00 00 00 00 00 ]; | 140 | local-mac-address = [ 00 00 00 00 00 00 ]; |
140 | interrupts = <1d 2 1e 2 22 2>; | 141 | interrupts = <29 2 30 2 34 2>; |
141 | interrupt-parent = <&mpic>; | 142 | interrupt-parent = <&mpic>; |
142 | phy-handle = <&phy0>; | 143 | phy-handle = <&phy0>; |
143 | }; | 144 | }; |
@@ -147,9 +148,9 @@ | |||
147 | device_type = "network"; | 148 | device_type = "network"; |
148 | model = "eTSEC"; | 149 | model = "eTSEC"; |
149 | compatible = "gianfar"; | 150 | compatible = "gianfar"; |
150 | reg = <25000 1000>; | 151 | reg = <0x25000 0x1000>; |
151 | local-mac-address = [ 00 00 00 00 00 00 ]; | 152 | local-mac-address = [ 00 00 00 00 00 00 ]; |
152 | interrupts = <23 2 24 2 28 2>; | 153 | interrupts = <35 2 36 2 40 2>; |
153 | interrupt-parent = <&mpic>; | 154 | interrupt-parent = <&mpic>; |
154 | phy-handle = <&phy1>; | 155 | phy-handle = <&phy1>; |
155 | }; | 156 | }; |
@@ -160,9 +161,9 @@ | |||
160 | device_type = "network"; | 161 | device_type = "network"; |
161 | model = "eTSEC"; | 162 | model = "eTSEC"; |
162 | compatible = "gianfar"; | 163 | compatible = "gianfar"; |
163 | reg = <26000 1000>; | 164 | reg = <0x26000 0x1000>; |
164 | local-mac-address = [ 00 00 00 00 00 00 ]; | 165 | local-mac-address = [ 00 00 00 00 00 00 ]; |
165 | interrupts = <1f 2 20 2 21 2>; | 166 | interrupts = <31 2 32 2 33 2>; |
166 | interrupt-parent = <&mpic>; | 167 | interrupt-parent = <&mpic>; |
167 | phy-handle = <&phy2>; | 168 | phy-handle = <&phy2>; |
168 | }; | 169 | }; |
@@ -172,9 +173,9 @@ | |||
172 | device_type = "network"; | 173 | device_type = "network"; |
173 | model = "eTSEC"; | 174 | model = "eTSEC"; |
174 | compatible = "gianfar"; | 175 | compatible = "gianfar"; |
175 | reg = <27000 1000>; | 176 | reg = <0x27000 0x1000>; |
176 | local-mac-address = [ 00 00 00 00 00 00 ]; | 177 | local-mac-address = [ 00 00 00 00 00 00 ]; |
177 | interrupts = <25 2 26 2 27 2>; | 178 | interrupts = <37 2 38 2 39 2>; |
178 | interrupt-parent = <&mpic>; | 179 | interrupt-parent = <&mpic>; |
179 | phy-handle = <&phy3>; | 180 | phy-handle = <&phy3>; |
180 | }; | 181 | }; |
@@ -184,9 +185,9 @@ | |||
184 | cell-index = <0>; | 185 | cell-index = <0>; |
185 | device_type = "serial"; | 186 | device_type = "serial"; |
186 | compatible = "ns16550"; | 187 | compatible = "ns16550"; |
187 | reg = <4500 100>; // reg base, size | 188 | reg = <0x4500 0x100>; // reg base, size |
188 | clock-frequency = <0>; // should we fill in in uboot? | 189 | clock-frequency = <0>; // should we fill in in uboot? |
189 | interrupts = <2a 2>; | 190 | interrupts = <42 2>; |
190 | interrupt-parent = <&mpic>; | 191 | interrupt-parent = <&mpic>; |
191 | }; | 192 | }; |
192 | 193 | ||
@@ -194,15 +195,15 @@ | |||
194 | cell-index = <1>; | 195 | cell-index = <1>; |
195 | device_type = "serial"; | 196 | device_type = "serial"; |
196 | compatible = "ns16550"; | 197 | compatible = "ns16550"; |
197 | reg = <4600 100>; // reg base, size | 198 | reg = <0x4600 0x100>; // reg base, size |
198 | clock-frequency = <0>; // should we fill in in uboot? | 199 | clock-frequency = <0>; // should we fill in in uboot? |
199 | interrupts = <2a 2>; | 200 | interrupts = <42 2>; |
200 | interrupt-parent = <&mpic>; | 201 | interrupt-parent = <&mpic>; |
201 | }; | 202 | }; |
202 | 203 | ||
203 | global-utilities@e0000 { //global utilities reg | 204 | global-utilities@e0000 { //global utilities reg |
204 | compatible = "fsl,mpc8548-guts"; | 205 | compatible = "fsl,mpc8548-guts"; |
205 | reg = <e0000 1000>; | 206 | reg = <0xe0000 0x1000>; |
206 | fsl,has-rstcr; | 207 | fsl,has-rstcr; |
207 | }; | 208 | }; |
208 | 209 | ||
@@ -211,7 +212,7 @@ | |||
211 | interrupt-controller; | 212 | interrupt-controller; |
212 | #address-cells = <0>; | 213 | #address-cells = <0>; |
213 | #interrupt-cells = <2>; | 214 | #interrupt-cells = <2>; |
214 | reg = <40000 40000>; | 215 | reg = <0x40000 0x40000>; |
215 | compatible = "chrp,open-pic"; | 216 | compatible = "chrp,open-pic"; |
216 | device_type = "open-pic"; | 217 | device_type = "open-pic"; |
217 | big-endian; | 218 | big-endian; |
@@ -220,139 +221,139 @@ | |||
220 | 221 | ||
221 | pci0: pci@e0008000 { | 222 | pci0: pci@e0008000 { |
222 | cell-index = <0>; | 223 | cell-index = <0>; |
223 | interrupt-map-mask = <f800 0 0 7>; | 224 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
224 | interrupt-map = < | 225 | interrupt-map = < |
225 | /* IDSEL 0x4 (PCIX Slot 2) */ | 226 | /* IDSEL 0x4 (PCIX Slot 2) */ |
226 | 02000 0 0 1 &mpic 0 1 | 227 | 0x2000 0x0 0x0 0x1 &mpic 0x0 0x1 |
227 | 02000 0 0 2 &mpic 1 1 | 228 | 0x2000 0x0 0x0 0x2 &mpic 0x1 0x1 |
228 | 02000 0 0 3 &mpic 2 1 | 229 | 0x2000 0x0 0x0 0x3 &mpic 0x2 0x1 |
229 | 02000 0 0 4 &mpic 3 1 | 230 | 0x2000 0x0 0x0 0x4 &mpic 0x3 0x1 |
230 | 231 | ||
231 | /* IDSEL 0x5 (PCIX Slot 3) */ | 232 | /* IDSEL 0x5 (PCIX Slot 3) */ |
232 | 02800 0 0 1 &mpic 1 1 | 233 | 0x2800 0x0 0x0 0x1 &mpic 0x1 0x1 |
233 | 02800 0 0 2 &mpic 2 1 | 234 | 0x2800 0x0 0x0 0x2 &mpic 0x2 0x1 |
234 | 02800 0 0 3 &mpic 3 1 | 235 | 0x2800 0x0 0x0 0x3 &mpic 0x3 0x1 |
235 | 02800 0 0 4 &mpic 0 1 | 236 | 0x2800 0x0 0x0 0x4 &mpic 0x0 0x1 |
236 | 237 | ||
237 | /* IDSEL 0x6 (PCIX Slot 4) */ | 238 | /* IDSEL 0x6 (PCIX Slot 4) */ |
238 | 03000 0 0 1 &mpic 2 1 | 239 | 0x3000 0x0 0x0 0x1 &mpic 0x2 0x1 |
239 | 03000 0 0 2 &mpic 3 1 | 240 | 0x3000 0x0 0x0 0x2 &mpic 0x3 0x1 |
240 | 03000 0 0 3 &mpic 0 1 | 241 | 0x3000 0x0 0x0 0x3 &mpic 0x0 0x1 |
241 | 03000 0 0 4 &mpic 1 1 | 242 | 0x3000 0x0 0x0 0x4 &mpic 0x1 0x1 |
242 | 243 | ||
243 | /* IDSEL 0x8 (PCIX Slot 5) */ | 244 | /* IDSEL 0x8 (PCIX Slot 5) */ |
244 | 04000 0 0 1 &mpic 0 1 | 245 | 0x4000 0x0 0x0 0x1 &mpic 0x0 0x1 |
245 | 04000 0 0 2 &mpic 1 1 | 246 | 0x4000 0x0 0x0 0x2 &mpic 0x1 0x1 |
246 | 04000 0 0 3 &mpic 2 1 | 247 | 0x4000 0x0 0x0 0x3 &mpic 0x2 0x1 |
247 | 04000 0 0 4 &mpic 3 1 | 248 | 0x4000 0x0 0x0 0x4 &mpic 0x3 0x1 |
248 | 249 | ||
249 | /* IDSEL 0xC (Tsi310 bridge) */ | 250 | /* IDSEL 0xC (Tsi310 bridge) */ |
250 | 06000 0 0 1 &mpic 0 1 | 251 | 0x6000 0x0 0x0 0x1 &mpic 0x0 0x1 |
251 | 06000 0 0 2 &mpic 1 1 | 252 | 0x6000 0x0 0x0 0x2 &mpic 0x1 0x1 |
252 | 06000 0 0 3 &mpic 2 1 | 253 | 0x6000 0x0 0x0 0x3 &mpic 0x2 0x1 |
253 | 06000 0 0 4 &mpic 3 1 | 254 | 0x6000 0x0 0x0 0x4 &mpic 0x3 0x1 |
254 | 255 | ||
255 | /* IDSEL 0x14 (Slot 2) */ | 256 | /* IDSEL 0x14 (Slot 2) */ |
256 | 0a000 0 0 1 &mpic 0 1 | 257 | 0xa000 0x0 0x0 0x1 &mpic 0x0 0x1 |
257 | 0a000 0 0 2 &mpic 1 1 | 258 | 0xa000 0x0 0x0 0x2 &mpic 0x1 0x1 |
258 | 0a000 0 0 3 &mpic 2 1 | 259 | 0xa000 0x0 0x0 0x3 &mpic 0x2 0x1 |
259 | 0a000 0 0 4 &mpic 3 1 | 260 | 0xa000 0x0 0x0 0x4 &mpic 0x3 0x1 |
260 | 261 | ||
261 | /* IDSEL 0x15 (Slot 3) */ | 262 | /* IDSEL 0x15 (Slot 3) */ |
262 | 0a800 0 0 1 &mpic 1 1 | 263 | 0xa800 0x0 0x0 0x1 &mpic 0x1 0x1 |
263 | 0a800 0 0 2 &mpic 2 1 | 264 | 0xa800 0x0 0x0 0x2 &mpic 0x2 0x1 |
264 | 0a800 0 0 3 &mpic 3 1 | 265 | 0xa800 0x0 0x0 0x3 &mpic 0x3 0x1 |
265 | 0a800 0 0 4 &mpic 0 1 | 266 | 0xa800 0x0 0x0 0x4 &mpic 0x0 0x1 |
266 | 267 | ||
267 | /* IDSEL 0x16 (Slot 4) */ | 268 | /* IDSEL 0x16 (Slot 4) */ |
268 | 0b000 0 0 1 &mpic 2 1 | 269 | 0xb000 0x0 0x0 0x1 &mpic 0x2 0x1 |
269 | 0b000 0 0 2 &mpic 3 1 | 270 | 0xb000 0x0 0x0 0x2 &mpic 0x3 0x1 |
270 | 0b000 0 0 3 &mpic 0 1 | 271 | 0xb000 0x0 0x0 0x3 &mpic 0x0 0x1 |
271 | 0b000 0 0 4 &mpic 1 1 | 272 | 0xb000 0x0 0x0 0x4 &mpic 0x1 0x1 |
272 | 273 | ||
273 | /* IDSEL 0x18 (Slot 5) */ | 274 | /* IDSEL 0x18 (Slot 5) */ |
274 | 0c000 0 0 1 &mpic 0 1 | 275 | 0xc000 0x0 0x0 0x1 &mpic 0x0 0x1 |
275 | 0c000 0 0 2 &mpic 1 1 | 276 | 0xc000 0x0 0x0 0x2 &mpic 0x1 0x1 |
276 | 0c000 0 0 3 &mpic 2 1 | 277 | 0xc000 0x0 0x0 0x3 &mpic 0x2 0x1 |
277 | 0c000 0 0 4 &mpic 3 1 | 278 | 0xc000 0x0 0x0 0x4 &mpic 0x3 0x1 |
278 | 279 | ||
279 | /* IDSEL 0x1C (Tsi310 bridge PCI primary) */ | 280 | /* IDSEL 0x1C (Tsi310 bridge PCI primary) */ |
280 | 0E000 0 0 1 &mpic 0 1 | 281 | 0xe000 0x0 0x0 0x1 &mpic 0x0 0x1 |
281 | 0E000 0 0 2 &mpic 1 1 | 282 | 0xe000 0x0 0x0 0x2 &mpic 0x1 0x1 |
282 | 0E000 0 0 3 &mpic 2 1 | 283 | 0xe000 0x0 0x0 0x3 &mpic 0x2 0x1 |
283 | 0E000 0 0 4 &mpic 3 1>; | 284 | 0xe000 0x0 0x0 0x4 &mpic 0x3 0x1>; |
284 | 285 | ||
285 | interrupt-parent = <&mpic>; | 286 | interrupt-parent = <&mpic>; |
286 | interrupts = <18 2>; | 287 | interrupts = <24 2>; |
287 | bus-range = <0 0>; | 288 | bus-range = <0 0>; |
288 | ranges = <02000000 0 80000000 80000000 0 10000000 | 289 | ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x10000000 |
289 | 01000000 0 00000000 e2000000 0 00800000>; | 290 | 0x1000000 0x0 0x0 0xe2000000 0x0 0x800000>; |
290 | clock-frequency = <3f940aa>; | 291 | clock-frequency = <66666666>; |
291 | #interrupt-cells = <1>; | 292 | #interrupt-cells = <1>; |
292 | #size-cells = <2>; | 293 | #size-cells = <2>; |
293 | #address-cells = <3>; | 294 | #address-cells = <3>; |
294 | reg = <e0008000 1000>; | 295 | reg = <0xe0008000 0x1000>; |
295 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | 296 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; |
296 | device_type = "pci"; | 297 | device_type = "pci"; |
297 | 298 | ||
298 | pci_bridge@1c { | 299 | pci_bridge@1c { |
299 | interrupt-map-mask = <f800 0 0 7>; | 300 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
300 | interrupt-map = < | 301 | interrupt-map = < |
301 | 302 | ||
302 | /* IDSEL 0x00 (PrPMC Site) */ | 303 | /* IDSEL 0x00 (PrPMC Site) */ |
303 | 0000 0 0 1 &mpic 0 1 | 304 | 0000 0x0 0x0 0x1 &mpic 0x0 0x1 |
304 | 0000 0 0 2 &mpic 1 1 | 305 | 0000 0x0 0x0 0x2 &mpic 0x1 0x1 |
305 | 0000 0 0 3 &mpic 2 1 | 306 | 0000 0x0 0x0 0x3 &mpic 0x2 0x1 |
306 | 0000 0 0 4 &mpic 3 1 | 307 | 0000 0x0 0x0 0x4 &mpic 0x3 0x1 |
307 | 308 | ||
308 | /* IDSEL 0x04 (VIA chip) */ | 309 | /* IDSEL 0x04 (VIA chip) */ |
309 | 2000 0 0 1 &mpic 0 1 | 310 | 0x2000 0x0 0x0 0x1 &mpic 0x0 0x1 |
310 | 2000 0 0 2 &mpic 1 1 | 311 | 0x2000 0x0 0x0 0x2 &mpic 0x1 0x1 |
311 | 2000 0 0 3 &mpic 2 1 | 312 | 0x2000 0x0 0x0 0x3 &mpic 0x2 0x1 |
312 | 2000 0 0 4 &mpic 3 1 | 313 | 0x2000 0x0 0x0 0x4 &mpic 0x3 0x1 |
313 | 314 | ||
314 | /* IDSEL 0x05 (8139) */ | 315 | /* IDSEL 0x05 (8139) */ |
315 | 2800 0 0 1 &mpic 1 1 | 316 | 0x2800 0x0 0x0 0x1 &mpic 0x1 0x1 |
316 | 317 | ||
317 | /* IDSEL 0x06 (Slot 6) */ | 318 | /* IDSEL 0x06 (Slot 6) */ |
318 | 3000 0 0 1 &mpic 2 1 | 319 | 0x3000 0x0 0x0 0x1 &mpic 0x2 0x1 |
319 | 3000 0 0 2 &mpic 3 1 | 320 | 0x3000 0x0 0x0 0x2 &mpic 0x3 0x1 |
320 | 3000 0 0 3 &mpic 0 1 | 321 | 0x3000 0x0 0x0 0x3 &mpic 0x0 0x1 |
321 | 3000 0 0 4 &mpic 1 1 | 322 | 0x3000 0x0 0x0 0x4 &mpic 0x1 0x1 |
322 | 323 | ||
323 | /* IDESL 0x07 (Slot 7) */ | 324 | /* IDESL 0x07 (Slot 7) */ |
324 | 3800 0 0 1 &mpic 3 1 | 325 | 0x3800 0x0 0x0 0x1 &mpic 0x3 0x1 |
325 | 3800 0 0 2 &mpic 0 1 | 326 | 0x3800 0x0 0x0 0x2 &mpic 0x0 0x1 |
326 | 3800 0 0 3 &mpic 1 1 | 327 | 0x3800 0x0 0x0 0x3 &mpic 0x1 0x1 |
327 | 3800 0 0 4 &mpic 2 1>; | 328 | 0x3800 0x0 0x0 0x4 &mpic 0x2 0x1>; |
328 | 329 | ||
329 | reg = <e000 0 0 0 0>; | 330 | reg = <0xe000 0x0 0x0 0x0 0x0>; |
330 | #interrupt-cells = <1>; | 331 | #interrupt-cells = <1>; |
331 | #size-cells = <2>; | 332 | #size-cells = <2>; |
332 | #address-cells = <3>; | 333 | #address-cells = <3>; |
333 | ranges = <02000000 0 80000000 | 334 | ranges = <0x2000000 0x0 0x80000000 |
334 | 02000000 0 80000000 | 335 | 0x2000000 0x0 0x80000000 |
335 | 0 20000000 | 336 | 0x0 0x20000000 |
336 | 01000000 0 00000000 | 337 | 0x1000000 0x0 0x0 |
337 | 01000000 0 00000000 | 338 | 0x1000000 0x0 0x0 |
338 | 0 00080000>; | 339 | 0x0 0x80000>; |
339 | clock-frequency = <1fca055>; | 340 | clock-frequency = <33333333>; |
340 | 341 | ||
341 | isa@4 { | 342 | isa@4 { |
342 | device_type = "isa"; | 343 | device_type = "isa"; |
343 | #interrupt-cells = <2>; | 344 | #interrupt-cells = <2>; |
344 | #size-cells = <1>; | 345 | #size-cells = <1>; |
345 | #address-cells = <2>; | 346 | #address-cells = <2>; |
346 | reg = <2000 0 0 0 0>; | 347 | reg = <0x2000 0x0 0x0 0x0 0x0>; |
347 | ranges = <1 0 01000000 0 0 00001000>; | 348 | ranges = <0x1 0x0 0x1000000 0x0 0x0 0x1000>; |
348 | interrupt-parent = <&i8259>; | 349 | interrupt-parent = <&i8259>; |
349 | 350 | ||
350 | i8259: interrupt-controller@20 { | 351 | i8259: interrupt-controller@20 { |
351 | interrupt-controller; | 352 | interrupt-controller; |
352 | device_type = "interrupt-controller"; | 353 | device_type = "interrupt-controller"; |
353 | reg = <1 20 2 | 354 | reg = <0x1 0x20 0x2 |
354 | 1 a0 2 | 355 | 0x1 0xa0 0x2 |
355 | 1 4d0 2>; | 356 | 0x1 0x4d0 0x2>; |
356 | #address-cells = <0>; | 357 | #address-cells = <0>; |
357 | #interrupt-cells = <2>; | 358 | #interrupt-cells = <2>; |
358 | compatible = "chrp,iic"; | 359 | compatible = "chrp,iic"; |
@@ -362,7 +363,7 @@ | |||
362 | 363 | ||
363 | rtc@70 { | 364 | rtc@70 { |
364 | compatible = "pnpPNP,b00"; | 365 | compatible = "pnpPNP,b00"; |
365 | reg = <1 70 2>; | 366 | reg = <0x1 0x70 0x2>; |
366 | }; | 367 | }; |
367 | }; | 368 | }; |
368 | }; | 369 | }; |
@@ -370,64 +371,64 @@ | |||
370 | 371 | ||
371 | pci1: pci@e0009000 { | 372 | pci1: pci@e0009000 { |
372 | cell-index = <1>; | 373 | cell-index = <1>; |
373 | interrupt-map-mask = <f800 0 0 7>; | 374 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
374 | interrupt-map = < | 375 | interrupt-map = < |
375 | 376 | ||
376 | /* IDSEL 0x15 */ | 377 | /* IDSEL 0x15 */ |
377 | a800 0 0 1 &mpic b 1 | 378 | 0xa800 0x0 0x0 0x1 &mpic 0xb 0x1 |
378 | a800 0 0 2 &mpic 1 1 | 379 | 0xa800 0x0 0x0 0x2 &mpic 0x1 0x1 |
379 | a800 0 0 3 &mpic 2 1 | 380 | 0xa800 0x0 0x0 0x3 &mpic 0x2 0x1 |
380 | a800 0 0 4 &mpic 3 1>; | 381 | 0xa800 0x0 0x0 0x4 &mpic 0x3 0x1>; |
381 | 382 | ||
382 | interrupt-parent = <&mpic>; | 383 | interrupt-parent = <&mpic>; |
383 | interrupts = <19 2>; | 384 | interrupts = <25 2>; |
384 | bus-range = <0 0>; | 385 | bus-range = <0 0>; |
385 | ranges = <02000000 0 90000000 90000000 0 10000000 | 386 | ranges = <0x2000000 0x0 0x90000000 0x90000000 0x0 0x10000000 |
386 | 01000000 0 00000000 e2800000 0 00800000>; | 387 | 0x1000000 0x0 0x0 0xe2800000 0x0 0x800000>; |
387 | clock-frequency = <3f940aa>; | 388 | clock-frequency = <66666666>; |
388 | #interrupt-cells = <1>; | 389 | #interrupt-cells = <1>; |
389 | #size-cells = <2>; | 390 | #size-cells = <2>; |
390 | #address-cells = <3>; | 391 | #address-cells = <3>; |
391 | reg = <e0009000 1000>; | 392 | reg = <0xe0009000 0x1000>; |
392 | compatible = "fsl,mpc8540-pci"; | 393 | compatible = "fsl,mpc8540-pci"; |
393 | device_type = "pci"; | 394 | device_type = "pci"; |
394 | }; | 395 | }; |
395 | 396 | ||
396 | pci2: pcie@e000a000 { | 397 | pci2: pcie@e000a000 { |
397 | cell-index = <2>; | 398 | cell-index = <2>; |
398 | interrupt-map-mask = <f800 0 0 7>; | 399 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
399 | interrupt-map = < | 400 | interrupt-map = < |
400 | 401 | ||
401 | /* IDSEL 0x0 (PEX) */ | 402 | /* IDSEL 0x0 (PEX) */ |
402 | 00000 0 0 1 &mpic 0 1 | 403 | 00000 0x0 0x0 0x1 &mpic 0x0 0x1 |
403 | 00000 0 0 2 &mpic 1 1 | 404 | 00000 0x0 0x0 0x2 &mpic 0x1 0x1 |
404 | 00000 0 0 3 &mpic 2 1 | 405 | 00000 0x0 0x0 0x3 &mpic 0x2 0x1 |
405 | 00000 0 0 4 &mpic 3 1>; | 406 | 00000 0x0 0x0 0x4 &mpic 0x3 0x1>; |
406 | 407 | ||
407 | interrupt-parent = <&mpic>; | 408 | interrupt-parent = <&mpic>; |
408 | interrupts = <1a 2>; | 409 | interrupts = <26 2>; |
409 | bus-range = <0 ff>; | 410 | bus-range = <0 255>; |
410 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 411 | ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 |
411 | 01000000 0 00000000 e3000000 0 08000000>; | 412 | 0x1000000 0x0 0x0 0xe3000000 0x0 0x8000000>; |
412 | clock-frequency = <1fca055>; | 413 | clock-frequency = <33333333>; |
413 | #interrupt-cells = <1>; | 414 | #interrupt-cells = <1>; |
414 | #size-cells = <2>; | 415 | #size-cells = <2>; |
415 | #address-cells = <3>; | 416 | #address-cells = <3>; |
416 | reg = <e000a000 1000>; | 417 | reg = <0xe000a000 0x1000>; |
417 | compatible = "fsl,mpc8548-pcie"; | 418 | compatible = "fsl,mpc8548-pcie"; |
418 | device_type = "pci"; | 419 | device_type = "pci"; |
419 | pcie@0 { | 420 | pcie@0 { |
420 | reg = <0 0 0 0 0>; | 421 | reg = <0x0 0x0 0x0 0x0 0x0>; |
421 | #size-cells = <2>; | 422 | #size-cells = <2>; |
422 | #address-cells = <3>; | 423 | #address-cells = <3>; |
423 | device_type = "pci"; | 424 | device_type = "pci"; |
424 | ranges = <02000000 0 a0000000 | 425 | ranges = <0x2000000 0x0 0xa0000000 |
425 | 02000000 0 a0000000 | 426 | 0x2000000 0x0 0xa0000000 |
426 | 0 20000000 | 427 | 0x0 0x20000000 |
427 | 428 | ||
428 | 01000000 0 00000000 | 429 | 0x1000000 0x0 0x0 |
429 | 01000000 0 00000000 | 430 | 0x1000000 0x0 0x0 |
430 | 0 08000000>; | 431 | 0x0 0x8000000>; |
431 | }; | 432 | }; |
432 | }; | 433 | }; |
433 | }; | 434 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts index 4538f3c38862..b025c566c10d 100644 --- a/arch/powerpc/boot/dts/mpc8555cds.dts +++ b/arch/powerpc/boot/dts/mpc8555cds.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8555 CDS Device Tree Source | 2 | * MPC8555 CDS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 Freescale Semiconductor Inc. | 4 | * Copyright 2006, 2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,7 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
12 | 13 | ||
13 | / { | 14 | / { |
14 | model = "MPC8555CDS"; | 15 | model = "MPC8555CDS"; |
@@ -31,11 +32,11 @@ | |||
31 | 32 | ||
32 | PowerPC,8555@0 { | 33 | PowerPC,8555@0 { |
33 | device_type = "cpu"; | 34 | device_type = "cpu"; |
34 | reg = <0>; | 35 | reg = <0x0>; |
35 | d-cache-line-size = <20>; // 32 bytes | 36 | d-cache-line-size = <32>; // 32 bytes |
36 | i-cache-line-size = <20>; // 32 bytes | 37 | i-cache-line-size = <32>; // 32 bytes |
37 | d-cache-size = <8000>; // L1, 32K | 38 | d-cache-size = <0x8000>; // L1, 32K |
38 | i-cache-size = <8000>; // L1, 32K | 39 | i-cache-size = <0x8000>; // L1, 32K |
39 | timebase-frequency = <0>; // 33 MHz, from uboot | 40 | timebase-frequency = <0>; // 33 MHz, from uboot |
40 | bus-frequency = <0>; // 166 MHz | 41 | bus-frequency = <0>; // 166 MHz |
41 | clock-frequency = <0>; // 825 MHz, from uboot | 42 | clock-frequency = <0>; // 825 MHz, from uboot |
@@ -44,31 +45,31 @@ | |||
44 | 45 | ||
45 | memory { | 46 | memory { |
46 | device_type = "memory"; | 47 | device_type = "memory"; |
47 | reg = <00000000 08000000>; // 128M at 0x0 | 48 | reg = <0x0 0x8000000>; // 128M at 0x0 |
48 | }; | 49 | }; |
49 | 50 | ||
50 | soc8555@e0000000 { | 51 | soc8555@e0000000 { |
51 | #address-cells = <1>; | 52 | #address-cells = <1>; |
52 | #size-cells = <1>; | 53 | #size-cells = <1>; |
53 | device_type = "soc"; | 54 | device_type = "soc"; |
54 | ranges = <0 e0000000 00100000>; | 55 | ranges = <0x0 0xe0000000 0x100000>; |
55 | reg = <e0000000 00001000>; // CCSRBAR 1M | 56 | reg = <0xe0000000 0x1000>; // CCSRBAR 1M |
56 | bus-frequency = <0>; | 57 | bus-frequency = <0>; |
57 | 58 | ||
58 | memory-controller@2000 { | 59 | memory-controller@2000 { |
59 | compatible = "fsl,8555-memory-controller"; | 60 | compatible = "fsl,8555-memory-controller"; |
60 | reg = <2000 1000>; | 61 | reg = <0x2000 0x1000>; |
61 | interrupt-parent = <&mpic>; | 62 | interrupt-parent = <&mpic>; |
62 | interrupts = <12 2>; | 63 | interrupts = <18 2>; |
63 | }; | 64 | }; |
64 | 65 | ||
65 | l2-cache-controller@20000 { | 66 | l2-cache-controller@20000 { |
66 | compatible = "fsl,8555-l2-cache-controller"; | 67 | compatible = "fsl,8555-l2-cache-controller"; |
67 | reg = <20000 1000>; | 68 | reg = <0x20000 0x1000>; |
68 | cache-line-size = <20>; // 32 bytes | 69 | cache-line-size = <32>; // 32 bytes |
69 | cache-size = <40000>; // L2, 256K | 70 | cache-size = <0x40000>; // L2, 256K |
70 | interrupt-parent = <&mpic>; | 71 | interrupt-parent = <&mpic>; |
71 | interrupts = <10 2>; | 72 | interrupts = <16 2>; |
72 | }; | 73 | }; |
73 | 74 | ||
74 | i2c@3000 { | 75 | i2c@3000 { |
@@ -76,8 +77,8 @@ | |||
76 | #size-cells = <0>; | 77 | #size-cells = <0>; |
77 | cell-index = <0>; | 78 | cell-index = <0>; |
78 | compatible = "fsl-i2c"; | 79 | compatible = "fsl-i2c"; |
79 | reg = <3000 100>; | 80 | reg = <0x3000 0x100>; |
80 | interrupts = <2b 2>; | 81 | interrupts = <43 2>; |
81 | interrupt-parent = <&mpic>; | 82 | interrupt-parent = <&mpic>; |
82 | dfsrr; | 83 | dfsrr; |
83 | }; | 84 | }; |
@@ -86,18 +87,18 @@ | |||
86 | #address-cells = <1>; | 87 | #address-cells = <1>; |
87 | #size-cells = <0>; | 88 | #size-cells = <0>; |
88 | compatible = "fsl,gianfar-mdio"; | 89 | compatible = "fsl,gianfar-mdio"; |
89 | reg = <24520 20>; | 90 | reg = <0x24520 0x20>; |
90 | 91 | ||
91 | phy0: ethernet-phy@0 { | 92 | phy0: ethernet-phy@0 { |
92 | interrupt-parent = <&mpic>; | 93 | interrupt-parent = <&mpic>; |
93 | interrupts = <5 1>; | 94 | interrupts = <5 1>; |
94 | reg = <0>; | 95 | reg = <0x0>; |
95 | device_type = "ethernet-phy"; | 96 | device_type = "ethernet-phy"; |
96 | }; | 97 | }; |
97 | phy1: ethernet-phy@1 { | 98 | phy1: ethernet-phy@1 { |
98 | interrupt-parent = <&mpic>; | 99 | interrupt-parent = <&mpic>; |
99 | interrupts = <5 1>; | 100 | interrupts = <5 1>; |
100 | reg = <1>; | 101 | reg = <0x1>; |
101 | device_type = "ethernet-phy"; | 102 | device_type = "ethernet-phy"; |
102 | }; | 103 | }; |
103 | }; | 104 | }; |
@@ -107,9 +108,9 @@ | |||
107 | device_type = "network"; | 108 | device_type = "network"; |
108 | model = "TSEC"; | 109 | model = "TSEC"; |
109 | compatible = "gianfar"; | 110 | compatible = "gianfar"; |
110 | reg = <24000 1000>; | 111 | reg = <0x24000 0x1000>; |
111 | local-mac-address = [ 00 00 00 00 00 00 ]; | 112 | local-mac-address = [ 00 00 00 00 00 00 ]; |
112 | interrupts = <1d 2 1e 2 22 2>; | 113 | interrupts = <29 2 30 2 34 2>; |
113 | interrupt-parent = <&mpic>; | 114 | interrupt-parent = <&mpic>; |
114 | phy-handle = <&phy0>; | 115 | phy-handle = <&phy0>; |
115 | }; | 116 | }; |
@@ -119,9 +120,9 @@ | |||
119 | device_type = "network"; | 120 | device_type = "network"; |
120 | model = "TSEC"; | 121 | model = "TSEC"; |
121 | compatible = "gianfar"; | 122 | compatible = "gianfar"; |
122 | reg = <25000 1000>; | 123 | reg = <0x25000 0x1000>; |
123 | local-mac-address = [ 00 00 00 00 00 00 ]; | 124 | local-mac-address = [ 00 00 00 00 00 00 ]; |
124 | interrupts = <23 2 24 2 28 2>; | 125 | interrupts = <35 2 36 2 40 2>; |
125 | interrupt-parent = <&mpic>; | 126 | interrupt-parent = <&mpic>; |
126 | phy-handle = <&phy1>; | 127 | phy-handle = <&phy1>; |
127 | }; | 128 | }; |
@@ -130,9 +131,9 @@ | |||
130 | cell-index = <0>; | 131 | cell-index = <0>; |
131 | device_type = "serial"; | 132 | device_type = "serial"; |
132 | compatible = "ns16550"; | 133 | compatible = "ns16550"; |
133 | reg = <4500 100>; // reg base, size | 134 | reg = <0x4500 0x100>; // reg base, size |
134 | clock-frequency = <0>; // should we fill in in uboot? | 135 | clock-frequency = <0>; // should we fill in in uboot? |
135 | interrupts = <2a 2>; | 136 | interrupts = <42 2>; |
136 | interrupt-parent = <&mpic>; | 137 | interrupt-parent = <&mpic>; |
137 | }; | 138 | }; |
138 | 139 | ||
@@ -140,9 +141,9 @@ | |||
140 | cell-index = <1>; | 141 | cell-index = <1>; |
141 | device_type = "serial"; | 142 | device_type = "serial"; |
142 | compatible = "ns16550"; | 143 | compatible = "ns16550"; |
143 | reg = <4600 100>; // reg base, size | 144 | reg = <0x4600 0x100>; // reg base, size |
144 | clock-frequency = <0>; // should we fill in in uboot? | 145 | clock-frequency = <0>; // should we fill in in uboot? |
145 | interrupts = <2a 2>; | 146 | interrupts = <42 2>; |
146 | interrupt-parent = <&mpic>; | 147 | interrupt-parent = <&mpic>; |
147 | }; | 148 | }; |
148 | 149 | ||
@@ -151,7 +152,7 @@ | |||
151 | interrupt-controller; | 152 | interrupt-controller; |
152 | #address-cells = <0>; | 153 | #address-cells = <0>; |
153 | #interrupt-cells = <2>; | 154 | #interrupt-cells = <2>; |
154 | reg = <40000 40000>; | 155 | reg = <0x40000 0x40000>; |
155 | compatible = "chrp,open-pic"; | 156 | compatible = "chrp,open-pic"; |
156 | device_type = "open-pic"; | 157 | device_type = "open-pic"; |
157 | big-endian; | 158 | big-endian; |
@@ -161,17 +162,17 @@ | |||
161 | #address-cells = <1>; | 162 | #address-cells = <1>; |
162 | #size-cells = <1>; | 163 | #size-cells = <1>; |
163 | compatible = "fsl,mpc8555-cpm", "fsl,cpm2"; | 164 | compatible = "fsl,mpc8555-cpm", "fsl,cpm2"; |
164 | reg = <919c0 30>; | 165 | reg = <0x919c0 0x30>; |
165 | ranges; | 166 | ranges; |
166 | 167 | ||
167 | muram@80000 { | 168 | muram@80000 { |
168 | #address-cells = <1>; | 169 | #address-cells = <1>; |
169 | #size-cells = <1>; | 170 | #size-cells = <1>; |
170 | ranges = <0 80000 10000>; | 171 | ranges = <0x0 0x80000 0x10000>; |
171 | 172 | ||
172 | data@0 { | 173 | data@0 { |
173 | compatible = "fsl,cpm-muram-data"; | 174 | compatible = "fsl,cpm-muram-data"; |
174 | reg = <0 2000 9000 1000>; | 175 | reg = <0x0 0x2000 0x9000 0x1000>; |
175 | }; | 176 | }; |
176 | }; | 177 | }; |
177 | 178 | ||
@@ -179,16 +180,16 @@ | |||
179 | compatible = "fsl,mpc8555-brg", | 180 | compatible = "fsl,mpc8555-brg", |
180 | "fsl,cpm2-brg", | 181 | "fsl,cpm2-brg", |
181 | "fsl,cpm-brg"; | 182 | "fsl,cpm-brg"; |
182 | reg = <919f0 10 915f0 10>; | 183 | reg = <0x919f0 0x10 0x915f0 0x10>; |
183 | }; | 184 | }; |
184 | 185 | ||
185 | cpmpic: pic@90c00 { | 186 | cpmpic: pic@90c00 { |
186 | interrupt-controller; | 187 | interrupt-controller; |
187 | #address-cells = <0>; | 188 | #address-cells = <0>; |
188 | #interrupt-cells = <2>; | 189 | #interrupt-cells = <2>; |
189 | interrupts = <2e 2>; | 190 | interrupts = <46 2>; |
190 | interrupt-parent = <&mpic>; | 191 | interrupt-parent = <&mpic>; |
191 | reg = <90c00 80>; | 192 | reg = <0x90c00 0x80>; |
192 | compatible = "fsl,mpc8555-cpm-pic", "fsl,cpm2-pic"; | 193 | compatible = "fsl,mpc8555-cpm-pic", "fsl,cpm2-pic"; |
193 | }; | 194 | }; |
194 | }; | 195 | }; |
@@ -196,68 +197,68 @@ | |||
196 | 197 | ||
197 | pci0: pci@e0008000 { | 198 | pci0: pci@e0008000 { |
198 | cell-index = <0>; | 199 | cell-index = <0>; |
199 | interrupt-map-mask = <1f800 0 0 7>; | 200 | interrupt-map-mask = <0x1f800 0x0 0x0 0x7>; |
200 | interrupt-map = < | 201 | interrupt-map = < |
201 | 202 | ||
202 | /* IDSEL 0x10 */ | 203 | /* IDSEL 0x10 */ |
203 | 08000 0 0 1 &mpic 0 1 | 204 | 0x8000 0x0 0x0 0x1 &mpic 0x0 0x1 |
204 | 08000 0 0 2 &mpic 1 1 | 205 | 0x8000 0x0 0x0 0x2 &mpic 0x1 0x1 |
205 | 08000 0 0 3 &mpic 2 1 | 206 | 0x8000 0x0 0x0 0x3 &mpic 0x2 0x1 |
206 | 08000 0 0 4 &mpic 3 1 | 207 | 0x8000 0x0 0x0 0x4 &mpic 0x3 0x1 |
207 | 208 | ||
208 | /* IDSEL 0x11 */ | 209 | /* IDSEL 0x11 */ |
209 | 08800 0 0 1 &mpic 0 1 | 210 | 0x8800 0x0 0x0 0x1 &mpic 0x0 0x1 |
210 | 08800 0 0 2 &mpic 1 1 | 211 | 0x8800 0x0 0x0 0x2 &mpic 0x1 0x1 |
211 | 08800 0 0 3 &mpic 2 1 | 212 | 0x8800 0x0 0x0 0x3 &mpic 0x2 0x1 |
212 | 08800 0 0 4 &mpic 3 1 | 213 | 0x8800 0x0 0x0 0x4 &mpic 0x3 0x1 |
213 | 214 | ||
214 | /* IDSEL 0x12 (Slot 1) */ | 215 | /* IDSEL 0x12 (Slot 1) */ |
215 | 09000 0 0 1 &mpic 0 1 | 216 | 0x9000 0x0 0x0 0x1 &mpic 0x0 0x1 |
216 | 09000 0 0 2 &mpic 1 1 | 217 | 0x9000 0x0 0x0 0x2 &mpic 0x1 0x1 |
217 | 09000 0 0 3 &mpic 2 1 | 218 | 0x9000 0x0 0x0 0x3 &mpic 0x2 0x1 |
218 | 09000 0 0 4 &mpic 3 1 | 219 | 0x9000 0x0 0x0 0x4 &mpic 0x3 0x1 |
219 | 220 | ||
220 | /* IDSEL 0x13 (Slot 2) */ | 221 | /* IDSEL 0x13 (Slot 2) */ |
221 | 09800 0 0 1 &mpic 1 1 | 222 | 0x9800 0x0 0x0 0x1 &mpic 0x1 0x1 |
222 | 09800 0 0 2 &mpic 2 1 | 223 | 0x9800 0x0 0x0 0x2 &mpic 0x2 0x1 |
223 | 09800 0 0 3 &mpic 3 1 | 224 | 0x9800 0x0 0x0 0x3 &mpic 0x3 0x1 |
224 | 09800 0 0 4 &mpic 0 1 | 225 | 0x9800 0x0 0x0 0x4 &mpic 0x0 0x1 |
225 | 226 | ||
226 | /* IDSEL 0x14 (Slot 3) */ | 227 | /* IDSEL 0x14 (Slot 3) */ |
227 | 0a000 0 0 1 &mpic 2 1 | 228 | 0xa000 0x0 0x0 0x1 &mpic 0x2 0x1 |
228 | 0a000 0 0 2 &mpic 3 1 | 229 | 0xa000 0x0 0x0 0x2 &mpic 0x3 0x1 |
229 | 0a000 0 0 3 &mpic 0 1 | 230 | 0xa000 0x0 0x0 0x3 &mpic 0x0 0x1 |
230 | 0a000 0 0 4 &mpic 1 1 | 231 | 0xa000 0x0 0x0 0x4 &mpic 0x1 0x1 |
231 | 232 | ||
232 | /* IDSEL 0x15 (Slot 4) */ | 233 | /* IDSEL 0x15 (Slot 4) */ |
233 | 0a800 0 0 1 &mpic 3 1 | 234 | 0xa800 0x0 0x0 0x1 &mpic 0x3 0x1 |
234 | 0a800 0 0 2 &mpic 0 1 | 235 | 0xa800 0x0 0x0 0x2 &mpic 0x0 0x1 |
235 | 0a800 0 0 3 &mpic 1 1 | 236 | 0xa800 0x0 0x0 0x3 &mpic 0x1 0x1 |
236 | 0a800 0 0 4 &mpic 2 1 | 237 | 0xa800 0x0 0x0 0x4 &mpic 0x2 0x1 |
237 | 238 | ||
238 | /* Bus 1 (Tundra Bridge) */ | 239 | /* Bus 1 (Tundra Bridge) */ |
239 | /* IDSEL 0x12 (ISA bridge) */ | 240 | /* IDSEL 0x12 (ISA bridge) */ |
240 | 19000 0 0 1 &mpic 0 1 | 241 | 0x19000 0x0 0x0 0x1 &mpic 0x0 0x1 |
241 | 19000 0 0 2 &mpic 1 1 | 242 | 0x19000 0x0 0x0 0x2 &mpic 0x1 0x1 |
242 | 19000 0 0 3 &mpic 2 1 | 243 | 0x19000 0x0 0x0 0x3 &mpic 0x2 0x1 |
243 | 19000 0 0 4 &mpic 3 1>; | 244 | 0x19000 0x0 0x0 0x4 &mpic 0x3 0x1>; |
244 | interrupt-parent = <&mpic>; | 245 | interrupt-parent = <&mpic>; |
245 | interrupts = <18 2>; | 246 | interrupts = <24 2>; |
246 | bus-range = <0 0>; | 247 | bus-range = <0 0>; |
247 | ranges = <02000000 0 80000000 80000000 0 20000000 | 248 | ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
248 | 01000000 0 00000000 e2000000 0 00100000>; | 249 | 0x1000000 0x0 0x0 0xe2000000 0x0 0x100000>; |
249 | clock-frequency = <3f940aa>; | 250 | clock-frequency = <66666666>; |
250 | #interrupt-cells = <1>; | 251 | #interrupt-cells = <1>; |
251 | #size-cells = <2>; | 252 | #size-cells = <2>; |
252 | #address-cells = <3>; | 253 | #address-cells = <3>; |
253 | reg = <e0008000 1000>; | 254 | reg = <0xe0008000 0x1000>; |
254 | compatible = "fsl,mpc8540-pci"; | 255 | compatible = "fsl,mpc8540-pci"; |
255 | device_type = "pci"; | 256 | device_type = "pci"; |
256 | 257 | ||
257 | i8259@19000 { | 258 | i8259@19000 { |
258 | interrupt-controller; | 259 | interrupt-controller; |
259 | device_type = "interrupt-controller"; | 260 | device_type = "interrupt-controller"; |
260 | reg = <19000 0 0 0 1>; | 261 | reg = <0x19000 0x0 0x0 0x0 0x1>; |
261 | #address-cells = <0>; | 262 | #address-cells = <0>; |
262 | #interrupt-cells = <2>; | 263 | #interrupt-cells = <2>; |
263 | compatible = "chrp,iic"; | 264 | compatible = "chrp,iic"; |
@@ -268,24 +269,24 @@ | |||
268 | 269 | ||
269 | pci1: pci@e0009000 { | 270 | pci1: pci@e0009000 { |
270 | cell-index = <1>; | 271 | cell-index = <1>; |
271 | interrupt-map-mask = <f800 0 0 7>; | 272 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
272 | interrupt-map = < | 273 | interrupt-map = < |
273 | 274 | ||
274 | /* IDSEL 0x15 */ | 275 | /* IDSEL 0x15 */ |
275 | a800 0 0 1 &mpic b 1 | 276 | 0xa800 0x0 0x0 0x1 &mpic 0xb 0x1 |
276 | a800 0 0 2 &mpic b 1 | 277 | 0xa800 0x0 0x0 0x2 &mpic 0xb 0x1 |
277 | a800 0 0 3 &mpic b 1 | 278 | 0xa800 0x0 0x0 0x3 &mpic 0xb 0x1 |
278 | a800 0 0 4 &mpic b 1>; | 279 | 0xa800 0x0 0x0 0x4 &mpic 0xb 0x1>; |
279 | interrupt-parent = <&mpic>; | 280 | interrupt-parent = <&mpic>; |
280 | interrupts = <19 2>; | 281 | interrupts = <25 2>; |
281 | bus-range = <0 0>; | 282 | bus-range = <0 0>; |
282 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 283 | ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 |
283 | 01000000 0 00000000 e3000000 0 00100000>; | 284 | 0x1000000 0x0 0x0 0xe3000000 0x0 0x100000>; |
284 | clock-frequency = <3f940aa>; | 285 | clock-frequency = <66666666>; |
285 | #interrupt-cells = <1>; | 286 | #interrupt-cells = <1>; |
286 | #size-cells = <2>; | 287 | #size-cells = <2>; |
287 | #address-cells = <3>; | 288 | #address-cells = <3>; |
288 | reg = <e0009000 1000>; | 289 | reg = <0xe0009000 0x1000>; |
289 | compatible = "fsl,mpc8540-pci"; | 290 | compatible = "fsl,mpc8540-pci"; |
290 | device_type = "pci"; | 291 | device_type = "pci"; |
291 | }; | 292 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts index 639ce8a709a6..0cc16ab305d1 100644 --- a/arch/powerpc/boot/dts/mpc8560ads.dts +++ b/arch/powerpc/boot/dts/mpc8560ads.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8560 ADS Device Tree Source | 2 | * MPC8560 ADS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 Freescale Semiconductor Inc. | 4 | * Copyright 2006, 2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,7 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
12 | 13 | ||
13 | / { | 14 | / { |
14 | model = "MPC8560ADS"; | 15 | model = "MPC8560ADS"; |
@@ -32,74 +33,74 @@ | |||
32 | 33 | ||
33 | PowerPC,8560@0 { | 34 | PowerPC,8560@0 { |
34 | device_type = "cpu"; | 35 | device_type = "cpu"; |
35 | reg = <0>; | 36 | reg = <0x0>; |
36 | d-cache-line-size = <20>; // 32 bytes | 37 | d-cache-line-size = <32>; // 32 bytes |
37 | i-cache-line-size = <20>; // 32 bytes | 38 | i-cache-line-size = <32>; // 32 bytes |
38 | d-cache-size = <8000>; // L1, 32K | 39 | d-cache-size = <0x8000>; // L1, 32K |
39 | i-cache-size = <8000>; // L1, 32K | 40 | i-cache-size = <0x8000>; // L1, 32K |
40 | timebase-frequency = <04ead9a0>; | 41 | timebase-frequency = <82500000>; |
41 | bus-frequency = <13ab6680>; | 42 | bus-frequency = <330000000>; |
42 | clock-frequency = <312c8040>; | 43 | clock-frequency = <825000000>; |
43 | }; | 44 | }; |
44 | }; | 45 | }; |
45 | 46 | ||
46 | memory { | 47 | memory { |
47 | device_type = "memory"; | 48 | device_type = "memory"; |
48 | reg = <00000000 10000000>; | 49 | reg = <0x0 0x10000000>; |
49 | }; | 50 | }; |
50 | 51 | ||
51 | soc8560@e0000000 { | 52 | soc8560@e0000000 { |
52 | #address-cells = <1>; | 53 | #address-cells = <1>; |
53 | #size-cells = <1>; | 54 | #size-cells = <1>; |
54 | device_type = "soc"; | 55 | device_type = "soc"; |
55 | ranges = <0 e0000000 00100000>; | 56 | ranges = <0x0 0xe0000000 0x100000>; |
56 | reg = <e0000000 00000200>; | 57 | reg = <0xe0000000 0x200>; |
57 | bus-frequency = <13ab6680>; | 58 | bus-frequency = <330000000>; |
58 | 59 | ||
59 | memory-controller@2000 { | 60 | memory-controller@2000 { |
60 | compatible = "fsl,8540-memory-controller"; | 61 | compatible = "fsl,8540-memory-controller"; |
61 | reg = <2000 1000>; | 62 | reg = <0x2000 0x1000>; |
62 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
63 | interrupts = <12 2>; | 64 | interrupts = <18 2>; |
64 | }; | 65 | }; |
65 | 66 | ||
66 | l2-cache-controller@20000 { | 67 | l2-cache-controller@20000 { |
67 | compatible = "fsl,8540-l2-cache-controller"; | 68 | compatible = "fsl,8540-l2-cache-controller"; |
68 | reg = <20000 1000>; | 69 | reg = <0x20000 0x1000>; |
69 | cache-line-size = <20>; // 32 bytes | 70 | cache-line-size = <32>; // 32 bytes |
70 | cache-size = <40000>; // L2, 256K | 71 | cache-size = <0x40000>; // L2, 256K |
71 | interrupt-parent = <&mpic>; | 72 | interrupt-parent = <&mpic>; |
72 | interrupts = <10 2>; | 73 | interrupts = <16 2>; |
73 | }; | 74 | }; |
74 | 75 | ||
75 | mdio@24520 { | 76 | mdio@24520 { |
76 | #address-cells = <1>; | 77 | #address-cells = <1>; |
77 | #size-cells = <0>; | 78 | #size-cells = <0>; |
78 | compatible = "fsl,gianfar-mdio"; | 79 | compatible = "fsl,gianfar-mdio"; |
79 | reg = <24520 20>; | 80 | reg = <0x24520 0x20>; |
80 | 81 | ||
81 | phy0: ethernet-phy@0 { | 82 | phy0: ethernet-phy@0 { |
82 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
83 | interrupts = <5 1>; | 84 | interrupts = <5 1>; |
84 | reg = <0>; | 85 | reg = <0x0>; |
85 | device_type = "ethernet-phy"; | 86 | device_type = "ethernet-phy"; |
86 | }; | 87 | }; |
87 | phy1: ethernet-phy@1 { | 88 | phy1: ethernet-phy@1 { |
88 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
89 | interrupts = <5 1>; | 90 | interrupts = <5 1>; |
90 | reg = <1>; | 91 | reg = <0x1>; |
91 | device_type = "ethernet-phy"; | 92 | device_type = "ethernet-phy"; |
92 | }; | 93 | }; |
93 | phy2: ethernet-phy@2 { | 94 | phy2: ethernet-phy@2 { |
94 | interrupt-parent = <&mpic>; | 95 | interrupt-parent = <&mpic>; |
95 | interrupts = <7 1>; | 96 | interrupts = <7 1>; |
96 | reg = <2>; | 97 | reg = <0x2>; |
97 | device_type = "ethernet-phy"; | 98 | device_type = "ethernet-phy"; |
98 | }; | 99 | }; |
99 | phy3: ethernet-phy@3 { | 100 | phy3: ethernet-phy@3 { |
100 | interrupt-parent = <&mpic>; | 101 | interrupt-parent = <&mpic>; |
101 | interrupts = <7 1>; | 102 | interrupts = <7 1>; |
102 | reg = <3>; | 103 | reg = <0x3>; |
103 | device_type = "ethernet-phy"; | 104 | device_type = "ethernet-phy"; |
104 | }; | 105 | }; |
105 | }; | 106 | }; |
@@ -109,9 +110,9 @@ | |||
109 | device_type = "network"; | 110 | device_type = "network"; |
110 | model = "TSEC"; | 111 | model = "TSEC"; |
111 | compatible = "gianfar"; | 112 | compatible = "gianfar"; |
112 | reg = <24000 1000>; | 113 | reg = <0x24000 0x1000>; |
113 | local-mac-address = [ 00 00 00 00 00 00 ]; | 114 | local-mac-address = [ 00 00 00 00 00 00 ]; |
114 | interrupts = <1d 2 1e 2 22 2>; | 115 | interrupts = <29 2 30 2 34 2>; |
115 | interrupt-parent = <&mpic>; | 116 | interrupt-parent = <&mpic>; |
116 | phy-handle = <&phy0>; | 117 | phy-handle = <&phy0>; |
117 | }; | 118 | }; |
@@ -121,9 +122,9 @@ | |||
121 | device_type = "network"; | 122 | device_type = "network"; |
122 | model = "TSEC"; | 123 | model = "TSEC"; |
123 | compatible = "gianfar"; | 124 | compatible = "gianfar"; |
124 | reg = <25000 1000>; | 125 | reg = <0x25000 0x1000>; |
125 | local-mac-address = [ 00 00 00 00 00 00 ]; | 126 | local-mac-address = [ 00 00 00 00 00 00 ]; |
126 | interrupts = <23 2 24 2 28 2>; | 127 | interrupts = <35 2 36 2 40 2>; |
127 | interrupt-parent = <&mpic>; | 128 | interrupt-parent = <&mpic>; |
128 | phy-handle = <&phy1>; | 129 | phy-handle = <&phy1>; |
129 | }; | 130 | }; |
@@ -132,7 +133,7 @@ | |||
132 | interrupt-controller; | 133 | interrupt-controller; |
133 | #address-cells = <0>; | 134 | #address-cells = <0>; |
134 | #interrupt-cells = <2>; | 135 | #interrupt-cells = <2>; |
135 | reg = <40000 40000>; | 136 | reg = <0x40000 0x40000>; |
136 | device_type = "open-pic"; | 137 | device_type = "open-pic"; |
137 | }; | 138 | }; |
138 | 139 | ||
@@ -140,17 +141,17 @@ | |||
140 | #address-cells = <1>; | 141 | #address-cells = <1>; |
141 | #size-cells = <1>; | 142 | #size-cells = <1>; |
142 | compatible = "fsl,mpc8560-cpm", "fsl,cpm2"; | 143 | compatible = "fsl,mpc8560-cpm", "fsl,cpm2"; |
143 | reg = <919c0 30>; | 144 | reg = <0x919c0 0x30>; |
144 | ranges; | 145 | ranges; |
145 | 146 | ||
146 | muram@80000 { | 147 | muram@80000 { |
147 | #address-cells = <1>; | 148 | #address-cells = <1>; |
148 | #size-cells = <1>; | 149 | #size-cells = <1>; |
149 | ranges = <0 80000 10000>; | 150 | ranges = <0x0 0x80000 0x10000>; |
150 | 151 | ||
151 | data@0 { | 152 | data@0 { |
152 | compatible = "fsl,cpm-muram-data"; | 153 | compatible = "fsl,cpm-muram-data"; |
153 | reg = <0 4000 9000 2000>; | 154 | reg = <0x0 0x4000 0x9000 0x2000>; |
154 | }; | 155 | }; |
155 | }; | 156 | }; |
156 | 157 | ||
@@ -158,17 +159,17 @@ | |||
158 | compatible = "fsl,mpc8560-brg", | 159 | compatible = "fsl,mpc8560-brg", |
159 | "fsl,cpm2-brg", | 160 | "fsl,cpm2-brg", |
160 | "fsl,cpm-brg"; | 161 | "fsl,cpm-brg"; |
161 | reg = <919f0 10 915f0 10>; | 162 | reg = <0x919f0 0x10 0x915f0 0x10>; |
162 | clock-frequency = <d#165000000>; | 163 | clock-frequency = <165000000>; |
163 | }; | 164 | }; |
164 | 165 | ||
165 | cpmpic: pic@90c00 { | 166 | cpmpic: pic@90c00 { |
166 | interrupt-controller; | 167 | interrupt-controller; |
167 | #address-cells = <0>; | 168 | #address-cells = <0>; |
168 | #interrupt-cells = <2>; | 169 | #interrupt-cells = <2>; |
169 | interrupts = <2e 2>; | 170 | interrupts = <46 2>; |
170 | interrupt-parent = <&mpic>; | 171 | interrupt-parent = <&mpic>; |
171 | reg = <90c00 80>; | 172 | reg = <0x90c00 0x80>; |
172 | compatible = "fsl,mpc8560-cpm-pic", "fsl,cpm2-pic"; | 173 | compatible = "fsl,mpc8560-cpm-pic", "fsl,cpm2-pic"; |
173 | }; | 174 | }; |
174 | 175 | ||
@@ -176,11 +177,11 @@ | |||
176 | device_type = "serial"; | 177 | device_type = "serial"; |
177 | compatible = "fsl,mpc8560-scc-uart", | 178 | compatible = "fsl,mpc8560-scc-uart", |
178 | "fsl,cpm2-scc-uart"; | 179 | "fsl,cpm2-scc-uart"; |
179 | reg = <91a00 20 88000 100>; | 180 | reg = <0x91a00 0x20 0x88000 0x100>; |
180 | fsl,cpm-brg = <1>; | 181 | fsl,cpm-brg = <1>; |
181 | fsl,cpm-command = <00800000>; | 182 | fsl,cpm-command = <0x800000>; |
182 | current-speed = <1c200>; | 183 | current-speed = <115200>; |
183 | interrupts = <28 8>; | 184 | interrupts = <40 8>; |
184 | interrupt-parent = <&cpmpic>; | 185 | interrupt-parent = <&cpmpic>; |
185 | }; | 186 | }; |
186 | 187 | ||
@@ -188,11 +189,11 @@ | |||
188 | device_type = "serial"; | 189 | device_type = "serial"; |
189 | compatible = "fsl,mpc8560-scc-uart", | 190 | compatible = "fsl,mpc8560-scc-uart", |
190 | "fsl,cpm2-scc-uart"; | 191 | "fsl,cpm2-scc-uart"; |
191 | reg = <91a20 20 88100 100>; | 192 | reg = <0x91a20 0x20 0x88100 0x100>; |
192 | fsl,cpm-brg = <2>; | 193 | fsl,cpm-brg = <2>; |
193 | fsl,cpm-command = <04a00000>; | 194 | fsl,cpm-command = <0x4a00000>; |
194 | current-speed = <1c200>; | 195 | current-speed = <115200>; |
195 | interrupts = <29 8>; | 196 | interrupts = <41 8>; |
196 | interrupt-parent = <&cpmpic>; | 197 | interrupt-parent = <&cpmpic>; |
197 | }; | 198 | }; |
198 | 199 | ||
@@ -200,10 +201,10 @@ | |||
200 | device_type = "network"; | 201 | device_type = "network"; |
201 | compatible = "fsl,mpc8560-fcc-enet", | 202 | compatible = "fsl,mpc8560-fcc-enet", |
202 | "fsl,cpm2-fcc-enet"; | 203 | "fsl,cpm2-fcc-enet"; |
203 | reg = <91320 20 88500 100 913b0 1>; | 204 | reg = <0x91320 0x20 0x88500 0x100 0x913b0 0x1>; |
204 | local-mac-address = [ 00 00 00 00 00 00 ]; | 205 | local-mac-address = [ 00 00 00 00 00 00 ]; |
205 | fsl,cpm-command = <16200300>; | 206 | fsl,cpm-command = <0x16200300>; |
206 | interrupts = <21 8>; | 207 | interrupts = <33 8>; |
207 | interrupt-parent = <&cpmpic>; | 208 | interrupt-parent = <&cpmpic>; |
208 | phy-handle = <&phy2>; | 209 | phy-handle = <&phy2>; |
209 | }; | 210 | }; |
@@ -212,10 +213,10 @@ | |||
212 | device_type = "network"; | 213 | device_type = "network"; |
213 | compatible = "fsl,mpc8560-fcc-enet", | 214 | compatible = "fsl,mpc8560-fcc-enet", |
214 | "fsl,cpm2-fcc-enet"; | 215 | "fsl,cpm2-fcc-enet"; |
215 | reg = <91340 20 88600 100 913d0 1>; | 216 | reg = <0x91340 0x20 0x88600 0x100 0x913d0 0x1>; |
216 | local-mac-address = [ 00 00 00 00 00 00 ]; | 217 | local-mac-address = [ 00 00 00 00 00 00 ]; |
217 | fsl,cpm-command = <1a400300>; | 218 | fsl,cpm-command = <0x1a400300>; |
218 | interrupts = <22 8>; | 219 | interrupts = <34 8>; |
219 | interrupt-parent = <&cpmpic>; | 220 | interrupt-parent = <&cpmpic>; |
220 | phy-handle = <&phy3>; | 221 | phy-handle = <&phy3>; |
221 | }; | 222 | }; |
@@ -229,87 +230,87 @@ | |||
229 | #address-cells = <3>; | 230 | #address-cells = <3>; |
230 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | 231 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; |
231 | device_type = "pci"; | 232 | device_type = "pci"; |
232 | reg = <e0008000 1000>; | 233 | reg = <0xe0008000 0x1000>; |
233 | clock-frequency = <3f940aa>; | 234 | clock-frequency = <66666666>; |
234 | interrupt-map-mask = <f800 0 0 7>; | 235 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
235 | interrupt-map = < | 236 | interrupt-map = < |
236 | 237 | ||
237 | /* IDSEL 0x2 */ | 238 | /* IDSEL 0x2 */ |
238 | 1000 0 0 1 &mpic 1 1 | 239 | 0x1000 0x0 0x0 0x1 &mpic 0x1 0x1 |
239 | 1000 0 0 2 &mpic 2 1 | 240 | 0x1000 0x0 0x0 0x2 &mpic 0x2 0x1 |
240 | 1000 0 0 3 &mpic 3 1 | 241 | 0x1000 0x0 0x0 0x3 &mpic 0x3 0x1 |
241 | 1000 0 0 4 &mpic 4 1 | 242 | 0x1000 0x0 0x0 0x4 &mpic 0x4 0x1 |
242 | 243 | ||
243 | /* IDSEL 0x3 */ | 244 | /* IDSEL 0x3 */ |
244 | 1800 0 0 1 &mpic 4 1 | 245 | 0x1800 0x0 0x0 0x1 &mpic 0x4 0x1 |
245 | 1800 0 0 2 &mpic 1 1 | 246 | 0x1800 0x0 0x0 0x2 &mpic 0x1 0x1 |
246 | 1800 0 0 3 &mpic 2 1 | 247 | 0x1800 0x0 0x0 0x3 &mpic 0x2 0x1 |
247 | 1800 0 0 4 &mpic 3 1 | 248 | 0x1800 0x0 0x0 0x4 &mpic 0x3 0x1 |
248 | 249 | ||
249 | /* IDSEL 0x4 */ | 250 | /* IDSEL 0x4 */ |
250 | 2000 0 0 1 &mpic 3 1 | 251 | 0x2000 0x0 0x0 0x1 &mpic 0x3 0x1 |
251 | 2000 0 0 2 &mpic 4 1 | 252 | 0x2000 0x0 0x0 0x2 &mpic 0x4 0x1 |
252 | 2000 0 0 3 &mpic 1 1 | 253 | 0x2000 0x0 0x0 0x3 &mpic 0x1 0x1 |
253 | 2000 0 0 4 &mpic 2 1 | 254 | 0x2000 0x0 0x0 0x4 &mpic 0x2 0x1 |
254 | 255 | ||
255 | /* IDSEL 0x5 */ | 256 | /* IDSEL 0x5 */ |
256 | 2800 0 0 1 &mpic 2 1 | 257 | 0x2800 0x0 0x0 0x1 &mpic 0x2 0x1 |
257 | 2800 0 0 2 &mpic 3 1 | 258 | 0x2800 0x0 0x0 0x2 &mpic 0x3 0x1 |
258 | 2800 0 0 3 &mpic 4 1 | 259 | 0x2800 0x0 0x0 0x3 &mpic 0x4 0x1 |
259 | 2800 0 0 4 &mpic 1 1 | 260 | 0x2800 0x0 0x0 0x4 &mpic 0x1 0x1 |
260 | 261 | ||
261 | /* IDSEL 12 */ | 262 | /* IDSEL 12 */ |
262 | 6000 0 0 1 &mpic 1 1 | 263 | 0x6000 0x0 0x0 0x1 &mpic 0x1 0x1 |
263 | 6000 0 0 2 &mpic 2 1 | 264 | 0x6000 0x0 0x0 0x2 &mpic 0x2 0x1 |
264 | 6000 0 0 3 &mpic 3 1 | 265 | 0x6000 0x0 0x0 0x3 &mpic 0x3 0x1 |
265 | 6000 0 0 4 &mpic 4 1 | 266 | 0x6000 0x0 0x0 0x4 &mpic 0x4 0x1 |
266 | 267 | ||
267 | /* IDSEL 13 */ | 268 | /* IDSEL 13 */ |
268 | 6800 0 0 1 &mpic 4 1 | 269 | 0x6800 0x0 0x0 0x1 &mpic 0x4 0x1 |
269 | 6800 0 0 2 &mpic 1 1 | 270 | 0x6800 0x0 0x0 0x2 &mpic 0x1 0x1 |
270 | 6800 0 0 3 &mpic 2 1 | 271 | 0x6800 0x0 0x0 0x3 &mpic 0x2 0x1 |
271 | 6800 0 0 4 &mpic 3 1 | 272 | 0x6800 0x0 0x0 0x4 &mpic 0x3 0x1 |
272 | 273 | ||
273 | /* IDSEL 14*/ | 274 | /* IDSEL 14*/ |
274 | 7000 0 0 1 &mpic 3 1 | 275 | 0x7000 0x0 0x0 0x1 &mpic 0x3 0x1 |
275 | 7000 0 0 2 &mpic 4 1 | 276 | 0x7000 0x0 0x0 0x2 &mpic 0x4 0x1 |
276 | 7000 0 0 3 &mpic 1 1 | 277 | 0x7000 0x0 0x0 0x3 &mpic 0x1 0x1 |
277 | 7000 0 0 4 &mpic 2 1 | 278 | 0x7000 0x0 0x0 0x4 &mpic 0x2 0x1 |
278 | 279 | ||
279 | /* IDSEL 15 */ | 280 | /* IDSEL 15 */ |
280 | 7800 0 0 1 &mpic 2 1 | 281 | 0x7800 0x0 0x0 0x1 &mpic 0x2 0x1 |
281 | 7800 0 0 2 &mpic 3 1 | 282 | 0x7800 0x0 0x0 0x2 &mpic 0x3 0x1 |
282 | 7800 0 0 3 &mpic 4 1 | 283 | 0x7800 0x0 0x0 0x3 &mpic 0x4 0x1 |
283 | 7800 0 0 4 &mpic 1 1 | 284 | 0x7800 0x0 0x0 0x4 &mpic 0x1 0x1 |
284 | 285 | ||
285 | /* IDSEL 18 */ | 286 | /* IDSEL 18 */ |
286 | 9000 0 0 1 &mpic 1 1 | 287 | 0x9000 0x0 0x0 0x1 &mpic 0x1 0x1 |
287 | 9000 0 0 2 &mpic 2 1 | 288 | 0x9000 0x0 0x0 0x2 &mpic 0x2 0x1 |
288 | 9000 0 0 3 &mpic 3 1 | 289 | 0x9000 0x0 0x0 0x3 &mpic 0x3 0x1 |
289 | 9000 0 0 4 &mpic 4 1 | 290 | 0x9000 0x0 0x0 0x4 &mpic 0x4 0x1 |
290 | 291 | ||
291 | /* IDSEL 19 */ | 292 | /* IDSEL 19 */ |
292 | 9800 0 0 1 &mpic 4 1 | 293 | 0x9800 0x0 0x0 0x1 &mpic 0x4 0x1 |
293 | 9800 0 0 2 &mpic 1 1 | 294 | 0x9800 0x0 0x0 0x2 &mpic 0x1 0x1 |
294 | 9800 0 0 3 &mpic 2 1 | 295 | 0x9800 0x0 0x0 0x3 &mpic 0x2 0x1 |
295 | 9800 0 0 4 &mpic 3 1 | 296 | 0x9800 0x0 0x0 0x4 &mpic 0x3 0x1 |
296 | 297 | ||
297 | /* IDSEL 20 */ | 298 | /* IDSEL 20 */ |
298 | a000 0 0 1 &mpic 3 1 | 299 | 0xa000 0x0 0x0 0x1 &mpic 0x3 0x1 |
299 | a000 0 0 2 &mpic 4 1 | 300 | 0xa000 0x0 0x0 0x2 &mpic 0x4 0x1 |
300 | a000 0 0 3 &mpic 1 1 | 301 | 0xa000 0x0 0x0 0x3 &mpic 0x1 0x1 |
301 | a000 0 0 4 &mpic 2 1 | 302 | 0xa000 0x0 0x0 0x4 &mpic 0x2 0x1 |
302 | 303 | ||
303 | /* IDSEL 21 */ | 304 | /* IDSEL 21 */ |
304 | a800 0 0 1 &mpic 2 1 | 305 | 0xa800 0x0 0x0 0x1 &mpic 0x2 0x1 |
305 | a800 0 0 2 &mpic 3 1 | 306 | 0xa800 0x0 0x0 0x2 &mpic 0x3 0x1 |
306 | a800 0 0 3 &mpic 4 1 | 307 | 0xa800 0x0 0x0 0x3 &mpic 0x4 0x1 |
307 | a800 0 0 4 &mpic 1 1>; | 308 | 0xa800 0x0 0x0 0x4 &mpic 0x1 0x1>; |
308 | 309 | ||
309 | interrupt-parent = <&mpic>; | 310 | interrupt-parent = <&mpic>; |
310 | interrupts = <18 2>; | 311 | interrupts = <24 2>; |
311 | bus-range = <0 0>; | 312 | bus-range = <0 0>; |
312 | ranges = <02000000 0 80000000 80000000 0 20000000 | 313 | ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
313 | 01000000 0 00000000 e2000000 0 01000000>; | 314 | 0x1000000 0x0 0x0 0xe2000000 0x0 0x1000000>; |
314 | }; | 315 | }; |
315 | }; | 316 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts index 97bc048f2158..a025a8ededc5 100644 --- a/arch/powerpc/boot/dts/mpc8568mds.dts +++ b/arch/powerpc/boot/dts/mpc8568mds.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8568E MDS Device Tree Source | 2 | * MPC8568E MDS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2007 Freescale Semiconductor Inc. | 4 | * Copyright 2007, 2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,10 +9,7 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | 12 | /dts-v1/; | |
13 | /* | ||
14 | /memreserve/ 00000000 1000000; | ||
15 | */ | ||
16 | 13 | ||
17 | / { | 14 | / { |
18 | model = "MPC8568EMDS"; | 15 | model = "MPC8568EMDS"; |
@@ -37,11 +34,11 @@ | |||
37 | 34 | ||
38 | PowerPC,8568@0 { | 35 | PowerPC,8568@0 { |
39 | device_type = "cpu"; | 36 | device_type = "cpu"; |
40 | reg = <0>; | 37 | reg = <0x0>; |
41 | d-cache-line-size = <20>; // 32 bytes | 38 | d-cache-line-size = <32>; // 32 bytes |
42 | i-cache-line-size = <20>; // 32 bytes | 39 | i-cache-line-size = <32>; // 32 bytes |
43 | d-cache-size = <8000>; // L1, 32K | 40 | d-cache-size = <0x8000>; // L1, 32K |
44 | i-cache-size = <8000>; // L1, 32K | 41 | i-cache-size = <0x8000>; // L1, 32K |
45 | timebase-frequency = <0>; | 42 | timebase-frequency = <0>; |
46 | bus-frequency = <0>; | 43 | bus-frequency = <0>; |
47 | clock-frequency = <0>; | 44 | clock-frequency = <0>; |
@@ -50,36 +47,36 @@ | |||
50 | 47 | ||
51 | memory { | 48 | memory { |
52 | device_type = "memory"; | 49 | device_type = "memory"; |
53 | reg = <00000000 10000000>; | 50 | reg = <0x0 0x10000000>; |
54 | }; | 51 | }; |
55 | 52 | ||
56 | bcsr@f8000000 { | 53 | bcsr@f8000000 { |
57 | device_type = "board-control"; | 54 | device_type = "board-control"; |
58 | reg = <f8000000 8000>; | 55 | reg = <0xf8000000 0x8000>; |
59 | }; | 56 | }; |
60 | 57 | ||
61 | soc8568@e0000000 { | 58 | soc8568@e0000000 { |
62 | #address-cells = <1>; | 59 | #address-cells = <1>; |
63 | #size-cells = <1>; | 60 | #size-cells = <1>; |
64 | device_type = "soc"; | 61 | device_type = "soc"; |
65 | ranges = <0 e0000000 00100000>; | 62 | ranges = <0x0 0xe0000000 0x100000>; |
66 | reg = <e0000000 00001000>; | 63 | reg = <0xe0000000 0x1000>; |
67 | bus-frequency = <0>; | 64 | bus-frequency = <0>; |
68 | 65 | ||
69 | memory-controller@2000 { | 66 | memory-controller@2000 { |
70 | compatible = "fsl,8568-memory-controller"; | 67 | compatible = "fsl,8568-memory-controller"; |
71 | reg = <2000 1000>; | 68 | reg = <0x2000 0x1000>; |
72 | interrupt-parent = <&mpic>; | 69 | interrupt-parent = <&mpic>; |
73 | interrupts = <12 2>; | 70 | interrupts = <18 2>; |
74 | }; | 71 | }; |
75 | 72 | ||
76 | l2-cache-controller@20000 { | 73 | l2-cache-controller@20000 { |
77 | compatible = "fsl,8568-l2-cache-controller"; | 74 | compatible = "fsl,8568-l2-cache-controller"; |
78 | reg = <20000 1000>; | 75 | reg = <0x20000 0x1000>; |
79 | cache-line-size = <20>; // 32 bytes | 76 | cache-line-size = <32>; // 32 bytes |
80 | cache-size = <80000>; // L2, 512K | 77 | cache-size = <0x80000>; // L2, 512K |
81 | interrupt-parent = <&mpic>; | 78 | interrupt-parent = <&mpic>; |
82 | interrupts = <10 2>; | 79 | interrupts = <16 2>; |
83 | }; | 80 | }; |
84 | 81 | ||
85 | i2c@3000 { | 82 | i2c@3000 { |
@@ -87,14 +84,14 @@ | |||
87 | #size-cells = <0>; | 84 | #size-cells = <0>; |
88 | cell-index = <0>; | 85 | cell-index = <0>; |
89 | compatible = "fsl-i2c"; | 86 | compatible = "fsl-i2c"; |
90 | reg = <3000 100>; | 87 | reg = <0x3000 0x100>; |
91 | interrupts = <2b 2>; | 88 | interrupts = <43 2>; |
92 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
93 | dfsrr; | 90 | dfsrr; |
94 | 91 | ||
95 | rtc@68 { | 92 | rtc@68 { |
96 | compatible = "dallas,ds1374"; | 93 | compatible = "dallas,ds1374"; |
97 | reg = <68>; | 94 | reg = <0x68>; |
98 | }; | 95 | }; |
99 | }; | 96 | }; |
100 | 97 | ||
@@ -103,8 +100,8 @@ | |||
103 | #size-cells = <0>; | 100 | #size-cells = <0>; |
104 | cell-index = <1>; | 101 | cell-index = <1>; |
105 | compatible = "fsl-i2c"; | 102 | compatible = "fsl-i2c"; |
106 | reg = <3100 100>; | 103 | reg = <0x3100 0x100>; |
107 | interrupts = <2b 2>; | 104 | interrupts = <43 2>; |
108 | interrupt-parent = <&mpic>; | 105 | interrupt-parent = <&mpic>; |
109 | dfsrr; | 106 | dfsrr; |
110 | }; | 107 | }; |
@@ -113,30 +110,30 @@ | |||
113 | #address-cells = <1>; | 110 | #address-cells = <1>; |
114 | #size-cells = <0>; | 111 | #size-cells = <0>; |
115 | compatible = "fsl,gianfar-mdio"; | 112 | compatible = "fsl,gianfar-mdio"; |
116 | reg = <24520 20>; | 113 | reg = <0x24520 0x20>; |
117 | 114 | ||
118 | phy0: ethernet-phy@7 { | 115 | phy0: ethernet-phy@7 { |
119 | interrupt-parent = <&mpic>; | 116 | interrupt-parent = <&mpic>; |
120 | interrupts = <1 1>; | 117 | interrupts = <1 1>; |
121 | reg = <7>; | 118 | reg = <0x7>; |
122 | device_type = "ethernet-phy"; | 119 | device_type = "ethernet-phy"; |
123 | }; | 120 | }; |
124 | phy1: ethernet-phy@1 { | 121 | phy1: ethernet-phy@1 { |
125 | interrupt-parent = <&mpic>; | 122 | interrupt-parent = <&mpic>; |
126 | interrupts = <2 1>; | 123 | interrupts = <2 1>; |
127 | reg = <1>; | 124 | reg = <0x1>; |
128 | device_type = "ethernet-phy"; | 125 | device_type = "ethernet-phy"; |
129 | }; | 126 | }; |
130 | phy2: ethernet-phy@2 { | 127 | phy2: ethernet-phy@2 { |
131 | interrupt-parent = <&mpic>; | 128 | interrupt-parent = <&mpic>; |
132 | interrupts = <1 1>; | 129 | interrupts = <1 1>; |
133 | reg = <2>; | 130 | reg = <0x2>; |
134 | device_type = "ethernet-phy"; | 131 | device_type = "ethernet-phy"; |
135 | }; | 132 | }; |
136 | phy3: ethernet-phy@3 { | 133 | phy3: ethernet-phy@3 { |
137 | interrupt-parent = <&mpic>; | 134 | interrupt-parent = <&mpic>; |
138 | interrupts = <2 1>; | 135 | interrupts = <2 1>; |
139 | reg = <3>; | 136 | reg = <0x3>; |
140 | device_type = "ethernet-phy"; | 137 | device_type = "ethernet-phy"; |
141 | }; | 138 | }; |
142 | }; | 139 | }; |
@@ -146,9 +143,9 @@ | |||
146 | device_type = "network"; | 143 | device_type = "network"; |
147 | model = "eTSEC"; | 144 | model = "eTSEC"; |
148 | compatible = "gianfar"; | 145 | compatible = "gianfar"; |
149 | reg = <24000 1000>; | 146 | reg = <0x24000 0x1000>; |
150 | local-mac-address = [ 00 00 00 00 00 00 ]; | 147 | local-mac-address = [ 00 00 00 00 00 00 ]; |
151 | interrupts = <1d 2 1e 2 22 2>; | 148 | interrupts = <29 2 30 2 34 2>; |
152 | interrupt-parent = <&mpic>; | 149 | interrupt-parent = <&mpic>; |
153 | phy-handle = <&phy2>; | 150 | phy-handle = <&phy2>; |
154 | }; | 151 | }; |
@@ -158,9 +155,9 @@ | |||
158 | device_type = "network"; | 155 | device_type = "network"; |
159 | model = "eTSEC"; | 156 | model = "eTSEC"; |
160 | compatible = "gianfar"; | 157 | compatible = "gianfar"; |
161 | reg = <25000 1000>; | 158 | reg = <0x25000 0x1000>; |
162 | local-mac-address = [ 00 00 00 00 00 00 ]; | 159 | local-mac-address = [ 00 00 00 00 00 00 ]; |
163 | interrupts = <23 2 24 2 28 2>; | 160 | interrupts = <35 2 36 2 40 2>; |
164 | interrupt-parent = <&mpic>; | 161 | interrupt-parent = <&mpic>; |
165 | phy-handle = <&phy3>; | 162 | phy-handle = <&phy3>; |
166 | }; | 163 | }; |
@@ -169,15 +166,15 @@ | |||
169 | cell-index = <0>; | 166 | cell-index = <0>; |
170 | device_type = "serial"; | 167 | device_type = "serial"; |
171 | compatible = "ns16550"; | 168 | compatible = "ns16550"; |
172 | reg = <4500 100>; | 169 | reg = <0x4500 0x100>; |
173 | clock-frequency = <0>; | 170 | clock-frequency = <0>; |
174 | interrupts = <2a 2>; | 171 | interrupts = <42 2>; |
175 | interrupt-parent = <&mpic>; | 172 | interrupt-parent = <&mpic>; |
176 | }; | 173 | }; |
177 | 174 | ||
178 | global-utilities@e0000 { //global utilities block | 175 | global-utilities@e0000 { //global utilities block |
179 | compatible = "fsl,mpc8548-guts"; | 176 | compatible = "fsl,mpc8548-guts"; |
180 | reg = <e0000 1000>; | 177 | reg = <0xe0000 0x1000>; |
181 | fsl,has-rstcr; | 178 | fsl,has-rstcr; |
182 | }; | 179 | }; |
183 | 180 | ||
@@ -185,9 +182,9 @@ | |||
185 | cell-index = <1>; | 182 | cell-index = <1>; |
186 | device_type = "serial"; | 183 | device_type = "serial"; |
187 | compatible = "ns16550"; | 184 | compatible = "ns16550"; |
188 | reg = <4600 100>; | 185 | reg = <0x4600 0x100>; |
189 | clock-frequency = <0>; | 186 | clock-frequency = <0>; |
190 | interrupts = <2a 2>; | 187 | interrupts = <42 2>; |
191 | interrupt-parent = <&mpic>; | 188 | interrupt-parent = <&mpic>; |
192 | }; | 189 | }; |
193 | 190 | ||
@@ -195,13 +192,13 @@ | |||
195 | device_type = "crypto"; | 192 | device_type = "crypto"; |
196 | model = "SEC2"; | 193 | model = "SEC2"; |
197 | compatible = "talitos"; | 194 | compatible = "talitos"; |
198 | reg = <30000 f000>; | 195 | reg = <0x30000 0xf000>; |
199 | interrupts = <2d 2>; | 196 | interrupts = <45 2>; |
200 | interrupt-parent = <&mpic>; | 197 | interrupt-parent = <&mpic>; |
201 | num-channels = <4>; | 198 | num-channels = <4>; |
202 | channel-fifo-len = <18>; | 199 | channel-fifo-len = <24>; |
203 | exec-units-mask = <000000fe>; | 200 | exec-units-mask = <0xfe>; |
204 | descriptor-types-mask = <012b0ebf>; | 201 | descriptor-types-mask = <0x12b0ebf>; |
205 | }; | 202 | }; |
206 | 203 | ||
207 | mpic: pic@40000 { | 204 | mpic: pic@40000 { |
@@ -209,73 +206,73 @@ | |||
209 | interrupt-controller; | 206 | interrupt-controller; |
210 | #address-cells = <0>; | 207 | #address-cells = <0>; |
211 | #interrupt-cells = <2>; | 208 | #interrupt-cells = <2>; |
212 | reg = <40000 40000>; | 209 | reg = <0x40000 0x40000>; |
213 | compatible = "chrp,open-pic"; | 210 | compatible = "chrp,open-pic"; |
214 | device_type = "open-pic"; | 211 | device_type = "open-pic"; |
215 | big-endian; | 212 | big-endian; |
216 | }; | 213 | }; |
217 | 214 | ||
218 | par_io@e0100 { | 215 | par_io@e0100 { |
219 | reg = <e0100 100>; | 216 | reg = <0xe0100 0x100>; |
220 | device_type = "par_io"; | 217 | device_type = "par_io"; |
221 | num-ports = <7>; | 218 | num-ports = <7>; |
222 | 219 | ||
223 | pio1: ucc_pin@01 { | 220 | pio1: ucc_pin@01 { |
224 | pio-map = < | 221 | pio-map = < |
225 | /* port pin dir open_drain assignment has_irq */ | 222 | /* port pin dir open_drain assignment has_irq */ |
226 | 4 0a 1 0 2 0 /* TxD0 */ | 223 | 0x4 0xa 0x1 0x0 0x2 0x0 /* TxD0 */ |
227 | 4 09 1 0 2 0 /* TxD1 */ | 224 | 0x4 0x9 0x1 0x0 0x2 0x0 /* TxD1 */ |
228 | 4 08 1 0 2 0 /* TxD2 */ | 225 | 0x4 0x8 0x1 0x0 0x2 0x0 /* TxD2 */ |
229 | 4 07 1 0 2 0 /* TxD3 */ | 226 | 0x4 0x7 0x1 0x0 0x2 0x0 /* TxD3 */ |
230 | 4 17 1 0 2 0 /* TxD4 */ | 227 | 0x4 0x17 0x1 0x0 0x2 0x0 /* TxD4 */ |
231 | 4 16 1 0 2 0 /* TxD5 */ | 228 | 0x4 0x16 0x1 0x0 0x2 0x0 /* TxD5 */ |
232 | 4 15 1 0 2 0 /* TxD6 */ | 229 | 0x4 0x15 0x1 0x0 0x2 0x0 /* TxD6 */ |
233 | 4 14 1 0 2 0 /* TxD7 */ | 230 | 0x4 0x14 0x1 0x0 0x2 0x0 /* TxD7 */ |
234 | 4 0f 2 0 2 0 /* RxD0 */ | 231 | 0x4 0xf 0x2 0x0 0x2 0x0 /* RxD0 */ |
235 | 4 0e 2 0 2 0 /* RxD1 */ | 232 | 0x4 0xe 0x2 0x0 0x2 0x0 /* RxD1 */ |
236 | 4 0d 2 0 2 0 /* RxD2 */ | 233 | 0x4 0xd 0x2 0x0 0x2 0x0 /* RxD2 */ |
237 | 4 0c 2 0 2 0 /* RxD3 */ | 234 | 0x4 0xc 0x2 0x0 0x2 0x0 /* RxD3 */ |
238 | 4 1d 2 0 2 0 /* RxD4 */ | 235 | 0x4 0x1d 0x2 0x0 0x2 0x0 /* RxD4 */ |
239 | 4 1c 2 0 2 0 /* RxD5 */ | 236 | 0x4 0x1c 0x2 0x0 0x2 0x0 /* RxD5 */ |
240 | 4 1b 2 0 2 0 /* RxD6 */ | 237 | 0x4 0x1b 0x2 0x0 0x2 0x0 /* RxD6 */ |
241 | 4 1a 2 0 2 0 /* RxD7 */ | 238 | 0x4 0x1a 0x2 0x0 0x2 0x0 /* RxD7 */ |
242 | 4 0b 1 0 2 0 /* TX_EN */ | 239 | 0x4 0xb 0x1 0x0 0x2 0x0 /* TX_EN */ |
243 | 4 18 1 0 2 0 /* TX_ER */ | 240 | 0x4 0x18 0x1 0x0 0x2 0x0 /* TX_ER */ |
244 | 4 10 2 0 2 0 /* RX_DV */ | 241 | 0x4 0x10 0x2 0x0 0x2 0x0 /* RX_DV */ |
245 | 4 1e 2 0 2 0 /* RX_ER */ | 242 | 0x4 0x1e 0x2 0x0 0x2 0x0 /* RX_ER */ |
246 | 4 11 2 0 2 0 /* RX_CLK */ | 243 | 0x4 0x11 0x2 0x0 0x2 0x0 /* RX_CLK */ |
247 | 4 13 1 0 2 0 /* GTX_CLK */ | 244 | 0x4 0x13 0x1 0x0 0x2 0x0 /* GTX_CLK */ |
248 | 1 1f 2 0 3 0>; /* GTX125 */ | 245 | 0x1 0x1f 0x2 0x0 0x3 0x0>; /* GTX125 */ |
249 | }; | 246 | }; |
250 | 247 | ||
251 | pio2: ucc_pin@02 { | 248 | pio2: ucc_pin@02 { |
252 | pio-map = < | 249 | pio-map = < |
253 | /* port pin dir open_drain assignment has_irq */ | 250 | /* port pin dir open_drain assignment has_irq */ |
254 | 5 0a 1 0 2 0 /* TxD0 */ | 251 | 0x5 0xa 0x1 0x0 0x2 0x0 /* TxD0 */ |
255 | 5 09 1 0 2 0 /* TxD1 */ | 252 | 0x5 0x9 0x1 0x0 0x2 0x0 /* TxD1 */ |
256 | 5 08 1 0 2 0 /* TxD2 */ | 253 | 0x5 0x8 0x1 0x0 0x2 0x0 /* TxD2 */ |
257 | 5 07 1 0 2 0 /* TxD3 */ | 254 | 0x5 0x7 0x1 0x0 0x2 0x0 /* TxD3 */ |
258 | 5 17 1 0 2 0 /* TxD4 */ | 255 | 0x5 0x17 0x1 0x0 0x2 0x0 /* TxD4 */ |
259 | 5 16 1 0 2 0 /* TxD5 */ | 256 | 0x5 0x16 0x1 0x0 0x2 0x0 /* TxD5 */ |
260 | 5 15 1 0 2 0 /* TxD6 */ | 257 | 0x5 0x15 0x1 0x0 0x2 0x0 /* TxD6 */ |
261 | 5 14 1 0 2 0 /* TxD7 */ | 258 | 0x5 0x14 0x1 0x0 0x2 0x0 /* TxD7 */ |
262 | 5 0f 2 0 2 0 /* RxD0 */ | 259 | 0x5 0xf 0x2 0x0 0x2 0x0 /* RxD0 */ |
263 | 5 0e 2 0 2 0 /* RxD1 */ | 260 | 0x5 0xe 0x2 0x0 0x2 0x0 /* RxD1 */ |
264 | 5 0d 2 0 2 0 /* RxD2 */ | 261 | 0x5 0xd 0x2 0x0 0x2 0x0 /* RxD2 */ |
265 | 5 0c 2 0 2 0 /* RxD3 */ | 262 | 0x5 0xc 0x2 0x0 0x2 0x0 /* RxD3 */ |
266 | 5 1d 2 0 2 0 /* RxD4 */ | 263 | 0x5 0x1d 0x2 0x0 0x2 0x0 /* RxD4 */ |
267 | 5 1c 2 0 2 0 /* RxD5 */ | 264 | 0x5 0x1c 0x2 0x0 0x2 0x0 /* RxD5 */ |
268 | 5 1b 2 0 2 0 /* RxD6 */ | 265 | 0x5 0x1b 0x2 0x0 0x2 0x0 /* RxD6 */ |
269 | 5 1a 2 0 2 0 /* RxD7 */ | 266 | 0x5 0x1a 0x2 0x0 0x2 0x0 /* RxD7 */ |
270 | 5 0b 1 0 2 0 /* TX_EN */ | 267 | 0x5 0xb 0x1 0x0 0x2 0x0 /* TX_EN */ |
271 | 5 18 1 0 2 0 /* TX_ER */ | 268 | 0x5 0x18 0x1 0x0 0x2 0x0 /* TX_ER */ |
272 | 5 10 2 0 2 0 /* RX_DV */ | 269 | 0x5 0x10 0x2 0x0 0x2 0x0 /* RX_DV */ |
273 | 5 1e 2 0 2 0 /* RX_ER */ | 270 | 0x5 0x1e 0x2 0x0 0x2 0x0 /* RX_ER */ |
274 | 5 11 2 0 2 0 /* RX_CLK */ | 271 | 0x5 0x11 0x2 0x0 0x2 0x0 /* RX_CLK */ |
275 | 5 13 1 0 2 0 /* GTX_CLK */ | 272 | 0x5 0x13 0x1 0x0 0x2 0x0 /* GTX_CLK */ |
276 | 1 1f 2 0 3 0 /* GTX125 */ | 273 | 0x1 0x1f 0x2 0x0 0x3 0x0 /* GTX125 */ |
277 | 4 06 3 0 2 0 /* MDIO */ | 274 | 0x4 0x6 0x3 0x0 0x2 0x0 /* MDIO */ |
278 | 4 05 1 0 2 0>; /* MDC */ | 275 | 0x4 0x5 0x1 0x0 0x2 0x0>; /* MDC */ |
279 | }; | 276 | }; |
280 | }; | 277 | }; |
281 | }; | 278 | }; |
@@ -285,28 +282,28 @@ | |||
285 | #size-cells = <1>; | 282 | #size-cells = <1>; |
286 | device_type = "qe"; | 283 | device_type = "qe"; |
287 | compatible = "fsl,qe"; | 284 | compatible = "fsl,qe"; |
288 | ranges = <0 e0080000 00040000>; | 285 | ranges = <0x0 0xe0080000 0x40000>; |
289 | reg = <e0080000 480>; | 286 | reg = <0xe0080000 0x480>; |
290 | brg-frequency = <0>; | 287 | brg-frequency = <0>; |
291 | bus-frequency = <179A7B00>; | 288 | bus-frequency = <396000000>; |
292 | 289 | ||
293 | muram@10000 { | 290 | muram@10000 { |
294 | #address-cells = <1>; | 291 | #address-cells = <1>; |
295 | #size-cells = <1>; | 292 | #size-cells = <1>; |
296 | compatible = "fsl,qe-muram", "fsl,cpm-muram"; | 293 | compatible = "fsl,qe-muram", "fsl,cpm-muram"; |
297 | ranges = <0 00010000 0000c000>; | 294 | ranges = <0x0 0x10000 0x10000>; |
298 | 295 | ||
299 | data-only@0 { | 296 | data-only@0 { |
300 | compatible = "fsl,qe-muram-data", | 297 | compatible = "fsl,qe-muram-data", |
301 | "fsl,cpm-muram-data"; | 298 | "fsl,cpm-muram-data"; |
302 | reg = <0 c000>; | 299 | reg = <0x0 0x10000>; |
303 | }; | 300 | }; |
304 | }; | 301 | }; |
305 | 302 | ||
306 | spi@4c0 { | 303 | spi@4c0 { |
307 | cell-index = <0>; | 304 | cell-index = <0>; |
308 | compatible = "fsl,spi"; | 305 | compatible = "fsl,spi"; |
309 | reg = <4c0 40>; | 306 | reg = <0x4c0 0x40>; |
310 | interrupts = <2>; | 307 | interrupts = <2>; |
311 | interrupt-parent = <&qeic>; | 308 | interrupt-parent = <&qeic>; |
312 | mode = "cpu"; | 309 | mode = "cpu"; |
@@ -315,7 +312,7 @@ | |||
315 | spi@500 { | 312 | spi@500 { |
316 | cell-index = <1>; | 313 | cell-index = <1>; |
317 | compatible = "fsl,spi"; | 314 | compatible = "fsl,spi"; |
318 | reg = <500 40>; | 315 | reg = <0x500 0x40>; |
319 | interrupts = <1>; | 316 | interrupts = <1>; |
320 | interrupt-parent = <&qeic>; | 317 | interrupt-parent = <&qeic>; |
321 | mode = "cpu"; | 318 | mode = "cpu"; |
@@ -324,11 +321,9 @@ | |||
324 | enet2: ucc@2000 { | 321 | enet2: ucc@2000 { |
325 | device_type = "network"; | 322 | device_type = "network"; |
326 | compatible = "ucc_geth"; | 323 | compatible = "ucc_geth"; |
327 | model = "UCC"; | ||
328 | cell-index = <1>; | 324 | cell-index = <1>; |
329 | device-id = <1>; | 325 | reg = <0x2000 0x200>; |
330 | reg = <2000 200>; | 326 | interrupts = <32>; |
331 | interrupts = <20>; | ||
332 | interrupt-parent = <&qeic>; | 327 | interrupt-parent = <&qeic>; |
333 | local-mac-address = [ 00 00 00 00 00 00 ]; | 328 | local-mac-address = [ 00 00 00 00 00 00 ]; |
334 | rx-clock-name = "none"; | 329 | rx-clock-name = "none"; |
@@ -341,11 +336,9 @@ | |||
341 | enet3: ucc@3000 { | 336 | enet3: ucc@3000 { |
342 | device_type = "network"; | 337 | device_type = "network"; |
343 | compatible = "ucc_geth"; | 338 | compatible = "ucc_geth"; |
344 | model = "UCC"; | ||
345 | cell-index = <2>; | 339 | cell-index = <2>; |
346 | device-id = <2>; | 340 | reg = <0x3000 0x200>; |
347 | reg = <3000 200>; | 341 | interrupts = <33>; |
348 | interrupts = <21>; | ||
349 | interrupt-parent = <&qeic>; | 342 | interrupt-parent = <&qeic>; |
350 | local-mac-address = [ 00 00 00 00 00 00 ]; | 343 | local-mac-address = [ 00 00 00 00 00 00 ]; |
351 | rx-clock-name = "none"; | 344 | rx-clock-name = "none"; |
@@ -358,7 +351,7 @@ | |||
358 | mdio@2120 { | 351 | mdio@2120 { |
359 | #address-cells = <1>; | 352 | #address-cells = <1>; |
360 | #size-cells = <0>; | 353 | #size-cells = <0>; |
361 | reg = <2120 18>; | 354 | reg = <0x2120 0x18>; |
362 | compatible = "fsl,ucc-mdio"; | 355 | compatible = "fsl,ucc-mdio"; |
363 | 356 | ||
364 | /* These are the same PHYs as on | 357 | /* These are the same PHYs as on |
@@ -366,25 +359,25 @@ | |||
366 | qe_phy0: ethernet-phy@07 { | 359 | qe_phy0: ethernet-phy@07 { |
367 | interrupt-parent = <&mpic>; | 360 | interrupt-parent = <&mpic>; |
368 | interrupts = <1 1>; | 361 | interrupts = <1 1>; |
369 | reg = <7>; | 362 | reg = <0x7>; |
370 | device_type = "ethernet-phy"; | 363 | device_type = "ethernet-phy"; |
371 | }; | 364 | }; |
372 | qe_phy1: ethernet-phy@01 { | 365 | qe_phy1: ethernet-phy@01 { |
373 | interrupt-parent = <&mpic>; | 366 | interrupt-parent = <&mpic>; |
374 | interrupts = <2 1>; | 367 | interrupts = <2 1>; |
375 | reg = <1>; | 368 | reg = <0x1>; |
376 | device_type = "ethernet-phy"; | 369 | device_type = "ethernet-phy"; |
377 | }; | 370 | }; |
378 | qe_phy2: ethernet-phy@02 { | 371 | qe_phy2: ethernet-phy@02 { |
379 | interrupt-parent = <&mpic>; | 372 | interrupt-parent = <&mpic>; |
380 | interrupts = <1 1>; | 373 | interrupts = <1 1>; |
381 | reg = <2>; | 374 | reg = <0x2>; |
382 | device_type = "ethernet-phy"; | 375 | device_type = "ethernet-phy"; |
383 | }; | 376 | }; |
384 | qe_phy3: ethernet-phy@03 { | 377 | qe_phy3: ethernet-phy@03 { |
385 | interrupt-parent = <&mpic>; | 378 | interrupt-parent = <&mpic>; |
386 | interrupts = <2 1>; | 379 | interrupts = <2 1>; |
387 | reg = <3>; | 380 | reg = <0x3>; |
388 | device_type = "ethernet-phy"; | 381 | device_type = "ethernet-phy"; |
389 | }; | 382 | }; |
390 | }; | 383 | }; |
@@ -394,9 +387,9 @@ | |||
394 | compatible = "fsl,qe-ic"; | 387 | compatible = "fsl,qe-ic"; |
395 | #address-cells = <0>; | 388 | #address-cells = <0>; |
396 | #interrupt-cells = <1>; | 389 | #interrupt-cells = <1>; |
397 | reg = <80 80>; | 390 | reg = <0x80 0x80>; |
398 | big-endian; | 391 | big-endian; |
399 | interrupts = <2e 2 2e 2>; //high:30 low:30 | 392 | interrupts = <46 2 46 2>; //high:30 low:30 |
400 | interrupt-parent = <&mpic>; | 393 | interrupt-parent = <&mpic>; |
401 | }; | 394 | }; |
402 | 395 | ||
@@ -404,30 +397,30 @@ | |||
404 | 397 | ||
405 | pci0: pci@e0008000 { | 398 | pci0: pci@e0008000 { |
406 | cell-index = <0>; | 399 | cell-index = <0>; |
407 | interrupt-map-mask = <f800 0 0 7>; | 400 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
408 | interrupt-map = < | 401 | interrupt-map = < |
409 | /* IDSEL 0x12 AD18 */ | 402 | /* IDSEL 0x12 AD18 */ |
410 | 9000 0 0 1 &mpic 5 1 | 403 | 0x9000 0x0 0x0 0x1 &mpic 0x5 0x1 |
411 | 9000 0 0 2 &mpic 6 1 | 404 | 0x9000 0x0 0x0 0x2 &mpic 0x6 0x1 |
412 | 9000 0 0 3 &mpic 7 1 | 405 | 0x9000 0x0 0x0 0x3 &mpic 0x7 0x1 |
413 | 9000 0 0 4 &mpic 4 1 | 406 | 0x9000 0x0 0x0 0x4 &mpic 0x4 0x1 |
414 | 407 | ||
415 | /* IDSEL 0x13 AD19 */ | 408 | /* IDSEL 0x13 AD19 */ |
416 | 9800 0 0 1 &mpic 6 1 | 409 | 0x9800 0x0 0x0 0x1 &mpic 0x6 0x1 |
417 | 9800 0 0 2 &mpic 7 1 | 410 | 0x9800 0x0 0x0 0x2 &mpic 0x7 0x1 |
418 | 9800 0 0 3 &mpic 4 1 | 411 | 0x9800 0x0 0x0 0x3 &mpic 0x4 0x1 |
419 | 9800 0 0 4 &mpic 5 1>; | 412 | 0x9800 0x0 0x0 0x4 &mpic 0x5 0x1>; |
420 | 413 | ||
421 | interrupt-parent = <&mpic>; | 414 | interrupt-parent = <&mpic>; |
422 | interrupts = <18 2>; | 415 | interrupts = <24 2>; |
423 | bus-range = <0 ff>; | 416 | bus-range = <0 255>; |
424 | ranges = <02000000 0 80000000 80000000 0 20000000 | 417 | ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
425 | 01000000 0 00000000 e2000000 0 00800000>; | 418 | 0x1000000 0x0 0x0 0xe2000000 0x0 0x800000>; |
426 | clock-frequency = <3f940aa>; | 419 | clock-frequency = <66666666>; |
427 | #interrupt-cells = <1>; | 420 | #interrupt-cells = <1>; |
428 | #size-cells = <2>; | 421 | #size-cells = <2>; |
429 | #address-cells = <3>; | 422 | #address-cells = <3>; |
430 | reg = <e0008000 1000>; | 423 | reg = <0xe0008000 0x1000>; |
431 | compatible = "fsl,mpc8540-pci"; | 424 | compatible = "fsl,mpc8540-pci"; |
432 | device_type = "pci"; | 425 | device_type = "pci"; |
433 | }; | 426 | }; |
@@ -435,39 +428,39 @@ | |||
435 | /* PCI Express */ | 428 | /* PCI Express */ |
436 | pci1: pcie@e000a000 { | 429 | pci1: pcie@e000a000 { |
437 | cell-index = <2>; | 430 | cell-index = <2>; |
438 | interrupt-map-mask = <f800 0 0 7>; | 431 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
439 | interrupt-map = < | 432 | interrupt-map = < |
440 | 433 | ||
441 | /* IDSEL 0x0 (PEX) */ | 434 | /* IDSEL 0x0 (PEX) */ |
442 | 00000 0 0 1 &mpic 0 1 | 435 | 00000 0x0 0x0 0x1 &mpic 0x0 0x1 |
443 | 00000 0 0 2 &mpic 1 1 | 436 | 00000 0x0 0x0 0x2 &mpic 0x1 0x1 |
444 | 00000 0 0 3 &mpic 2 1 | 437 | 00000 0x0 0x0 0x3 &mpic 0x2 0x1 |
445 | 00000 0 0 4 &mpic 3 1>; | 438 | 00000 0x0 0x0 0x4 &mpic 0x3 0x1>; |
446 | 439 | ||
447 | interrupt-parent = <&mpic>; | 440 | interrupt-parent = <&mpic>; |
448 | interrupts = <1a 2>; | 441 | interrupts = <26 2>; |
449 | bus-range = <0 ff>; | 442 | bus-range = <0 255>; |
450 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | 443 | ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000 |
451 | 01000000 0 00000000 e2800000 0 00800000>; | 444 | 0x1000000 0x0 0x0 0xe2800000 0x0 0x800000>; |
452 | clock-frequency = <1fca055>; | 445 | clock-frequency = <33333333>; |
453 | #interrupt-cells = <1>; | 446 | #interrupt-cells = <1>; |
454 | #size-cells = <2>; | 447 | #size-cells = <2>; |
455 | #address-cells = <3>; | 448 | #address-cells = <3>; |
456 | reg = <e000a000 1000>; | 449 | reg = <0xe000a000 0x1000>; |
457 | compatible = "fsl,mpc8548-pcie"; | 450 | compatible = "fsl,mpc8548-pcie"; |
458 | device_type = "pci"; | 451 | device_type = "pci"; |
459 | pcie@0 { | 452 | pcie@0 { |
460 | reg = <0 0 0 0 0>; | 453 | reg = <0x0 0x0 0x0 0x0 0x0>; |
461 | #size-cells = <2>; | 454 | #size-cells = <2>; |
462 | #address-cells = <3>; | 455 | #address-cells = <3>; |
463 | device_type = "pci"; | 456 | device_type = "pci"; |
464 | ranges = <02000000 0 a0000000 | 457 | ranges = <0x2000000 0x0 0xa0000000 |
465 | 02000000 0 a0000000 | 458 | 0x2000000 0x0 0xa0000000 |
466 | 0 10000000 | 459 | 0x0 0x10000000 |
467 | 460 | ||
468 | 01000000 0 00000000 | 461 | 0x1000000 0x0 0x0 |
469 | 01000000 0 00000000 | 462 | 0x1000000 0x0 0x0 |
470 | 0 00800000>; | 463 | 0x0 0x800000>; |
471 | }; | 464 | }; |
472 | }; | 465 | }; |
473 | }; | 466 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts index db37214aee37..66f27ab613a2 100644 --- a/arch/powerpc/boot/dts/mpc8572ds.dts +++ b/arch/powerpc/boot/dts/mpc8572ds.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8572 DS Device Tree Source | 2 | * MPC8572 DS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2007 Freescale Semiconductor Inc. | 4 | * Copyright 2007, 2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,7 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
12 | / { | 13 | / { |
13 | model = "fsl,MPC8572DS"; | 14 | model = "fsl,MPC8572DS"; |
14 | compatible = "fsl,MPC8572DS"; | 15 | compatible = "fsl,MPC8572DS"; |
@@ -33,11 +34,11 @@ | |||
33 | 34 | ||
34 | PowerPC,8572@0 { | 35 | PowerPC,8572@0 { |
35 | device_type = "cpu"; | 36 | device_type = "cpu"; |
36 | reg = <0>; | 37 | reg = <0x0>; |
37 | d-cache-line-size = <20>; // 32 bytes | 38 | d-cache-line-size = <32>; // 32 bytes |
38 | i-cache-line-size = <20>; // 32 bytes | 39 | i-cache-line-size = <32>; // 32 bytes |
39 | d-cache-size = <8000>; // L1, 32K | 40 | d-cache-size = <0x8000>; // L1, 32K |
40 | i-cache-size = <8000>; // L1, 32K | 41 | i-cache-size = <0x8000>; // L1, 32K |
41 | timebase-frequency = <0>; | 42 | timebase-frequency = <0>; |
42 | bus-frequency = <0>; | 43 | bus-frequency = <0>; |
43 | clock-frequency = <0>; | 44 | clock-frequency = <0>; |
@@ -45,11 +46,11 @@ | |||
45 | 46 | ||
46 | PowerPC,8572@1 { | 47 | PowerPC,8572@1 { |
47 | device_type = "cpu"; | 48 | device_type = "cpu"; |
48 | reg = <1>; | 49 | reg = <0x1>; |
49 | d-cache-line-size = <20>; // 32 bytes | 50 | d-cache-line-size = <32>; // 32 bytes |
50 | i-cache-line-size = <20>; // 32 bytes | 51 | i-cache-line-size = <32>; // 32 bytes |
51 | d-cache-size = <8000>; // L1, 32K | 52 | d-cache-size = <0x8000>; // L1, 32K |
52 | i-cache-size = <8000>; // L1, 32K | 53 | i-cache-size = <0x8000>; // L1, 32K |
53 | timebase-frequency = <0>; | 54 | timebase-frequency = <0>; |
54 | bus-frequency = <0>; | 55 | bus-frequency = <0>; |
55 | clock-frequency = <0>; | 56 | clock-frequency = <0>; |
@@ -58,38 +59,38 @@ | |||
58 | 59 | ||
59 | memory { | 60 | memory { |
60 | device_type = "memory"; | 61 | device_type = "memory"; |
61 | reg = <00000000 00000000>; // Filled by U-Boot | 62 | reg = <0x0 0x0>; // Filled by U-Boot |
62 | }; | 63 | }; |
63 | 64 | ||
64 | soc8572@ffe00000 { | 65 | soc8572@ffe00000 { |
65 | #address-cells = <1>; | 66 | #address-cells = <1>; |
66 | #size-cells = <1>; | 67 | #size-cells = <1>; |
67 | device_type = "soc"; | 68 | device_type = "soc"; |
68 | ranges = <00000000 ffe00000 00100000>; | 69 | ranges = <0x0 0xffe00000 0x100000>; |
69 | reg = <ffe00000 00001000>; // CCSRBAR & soc regs, remove once parse code for immrbase fixed | 70 | reg = <0xffe00000 0x1000>; // CCSRBAR & soc regs, remove once parse code for immrbase fixed |
70 | bus-frequency = <0>; // Filled out by uboot. | 71 | bus-frequency = <0>; // Filled out by uboot. |
71 | 72 | ||
72 | memory-controller@2000 { | 73 | memory-controller@2000 { |
73 | compatible = "fsl,mpc8572-memory-controller"; | 74 | compatible = "fsl,mpc8572-memory-controller"; |
74 | reg = <2000 1000>; | 75 | reg = <0x2000 0x1000>; |
75 | interrupt-parent = <&mpic>; | 76 | interrupt-parent = <&mpic>; |
76 | interrupts = <12 2>; | 77 | interrupts = <18 2>; |
77 | }; | 78 | }; |
78 | 79 | ||
79 | memory-controller@6000 { | 80 | memory-controller@6000 { |
80 | compatible = "fsl,mpc8572-memory-controller"; | 81 | compatible = "fsl,mpc8572-memory-controller"; |
81 | reg = <6000 1000>; | 82 | reg = <0x6000 0x1000>; |
82 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
83 | interrupts = <12 2>; | 84 | interrupts = <18 2>; |
84 | }; | 85 | }; |
85 | 86 | ||
86 | l2-cache-controller@20000 { | 87 | l2-cache-controller@20000 { |
87 | compatible = "fsl,mpc8572-l2-cache-controller"; | 88 | compatible = "fsl,mpc8572-l2-cache-controller"; |
88 | reg = <20000 1000>; | 89 | reg = <0x20000 0x1000>; |
89 | cache-line-size = <20>; // 32 bytes | 90 | cache-line-size = <32>; // 32 bytes |
90 | cache-size = <80000>; // L2, 512K | 91 | cache-size = <0x80000>; // L2, 512K |
91 | interrupt-parent = <&mpic>; | 92 | interrupt-parent = <&mpic>; |
92 | interrupts = <10 2>; | 93 | interrupts = <16 2>; |
93 | }; | 94 | }; |
94 | 95 | ||
95 | i2c@3000 { | 96 | i2c@3000 { |
@@ -97,8 +98,8 @@ | |||
97 | #size-cells = <0>; | 98 | #size-cells = <0>; |
98 | cell-index = <0>; | 99 | cell-index = <0>; |
99 | compatible = "fsl-i2c"; | 100 | compatible = "fsl-i2c"; |
100 | reg = <3000 100>; | 101 | reg = <0x3000 0x100>; |
101 | interrupts = <2b 2>; | 102 | interrupts = <43 2>; |
102 | interrupt-parent = <&mpic>; | 103 | interrupt-parent = <&mpic>; |
103 | dfsrr; | 104 | dfsrr; |
104 | }; | 105 | }; |
@@ -108,8 +109,8 @@ | |||
108 | #size-cells = <0>; | 109 | #size-cells = <0>; |
109 | cell-index = <1>; | 110 | cell-index = <1>; |
110 | compatible = "fsl-i2c"; | 111 | compatible = "fsl-i2c"; |
111 | reg = <3100 100>; | 112 | reg = <0x3100 0x100>; |
112 | interrupts = <2b 2>; | 113 | interrupts = <43 2>; |
113 | interrupt-parent = <&mpic>; | 114 | interrupt-parent = <&mpic>; |
114 | dfsrr; | 115 | dfsrr; |
115 | }; | 116 | }; |
@@ -118,27 +119,27 @@ | |||
118 | #address-cells = <1>; | 119 | #address-cells = <1>; |
119 | #size-cells = <0>; | 120 | #size-cells = <0>; |
120 | compatible = "fsl,gianfar-mdio"; | 121 | compatible = "fsl,gianfar-mdio"; |
121 | reg = <24520 20>; | 122 | reg = <0x24520 0x20>; |
122 | 123 | ||
123 | phy0: ethernet-phy@0 { | 124 | phy0: ethernet-phy@0 { |
124 | interrupt-parent = <&mpic>; | 125 | interrupt-parent = <&mpic>; |
125 | interrupts = <a 1>; | 126 | interrupts = <10 1>; |
126 | reg = <0>; | 127 | reg = <0x0>; |
127 | }; | 128 | }; |
128 | phy1: ethernet-phy@1 { | 129 | phy1: ethernet-phy@1 { |
129 | interrupt-parent = <&mpic>; | 130 | interrupt-parent = <&mpic>; |
130 | interrupts = <a 1>; | 131 | interrupts = <10 1>; |
131 | reg = <1>; | 132 | reg = <0x1>; |
132 | }; | 133 | }; |
133 | phy2: ethernet-phy@2 { | 134 | phy2: ethernet-phy@2 { |
134 | interrupt-parent = <&mpic>; | 135 | interrupt-parent = <&mpic>; |
135 | interrupts = <a 1>; | 136 | interrupts = <10 1>; |
136 | reg = <2>; | 137 | reg = <0x2>; |
137 | }; | 138 | }; |
138 | phy3: ethernet-phy@3 { | 139 | phy3: ethernet-phy@3 { |
139 | interrupt-parent = <&mpic>; | 140 | interrupt-parent = <&mpic>; |
140 | interrupts = <a 1>; | 141 | interrupts = <10 1>; |
141 | reg = <3>; | 142 | reg = <0x3>; |
142 | }; | 143 | }; |
143 | }; | 144 | }; |
144 | 145 | ||
@@ -147,9 +148,9 @@ | |||
147 | device_type = "network"; | 148 | device_type = "network"; |
148 | model = "eTSEC"; | 149 | model = "eTSEC"; |
149 | compatible = "gianfar"; | 150 | compatible = "gianfar"; |
150 | reg = <24000 1000>; | 151 | reg = <0x24000 0x1000>; |
151 | local-mac-address = [ 00 00 00 00 00 00 ]; | 152 | local-mac-address = [ 00 00 00 00 00 00 ]; |
152 | interrupts = <1d 2 1e 2 22 2>; | 153 | interrupts = <29 2 30 2 34 2>; |
153 | interrupt-parent = <&mpic>; | 154 | interrupt-parent = <&mpic>; |
154 | phy-handle = <&phy0>; | 155 | phy-handle = <&phy0>; |
155 | phy-connection-type = "rgmii-id"; | 156 | phy-connection-type = "rgmii-id"; |
@@ -160,9 +161,9 @@ | |||
160 | device_type = "network"; | 161 | device_type = "network"; |
161 | model = "eTSEC"; | 162 | model = "eTSEC"; |
162 | compatible = "gianfar"; | 163 | compatible = "gianfar"; |
163 | reg = <25000 1000>; | 164 | reg = <0x25000 0x1000>; |
164 | local-mac-address = [ 00 00 00 00 00 00 ]; | 165 | local-mac-address = [ 00 00 00 00 00 00 ]; |
165 | interrupts = <23 2 24 2 28 2>; | 166 | interrupts = <35 2 36 2 40 2>; |
166 | interrupt-parent = <&mpic>; | 167 | interrupt-parent = <&mpic>; |
167 | phy-handle = <&phy1>; | 168 | phy-handle = <&phy1>; |
168 | phy-connection-type = "rgmii-id"; | 169 | phy-connection-type = "rgmii-id"; |
@@ -173,9 +174,9 @@ | |||
173 | device_type = "network"; | 174 | device_type = "network"; |
174 | model = "eTSEC"; | 175 | model = "eTSEC"; |
175 | compatible = "gianfar"; | 176 | compatible = "gianfar"; |
176 | reg = <26000 1000>; | 177 | reg = <0x26000 0x1000>; |
177 | local-mac-address = [ 00 00 00 00 00 00 ]; | 178 | local-mac-address = [ 00 00 00 00 00 00 ]; |
178 | interrupts = <1f 2 20 2 21 2>; | 179 | interrupts = <31 2 32 2 33 2>; |
179 | interrupt-parent = <&mpic>; | 180 | interrupt-parent = <&mpic>; |
180 | phy-handle = <&phy2>; | 181 | phy-handle = <&phy2>; |
181 | phy-connection-type = "rgmii-id"; | 182 | phy-connection-type = "rgmii-id"; |
@@ -186,9 +187,9 @@ | |||
186 | device_type = "network"; | 187 | device_type = "network"; |
187 | model = "eTSEC"; | 188 | model = "eTSEC"; |
188 | compatible = "gianfar"; | 189 | compatible = "gianfar"; |
189 | reg = <27000 1000>; | 190 | reg = <0x27000 0x1000>; |
190 | local-mac-address = [ 00 00 00 00 00 00 ]; | 191 | local-mac-address = [ 00 00 00 00 00 00 ]; |
191 | interrupts = <25 2 26 2 27 2>; | 192 | interrupts = <37 2 38 2 39 2>; |
192 | interrupt-parent = <&mpic>; | 193 | interrupt-parent = <&mpic>; |
193 | phy-handle = <&phy3>; | 194 | phy-handle = <&phy3>; |
194 | phy-connection-type = "rgmii-id"; | 195 | phy-connection-type = "rgmii-id"; |
@@ -198,9 +199,9 @@ | |||
198 | cell-index = <0>; | 199 | cell-index = <0>; |
199 | device_type = "serial"; | 200 | device_type = "serial"; |
200 | compatible = "ns16550"; | 201 | compatible = "ns16550"; |
201 | reg = <4500 100>; | 202 | reg = <0x4500 0x100>; |
202 | clock-frequency = <0>; | 203 | clock-frequency = <0>; |
203 | interrupts = <2a 2>; | 204 | interrupts = <42 2>; |
204 | interrupt-parent = <&mpic>; | 205 | interrupt-parent = <&mpic>; |
205 | }; | 206 | }; |
206 | 207 | ||
@@ -208,15 +209,15 @@ | |||
208 | cell-index = <1>; | 209 | cell-index = <1>; |
209 | device_type = "serial"; | 210 | device_type = "serial"; |
210 | compatible = "ns16550"; | 211 | compatible = "ns16550"; |
211 | reg = <4600 100>; | 212 | reg = <0x4600 0x100>; |
212 | clock-frequency = <0>; | 213 | clock-frequency = <0>; |
213 | interrupts = <2a 2>; | 214 | interrupts = <42 2>; |
214 | interrupt-parent = <&mpic>; | 215 | interrupt-parent = <&mpic>; |
215 | }; | 216 | }; |
216 | 217 | ||
217 | global-utilities@e0000 { //global utilities block | 218 | global-utilities@e0000 { //global utilities block |
218 | compatible = "fsl,mpc8572-guts"; | 219 | compatible = "fsl,mpc8572-guts"; |
219 | reg = <e0000 1000>; | 220 | reg = <0xe0000 0x1000>; |
220 | fsl,has-rstcr; | 221 | fsl,has-rstcr; |
221 | }; | 222 | }; |
222 | 223 | ||
@@ -225,7 +226,7 @@ | |||
225 | interrupt-controller; | 226 | interrupt-controller; |
226 | #address-cells = <0>; | 227 | #address-cells = <0>; |
227 | #interrupt-cells = <2>; | 228 | #interrupt-cells = <2>; |
228 | reg = <40000 40000>; | 229 | reg = <0x40000 0x40000>; |
229 | compatible = "chrp,open-pic"; | 230 | compatible = "chrp,open-pic"; |
230 | device_type = "open-pic"; | 231 | device_type = "open-pic"; |
231 | big-endian; | 232 | big-endian; |
@@ -239,167 +240,167 @@ | |||
239 | #interrupt-cells = <1>; | 240 | #interrupt-cells = <1>; |
240 | #size-cells = <2>; | 241 | #size-cells = <2>; |
241 | #address-cells = <3>; | 242 | #address-cells = <3>; |
242 | reg = <ffe08000 1000>; | 243 | reg = <0xffe08000 0x1000>; |
243 | bus-range = <0 ff>; | 244 | bus-range = <0 255>; |
244 | ranges = <02000000 0 80000000 80000000 0 20000000 | 245 | ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
245 | 01000000 0 00000000 ffc00000 0 00010000>; | 246 | 0x1000000 0x0 0x0 0xffc00000 0x0 0x10000>; |
246 | clock-frequency = <1fca055>; | 247 | clock-frequency = <33333333>; |
247 | interrupt-parent = <&mpic>; | 248 | interrupt-parent = <&mpic>; |
248 | interrupts = <18 2>; | 249 | interrupts = <24 2>; |
249 | interrupt-map-mask = <ff00 0 0 7>; | 250 | interrupt-map-mask = <0xff00 0x0 0x0 0x7>; |
250 | interrupt-map = < | 251 | interrupt-map = < |
251 | /* IDSEL 0x11 func 0 - PCI slot 1 */ | 252 | /* IDSEL 0x11 func 0 - PCI slot 1 */ |
252 | 8800 0 0 1 &mpic 2 1 | 253 | 0x8800 0x0 0x0 0x1 &mpic 0x2 0x1 |
253 | 8800 0 0 2 &mpic 3 1 | 254 | 0x8800 0x0 0x0 0x2 &mpic 0x3 0x1 |
254 | 8800 0 0 3 &mpic 4 1 | 255 | 0x8800 0x0 0x0 0x3 &mpic 0x4 0x1 |
255 | 8800 0 0 4 &mpic 1 1 | 256 | 0x8800 0x0 0x0 0x4 &mpic 0x1 0x1 |
256 | 257 | ||
257 | /* IDSEL 0x11 func 1 - PCI slot 1 */ | 258 | /* IDSEL 0x11 func 1 - PCI slot 1 */ |
258 | 8900 0 0 1 &mpic 2 1 | 259 | 0x8900 0x0 0x0 0x1 &mpic 0x2 0x1 |
259 | 8900 0 0 2 &mpic 3 1 | 260 | 0x8900 0x0 0x0 0x2 &mpic 0x3 0x1 |
260 | 8900 0 0 3 &mpic 4 1 | 261 | 0x8900 0x0 0x0 0x3 &mpic 0x4 0x1 |
261 | 8900 0 0 4 &mpic 1 1 | 262 | 0x8900 0x0 0x0 0x4 &mpic 0x1 0x1 |
262 | 263 | ||
263 | /* IDSEL 0x11 func 2 - PCI slot 1 */ | 264 | /* IDSEL 0x11 func 2 - PCI slot 1 */ |
264 | 8a00 0 0 1 &mpic 2 1 | 265 | 0x8a00 0x0 0x0 0x1 &mpic 0x2 0x1 |
265 | 8a00 0 0 2 &mpic 3 1 | 266 | 0x8a00 0x0 0x0 0x2 &mpic 0x3 0x1 |
266 | 8a00 0 0 3 &mpic 4 1 | 267 | 0x8a00 0x0 0x0 0x3 &mpic 0x4 0x1 |
267 | 8a00 0 0 4 &mpic 1 1 | 268 | 0x8a00 0x0 0x0 0x4 &mpic 0x1 0x1 |
268 | 269 | ||
269 | /* IDSEL 0x11 func 3 - PCI slot 1 */ | 270 | /* IDSEL 0x11 func 3 - PCI slot 1 */ |
270 | 8b00 0 0 1 &mpic 2 1 | 271 | 0x8b00 0x0 0x0 0x1 &mpic 0x2 0x1 |
271 | 8b00 0 0 2 &mpic 3 1 | 272 | 0x8b00 0x0 0x0 0x2 &mpic 0x3 0x1 |
272 | 8b00 0 0 3 &mpic 4 1 | 273 | 0x8b00 0x0 0x0 0x3 &mpic 0x4 0x1 |
273 | 8b00 0 0 4 &mpic 1 1 | 274 | 0x8b00 0x0 0x0 0x4 &mpic 0x1 0x1 |
274 | 275 | ||
275 | /* IDSEL 0x11 func 4 - PCI slot 1 */ | 276 | /* IDSEL 0x11 func 4 - PCI slot 1 */ |
276 | 8c00 0 0 1 &mpic 2 1 | 277 | 0x8c00 0x0 0x0 0x1 &mpic 0x2 0x1 |
277 | 8c00 0 0 2 &mpic 3 1 | 278 | 0x8c00 0x0 0x0 0x2 &mpic 0x3 0x1 |
278 | 8c00 0 0 3 &mpic 4 1 | 279 | 0x8c00 0x0 0x0 0x3 &mpic 0x4 0x1 |
279 | 8c00 0 0 4 &mpic 1 1 | 280 | 0x8c00 0x0 0x0 0x4 &mpic 0x1 0x1 |
280 | 281 | ||
281 | /* IDSEL 0x11 func 5 - PCI slot 1 */ | 282 | /* IDSEL 0x11 func 5 - PCI slot 1 */ |
282 | 8d00 0 0 1 &mpic 2 1 | 283 | 0x8d00 0x0 0x0 0x1 &mpic 0x2 0x1 |
283 | 8d00 0 0 2 &mpic 3 1 | 284 | 0x8d00 0x0 0x0 0x2 &mpic 0x3 0x1 |
284 | 8d00 0 0 3 &mpic 4 1 | 285 | 0x8d00 0x0 0x0 0x3 &mpic 0x4 0x1 |
285 | 8d00 0 0 4 &mpic 1 1 | 286 | 0x8d00 0x0 0x0 0x4 &mpic 0x1 0x1 |
286 | 287 | ||
287 | /* IDSEL 0x11 func 6 - PCI slot 1 */ | 288 | /* IDSEL 0x11 func 6 - PCI slot 1 */ |
288 | 8e00 0 0 1 &mpic 2 1 | 289 | 0x8e00 0x0 0x0 0x1 &mpic 0x2 0x1 |
289 | 8e00 0 0 2 &mpic 3 1 | 290 | 0x8e00 0x0 0x0 0x2 &mpic 0x3 0x1 |
290 | 8e00 0 0 3 &mpic 4 1 | 291 | 0x8e00 0x0 0x0 0x3 &mpic 0x4 0x1 |
291 | 8e00 0 0 4 &mpic 1 1 | 292 | 0x8e00 0x0 0x0 0x4 &mpic 0x1 0x1 |
292 | 293 | ||
293 | /* IDSEL 0x11 func 7 - PCI slot 1 */ | 294 | /* IDSEL 0x11 func 7 - PCI slot 1 */ |
294 | 8f00 0 0 1 &mpic 2 1 | 295 | 0x8f00 0x0 0x0 0x1 &mpic 0x2 0x1 |
295 | 8f00 0 0 2 &mpic 3 1 | 296 | 0x8f00 0x0 0x0 0x2 &mpic 0x3 0x1 |
296 | 8f00 0 0 3 &mpic 4 1 | 297 | 0x8f00 0x0 0x0 0x3 &mpic 0x4 0x1 |
297 | 8f00 0 0 4 &mpic 1 1 | 298 | 0x8f00 0x0 0x0 0x4 &mpic 0x1 0x1 |
298 | 299 | ||
299 | /* IDSEL 0x12 func 0 - PCI slot 2 */ | 300 | /* IDSEL 0x12 func 0 - PCI slot 2 */ |
300 | 9000 0 0 1 &mpic 3 1 | 301 | 0x9000 0x0 0x0 0x1 &mpic 0x3 0x1 |
301 | 9000 0 0 2 &mpic 4 1 | 302 | 0x9000 0x0 0x0 0x2 &mpic 0x4 0x1 |
302 | 9000 0 0 3 &mpic 1 1 | 303 | 0x9000 0x0 0x0 0x3 &mpic 0x1 0x1 |
303 | 9000 0 0 4 &mpic 2 1 | 304 | 0x9000 0x0 0x0 0x4 &mpic 0x2 0x1 |
304 | 305 | ||
305 | /* IDSEL 0x12 func 1 - PCI slot 2 */ | 306 | /* IDSEL 0x12 func 1 - PCI slot 2 */ |
306 | 9100 0 0 1 &mpic 3 1 | 307 | 0x9100 0x0 0x0 0x1 &mpic 0x3 0x1 |
307 | 9100 0 0 2 &mpic 4 1 | 308 | 0x9100 0x0 0x0 0x2 &mpic 0x4 0x1 |
308 | 9100 0 0 3 &mpic 1 1 | 309 | 0x9100 0x0 0x0 0x3 &mpic 0x1 0x1 |
309 | 9100 0 0 4 &mpic 2 1 | 310 | 0x9100 0x0 0x0 0x4 &mpic 0x2 0x1 |
310 | 311 | ||
311 | /* IDSEL 0x12 func 2 - PCI slot 2 */ | 312 | /* IDSEL 0x12 func 2 - PCI slot 2 */ |
312 | 9200 0 0 1 &mpic 3 1 | 313 | 0x9200 0x0 0x0 0x1 &mpic 0x3 0x1 |
313 | 9200 0 0 2 &mpic 4 1 | 314 | 0x9200 0x0 0x0 0x2 &mpic 0x4 0x1 |
314 | 9200 0 0 3 &mpic 1 1 | 315 | 0x9200 0x0 0x0 0x3 &mpic 0x1 0x1 |
315 | 9200 0 0 4 &mpic 2 1 | 316 | 0x9200 0x0 0x0 0x4 &mpic 0x2 0x1 |
316 | 317 | ||
317 | /* IDSEL 0x12 func 3 - PCI slot 2 */ | 318 | /* IDSEL 0x12 func 3 - PCI slot 2 */ |
318 | 9300 0 0 1 &mpic 3 1 | 319 | 0x9300 0x0 0x0 0x1 &mpic 0x3 0x1 |
319 | 9300 0 0 2 &mpic 4 1 | 320 | 0x9300 0x0 0x0 0x2 &mpic 0x4 0x1 |
320 | 9300 0 0 3 &mpic 1 1 | 321 | 0x9300 0x0 0x0 0x3 &mpic 0x1 0x1 |
321 | 9300 0 0 4 &mpic 2 1 | 322 | 0x9300 0x0 0x0 0x4 &mpic 0x2 0x1 |
322 | 323 | ||
323 | /* IDSEL 0x12 func 4 - PCI slot 2 */ | 324 | /* IDSEL 0x12 func 4 - PCI slot 2 */ |
324 | 9400 0 0 1 &mpic 3 1 | 325 | 0x9400 0x0 0x0 0x1 &mpic 0x3 0x1 |
325 | 9400 0 0 2 &mpic 4 1 | 326 | 0x9400 0x0 0x0 0x2 &mpic 0x4 0x1 |
326 | 9400 0 0 3 &mpic 1 1 | 327 | 0x9400 0x0 0x0 0x3 &mpic 0x1 0x1 |
327 | 9400 0 0 4 &mpic 2 1 | 328 | 0x9400 0x0 0x0 0x4 &mpic 0x2 0x1 |
328 | 329 | ||
329 | /* IDSEL 0x12 func 5 - PCI slot 2 */ | 330 | /* IDSEL 0x12 func 5 - PCI slot 2 */ |
330 | 9500 0 0 1 &mpic 3 1 | 331 | 0x9500 0x0 0x0 0x1 &mpic 0x3 0x1 |
331 | 9500 0 0 2 &mpic 4 1 | 332 | 0x9500 0x0 0x0 0x2 &mpic 0x4 0x1 |
332 | 9500 0 0 3 &mpic 1 1 | 333 | 0x9500 0x0 0x0 0x3 &mpic 0x1 0x1 |
333 | 9500 0 0 4 &mpic 2 1 | 334 | 0x9500 0x0 0x0 0x4 &mpic 0x2 0x1 |
334 | 335 | ||
335 | /* IDSEL 0x12 func 6 - PCI slot 2 */ | 336 | /* IDSEL 0x12 func 6 - PCI slot 2 */ |
336 | 9600 0 0 1 &mpic 3 1 | 337 | 0x9600 0x0 0x0 0x1 &mpic 0x3 0x1 |
337 | 9600 0 0 2 &mpic 4 1 | 338 | 0x9600 0x0 0x0 0x2 &mpic 0x4 0x1 |
338 | 9600 0 0 3 &mpic 1 1 | 339 | 0x9600 0x0 0x0 0x3 &mpic 0x1 0x1 |
339 | 9600 0 0 4 &mpic 2 1 | 340 | 0x9600 0x0 0x0 0x4 &mpic 0x2 0x1 |
340 | 341 | ||
341 | /* IDSEL 0x12 func 7 - PCI slot 2 */ | 342 | /* IDSEL 0x12 func 7 - PCI slot 2 */ |
342 | 9700 0 0 1 &mpic 3 1 | 343 | 0x9700 0x0 0x0 0x1 &mpic 0x3 0x1 |
343 | 9700 0 0 2 &mpic 4 1 | 344 | 0x9700 0x0 0x0 0x2 &mpic 0x4 0x1 |
344 | 9700 0 0 3 &mpic 1 1 | 345 | 0x9700 0x0 0x0 0x3 &mpic 0x1 0x1 |
345 | 9700 0 0 4 &mpic 2 1 | 346 | 0x9700 0x0 0x0 0x4 &mpic 0x2 0x1 |
346 | 347 | ||
347 | // IDSEL 0x1c USB | 348 | // IDSEL 0x1c USB |
348 | e000 0 0 1 &i8259 c 2 | 349 | 0xe000 0x0 0x0 0x1 &i8259 0xc 0x2 |
349 | e100 0 0 2 &i8259 9 2 | 350 | 0xe100 0x0 0x0 0x2 &i8259 0x9 0x2 |
350 | e200 0 0 3 &i8259 a 2 | 351 | 0xe200 0x0 0x0 0x3 &i8259 0xa 0x2 |
351 | e300 0 0 4 &i8259 b 2 | 352 | 0xe300 0x0 0x0 0x4 &i8259 0xb 0x2 |
352 | 353 | ||
353 | // IDSEL 0x1d Audio | 354 | // IDSEL 0x1d Audio |
354 | e800 0 0 1 &i8259 6 2 | 355 | 0xe800 0x0 0x0 0x1 &i8259 0x6 0x2 |
355 | 356 | ||
356 | // IDSEL 0x1e Legacy | 357 | // IDSEL 0x1e Legacy |
357 | f000 0 0 1 &i8259 7 2 | 358 | 0xf000 0x0 0x0 0x1 &i8259 0x7 0x2 |
358 | f100 0 0 1 &i8259 7 2 | 359 | 0xf100 0x0 0x0 0x1 &i8259 0x7 0x2 |
359 | 360 | ||
360 | // IDSEL 0x1f IDE/SATA | 361 | // IDSEL 0x1f IDE/SATA |
361 | f800 0 0 1 &i8259 e 2 | 362 | 0xf800 0x0 0x0 0x1 &i8259 0xe 0x2 |
362 | f900 0 0 1 &i8259 5 2 | 363 | 0xf900 0x0 0x0 0x1 &i8259 0x5 0x2 |
363 | 364 | ||
364 | >; | 365 | >; |
365 | 366 | ||
366 | pcie@0 { | 367 | pcie@0 { |
367 | reg = <0 0 0 0 0>; | 368 | reg = <0x0 0x0 0x0 0x0 0x0>; |
368 | #size-cells = <2>; | 369 | #size-cells = <2>; |
369 | #address-cells = <3>; | 370 | #address-cells = <3>; |
370 | device_type = "pci"; | 371 | device_type = "pci"; |
371 | ranges = <02000000 0 80000000 | 372 | ranges = <0x2000000 0x0 0x80000000 |
372 | 02000000 0 80000000 | 373 | 0x2000000 0x0 0x80000000 |
373 | 0 20000000 | 374 | 0x0 0x20000000 |
374 | 375 | ||
375 | 01000000 0 00000000 | 376 | 0x1000000 0x0 0x0 |
376 | 01000000 0 00000000 | 377 | 0x1000000 0x0 0x0 |
377 | 0 00100000>; | 378 | 0x0 0x100000>; |
378 | uli1575@0 { | 379 | uli1575@0 { |
379 | reg = <0 0 0 0 0>; | 380 | reg = <0x0 0x0 0x0 0x0 0x0>; |
380 | #size-cells = <2>; | 381 | #size-cells = <2>; |
381 | #address-cells = <3>; | 382 | #address-cells = <3>; |
382 | ranges = <02000000 0 80000000 | 383 | ranges = <0x2000000 0x0 0x80000000 |
383 | 02000000 0 80000000 | 384 | 0x2000000 0x0 0x80000000 |
384 | 0 20000000 | 385 | 0x0 0x20000000 |
385 | 386 | ||
386 | 01000000 0 00000000 | 387 | 0x1000000 0x0 0x0 |
387 | 01000000 0 00000000 | 388 | 0x1000000 0x0 0x0 |
388 | 0 00100000>; | 389 | 0x0 0x100000>; |
389 | isa@1e { | 390 | isa@1e { |
390 | device_type = "isa"; | 391 | device_type = "isa"; |
391 | #interrupt-cells = <2>; | 392 | #interrupt-cells = <2>; |
392 | #size-cells = <1>; | 393 | #size-cells = <1>; |
393 | #address-cells = <2>; | 394 | #address-cells = <2>; |
394 | reg = <f000 0 0 0 0>; | 395 | reg = <0xf000 0x0 0x0 0x0 0x0>; |
395 | ranges = <1 0 01000000 0 0 | 396 | ranges = <0x1 0x0 0x1000000 0x0 0x0 |
396 | 00001000>; | 397 | 0x1000>; |
397 | interrupt-parent = <&i8259>; | 398 | interrupt-parent = <&i8259>; |
398 | 399 | ||
399 | i8259: interrupt-controller@20 { | 400 | i8259: interrupt-controller@20 { |
400 | reg = <1 20 2 | 401 | reg = <0x1 0x20 0x2 |
401 | 1 a0 2 | 402 | 0x1 0xa0 0x2 |
402 | 1 4d0 2>; | 403 | 0x1 0x4d0 0x2>; |
403 | interrupt-controller; | 404 | interrupt-controller; |
404 | device_type = "interrupt-controller"; | 405 | device_type = "interrupt-controller"; |
405 | #address-cells = <0>; | 406 | #address-cells = <0>; |
@@ -412,29 +413,29 @@ | |||
412 | i8042@60 { | 413 | i8042@60 { |
413 | #size-cells = <0>; | 414 | #size-cells = <0>; |
414 | #address-cells = <1>; | 415 | #address-cells = <1>; |
415 | reg = <1 60 1 1 64 1>; | 416 | reg = <0x1 0x60 0x1 0x1 0x64 0x1>; |
416 | interrupts = <1 3 c 3>; | 417 | interrupts = <1 3 12 3>; |
417 | interrupt-parent = | 418 | interrupt-parent = |
418 | <&i8259>; | 419 | <&i8259>; |
419 | 420 | ||
420 | keyboard@0 { | 421 | keyboard@0 { |
421 | reg = <0>; | 422 | reg = <0x0>; |
422 | compatible = "pnpPNP,303"; | 423 | compatible = "pnpPNP,303"; |
423 | }; | 424 | }; |
424 | 425 | ||
425 | mouse@1 { | 426 | mouse@1 { |
426 | reg = <1>; | 427 | reg = <0x1>; |
427 | compatible = "pnpPNP,f03"; | 428 | compatible = "pnpPNP,f03"; |
428 | }; | 429 | }; |
429 | }; | 430 | }; |
430 | 431 | ||
431 | rtc@70 { | 432 | rtc@70 { |
432 | compatible = "pnpPNP,b00"; | 433 | compatible = "pnpPNP,b00"; |
433 | reg = <1 70 2>; | 434 | reg = <0x1 0x70 0x2>; |
434 | }; | 435 | }; |
435 | 436 | ||
436 | gpio@400 { | 437 | gpio@400 { |
437 | reg = <1 400 80>; | 438 | reg = <0x1 0x400 0x80>; |
438 | }; | 439 | }; |
439 | }; | 440 | }; |
440 | }; | 441 | }; |
@@ -449,33 +450,33 @@ | |||
449 | #interrupt-cells = <1>; | 450 | #interrupt-cells = <1>; |
450 | #size-cells = <2>; | 451 | #size-cells = <2>; |
451 | #address-cells = <3>; | 452 | #address-cells = <3>; |
452 | reg = <ffe09000 1000>; | 453 | reg = <0xffe09000 0x1000>; |
453 | bus-range = <0 ff>; | 454 | bus-range = <0 255>; |
454 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 455 | ranges = <0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 |
455 | 01000000 0 00000000 ffc10000 0 00010000>; | 456 | 0x1000000 0x0 0x0 0xffc10000 0x0 0x10000>; |
456 | clock-frequency = <1fca055>; | 457 | clock-frequency = <33333333>; |
457 | interrupt-parent = <&mpic>; | 458 | interrupt-parent = <&mpic>; |
458 | interrupts = <1a 2>; | 459 | interrupts = <26 2>; |
459 | interrupt-map-mask = <f800 0 0 7>; | 460 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
460 | interrupt-map = < | 461 | interrupt-map = < |
461 | /* IDSEL 0x0 */ | 462 | /* IDSEL 0x0 */ |
462 | 0000 0 0 1 &mpic 4 1 | 463 | 0000 0x0 0x0 0x1 &mpic 0x4 0x1 |
463 | 0000 0 0 2 &mpic 5 1 | 464 | 0000 0x0 0x0 0x2 &mpic 0x5 0x1 |
464 | 0000 0 0 3 &mpic 6 1 | 465 | 0000 0x0 0x0 0x3 &mpic 0x6 0x1 |
465 | 0000 0 0 4 &mpic 7 1 | 466 | 0000 0x0 0x0 0x4 &mpic 0x7 0x1 |
466 | >; | 467 | >; |
467 | pcie@0 { | 468 | pcie@0 { |
468 | reg = <0 0 0 0 0>; | 469 | reg = <0x0 0x0 0x0 0x0 0x0>; |
469 | #size-cells = <2>; | 470 | #size-cells = <2>; |
470 | #address-cells = <3>; | 471 | #address-cells = <3>; |
471 | device_type = "pci"; | 472 | device_type = "pci"; |
472 | ranges = <02000000 0 a0000000 | 473 | ranges = <0x2000000 0x0 0xa0000000 |
473 | 02000000 0 a0000000 | 474 | 0x2000000 0x0 0xa0000000 |
474 | 0 20000000 | 475 | 0x0 0x20000000 |
475 | 476 | ||
476 | 01000000 0 00000000 | 477 | 0x1000000 0x0 0x0 |
477 | 01000000 0 00000000 | 478 | 0x1000000 0x0 0x0 |
478 | 0 00100000>; | 479 | 0x0 0x100000>; |
479 | }; | 480 | }; |
480 | }; | 481 | }; |
481 | 482 | ||
@@ -486,33 +487,33 @@ | |||
486 | #interrupt-cells = <1>; | 487 | #interrupt-cells = <1>; |
487 | #size-cells = <2>; | 488 | #size-cells = <2>; |
488 | #address-cells = <3>; | 489 | #address-cells = <3>; |
489 | reg = <ffe0a000 1000>; | 490 | reg = <0xffe0a000 0x1000>; |
490 | bus-range = <0 ff>; | 491 | bus-range = <0 255>; |
491 | ranges = <02000000 0 c0000000 c0000000 0 20000000 | 492 | ranges = <0x2000000 0x0 0xc0000000 0xc0000000 0x0 0x20000000 |
492 | 01000000 0 00000000 ffc20000 0 00010000>; | 493 | 0x1000000 0x0 0x0 0xffc20000 0x0 0x10000>; |
493 | clock-frequency = <1fca055>; | 494 | clock-frequency = <33333333>; |
494 | interrupt-parent = <&mpic>; | 495 | interrupt-parent = <&mpic>; |
495 | interrupts = <1b 2>; | 496 | interrupts = <27 2>; |
496 | interrupt-map-mask = <f800 0 0 7>; | 497 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
497 | interrupt-map = < | 498 | interrupt-map = < |
498 | /* IDSEL 0x0 */ | 499 | /* IDSEL 0x0 */ |
499 | 0000 0 0 1 &mpic 0 1 | 500 | 0000 0x0 0x0 0x1 &mpic 0x0 0x1 |
500 | 0000 0 0 2 &mpic 1 1 | 501 | 0000 0x0 0x0 0x2 &mpic 0x1 0x1 |
501 | 0000 0 0 3 &mpic 2 1 | 502 | 0000 0x0 0x0 0x3 &mpic 0x2 0x1 |
502 | 0000 0 0 4 &mpic 3 1 | 503 | 0000 0x0 0x0 0x4 &mpic 0x3 0x1 |
503 | >; | 504 | >; |
504 | pcie@0 { | 505 | pcie@0 { |
505 | reg = <0 0 0 0 0>; | 506 | reg = <0x0 0x0 0x0 0x0 0x0>; |
506 | #size-cells = <2>; | 507 | #size-cells = <2>; |
507 | #address-cells = <3>; | 508 | #address-cells = <3>; |
508 | device_type = "pci"; | 509 | device_type = "pci"; |
509 | ranges = <02000000 0 c0000000 | 510 | ranges = <0x2000000 0x0 0xc0000000 |
510 | 02000000 0 c0000000 | 511 | 0x2000000 0x0 0xc0000000 |
511 | 0 20000000 | 512 | 0x0 0x20000000 |
512 | 513 | ||
513 | 01000000 0 00000000 | 514 | 0x1000000 0x0 0x0 |
514 | 01000000 0 00000000 | 515 | 0x1000000 0x0 0x0 |
515 | 0 00100000>; | 516 | 0x0 0x100000>; |
516 | }; | 517 | }; |
517 | }; | 518 | }; |
518 | }; | 519 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index 79385bcd5c5f..7f9b999843ce 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts | |||
@@ -13,7 +13,7 @@ | |||
13 | 13 | ||
14 | / { | 14 | / { |
15 | model = "MPC8641HPCN"; | 15 | model = "MPC8641HPCN"; |
16 | compatible = "mpc86xx"; | 16 | compatible = "fsl,mpc8641hpcn"; |
17 | #address-cells = <1>; | 17 | #address-cells = <1>; |
18 | #size-cells = <1>; | 18 | #size-cells = <1>; |
19 | 19 | ||
diff --git a/arch/powerpc/boot/dts/mpc866ads.dts b/arch/powerpc/boot/dts/mpc866ads.dts index daf9433e906b..765e43c997da 100644 --- a/arch/powerpc/boot/dts/mpc866ads.dts +++ b/arch/powerpc/boot/dts/mpc866ads.dts | |||
@@ -2,6 +2,7 @@ | |||
2 | * MPC866 ADS Device Tree Source | 2 | * MPC866 ADS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 MontaVista Software, Inc. | 4 | * Copyright 2006 MontaVista Software, Inc. |
5 | * Copyright 2008 Freescale Semiconductor, Inc. | ||
5 | * | 6 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 7 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 8 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +10,7 @@ | |||
9 | * option) any later version. | 10 | * option) any later version. |
10 | */ | 11 | */ |
11 | 12 | ||
13 | /dts-v1/; | ||
12 | 14 | ||
13 | / { | 15 | / { |
14 | model = "MPC866ADS"; | 16 | model = "MPC866ADS"; |
@@ -22,37 +24,37 @@ | |||
22 | 24 | ||
23 | PowerPC,866@0 { | 25 | PowerPC,866@0 { |
24 | device_type = "cpu"; | 26 | device_type = "cpu"; |
25 | reg = <0>; | 27 | reg = <0x0>; |
26 | d-cache-line-size = <10>; // 16 bytes | 28 | d-cache-line-size = <16>; // 16 bytes |
27 | i-cache-line-size = <10>; // 16 bytes | 29 | i-cache-line-size = <16>; // 16 bytes |
28 | d-cache-size = <2000>; // L1, 8K | 30 | d-cache-size = <0x2000>; // L1, 8K |
29 | i-cache-size = <4000>; // L1, 16K | 31 | i-cache-size = <0x4000>; // L1, 16K |
30 | timebase-frequency = <0>; | 32 | timebase-frequency = <0>; |
31 | bus-frequency = <0>; | 33 | bus-frequency = <0>; |
32 | clock-frequency = <0>; | 34 | clock-frequency = <0>; |
33 | interrupts = <f 2>; // decrementer interrupt | 35 | interrupts = <15 2>; // decrementer interrupt |
34 | interrupt-parent = <&PIC>; | 36 | interrupt-parent = <&PIC>; |
35 | }; | 37 | }; |
36 | }; | 38 | }; |
37 | 39 | ||
38 | memory { | 40 | memory { |
39 | device_type = "memory"; | 41 | device_type = "memory"; |
40 | reg = <00000000 800000>; | 42 | reg = <0x0 0x800000>; |
41 | }; | 43 | }; |
42 | 44 | ||
43 | localbus@ff000100 { | 45 | localbus@ff000100 { |
44 | compatible = "fsl,mpc866-localbus", "fsl,pq1-localbus"; | 46 | compatible = "fsl,mpc866-localbus", "fsl,pq1-localbus"; |
45 | #address-cells = <2>; | 47 | #address-cells = <2>; |
46 | #size-cells = <1>; | 48 | #size-cells = <1>; |
47 | reg = <ff000100 40>; | 49 | reg = <0xff000100 0x40>; |
48 | 50 | ||
49 | ranges = < | 51 | ranges = < |
50 | 1 0 ff080000 00008000 | 52 | 0x1 0x0 0xff080000 0x8000 |
51 | 5 0 ff0a0000 00008000 | 53 | 0x5 0x0 0xff0a0000 0x8000 |
52 | >; | 54 | >; |
53 | 55 | ||
54 | board-control@1,0 { | 56 | board-control@1,0 { |
55 | reg = <1 0 20 5 300 4>; | 57 | reg = <0x1 0x0 0x20 0x5 0x300 0x4>; |
56 | compatible = "fsl,mpc866ads-bcsr"; | 58 | compatible = "fsl,mpc866ads-bcsr"; |
57 | }; | 59 | }; |
58 | }; | 60 | }; |
@@ -61,17 +63,17 @@ | |||
61 | #address-cells = <1>; | 63 | #address-cells = <1>; |
62 | #size-cells = <1>; | 64 | #size-cells = <1>; |
63 | device_type = "soc"; | 65 | device_type = "soc"; |
64 | ranges = <0 ff000000 00100000>; | 66 | ranges = <0x0 0xff000000 0x100000>; |
65 | reg = <ff000000 00000200>; | 67 | reg = <0xff000000 0x200>; |
66 | bus-frequency = <0>; | 68 | bus-frequency = <0>; |
67 | 69 | ||
68 | mdio@e00 { | 70 | mdio@e00 { |
69 | compatible = "fsl,mpc866-fec-mdio", "fsl,pq1-fec-mdio"; | 71 | compatible = "fsl,mpc866-fec-mdio", "fsl,pq1-fec-mdio"; |
70 | reg = <e00 188>; | 72 | reg = <0xe00 0x188>; |
71 | #address-cells = <1>; | 73 | #address-cells = <1>; |
72 | #size-cells = <0>; | 74 | #size-cells = <0>; |
73 | PHY: ethernet-phy@f { | 75 | PHY: ethernet-phy@f { |
74 | reg = <f>; | 76 | reg = <0xf>; |
75 | device_type = "ethernet-phy"; | 77 | device_type = "ethernet-phy"; |
76 | }; | 78 | }; |
77 | }; | 79 | }; |
@@ -80,7 +82,7 @@ | |||
80 | device_type = "network"; | 82 | device_type = "network"; |
81 | compatible = "fsl,mpc866-fec-enet", | 83 | compatible = "fsl,mpc866-fec-enet", |
82 | "fsl,pq1-fec-enet"; | 84 | "fsl,pq1-fec-enet"; |
83 | reg = <e00 188>; | 85 | reg = <0xe00 0x188>; |
84 | local-mac-address = [ 00 00 00 00 00 00 ]; | 86 | local-mac-address = [ 00 00 00 00 00 00 ]; |
85 | interrupts = <3 1>; | 87 | interrupts = <3 1>; |
86 | interrupt-parent = <&PIC>; | 88 | interrupt-parent = <&PIC>; |
@@ -91,7 +93,7 @@ | |||
91 | PIC: pic@0 { | 93 | PIC: pic@0 { |
92 | interrupt-controller; | 94 | interrupt-controller; |
93 | #interrupt-cells = <2>; | 95 | #interrupt-cells = <2>; |
94 | reg = <0 24>; | 96 | reg = <0x0 0x24>; |
95 | compatible = "fsl,mpc866-pic", "fsl,pq1-pic"; | 97 | compatible = "fsl,mpc866-pic", "fsl,pq1-pic"; |
96 | }; | 98 | }; |
97 | 99 | ||
@@ -100,7 +102,7 @@ | |||
100 | #size-cells = <1>; | 102 | #size-cells = <1>; |
101 | compatible = "fsl,mpc866-cpm", "fsl,cpm1"; | 103 | compatible = "fsl,mpc866-cpm", "fsl,cpm1"; |
102 | ranges; | 104 | ranges; |
103 | reg = <9c0 40>; | 105 | reg = <0x9c0 0x40>; |
104 | brg-frequency = <0>; | 106 | brg-frequency = <0>; |
105 | interrupts = <0 2>; // cpm error interrupt | 107 | interrupts = <0 2>; // cpm error interrupt |
106 | interrupt-parent = <&CPM_PIC>; | 108 | interrupt-parent = <&CPM_PIC>; |
@@ -108,11 +110,11 @@ | |||
108 | muram@2000 { | 110 | muram@2000 { |
109 | #address-cells = <1>; | 111 | #address-cells = <1>; |
110 | #size-cells = <1>; | 112 | #size-cells = <1>; |
111 | ranges = <0 2000 2000>; | 113 | ranges = <0x0 0x2000 0x2000>; |
112 | 114 | ||
113 | data@0 { | 115 | data@0 { |
114 | compatible = "fsl,cpm-muram-data"; | 116 | compatible = "fsl,cpm-muram-data"; |
115 | reg = <0 1c00>; | 117 | reg = <0x0 0x1c00>; |
116 | }; | 118 | }; |
117 | }; | 119 | }; |
118 | 120 | ||
@@ -120,7 +122,7 @@ | |||
120 | compatible = "fsl,mpc866-brg", | 122 | compatible = "fsl,mpc866-brg", |
121 | "fsl,cpm1-brg", | 123 | "fsl,cpm1-brg", |
122 | "fsl,cpm-brg"; | 124 | "fsl,cpm-brg"; |
123 | reg = <9f0 10>; | 125 | reg = <0x9f0 0x10>; |
124 | clock-frequency = <0>; | 126 | clock-frequency = <0>; |
125 | }; | 127 | }; |
126 | 128 | ||
@@ -130,7 +132,7 @@ | |||
130 | #interrupt-cells = <1>; | 132 | #interrupt-cells = <1>; |
131 | interrupts = <5 2 0 2>; | 133 | interrupts = <5 2 0 2>; |
132 | interrupt-parent = <&PIC>; | 134 | interrupt-parent = <&PIC>; |
133 | reg = <930 20>; | 135 | reg = <0x930 0x20>; |
134 | compatible = "fsl,mpc866-cpm-pic", | 136 | compatible = "fsl,mpc866-cpm-pic", |
135 | "fsl,cpm1-pic"; | 137 | "fsl,cpm1-pic"; |
136 | }; | 138 | }; |
@@ -140,31 +142,31 @@ | |||
140 | device_type = "serial"; | 142 | device_type = "serial"; |
141 | compatible = "fsl,mpc866-smc-uart", | 143 | compatible = "fsl,mpc866-smc-uart", |
142 | "fsl,cpm1-smc-uart"; | 144 | "fsl,cpm1-smc-uart"; |
143 | reg = <a80 10 3e80 40>; | 145 | reg = <0xa80 0x10 0x3e80 0x40>; |
144 | interrupts = <4>; | 146 | interrupts = <4>; |
145 | interrupt-parent = <&CPM_PIC>; | 147 | interrupt-parent = <&CPM_PIC>; |
146 | fsl,cpm-brg = <1>; | 148 | fsl,cpm-brg = <1>; |
147 | fsl,cpm-command = <0090>; | 149 | fsl,cpm-command = <0x90>; |
148 | }; | 150 | }; |
149 | 151 | ||
150 | serial@a90 { | 152 | serial@a90 { |
151 | device_type = "serial"; | 153 | device_type = "serial"; |
152 | compatible = "fsl,mpc866-smc-uart", | 154 | compatible = "fsl,mpc866-smc-uart", |
153 | "fsl,cpm1-smc-uart"; | 155 | "fsl,cpm1-smc-uart"; |
154 | reg = <a90 10 3f80 40>; | 156 | reg = <0xa90 0x10 0x3f80 0x40>; |
155 | interrupts = <3>; | 157 | interrupts = <3>; |
156 | interrupt-parent = <&CPM_PIC>; | 158 | interrupt-parent = <&CPM_PIC>; |
157 | fsl,cpm-brg = <2>; | 159 | fsl,cpm-brg = <2>; |
158 | fsl,cpm-command = <00d0>; | 160 | fsl,cpm-command = <0xd0>; |
159 | }; | 161 | }; |
160 | 162 | ||
161 | ethernet@a00 { | 163 | ethernet@a00 { |
162 | device_type = "network"; | 164 | device_type = "network"; |
163 | compatible = "fsl,mpc866-scc-enet", | 165 | compatible = "fsl,mpc866-scc-enet", |
164 | "fsl,cpm1-scc-enet"; | 166 | "fsl,cpm1-scc-enet"; |
165 | reg = <a00 18 3c00 100>; | 167 | reg = <0xa00 0x18 0x3c00 0x100>; |
166 | local-mac-address = [ 00 00 00 00 00 00 ]; | 168 | local-mac-address = [ 00 00 00 00 00 00 ]; |
167 | interrupts = <1e>; | 169 | interrupts = <30>; |
168 | interrupt-parent = <&CPM_PIC>; | 170 | interrupt-parent = <&CPM_PIC>; |
169 | fsl,cpm-command = <0000>; | 171 | fsl,cpm-command = <0000>; |
170 | linux,network-index = <1>; | 172 | linux,network-index = <1>; |
diff --git a/arch/powerpc/boot/dts/mpc885ads.dts b/arch/powerpc/boot/dts/mpc885ads.dts index d84a012c2aaf..9895043722b9 100644 --- a/arch/powerpc/boot/dts/mpc885ads.dts +++ b/arch/powerpc/boot/dts/mpc885ads.dts | |||
@@ -2,7 +2,7 @@ | |||
2 | * MPC885 ADS Device Tree Source | 2 | * MPC885 ADS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 MontaVista Software, Inc. | 4 | * Copyright 2006 MontaVista Software, Inc. |
5 | * Copyright 2007 Freescale Semiconductor, Inc. | 5 | * Copyright 2007,2008 Freescale Semiconductor, Inc. |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify it | 7 | * This program is free software; you can redistribute it and/or modify it |
8 | * under the terms of the GNU General Public License as published by the | 8 | * under the terms of the GNU General Public License as published by the |
@@ -10,6 +10,7 @@ | |||
10 | * option) any later version. | 10 | * option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | /dts-v1/; | ||
13 | 14 | ||
14 | / { | 15 | / { |
15 | model = "MPC885ADS"; | 16 | model = "MPC885ADS"; |
@@ -23,45 +24,45 @@ | |||
23 | 24 | ||
24 | PowerPC,885@0 { | 25 | PowerPC,885@0 { |
25 | device_type = "cpu"; | 26 | device_type = "cpu"; |
26 | reg = <0>; | 27 | reg = <0x0>; |
27 | d-cache-line-size = <d#16>; | 28 | d-cache-line-size = <16>; |
28 | i-cache-line-size = <d#16>; | 29 | i-cache-line-size = <16>; |
29 | d-cache-size = <d#8192>; | 30 | d-cache-size = <8192>; |
30 | i-cache-size = <d#8192>; | 31 | i-cache-size = <8192>; |
31 | timebase-frequency = <0>; | 32 | timebase-frequency = <0>; |
32 | bus-frequency = <0>; | 33 | bus-frequency = <0>; |
33 | clock-frequency = <0>; | 34 | clock-frequency = <0>; |
34 | interrupts = <f 2>; // decrementer interrupt | 35 | interrupts = <15 2>; // decrementer interrupt |
35 | interrupt-parent = <&PIC>; | 36 | interrupt-parent = <&PIC>; |
36 | }; | 37 | }; |
37 | }; | 38 | }; |
38 | 39 | ||
39 | memory { | 40 | memory { |
40 | device_type = "memory"; | 41 | device_type = "memory"; |
41 | reg = <0 0>; | 42 | reg = <0x0 0x0>; |
42 | }; | 43 | }; |
43 | 44 | ||
44 | localbus@ff000100 { | 45 | localbus@ff000100 { |
45 | compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus"; | 46 | compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus"; |
46 | #address-cells = <2>; | 47 | #address-cells = <2>; |
47 | #size-cells = <1>; | 48 | #size-cells = <1>; |
48 | reg = <ff000100 40>; | 49 | reg = <0xff000100 0x40>; |
49 | 50 | ||
50 | ranges = < | 51 | ranges = < |
51 | 0 0 fe000000 00800000 | 52 | 0x0 0x0 0xfe000000 0x800000 |
52 | 1 0 ff080000 00008000 | 53 | 0x1 0x0 0xff080000 0x8000 |
53 | 5 0 ff0a0000 00008000 | 54 | 0x5 0x0 0xff0a0000 0x8000 |
54 | >; | 55 | >; |
55 | 56 | ||
56 | flash@0,0 { | 57 | flash@0,0 { |
57 | compatible = "jedec-flash"; | 58 | compatible = "jedec-flash"; |
58 | reg = <0 0 800000>; | 59 | reg = <0x0 0x0 0x800000>; |
59 | bank-width = <4>; | 60 | bank-width = <4>; |
60 | device-width = <1>; | 61 | device-width = <1>; |
61 | }; | 62 | }; |
62 | 63 | ||
63 | board-control@1,0 { | 64 | board-control@1,0 { |
64 | reg = <1 0 20 5 300 4>; | 65 | reg = <0x1 0x0 0x20 0x5 0x300 0x4>; |
65 | compatible = "fsl,mpc885ads-bcsr"; | 66 | compatible = "fsl,mpc885ads-bcsr"; |
66 | }; | 67 | }; |
67 | }; | 68 | }; |
@@ -71,30 +72,30 @@ | |||
71 | #address-cells = <1>; | 72 | #address-cells = <1>; |
72 | #size-cells = <1>; | 73 | #size-cells = <1>; |
73 | device_type = "soc"; | 74 | device_type = "soc"; |
74 | ranges = <0 ff000000 00004000>; | 75 | ranges = <0x0 0xff000000 0x4000>; |
75 | bus-frequency = <0>; | 76 | bus-frequency = <0>; |
76 | 77 | ||
77 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). | 78 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). |
78 | reg = <ff000000 4000>; | 79 | reg = <0xff000000 0x4000>; |
79 | 80 | ||
80 | mdio@e00 { | 81 | mdio@e00 { |
81 | compatible = "fsl,mpc885-fec-mdio", "fsl,pq1-fec-mdio"; | 82 | compatible = "fsl,mpc885-fec-mdio", "fsl,pq1-fec-mdio"; |
82 | reg = <e00 188>; | 83 | reg = <0xe00 0x188>; |
83 | #address-cells = <1>; | 84 | #address-cells = <1>; |
84 | #size-cells = <0>; | 85 | #size-cells = <0>; |
85 | 86 | ||
86 | PHY0: ethernet-phy@0 { | 87 | PHY0: ethernet-phy@0 { |
87 | reg = <0>; | 88 | reg = <0x0>; |
88 | device_type = "ethernet-phy"; | 89 | device_type = "ethernet-phy"; |
89 | }; | 90 | }; |
90 | 91 | ||
91 | PHY1: ethernet-phy@1 { | 92 | PHY1: ethernet-phy@1 { |
92 | reg = <1>; | 93 | reg = <0x1>; |
93 | device_type = "ethernet-phy"; | 94 | device_type = "ethernet-phy"; |
94 | }; | 95 | }; |
95 | 96 | ||
96 | PHY2: ethernet-phy@2 { | 97 | PHY2: ethernet-phy@2 { |
97 | reg = <2>; | 98 | reg = <0x2>; |
98 | device_type = "ethernet-phy"; | 99 | device_type = "ethernet-phy"; |
99 | }; | 100 | }; |
100 | }; | 101 | }; |
@@ -103,7 +104,7 @@ | |||
103 | device_type = "network"; | 104 | device_type = "network"; |
104 | compatible = "fsl,mpc885-fec-enet", | 105 | compatible = "fsl,mpc885-fec-enet", |
105 | "fsl,pq1-fec-enet"; | 106 | "fsl,pq1-fec-enet"; |
106 | reg = <e00 188>; | 107 | reg = <0xe00 0x188>; |
107 | local-mac-address = [ 00 00 00 00 00 00 ]; | 108 | local-mac-address = [ 00 00 00 00 00 00 ]; |
108 | interrupts = <3 1>; | 109 | interrupts = <3 1>; |
109 | interrupt-parent = <&PIC>; | 110 | interrupt-parent = <&PIC>; |
@@ -115,7 +116,7 @@ | |||
115 | device_type = "network"; | 116 | device_type = "network"; |
116 | compatible = "fsl,mpc885-fec-enet", | 117 | compatible = "fsl,mpc885-fec-enet", |
117 | "fsl,pq1-fec-enet"; | 118 | "fsl,pq1-fec-enet"; |
118 | reg = <1e00 188>; | 119 | reg = <0x1e00 0x188>; |
119 | local-mac-address = [ 00 00 00 00 00 00 ]; | 120 | local-mac-address = [ 00 00 00 00 00 00 ]; |
120 | interrupts = <7 1>; | 121 | interrupts = <7 1>; |
121 | interrupt-parent = <&PIC>; | 122 | interrupt-parent = <&PIC>; |
@@ -126,7 +127,7 @@ | |||
126 | PIC: interrupt-controller@0 { | 127 | PIC: interrupt-controller@0 { |
127 | interrupt-controller; | 128 | interrupt-controller; |
128 | #interrupt-cells = <2>; | 129 | #interrupt-cells = <2>; |
129 | reg = <0 24>; | 130 | reg = <0x0 0x24>; |
130 | compatible = "fsl,mpc885-pic", "fsl,pq1-pic"; | 131 | compatible = "fsl,mpc885-pic", "fsl,pq1-pic"; |
131 | }; | 132 | }; |
132 | 133 | ||
@@ -136,29 +137,29 @@ | |||
136 | #size-cells = <2>; | 137 | #size-cells = <2>; |
137 | compatible = "fsl,pq-pcmcia"; | 138 | compatible = "fsl,pq-pcmcia"; |
138 | device_type = "pcmcia"; | 139 | device_type = "pcmcia"; |
139 | reg = <80 80>; | 140 | reg = <0x80 0x80>; |
140 | interrupt-parent = <&PIC>; | 141 | interrupt-parent = <&PIC>; |
141 | interrupts = <d 1>; | 142 | interrupts = <13 1>; |
142 | }; | 143 | }; |
143 | 144 | ||
144 | cpm@9c0 { | 145 | cpm@9c0 { |
145 | #address-cells = <1>; | 146 | #address-cells = <1>; |
146 | #size-cells = <1>; | 147 | #size-cells = <1>; |
147 | compatible = "fsl,mpc885-cpm", "fsl,cpm1"; | 148 | compatible = "fsl,mpc885-cpm", "fsl,cpm1"; |
148 | command-proc = <9c0>; | 149 | command-proc = <0x9c0>; |
149 | interrupts = <0>; // cpm error interrupt | 150 | interrupts = <0>; // cpm error interrupt |
150 | interrupt-parent = <&CPM_PIC>; | 151 | interrupt-parent = <&CPM_PIC>; |
151 | reg = <9c0 40>; | 152 | reg = <0x9c0 0x40>; |
152 | ranges; | 153 | ranges; |
153 | 154 | ||
154 | muram@2000 { | 155 | muram@2000 { |
155 | #address-cells = <1>; | 156 | #address-cells = <1>; |
156 | #size-cells = <1>; | 157 | #size-cells = <1>; |
157 | ranges = <0 2000 2000>; | 158 | ranges = <0x0 0x2000 0x2000>; |
158 | 159 | ||
159 | data@0 { | 160 | data@0 { |
160 | compatible = "fsl,cpm-muram-data"; | 161 | compatible = "fsl,cpm-muram-data"; |
161 | reg = <0 1c00>; | 162 | reg = <0x0 0x1c00>; |
162 | }; | 163 | }; |
163 | }; | 164 | }; |
164 | 165 | ||
@@ -167,7 +168,7 @@ | |||
167 | "fsl,cpm1-brg", | 168 | "fsl,cpm1-brg", |
168 | "fsl,cpm-brg"; | 169 | "fsl,cpm-brg"; |
169 | clock-frequency = <0>; | 170 | clock-frequency = <0>; |
170 | reg = <9f0 10>; | 171 | reg = <0x9f0 0x10>; |
171 | }; | 172 | }; |
172 | 173 | ||
173 | CPM_PIC: interrupt-controller@930 { | 174 | CPM_PIC: interrupt-controller@930 { |
@@ -175,7 +176,7 @@ | |||
175 | #interrupt-cells = <1>; | 176 | #interrupt-cells = <1>; |
176 | interrupts = <5 2 0 2>; | 177 | interrupts = <5 2 0 2>; |
177 | interrupt-parent = <&PIC>; | 178 | interrupt-parent = <&PIC>; |
178 | reg = <930 20>; | 179 | reg = <0x930 0x20>; |
179 | compatible = "fsl,mpc885-cpm-pic", | 180 | compatible = "fsl,mpc885-cpm-pic", |
180 | "fsl,cpm1-pic"; | 181 | "fsl,cpm1-pic"; |
181 | }; | 182 | }; |
@@ -184,34 +185,34 @@ | |||
184 | device_type = "serial"; | 185 | device_type = "serial"; |
185 | compatible = "fsl,mpc885-smc-uart", | 186 | compatible = "fsl,mpc885-smc-uart", |
186 | "fsl,cpm1-smc-uart"; | 187 | "fsl,cpm1-smc-uart"; |
187 | reg = <a80 10 3e80 40>; | 188 | reg = <0xa80 0x10 0x3e80 0x40>; |
188 | interrupts = <4>; | 189 | interrupts = <4>; |
189 | interrupt-parent = <&CPM_PIC>; | 190 | interrupt-parent = <&CPM_PIC>; |
190 | fsl,cpm-brg = <1>; | 191 | fsl,cpm-brg = <1>; |
191 | fsl,cpm-command = <0090>; | 192 | fsl,cpm-command = <0x90>; |
192 | }; | 193 | }; |
193 | 194 | ||
194 | serial@a90 { | 195 | serial@a90 { |
195 | device_type = "serial"; | 196 | device_type = "serial"; |
196 | compatible = "fsl,mpc885-smc-uart", | 197 | compatible = "fsl,mpc885-smc-uart", |
197 | "fsl,cpm1-smc-uart"; | 198 | "fsl,cpm1-smc-uart"; |
198 | reg = <a90 10 3f80 40>; | 199 | reg = <0xa90 0x10 0x3f80 0x40>; |
199 | interrupts = <3>; | 200 | interrupts = <3>; |
200 | interrupt-parent = <&CPM_PIC>; | 201 | interrupt-parent = <&CPM_PIC>; |
201 | fsl,cpm-brg = <2>; | 202 | fsl,cpm-brg = <2>; |
202 | fsl,cpm-command = <00d0>; | 203 | fsl,cpm-command = <0xd0>; |
203 | }; | 204 | }; |
204 | 205 | ||
205 | ethernet@a40 { | 206 | ethernet@a40 { |
206 | device_type = "network"; | 207 | device_type = "network"; |
207 | compatible = "fsl,mpc885-scc-enet", | 208 | compatible = "fsl,mpc885-scc-enet", |
208 | "fsl,cpm1-scc-enet"; | 209 | "fsl,cpm1-scc-enet"; |
209 | reg = <a40 18 3e00 100>; | 210 | reg = <0xa40 0x18 0x3e00 0x100>; |
210 | local-mac-address = [ 00 00 00 00 00 00 ]; | 211 | local-mac-address = [ 00 00 00 00 00 00 ]; |
211 | interrupts = <1c>; | 212 | interrupts = <28>; |
212 | interrupt-parent = <&CPM_PIC>; | 213 | interrupt-parent = <&CPM_PIC>; |
213 | phy-handle = <&PHY2>; | 214 | phy-handle = <&PHY2>; |
214 | fsl,cpm-command = <0080>; | 215 | fsl,cpm-command = <0x80>; |
215 | linux,network-index = <2>; | 216 | linux,network-index = <2>; |
216 | }; | 217 | }; |
217 | }; | 218 | }; |
diff --git a/arch/powerpc/boot/dts/pq2fads.dts b/arch/powerpc/boot/dts/pq2fads.dts index 2d564921897a..b2d61091b36d 100644 --- a/arch/powerpc/boot/dts/pq2fads.dts +++ b/arch/powerpc/boot/dts/pq2fads.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Device Tree for the PQ2FADS-ZU board with an MPC8280 chip. | 2 | * Device Tree for the PQ2FADS-ZU board with an MPC8280 chip. |
3 | * | 3 | * |
4 | * Copyright 2007 Freescale Semiconductor Inc. | 4 | * Copyright 2007,2008 Freescale Semiconductor Inc. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -9,6 +9,8 @@ | |||
9 | * option) any later version. | 9 | * option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /dts-v1/; | ||
13 | |||
12 | / { | 14 | / { |
13 | model = "pq2fads"; | 15 | model = "pq2fads"; |
14 | compatible = "fsl,pq2fads"; | 16 | compatible = "fsl,pq2fads"; |
@@ -21,11 +23,11 @@ | |||
21 | 23 | ||
22 | cpu@0 { | 24 | cpu@0 { |
23 | device_type = "cpu"; | 25 | device_type = "cpu"; |
24 | reg = <0>; | 26 | reg = <0x0>; |
25 | d-cache-line-size = <d#32>; | 27 | d-cache-line-size = <32>; |
26 | i-cache-line-size = <d#32>; | 28 | i-cache-line-size = <32>; |
27 | d-cache-size = <d#16384>; | 29 | d-cache-size = <16384>; |
28 | i-cache-size = <d#16384>; | 30 | i-cache-size = <16384>; |
29 | timebase-frequency = <0>; | 31 | timebase-frequency = <0>; |
30 | clock-frequency = <0>; | 32 | clock-frequency = <0>; |
31 | }; | 33 | }; |
@@ -33,7 +35,7 @@ | |||
33 | 35 | ||
34 | memory { | 36 | memory { |
35 | device_type = "memory"; | 37 | device_type = "memory"; |
36 | reg = <0 0>; | 38 | reg = <0x0 0x0>; |
37 | }; | 39 | }; |
38 | 40 | ||
39 | localbus@f0010100 { | 41 | localbus@f0010100 { |
@@ -41,67 +43,67 @@ | |||
41 | "fsl,pq2-localbus"; | 43 | "fsl,pq2-localbus"; |
42 | #address-cells = <2>; | 44 | #address-cells = <2>; |
43 | #size-cells = <1>; | 45 | #size-cells = <1>; |
44 | reg = <f0010100 60>; | 46 | reg = <0xf0010100 0x60>; |
45 | 47 | ||
46 | ranges = <0 0 fe000000 00800000 | 48 | ranges = <0x0 0x0 0xfe000000 0x800000 |
47 | 1 0 f4500000 00008000 | 49 | 0x1 0x0 0xf4500000 0x8000 |
48 | 8 0 f8200000 00008000>; | 50 | 0x8 0x0 0xf8200000 0x8000>; |
49 | 51 | ||
50 | flash@0,0 { | 52 | flash@0,0 { |
51 | compatible = "jedec-flash"; | 53 | compatible = "jedec-flash"; |
52 | reg = <0 0 800000>; | 54 | reg = <0x0 0x0 0x800000>; |
53 | bank-width = <4>; | 55 | bank-width = <4>; |
54 | device-width = <1>; | 56 | device-width = <1>; |
55 | }; | 57 | }; |
56 | 58 | ||
57 | bcsr@1,0 { | 59 | bcsr@1,0 { |
58 | reg = <1 0 20>; | 60 | reg = <0x1 0x0 0x20>; |
59 | compatible = "fsl,pq2fads-bcsr"; | 61 | compatible = "fsl,pq2fads-bcsr"; |
60 | }; | 62 | }; |
61 | 63 | ||
62 | PCI_PIC: pic@8,0 { | 64 | PCI_PIC: pic@8,0 { |
63 | #interrupt-cells = <1>; | 65 | #interrupt-cells = <1>; |
64 | interrupt-controller; | 66 | interrupt-controller; |
65 | reg = <8 0 8>; | 67 | reg = <0x8 0x0 0x8>; |
66 | compatible = "fsl,pq2ads-pci-pic"; | 68 | compatible = "fsl,pq2ads-pci-pic"; |
67 | interrupt-parent = <&PIC>; | 69 | interrupt-parent = <&PIC>; |
68 | interrupts = <18 8>; | 70 | interrupts = <24 8>; |
69 | }; | 71 | }; |
70 | }; | 72 | }; |
71 | 73 | ||
72 | pci@f0010800 { | 74 | pci@f0010800 { |
73 | device_type = "pci"; | 75 | device_type = "pci"; |
74 | reg = <f0010800 10c f00101ac 8 f00101c4 8>; | 76 | reg = <0xf0010800 0x10c 0xf00101ac 0x8 0xf00101c4 0x8>; |
75 | compatible = "fsl,mpc8280-pci", "fsl,pq2-pci"; | 77 | compatible = "fsl,mpc8280-pci", "fsl,pq2-pci"; |
76 | #interrupt-cells = <1>; | 78 | #interrupt-cells = <1>; |
77 | #size-cells = <2>; | 79 | #size-cells = <2>; |
78 | #address-cells = <3>; | 80 | #address-cells = <3>; |
79 | clock-frequency = <d#66000000>; | 81 | clock-frequency = <66000000>; |
80 | interrupt-map-mask = <f800 0 0 7>; | 82 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
81 | interrupt-map = < | 83 | interrupt-map = < |
82 | /* IDSEL 0x16 */ | 84 | /* IDSEL 0x16 */ |
83 | b000 0 0 1 &PCI_PIC 0 | 85 | 0xb000 0x0 0x0 0x1 &PCI_PIC 0 |
84 | b000 0 0 2 &PCI_PIC 1 | 86 | 0xb000 0x0 0x0 0x2 &PCI_PIC 1 |
85 | b000 0 0 3 &PCI_PIC 2 | 87 | 0xb000 0x0 0x0 0x3 &PCI_PIC 2 |
86 | b000 0 0 4 &PCI_PIC 3 | 88 | 0xb000 0x0 0x0 0x4 &PCI_PIC 3 |
87 | 89 | ||
88 | /* IDSEL 0x17 */ | 90 | /* IDSEL 0x17 */ |
89 | b800 0 0 1 &PCI_PIC 4 | 91 | 0xb800 0x0 0x0 0x1 &PCI_PIC 4 |
90 | b800 0 0 2 &PCI_PIC 5 | 92 | 0xb800 0x0 0x0 0x2 &PCI_PIC 5 |
91 | b800 0 0 3 &PCI_PIC 6 | 93 | 0xb800 0x0 0x0 0x3 &PCI_PIC 6 |
92 | b800 0 0 4 &PCI_PIC 7 | 94 | 0xb800 0x0 0x0 0x4 &PCI_PIC 7 |
93 | 95 | ||
94 | /* IDSEL 0x18 */ | 96 | /* IDSEL 0x18 */ |
95 | c000 0 0 1 &PCI_PIC 8 | 97 | 0xc000 0x0 0x0 0x1 &PCI_PIC 8 |
96 | c000 0 0 2 &PCI_PIC 9 | 98 | 0xc000 0x0 0x0 0x2 &PCI_PIC 9 |
97 | c000 0 0 3 &PCI_PIC a | 99 | 0xc000 0x0 0x0 0x3 &PCI_PIC 10 |
98 | c000 0 0 4 &PCI_PIC b>; | 100 | 0xc000 0x0 0x0 0x4 &PCI_PIC 11>; |
99 | 101 | ||
100 | interrupt-parent = <&PIC>; | 102 | interrupt-parent = <&PIC>; |
101 | interrupts = <12 8>; | 103 | interrupts = <18 8>; |
102 | ranges = <42000000 0 80000000 80000000 0 20000000 | 104 | ranges = <0x42000000 0x0 0x80000000 0x80000000 0x0 0x20000000 |
103 | 02000000 0 a0000000 a0000000 0 20000000 | 105 | 0x2000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 |
104 | 01000000 0 00000000 f6000000 0 02000000>; | 106 | 0x1000000 0x0 0x0 0xf6000000 0x0 0x2000000>; |
105 | }; | 107 | }; |
106 | 108 | ||
107 | soc@f0000000 { | 109 | soc@f0000000 { |
@@ -109,27 +111,27 @@ | |||
109 | #size-cells = <1>; | 111 | #size-cells = <1>; |
110 | device_type = "soc"; | 112 | device_type = "soc"; |
111 | compatible = "fsl,mpc8280", "fsl,pq2-soc"; | 113 | compatible = "fsl,mpc8280", "fsl,pq2-soc"; |
112 | ranges = <00000000 f0000000 00053000>; | 114 | ranges = <0x0 0xf0000000 0x53000>; |
113 | 115 | ||
114 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). | 116 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). |
115 | reg = <f0000000 00053000>; | 117 | reg = <0xf0000000 0x53000>; |
116 | 118 | ||
117 | cpm@119c0 { | 119 | cpm@119c0 { |
118 | #address-cells = <1>; | 120 | #address-cells = <1>; |
119 | #size-cells = <1>; | 121 | #size-cells = <1>; |
120 | #interrupt-cells = <2>; | 122 | #interrupt-cells = <2>; |
121 | compatible = "fsl,mpc8280-cpm", "fsl,cpm2"; | 123 | compatible = "fsl,mpc8280-cpm", "fsl,cpm2"; |
122 | reg = <119c0 30>; | 124 | reg = <0x119c0 0x30>; |
123 | ranges; | 125 | ranges; |
124 | 126 | ||
125 | muram@0 { | 127 | muram@0 { |
126 | #address-cells = <1>; | 128 | #address-cells = <1>; |
127 | #size-cells = <1>; | 129 | #size-cells = <1>; |
128 | ranges = <0 0 10000>; | 130 | ranges = <0x0 0x0 0x10000>; |
129 | 131 | ||
130 | data@0 { | 132 | data@0 { |
131 | compatible = "fsl,cpm-muram-data"; | 133 | compatible = "fsl,cpm-muram-data"; |
132 | reg = <0 2000 9800 800>; | 134 | reg = <0x0 0x2000 0x9800 0x800>; |
133 | }; | 135 | }; |
134 | }; | 136 | }; |
135 | 137 | ||
@@ -137,53 +139,53 @@ | |||
137 | compatible = "fsl,mpc8280-brg", | 139 | compatible = "fsl,mpc8280-brg", |
138 | "fsl,cpm2-brg", | 140 | "fsl,cpm2-brg", |
139 | "fsl,cpm-brg"; | 141 | "fsl,cpm-brg"; |
140 | reg = <119f0 10 115f0 10>; | 142 | reg = <0x119f0 0x10 0x115f0 0x10>; |
141 | }; | 143 | }; |
142 | 144 | ||
143 | serial@11a00 { | 145 | serial@11a00 { |
144 | device_type = "serial"; | 146 | device_type = "serial"; |
145 | compatible = "fsl,mpc8280-scc-uart", | 147 | compatible = "fsl,mpc8280-scc-uart", |
146 | "fsl,cpm2-scc-uart"; | 148 | "fsl,cpm2-scc-uart"; |
147 | reg = <11a00 20 8000 100>; | 149 | reg = <0x11a00 0x20 0x8000 0x100>; |
148 | interrupts = <28 8>; | 150 | interrupts = <40 8>; |
149 | interrupt-parent = <&PIC>; | 151 | interrupt-parent = <&PIC>; |
150 | fsl,cpm-brg = <1>; | 152 | fsl,cpm-brg = <1>; |
151 | fsl,cpm-command = <00800000>; | 153 | fsl,cpm-command = <0x800000>; |
152 | }; | 154 | }; |
153 | 155 | ||
154 | serial@11a20 { | 156 | serial@11a20 { |
155 | device_type = "serial"; | 157 | device_type = "serial"; |
156 | compatible = "fsl,mpc8280-scc-uart", | 158 | compatible = "fsl,mpc8280-scc-uart", |
157 | "fsl,cpm2-scc-uart"; | 159 | "fsl,cpm2-scc-uart"; |
158 | reg = <11a20 20 8100 100>; | 160 | reg = <0x11a20 0x20 0x8100 0x100>; |
159 | interrupts = <29 8>; | 161 | interrupts = <41 8>; |
160 | interrupt-parent = <&PIC>; | 162 | interrupt-parent = <&PIC>; |
161 | fsl,cpm-brg = <2>; | 163 | fsl,cpm-brg = <2>; |
162 | fsl,cpm-command = <04a00000>; | 164 | fsl,cpm-command = <0x4a00000>; |
163 | }; | 165 | }; |
164 | 166 | ||
165 | ethernet@11320 { | 167 | ethernet@11320 { |
166 | device_type = "network"; | 168 | device_type = "network"; |
167 | compatible = "fsl,mpc8280-fcc-enet", | 169 | compatible = "fsl,mpc8280-fcc-enet", |
168 | "fsl,cpm2-fcc-enet"; | 170 | "fsl,cpm2-fcc-enet"; |
169 | reg = <11320 20 8500 100 113b0 1>; | 171 | reg = <0x11320 0x20 0x8500 0x100 0x113b0 0x1>; |
170 | interrupts = <21 8>; | 172 | interrupts = <33 8>; |
171 | interrupt-parent = <&PIC>; | 173 | interrupt-parent = <&PIC>; |
172 | phy-handle = <&PHY0>; | 174 | phy-handle = <&PHY0>; |
173 | linux,network-index = <0>; | 175 | linux,network-index = <0>; |
174 | fsl,cpm-command = <16200300>; | 176 | fsl,cpm-command = <0x16200300>; |
175 | }; | 177 | }; |
176 | 178 | ||
177 | ethernet@11340 { | 179 | ethernet@11340 { |
178 | device_type = "network"; | 180 | device_type = "network"; |
179 | compatible = "fsl,mpc8280-fcc-enet", | 181 | compatible = "fsl,mpc8280-fcc-enet", |
180 | "fsl,cpm2-fcc-enet"; | 182 | "fsl,cpm2-fcc-enet"; |
181 | reg = <11340 20 8600 100 113d0 1>; | 183 | reg = <0x11340 0x20 0x8600 0x100 0x113d0 0x1>; |
182 | interrupts = <22 8>; | 184 | interrupts = <34 8>; |
183 | interrupt-parent = <&PIC>; | 185 | interrupt-parent = <&PIC>; |
184 | phy-handle = <&PHY1>; | 186 | phy-handle = <&PHY1>; |
185 | linux,network-index = <1>; | 187 | linux,network-index = <1>; |
186 | fsl,cpm-command = <1a400300>; | 188 | fsl,cpm-command = <0x1a400300>; |
187 | local-mac-address = [00 e0 0c 00 79 01]; | 189 | local-mac-address = [00 e0 0c 00 79 01]; |
188 | }; | 190 | }; |
189 | 191 | ||
@@ -194,21 +196,21 @@ | |||
194 | "fsl,cpm2-mdio-bitbang"; | 196 | "fsl,cpm2-mdio-bitbang"; |
195 | #address-cells = <1>; | 197 | #address-cells = <1>; |
196 | #size-cells = <0>; | 198 | #size-cells = <0>; |
197 | reg = <10d40 14>; | 199 | reg = <0x10d40 0x14>; |
198 | fsl,mdio-pin = <9>; | 200 | fsl,mdio-pin = <9>; |
199 | fsl,mdc-pin = <a>; | 201 | fsl,mdc-pin = <10>; |
200 | 202 | ||
201 | PHY0: ethernet-phy@0 { | 203 | PHY0: ethernet-phy@0 { |
202 | interrupt-parent = <&PIC>; | 204 | interrupt-parent = <&PIC>; |
203 | interrupts = <19 2>; | 205 | interrupts = <25 2>; |
204 | reg = <0>; | 206 | reg = <0x0>; |
205 | device_type = "ethernet-phy"; | 207 | device_type = "ethernet-phy"; |
206 | }; | 208 | }; |
207 | 209 | ||
208 | PHY1: ethernet-phy@1 { | 210 | PHY1: ethernet-phy@1 { |
209 | interrupt-parent = <&PIC>; | 211 | interrupt-parent = <&PIC>; |
210 | interrupts = <19 2>; | 212 | interrupts = <25 2>; |
211 | reg = <3>; | 213 | reg = <0x3>; |
212 | device_type = "ethernet-phy"; | 214 | device_type = "ethernet-phy"; |
213 | }; | 215 | }; |
214 | }; | 216 | }; |
@@ -218,17 +220,17 @@ | |||
218 | #size-cells = <0>; | 220 | #size-cells = <0>; |
219 | compatible = "fsl,mpc8280-usb", | 221 | compatible = "fsl,mpc8280-usb", |
220 | "fsl,cpm2-usb"; | 222 | "fsl,cpm2-usb"; |
221 | reg = <11b60 18 8b00 100>; | 223 | reg = <0x11b60 0x18 0x8b00 0x100>; |
222 | interrupt-parent = <&PIC>; | 224 | interrupt-parent = <&PIC>; |
223 | interrupts = <b 8>; | 225 | interrupts = <11 8>; |
224 | fsl,cpm-command = <2e600000>; | 226 | fsl,cpm-command = <0x2e600000>; |
225 | }; | 227 | }; |
226 | }; | 228 | }; |
227 | 229 | ||
228 | PIC: interrupt-controller@10c00 { | 230 | PIC: interrupt-controller@10c00 { |
229 | #interrupt-cells = <2>; | 231 | #interrupt-cells = <2>; |
230 | interrupt-controller; | 232 | interrupt-controller; |
231 | reg = <10c00 80>; | 233 | reg = <0x10c00 0x80>; |
232 | compatible = "fsl,mpc8280-pic", "fsl,cpm2-pic"; | 234 | compatible = "fsl,mpc8280-pic", "fsl,cpm2-pic"; |
233 | }; | 235 | }; |
234 | 236 | ||
diff --git a/arch/powerpc/boot/dts/prpmc2800.dts b/arch/powerpc/boot/dts/prpmc2800.dts index 297dfa53fe9e..1ee6ff43dd57 100644 --- a/arch/powerpc/boot/dts/prpmc2800.dts +++ b/arch/powerpc/boot/dts/prpmc2800.dts | |||
@@ -11,6 +11,8 @@ | |||
11 | * if it can determine the exact PrPMC type. | 11 | * if it can determine the exact PrPMC type. |
12 | */ | 12 | */ |
13 | 13 | ||
14 | /dts-v1/; | ||
15 | |||
14 | / { | 16 | / { |
15 | #address-cells = <1>; | 17 | #address-cells = <1>; |
16 | #size-cells = <1>; | 18 | #size-cells = <1>; |
@@ -25,46 +27,46 @@ | |||
25 | PowerPC,7447 { | 27 | PowerPC,7447 { |
26 | device_type = "cpu"; | 28 | device_type = "cpu"; |
27 | reg = <0>; | 29 | reg = <0>; |
28 | clock-frequency = <2bb0b140>; /* Default (733 MHz) */ | 30 | clock-frequency = <733333333>; /* Default */ |
29 | bus-frequency = <7f28155>; /* 133.333333 MHz */ | 31 | bus-frequency = <133333333>; |
30 | timebase-frequency = <1fca055>; /* 33.333333 MHz */ | 32 | timebase-frequency = <33333333>; |
31 | i-cache-line-size = <20>; | 33 | i-cache-line-size = <32>; |
32 | d-cache-line-size = <20>; | 34 | d-cache-line-size = <32>; |
33 | i-cache-size = <8000>; | 35 | i-cache-size = <32768>; |
34 | d-cache-size = <8000>; | 36 | d-cache-size = <32768>; |
35 | }; | 37 | }; |
36 | }; | 38 | }; |
37 | 39 | ||
38 | memory { | 40 | memory { |
39 | device_type = "memory"; | 41 | device_type = "memory"; |
40 | reg = <00000000 20000000>; /* Default (512MB) */ | 42 | reg = <0x0 0x20000000>; /* Default (512MB) */ |
41 | }; | 43 | }; |
42 | 44 | ||
43 | mv64x60@f1000000 { /* Marvell Discovery */ | 45 | system-controller@f1000000 { /* Marvell Discovery mv64360 */ |
44 | #address-cells = <1>; | 46 | #address-cells = <1>; |
45 | #size-cells = <1>; | 47 | #size-cells = <1>; |
46 | model = "mv64360"; /* Default */ | 48 | model = "mv64360"; /* Default */ |
47 | compatible = "marvell,mv64x60"; | 49 | compatible = "marvell,mv64360"; |
48 | clock-frequency = <7f28155>; /* 133.333333 MHz */ | 50 | clock-frequency = <133333333>; |
49 | reg = <f1000000 00010000>; | 51 | reg = <0xf1000000 0x10000>; |
50 | virtual-reg = <f1000000>; | 52 | virtual-reg = <0xf1000000>; |
51 | ranges = <88000000 88000000 01000000 /* PCI 0 I/O Space */ | 53 | ranges = <0x88000000 0x88000000 0x1000000 /* PCI 0 I/O Space */ |
52 | 80000000 80000000 08000000 /* PCI 0 MEM Space */ | 54 | 0x80000000 0x80000000 0x8000000 /* PCI 0 MEM Space */ |
53 | a0000000 a0000000 04000000 /* User FLASH */ | 55 | 0xa0000000 0xa0000000 0x4000000 /* User FLASH */ |
54 | 00000000 f1000000 00010000 /* Bridge's regs */ | 56 | 0x00000000 0xf1000000 0x0010000 /* Bridge's regs */ |
55 | f2000000 f2000000 00040000>; /* Integrated SRAM */ | 57 | 0xf2000000 0xf2000000 0x0040000>;/* Integrated SRAM */ |
56 | 58 | ||
57 | flash@a0000000 { | 59 | flash@a0000000 { |
58 | device_type = "rom"; | 60 | device_type = "rom"; |
59 | compatible = "direct-mapped"; | 61 | compatible = "direct-mapped"; |
60 | reg = <a0000000 4000000>; /* Default (64MB) */ | 62 | reg = <0xa0000000 0x4000000>; /* Default (64MB) */ |
61 | probe-type = "CFI"; | 63 | probe-type = "CFI"; |
62 | bank-width = <4>; | 64 | bank-width = <4>; |
63 | partitions = <00000000 00100000 /* RO */ | 65 | partitions = <0x00000000 0x00100000 /* RO */ |
64 | 00100000 00040001 /* RW */ | 66 | 0x00100000 0x00040001 /* RW */ |
65 | 00140000 00400000 /* RO */ | 67 | 0x00140000 0x00400000 /* RO */ |
66 | 00540000 039c0000 /* RO */ | 68 | 0x00540000 0x039c0000 /* RO */ |
67 | 03f00000 00100000>; /* RO */ | 69 | 0x03f00000 0x00100000>; /* RO */ |
68 | partition-names = "FW Image A", "FW Config Data", "Kernel Image", "Filesystem", "FW Image B"; | 70 | partition-names = "FW Image A", "FW Config Data", "Kernel Image", "Filesystem", "FW Image B"; |
69 | }; | 71 | }; |
70 | 72 | ||
@@ -72,171 +74,153 @@ | |||
72 | #address-cells = <1>; | 74 | #address-cells = <1>; |
73 | #size-cells = <0>; | 75 | #size-cells = <0>; |
74 | device_type = "mdio"; | 76 | device_type = "mdio"; |
75 | compatible = "marvell,mv64x60-mdio"; | 77 | compatible = "marvell,mv64360-mdio"; |
76 | ethernet-phy@1 { | 78 | PHY0: ethernet-phy@1 { |
77 | device_type = "ethernet-phy"; | 79 | device_type = "ethernet-phy"; |
78 | compatible = "broadcom,bcm5421"; | 80 | compatible = "broadcom,bcm5421"; |
79 | interrupts = <4c>; /* GPP 12 */ | 81 | interrupts = <76>; /* GPP 12 */ |
80 | interrupt-parent = <&/mv64x60/pic>; | 82 | interrupt-parent = <&PIC>; |
81 | reg = <1>; | 83 | reg = <1>; |
82 | }; | 84 | }; |
83 | ethernet-phy@3 { | 85 | PHY1: ethernet-phy@3 { |
84 | device_type = "ethernet-phy"; | 86 | device_type = "ethernet-phy"; |
85 | compatible = "broadcom,bcm5421"; | 87 | compatible = "broadcom,bcm5421"; |
86 | interrupts = <4c>; /* GPP 12 */ | 88 | interrupts = <76>; /* GPP 12 */ |
87 | interrupt-parent = <&/mv64x60/pic>; | 89 | interrupt-parent = <&PIC>; |
88 | reg = <3>; | 90 | reg = <3>; |
89 | }; | 91 | }; |
90 | }; | 92 | }; |
91 | 93 | ||
92 | ethernet@2000 { | 94 | ethernet-group@2000 { |
93 | reg = <2000 2000>; | 95 | #address-cells = <1>; |
94 | eth0 { | 96 | #size-cells = <0>; |
97 | compatible = "marvell,mv64360-eth-group"; | ||
98 | reg = <0x2000 0x2000>; | ||
99 | ethernet@0 { | ||
95 | device_type = "network"; | 100 | device_type = "network"; |
96 | compatible = "marvell,mv64x60-eth"; | 101 | compatible = "marvell,mv64360-eth"; |
97 | block-index = <0>; | 102 | reg = <0>; |
98 | interrupts = <20>; | 103 | interrupts = <32>; |
99 | interrupt-parent = <&/mv64x60/pic>; | 104 | interrupt-parent = <&PIC>; |
100 | phy = <&/mv64x60/mdio/ethernet-phy@1>; | 105 | phy = <&PHY0>; |
101 | local-mac-address = [ 00 00 00 00 00 00 ]; | 106 | local-mac-address = [ 00 00 00 00 00 00 ]; |
102 | }; | 107 | }; |
103 | eth1 { | 108 | ethernet@1 { |
104 | device_type = "network"; | 109 | device_type = "network"; |
105 | compatible = "marvell,mv64x60-eth"; | 110 | compatible = "marvell,mv64360-eth"; |
106 | block-index = <1>; | 111 | reg = <1>; |
107 | interrupts = <21>; | 112 | interrupts = <33>; |
108 | interrupt-parent = <&/mv64x60/pic>; | 113 | interrupt-parent = <&PIC>; |
109 | phy = <&/mv64x60/mdio/ethernet-phy@3>; | 114 | phy = <&PHY1>; |
110 | local-mac-address = [ 00 00 00 00 00 00 ]; | 115 | local-mac-address = [ 00 00 00 00 00 00 ]; |
111 | }; | 116 | }; |
112 | }; | 117 | }; |
113 | 118 | ||
114 | sdma@4000 { | 119 | SDMA0: sdma@4000 { |
115 | device_type = "dma"; | 120 | compatible = "marvell,mv64360-sdma"; |
116 | compatible = "marvell,mv64x60-sdma"; | 121 | reg = <0x4000 0xc18>; |
117 | reg = <4000 c18>; | 122 | virtual-reg = <0xf1004000>; |
118 | virtual-reg = <f1004000>; | 123 | interrupts = <36>; |
119 | interrupt-base = <0>; | 124 | interrupt-parent = <&PIC>; |
120 | interrupts = <24>; | ||
121 | interrupt-parent = <&/mv64x60/pic>; | ||
122 | }; | 125 | }; |
123 | 126 | ||
124 | sdma@6000 { | 127 | SDMA1: sdma@6000 { |
125 | device_type = "dma"; | 128 | compatible = "marvell,mv64360-sdma"; |
126 | compatible = "marvell,mv64x60-sdma"; | 129 | reg = <0x6000 0xc18>; |
127 | reg = <6000 c18>; | 130 | virtual-reg = <0xf1006000>; |
128 | virtual-reg = <f1006000>; | 131 | interrupts = <38>; |
129 | interrupt-base = <0>; | 132 | interrupt-parent = <&PIC>; |
130 | interrupts = <26>; | ||
131 | interrupt-parent = <&/mv64x60/pic>; | ||
132 | }; | 133 | }; |
133 | 134 | ||
134 | brg@b200 { | 135 | BRG0: brg@b200 { |
135 | compatible = "marvell,mv64x60-brg"; | 136 | compatible = "marvell,mv64360-brg"; |
136 | reg = <b200 8>; | 137 | reg = <0xb200 0x8>; |
137 | clock-src = <8>; | 138 | clock-src = <8>; |
138 | clock-frequency = <7ed6b40>; | 139 | clock-frequency = <133333333>; |
139 | current-speed = <2580>; | 140 | current-speed = <9600>; |
140 | bcr = <0>; | ||
141 | }; | 141 | }; |
142 | 142 | ||
143 | brg@b208 { | 143 | BRG1: brg@b208 { |
144 | compatible = "marvell,mv64x60-brg"; | 144 | compatible = "marvell,mv64360-brg"; |
145 | reg = <b208 8>; | 145 | reg = <0xb208 0x8>; |
146 | clock-src = <8>; | 146 | clock-src = <8>; |
147 | clock-frequency = <7ed6b40>; | 147 | clock-frequency = <133333333>; |
148 | current-speed = <2580>; | 148 | current-speed = <9600>; |
149 | bcr = <0>; | ||
150 | }; | 149 | }; |
151 | 150 | ||
152 | cunit@f200 { | 151 | CUNIT: cunit@f200 { |
153 | reg = <f200 200>; | 152 | reg = <0xf200 0x200>; |
154 | }; | 153 | }; |
155 | 154 | ||
156 | mpscrouting@b400 { | 155 | MPSCROUTING: mpscrouting@b400 { |
157 | reg = <b400 c>; | 156 | reg = <0xb400 0xc>; |
158 | }; | 157 | }; |
159 | 158 | ||
160 | mpscintr@b800 { | 159 | MPSCINTR: mpscintr@b800 { |
161 | reg = <b800 100>; | 160 | reg = <0xb800 0x100>; |
162 | virtual-reg = <f100b800>; | 161 | virtual-reg = <0xf100b800>; |
163 | }; | 162 | }; |
164 | 163 | ||
165 | mpsc@8000 { | 164 | MPSC0: mpsc@8000 { |
166 | device_type = "serial"; | 165 | device_type = "serial"; |
167 | compatible = "marvell,mpsc"; | 166 | compatible = "marvell,mv64360-mpsc"; |
168 | reg = <8000 38>; | 167 | reg = <0x8000 0x38>; |
169 | virtual-reg = <f1008000>; | 168 | virtual-reg = <0xf1008000>; |
170 | sdma = <&/mv64x60/sdma@4000>; | 169 | sdma = <&SDMA0>; |
171 | brg = <&/mv64x60/brg@b200>; | 170 | brg = <&BRG0>; |
172 | cunit = <&/mv64x60/cunit@f200>; | 171 | cunit = <&CUNIT>; |
173 | mpscrouting = <&/mv64x60/mpscrouting@b400>; | 172 | mpscrouting = <&MPSCROUTING>; |
174 | mpscintr = <&/mv64x60/mpscintr@b800>; | 173 | mpscintr = <&MPSCINTR>; |
175 | block-index = <0>; | 174 | cell-index = <0>; |
176 | max_idle = <28>; | 175 | interrupts = <40>; |
177 | chr_1 = <0>; | 176 | interrupt-parent = <&PIC>; |
178 | chr_2 = <0>; | ||
179 | chr_10 = <3>; | ||
180 | mpcr = <0>; | ||
181 | interrupts = <28>; | ||
182 | interrupt-parent = <&/mv64x60/pic>; | ||
183 | }; | 177 | }; |
184 | 178 | ||
185 | mpsc@9000 { | 179 | MPSC1: mpsc@9000 { |
186 | device_type = "serial"; | 180 | device_type = "serial"; |
187 | compatible = "marvell,mpsc"; | 181 | compatible = "marvell,mv64360-mpsc"; |
188 | reg = <9000 38>; | 182 | reg = <0x9000 0x38>; |
189 | virtual-reg = <f1009000>; | 183 | virtual-reg = <0xf1009000>; |
190 | sdma = <&/mv64x60/sdma@6000>; | 184 | sdma = <&SDMA1>; |
191 | brg = <&/mv64x60/brg@b208>; | 185 | brg = <&BRG1>; |
192 | cunit = <&/mv64x60/cunit@f200>; | 186 | cunit = <&CUNIT>; |
193 | mpscrouting = <&/mv64x60/mpscrouting@b400>; | 187 | mpscrouting = <&MPSCROUTING>; |
194 | mpscintr = <&/mv64x60/mpscintr@b800>; | 188 | mpscintr = <&MPSCINTR>; |
195 | block-index = <1>; | 189 | cell-index = <1>; |
196 | max_idle = <28>; | 190 | interrupts = <42>; |
197 | chr_1 = <0>; | 191 | interrupt-parent = <&PIC>; |
198 | chr_2 = <0>; | ||
199 | chr_10 = <3>; | ||
200 | mpcr = <0>; | ||
201 | interrupts = <2a>; | ||
202 | interrupt-parent = <&/mv64x60/pic>; | ||
203 | }; | 192 | }; |
204 | 193 | ||
205 | wdt@b410 { /* watchdog timer */ | 194 | wdt@b410 { /* watchdog timer */ |
206 | compatible = "marvell,mv64x60-wdt"; | 195 | compatible = "marvell,mv64360-wdt"; |
207 | reg = <b410 8>; | 196 | reg = <0xb410 0x8>; |
208 | timeout = <a>; /* wdt timeout in seconds */ | ||
209 | }; | 197 | }; |
210 | 198 | ||
211 | i2c@c000 { | 199 | i2c@c000 { |
212 | device_type = "i2c"; | 200 | device_type = "i2c"; |
213 | compatible = "marvell,mv64x60-i2c"; | 201 | compatible = "marvell,mv64360-i2c"; |
214 | reg = <c000 20>; | 202 | reg = <0xc000 0x20>; |
215 | virtual-reg = <f100c000>; | 203 | virtual-reg = <0xf100c000>; |
216 | freq_m = <8>; | 204 | interrupts = <37>; |
217 | freq_n = <3>; | 205 | interrupt-parent = <&PIC>; |
218 | timeout = <3e8>; /* 1000 = 1 second */ | ||
219 | retries = <1>; | ||
220 | interrupts = <25>; | ||
221 | interrupt-parent = <&/mv64x60/pic>; | ||
222 | }; | 206 | }; |
223 | 207 | ||
224 | pic { | 208 | PIC: pic { |
225 | #interrupt-cells = <1>; | 209 | #interrupt-cells = <1>; |
226 | #address-cells = <0>; | 210 | #address-cells = <0>; |
227 | compatible = "marvell,mv64x60-pic"; | 211 | compatible = "marvell,mv64360-pic"; |
228 | reg = <0000 88>; | 212 | reg = <0x0 0x88>; |
229 | interrupt-controller; | 213 | interrupt-controller; |
230 | }; | 214 | }; |
231 | 215 | ||
232 | mpp@f000 { | 216 | mpp@f000 { |
233 | compatible = "marvell,mv64x60-mpp"; | 217 | compatible = "marvell,mv64360-mpp"; |
234 | reg = <f000 10>; | 218 | reg = <0xf000 0x10>; |
235 | }; | 219 | }; |
236 | 220 | ||
237 | gpp@f100 { | 221 | gpp@f100 { |
238 | compatible = "marvell,mv64x60-gpp"; | 222 | compatible = "marvell,mv64360-gpp"; |
239 | reg = <f100 20>; | 223 | reg = <0xf100 0x20>; |
240 | }; | 224 | }; |
241 | 225 | ||
242 | pci@80000000 { | 226 | pci@80000000 { |
@@ -244,73 +228,75 @@ | |||
244 | #size-cells = <2>; | 228 | #size-cells = <2>; |
245 | #interrupt-cells = <1>; | 229 | #interrupt-cells = <1>; |
246 | device_type = "pci"; | 230 | device_type = "pci"; |
247 | compatible = "marvell,mv64x60-pci"; | 231 | compatible = "marvell,mv64360-pci"; |
248 | reg = <0cf8 8>; | 232 | reg = <0xcf8 0x8>; |
249 | ranges = <01000000 0 0 88000000 0 01000000 | 233 | ranges = <0x01000000 0x0 0x0 |
250 | 02000000 0 80000000 80000000 0 08000000>; | 234 | 0x88000000 0x0 0x01000000 |
251 | bus-range = <0 ff>; | 235 | 0x02000000 0x0 0x80000000 |
252 | clock-frequency = <3EF1480>; | 236 | 0x80000000 0x0 0x08000000>; |
253 | interrupt-pci-iack = <0c34>; | 237 | bus-range = <0 255>; |
254 | interrupt-parent = <&/mv64x60/pic>; | 238 | clock-frequency = <66000000>; |
255 | interrupt-map-mask = <f800 0 0 7>; | 239 | interrupt-pci-iack = <0xc34>; |
240 | interrupt-parent = <&PIC>; | ||
241 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; | ||
256 | interrupt-map = < | 242 | interrupt-map = < |
257 | /* IDSEL 0x0a */ | 243 | /* IDSEL 0x0a */ |
258 | 5000 0 0 1 &/mv64x60/pic 50 | 244 | 0x5000 0 0 1 &PIC 80 |
259 | 5000 0 0 2 &/mv64x60/pic 51 | 245 | 0x5000 0 0 2 &PIC 81 |
260 | 5000 0 0 3 &/mv64x60/pic 5b | 246 | 0x5000 0 0 3 &PIC 91 |
261 | 5000 0 0 4 &/mv64x60/pic 5d | 247 | 0x5000 0 0 4 &PIC 93 |
262 | 248 | ||
263 | /* IDSEL 0x0b */ | 249 | /* IDSEL 0x0b */ |
264 | 5800 0 0 1 &/mv64x60/pic 5b | 250 | 0x5800 0 0 1 &PIC 91 |
265 | 5800 0 0 2 &/mv64x60/pic 5d | 251 | 0x5800 0 0 2 &PIC 93 |
266 | 5800 0 0 3 &/mv64x60/pic 50 | 252 | 0x5800 0 0 3 &PIC 80 |
267 | 5800 0 0 4 &/mv64x60/pic 51 | 253 | 0x5800 0 0 4 &PIC 81 |
268 | 254 | ||
269 | /* IDSEL 0x0c */ | 255 | /* IDSEL 0x0c */ |
270 | 6000 0 0 1 &/mv64x60/pic 5b | 256 | 0x6000 0 0 1 &PIC 91 |
271 | 6000 0 0 2 &/mv64x60/pic 5d | 257 | 0x6000 0 0 2 &PIC 93 |
272 | 6000 0 0 3 &/mv64x60/pic 50 | 258 | 0x6000 0 0 3 &PIC 80 |
273 | 6000 0 0 4 &/mv64x60/pic 51 | 259 | 0x6000 0 0 4 &PIC 81 |
274 | 260 | ||
275 | /* IDSEL 0x0d */ | 261 | /* IDSEL 0x0d */ |
276 | 6800 0 0 1 &/mv64x60/pic 5d | 262 | 0x6800 0 0 1 &PIC 93 |
277 | 6800 0 0 2 &/mv64x60/pic 50 | 263 | 0x6800 0 0 2 &PIC 80 |
278 | 6800 0 0 3 &/mv64x60/pic 51 | 264 | 0x6800 0 0 3 &PIC 81 |
279 | 6800 0 0 4 &/mv64x60/pic 5b | 265 | 0x6800 0 0 4 &PIC 91 |
280 | >; | 266 | >; |
281 | }; | 267 | }; |
282 | 268 | ||
283 | cpu-error@0070 { | 269 | cpu-error@0070 { |
284 | compatible = "marvell,mv64x60-cpu-error"; | 270 | compatible = "marvell,mv64360-cpu-error"; |
285 | reg = <0070 10 0128 28>; | 271 | reg = <0x70 0x10 0x128 0x28>; |
286 | interrupts = <03>; | 272 | interrupts = <3>; |
287 | interrupt-parent = <&/mv64x60/pic>; | 273 | interrupt-parent = <&PIC>; |
288 | }; | 274 | }; |
289 | 275 | ||
290 | sram-ctrl@0380 { | 276 | sram-ctrl@0380 { |
291 | compatible = "marvell,mv64x60-sram-ctrl"; | 277 | compatible = "marvell,mv64360-sram-ctrl"; |
292 | reg = <0380 80>; | 278 | reg = <0x380 0x80>; |
293 | interrupts = <0d>; | 279 | interrupts = <13>; |
294 | interrupt-parent = <&/mv64x60/pic>; | 280 | interrupt-parent = <&PIC>; |
295 | }; | 281 | }; |
296 | 282 | ||
297 | pci-error@1d40 { | 283 | pci-error@1d40 { |
298 | compatible = "marvell,mv64x60-pci-error"; | 284 | compatible = "marvell,mv64360-pci-error"; |
299 | reg = <1d40 40 0c28 4>; | 285 | reg = <0x1d40 0x40 0xc28 0x4>; |
300 | interrupts = <0c>; | 286 | interrupts = <12>; |
301 | interrupt-parent = <&/mv64x60/pic>; | 287 | interrupt-parent = <&PIC>; |
302 | }; | 288 | }; |
303 | 289 | ||
304 | mem-ctrl@1400 { | 290 | mem-ctrl@1400 { |
305 | compatible = "marvell,mv64x60-mem-ctrl"; | 291 | compatible = "marvell,mv64360-mem-ctrl"; |
306 | reg = <1400 60>; | 292 | reg = <0x1400 0x60>; |
307 | interrupts = <11>; | 293 | interrupts = <17>; |
308 | interrupt-parent = <&/mv64x60/pic>; | 294 | interrupt-parent = <&PIC>; |
309 | }; | 295 | }; |
310 | }; | 296 | }; |
311 | 297 | ||
312 | chosen { | 298 | chosen { |
313 | bootargs = "ip=on"; | 299 | bootargs = "ip=on"; |
314 | linux,stdout-path = "/mv64x60@f1000000/mpsc@8000"; | 300 | linux,stdout-path = &MPSC0; |
315 | }; | 301 | }; |
316 | }; | 302 | }; |
diff --git a/arch/powerpc/boot/dts/rainier.dts b/arch/powerpc/boot/dts/rainier.dts index f947c75a2e94..6a8fa7089ea2 100644 --- a/arch/powerpc/boot/dts/rainier.dts +++ b/arch/powerpc/boot/dts/rainier.dts | |||
@@ -254,7 +254,6 @@ | |||
254 | }; | 254 | }; |
255 | 255 | ||
256 | EMAC0: ethernet@ef600e00 { | 256 | EMAC0: ethernet@ef600e00 { |
257 | linux,network-index = <0>; | ||
258 | device_type = "network"; | 257 | device_type = "network"; |
259 | compatible = "ibm,emac-440grx", "ibm,emac-440epx", "ibm,emac4"; | 258 | compatible = "ibm,emac-440grx", "ibm,emac-440epx", "ibm,emac4"; |
260 | interrupt-parent = <&EMAC0>; | 259 | interrupt-parent = <&EMAC0>; |
@@ -270,7 +269,7 @@ | |||
270 | mal-tx-channel = <0>; | 269 | mal-tx-channel = <0>; |
271 | mal-rx-channel = <0>; | 270 | mal-rx-channel = <0>; |
272 | cell-index = <0>; | 271 | cell-index = <0>; |
273 | max-frame-size = <5dc>; | 272 | max-frame-size = <2328>; |
274 | rx-fifo-size = <1000>; | 273 | rx-fifo-size = <1000>; |
275 | tx-fifo-size = <800>; | 274 | tx-fifo-size = <800>; |
276 | phy-mode = "rgmii"; | 275 | phy-mode = "rgmii"; |
@@ -284,7 +283,6 @@ | |||
284 | }; | 283 | }; |
285 | 284 | ||
286 | EMAC1: ethernet@ef600f00 { | 285 | EMAC1: ethernet@ef600f00 { |
287 | linux,network-index = <1>; | ||
288 | device_type = "network"; | 286 | device_type = "network"; |
289 | compatible = "ibm,emac-440grx", "ibm,emac-440epx", "ibm,emac4"; | 287 | compatible = "ibm,emac-440grx", "ibm,emac-440epx", "ibm,emac4"; |
290 | interrupt-parent = <&EMAC1>; | 288 | interrupt-parent = <&EMAC1>; |
@@ -300,7 +298,7 @@ | |||
300 | mal-tx-channel = <1>; | 298 | mal-tx-channel = <1>; |
301 | mal-rx-channel = <1>; | 299 | mal-rx-channel = <1>; |
302 | cell-index = <1>; | 300 | cell-index = <1>; |
303 | max-frame-size = <5dc>; | 301 | max-frame-size = <2328>; |
304 | rx-fifo-size = <1000>; | 302 | rx-fifo-size = <1000>; |
305 | tx-fifo-size = <800>; | 303 | tx-fifo-size = <800>; |
306 | phy-mode = "rgmii"; | 304 | phy-mode = "rgmii"; |
diff --git a/arch/powerpc/boot/dts/sbc8641d.dts b/arch/powerpc/boot/dts/sbc8641d.dts new file mode 100644 index 000000000000..3eebeec157b3 --- /dev/null +++ b/arch/powerpc/boot/dts/sbc8641d.dts | |||
@@ -0,0 +1,352 @@ | |||
1 | /* | ||
2 | * SBC8641D Device Tree Source | ||
3 | * | ||
4 | * Copyright 2008 Wind River Systems Inc. | ||
5 | * | ||
6 | * Paul Gortmaker (see MAINTAINERS for contact information) | ||
7 | * | ||
8 | * Based largely on the mpc8641_hpcn.dts by Freescale Semiconductor Inc. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | |||
16 | /dts-v1/; | ||
17 | |||
18 | / { | ||
19 | model = "SBC8641D"; | ||
20 | compatible = "wind,sbc8641"; | ||
21 | #address-cells = <1>; | ||
22 | #size-cells = <1>; | ||
23 | |||
24 | aliases { | ||
25 | ethernet0 = &enet0; | ||
26 | ethernet1 = &enet1; | ||
27 | ethernet2 = &enet2; | ||
28 | ethernet3 = &enet3; | ||
29 | serial0 = &serial0; | ||
30 | serial1 = &serial1; | ||
31 | pci0 = &pci0; | ||
32 | pci1 = &pci1; | ||
33 | }; | ||
34 | |||
35 | cpus { | ||
36 | #address-cells = <1>; | ||
37 | #size-cells = <0>; | ||
38 | |||
39 | PowerPC,8641@0 { | ||
40 | device_type = "cpu"; | ||
41 | reg = <0>; | ||
42 | d-cache-line-size = <32>; | ||
43 | i-cache-line-size = <32>; | ||
44 | d-cache-size = <32768>; // L1 | ||
45 | i-cache-size = <32768>; // L1 | ||
46 | timebase-frequency = <0>; // From uboot | ||
47 | bus-frequency = <0>; // From uboot | ||
48 | clock-frequency = <0>; // From uboot | ||
49 | }; | ||
50 | PowerPC,8641@1 { | ||
51 | device_type = "cpu"; | ||
52 | reg = <1>; | ||
53 | d-cache-line-size = <32>; | ||
54 | i-cache-line-size = <32>; | ||
55 | d-cache-size = <32768>; | ||
56 | i-cache-size = <32768>; | ||
57 | timebase-frequency = <0>; // From uboot | ||
58 | bus-frequency = <0>; // From uboot | ||
59 | clock-frequency = <0>; // From uboot | ||
60 | }; | ||
61 | }; | ||
62 | |||
63 | memory { | ||
64 | device_type = "memory"; | ||
65 | reg = <0x00000000 0x20000000>; // 512M at 0x0 | ||
66 | }; | ||
67 | |||
68 | localbus@f8005000 { | ||
69 | #address-cells = <2>; | ||
70 | #size-cells = <1>; | ||
71 | compatible = "fsl,mpc8641-localbus", "simple-bus"; | ||
72 | reg = <0xf8005000 0x1000>; | ||
73 | interrupts = <19 2>; | ||
74 | interrupt-parent = <&mpic>; | ||
75 | |||
76 | ranges = <0 0 0xff000000 0x01000000 // 16MB Boot flash | ||
77 | 1 0 0xf0000000 0x00010000 // 64KB EEPROM | ||
78 | 2 0 0xf1000000 0x00100000 // EPLD (1MB) | ||
79 | 3 0 0xe0000000 0x04000000 // 64MB LB SDRAM (CS3) | ||
80 | 4 0 0xe4000000 0x04000000 // 64MB LB SDRAM (CS4) | ||
81 | 6 0 0xf4000000 0x00100000 // LCD display (1MB) | ||
82 | 7 0 0xe8000000 0x04000000>; // 64MB OneNAND | ||
83 | |||
84 | flash@0,0 { | ||
85 | compatible = "cfi-flash"; | ||
86 | reg = <0 0 0x01000000>; | ||
87 | bank-width = <2>; | ||
88 | device-width = <2>; | ||
89 | #address-cells = <1>; | ||
90 | #size-cells = <1>; | ||
91 | partition@0 { | ||
92 | label = "dtb"; | ||
93 | reg = <0x00000000 0x00100000>; | ||
94 | read-only; | ||
95 | }; | ||
96 | partition@300000 { | ||
97 | label = "kernel"; | ||
98 | reg = <0x00100000 0x00400000>; | ||
99 | read-only; | ||
100 | }; | ||
101 | partition@400000 { | ||
102 | label = "fs"; | ||
103 | reg = <0x00500000 0x00a00000>; | ||
104 | }; | ||
105 | partition@700000 { | ||
106 | label = "firmware"; | ||
107 | reg = <0x00f00000 0x00100000>; | ||
108 | read-only; | ||
109 | }; | ||
110 | }; | ||
111 | |||
112 | epld@2,0 { | ||
113 | compatible = "wrs,epld-localbus"; | ||
114 | #address-cells = <2>; | ||
115 | #size-cells = <1>; | ||
116 | reg = <2 0 0x100000>; | ||
117 | ranges = <0 0 5 0 1 // User switches | ||
118 | 1 0 5 1 1 // Board ID/Rev | ||
119 | 3 0 5 3 1>; // LEDs | ||
120 | }; | ||
121 | }; | ||
122 | |||
123 | soc@f8000000 { | ||
124 | #address-cells = <1>; | ||
125 | #size-cells = <1>; | ||
126 | device_type = "soc"; | ||
127 | compatible = "simple-bus"; | ||
128 | ranges = <0x00000000 0xf8000000 0x00100000>; | ||
129 | reg = <0xf8000000 0x00001000>; // CCSRBAR | ||
130 | bus-frequency = <0>; | ||
131 | |||
132 | i2c@3000 { | ||
133 | #address-cells = <1>; | ||
134 | #size-cells = <0>; | ||
135 | cell-index = <0>; | ||
136 | compatible = "fsl-i2c"; | ||
137 | reg = <0x3000 0x100>; | ||
138 | interrupts = <43 2>; | ||
139 | interrupt-parent = <&mpic>; | ||
140 | dfsrr; | ||
141 | }; | ||
142 | |||
143 | i2c@3100 { | ||
144 | #address-cells = <1>; | ||
145 | #size-cells = <0>; | ||
146 | cell-index = <1>; | ||
147 | compatible = "fsl-i2c"; | ||
148 | reg = <0x3100 0x100>; | ||
149 | interrupts = <43 2>; | ||
150 | interrupt-parent = <&mpic>; | ||
151 | dfsrr; | ||
152 | }; | ||
153 | |||
154 | mdio@24520 { | ||
155 | #address-cells = <1>; | ||
156 | #size-cells = <0>; | ||
157 | compatible = "fsl,gianfar-mdio"; | ||
158 | reg = <0x24520 0x20>; | ||
159 | |||
160 | phy0: ethernet-phy@1f { | ||
161 | interrupt-parent = <&mpic>; | ||
162 | interrupts = <10 1>; | ||
163 | reg = <0x1f>; | ||
164 | device_type = "ethernet-phy"; | ||
165 | }; | ||
166 | phy1: ethernet-phy@0 { | ||
167 | interrupt-parent = <&mpic>; | ||
168 | interrupts = <10 1>; | ||
169 | reg = <0>; | ||
170 | device_type = "ethernet-phy"; | ||
171 | }; | ||
172 | phy2: ethernet-phy@1 { | ||
173 | interrupt-parent = <&mpic>; | ||
174 | interrupts = <10 1>; | ||
175 | reg = <1>; | ||
176 | device_type = "ethernet-phy"; | ||
177 | }; | ||
178 | phy3: ethernet-phy@2 { | ||
179 | interrupt-parent = <&mpic>; | ||
180 | interrupts = <10 1>; | ||
181 | reg = <2>; | ||
182 | device_type = "ethernet-phy"; | ||
183 | }; | ||
184 | }; | ||
185 | |||
186 | enet0: ethernet@24000 { | ||
187 | cell-index = <0>; | ||
188 | device_type = "network"; | ||
189 | model = "TSEC"; | ||
190 | compatible = "gianfar"; | ||
191 | reg = <0x24000 0x1000>; | ||
192 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
193 | interrupts = <29 2 30 2 34 2>; | ||
194 | interrupt-parent = <&mpic>; | ||
195 | phy-handle = <&phy0>; | ||
196 | phy-connection-type = "rgmii-id"; | ||
197 | }; | ||
198 | |||
199 | enet1: ethernet@25000 { | ||
200 | cell-index = <1>; | ||
201 | device_type = "network"; | ||
202 | model = "TSEC"; | ||
203 | compatible = "gianfar"; | ||
204 | reg = <0x25000 0x1000>; | ||
205 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
206 | interrupts = <35 2 36 2 40 2>; | ||
207 | interrupt-parent = <&mpic>; | ||
208 | phy-handle = <&phy1>; | ||
209 | phy-connection-type = "rgmii-id"; | ||
210 | }; | ||
211 | |||
212 | enet2: ethernet@26000 { | ||
213 | cell-index = <2>; | ||
214 | device_type = "network"; | ||
215 | model = "TSEC"; | ||
216 | compatible = "gianfar"; | ||
217 | reg = <0x26000 0x1000>; | ||
218 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
219 | interrupts = <31 2 32 2 33 2>; | ||
220 | interrupt-parent = <&mpic>; | ||
221 | phy-handle = <&phy2>; | ||
222 | phy-connection-type = "rgmii-id"; | ||
223 | }; | ||
224 | |||
225 | enet3: ethernet@27000 { | ||
226 | cell-index = <3>; | ||
227 | device_type = "network"; | ||
228 | model = "TSEC"; | ||
229 | compatible = "gianfar"; | ||
230 | reg = <0x27000 0x1000>; | ||
231 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
232 | interrupts = <37 2 38 2 39 2>; | ||
233 | interrupt-parent = <&mpic>; | ||
234 | phy-handle = <&phy3>; | ||
235 | phy-connection-type = "rgmii-id"; | ||
236 | }; | ||
237 | |||
238 | serial0: serial@4500 { | ||
239 | cell-index = <0>; | ||
240 | device_type = "serial"; | ||
241 | compatible = "ns16550"; | ||
242 | reg = <0x4500 0x100>; | ||
243 | clock-frequency = <0>; | ||
244 | interrupts = <42 2>; | ||
245 | interrupt-parent = <&mpic>; | ||
246 | }; | ||
247 | |||
248 | serial1: serial@4600 { | ||
249 | cell-index = <1>; | ||
250 | device_type = "serial"; | ||
251 | compatible = "ns16550"; | ||
252 | reg = <0x4600 0x100>; | ||
253 | clock-frequency = <0>; | ||
254 | interrupts = <28 2>; | ||
255 | interrupt-parent = <&mpic>; | ||
256 | }; | ||
257 | |||
258 | mpic: pic@40000 { | ||
259 | clock-frequency = <0>; | ||
260 | interrupt-controller; | ||
261 | #address-cells = <0>; | ||
262 | #interrupt-cells = <2>; | ||
263 | reg = <0x40000 0x40000>; | ||
264 | compatible = "chrp,open-pic"; | ||
265 | device_type = "open-pic"; | ||
266 | big-endian; | ||
267 | }; | ||
268 | |||
269 | global-utilities@e0000 { | ||
270 | compatible = "fsl,mpc8641-guts"; | ||
271 | reg = <0xe0000 0x1000>; | ||
272 | fsl,has-rstcr; | ||
273 | }; | ||
274 | }; | ||
275 | |||
276 | pci0: pcie@f8008000 { | ||
277 | cell-index = <0>; | ||
278 | compatible = "fsl,mpc8641-pcie"; | ||
279 | device_type = "pci"; | ||
280 | #interrupt-cells = <1>; | ||
281 | #size-cells = <2>; | ||
282 | #address-cells = <3>; | ||
283 | reg = <0xf8008000 0x1000>; | ||
284 | bus-range = <0x0 0xff>; | ||
285 | ranges = <0x02000000 0x0 0x80000000 0x80000000 0x0 0x20000000 | ||
286 | 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>; | ||
287 | clock-frequency = <33333333>; | ||
288 | interrupt-parent = <&mpic>; | ||
289 | interrupts = <24 2>; | ||
290 | interrupt-map-mask = <0xff00 0 0 7>; | ||
291 | interrupt-map = < | ||
292 | /* IDSEL 0x0 */ | ||
293 | 0x0000 0 0 1 &mpic 0 1 | ||
294 | 0x0000 0 0 2 &mpic 1 1 | ||
295 | 0x0000 0 0 3 &mpic 2 1 | ||
296 | 0x0000 0 0 4 &mpic 3 1 | ||
297 | >; | ||
298 | |||
299 | pcie@0 { | ||
300 | reg = <0 0 0 0 0>; | ||
301 | #size-cells = <2>; | ||
302 | #address-cells = <3>; | ||
303 | device_type = "pci"; | ||
304 | ranges = <0x02000000 0x0 0x80000000 | ||
305 | 0x02000000 0x0 0x80000000 | ||
306 | 0x0 0x20000000 | ||
307 | |||
308 | 0x01000000 0x0 0x00000000 | ||
309 | 0x01000000 0x0 0x00000000 | ||
310 | 0x0 0x00100000>; | ||
311 | }; | ||
312 | |||
313 | }; | ||
314 | |||
315 | pci1: pcie@f8009000 { | ||
316 | cell-index = <1>; | ||
317 | compatible = "fsl,mpc8641-pcie"; | ||
318 | device_type = "pci"; | ||
319 | #interrupt-cells = <1>; | ||
320 | #size-cells = <2>; | ||
321 | #address-cells = <3>; | ||
322 | reg = <0xf8009000 0x1000>; | ||
323 | bus-range = <0 0xff>; | ||
324 | ranges = <0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x20000000 | ||
325 | 0x01000000 0x0 0x00000000 0xe3000000 0x0 0x00100000>; | ||
326 | clock-frequency = <33333333>; | ||
327 | interrupt-parent = <&mpic>; | ||
328 | interrupts = <25 2>; | ||
329 | interrupt-map-mask = <0xf800 0 0 7>; | ||
330 | interrupt-map = < | ||
331 | /* IDSEL 0x0 */ | ||
332 | 0x0000 0 0 1 &mpic 4 1 | ||
333 | 0x0000 0 0 2 &mpic 5 1 | ||
334 | 0x0000 0 0 3 &mpic 6 1 | ||
335 | 0x0000 0 0 4 &mpic 7 1 | ||
336 | >; | ||
337 | |||
338 | pcie@0 { | ||
339 | reg = <0 0 0 0 0>; | ||
340 | #size-cells = <2>; | ||
341 | #address-cells = <3>; | ||
342 | device_type = "pci"; | ||
343 | ranges = <0x02000000 0x0 0xa0000000 | ||
344 | 0x02000000 0x0 0xa0000000 | ||
345 | 0x0 0x20000000 | ||
346 | |||
347 | 0x01000000 0x0 0x00000000 | ||
348 | 0x01000000 0x0 0x00000000 | ||
349 | 0x0 0x00100000>; | ||
350 | }; | ||
351 | }; | ||
352 | }; | ||
diff --git a/arch/powerpc/boot/dts/sequoia.dts b/arch/powerpc/boot/dts/sequoia.dts index 8db9515d7dc3..a1ae4d6ec990 100644 --- a/arch/powerpc/boot/dts/sequoia.dts +++ b/arch/powerpc/boot/dts/sequoia.dts | |||
@@ -269,7 +269,6 @@ | |||
269 | }; | 269 | }; |
270 | 270 | ||
271 | EMAC0: ethernet@ef600e00 { | 271 | EMAC0: ethernet@ef600e00 { |
272 | linux,network-index = <0>; | ||
273 | device_type = "network"; | 272 | device_type = "network"; |
274 | compatible = "ibm,emac-440epx", "ibm,emac4"; | 273 | compatible = "ibm,emac-440epx", "ibm,emac4"; |
275 | interrupt-parent = <&EMAC0>; | 274 | interrupt-parent = <&EMAC0>; |
@@ -285,7 +284,7 @@ | |||
285 | mal-tx-channel = <0>; | 284 | mal-tx-channel = <0>; |
286 | mal-rx-channel = <0>; | 285 | mal-rx-channel = <0>; |
287 | cell-index = <0>; | 286 | cell-index = <0>; |
288 | max-frame-size = <5dc>; | 287 | max-frame-size = <2328>; |
289 | rx-fifo-size = <1000>; | 288 | rx-fifo-size = <1000>; |
290 | tx-fifo-size = <800>; | 289 | tx-fifo-size = <800>; |
291 | phy-mode = "rgmii"; | 290 | phy-mode = "rgmii"; |
@@ -299,7 +298,6 @@ | |||
299 | }; | 298 | }; |
300 | 299 | ||
301 | EMAC1: ethernet@ef600f00 { | 300 | EMAC1: ethernet@ef600f00 { |
302 | linux,network-index = <1>; | ||
303 | device_type = "network"; | 301 | device_type = "network"; |
304 | compatible = "ibm,emac-440epx", "ibm,emac4"; | 302 | compatible = "ibm,emac-440epx", "ibm,emac4"; |
305 | interrupt-parent = <&EMAC1>; | 303 | interrupt-parent = <&EMAC1>; |
@@ -315,7 +313,7 @@ | |||
315 | mal-tx-channel = <1>; | 313 | mal-tx-channel = <1>; |
316 | mal-rx-channel = <1>; | 314 | mal-rx-channel = <1>; |
317 | cell-index = <1>; | 315 | cell-index = <1>; |
318 | max-frame-size = <5dc>; | 316 | max-frame-size = <2328>; |
319 | rx-fifo-size = <1000>; | 317 | rx-fifo-size = <1000>; |
320 | tx-fifo-size = <800>; | 318 | tx-fifo-size = <800>; |
321 | phy-mode = "rgmii"; | 319 | phy-mode = "rgmii"; |
diff --git a/arch/powerpc/boot/dts/taishan.dts b/arch/powerpc/boot/dts/taishan.dts index 8278068c802c..e808e1c5593a 100644 --- a/arch/powerpc/boot/dts/taishan.dts +++ b/arch/powerpc/boot/dts/taishan.dts | |||
@@ -104,6 +104,16 @@ | |||
104 | // FIXME: anything else? | 104 | // FIXME: anything else? |
105 | }; | 105 | }; |
106 | 106 | ||
107 | L2C0: l2c { | ||
108 | compatible = "ibm,l2-cache-440gx", "ibm,l2-cache"; | ||
109 | dcr-reg = <20 8 /* Internal SRAM DCR's */ | ||
110 | 30 8>; /* L2 cache DCR's */ | ||
111 | cache-line-size = <20>; /* 32 bytes */ | ||
112 | cache-size = <40000>; /* L2, 256K */ | ||
113 | interrupt-parent = <&UIC2>; | ||
114 | interrupts = <17 1>; | ||
115 | }; | ||
116 | |||
107 | plb { | 117 | plb { |
108 | compatible = "ibm,plb-440gx", "ibm,plb4"; | 118 | compatible = "ibm,plb-440gx", "ibm,plb4"; |
109 | #address-cells = <2>; | 119 | #address-cells = <2>; |
@@ -232,10 +242,18 @@ | |||
232 | reg = <40000790 8>; | 242 | reg = <40000790 8>; |
233 | }; | 243 | }; |
234 | 244 | ||
245 | TAH0: emac-tah@40000b50 { | ||
246 | compatible = "ibm,tah-440gx", "ibm,tah"; | ||
247 | reg = <40000b50 30>; | ||
248 | }; | ||
249 | |||
250 | TAH1: emac-tah@40000d50 { | ||
251 | compatible = "ibm,tah-440gx", "ibm,tah"; | ||
252 | reg = <40000d50 30>; | ||
253 | }; | ||
235 | 254 | ||
236 | EMAC0: ethernet@40000800 { | 255 | EMAC0: ethernet@40000800 { |
237 | unused = <1>; | 256 | unused = <1>; |
238 | linux,network-index = <2>; | ||
239 | device_type = "network"; | 257 | device_type = "network"; |
240 | compatible = "ibm,emac-440gx", "ibm,emac4"; | 258 | compatible = "ibm,emac-440gx", "ibm,emac4"; |
241 | interrupt-parent = <&UIC1>; | 259 | interrupt-parent = <&UIC1>; |
@@ -256,7 +274,6 @@ | |||
256 | }; | 274 | }; |
257 | EMAC1: ethernet@40000900 { | 275 | EMAC1: ethernet@40000900 { |
258 | unused = <1>; | 276 | unused = <1>; |
259 | linux,network-index = <3>; | ||
260 | device_type = "network"; | 277 | device_type = "network"; |
261 | compatible = "ibm,emac-440gx", "ibm,emac4"; | 278 | compatible = "ibm,emac-440gx", "ibm,emac4"; |
262 | interrupt-parent = <&UIC1>; | 279 | interrupt-parent = <&UIC1>; |
@@ -277,7 +294,6 @@ | |||
277 | }; | 294 | }; |
278 | 295 | ||
279 | EMAC2: ethernet@40000c00 { | 296 | EMAC2: ethernet@40000c00 { |
280 | linux,network-index = <0>; | ||
281 | device_type = "network"; | 297 | device_type = "network"; |
282 | compatible = "ibm,emac-440gx", "ibm,emac4"; | 298 | compatible = "ibm,emac-440gx", "ibm,emac4"; |
283 | interrupt-parent = <&UIC2>; | 299 | interrupt-parent = <&UIC2>; |
@@ -288,7 +304,7 @@ | |||
288 | mal-tx-channel = <2>; | 304 | mal-tx-channel = <2>; |
289 | mal-rx-channel = <2>; | 305 | mal-rx-channel = <2>; |
290 | cell-index = <2>; | 306 | cell-index = <2>; |
291 | max-frame-size = <5dc>; | 307 | max-frame-size = <2328>; |
292 | rx-fifo-size = <1000>; | 308 | rx-fifo-size = <1000>; |
293 | tx-fifo-size = <800>; | 309 | tx-fifo-size = <800>; |
294 | phy-mode = "rgmii"; | 310 | phy-mode = "rgmii"; |
@@ -297,10 +313,11 @@ | |||
297 | rgmii-channel = <0>; | 313 | rgmii-channel = <0>; |
298 | zmii-device = <&ZMII0>; | 314 | zmii-device = <&ZMII0>; |
299 | zmii-channel = <2>; | 315 | zmii-channel = <2>; |
316 | tah-device = <&TAH0>; | ||
317 | tah-channel = <0>; | ||
300 | }; | 318 | }; |
301 | 319 | ||
302 | EMAC3: ethernet@40000e00 { | 320 | EMAC3: ethernet@40000e00 { |
303 | linux,network-index = <1>; | ||
304 | device_type = "network"; | 321 | device_type = "network"; |
305 | compatible = "ibm,emac-440gx", "ibm,emac4"; | 322 | compatible = "ibm,emac-440gx", "ibm,emac4"; |
306 | interrupt-parent = <&UIC2>; | 323 | interrupt-parent = <&UIC2>; |
@@ -311,7 +328,7 @@ | |||
311 | mal-tx-channel = <3>; | 328 | mal-tx-channel = <3>; |
312 | mal-rx-channel = <3>; | 329 | mal-rx-channel = <3>; |
313 | cell-index = <3>; | 330 | cell-index = <3>; |
314 | max-frame-size = <5dc>; | 331 | max-frame-size = <2328>; |
315 | rx-fifo-size = <1000>; | 332 | rx-fifo-size = <1000>; |
316 | tx-fifo-size = <800>; | 333 | tx-fifo-size = <800>; |
317 | phy-mode = "rgmii"; | 334 | phy-mode = "rgmii"; |
@@ -320,6 +337,8 @@ | |||
320 | rgmii-channel = <1>; | 337 | rgmii-channel = <1>; |
321 | zmii-device = <&ZMII0>; | 338 | zmii-device = <&ZMII0>; |
322 | zmii-channel = <3>; | 339 | zmii-channel = <3>; |
340 | tah-device = <&TAH1>; | ||
341 | tah-channel = <0>; | ||
323 | }; | 342 | }; |
324 | 343 | ||
325 | 344 | ||
diff --git a/arch/powerpc/boot/dts/walnut.dts b/arch/powerpc/boot/dts/walnut.dts index dcc21b0438e5..a328607c8f84 100644 --- a/arch/powerpc/boot/dts/walnut.dts +++ b/arch/powerpc/boot/dts/walnut.dts | |||
@@ -125,7 +125,6 @@ | |||
125 | }; | 125 | }; |
126 | 126 | ||
127 | EMAC: ethernet@ef600800 { | 127 | EMAC: ethernet@ef600800 { |
128 | linux,network-index = <0>; | ||
129 | device_type = "network"; | 128 | device_type = "network"; |
130 | compatible = "ibm,emac-405gp", "ibm,emac"; | 129 | compatible = "ibm,emac-405gp", "ibm,emac"; |
131 | interrupt-parent = <&UIC0>; | 130 | interrupt-parent = <&UIC0>; |
diff --git a/arch/powerpc/boot/dts/warp.dts b/arch/powerpc/boot/dts/warp.dts index dc1499d30f43..b04a52e22bf5 100644 --- a/arch/powerpc/boot/dts/warp.dts +++ b/arch/powerpc/boot/dts/warp.dts | |||
@@ -204,7 +204,6 @@ | |||
204 | }; | 204 | }; |
205 | 205 | ||
206 | EMAC0: ethernet@ef600e00 { | 206 | EMAC0: ethernet@ef600e00 { |
207 | linux,network-index = <0>; | ||
208 | device_type = "network"; | 207 | device_type = "network"; |
209 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | 208 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; |
210 | interrupt-parent = <&UIC1>; | 209 | interrupt-parent = <&UIC1>; |
diff --git a/arch/powerpc/boot/dts/yosemite.dts b/arch/powerpc/boot/dts/yosemite.dts new file mode 100644 index 000000000000..0d6d332814e0 --- /dev/null +++ b/arch/powerpc/boot/dts/yosemite.dts | |||
@@ -0,0 +1,304 @@ | |||
1 | /* | ||
2 | * Device Tree Source for AMCC Yosemite | ||
3 | * | ||
4 | * Copyright 2008 IBM Corp. | ||
5 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
6 | * | ||
7 | * This file is licensed under the terms of the GNU General Public | ||
8 | * License version 2. This program is licensed "as is" without | ||
9 | * any warranty of any kind, whether express or implied. | ||
10 | */ | ||
11 | |||
12 | / { | ||
13 | #address-cells = <2>; | ||
14 | #size-cells = <1>; | ||
15 | model = "amcc,yosemite"; | ||
16 | compatible = "amcc,yosemite","amcc,bamboo"; | ||
17 | dcr-parent = <&/cpus/cpu@0>; | ||
18 | |||
19 | aliases { | ||
20 | ethernet0 = &EMAC0; | ||
21 | ethernet1 = &EMAC1; | ||
22 | serial0 = &UART0; | ||
23 | serial1 = &UART1; | ||
24 | serial2 = &UART2; | ||
25 | serial3 = &UART3; | ||
26 | }; | ||
27 | |||
28 | cpus { | ||
29 | #address-cells = <1>; | ||
30 | #size-cells = <0>; | ||
31 | |||
32 | cpu@0 { | ||
33 | device_type = "cpu"; | ||
34 | model = "PowerPC,440EP"; | ||
35 | reg = <0>; | ||
36 | clock-frequency = <0>; /* Filled in by zImage */ | ||
37 | timebase-frequency = <0>; /* Filled in by zImage */ | ||
38 | i-cache-line-size = <20>; | ||
39 | d-cache-line-size = <20>; | ||
40 | i-cache-size = <8000>; | ||
41 | d-cache-size = <8000>; | ||
42 | dcr-controller; | ||
43 | dcr-access-method = "native"; | ||
44 | }; | ||
45 | }; | ||
46 | |||
47 | memory { | ||
48 | device_type = "memory"; | ||
49 | reg = <0 0 0>; /* Filled in by zImage */ | ||
50 | }; | ||
51 | |||
52 | UIC0: interrupt-controller0 { | ||
53 | compatible = "ibm,uic-440ep","ibm,uic"; | ||
54 | interrupt-controller; | ||
55 | cell-index = <0>; | ||
56 | dcr-reg = <0c0 009>; | ||
57 | #address-cells = <0>; | ||
58 | #size-cells = <0>; | ||
59 | #interrupt-cells = <2>; | ||
60 | }; | ||
61 | |||
62 | UIC1: interrupt-controller1 { | ||
63 | compatible = "ibm,uic-440ep","ibm,uic"; | ||
64 | interrupt-controller; | ||
65 | cell-index = <1>; | ||
66 | dcr-reg = <0d0 009>; | ||
67 | #address-cells = <0>; | ||
68 | #size-cells = <0>; | ||
69 | #interrupt-cells = <2>; | ||
70 | interrupts = <1e 4 1f 4>; /* cascade */ | ||
71 | interrupt-parent = <&UIC0>; | ||
72 | }; | ||
73 | |||
74 | SDR0: sdr { | ||
75 | compatible = "ibm,sdr-440ep"; | ||
76 | dcr-reg = <00e 002>; | ||
77 | }; | ||
78 | |||
79 | CPR0: cpr { | ||
80 | compatible = "ibm,cpr-440ep"; | ||
81 | dcr-reg = <00c 002>; | ||
82 | }; | ||
83 | |||
84 | plb { | ||
85 | compatible = "ibm,plb-440ep", "ibm,plb-440gp", "ibm,plb4"; | ||
86 | #address-cells = <2>; | ||
87 | #size-cells = <1>; | ||
88 | ranges; | ||
89 | clock-frequency = <0>; /* Filled in by zImage */ | ||
90 | |||
91 | SDRAM0: sdram { | ||
92 | compatible = "ibm,sdram-440ep", "ibm,sdram-405gp"; | ||
93 | dcr-reg = <010 2>; | ||
94 | }; | ||
95 | |||
96 | DMA0: dma { | ||
97 | compatible = "ibm,dma-440ep", "ibm,dma-440gp"; | ||
98 | dcr-reg = <100 027>; | ||
99 | }; | ||
100 | |||
101 | MAL0: mcmal { | ||
102 | compatible = "ibm,mcmal-440ep", "ibm,mcmal-440gp", "ibm,mcmal"; | ||
103 | dcr-reg = <180 62>; | ||
104 | num-tx-chans = <4>; | ||
105 | num-rx-chans = <2>; | ||
106 | interrupt-parent = <&MAL0>; | ||
107 | interrupts = <0 1 2 3 4>; | ||
108 | #interrupt-cells = <1>; | ||
109 | #address-cells = <0>; | ||
110 | #size-cells = <0>; | ||
111 | interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 | ||
112 | /*RXEOB*/ 1 &UIC0 b 4 | ||
113 | /*SERR*/ 2 &UIC1 0 4 | ||
114 | /*TXDE*/ 3 &UIC1 1 4 | ||
115 | /*RXDE*/ 4 &UIC1 2 4>; | ||
116 | }; | ||
117 | |||
118 | POB0: opb { | ||
119 | compatible = "ibm,opb-440ep", "ibm,opb-440gp", "ibm,opb"; | ||
120 | #address-cells = <1>; | ||
121 | #size-cells = <1>; | ||
122 | /* Bamboo is oddball in the 44x world and doesn't use the ERPN | ||
123 | * bits. | ||
124 | */ | ||
125 | ranges = <00000000 0 00000000 80000000 | ||
126 | 80000000 0 80000000 80000000>; | ||
127 | interrupt-parent = <&UIC1>; | ||
128 | interrupts = <7 4>; | ||
129 | clock-frequency = <0>; /* Filled in by zImage */ | ||
130 | |||
131 | EBC0: ebc { | ||
132 | compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc"; | ||
133 | dcr-reg = <012 2>; | ||
134 | #address-cells = <2>; | ||
135 | #size-cells = <1>; | ||
136 | clock-frequency = <0>; /* Filled in by zImage */ | ||
137 | interrupts = <5 1>; | ||
138 | interrupt-parent = <&UIC1>; | ||
139 | }; | ||
140 | |||
141 | UART0: serial@ef600300 { | ||
142 | device_type = "serial"; | ||
143 | compatible = "ns16550"; | ||
144 | reg = <ef600300 8>; | ||
145 | virtual-reg = <ef600300>; | ||
146 | clock-frequency = <0>; /* Filled in by zImage */ | ||
147 | current-speed = <1c200>; | ||
148 | interrupt-parent = <&UIC0>; | ||
149 | interrupts = <0 4>; | ||
150 | }; | ||
151 | |||
152 | UART1: serial@ef600400 { | ||
153 | device_type = "serial"; | ||
154 | compatible = "ns16550"; | ||
155 | reg = <ef600400 8>; | ||
156 | virtual-reg = <ef600400>; | ||
157 | clock-frequency = <0>; | ||
158 | current-speed = <0>; | ||
159 | interrupt-parent = <&UIC0>; | ||
160 | interrupts = <1 4>; | ||
161 | }; | ||
162 | |||
163 | UART2: serial@ef600500 { | ||
164 | device_type = "serial"; | ||
165 | compatible = "ns16550"; | ||
166 | reg = <ef600500 8>; | ||
167 | virtual-reg = <ef600500>; | ||
168 | clock-frequency = <0>; | ||
169 | current-speed = <0>; | ||
170 | interrupt-parent = <&UIC0>; | ||
171 | interrupts = <3 4>; | ||
172 | status = "disabled"; | ||
173 | }; | ||
174 | |||
175 | UART3: serial@ef600600 { | ||
176 | device_type = "serial"; | ||
177 | compatible = "ns16550"; | ||
178 | reg = <ef600600 8>; | ||
179 | virtual-reg = <ef600600>; | ||
180 | clock-frequency = <0>; | ||
181 | current-speed = <0>; | ||
182 | interrupt-parent = <&UIC0>; | ||
183 | interrupts = <4 4>; | ||
184 | status = "disabled"; | ||
185 | }; | ||
186 | |||
187 | IIC0: i2c@ef600700 { | ||
188 | compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic"; | ||
189 | reg = <ef600700 14>; | ||
190 | interrupt-parent = <&UIC0>; | ||
191 | interrupts = <2 4>; | ||
192 | }; | ||
193 | |||
194 | IIC1: i2c@ef600800 { | ||
195 | compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic"; | ||
196 | reg = <ef600800 14>; | ||
197 | interrupt-parent = <&UIC0>; | ||
198 | interrupts = <7 4>; | ||
199 | }; | ||
200 | |||
201 | spi@ef600900 { | ||
202 | compatible = "amcc,spi-440ep"; | ||
203 | reg = <ef600900 6>; | ||
204 | interrupts = <8 4>; | ||
205 | interrupt-parent = <&UIC0>; | ||
206 | }; | ||
207 | |||
208 | ZMII0: emac-zmii@ef600d00 { | ||
209 | compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii"; | ||
210 | reg = <ef600d00 c>; | ||
211 | }; | ||
212 | |||
213 | EMAC0: ethernet@ef600e00 { | ||
214 | device_type = "network"; | ||
215 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | ||
216 | interrupt-parent = <&UIC1>; | ||
217 | interrupts = <1c 4 1d 4>; | ||
218 | reg = <ef600e00 70>; | ||
219 | local-mac-address = [000000000000]; | ||
220 | mal-device = <&MAL0>; | ||
221 | mal-tx-channel = <0 1>; | ||
222 | mal-rx-channel = <0>; | ||
223 | cell-index = <0>; | ||
224 | max-frame-size = <5dc>; | ||
225 | rx-fifo-size = <1000>; | ||
226 | tx-fifo-size = <800>; | ||
227 | phy-mode = "rmii"; | ||
228 | phy-map = <00000000>; | ||
229 | zmii-device = <&ZMII0>; | ||
230 | zmii-channel = <0>; | ||
231 | }; | ||
232 | |||
233 | EMAC1: ethernet@ef600f00 { | ||
234 | device_type = "network"; | ||
235 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | ||
236 | interrupt-parent = <&UIC1>; | ||
237 | interrupts = <1e 4 1f 4>; | ||
238 | reg = <ef600f00 70>; | ||
239 | local-mac-address = [000000000000]; | ||
240 | mal-device = <&MAL0>; | ||
241 | mal-tx-channel = <2 3>; | ||
242 | mal-rx-channel = <1>; | ||
243 | cell-index = <1>; | ||
244 | max-frame-size = <5dc>; | ||
245 | rx-fifo-size = <1000>; | ||
246 | tx-fifo-size = <800>; | ||
247 | phy-mode = "rmii"; | ||
248 | phy-map = <00000000>; | ||
249 | zmii-device = <&ZMII0>; | ||
250 | zmii-channel = <1>; | ||
251 | }; | ||
252 | |||
253 | usb@ef601000 { | ||
254 | compatible = "ohci-be"; | ||
255 | reg = <ef601000 80>; | ||
256 | interrupts = <8 4 9 4>; | ||
257 | interrupt-parent = < &UIC1 >; | ||
258 | }; | ||
259 | }; | ||
260 | |||
261 | PCI0: pci@ec000000 { | ||
262 | device_type = "pci"; | ||
263 | #interrupt-cells = <1>; | ||
264 | #size-cells = <2>; | ||
265 | #address-cells = <3>; | ||
266 | compatible = "ibm,plb440ep-pci", "ibm,plb-pci"; | ||
267 | primary; | ||
268 | reg = <0 eec00000 8 /* Config space access */ | ||
269 | 0 eed00000 4 /* IACK */ | ||
270 | 0 eed00000 4 /* Special cycle */ | ||
271 | 0 ef400000 40>; /* Internal registers */ | ||
272 | |||
273 | /* Outbound ranges, one memory and one IO, | ||
274 | * later cannot be changed. Chip supports a second | ||
275 | * IO range but we don't use it for now | ||
276 | */ | ||
277 | ranges = <02000000 0 a0000000 0 a0000000 0 20000000 | ||
278 | 01000000 0 00000000 0 e8000000 0 00010000>; | ||
279 | |||
280 | /* Inbound 2GB range starting at 0 */ | ||
281 | dma-ranges = <42000000 0 0 0 0 0 80000000>; | ||
282 | |||
283 | /* Bamboo has all 4 IRQ pins tied together per slot */ | ||
284 | interrupt-map-mask = <f800 0 0 0>; | ||
285 | interrupt-map = < | ||
286 | /* IDSEL 1 */ | ||
287 | 0800 0 0 0 &UIC0 1c 8 | ||
288 | |||
289 | /* IDSEL 2 */ | ||
290 | 1000 0 0 0 &UIC0 1b 8 | ||
291 | |||
292 | /* IDSEL 3 */ | ||
293 | 1800 0 0 0 &UIC0 1a 8 | ||
294 | |||
295 | /* IDSEL 4 */ | ||
296 | 2000 0 0 0 &UIC0 19 8 | ||
297 | >; | ||
298 | }; | ||
299 | }; | ||
300 | |||
301 | chosen { | ||
302 | linux,stdout-path = "/plb/opb/serial@ef600300"; | ||
303 | }; | ||
304 | }; | ||
diff --git a/arch/powerpc/boot/ebony.c b/arch/powerpc/boot/ebony.c index f61364c47a76..5532ab3221dd 100644 --- a/arch/powerpc/boot/ebony.c +++ b/arch/powerpc/boot/ebony.c | |||
@@ -75,7 +75,8 @@ static void ebony_fixups(void) | |||
75 | 75 | ||
76 | ibm440gp_fixup_clocks(sysclk, 6 * 1843200); | 76 | ibm440gp_fixup_clocks(sysclk, 6 * 1843200); |
77 | ibm4xx_sdram_fixup_memsize(); | 77 | ibm4xx_sdram_fixup_memsize(); |
78 | dt_fixup_mac_addresses(ebony_mac0, ebony_mac1); | 78 | dt_fixup_mac_address_by_alias("ethernet0", ebony_mac0); |
79 | dt_fixup_mac_address_by_alias("ethernet1", ebony_mac1); | ||
79 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); | 80 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); |
80 | ebony_flashsel_fixup(); | 81 | ebony_flashsel_fixup(); |
81 | } | 82 | } |
diff --git a/arch/powerpc/boot/libfdt-wrapper.c b/arch/powerpc/boot/libfdt-wrapper.c index 59016bef1391..c541fd8a95d4 100644 --- a/arch/powerpc/boot/libfdt-wrapper.c +++ b/arch/powerpc/boot/libfdt-wrapper.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #define check_err(err) \ | 35 | #define check_err(err) \ |
36 | ({ \ | 36 | ({ \ |
37 | if (BAD_ERROR(err) || ((err < 0) && DEBUG)) \ | 37 | if (BAD_ERROR(err) || ((err < 0) && DEBUG)) \ |
38 | printf("%s():%d %s\n\r", __FUNCTION__, __LINE__, \ | 38 | printf("%s():%d %s\n\r", __func__, __LINE__, \ |
39 | fdt_strerror(err)); \ | 39 | fdt_strerror(err)); \ |
40 | if (BAD_ERROR(err)) \ | 40 | if (BAD_ERROR(err)) \ |
41 | exit(); \ | 41 | exit(); \ |
diff --git a/arch/powerpc/boot/mpc52xx-psc.c b/arch/powerpc/boot/mpc52xx-psc.c index 1074626e6a37..d4cb4e4e0938 100644 --- a/arch/powerpc/boot/mpc52xx-psc.c +++ b/arch/powerpc/boot/mpc52xx-psc.c | |||
@@ -51,14 +51,9 @@ static unsigned char psc_getc(void) | |||
51 | 51 | ||
52 | int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp) | 52 | int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp) |
53 | { | 53 | { |
54 | int n; | ||
55 | |||
56 | /* Get the base address of the psc registers */ | 54 | /* Get the base address of the psc registers */ |
57 | n = getprop(devp, "virtual-reg", &psc, sizeof(psc)); | 55 | if (dt_get_virtual_reg(devp, &psc, 1) < 1) |
58 | if (n != sizeof(psc)) { | 56 | return -1; |
59 | if (!dt_xlate_reg(devp, 0, (void *)&psc, NULL)) | ||
60 | return -1; | ||
61 | } | ||
62 | 57 | ||
63 | scdp->open = psc_open; | 58 | scdp->open = psc_open; |
64 | scdp->putc = psc_putc; | 59 | scdp->putc = psc_putc; |
diff --git a/arch/powerpc/boot/mpsc.c b/arch/powerpc/boot/mpsc.c index 802ea53790d8..425ad88cce8d 100644 --- a/arch/powerpc/boot/mpsc.c +++ b/arch/powerpc/boot/mpsc.c | |||
@@ -141,7 +141,7 @@ int mpsc_console_init(void *devp, struct serial_console_data *scdp) | |||
141 | if (mpscintr_base == NULL) | 141 | if (mpscintr_base == NULL) |
142 | goto err_out; | 142 | goto err_out; |
143 | 143 | ||
144 | n = getprop(devp, "block-index", &v, sizeof(v)); | 144 | n = getprop(devp, "cell-index", &v, sizeof(v)); |
145 | if (n != sizeof(v)) | 145 | if (n != sizeof(v)) |
146 | goto err_out; | 146 | goto err_out; |
147 | reg_set = (int)v; | 147 | reg_set = (int)v; |
diff --git a/arch/powerpc/boot/mv64x60.c b/arch/powerpc/boot/mv64x60.c index b43259455d4b..d9bb302b91d2 100644 --- a/arch/powerpc/boot/mv64x60.c +++ b/arch/powerpc/boot/mv64x60.c | |||
@@ -535,7 +535,7 @@ u8 *mv64x60_get_bridge_pbase(void) | |||
535 | u32 v[2]; | 535 | u32 v[2]; |
536 | void *devp; | 536 | void *devp; |
537 | 537 | ||
538 | devp = finddevice("/mv64x60"); | 538 | devp = find_node_by_compatible(NULL, "marvell,mv64360"); |
539 | if (devp == NULL) | 539 | if (devp == NULL) |
540 | goto err_out; | 540 | goto err_out; |
541 | if (getprop(devp, "reg", v, sizeof(v)) != sizeof(v)) | 541 | if (getprop(devp, "reg", v, sizeof(v)) != sizeof(v)) |
@@ -553,7 +553,7 @@ u8 *mv64x60_get_bridge_base(void) | |||
553 | u32 v; | 553 | u32 v; |
554 | void *devp; | 554 | void *devp; |
555 | 555 | ||
556 | devp = finddevice("/mv64x60"); | 556 | devp = find_node_by_compatible(NULL, "marvell,mv64360"); |
557 | if (devp == NULL) | 557 | if (devp == NULL) |
558 | goto err_out; | 558 | goto err_out; |
559 | if (getprop(devp, "virtual-reg", &v, sizeof(v)) != sizeof(v)) | 559 | if (getprop(devp, "virtual-reg", &v, sizeof(v)) != sizeof(v)) |
diff --git a/arch/powerpc/boot/mv64x60_i2c.c b/arch/powerpc/boot/mv64x60_i2c.c index d085377be3bc..52a3212b6638 100644 --- a/arch/powerpc/boot/mv64x60_i2c.c +++ b/arch/powerpc/boot/mv64x60_i2c.c | |||
@@ -185,7 +185,7 @@ int mv64x60_i2c_open(void) | |||
185 | u32 v; | 185 | u32 v; |
186 | void *devp; | 186 | void *devp; |
187 | 187 | ||
188 | devp = finddevice("/mv64x60/i2c"); | 188 | devp = find_node_by_compatible(NULL, "marvell,mv64360-i2c"); |
189 | if (devp == NULL) | 189 | if (devp == NULL) |
190 | goto err_out; | 190 | goto err_out; |
191 | if (getprop(devp, "virtual-reg", &v, sizeof(v)) != sizeof(v)) | 191 | if (getprop(devp, "virtual-reg", &v, sizeof(v)) != sizeof(v)) |
diff --git a/arch/powerpc/boot/ns16550.c b/arch/powerpc/boot/ns16550.c index f8f1b2f31412..aef3bdc89160 100644 --- a/arch/powerpc/boot/ns16550.c +++ b/arch/powerpc/boot/ns16550.c | |||
@@ -55,15 +55,9 @@ static u8 ns16550_tstc(void) | |||
55 | int ns16550_console_init(void *devp, struct serial_console_data *scdp) | 55 | int ns16550_console_init(void *devp, struct serial_console_data *scdp) |
56 | { | 56 | { |
57 | int n; | 57 | int n; |
58 | unsigned long reg_phys; | ||
59 | 58 | ||
60 | n = getprop(devp, "virtual-reg", ®_base, sizeof(reg_base)); | 59 | if (dt_get_virtual_reg(devp, (void **)®_base, 1) < 1) |
61 | if (n != sizeof(reg_base)) { | 60 | return -1; |
62 | if (!dt_xlate_reg(devp, 0, ®_phys, NULL)) | ||
63 | return -1; | ||
64 | |||
65 | reg_base = (void *)reg_phys; | ||
66 | } | ||
67 | 61 | ||
68 | n = getprop(devp, "reg-shift", ®_shift, sizeof(reg_shift)); | 62 | n = getprop(devp, "reg-shift", ®_shift, sizeof(reg_shift)); |
69 | if (n != sizeof(reg_shift)) | 63 | if (n != sizeof(reg_shift)) |
diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h index 4b0544b03c64..321e2f5afe71 100644 --- a/arch/powerpc/boot/ops.h +++ b/arch/powerpc/boot/ops.h | |||
@@ -95,6 +95,7 @@ int dt_xlate_reg(void *node, int res, unsigned long *addr, unsigned long *size); | |||
95 | int dt_xlate_addr(void *node, u32 *buf, int buflen, unsigned long *xlated_addr); | 95 | int dt_xlate_addr(void *node, u32 *buf, int buflen, unsigned long *xlated_addr); |
96 | int dt_is_compatible(void *node, const char *compat); | 96 | int dt_is_compatible(void *node, const char *compat); |
97 | void dt_get_reg_format(void *node, u32 *naddr, u32 *nsize); | 97 | void dt_get_reg_format(void *node, u32 *naddr, u32 *nsize); |
98 | int dt_get_virtual_reg(void *node, void **addr, int nres); | ||
98 | 99 | ||
99 | static inline void *finddevice(const char *name) | 100 | static inline void *finddevice(const char *name) |
100 | { | 101 | { |
diff --git a/arch/powerpc/boot/prpmc2800.c b/arch/powerpc/boot/prpmc2800.c index 05c3245b30d7..da31d6030482 100644 --- a/arch/powerpc/boot/prpmc2800.c +++ b/arch/powerpc/boot/prpmc2800.c | |||
@@ -344,20 +344,20 @@ static void prpmc2800_bridge_setup(u32 mem_size) | |||
344 | acc_bits); | 344 | acc_bits); |
345 | 345 | ||
346 | /* Get the cpu -> pci i/o & mem mappings from the device tree */ | 346 | /* Get the cpu -> pci i/o & mem mappings from the device tree */ |
347 | devp = finddevice("/mv64x60/pci@80000000"); | 347 | devp = find_node_by_compatible(NULL, "marvell,mv64360-pci"); |
348 | if (devp == NULL) | 348 | if (devp == NULL) |
349 | fatal("Error: Missing /mv64x60/pci@80000000" | 349 | fatal("Error: Missing marvell,mv64360-pci" |
350 | " device tree node\n\r"); | 350 | " device tree node\n\r"); |
351 | 351 | ||
352 | rc = getprop(devp, "ranges", v, sizeof(v)); | 352 | rc = getprop(devp, "ranges", v, sizeof(v)); |
353 | if (rc != sizeof(v)) | 353 | if (rc != sizeof(v)) |
354 | fatal("Error: Can't find /mv64x60/pci@80000000/ranges" | 354 | fatal("Error: Can't find marvell,mv64360-pci ranges" |
355 | " property\n\r"); | 355 | " property\n\r"); |
356 | 356 | ||
357 | /* Get the cpu -> pci i/o & mem mappings from the device tree */ | 357 | /* Get the cpu -> pci i/o & mem mappings from the device tree */ |
358 | devp = finddevice("/mv64x60"); | 358 | devp = find_node_by_compatible(NULL, "marvell,mv64360"); |
359 | if (devp == NULL) | 359 | if (devp == NULL) |
360 | fatal("Error: Missing /mv64x60 device tree node\n\r"); | 360 | fatal("Error: Missing marvell,mv64360 device tree node\n\r"); |
361 | 361 | ||
362 | enables = in_le32((u32 *)(bridge_base + MV64x60_CPU_BAR_ENABLE)); | 362 | enables = in_le32((u32 *)(bridge_base + MV64x60_CPU_BAR_ENABLE)); |
363 | enables |= 0x0007fe00; /* Disable all cpu->pci windows */ | 363 | enables |= 0x0007fe00; /* Disable all cpu->pci windows */ |
@@ -429,9 +429,9 @@ static void prpmc2800_fixups(void) | |||
429 | setprop(devp, "model", model, l); | 429 | setprop(devp, "model", model, l); |
430 | 430 | ||
431 | /* Set /cpus/PowerPC,7447/clock-frequency */ | 431 | /* Set /cpus/PowerPC,7447/clock-frequency */ |
432 | devp = finddevice("/cpus/PowerPC,7447"); | 432 | devp = find_node_by_prop_value_str(NULL, "device_type", "cpu"); |
433 | if (devp == NULL) | 433 | if (devp == NULL) |
434 | fatal("Error: Missing proper /cpus device tree node\n\r"); | 434 | fatal("Error: Missing proper cpu device tree node\n\r"); |
435 | v[0] = bip->core_speed; | 435 | v[0] = bip->core_speed; |
436 | setprop(devp, "clock-frequency", &v[0], sizeof(v[0])); | 436 | setprop(devp, "clock-frequency", &v[0], sizeof(v[0])); |
437 | 437 | ||
@@ -443,16 +443,17 @@ static void prpmc2800_fixups(void) | |||
443 | v[1] = bip->mem_size; | 443 | v[1] = bip->mem_size; |
444 | setprop(devp, "reg", v, sizeof(v)); | 444 | setprop(devp, "reg", v, sizeof(v)); |
445 | 445 | ||
446 | /* Update /mv64x60/model, if this is a mv64362 */ | 446 | /* Update model, if this is a mv64362 */ |
447 | if (bip->bridge_type == BRIDGE_TYPE_MV64362) { | 447 | if (bip->bridge_type == BRIDGE_TYPE_MV64362) { |
448 | devp = finddevice("/mv64x60"); | 448 | devp = find_node_by_compatible(NULL, "marvell,mv64360"); |
449 | if (devp == NULL) | 449 | if (devp == NULL) |
450 | fatal("Error: Missing /mv64x60 device tree node\n\r"); | 450 | fatal("Error: Missing marvell,mv64360" |
451 | " device tree node\n\r"); | ||
451 | setprop(devp, "model", "mv64362", strlen("mv64362") + 1); | 452 | setprop(devp, "model", "mv64362", strlen("mv64362") + 1); |
452 | } | 453 | } |
453 | 454 | ||
454 | /* Set User FLASH size */ | 455 | /* Set User FLASH size */ |
455 | devp = finddevice("/mv64x60/flash@a0000000"); | 456 | devp = find_node_by_compatible(NULL, "direct-mapped"); |
456 | if (devp == NULL) | 457 | if (devp == NULL) |
457 | fatal("Error: Missing User FLASH device tree node\n\r"); | 458 | fatal("Error: Missing User FLASH device tree node\n\r"); |
458 | rc = getprop(devp, "reg", v, sizeof(v)); | 459 | rc = getprop(devp, "reg", v, sizeof(v)); |
diff --git a/arch/powerpc/boot/ps3-head.S b/arch/powerpc/boot/ps3-head.S index a55c2735f759..b6fcbaf5027b 100644 --- a/arch/powerpc/boot/ps3-head.S +++ b/arch/powerpc/boot/ps3-head.S | |||
@@ -27,8 +27,9 @@ | |||
27 | /* | 27 | /* |
28 | * __system_reset_overlay - The PS3 first stage entry. | 28 | * __system_reset_overlay - The PS3 first stage entry. |
29 | * | 29 | * |
30 | * The bootwraper build script copies the 0x100 bytes at symbol | 30 | * The bootwraper build script copies the 512 bytes at symbol |
31 | * __system_reset_overlay to offset 0x100 of the rom image. | 31 | * __system_reset_overlay to offset 0x100 of the rom image. This symbol |
32 | * must occupy 512 or less bytes. | ||
32 | * | 33 | * |
33 | * The PS3 has a single processor with two threads. | 34 | * The PS3 has a single processor with two threads. |
34 | */ | 35 | */ |
@@ -47,8 +48,6 @@ __system_reset_overlay: | |||
47 | 48 | ||
48 | mfspr r3, 0x88 | 49 | mfspr r3, 0x88 |
49 | cntlzw. r3, r3 | 50 | cntlzw. r3, r3 |
50 | li r4, 0 | ||
51 | li r5, 0 | ||
52 | beq 1f | 51 | beq 1f |
53 | 52 | ||
54 | /* Secondary goes to __secondary_hold in kernel. */ | 53 | /* Secondary goes to __secondary_hold in kernel. */ |
@@ -57,8 +56,14 @@ __system_reset_overlay: | |||
57 | mtctr r4 | 56 | mtctr r4 |
58 | bctr | 57 | bctr |
59 | 58 | ||
60 | /* Primary delays then goes to _zimage_start in wrapper. */ | ||
61 | 1: | 59 | 1: |
60 | /* Save the value at addr zero for a null pointer write check later. */ | ||
61 | |||
62 | li r4, 0 | ||
63 | lwz r3, 0(r4) | ||
64 | |||
65 | /* Primary delays then goes to _zimage_start in wrapper. */ | ||
66 | |||
62 | or 31, 31, 31 /* db16cyc */ | 67 | or 31, 31, 31 /* db16cyc */ |
63 | or 31, 31, 31 /* db16cyc */ | 68 | or 31, 31, 31 /* db16cyc */ |
64 | 69 | ||
@@ -67,16 +72,18 @@ __system_reset_overlay: | |||
67 | mtctr r4 | 72 | mtctr r4 |
68 | bctr | 73 | bctr |
69 | 74 | ||
75 | . = __system_reset_overlay + 512 | ||
76 | |||
70 | /* | 77 | /* |
71 | * __system_reset_kernel - Place holder for the kernel reset vector. | 78 | * __system_reset_kernel - Place holder for the kernel reset vector. |
72 | * | 79 | * |
73 | * The bootwrapper build script copies 0x100 bytes from offset 0x100 | 80 | * The bootwrapper build script copies 512 bytes from offset 0x100 |
74 | * of the rom image to the symbol __system_reset_kernel. At runtime | 81 | * of the rom image to the symbol __system_reset_kernel. At runtime |
75 | * the bootwrapper program copies the 0x100 bytes at __system_reset_kernel | 82 | * the bootwrapper program copies the 512 bytes at __system_reset_kernel |
76 | * to ram address 0x100. This symbol must occupy 0x100 bytes. | 83 | * to ram address 0x100. This symbol must occupy 512 bytes. |
77 | */ | 84 | */ |
78 | 85 | ||
79 | .globl __system_reset_kernel | 86 | .globl __system_reset_kernel |
80 | __system_reset_kernel: | 87 | __system_reset_kernel: |
81 | 88 | ||
82 | . = __system_reset_kernel + 0x100 | 89 | . = __system_reset_kernel + 512 |
diff --git a/arch/powerpc/boot/ps3.c b/arch/powerpc/boot/ps3.c index 3b0ac4d006ec..9954d98871d0 100644 --- a/arch/powerpc/boot/ps3.c +++ b/arch/powerpc/boot/ps3.c | |||
@@ -27,10 +27,10 @@ | |||
27 | #include "page.h" | 27 | #include "page.h" |
28 | #include "ops.h" | 28 | #include "ops.h" |
29 | 29 | ||
30 | extern s64 lv1_panic(u64 in_1); | 30 | extern int lv1_panic(u64 in_1); |
31 | extern s64 lv1_get_logical_partition_id(u64 *out_1); | 31 | extern int lv1_get_logical_partition_id(u64 *out_1); |
32 | extern s64 lv1_get_logical_ppe_id(u64 *out_1); | 32 | extern int lv1_get_logical_ppe_id(u64 *out_1); |
33 | extern s64 lv1_get_repository_node_value(u64 in_1, u64 in_2, u64 in_3, | 33 | extern int lv1_get_repository_node_value(u64 in_1, u64 in_2, u64 in_3, |
34 | u64 in_4, u64 in_5, u64 *out_1, u64 *out_2); | 34 | u64 in_4, u64 in_5, u64 *out_1, u64 *out_2); |
35 | 35 | ||
36 | #ifdef DEBUG | 36 | #ifdef DEBUG |
@@ -46,6 +46,7 @@ BSS_STACK(4096); | |||
46 | * edit the command line passed to vmlinux (by setting /chosen/bootargs). | 46 | * edit the command line passed to vmlinux (by setting /chosen/bootargs). |
47 | * The buffer is put in it's own section so that tools may locate it easier. | 47 | * The buffer is put in it's own section so that tools may locate it easier. |
48 | */ | 48 | */ |
49 | |||
49 | static char cmdline[COMMAND_LINE_SIZE] | 50 | static char cmdline[COMMAND_LINE_SIZE] |
50 | __attribute__((__section__("__builtin_cmdline"))); | 51 | __attribute__((__section__("__builtin_cmdline"))); |
51 | 52 | ||
@@ -75,7 +76,7 @@ static void ps3_exit(void) | |||
75 | 76 | ||
76 | static int ps3_repository_read_rm_size(u64 *rm_size) | 77 | static int ps3_repository_read_rm_size(u64 *rm_size) |
77 | { | 78 | { |
78 | s64 result; | 79 | int result; |
79 | u64 lpar_id; | 80 | u64 lpar_id; |
80 | u64 ppe_id; | 81 | u64 ppe_id; |
81 | u64 v2; | 82 | u64 v2; |
@@ -114,16 +115,17 @@ void ps3_copy_vectors(void) | |||
114 | { | 115 | { |
115 | extern char __system_reset_kernel[]; | 116 | extern char __system_reset_kernel[]; |
116 | 117 | ||
117 | memcpy((void *)0x100, __system_reset_kernel, 0x100); | 118 | memcpy((void *)0x100, __system_reset_kernel, 512); |
118 | flush_cache((void *)0x100, 0x100); | 119 | flush_cache((void *)0x100, 512); |
119 | } | 120 | } |
120 | 121 | ||
121 | void platform_init(void) | 122 | void platform_init(unsigned long null_check) |
122 | { | 123 | { |
123 | const u32 heapsize = 0x1000000 - (u32)_end; /* 16MiB */ | 124 | const u32 heapsize = 0x1000000 - (u32)_end; /* 16MiB */ |
124 | void *chosen; | 125 | void *chosen; |
125 | unsigned long ft_addr; | 126 | unsigned long ft_addr; |
126 | u64 rm_size; | 127 | u64 rm_size; |
128 | unsigned long val; | ||
127 | 129 | ||
128 | console_ops.write = ps3_console_write; | 130 | console_ops.write = ps3_console_write; |
129 | platform_ops.exit = ps3_exit; | 131 | platform_ops.exit = ps3_exit; |
@@ -151,6 +153,11 @@ void platform_init(void) | |||
151 | 153 | ||
152 | printf(" flat tree at 0x%lx\n\r", ft_addr); | 154 | printf(" flat tree at 0x%lx\n\r", ft_addr); |
153 | 155 | ||
156 | val = *(unsigned long *)0; | ||
157 | |||
158 | if (val != null_check) | ||
159 | printf("null check failed: %lx != %lx\n\r", val, null_check); | ||
160 | |||
154 | ((kernel_entry_t)0)(ft_addr, 0, NULL); | 161 | ((kernel_entry_t)0)(ft_addr, 0, NULL); |
155 | 162 | ||
156 | ps3_exit(); | 163 | ps3_exit(); |
diff --git a/arch/powerpc/boot/serial.c b/arch/powerpc/boot/serial.c index 9960421eb6b9..8b3607cb53fb 100644 --- a/arch/powerpc/boot/serial.c +++ b/arch/powerpc/boot/serial.c | |||
@@ -119,7 +119,7 @@ int serial_console_init(void) | |||
119 | 119 | ||
120 | if (dt_is_compatible(devp, "ns16550")) | 120 | if (dt_is_compatible(devp, "ns16550")) |
121 | rc = ns16550_console_init(devp, &serial_cd); | 121 | rc = ns16550_console_init(devp, &serial_cd); |
122 | else if (dt_is_compatible(devp, "marvell,mpsc")) | 122 | else if (dt_is_compatible(devp, "marvell,mv64360-mpsc")) |
123 | rc = mpsc_console_init(devp, &serial_cd); | 123 | rc = mpsc_console_init(devp, &serial_cd); |
124 | else if (dt_is_compatible(devp, "fsl,cpm1-scc-uart") || | 124 | else if (dt_is_compatible(devp, "fsl,cpm1-scc-uart") || |
125 | dt_is_compatible(devp, "fsl,cpm1-smc-uart") || | 125 | dt_is_compatible(devp, "fsl,cpm1-smc-uart") || |
diff --git a/arch/powerpc/boot/simpleboot.c b/arch/powerpc/boot/simpleboot.c new file mode 100644 index 000000000000..86cd285bccc6 --- /dev/null +++ b/arch/powerpc/boot/simpleboot.c | |||
@@ -0,0 +1,84 @@ | |||
1 | /* | ||
2 | * The simple platform -- for booting when firmware doesn't supply a device | ||
3 | * tree or any platform configuration information. | ||
4 | * All data is extracted from an embedded device tree | ||
5 | * blob. | ||
6 | * | ||
7 | * Authors: Scott Wood <scottwood@freescale.com> | ||
8 | * Grant Likely <grant.likely@secretlab.ca> | ||
9 | * | ||
10 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
11 | * Copyright (c) 2008 Secret Lab Technologies Ltd. | ||
12 | * | ||
13 | * This program is free software; you can redistribute it and/or modify it | ||
14 | * under the terms of the GNU General Public License version 2 as published | ||
15 | * by the Free Software Foundation. | ||
16 | */ | ||
17 | |||
18 | #include "ops.h" | ||
19 | #include "types.h" | ||
20 | #include "io.h" | ||
21 | #include "stdio.h" | ||
22 | #include "libfdt/libfdt.h" | ||
23 | |||
24 | BSS_STACK(4*1024); | ||
25 | |||
26 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
27 | unsigned long r6, unsigned long r7) | ||
28 | { | ||
29 | const u32 *na, *ns, *reg, *timebase; | ||
30 | u64 memsize64; | ||
31 | int node, size, i; | ||
32 | |||
33 | /* Make sure FDT blob is sane */ | ||
34 | if (fdt_check_header(_dtb_start) != 0) | ||
35 | fatal("Invalid device tree blob\n"); | ||
36 | |||
37 | /* Find the #address-cells and #size-cells properties */ | ||
38 | node = fdt_path_offset(_dtb_start, "/"); | ||
39 | if (node < 0) | ||
40 | fatal("Cannot find root node\n"); | ||
41 | na = fdt_getprop(_dtb_start, node, "#address-cells", &size); | ||
42 | if (!na || (size != 4)) | ||
43 | fatal("Cannot find #address-cells property"); | ||
44 | ns = fdt_getprop(_dtb_start, node, "#size-cells", &size); | ||
45 | if (!ns || (size != 4)) | ||
46 | fatal("Cannot find #size-cells property"); | ||
47 | |||
48 | /* Find the memory range */ | ||
49 | node = fdt_node_offset_by_prop_value(_dtb_start, -1, "device_type", | ||
50 | "memory", sizeof("memory")); | ||
51 | if (node < 0) | ||
52 | fatal("Cannot find memory node\n"); | ||
53 | reg = fdt_getprop(_dtb_start, node, "reg", &size); | ||
54 | if (size < (*na+*ns) * sizeof(u32)) | ||
55 | fatal("cannot get memory range\n"); | ||
56 | |||
57 | /* Only interested in memory based at 0 */ | ||
58 | for (i = 0; i < *na; i++) | ||
59 | if (*reg++ != 0) | ||
60 | fatal("Memory range is not based at address 0\n"); | ||
61 | |||
62 | /* get the memsize and trucate it to under 4G on 32 bit machines */ | ||
63 | memsize64 = 0; | ||
64 | for (i = 0; i < *ns; i++) | ||
65 | memsize64 = (memsize64 << 32) | *reg++; | ||
66 | if (sizeof(void *) == 4 && memsize64 >= 0x100000000ULL) | ||
67 | memsize64 = 0xffffffff; | ||
68 | |||
69 | /* finally, setup the timebase */ | ||
70 | node = fdt_node_offset_by_prop_value(_dtb_start, -1, "device_type", | ||
71 | "cpu", sizeof("cpu")); | ||
72 | if (!node) | ||
73 | fatal("Cannot find cpu node\n"); | ||
74 | timebase = fdt_getprop(_dtb_start, node, "timebase-frequency", &size); | ||
75 | if (timebase && (size == 4)) | ||
76 | timebase_period_ns = 1000000000 / *timebase; | ||
77 | |||
78 | /* Now we have the memory size; initialize the heap */ | ||
79 | simple_alloc_init(_end, memsize64 - (unsigned long)_end, 32, 64); | ||
80 | |||
81 | /* prepare the device tree and find the console */ | ||
82 | fdt_init(_dtb_start); | ||
83 | serial_console_init(); | ||
84 | } | ||
diff --git a/arch/powerpc/boot/treeboot-walnut.c b/arch/powerpc/boot/treeboot-walnut.c index 472e36605a52..097974e59fac 100644 --- a/arch/powerpc/boot/treeboot-walnut.c +++ b/arch/powerpc/boot/treeboot-walnut.c | |||
@@ -68,7 +68,7 @@ static void walnut_fixups(void) | |||
68 | ibm4xx_quiesce_eth((u32 *)0xef600800, NULL); | 68 | ibm4xx_quiesce_eth((u32 *)0xef600800, NULL); |
69 | ibm4xx_fixup_ebc_ranges("/plb/ebc"); | 69 | ibm4xx_fixup_ebc_ranges("/plb/ebc"); |
70 | walnut_flashsel_fixup(); | 70 | walnut_flashsel_fixup(); |
71 | dt_fixup_mac_addresses((u8 *) WALNUT_OPENBIOS_MAC_OFF); | 71 | dt_fixup_mac_address_by_alias("ethernet0", (u8 *) WALNUT_OPENBIOS_MAC_OFF); |
72 | } | 72 | } |
73 | 73 | ||
74 | void platform_init(void) | 74 | void platform_init(void) |
diff --git a/arch/powerpc/boot/virtex405-head.S b/arch/powerpc/boot/virtex405-head.S new file mode 100644 index 000000000000..3edb13f94669 --- /dev/null +++ b/arch/powerpc/boot/virtex405-head.S | |||
@@ -0,0 +1,30 @@ | |||
1 | #include "ppc_asm.h" | ||
2 | |||
3 | .text | ||
4 | .global _zimage_start | ||
5 | _zimage_start: | ||
6 | |||
7 | /* PPC errata 213: needed by Virtex-4 FX */ | ||
8 | mfccr0 0 | ||
9 | oris 0,0,0x50000000@h | ||
10 | mtccr0 0 | ||
11 | |||
12 | /* | ||
13 | * Invalidate the data cache if the data cache is turned off. | ||
14 | * - The 405 core does not invalidate the data cache on power-up | ||
15 | * or reset but does turn off the data cache. We cannot assume | ||
16 | * that the cache contents are valid. | ||
17 | * - If the data cache is turned on this must have been done by | ||
18 | * a bootloader and we assume that the cache contents are | ||
19 | * valid. | ||
20 | */ | ||
21 | mfdccr r9 | ||
22 | cmplwi r9,0 | ||
23 | bne 2f | ||
24 | lis r9,0 | ||
25 | li r8,256 | ||
26 | mtctr r8 | ||
27 | 1: dccci r0,r9 | ||
28 | addi r9,r9,0x20 | ||
29 | bdnz 1b | ||
30 | 2: b _zimage_start_lib | ||
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index 8f8b8494d62f..d6c96d9ab291 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
@@ -174,7 +174,7 @@ cuboot*) | |||
174 | *-mpc83*) | 174 | *-mpc83*) |
175 | platformo=$object/cuboot-83xx.o | 175 | platformo=$object/cuboot-83xx.o |
176 | ;; | 176 | ;; |
177 | *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555) | 177 | *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555|*-ksi8560*) |
178 | platformo=$object/cuboot-85xx-cpm2.o | 178 | platformo=$object/cuboot-85xx-cpm2.o |
179 | ;; | 179 | ;; |
180 | *-mpc85*|*-tqm8540|*-sbc85*) | 180 | *-mpc85*|*-tqm8540|*-sbc85*) |
@@ -199,6 +199,10 @@ adder875-redboot) | |||
199 | platformo="$object/fixed-head.o $object/redboot-8xx.o" | 199 | platformo="$object/fixed-head.o $object/redboot-8xx.o" |
200 | binary=y | 200 | binary=y |
201 | ;; | 201 | ;; |
202 | simpleboot-virtex405-*) | ||
203 | platformo="$object/virtex405-head.o $object/simpleboot.o" | ||
204 | binary=y | ||
205 | ;; | ||
202 | esac | 206 | esac |
203 | 207 | ||
204 | vmz="$tmpdir/`basename \"$kernel\"`.$ext" | 208 | vmz="$tmpdir/`basename \"$kernel\"`.$ext" |
@@ -226,10 +230,13 @@ if [ -n "$version" ]; then | |||
226 | uboot_version="-n Linux-$version" | 230 | uboot_version="-n Linux-$version" |
227 | fi | 231 | fi |
228 | 232 | ||
233 | # physical offset of kernel image | ||
234 | membase=`${CROSS}objdump -p "$kernel" | grep -m 1 LOAD | awk '{print $7}'` | ||
235 | |||
229 | case "$platform" in | 236 | case "$platform" in |
230 | uboot) | 237 | uboot) |
231 | rm -f "$ofile" | 238 | rm -f "$ofile" |
232 | mkimage -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 \ | 239 | mkimage -A ppc -O linux -T kernel -C gzip -a $membase -e $membase \ |
233 | $uboot_version -d "$vmz" "$ofile" | 240 | $uboot_version -d "$vmz" "$ofile" |
234 | if [ -z "$cacheit" ]; then | 241 | if [ -z "$cacheit" ]; then |
235 | rm -f "$vmz" | 242 | rm -f "$vmz" |
@@ -298,15 +305,16 @@ treeboot*) | |||
298 | exit 0 | 305 | exit 0 |
299 | ;; | 306 | ;; |
300 | ps3) | 307 | ps3) |
301 | # The ps3's loader supports loading gzipped binary images from flash | 308 | # The ps3's loader supports loading a gzipped binary image from flash |
302 | # rom to addr zero. The loader enters the image at addr 0x100. A | 309 | # rom to ram addr zero. The loader then enters the system reset |
303 | # bootwrapper overlay is use to arrange for the kernel to be loaded | 310 | # vector at addr 0x100. A bootwrapper overlay is used to arrange for |
304 | # to addr zero and to have a suitable bootwrapper entry at 0x100. | 311 | # a binary image of the kernel to be at addr zero, and yet have a |
305 | # To construct the rom image, 0x100 bytes from offset 0x100 in the | 312 | # suitable bootwrapper entry at 0x100. To construct the final rom |
306 | # kernel is copied to the bootwrapper symbol __system_reset_kernel. | 313 | # image 512 bytes from offset 0x100 is copied to the bootwrapper |
307 | # The 0x100 bytes at the bootwrapper symbol __system_reset_overlay is | 314 | # place holder at symbol __system_reset_kernel. The 512 bytes of the |
308 | # then copied to offset 0x100. At runtime the bootwrapper program | 315 | # bootwrapper entry code at symbol __system_reset_overlay is then |
309 | # copies the 0x100 bytes at __system_reset_kernel to addr 0x100. | 316 | # copied to offset 0x100. At runtime the bootwrapper program copies |
317 | # the data at __system_reset_kernel back to addr 0x100. | ||
310 | 318 | ||
311 | system_reset_overlay=0x`${CROSS}nm "$ofile" \ | 319 | system_reset_overlay=0x`${CROSS}nm "$ofile" \ |
312 | | grep ' __system_reset_overlay$' \ | 320 | | grep ' __system_reset_overlay$' \ |
@@ -317,7 +325,7 @@ ps3) | |||
317 | | cut -d' ' -f1` | 325 | | cut -d' ' -f1` |
318 | system_reset_kernel=`printf "%d" $system_reset_kernel` | 326 | system_reset_kernel=`printf "%d" $system_reset_kernel` |
319 | overlay_dest="256" | 327 | overlay_dest="256" |
320 | overlay_size="256" | 328 | overlay_size="512" |
321 | 329 | ||
322 | ${CROSS}objcopy -O binary "$ofile" "$ofile.bin" | 330 | ${CROSS}objcopy -O binary "$ofile" "$ofile.bin" |
323 | 331 | ||
diff --git a/arch/powerpc/configs/ep405_defconfig b/arch/powerpc/configs/40x/ep405_defconfig index e24240a9a047..e24240a9a047 100644 --- a/arch/powerpc/configs/ep405_defconfig +++ b/arch/powerpc/configs/40x/ep405_defconfig | |||
diff --git a/arch/powerpc/configs/kilauea_defconfig b/arch/powerpc/configs/40x/kilauea_defconfig index 2f475391f1d1..2f475391f1d1 100644 --- a/arch/powerpc/configs/kilauea_defconfig +++ b/arch/powerpc/configs/40x/kilauea_defconfig | |||
diff --git a/arch/powerpc/configs/makalu_defconfig b/arch/powerpc/configs/40x/makalu_defconfig index 9ef4d8a312c8..9ef4d8a312c8 100644 --- a/arch/powerpc/configs/makalu_defconfig +++ b/arch/powerpc/configs/40x/makalu_defconfig | |||
diff --git a/arch/powerpc/configs/walnut_defconfig b/arch/powerpc/configs/40x/walnut_defconfig index 3b2689e5002a..3b2689e5002a 100644 --- a/arch/powerpc/configs/walnut_defconfig +++ b/arch/powerpc/configs/40x/walnut_defconfig | |||
diff --git a/arch/powerpc/configs/bamboo_defconfig b/arch/powerpc/configs/44x/bamboo_defconfig index c44db554cdc6..c44db554cdc6 100644 --- a/arch/powerpc/configs/bamboo_defconfig +++ b/arch/powerpc/configs/44x/bamboo_defconfig | |||
diff --git a/arch/powerpc/configs/44x/canyonlands_defconfig b/arch/powerpc/configs/44x/canyonlands_defconfig new file mode 100644 index 000000000000..a3b763c45ec6 --- /dev/null +++ b/arch/powerpc/configs/44x/canyonlands_defconfig | |||
@@ -0,0 +1,721 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.25-rc1 | ||
4 | # Thu Feb 21 14:29:28 2008 | ||
5 | # | ||
6 | # CONFIG_PPC64 is not set | ||
7 | |||
8 | # | ||
9 | # Processor support | ||
10 | # | ||
11 | # CONFIG_6xx is not set | ||
12 | # CONFIG_PPC_85xx is not set | ||
13 | # CONFIG_PPC_8xx is not set | ||
14 | # CONFIG_40x is not set | ||
15 | CONFIG_44x=y | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_PPC_FPU=y | ||
18 | CONFIG_4xx=y | ||
19 | CONFIG_BOOKE=y | ||
20 | CONFIG_PTE_64BIT=y | ||
21 | CONFIG_PHYS_64BIT=y | ||
22 | # CONFIG_PPC_MM_SLICES is not set | ||
23 | CONFIG_NOT_COHERENT_CACHE=y | ||
24 | CONFIG_PPC32=y | ||
25 | CONFIG_WORD_SIZE=32 | ||
26 | CONFIG_PPC_MERGE=y | ||
27 | CONFIG_MMU=y | ||
28 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
29 | CONFIG_GENERIC_TIME=y | ||
30 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
31 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
32 | CONFIG_GENERIC_HARDIRQS=y | ||
33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
34 | CONFIG_IRQ_PER_CPU=y | ||
35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
36 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
37 | CONFIG_GENERIC_HWEIGHT=y | ||
38 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
39 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
40 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
41 | CONFIG_PPC=y | ||
42 | CONFIG_EARLY_PRINTK=y | ||
43 | CONFIG_GENERIC_NVRAM=y | ||
44 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
45 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
46 | CONFIG_PPC_OF=y | ||
47 | CONFIG_OF=y | ||
48 | CONFIG_PPC_UDBG_16550=y | ||
49 | # CONFIG_GENERIC_TBSYNC is not set | ||
50 | CONFIG_AUDIT_ARCH=y | ||
51 | CONFIG_GENERIC_BUG=y | ||
52 | # CONFIG_DEFAULT_UIMAGE is not set | ||
53 | CONFIG_PPC_DCR_NATIVE=y | ||
54 | # CONFIG_PPC_DCR_MMIO is not set | ||
55 | CONFIG_PPC_DCR=y | ||
56 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
57 | |||
58 | # | ||
59 | # General setup | ||
60 | # | ||
61 | CONFIG_EXPERIMENTAL=y | ||
62 | CONFIG_BROKEN_ON_SMP=y | ||
63 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
64 | CONFIG_LOCALVERSION="" | ||
65 | CONFIG_LOCALVERSION_AUTO=y | ||
66 | CONFIG_SWAP=y | ||
67 | CONFIG_SYSVIPC=y | ||
68 | CONFIG_SYSVIPC_SYSCTL=y | ||
69 | CONFIG_POSIX_MQUEUE=y | ||
70 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
71 | # CONFIG_TASKSTATS is not set | ||
72 | # CONFIG_AUDIT is not set | ||
73 | # CONFIG_IKCONFIG is not set | ||
74 | CONFIG_LOG_BUF_SHIFT=14 | ||
75 | # CONFIG_CGROUPS is not set | ||
76 | # CONFIG_FAIR_GROUP_SCHED is not set | ||
77 | CONFIG_SYSFS_DEPRECATED=y | ||
78 | # CONFIG_RELAY is not set | ||
79 | # CONFIG_NAMESPACES is not set | ||
80 | CONFIG_BLK_DEV_INITRD=y | ||
81 | CONFIG_INITRAMFS_SOURCE="" | ||
82 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
83 | CONFIG_SYSCTL=y | ||
84 | CONFIG_EMBEDDED=y | ||
85 | CONFIG_SYSCTL_SYSCALL=y | ||
86 | CONFIG_KALLSYMS=y | ||
87 | # CONFIG_KALLSYMS_ALL is not set | ||
88 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
89 | CONFIG_HOTPLUG=y | ||
90 | CONFIG_PRINTK=y | ||
91 | # CONFIG_LOGBUFFER is not set | ||
92 | CONFIG_BUG=y | ||
93 | CONFIG_ELF_CORE=y | ||
94 | CONFIG_COMPAT_BRK=y | ||
95 | CONFIG_BASE_FULL=y | ||
96 | CONFIG_FUTEX=y | ||
97 | CONFIG_ANON_INODES=y | ||
98 | CONFIG_EPOLL=y | ||
99 | CONFIG_SIGNALFD=y | ||
100 | CONFIG_TIMERFD=y | ||
101 | CONFIG_EVENTFD=y | ||
102 | CONFIG_SHMEM=y | ||
103 | CONFIG_VM_EVENT_COUNTERS=y | ||
104 | CONFIG_SLUB_DEBUG=y | ||
105 | # CONFIG_SLAB is not set | ||
106 | CONFIG_SLUB=y | ||
107 | # CONFIG_SLOB is not set | ||
108 | # CONFIG_PROFILING is not set | ||
109 | # CONFIG_MARKERS is not set | ||
110 | CONFIG_HAVE_OPROFILE=y | ||
111 | # CONFIG_KPROBES is not set | ||
112 | CONFIG_HAVE_KPROBES=y | ||
113 | CONFIG_PROC_PAGE_MONITOR=y | ||
114 | CONFIG_SLABINFO=y | ||
115 | CONFIG_RT_MUTEXES=y | ||
116 | # CONFIG_TINY_SHMEM is not set | ||
117 | CONFIG_BASE_SMALL=0 | ||
118 | CONFIG_MODULES=y | ||
119 | CONFIG_MODULE_UNLOAD=y | ||
120 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
121 | # CONFIG_MODVERSIONS is not set | ||
122 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
123 | CONFIG_KMOD=y | ||
124 | CONFIG_BLOCK=y | ||
125 | CONFIG_LBD=y | ||
126 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
127 | # CONFIG_LSF is not set | ||
128 | # CONFIG_BLK_DEV_BSG is not set | ||
129 | |||
130 | # | ||
131 | # IO Schedulers | ||
132 | # | ||
133 | CONFIG_IOSCHED_NOOP=y | ||
134 | CONFIG_IOSCHED_AS=y | ||
135 | CONFIG_IOSCHED_DEADLINE=y | ||
136 | CONFIG_IOSCHED_CFQ=y | ||
137 | CONFIG_DEFAULT_AS=y | ||
138 | # CONFIG_DEFAULT_DEADLINE is not set | ||
139 | # CONFIG_DEFAULT_CFQ is not set | ||
140 | # CONFIG_DEFAULT_NOOP is not set | ||
141 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
142 | CONFIG_CLASSIC_RCU=y | ||
143 | # CONFIG_PREEMPT_RCU is not set | ||
144 | CONFIG_PPC4xx_PCI_EXPRESS=y | ||
145 | |||
146 | # | ||
147 | # Platform support | ||
148 | # | ||
149 | # CONFIG_PPC_MPC512x is not set | ||
150 | # CONFIG_PPC_MPC5121 is not set | ||
151 | # CONFIG_PPC_CELL is not set | ||
152 | # CONFIG_PPC_CELL_NATIVE is not set | ||
153 | # CONFIG_PQ2ADS is not set | ||
154 | # CONFIG_BAMBOO is not set | ||
155 | # CONFIG_EBONY is not set | ||
156 | # CONFIG_SEQUOIA is not set | ||
157 | # CONFIG_TAISHAN is not set | ||
158 | # CONFIG_KATMAI is not set | ||
159 | # CONFIG_RAINIER is not set | ||
160 | # CONFIG_WARP is not set | ||
161 | CONFIG_CANYONLANDS=y | ||
162 | CONFIG_460EX=y | ||
163 | # CONFIG_IPIC is not set | ||
164 | # CONFIG_MPIC is not set | ||
165 | # CONFIG_MPIC_WEIRD is not set | ||
166 | # CONFIG_PPC_I8259 is not set | ||
167 | # CONFIG_PPC_RTAS is not set | ||
168 | # CONFIG_MMIO_NVRAM is not set | ||
169 | # CONFIG_PPC_MPC106 is not set | ||
170 | # CONFIG_PPC_970_NAP is not set | ||
171 | # CONFIG_PPC_INDIRECT_IO is not set | ||
172 | # CONFIG_GENERIC_IOMAP is not set | ||
173 | # CONFIG_CPU_FREQ is not set | ||
174 | # CONFIG_FSL_ULI1575 is not set | ||
175 | |||
176 | # | ||
177 | # Kernel options | ||
178 | # | ||
179 | # CONFIG_HIGHMEM is not set | ||
180 | CONFIG_TICK_ONESHOT=y | ||
181 | CONFIG_NO_HZ=y | ||
182 | CONFIG_HIGH_RES_TIMERS=y | ||
183 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
184 | # CONFIG_HZ_100 is not set | ||
185 | CONFIG_HZ_250=y | ||
186 | # CONFIG_HZ_300 is not set | ||
187 | # CONFIG_HZ_1000 is not set | ||
188 | CONFIG_HZ=250 | ||
189 | # CONFIG_SCHED_HRTICK is not set | ||
190 | CONFIG_PREEMPT_NONE=y | ||
191 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
192 | # CONFIG_PREEMPT is not set | ||
193 | CONFIG_RCU_TRACE=y | ||
194 | CONFIG_BINFMT_ELF=y | ||
195 | # CONFIG_BINFMT_MISC is not set | ||
196 | # CONFIG_MATH_EMULATION is not set | ||
197 | # CONFIG_IOMMU_HELPER is not set | ||
198 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
199 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
200 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
201 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
202 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
203 | CONFIG_SELECT_MEMORY_MODEL=y | ||
204 | CONFIG_FLATMEM_MANUAL=y | ||
205 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
206 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
207 | CONFIG_FLATMEM=y | ||
208 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
209 | # CONFIG_SPARSEMEM_STATIC is not set | ||
210 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
211 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
212 | CONFIG_RESOURCES_64BIT=y | ||
213 | CONFIG_ZONE_DMA_FLAG=1 | ||
214 | CONFIG_BOUNCE=y | ||
215 | CONFIG_VIRT_TO_BUS=y | ||
216 | CONFIG_PROC_DEVICETREE=y | ||
217 | CONFIG_CMDLINE_BOOL=y | ||
218 | CONFIG_CMDLINE="" | ||
219 | CONFIG_SECCOMP=y | ||
220 | CONFIG_WANT_DEVICE_TREE=y | ||
221 | CONFIG_ISA_DMA_API=y | ||
222 | |||
223 | # | ||
224 | # Bus options | ||
225 | # | ||
226 | CONFIG_ZONE_DMA=y | ||
227 | CONFIG_PPC_INDIRECT_PCI=y | ||
228 | CONFIG_PCI=y | ||
229 | CONFIG_PCI_DOMAINS=y | ||
230 | CONFIG_PCI_SYSCALL=y | ||
231 | # CONFIG_PCIEPORTBUS is not set | ||
232 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
233 | # CONFIG_PCI_MSI is not set | ||
234 | CONFIG_PCI_LEGACY=y | ||
235 | # CONFIG_PCI_DEBUG is not set | ||
236 | # CONFIG_PCCARD is not set | ||
237 | # CONFIG_HOTPLUG_PCI is not set | ||
238 | |||
239 | # | ||
240 | # Advanced setup | ||
241 | # | ||
242 | # CONFIG_ADVANCED_OPTIONS is not set | ||
243 | |||
244 | # | ||
245 | # Default settings for advanced configuration options are used | ||
246 | # | ||
247 | CONFIG_HIGHMEM_START=0xfe000000 | ||
248 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
249 | CONFIG_KERNEL_START=0xc0000000 | ||
250 | CONFIG_TASK_SIZE=0xc0000000 | ||
251 | CONFIG_CONSISTENT_START=0xff100000 | ||
252 | CONFIG_CONSISTENT_SIZE=0x00200000 | ||
253 | CONFIG_BOOT_LOAD=0x01000000 | ||
254 | |||
255 | # | ||
256 | # Networking | ||
257 | # | ||
258 | CONFIG_NET=y | ||
259 | |||
260 | # | ||
261 | # Networking options | ||
262 | # | ||
263 | CONFIG_PACKET=y | ||
264 | # CONFIG_PACKET_MMAP is not set | ||
265 | CONFIG_UNIX=y | ||
266 | # CONFIG_NET_KEY is not set | ||
267 | CONFIG_INET=y | ||
268 | # CONFIG_IP_MULTICAST is not set | ||
269 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
270 | CONFIG_IP_FIB_HASH=y | ||
271 | CONFIG_IP_PNP=y | ||
272 | CONFIG_IP_PNP_DHCP=y | ||
273 | CONFIG_IP_PNP_BOOTP=y | ||
274 | # CONFIG_IP_PNP_RARP is not set | ||
275 | # CONFIG_NET_IPIP is not set | ||
276 | # CONFIG_NET_IPGRE is not set | ||
277 | # CONFIG_ARPD is not set | ||
278 | # CONFIG_SYN_COOKIES is not set | ||
279 | # CONFIG_INET_AH is not set | ||
280 | # CONFIG_INET_ESP is not set | ||
281 | # CONFIG_INET_IPCOMP is not set | ||
282 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
283 | # CONFIG_INET_TUNNEL is not set | ||
284 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
285 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
286 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
287 | # CONFIG_INET_LRO is not set | ||
288 | CONFIG_INET_DIAG=y | ||
289 | CONFIG_INET_TCP_DIAG=y | ||
290 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
291 | CONFIG_TCP_CONG_CUBIC=y | ||
292 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
293 | # CONFIG_TCP_MD5SIG is not set | ||
294 | # CONFIG_IPV6 is not set | ||
295 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
296 | # CONFIG_INET6_TUNNEL is not set | ||
297 | # CONFIG_NETWORK_SECMARK is not set | ||
298 | # CONFIG_NETFILTER is not set | ||
299 | # CONFIG_IP_DCCP is not set | ||
300 | # CONFIG_IP_SCTP is not set | ||
301 | # CONFIG_TIPC is not set | ||
302 | # CONFIG_ATM is not set | ||
303 | # CONFIG_BRIDGE is not set | ||
304 | # CONFIG_VLAN_8021Q is not set | ||
305 | # CONFIG_DECNET is not set | ||
306 | # CONFIG_LLC2 is not set | ||
307 | # CONFIG_IPX is not set | ||
308 | # CONFIG_ATALK is not set | ||
309 | # CONFIG_X25 is not set | ||
310 | # CONFIG_LAPB is not set | ||
311 | # CONFIG_ECONET is not set | ||
312 | # CONFIG_WAN_ROUTER is not set | ||
313 | # CONFIG_NET_SCHED is not set | ||
314 | |||
315 | # | ||
316 | # Network testing | ||
317 | # | ||
318 | # CONFIG_NET_PKTGEN is not set | ||
319 | # CONFIG_HAMRADIO is not set | ||
320 | # CONFIG_CAN is not set | ||
321 | # CONFIG_IRDA is not set | ||
322 | # CONFIG_BT is not set | ||
323 | # CONFIG_AF_RXRPC is not set | ||
324 | |||
325 | # | ||
326 | # Wireless | ||
327 | # | ||
328 | # CONFIG_CFG80211 is not set | ||
329 | # CONFIG_WIRELESS_EXT is not set | ||
330 | # CONFIG_MAC80211 is not set | ||
331 | # CONFIG_IEEE80211 is not set | ||
332 | # CONFIG_RFKILL is not set | ||
333 | # CONFIG_NET_9P is not set | ||
334 | |||
335 | # | ||
336 | # Device Drivers | ||
337 | # | ||
338 | |||
339 | # | ||
340 | # Generic Driver Options | ||
341 | # | ||
342 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
343 | CONFIG_STANDALONE=y | ||
344 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
345 | CONFIG_FW_LOADER=y | ||
346 | # CONFIG_DEBUG_DRIVER is not set | ||
347 | # CONFIG_DEBUG_DEVRES is not set | ||
348 | # CONFIG_SYS_HYPERVISOR is not set | ||
349 | CONFIG_CONNECTOR=y | ||
350 | CONFIG_PROC_EVENTS=y | ||
351 | # CONFIG_MTD is not set | ||
352 | CONFIG_OF_DEVICE=y | ||
353 | # CONFIG_PARPORT is not set | ||
354 | CONFIG_BLK_DEV=y | ||
355 | # CONFIG_BLK_DEV_FD is not set | ||
356 | # CONFIG_BLK_CPQ_DA is not set | ||
357 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
358 | # CONFIG_BLK_DEV_DAC960 is not set | ||
359 | # CONFIG_BLK_DEV_UMEM is not set | ||
360 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
361 | # CONFIG_BLK_DEV_LOOP is not set | ||
362 | # CONFIG_BLK_DEV_NBD is not set | ||
363 | # CONFIG_BLK_DEV_SX8 is not set | ||
364 | CONFIG_BLK_DEV_RAM=y | ||
365 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
366 | CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
367 | # CONFIG_BLK_DEV_XIP is not set | ||
368 | # CONFIG_CDROM_PKTCDVD is not set | ||
369 | # CONFIG_ATA_OVER_ETH is not set | ||
370 | # CONFIG_XILINX_SYSACE is not set | ||
371 | # CONFIG_MISC_DEVICES is not set | ||
372 | CONFIG_HAVE_IDE=y | ||
373 | # CONFIG_IDE is not set | ||
374 | |||
375 | # | ||
376 | # SCSI device support | ||
377 | # | ||
378 | # CONFIG_RAID_ATTRS is not set | ||
379 | # CONFIG_SCSI is not set | ||
380 | # CONFIG_SCSI_DMA is not set | ||
381 | # CONFIG_SCSI_NETLINK is not set | ||
382 | # CONFIG_ATA is not set | ||
383 | # CONFIG_MD is not set | ||
384 | # CONFIG_FUSION is not set | ||
385 | |||
386 | # | ||
387 | # IEEE 1394 (FireWire) support | ||
388 | # | ||
389 | # CONFIG_FIREWIRE is not set | ||
390 | # CONFIG_IEEE1394 is not set | ||
391 | # CONFIG_I2O is not set | ||
392 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
393 | CONFIG_NETDEVICES=y | ||
394 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
395 | # CONFIG_DUMMY is not set | ||
396 | # CONFIG_BONDING is not set | ||
397 | # CONFIG_MACVLAN is not set | ||
398 | # CONFIG_EQUALIZER is not set | ||
399 | # CONFIG_TUN is not set | ||
400 | # CONFIG_VETH is not set | ||
401 | # CONFIG_ARCNET is not set | ||
402 | # CONFIG_PHYLIB is not set | ||
403 | CONFIG_NET_ETHERNET=y | ||
404 | # CONFIG_MII is not set | ||
405 | # CONFIG_HAPPYMEAL is not set | ||
406 | # CONFIG_SUNGEM is not set | ||
407 | # CONFIG_CASSINI is not set | ||
408 | # CONFIG_NET_VENDOR_3COM is not set | ||
409 | # CONFIG_NET_TULIP is not set | ||
410 | # CONFIG_HP100 is not set | ||
411 | CONFIG_IBM_NEW_EMAC=y | ||
412 | CONFIG_IBM_NEW_EMAC_RXB=256 | ||
413 | CONFIG_IBM_NEW_EMAC_TXB=256 | ||
414 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
415 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
416 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
417 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
418 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
419 | CONFIG_IBM_NEW_EMAC_RGMII=y | ||
420 | CONFIG_IBM_NEW_EMAC_TAH=y | ||
421 | CONFIG_IBM_NEW_EMAC_EMAC4=y | ||
422 | # CONFIG_NET_PCI is not set | ||
423 | # CONFIG_B44 is not set | ||
424 | # CONFIG_NETDEV_1000 is not set | ||
425 | # CONFIG_NETDEV_10000 is not set | ||
426 | # CONFIG_TR is not set | ||
427 | |||
428 | # | ||
429 | # Wireless LAN | ||
430 | # | ||
431 | # CONFIG_WLAN_PRE80211 is not set | ||
432 | # CONFIG_WLAN_80211 is not set | ||
433 | # CONFIG_WAN is not set | ||
434 | # CONFIG_FDDI is not set | ||
435 | # CONFIG_HIPPI is not set | ||
436 | # CONFIG_PPP is not set | ||
437 | # CONFIG_SLIP is not set | ||
438 | # CONFIG_NETCONSOLE is not set | ||
439 | # CONFIG_NETPOLL is not set | ||
440 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
441 | # CONFIG_ISDN is not set | ||
442 | # CONFIG_PHONE is not set | ||
443 | |||
444 | # | ||
445 | # Input device support | ||
446 | # | ||
447 | # CONFIG_INPUT is not set | ||
448 | |||
449 | # | ||
450 | # Hardware I/O ports | ||
451 | # | ||
452 | # CONFIG_SERIO is not set | ||
453 | # CONFIG_GAMEPORT is not set | ||
454 | |||
455 | # | ||
456 | # Character devices | ||
457 | # | ||
458 | # CONFIG_VT is not set | ||
459 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
460 | # CONFIG_NOZOMI is not set | ||
461 | |||
462 | # | ||
463 | # Serial drivers | ||
464 | # | ||
465 | CONFIG_SERIAL_8250=y | ||
466 | CONFIG_SERIAL_8250_CONSOLE=y | ||
467 | # CONFIG_SERIAL_8250_PCI is not set | ||
468 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
469 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
470 | CONFIG_SERIAL_8250_EXTENDED=y | ||
471 | # CONFIG_SERIAL_8250_MANY_PORTS is not set | ||
472 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
473 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
474 | # CONFIG_SERIAL_8250_RSA is not set | ||
475 | |||
476 | # | ||
477 | # Non-8250 serial port support | ||
478 | # | ||
479 | # CONFIG_SERIAL_UARTLITE is not set | ||
480 | CONFIG_SERIAL_CORE=y | ||
481 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
482 | # CONFIG_SERIAL_JSM is not set | ||
483 | CONFIG_SERIAL_OF_PLATFORM=y | ||
484 | CONFIG_UNIX98_PTYS=y | ||
485 | CONFIG_LEGACY_PTYS=y | ||
486 | CONFIG_LEGACY_PTY_COUNT=256 | ||
487 | # CONFIG_IPMI_HANDLER is not set | ||
488 | # CONFIG_HW_RANDOM is not set | ||
489 | # CONFIG_NVRAM is not set | ||
490 | # CONFIG_GEN_RTC is not set | ||
491 | # CONFIG_R3964 is not set | ||
492 | # CONFIG_APPLICOM is not set | ||
493 | # CONFIG_RAW_DRIVER is not set | ||
494 | # CONFIG_TCG_TPM is not set | ||
495 | CONFIG_DEVPORT=y | ||
496 | # CONFIG_I2C is not set | ||
497 | |||
498 | # | ||
499 | # SPI support | ||
500 | # | ||
501 | # CONFIG_SPI is not set | ||
502 | # CONFIG_SPI_MASTER is not set | ||
503 | # CONFIG_W1 is not set | ||
504 | # CONFIG_POWER_SUPPLY is not set | ||
505 | # CONFIG_HWMON is not set | ||
506 | # CONFIG_THERMAL is not set | ||
507 | # CONFIG_WATCHDOG is not set | ||
508 | |||
509 | # | ||
510 | # Sonics Silicon Backplane | ||
511 | # | ||
512 | CONFIG_SSB_POSSIBLE=y | ||
513 | # CONFIG_SSB is not set | ||
514 | |||
515 | # | ||
516 | # Multifunction device drivers | ||
517 | # | ||
518 | # CONFIG_MFD_SM501 is not set | ||
519 | |||
520 | # | ||
521 | # Multimedia devices | ||
522 | # | ||
523 | # CONFIG_VIDEO_DEV is not set | ||
524 | # CONFIG_DVB_CORE is not set | ||
525 | CONFIG_DAB=y | ||
526 | |||
527 | # | ||
528 | # Graphics support | ||
529 | # | ||
530 | # CONFIG_AGP is not set | ||
531 | # CONFIG_DRM is not set | ||
532 | # CONFIG_VGASTATE is not set | ||
533 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
534 | # CONFIG_FB is not set | ||
535 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
536 | |||
537 | # | ||
538 | # Display device support | ||
539 | # | ||
540 | # CONFIG_DISPLAY_SUPPORT is not set | ||
541 | |||
542 | # | ||
543 | # Sound | ||
544 | # | ||
545 | # CONFIG_SOUND is not set | ||
546 | # CONFIG_USB_SUPPORT is not set | ||
547 | # CONFIG_MMC is not set | ||
548 | # CONFIG_MEMSTICK is not set | ||
549 | # CONFIG_NEW_LEDS is not set | ||
550 | # CONFIG_INFINIBAND is not set | ||
551 | # CONFIG_EDAC is not set | ||
552 | # CONFIG_RTC_CLASS is not set | ||
553 | |||
554 | # | ||
555 | # Userspace I/O | ||
556 | # | ||
557 | # CONFIG_UIO is not set | ||
558 | |||
559 | # | ||
560 | # File systems | ||
561 | # | ||
562 | CONFIG_EXT2_FS=y | ||
563 | # CONFIG_EXT2_FS_XATTR is not set | ||
564 | # CONFIG_EXT2_FS_XIP is not set | ||
565 | # CONFIG_EXT3_FS is not set | ||
566 | # CONFIG_EXT4DEV_FS is not set | ||
567 | # CONFIG_REISERFS_FS is not set | ||
568 | # CONFIG_JFS_FS is not set | ||
569 | # CONFIG_FS_POSIX_ACL is not set | ||
570 | # CONFIG_XFS_FS is not set | ||
571 | # CONFIG_GFS2_FS is not set | ||
572 | # CONFIG_OCFS2_FS is not set | ||
573 | CONFIG_DNOTIFY=y | ||
574 | CONFIG_INOTIFY=y | ||
575 | CONFIG_INOTIFY_USER=y | ||
576 | # CONFIG_QUOTA is not set | ||
577 | # CONFIG_AUTOFS_FS is not set | ||
578 | # CONFIG_AUTOFS4_FS is not set | ||
579 | # CONFIG_FUSE_FS is not set | ||
580 | |||
581 | # | ||
582 | # CD-ROM/DVD Filesystems | ||
583 | # | ||
584 | # CONFIG_ISO9660_FS is not set | ||
585 | # CONFIG_UDF_FS is not set | ||
586 | |||
587 | # | ||
588 | # DOS/FAT/NT Filesystems | ||
589 | # | ||
590 | # CONFIG_MSDOS_FS is not set | ||
591 | # CONFIG_VFAT_FS is not set | ||
592 | # CONFIG_NTFS_FS is not set | ||
593 | |||
594 | # | ||
595 | # Pseudo filesystems | ||
596 | # | ||
597 | CONFIG_PROC_FS=y | ||
598 | CONFIG_PROC_KCORE=y | ||
599 | CONFIG_PROC_SYSCTL=y | ||
600 | CONFIG_SYSFS=y | ||
601 | CONFIG_TMPFS=y | ||
602 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
603 | # CONFIG_HUGETLB_PAGE is not set | ||
604 | # CONFIG_CONFIGFS_FS is not set | ||
605 | |||
606 | # | ||
607 | # Miscellaneous filesystems | ||
608 | # | ||
609 | # CONFIG_ADFS_FS is not set | ||
610 | # CONFIG_AFFS_FS is not set | ||
611 | # CONFIG_HFS_FS is not set | ||
612 | # CONFIG_HFSPLUS_FS is not set | ||
613 | # CONFIG_BEFS_FS is not set | ||
614 | # CONFIG_BFS_FS is not set | ||
615 | # CONFIG_EFS_FS is not set | ||
616 | CONFIG_CRAMFS=y | ||
617 | # CONFIG_VXFS_FS is not set | ||
618 | # CONFIG_MINIX_FS is not set | ||
619 | # CONFIG_HPFS_FS is not set | ||
620 | # CONFIG_QNX4FS_FS is not set | ||
621 | # CONFIG_ROMFS_FS is not set | ||
622 | # CONFIG_SYSV_FS is not set | ||
623 | # CONFIG_UFS_FS is not set | ||
624 | CONFIG_NETWORK_FILESYSTEMS=y | ||
625 | CONFIG_NFS_FS=y | ||
626 | CONFIG_NFS_V3=y | ||
627 | # CONFIG_NFS_V3_ACL is not set | ||
628 | # CONFIG_NFS_V4 is not set | ||
629 | # CONFIG_NFS_DIRECTIO is not set | ||
630 | # CONFIG_NFSD is not set | ||
631 | CONFIG_ROOT_NFS=y | ||
632 | CONFIG_LOCKD=y | ||
633 | CONFIG_LOCKD_V4=y | ||
634 | CONFIG_NFS_COMMON=y | ||
635 | CONFIG_SUNRPC=y | ||
636 | # CONFIG_SUNRPC_BIND34 is not set | ||
637 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
638 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
639 | # CONFIG_SMB_FS is not set | ||
640 | # CONFIG_CIFS is not set | ||
641 | # CONFIG_NCP_FS is not set | ||
642 | # CONFIG_CODA_FS is not set | ||
643 | # CONFIG_AFS_FS is not set | ||
644 | |||
645 | # | ||
646 | # Partition Types | ||
647 | # | ||
648 | # CONFIG_PARTITION_ADVANCED is not set | ||
649 | CONFIG_MSDOS_PARTITION=y | ||
650 | # CONFIG_NLS is not set | ||
651 | # CONFIG_DLM is not set | ||
652 | |||
653 | # | ||
654 | # Library routines | ||
655 | # | ||
656 | CONFIG_BITREVERSE=y | ||
657 | # CONFIG_CRC_CCITT is not set | ||
658 | # CONFIG_CRC16 is not set | ||
659 | # CONFIG_CRC_ITU_T is not set | ||
660 | CONFIG_CRC32=y | ||
661 | # CONFIG_CRC7 is not set | ||
662 | # CONFIG_LIBCRC32C is not set | ||
663 | CONFIG_ZLIB_INFLATE=y | ||
664 | CONFIG_PLIST=y | ||
665 | CONFIG_HAS_IOMEM=y | ||
666 | CONFIG_HAS_IOPORT=y | ||
667 | CONFIG_HAS_DMA=y | ||
668 | |||
669 | # | ||
670 | # Kernel hacking | ||
671 | # | ||
672 | # CONFIG_PRINTK_TIME is not set | ||
673 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
674 | CONFIG_ENABLE_MUST_CHECK=y | ||
675 | CONFIG_MAGIC_SYSRQ=y | ||
676 | # CONFIG_UNUSED_SYMBOLS is not set | ||
677 | CONFIG_DEBUG_FS=y | ||
678 | # CONFIG_HEADERS_CHECK is not set | ||
679 | CONFIG_DEBUG_KERNEL=y | ||
680 | # CONFIG_DEBUG_SHIRQ is not set | ||
681 | CONFIG_DETECT_SOFTLOCKUP=y | ||
682 | CONFIG_SCHED_DEBUG=y | ||
683 | # CONFIG_SCHEDSTATS is not set | ||
684 | # CONFIG_TIMER_STATS is not set | ||
685 | # CONFIG_SLUB_DEBUG_ON is not set | ||
686 | # CONFIG_SLUB_STATS is not set | ||
687 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
688 | # CONFIG_RT_MUTEX_TESTER is not set | ||
689 | # CONFIG_DEBUG_SPINLOCK is not set | ||
690 | # CONFIG_DEBUG_MUTEXES is not set | ||
691 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
692 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
693 | # CONFIG_DEBUG_KOBJECT is not set | ||
694 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
695 | # CONFIG_DEBUG_INFO is not set | ||
696 | # CONFIG_DEBUG_VM is not set | ||
697 | # CONFIG_DEBUG_LIST is not set | ||
698 | # CONFIG_DEBUG_SG is not set | ||
699 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
700 | # CONFIG_RCU_TORTURE_TEST is not set | ||
701 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
702 | # CONFIG_FAULT_INJECTION is not set | ||
703 | # CONFIG_SAMPLES is not set | ||
704 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
705 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
706 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
707 | CONFIG_DEBUGGER=y | ||
708 | # CONFIG_KGDB is not set | ||
709 | # CONFIG_XMON is not set | ||
710 | # CONFIG_VIRQ_DEBUG is not set | ||
711 | # CONFIG_BDI_SWITCH is not set | ||
712 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
713 | |||
714 | # | ||
715 | # Security options | ||
716 | # | ||
717 | # CONFIG_KEYS is not set | ||
718 | # CONFIG_SECURITY is not set | ||
719 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
720 | # CONFIG_CRYPTO is not set | ||
721 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/configs/ebony_defconfig b/arch/powerpc/configs/44x/ebony_defconfig index 07c8d4ce175a..07c8d4ce175a 100644 --- a/arch/powerpc/configs/ebony_defconfig +++ b/arch/powerpc/configs/44x/ebony_defconfig | |||
diff --git a/arch/powerpc/configs/katmai_defconfig b/arch/powerpc/configs/44x/katmai_defconfig index c8804ec01ea4..c8804ec01ea4 100644 --- a/arch/powerpc/configs/katmai_defconfig +++ b/arch/powerpc/configs/44x/katmai_defconfig | |||
diff --git a/arch/powerpc/configs/rainier_defconfig b/arch/powerpc/configs/44x/rainier_defconfig index dec18ca73519..dec18ca73519 100644 --- a/arch/powerpc/configs/rainier_defconfig +++ b/arch/powerpc/configs/44x/rainier_defconfig | |||
diff --git a/arch/powerpc/configs/sequoia_defconfig b/arch/powerpc/configs/44x/sequoia_defconfig index dd5d6303c396..dd5d6303c396 100644 --- a/arch/powerpc/configs/sequoia_defconfig +++ b/arch/powerpc/configs/44x/sequoia_defconfig | |||
diff --git a/arch/powerpc/configs/taishan_defconfig b/arch/powerpc/configs/44x/taishan_defconfig index 087aedce1338..087aedce1338 100644 --- a/arch/powerpc/configs/taishan_defconfig +++ b/arch/powerpc/configs/44x/taishan_defconfig | |||
diff --git a/arch/powerpc/configs/warp_defconfig b/arch/powerpc/configs/44x/warp_defconfig index 2313c3e8ef61..2313c3e8ef61 100644 --- a/arch/powerpc/configs/warp_defconfig +++ b/arch/powerpc/configs/44x/warp_defconfig | |||
diff --git a/arch/powerpc/configs/mpc8313_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig index 7a862a6e3be8..7d18440e398f 100644 --- a/arch/powerpc/configs/mpc8313_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Mon Mar 24 08:48:14 2008 | 4 | # Fri Apr 11 11:10:09 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -196,6 +196,7 @@ CONFIG_PREEMPT_NONE=y | |||
196 | # CONFIG_PREEMPT is not set | 196 | # CONFIG_PREEMPT is not set |
197 | CONFIG_BINFMT_ELF=y | 197 | CONFIG_BINFMT_ELF=y |
198 | # CONFIG_BINFMT_MISC is not set | 198 | # CONFIG_BINFMT_MISC is not set |
199 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
199 | # CONFIG_IOMMU_HELPER is not set | 200 | # CONFIG_IOMMU_HELPER is not set |
200 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 201 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
201 | CONFIG_ARCH_HAS_WALK_MEMORY=y | 202 | CONFIG_ARCH_HAS_WALK_MEMORY=y |
@@ -360,7 +361,7 @@ CONFIG_MTD=y | |||
360 | CONFIG_MTD_PARTITIONS=y | 361 | CONFIG_MTD_PARTITIONS=y |
361 | # CONFIG_MTD_REDBOOT_PARTS is not set | 362 | # CONFIG_MTD_REDBOOT_PARTS is not set |
362 | # CONFIG_MTD_CMDLINE_PARTS is not set | 363 | # CONFIG_MTD_CMDLINE_PARTS is not set |
363 | # CONFIG_MTD_OF_PARTS is not set | 364 | CONFIG_MTD_OF_PARTS=y |
364 | 365 | ||
365 | # | 366 | # |
366 | # User Modules And Translation Layers | 367 | # User Modules And Translation Layers |
@@ -436,7 +437,7 @@ CONFIG_MTD_NAND_IDS=y | |||
436 | # CONFIG_MTD_NAND_NANDSIM is not set | 437 | # CONFIG_MTD_NAND_NANDSIM is not set |
437 | # CONFIG_MTD_NAND_PLATFORM is not set | 438 | # CONFIG_MTD_NAND_PLATFORM is not set |
438 | # CONFIG_MTD_ALAUDA is not set | 439 | # CONFIG_MTD_ALAUDA is not set |
439 | # CONFIG_MTD_NAND_FSL_ELBC is not set | 440 | CONFIG_MTD_NAND_FSL_ELBC=y |
440 | # CONFIG_MTD_ONENAND is not set | 441 | # CONFIG_MTD_ONENAND is not set |
441 | 442 | ||
442 | # | 443 | # |
@@ -1293,6 +1294,7 @@ CONFIG_PLIST=y | |||
1293 | CONFIG_HAS_IOMEM=y | 1294 | CONFIG_HAS_IOMEM=y |
1294 | CONFIG_HAS_IOPORT=y | 1295 | CONFIG_HAS_IOPORT=y |
1295 | CONFIG_HAS_DMA=y | 1296 | CONFIG_HAS_DMA=y |
1297 | CONFIG_HAVE_LMB=y | ||
1296 | 1298 | ||
1297 | # | 1299 | # |
1298 | # Kernel hacking | 1300 | # Kernel hacking |
diff --git a/arch/powerpc/configs/mpc8315_rdb_defconfig b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig index 1f57456dd81e..1f57456dd81e 100644 --- a/arch/powerpc/configs/mpc8315_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc8315_rdb_defconfig | |||
diff --git a/arch/powerpc/configs/mpc832x_mds_defconfig b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig index 50cceda8994f..50cceda8994f 100644 --- a/arch/powerpc/configs/mpc832x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc832x_mds_defconfig | |||
diff --git a/arch/powerpc/configs/mpc832x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig index ac913025713e..ac913025713e 100644 --- a/arch/powerpc/configs/mpc832x_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc832x_rdb_defconfig | |||
diff --git a/arch/powerpc/configs/mpc834x_itx_defconfig b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig index e1de399a7bdd..e1de399a7bdd 100644 --- a/arch/powerpc/configs/mpc834x_itx_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_itx_defconfig | |||
diff --git a/arch/powerpc/configs/mpc834x_itxgp_defconfig b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig index b4e39cf82a8c..b4e39cf82a8c 100644 --- a/arch/powerpc/configs/mpc834x_itxgp_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig | |||
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig index b4e82c0e2be7..b4e82c0e2be7 100644 --- a/arch/powerpc/configs/mpc834x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc834x_mds_defconfig | |||
diff --git a/arch/powerpc/configs/mpc836x_mds_defconfig b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig index d50a96eddcdc..d50a96eddcdc 100644 --- a/arch/powerpc/configs/mpc836x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc836x_mds_defconfig | |||
diff --git a/arch/powerpc/configs/mpc837x_mds_defconfig b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig index f377cde785b0..f377cde785b0 100644 --- a/arch/powerpc/configs/mpc837x_mds_defconfig +++ b/arch/powerpc/configs/83xx/mpc837x_mds_defconfig | |||
diff --git a/arch/powerpc/configs/mpc837x_rdb_defconfig b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig index a6331769d88f..a6331769d88f 100644 --- a/arch/powerpc/configs/mpc837x_rdb_defconfig +++ b/arch/powerpc/configs/83xx/mpc837x_rdb_defconfig | |||
diff --git a/arch/powerpc/configs/sbc834x_defconfig b/arch/powerpc/configs/83xx/sbc834x_defconfig index 1f1518229f6d..1f1518229f6d 100644 --- a/arch/powerpc/configs/sbc834x_defconfig +++ b/arch/powerpc/configs/83xx/sbc834x_defconfig | |||
diff --git a/arch/powerpc/configs/85xx/ksi8560_defconfig b/arch/powerpc/configs/85xx/ksi8560_defconfig new file mode 100644 index 000000000000..2d0debcefdbf --- /dev/null +++ b/arch/powerpc/configs/85xx/ksi8560_defconfig | |||
@@ -0,0 +1,899 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.24 | ||
4 | # Mon Feb 11 16:25:19 2008 | ||
5 | # | ||
6 | # CONFIG_PPC64 is not set | ||
7 | |||
8 | # | ||
9 | # Processor support | ||
10 | # | ||
11 | # CONFIG_6xx is not set | ||
12 | CONFIG_PPC_85xx=y | ||
13 | # CONFIG_PPC_8xx is not set | ||
14 | # CONFIG_40x is not set | ||
15 | # CONFIG_44x is not set | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_E500=y | ||
18 | CONFIG_BOOKE=y | ||
19 | CONFIG_FSL_BOOKE=y | ||
20 | CONFIG_FSL_EMB_PERFMON=y | ||
21 | # CONFIG_PHYS_64BIT is not set | ||
22 | CONFIG_SPE=y | ||
23 | # CONFIG_PPC_MM_SLICES is not set | ||
24 | CONFIG_PPC32=y | ||
25 | CONFIG_WORD_SIZE=32 | ||
26 | CONFIG_PPC_MERGE=y | ||
27 | CONFIG_MMU=y | ||
28 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
29 | CONFIG_GENERIC_TIME=y | ||
30 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
31 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
32 | CONFIG_GENERIC_HARDIRQS=y | ||
33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
34 | CONFIG_IRQ_PER_CPU=y | ||
35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
36 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
37 | CONFIG_GENERIC_HWEIGHT=y | ||
38 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
39 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
40 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
41 | CONFIG_PPC=y | ||
42 | CONFIG_EARLY_PRINTK=y | ||
43 | CONFIG_GENERIC_NVRAM=y | ||
44 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
45 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
46 | CONFIG_PPC_OF=y | ||
47 | CONFIG_OF=y | ||
48 | CONFIG_PPC_UDBG_16550=y | ||
49 | # CONFIG_GENERIC_TBSYNC is not set | ||
50 | CONFIG_AUDIT_ARCH=y | ||
51 | CONFIG_GENERIC_BUG=y | ||
52 | CONFIG_DEFAULT_UIMAGE=y | ||
53 | # CONFIG_PPC_DCR_NATIVE is not set | ||
54 | # CONFIG_PPC_DCR_MMIO is not set | ||
55 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
56 | |||
57 | # | ||
58 | # General setup | ||
59 | # | ||
60 | CONFIG_EXPERIMENTAL=y | ||
61 | CONFIG_BROKEN_ON_SMP=y | ||
62 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
63 | CONFIG_LOCALVERSION="" | ||
64 | CONFIG_LOCALVERSION_AUTO=y | ||
65 | CONFIG_SWAP=y | ||
66 | CONFIG_SYSVIPC=y | ||
67 | CONFIG_SYSVIPC_SYSCTL=y | ||
68 | # CONFIG_POSIX_MQUEUE is not set | ||
69 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
70 | # CONFIG_TASKSTATS is not set | ||
71 | # CONFIG_USER_NS is not set | ||
72 | # CONFIG_PID_NS is not set | ||
73 | # CONFIG_AUDIT is not set | ||
74 | # CONFIG_IKCONFIG is not set | ||
75 | CONFIG_LOG_BUF_SHIFT=14 | ||
76 | # CONFIG_CGROUPS is not set | ||
77 | CONFIG_FAIR_GROUP_SCHED=y | ||
78 | CONFIG_FAIR_USER_SCHED=y | ||
79 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
80 | CONFIG_SYSFS_DEPRECATED=y | ||
81 | # CONFIG_RELAY is not set | ||
82 | CONFIG_BLK_DEV_INITRD=y | ||
83 | CONFIG_INITRAMFS_SOURCE="" | ||
84 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
85 | CONFIG_SYSCTL=y | ||
86 | CONFIG_EMBEDDED=y | ||
87 | CONFIG_SYSCTL_SYSCALL=y | ||
88 | CONFIG_KALLSYMS=y | ||
89 | # CONFIG_KALLSYMS_ALL is not set | ||
90 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
91 | CONFIG_HOTPLUG=y | ||
92 | CONFIG_PRINTK=y | ||
93 | CONFIG_BUG=y | ||
94 | CONFIG_ELF_CORE=y | ||
95 | CONFIG_BASE_FULL=y | ||
96 | CONFIG_FUTEX=y | ||
97 | CONFIG_ANON_INODES=y | ||
98 | CONFIG_EPOLL=y | ||
99 | CONFIG_SIGNALFD=y | ||
100 | CONFIG_TIMERFD=y | ||
101 | CONFIG_EVENTFD=y | ||
102 | CONFIG_SHMEM=y | ||
103 | CONFIG_VM_EVENT_COUNTERS=y | ||
104 | CONFIG_SLUB_DEBUG=y | ||
105 | # CONFIG_SLAB is not set | ||
106 | CONFIG_SLUB=y | ||
107 | # CONFIG_SLOB is not set | ||
108 | # CONFIG_PROFILING is not set | ||
109 | # CONFIG_MARKERS is not set | ||
110 | CONFIG_HAVE_OPROFILE=y | ||
111 | CONFIG_HAVE_KPROBES=y | ||
112 | CONFIG_PROC_PAGE_MONITOR=y | ||
113 | CONFIG_SLABINFO=y | ||
114 | CONFIG_RT_MUTEXES=y | ||
115 | # CONFIG_TINY_SHMEM is not set | ||
116 | CONFIG_BASE_SMALL=0 | ||
117 | # CONFIG_MODULES is not set | ||
118 | CONFIG_BLOCK=y | ||
119 | # CONFIG_LBD is not set | ||
120 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
121 | # CONFIG_LSF is not set | ||
122 | # CONFIG_BLK_DEV_BSG is not set | ||
123 | |||
124 | # | ||
125 | # IO Schedulers | ||
126 | # | ||
127 | CONFIG_IOSCHED_NOOP=y | ||
128 | CONFIG_IOSCHED_AS=y | ||
129 | CONFIG_IOSCHED_DEADLINE=y | ||
130 | CONFIG_IOSCHED_CFQ=y | ||
131 | CONFIG_DEFAULT_AS=y | ||
132 | # CONFIG_DEFAULT_DEADLINE is not set | ||
133 | # CONFIG_DEFAULT_CFQ is not set | ||
134 | # CONFIG_DEFAULT_NOOP is not set | ||
135 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
136 | CONFIG_CLASSIC_RCU=y | ||
137 | # CONFIG_PREEMPT_RCU is not set | ||
138 | |||
139 | # | ||
140 | # Platform support | ||
141 | # | ||
142 | # CONFIG_PPC_MPC512x is not set | ||
143 | # CONFIG_PPC_MPC5121 is not set | ||
144 | # CONFIG_PPC_CELL is not set | ||
145 | # CONFIG_PPC_CELL_NATIVE is not set | ||
146 | # CONFIG_PQ2ADS is not set | ||
147 | CONFIG_MPC85xx=y | ||
148 | # CONFIG_MPC8540_ADS is not set | ||
149 | # CONFIG_MPC8560_ADS is not set | ||
150 | # CONFIG_MPC85xx_CDS is not set | ||
151 | # CONFIG_MPC85xx_MDS is not set | ||
152 | # CONFIG_MPC85xx_DS is not set | ||
153 | CONFIG_KSI8560=y | ||
154 | # CONFIG_STX_GP3 is not set | ||
155 | # CONFIG_TQM8540 is not set | ||
156 | # CONFIG_TQM8541 is not set | ||
157 | # CONFIG_TQM8555 is not set | ||
158 | # CONFIG_TQM8560 is not set | ||
159 | # CONFIG_SBC8548 is not set | ||
160 | # CONFIG_SBC8560 is not set | ||
161 | # CONFIG_IPIC is not set | ||
162 | CONFIG_MPIC=y | ||
163 | # CONFIG_MPIC_WEIRD is not set | ||
164 | # CONFIG_PPC_I8259 is not set | ||
165 | # CONFIG_PPC_RTAS is not set | ||
166 | # CONFIG_MMIO_NVRAM is not set | ||
167 | # CONFIG_PPC_MPC106 is not set | ||
168 | # CONFIG_PPC_970_NAP is not set | ||
169 | # CONFIG_PPC_INDIRECT_IO is not set | ||
170 | # CONFIG_GENERIC_IOMAP is not set | ||
171 | # CONFIG_CPU_FREQ is not set | ||
172 | CONFIG_CPM2=y | ||
173 | CONFIG_PPC_CPM_NEW_BINDING=y | ||
174 | # CONFIG_FSL_ULI1575 is not set | ||
175 | CONFIG_CPM=y | ||
176 | |||
177 | # | ||
178 | # Kernel options | ||
179 | # | ||
180 | CONFIG_HIGHMEM=y | ||
181 | # CONFIG_TICK_ONESHOT is not set | ||
182 | # CONFIG_NO_HZ is not set | ||
183 | # CONFIG_HIGH_RES_TIMERS is not set | ||
184 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
185 | # CONFIG_HZ_100 is not set | ||
186 | CONFIG_HZ_250=y | ||
187 | # CONFIG_HZ_300 is not set | ||
188 | # CONFIG_HZ_1000 is not set | ||
189 | CONFIG_HZ=250 | ||
190 | # CONFIG_SCHED_HRTICK is not set | ||
191 | CONFIG_PREEMPT_NONE=y | ||
192 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
193 | # CONFIG_PREEMPT is not set | ||
194 | CONFIG_RCU_TRACE=y | ||
195 | CONFIG_BINFMT_ELF=y | ||
196 | CONFIG_BINFMT_MISC=y | ||
197 | CONFIG_MATH_EMULATION=y | ||
198 | # CONFIG_IOMMU_HELPER is not set | ||
199 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
200 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
201 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
202 | CONFIG_SELECT_MEMORY_MODEL=y | ||
203 | CONFIG_FLATMEM_MANUAL=y | ||
204 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
205 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
206 | CONFIG_FLATMEM=y | ||
207 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
208 | # CONFIG_SPARSEMEM_STATIC is not set | ||
209 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
210 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
211 | # CONFIG_RESOURCES_64BIT is not set | ||
212 | CONFIG_ZONE_DMA_FLAG=1 | ||
213 | CONFIG_BOUNCE=y | ||
214 | CONFIG_VIRT_TO_BUS=y | ||
215 | # CONFIG_PROC_DEVICETREE is not set | ||
216 | # CONFIG_CMDLINE_BOOL is not set | ||
217 | # CONFIG_PM is not set | ||
218 | # CONFIG_SECCOMP is not set | ||
219 | CONFIG_WANT_DEVICE_TREE=y | ||
220 | CONFIG_ISA_DMA_API=y | ||
221 | |||
222 | # | ||
223 | # Bus options | ||
224 | # | ||
225 | CONFIG_ZONE_DMA=y | ||
226 | CONFIG_FSL_SOC=y | ||
227 | # CONFIG_PCI is not set | ||
228 | # CONFIG_PCI_DOMAINS is not set | ||
229 | # CONFIG_PCI_SYSCALL is not set | ||
230 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
231 | # CONFIG_PCCARD is not set | ||
232 | |||
233 | # | ||
234 | # Advanced setup | ||
235 | # | ||
236 | # CONFIG_ADVANCED_OPTIONS is not set | ||
237 | |||
238 | # | ||
239 | # Default settings for advanced configuration options are used | ||
240 | # | ||
241 | CONFIG_HIGHMEM_START=0xfe000000 | ||
242 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
243 | CONFIG_KERNEL_START=0xc0000000 | ||
244 | CONFIG_TASK_SIZE=0xc0000000 | ||
245 | CONFIG_BOOT_LOAD=0x00800000 | ||
246 | |||
247 | # | ||
248 | # Networking | ||
249 | # | ||
250 | CONFIG_NET=y | ||
251 | |||
252 | # | ||
253 | # Networking options | ||
254 | # | ||
255 | CONFIG_PACKET=y | ||
256 | # CONFIG_PACKET_MMAP is not set | ||
257 | CONFIG_UNIX=y | ||
258 | CONFIG_XFRM=y | ||
259 | # CONFIG_XFRM_USER is not set | ||
260 | # CONFIG_XFRM_SUB_POLICY is not set | ||
261 | # CONFIG_XFRM_MIGRATE is not set | ||
262 | # CONFIG_XFRM_STATISTICS is not set | ||
263 | # CONFIG_NET_KEY is not set | ||
264 | CONFIG_INET=y | ||
265 | CONFIG_IP_MULTICAST=y | ||
266 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
267 | CONFIG_IP_FIB_HASH=y | ||
268 | CONFIG_IP_PNP=y | ||
269 | CONFIG_IP_PNP_DHCP=y | ||
270 | CONFIG_IP_PNP_BOOTP=y | ||
271 | # CONFIG_IP_PNP_RARP is not set | ||
272 | # CONFIG_NET_IPIP is not set | ||
273 | # CONFIG_NET_IPGRE is not set | ||
274 | # CONFIG_IP_MROUTE is not set | ||
275 | # CONFIG_ARPD is not set | ||
276 | CONFIG_SYN_COOKIES=y | ||
277 | # CONFIG_INET_AH is not set | ||
278 | # CONFIG_INET_ESP is not set | ||
279 | # CONFIG_INET_IPCOMP is not set | ||
280 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
281 | # CONFIG_INET_TUNNEL is not set | ||
282 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
283 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
284 | CONFIG_INET_XFRM_MODE_BEET=y | ||
285 | # CONFIG_INET_LRO is not set | ||
286 | CONFIG_INET_DIAG=y | ||
287 | CONFIG_INET_TCP_DIAG=y | ||
288 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
289 | CONFIG_TCP_CONG_CUBIC=y | ||
290 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
291 | # CONFIG_TCP_MD5SIG is not set | ||
292 | # CONFIG_IPV6 is not set | ||
293 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
294 | # CONFIG_INET6_TUNNEL is not set | ||
295 | # CONFIG_NETWORK_SECMARK is not set | ||
296 | # CONFIG_NETFILTER is not set | ||
297 | # CONFIG_IP_DCCP is not set | ||
298 | # CONFIG_IP_SCTP is not set | ||
299 | # CONFIG_TIPC is not set | ||
300 | # CONFIG_ATM is not set | ||
301 | # CONFIG_BRIDGE is not set | ||
302 | # CONFIG_VLAN_8021Q is not set | ||
303 | # CONFIG_DECNET is not set | ||
304 | # CONFIG_LLC2 is not set | ||
305 | # CONFIG_IPX is not set | ||
306 | # CONFIG_ATALK is not set | ||
307 | # CONFIG_X25 is not set | ||
308 | # CONFIG_LAPB is not set | ||
309 | # CONFIG_ECONET is not set | ||
310 | # CONFIG_WAN_ROUTER is not set | ||
311 | # CONFIG_NET_SCHED is not set | ||
312 | |||
313 | # | ||
314 | # Network testing | ||
315 | # | ||
316 | # CONFIG_NET_PKTGEN is not set | ||
317 | # CONFIG_HAMRADIO is not set | ||
318 | # CONFIG_CAN is not set | ||
319 | # CONFIG_IRDA is not set | ||
320 | # CONFIG_BT is not set | ||
321 | # CONFIG_AF_RXRPC is not set | ||
322 | |||
323 | # | ||
324 | # Wireless | ||
325 | # | ||
326 | # CONFIG_CFG80211 is not set | ||
327 | # CONFIG_WIRELESS_EXT is not set | ||
328 | # CONFIG_MAC80211 is not set | ||
329 | # CONFIG_IEEE80211 is not set | ||
330 | # CONFIG_RFKILL is not set | ||
331 | # CONFIG_NET_9P is not set | ||
332 | |||
333 | # | ||
334 | # Device Drivers | ||
335 | # | ||
336 | |||
337 | # | ||
338 | # Generic Driver Options | ||
339 | # | ||
340 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
341 | CONFIG_STANDALONE=y | ||
342 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
343 | # CONFIG_FW_LOADER is not set | ||
344 | # CONFIG_DEBUG_DRIVER is not set | ||
345 | # CONFIG_DEBUG_DEVRES is not set | ||
346 | # CONFIG_SYS_HYPERVISOR is not set | ||
347 | # CONFIG_CONNECTOR is not set | ||
348 | CONFIG_MTD=y | ||
349 | # CONFIG_MTD_DEBUG is not set | ||
350 | CONFIG_MTD_CONCAT=y | ||
351 | CONFIG_MTD_PARTITIONS=y | ||
352 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
353 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
354 | |||
355 | # | ||
356 | # User Modules And Translation Layers | ||
357 | # | ||
358 | CONFIG_MTD_CHAR=y | ||
359 | CONFIG_MTD_BLKDEVS=y | ||
360 | CONFIG_MTD_BLOCK=y | ||
361 | # CONFIG_FTL is not set | ||
362 | # CONFIG_NFTL is not set | ||
363 | # CONFIG_INFTL is not set | ||
364 | # CONFIG_RFD_FTL is not set | ||
365 | # CONFIG_SSFDC is not set | ||
366 | # CONFIG_MTD_OOPS is not set | ||
367 | |||
368 | # | ||
369 | # RAM/ROM/Flash chip drivers | ||
370 | # | ||
371 | CONFIG_MTD_CFI=y | ||
372 | CONFIG_MTD_JEDECPROBE=y | ||
373 | CONFIG_MTD_GEN_PROBE=y | ||
374 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
375 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
376 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
377 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
378 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
379 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
380 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
381 | CONFIG_MTD_CFI_I1=y | ||
382 | CONFIG_MTD_CFI_I2=y | ||
383 | # CONFIG_MTD_CFI_I4 is not set | ||
384 | # CONFIG_MTD_CFI_I8 is not set | ||
385 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
386 | CONFIG_MTD_CFI_AMDSTD=y | ||
387 | # CONFIG_MTD_CFI_STAA is not set | ||
388 | CONFIG_MTD_CFI_UTIL=y | ||
389 | # CONFIG_MTD_RAM is not set | ||
390 | # CONFIG_MTD_ROM is not set | ||
391 | # CONFIG_MTD_ABSENT is not set | ||
392 | |||
393 | # | ||
394 | # Mapping drivers for chip access | ||
395 | # | ||
396 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
397 | # CONFIG_MTD_PHYSMAP is not set | ||
398 | CONFIG_MTD_PHYSMAP_OF=y | ||
399 | # CONFIG_MTD_PLATRAM is not set | ||
400 | |||
401 | # | ||
402 | # Self-contained MTD device drivers | ||
403 | # | ||
404 | # CONFIG_MTD_SLRAM is not set | ||
405 | # CONFIG_MTD_PHRAM is not set | ||
406 | # CONFIG_MTD_MTDRAM is not set | ||
407 | # CONFIG_MTD_BLOCK2MTD is not set | ||
408 | |||
409 | # | ||
410 | # Disk-On-Chip Device Drivers | ||
411 | # | ||
412 | # CONFIG_MTD_DOC2000 is not set | ||
413 | # CONFIG_MTD_DOC2001 is not set | ||
414 | # CONFIG_MTD_DOC2001PLUS is not set | ||
415 | # CONFIG_MTD_NAND is not set | ||
416 | # CONFIG_MTD_ONENAND is not set | ||
417 | |||
418 | # | ||
419 | # UBI - Unsorted block images | ||
420 | # | ||
421 | # CONFIG_MTD_UBI is not set | ||
422 | CONFIG_OF_DEVICE=y | ||
423 | # CONFIG_PARPORT is not set | ||
424 | CONFIG_BLK_DEV=y | ||
425 | # CONFIG_BLK_DEV_FD is not set | ||
426 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
427 | CONFIG_BLK_DEV_LOOP=y | ||
428 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
429 | # CONFIG_BLK_DEV_NBD is not set | ||
430 | CONFIG_BLK_DEV_RAM=y | ||
431 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
432 | CONFIG_BLK_DEV_RAM_SIZE=32768 | ||
433 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
434 | # CONFIG_CDROM_PKTCDVD is not set | ||
435 | # CONFIG_ATA_OVER_ETH is not set | ||
436 | CONFIG_MISC_DEVICES=y | ||
437 | # CONFIG_EEPROM_93CX6 is not set | ||
438 | CONFIG_IDE=y | ||
439 | CONFIG_IDE_MAX_HWIFS=4 | ||
440 | CONFIG_BLK_DEV_IDE=y | ||
441 | |||
442 | # | ||
443 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
444 | # | ||
445 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
446 | # CONFIG_BLK_DEV_IDEDISK is not set | ||
447 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
448 | # CONFIG_BLK_DEV_IDECD is not set | ||
449 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
450 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
451 | # CONFIG_IDE_TASK_IOCTL is not set | ||
452 | CONFIG_IDE_PROC_FS=y | ||
453 | |||
454 | # | ||
455 | # IDE chipset support/bugfixes | ||
456 | # | ||
457 | CONFIG_IDE_GENERIC=y | ||
458 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
459 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
460 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | ||
461 | # CONFIG_BLK_DEV_HD is not set | ||
462 | |||
463 | # | ||
464 | # SCSI device support | ||
465 | # | ||
466 | # CONFIG_RAID_ATTRS is not set | ||
467 | # CONFIG_SCSI is not set | ||
468 | # CONFIG_SCSI_DMA is not set | ||
469 | # CONFIG_SCSI_NETLINK is not set | ||
470 | # CONFIG_ATA is not set | ||
471 | # CONFIG_MD is not set | ||
472 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
473 | CONFIG_NETDEVICES=y | ||
474 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
475 | # CONFIG_DUMMY is not set | ||
476 | # CONFIG_BONDING is not set | ||
477 | # CONFIG_MACVLAN is not set | ||
478 | # CONFIG_EQUALIZER is not set | ||
479 | # CONFIG_TUN is not set | ||
480 | # CONFIG_VETH is not set | ||
481 | CONFIG_PHYLIB=y | ||
482 | |||
483 | # | ||
484 | # MII PHY device drivers | ||
485 | # | ||
486 | CONFIG_MARVELL_PHY=y | ||
487 | # CONFIG_DAVICOM_PHY is not set | ||
488 | # CONFIG_QSEMI_PHY is not set | ||
489 | # CONFIG_LXT_PHY is not set | ||
490 | # CONFIG_CICADA_PHY is not set | ||
491 | # CONFIG_VITESSE_PHY is not set | ||
492 | # CONFIG_SMSC_PHY is not set | ||
493 | # CONFIG_BROADCOM_PHY is not set | ||
494 | # CONFIG_ICPLUS_PHY is not set | ||
495 | # CONFIG_REALTEK_PHY is not set | ||
496 | # CONFIG_FIXED_PHY is not set | ||
497 | CONFIG_MDIO_BITBANG=y | ||
498 | CONFIG_NET_ETHERNET=y | ||
499 | CONFIG_MII=y | ||
500 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
501 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
502 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
503 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
504 | # CONFIG_B44 is not set | ||
505 | CONFIG_FS_ENET=y | ||
506 | # CONFIG_FS_ENET_HAS_SCC is not set | ||
507 | CONFIG_FS_ENET_HAS_FCC=y | ||
508 | CONFIG_FS_ENET_MDIO_FCC=y | ||
509 | CONFIG_NETDEV_1000=y | ||
510 | # CONFIG_E1000E_ENABLED is not set | ||
511 | CONFIG_GIANFAR=y | ||
512 | CONFIG_GFAR_NAPI=y | ||
513 | CONFIG_NETDEV_10000=y | ||
514 | |||
515 | # | ||
516 | # Wireless LAN | ||
517 | # | ||
518 | # CONFIG_WLAN_PRE80211 is not set | ||
519 | # CONFIG_WLAN_80211 is not set | ||
520 | # CONFIG_WAN is not set | ||
521 | # CONFIG_PPP is not set | ||
522 | # CONFIG_SLIP is not set | ||
523 | # CONFIG_NETCONSOLE is not set | ||
524 | # CONFIG_NETPOLL is not set | ||
525 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
526 | # CONFIG_ISDN is not set | ||
527 | # CONFIG_PHONE is not set | ||
528 | |||
529 | # | ||
530 | # Input device support | ||
531 | # | ||
532 | CONFIG_INPUT=y | ||
533 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
534 | # CONFIG_INPUT_POLLDEV is not set | ||
535 | |||
536 | # | ||
537 | # Userland interfaces | ||
538 | # | ||
539 | # CONFIG_INPUT_MOUSEDEV is not set | ||
540 | # CONFIG_INPUT_JOYDEV is not set | ||
541 | # CONFIG_INPUT_EVDEV is not set | ||
542 | # CONFIG_INPUT_EVBUG is not set | ||
543 | |||
544 | # | ||
545 | # Input Device Drivers | ||
546 | # | ||
547 | # CONFIG_INPUT_KEYBOARD is not set | ||
548 | # CONFIG_INPUT_MOUSE is not set | ||
549 | # CONFIG_INPUT_JOYSTICK is not set | ||
550 | # CONFIG_INPUT_TABLET is not set | ||
551 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
552 | # CONFIG_INPUT_MISC is not set | ||
553 | |||
554 | # | ||
555 | # Hardware I/O ports | ||
556 | # | ||
557 | # CONFIG_SERIO is not set | ||
558 | # CONFIG_GAMEPORT is not set | ||
559 | |||
560 | # | ||
561 | # Character devices | ||
562 | # | ||
563 | # CONFIG_VT is not set | ||
564 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
565 | |||
566 | # | ||
567 | # Serial drivers | ||
568 | # | ||
569 | # CONFIG_SERIAL_8250 is not set | ||
570 | |||
571 | # | ||
572 | # Non-8250 serial port support | ||
573 | # | ||
574 | # CONFIG_SERIAL_UARTLITE is not set | ||
575 | CONFIG_SERIAL_CORE=y | ||
576 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
577 | CONFIG_SERIAL_CPM=y | ||
578 | CONFIG_SERIAL_CPM_CONSOLE=y | ||
579 | CONFIG_SERIAL_CPM_SCC1=y | ||
580 | # CONFIG_SERIAL_CPM_SCC2 is not set | ||
581 | # CONFIG_SERIAL_CPM_SCC3 is not set | ||
582 | # CONFIG_SERIAL_CPM_SCC4 is not set | ||
583 | # CONFIG_SERIAL_CPM_SMC1 is not set | ||
584 | # CONFIG_SERIAL_CPM_SMC2 is not set | ||
585 | CONFIG_UNIX98_PTYS=y | ||
586 | CONFIG_LEGACY_PTYS=y | ||
587 | CONFIG_LEGACY_PTY_COUNT=256 | ||
588 | # CONFIG_IPMI_HANDLER is not set | ||
589 | CONFIG_HW_RANDOM=y | ||
590 | # CONFIG_NVRAM is not set | ||
591 | CONFIG_GEN_RTC=y | ||
592 | # CONFIG_GEN_RTC_X is not set | ||
593 | # CONFIG_R3964 is not set | ||
594 | # CONFIG_RAW_DRIVER is not set | ||
595 | # CONFIG_TCG_TPM is not set | ||
596 | # CONFIG_I2C is not set | ||
597 | |||
598 | # | ||
599 | # SPI support | ||
600 | # | ||
601 | # CONFIG_SPI is not set | ||
602 | # CONFIG_SPI_MASTER is not set | ||
603 | # CONFIG_W1 is not set | ||
604 | # CONFIG_POWER_SUPPLY is not set | ||
605 | CONFIG_HWMON=y | ||
606 | # CONFIG_HWMON_VID is not set | ||
607 | # CONFIG_SENSORS_F71805F is not set | ||
608 | # CONFIG_SENSORS_F71882FG is not set | ||
609 | # CONFIG_SENSORS_IT87 is not set | ||
610 | # CONFIG_SENSORS_PC87360 is not set | ||
611 | # CONFIG_SENSORS_PC87427 is not set | ||
612 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
613 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
614 | # CONFIG_SENSORS_VT1211 is not set | ||
615 | # CONFIG_SENSORS_W83627HF is not set | ||
616 | # CONFIG_SENSORS_W83627EHF is not set | ||
617 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
618 | # CONFIG_WATCHDOG is not set | ||
619 | |||
620 | # | ||
621 | # Sonics Silicon Backplane | ||
622 | # | ||
623 | CONFIG_SSB_POSSIBLE=y | ||
624 | # CONFIG_SSB is not set | ||
625 | |||
626 | # | ||
627 | # Multifunction device drivers | ||
628 | # | ||
629 | # CONFIG_MFD_SM501 is not set | ||
630 | |||
631 | # | ||
632 | # Multimedia devices | ||
633 | # | ||
634 | # CONFIG_VIDEO_DEV is not set | ||
635 | # CONFIG_DVB_CORE is not set | ||
636 | CONFIG_DAB=y | ||
637 | |||
638 | # | ||
639 | # Graphics support | ||
640 | # | ||
641 | # CONFIG_VGASTATE is not set | ||
642 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
643 | # CONFIG_FB is not set | ||
644 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
645 | |||
646 | # | ||
647 | # Display device support | ||
648 | # | ||
649 | # CONFIG_DISPLAY_SUPPORT is not set | ||
650 | |||
651 | # | ||
652 | # Sound | ||
653 | # | ||
654 | # CONFIG_SOUND is not set | ||
655 | CONFIG_HID_SUPPORT=y | ||
656 | CONFIG_HID=y | ||
657 | # CONFIG_HID_DEBUG is not set | ||
658 | # CONFIG_HIDRAW is not set | ||
659 | CONFIG_USB_SUPPORT=y | ||
660 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
661 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
662 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
663 | |||
664 | # | ||
665 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
666 | # | ||
667 | # CONFIG_USB_GADGET is not set | ||
668 | # CONFIG_MMC is not set | ||
669 | # CONFIG_NEW_LEDS is not set | ||
670 | # CONFIG_EDAC is not set | ||
671 | # CONFIG_RTC_CLASS is not set | ||
672 | |||
673 | # | ||
674 | # Userspace I/O | ||
675 | # | ||
676 | # CONFIG_UIO is not set | ||
677 | |||
678 | # | ||
679 | # File systems | ||
680 | # | ||
681 | CONFIG_EXT2_FS=y | ||
682 | # CONFIG_EXT2_FS_XATTR is not set | ||
683 | # CONFIG_EXT2_FS_XIP is not set | ||
684 | CONFIG_EXT3_FS=y | ||
685 | CONFIG_EXT3_FS_XATTR=y | ||
686 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
687 | # CONFIG_EXT3_FS_SECURITY is not set | ||
688 | # CONFIG_EXT4DEV_FS is not set | ||
689 | CONFIG_JBD=y | ||
690 | # CONFIG_JBD_DEBUG is not set | ||
691 | CONFIG_FS_MBCACHE=y | ||
692 | # CONFIG_REISERFS_FS is not set | ||
693 | # CONFIG_JFS_FS is not set | ||
694 | # CONFIG_FS_POSIX_ACL is not set | ||
695 | # CONFIG_XFS_FS is not set | ||
696 | # CONFIG_GFS2_FS is not set | ||
697 | # CONFIG_OCFS2_FS is not set | ||
698 | # CONFIG_MINIX_FS is not set | ||
699 | # CONFIG_ROMFS_FS is not set | ||
700 | CONFIG_INOTIFY=y | ||
701 | CONFIG_INOTIFY_USER=y | ||
702 | # CONFIG_QUOTA is not set | ||
703 | CONFIG_DNOTIFY=y | ||
704 | # CONFIG_AUTOFS_FS is not set | ||
705 | # CONFIG_AUTOFS4_FS is not set | ||
706 | # CONFIG_FUSE_FS is not set | ||
707 | |||
708 | # | ||
709 | # CD-ROM/DVD Filesystems | ||
710 | # | ||
711 | # CONFIG_ISO9660_FS is not set | ||
712 | # CONFIG_UDF_FS is not set | ||
713 | |||
714 | # | ||
715 | # DOS/FAT/NT Filesystems | ||
716 | # | ||
717 | # CONFIG_MSDOS_FS is not set | ||
718 | # CONFIG_VFAT_FS is not set | ||
719 | # CONFIG_NTFS_FS is not set | ||
720 | |||
721 | # | ||
722 | # Pseudo filesystems | ||
723 | # | ||
724 | CONFIG_PROC_FS=y | ||
725 | CONFIG_PROC_KCORE=y | ||
726 | CONFIG_PROC_SYSCTL=y | ||
727 | CONFIG_SYSFS=y | ||
728 | CONFIG_TMPFS=y | ||
729 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
730 | # CONFIG_HUGETLB_PAGE is not set | ||
731 | # CONFIG_CONFIGFS_FS is not set | ||
732 | |||
733 | # | ||
734 | # Miscellaneous filesystems | ||
735 | # | ||
736 | # CONFIG_ADFS_FS is not set | ||
737 | # CONFIG_AFFS_FS is not set | ||
738 | # CONFIG_HFS_FS is not set | ||
739 | # CONFIG_HFSPLUS_FS is not set | ||
740 | # CONFIG_BEFS_FS is not set | ||
741 | # CONFIG_BFS_FS is not set | ||
742 | # CONFIG_EFS_FS is not set | ||
743 | # CONFIG_JFFS2_FS is not set | ||
744 | # CONFIG_CRAMFS is not set | ||
745 | # CONFIG_VXFS_FS is not set | ||
746 | # CONFIG_HPFS_FS is not set | ||
747 | # CONFIG_QNX4FS_FS is not set | ||
748 | # CONFIG_SYSV_FS is not set | ||
749 | # CONFIG_UFS_FS is not set | ||
750 | CONFIG_NETWORK_FILESYSTEMS=y | ||
751 | CONFIG_NFS_FS=y | ||
752 | # CONFIG_NFS_V3 is not set | ||
753 | # CONFIG_NFS_V4 is not set | ||
754 | # CONFIG_NFS_DIRECTIO is not set | ||
755 | # CONFIG_NFSD is not set | ||
756 | CONFIG_ROOT_NFS=y | ||
757 | CONFIG_LOCKD=y | ||
758 | CONFIG_NFS_COMMON=y | ||
759 | CONFIG_SUNRPC=y | ||
760 | # CONFIG_SUNRPC_BIND34 is not set | ||
761 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
762 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
763 | # CONFIG_SMB_FS is not set | ||
764 | # CONFIG_CIFS is not set | ||
765 | # CONFIG_NCP_FS is not set | ||
766 | # CONFIG_CODA_FS is not set | ||
767 | # CONFIG_AFS_FS is not set | ||
768 | |||
769 | # | ||
770 | # Partition Types | ||
771 | # | ||
772 | CONFIG_PARTITION_ADVANCED=y | ||
773 | # CONFIG_ACORN_PARTITION is not set | ||
774 | # CONFIG_OSF_PARTITION is not set | ||
775 | # CONFIG_AMIGA_PARTITION is not set | ||
776 | # CONFIG_ATARI_PARTITION is not set | ||
777 | # CONFIG_MAC_PARTITION is not set | ||
778 | # CONFIG_MSDOS_PARTITION is not set | ||
779 | # CONFIG_LDM_PARTITION is not set | ||
780 | # CONFIG_SGI_PARTITION is not set | ||
781 | # CONFIG_ULTRIX_PARTITION is not set | ||
782 | # CONFIG_SUN_PARTITION is not set | ||
783 | # CONFIG_KARMA_PARTITION is not set | ||
784 | # CONFIG_EFI_PARTITION is not set | ||
785 | # CONFIG_SYSV68_PARTITION is not set | ||
786 | # CONFIG_NLS is not set | ||
787 | # CONFIG_DLM is not set | ||
788 | |||
789 | # | ||
790 | # Library routines | ||
791 | # | ||
792 | CONFIG_BITREVERSE=y | ||
793 | # CONFIG_CRC_CCITT is not set | ||
794 | # CONFIG_CRC16 is not set | ||
795 | # CONFIG_CRC_ITU_T is not set | ||
796 | CONFIG_CRC32=y | ||
797 | # CONFIG_CRC7 is not set | ||
798 | # CONFIG_LIBCRC32C is not set | ||
799 | CONFIG_PLIST=y | ||
800 | CONFIG_HAS_IOMEM=y | ||
801 | CONFIG_HAS_IOPORT=y | ||
802 | CONFIG_HAS_DMA=y | ||
803 | |||
804 | # | ||
805 | # Kernel hacking | ||
806 | # | ||
807 | # CONFIG_PRINTK_TIME is not set | ||
808 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
809 | CONFIG_ENABLE_MUST_CHECK=y | ||
810 | # CONFIG_MAGIC_SYSRQ is not set | ||
811 | # CONFIG_UNUSED_SYMBOLS is not set | ||
812 | CONFIG_DEBUG_FS=y | ||
813 | # CONFIG_HEADERS_CHECK is not set | ||
814 | CONFIG_DEBUG_KERNEL=y | ||
815 | # CONFIG_DEBUG_SHIRQ is not set | ||
816 | CONFIG_DETECT_SOFTLOCKUP=y | ||
817 | CONFIG_SCHED_DEBUG=y | ||
818 | # CONFIG_SCHEDSTATS is not set | ||
819 | # CONFIG_TIMER_STATS is not set | ||
820 | # CONFIG_SLUB_DEBUG_ON is not set | ||
821 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
822 | # CONFIG_RT_MUTEX_TESTER is not set | ||
823 | # CONFIG_DEBUG_SPINLOCK is not set | ||
824 | CONFIG_DEBUG_MUTEXES=y | ||
825 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
826 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
827 | # CONFIG_DEBUG_KOBJECT is not set | ||
828 | # CONFIG_DEBUG_HIGHMEM is not set | ||
829 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
830 | # CONFIG_DEBUG_INFO is not set | ||
831 | # CONFIG_DEBUG_VM is not set | ||
832 | # CONFIG_DEBUG_LIST is not set | ||
833 | # CONFIG_DEBUG_SG is not set | ||
834 | CONFIG_FORCED_INLINING=y | ||
835 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
836 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
837 | # CONFIG_FAULT_INJECTION is not set | ||
838 | # CONFIG_SAMPLES is not set | ||
839 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
840 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
841 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
842 | # CONFIG_DEBUGGER is not set | ||
843 | # CONFIG_KGDB_CONSOLE is not set | ||
844 | # CONFIG_VIRQ_DEBUG is not set | ||
845 | # CONFIG_BDI_SWITCH is not set | ||
846 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
847 | |||
848 | # | ||
849 | # Security options | ||
850 | # | ||
851 | # CONFIG_KEYS is not set | ||
852 | # CONFIG_SECURITY is not set | ||
853 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
854 | CONFIG_CRYPTO=y | ||
855 | # CONFIG_CRYPTO_SEQIV is not set | ||
856 | # CONFIG_CRYPTO_MANAGER is not set | ||
857 | # CONFIG_CRYPTO_HMAC is not set | ||
858 | # CONFIG_CRYPTO_XCBC is not set | ||
859 | # CONFIG_CRYPTO_NULL is not set | ||
860 | # CONFIG_CRYPTO_MD4 is not set | ||
861 | # CONFIG_CRYPTO_MD5 is not set | ||
862 | # CONFIG_CRYPTO_SHA1 is not set | ||
863 | # CONFIG_CRYPTO_SHA256 is not set | ||
864 | # CONFIG_CRYPTO_SHA512 is not set | ||
865 | # CONFIG_CRYPTO_WP512 is not set | ||
866 | # CONFIG_CRYPTO_TGR192 is not set | ||
867 | # CONFIG_CRYPTO_GF128MUL is not set | ||
868 | # CONFIG_CRYPTO_ECB is not set | ||
869 | # CONFIG_CRYPTO_CBC is not set | ||
870 | # CONFIG_CRYPTO_PCBC is not set | ||
871 | # CONFIG_CRYPTO_LRW is not set | ||
872 | # CONFIG_CRYPTO_XTS is not set | ||
873 | # CONFIG_CRYPTO_CTR is not set | ||
874 | # CONFIG_CRYPTO_GCM is not set | ||
875 | # CONFIG_CRYPTO_CCM is not set | ||
876 | # CONFIG_CRYPTO_CRYPTD is not set | ||
877 | # CONFIG_CRYPTO_DES is not set | ||
878 | # CONFIG_CRYPTO_FCRYPT is not set | ||
879 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
880 | # CONFIG_CRYPTO_TWOFISH is not set | ||
881 | # CONFIG_CRYPTO_SERPENT is not set | ||
882 | # CONFIG_CRYPTO_AES is not set | ||
883 | # CONFIG_CRYPTO_CAST5 is not set | ||
884 | # CONFIG_CRYPTO_CAST6 is not set | ||
885 | # CONFIG_CRYPTO_TEA is not set | ||
886 | # CONFIG_CRYPTO_ARC4 is not set | ||
887 | # CONFIG_CRYPTO_KHAZAD is not set | ||
888 | # CONFIG_CRYPTO_ANUBIS is not set | ||
889 | # CONFIG_CRYPTO_SEED is not set | ||
890 | # CONFIG_CRYPTO_SALSA20 is not set | ||
891 | # CONFIG_CRYPTO_DEFLATE is not set | ||
892 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
893 | # CONFIG_CRYPTO_CRC32C is not set | ||
894 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
895 | # CONFIG_CRYPTO_AUTHENC is not set | ||
896 | # CONFIG_CRYPTO_LZO is not set | ||
897 | CONFIG_CRYPTO_HW=y | ||
898 | # CONFIG_PPC_CLOCK is not set | ||
899 | CONFIG_PPC_LIB_RHEAP=y | ||
diff --git a/arch/powerpc/configs/mpc8540_ads_defconfig b/arch/powerpc/configs/85xx/mpc8540_ads_defconfig index b998539da86e..b998539da86e 100644 --- a/arch/powerpc/configs/mpc8540_ads_defconfig +++ b/arch/powerpc/configs/85xx/mpc8540_ads_defconfig | |||
diff --git a/arch/powerpc/configs/mpc8544_ds_defconfig b/arch/powerpc/configs/85xx/mpc8544_ds_defconfig index 418bcdb5f919..a9f113b243ae 100644 --- a/arch/powerpc/configs/mpc8544_ds_defconfig +++ b/arch/powerpc/configs/85xx/mpc8544_ds_defconfig | |||
@@ -162,6 +162,7 @@ CONFIG_MPC85xx=y | |||
162 | # CONFIG_MPC85xx_CDS is not set | 162 | # CONFIG_MPC85xx_CDS is not set |
163 | # CONFIG_MPC85xx_MDS is not set | 163 | # CONFIG_MPC85xx_MDS is not set |
164 | CONFIG_MPC85xx_DS=y | 164 | CONFIG_MPC85xx_DS=y |
165 | # CONFIG_KSI8560 is not set | ||
165 | # CONFIG_STX_GP3 is not set | 166 | # CONFIG_STX_GP3 is not set |
166 | # CONFIG_TQM8540 is not set | 167 | # CONFIG_TQM8540 is not set |
167 | # CONFIG_TQM8541 is not set | 168 | # CONFIG_TQM8541 is not set |
@@ -202,6 +203,7 @@ CONFIG_PREEMPT_NONE=y | |||
202 | # CONFIG_PREEMPT is not set | 203 | # CONFIG_PREEMPT is not set |
203 | CONFIG_BINFMT_ELF=y | 204 | CONFIG_BINFMT_ELF=y |
204 | CONFIG_BINFMT_MISC=m | 205 | CONFIG_BINFMT_MISC=m |
206 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
205 | CONFIG_MATH_EMULATION=y | 207 | CONFIG_MATH_EMULATION=y |
206 | # CONFIG_IOMMU_HELPER is not set | 208 | # CONFIG_IOMMU_HELPER is not set |
207 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 209 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
@@ -1255,7 +1257,19 @@ CONFIG_RTC_DRV_CMOS=y | |||
1255 | # | 1257 | # |
1256 | # on-CPU RTC drivers | 1258 | # on-CPU RTC drivers |
1257 | # | 1259 | # |
1258 | # CONFIG_DMADEVICES is not set | 1260 | CONFIG_DMADEVICES=y |
1261 | |||
1262 | # | ||
1263 | # DMA Devices | ||
1264 | # | ||
1265 | CONFIG_FSL_DMA=y | ||
1266 | # CONFIG_FSL_DMA_SELFTEST is not set | ||
1267 | CONFIG_DMA_ENGINE=y | ||
1268 | |||
1269 | # | ||
1270 | # DMA Clients | ||
1271 | # | ||
1272 | # CONFIG_NET_DMA is not set | ||
1259 | 1273 | ||
1260 | # | 1274 | # |
1261 | # Userspace I/O | 1275 | # Userspace I/O |
@@ -1447,6 +1461,7 @@ CONFIG_PLIST=y | |||
1447 | CONFIG_HAS_IOMEM=y | 1461 | CONFIG_HAS_IOMEM=y |
1448 | CONFIG_HAS_IOPORT=y | 1462 | CONFIG_HAS_IOPORT=y |
1449 | CONFIG_HAS_DMA=y | 1463 | CONFIG_HAS_DMA=y |
1464 | CONFIG_HAVE_LMB=y | ||
1450 | 1465 | ||
1451 | # | 1466 | # |
1452 | # Kernel hacking | 1467 | # Kernel hacking |
diff --git a/arch/powerpc/configs/mpc8560_ads_defconfig b/arch/powerpc/configs/85xx/mpc8560_ads_defconfig index 851ac9115617..851ac9115617 100644 --- a/arch/powerpc/configs/mpc8560_ads_defconfig +++ b/arch/powerpc/configs/85xx/mpc8560_ads_defconfig | |||
diff --git a/arch/powerpc/configs/mpc8568mds_defconfig b/arch/powerpc/configs/85xx/mpc8568mds_defconfig index 2b866b385607..2b866b385607 100644 --- a/arch/powerpc/configs/mpc8568mds_defconfig +++ b/arch/powerpc/configs/85xx/mpc8568mds_defconfig | |||
diff --git a/arch/powerpc/configs/mpc8572_ds_defconfig b/arch/powerpc/configs/85xx/mpc8572_ds_defconfig index 53aa6f3173a5..53aa6f3173a5 100644 --- a/arch/powerpc/configs/mpc8572_ds_defconfig +++ b/arch/powerpc/configs/85xx/mpc8572_ds_defconfig | |||
diff --git a/arch/powerpc/configs/mpc85xx_cds_defconfig b/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig index a469fe918816..a469fe918816 100644 --- a/arch/powerpc/configs/mpc85xx_cds_defconfig +++ b/arch/powerpc/configs/85xx/mpc85xx_cds_defconfig | |||
diff --git a/arch/powerpc/configs/sbc8548_defconfig b/arch/powerpc/configs/85xx/sbc8548_defconfig index 67f67978c742..67f67978c742 100644 --- a/arch/powerpc/configs/sbc8548_defconfig +++ b/arch/powerpc/configs/85xx/sbc8548_defconfig | |||
diff --git a/arch/powerpc/configs/sbc8560_defconfig b/arch/powerpc/configs/85xx/sbc8560_defconfig index fef605579e29..fef605579e29 100644 --- a/arch/powerpc/configs/sbc8560_defconfig +++ b/arch/powerpc/configs/85xx/sbc8560_defconfig | |||
diff --git a/arch/powerpc/configs/stx_gp3_defconfig b/arch/powerpc/configs/85xx/stx_gp3_defconfig index 1d303c49bb0c..1d303c49bb0c 100644 --- a/arch/powerpc/configs/stx_gp3_defconfig +++ b/arch/powerpc/configs/85xx/stx_gp3_defconfig | |||
diff --git a/arch/powerpc/configs/tqm8540_defconfig b/arch/powerpc/configs/85xx/tqm8540_defconfig index d39ee3b35bfc..d39ee3b35bfc 100644 --- a/arch/powerpc/configs/tqm8540_defconfig +++ b/arch/powerpc/configs/85xx/tqm8540_defconfig | |||
diff --git a/arch/powerpc/configs/tqm8541_defconfig b/arch/powerpc/configs/85xx/tqm8541_defconfig index cbf6ad2d71da..cbf6ad2d71da 100644 --- a/arch/powerpc/configs/tqm8541_defconfig +++ b/arch/powerpc/configs/85xx/tqm8541_defconfig | |||
diff --git a/arch/powerpc/configs/tqm8555_defconfig b/arch/powerpc/configs/85xx/tqm8555_defconfig index bbff962c8472..bbff962c8472 100644 --- a/arch/powerpc/configs/tqm8555_defconfig +++ b/arch/powerpc/configs/85xx/tqm8555_defconfig | |||
diff --git a/arch/powerpc/configs/tqm8560_defconfig b/arch/powerpc/configs/85xx/tqm8560_defconfig index 63c5ec8b6515..63c5ec8b6515 100644 --- a/arch/powerpc/configs/tqm8560_defconfig +++ b/arch/powerpc/configs/85xx/tqm8560_defconfig | |||
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig index 38b85b211c38..d7fd298bd234 100644 --- a/arch/powerpc/configs/chrp32_defconfig +++ b/arch/powerpc/configs/chrp32_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Mar 20 10:33:36 2008 | 4 | # Thu Mar 27 13:55:37 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -74,8 +74,6 @@ CONFIG_IKCONFIG_PROC=y | |||
74 | CONFIG_LOG_BUF_SHIFT=15 | 74 | CONFIG_LOG_BUF_SHIFT=15 |
75 | # CONFIG_CGROUPS is not set | 75 | # CONFIG_CGROUPS is not set |
76 | # CONFIG_GROUP_SCHED is not set | 76 | # CONFIG_GROUP_SCHED is not set |
77 | # CONFIG_USER_SCHED is not set | ||
78 | # CONFIG_CGROUP_SCHED is not set | ||
79 | CONFIG_SYSFS_DEPRECATED=y | 77 | CONFIG_SYSFS_DEPRECATED=y |
80 | CONFIG_SYSFS_DEPRECATED_V2=y | 78 | CONFIG_SYSFS_DEPRECATED_V2=y |
81 | # CONFIG_RELAY is not set | 79 | # CONFIG_RELAY is not set |
@@ -243,7 +241,7 @@ CONFIG_PCI_SYSCALL=y | |||
243 | # CONFIG_PCIEPORTBUS is not set | 241 | # CONFIG_PCIEPORTBUS is not set |
244 | CONFIG_ARCH_SUPPORTS_MSI=y | 242 | CONFIG_ARCH_SUPPORTS_MSI=y |
245 | # CONFIG_PCI_MSI is not set | 243 | # CONFIG_PCI_MSI is not set |
246 | CONFIG_PCI_LEGACY=y | 244 | # CONFIG_PCI_LEGACY is not set |
247 | # CONFIG_PCI_DEBUG is not set | 245 | # CONFIG_PCI_DEBUG is not set |
248 | # CONFIG_PCCARD is not set | 246 | # CONFIG_PCCARD is not set |
249 | # CONFIG_HOTPLUG_PCI is not set | 247 | # CONFIG_HOTPLUG_PCI is not set |
@@ -1328,6 +1326,7 @@ CONFIG_PLIST=y | |||
1328 | CONFIG_HAS_IOMEM=y | 1326 | CONFIG_HAS_IOMEM=y |
1329 | CONFIG_HAS_IOPORT=y | 1327 | CONFIG_HAS_IOPORT=y |
1330 | CONFIG_HAS_DMA=y | 1328 | CONFIG_HAS_DMA=y |
1329 | CONFIG_HAVE_LMB=y | ||
1331 | 1330 | ||
1332 | # | 1331 | # |
1333 | # Kernel hacking | 1332 | # Kernel hacking |
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig index 0f82f66a60f8..a20501f89474 100644 --- a/arch/powerpc/configs/g5_defconfig +++ b/arch/powerpc/configs/g5_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Mar 20 10:36:41 2008 | 4 | # Thu Mar 27 13:55:43 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -77,8 +77,6 @@ CONFIG_IKCONFIG_PROC=y | |||
77 | CONFIG_LOG_BUF_SHIFT=17 | 77 | CONFIG_LOG_BUF_SHIFT=17 |
78 | # CONFIG_CGROUPS is not set | 78 | # CONFIG_CGROUPS is not set |
79 | # CONFIG_GROUP_SCHED is not set | 79 | # CONFIG_GROUP_SCHED is not set |
80 | # CONFIG_USER_SCHED is not set | ||
81 | # CONFIG_CGROUP_SCHED is not set | ||
82 | CONFIG_SYSFS_DEPRECATED=y | 80 | CONFIG_SYSFS_DEPRECATED=y |
83 | CONFIG_SYSFS_DEPRECATED_V2=y | 81 | CONFIG_SYSFS_DEPRECATED_V2=y |
84 | # CONFIG_RELAY is not set | 82 | # CONFIG_RELAY is not set |
@@ -276,7 +274,7 @@ CONFIG_PCI_SYSCALL=y | |||
276 | # CONFIG_PCIEPORTBUS is not set | 274 | # CONFIG_PCIEPORTBUS is not set |
277 | CONFIG_ARCH_SUPPORTS_MSI=y | 275 | CONFIG_ARCH_SUPPORTS_MSI=y |
278 | CONFIG_PCI_MSI=y | 276 | CONFIG_PCI_MSI=y |
279 | CONFIG_PCI_LEGACY=y | 277 | # CONFIG_PCI_LEGACY is not set |
280 | # CONFIG_PCI_DEBUG is not set | 278 | # CONFIG_PCI_DEBUG is not set |
281 | # CONFIG_PCCARD is not set | 279 | # CONFIG_PCCARD is not set |
282 | # CONFIG_HOTPLUG_PCI is not set | 280 | # CONFIG_HOTPLUG_PCI is not set |
@@ -1596,6 +1594,7 @@ CONFIG_PLIST=y | |||
1596 | CONFIG_HAS_IOMEM=y | 1594 | CONFIG_HAS_IOMEM=y |
1597 | CONFIG_HAS_IOPORT=y | 1595 | CONFIG_HAS_IOPORT=y |
1598 | CONFIG_HAS_DMA=y | 1596 | CONFIG_HAS_DMA=y |
1597 | CONFIG_HAVE_LMB=y | ||
1599 | 1598 | ||
1600 | # | 1599 | # |
1601 | # Kernel hacking | 1600 | # Kernel hacking |
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig index 8d9a84f50157..b3128fb7ce7e 100644 --- a/arch/powerpc/configs/iseries_defconfig +++ b/arch/powerpc/configs/iseries_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Mar 20 10:43:46 2008 | 4 | # Thu Mar 27 13:55:45 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -77,8 +77,6 @@ CONFIG_IKCONFIG_PROC=y | |||
77 | CONFIG_LOG_BUF_SHIFT=17 | 77 | CONFIG_LOG_BUF_SHIFT=17 |
78 | # CONFIG_CGROUPS is not set | 78 | # CONFIG_CGROUPS is not set |
79 | # CONFIG_GROUP_SCHED is not set | 79 | # CONFIG_GROUP_SCHED is not set |
80 | # CONFIG_USER_SCHED is not set | ||
81 | # CONFIG_CGROUP_SCHED is not set | ||
82 | CONFIG_SYSFS_DEPRECATED=y | 80 | CONFIG_SYSFS_DEPRECATED=y |
83 | CONFIG_SYSFS_DEPRECATED_V2=y | 81 | CONFIG_SYSFS_DEPRECATED_V2=y |
84 | # CONFIG_RELAY is not set | 82 | # CONFIG_RELAY is not set |
@@ -261,7 +259,7 @@ CONFIG_PCI_SYSCALL=y | |||
261 | # CONFIG_PCIEPORTBUS is not set | 259 | # CONFIG_PCIEPORTBUS is not set |
262 | CONFIG_ARCH_SUPPORTS_MSI=y | 260 | CONFIG_ARCH_SUPPORTS_MSI=y |
263 | # CONFIG_PCI_MSI is not set | 261 | # CONFIG_PCI_MSI is not set |
264 | CONFIG_PCI_LEGACY=y | 262 | # CONFIG_PCI_LEGACY is not set |
265 | # CONFIG_PCI_DEBUG is not set | 263 | # CONFIG_PCI_DEBUG is not set |
266 | # CONFIG_PCCARD is not set | 264 | # CONFIG_PCCARD is not set |
267 | # CONFIG_HOTPLUG_PCI is not set | 265 | # CONFIG_HOTPLUG_PCI is not set |
@@ -1065,6 +1063,7 @@ CONFIG_PLIST=y | |||
1065 | CONFIG_HAS_IOMEM=y | 1063 | CONFIG_HAS_IOMEM=y |
1066 | CONFIG_HAS_IOPORT=y | 1064 | CONFIG_HAS_IOPORT=y |
1067 | CONFIG_HAS_DMA=y | 1065 | CONFIG_HAS_DMA=y |
1066 | CONFIG_HAVE_LMB=y | ||
1068 | 1067 | ||
1069 | # | 1068 | # |
1070 | # Kernel hacking | 1069 | # Kernel hacking |
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig index 8b810d056440..7a166a39d92d 100644 --- a/arch/powerpc/configs/maple_defconfig +++ b/arch/powerpc/configs/maple_defconfig | |||
@@ -333,7 +333,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
333 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 333 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
334 | CONFIG_STANDALONE=y | 334 | CONFIG_STANDALONE=y |
335 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 335 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
336 | # CONFIG_FW_LOADER is not set | 336 | CONFIG_FW_LOADER=y |
337 | # CONFIG_DEBUG_DRIVER is not set | 337 | # CONFIG_DEBUG_DRIVER is not set |
338 | # CONFIG_DEBUG_DEVRES is not set | 338 | # CONFIG_DEBUG_DEVRES is not set |
339 | # CONFIG_SYS_HYPERVISOR is not set | 339 | # CONFIG_SYS_HYPERVISOR is not set |
@@ -374,6 +374,7 @@ CONFIG_BLK_DEV_IDEDISK=y | |||
374 | CONFIG_BLK_DEV_IDECD=y | 374 | CONFIG_BLK_DEV_IDECD=y |
375 | # CONFIG_BLK_DEV_IDETAPE is not set | 375 | # CONFIG_BLK_DEV_IDETAPE is not set |
376 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 376 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
377 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
377 | CONFIG_IDE_TASK_IOCTL=y | 378 | CONFIG_IDE_TASK_IOCTL=y |
378 | CONFIG_IDE_PROC_FS=y | 379 | CONFIG_IDE_PROC_FS=y |
379 | 380 | ||
@@ -427,10 +428,129 @@ CONFIG_IDE_ARCH_OBSOLETE_INIT=y | |||
427 | # SCSI device support | 428 | # SCSI device support |
428 | # | 429 | # |
429 | # CONFIG_RAID_ATTRS is not set | 430 | # CONFIG_RAID_ATTRS is not set |
430 | # CONFIG_SCSI is not set | 431 | CONFIG_SCSI=y |
431 | # CONFIG_SCSI_DMA is not set | 432 | CONFIG_SCSI_DMA=y |
433 | # CONFIG_SCSI_TGT is not set | ||
432 | # CONFIG_SCSI_NETLINK is not set | 434 | # CONFIG_SCSI_NETLINK is not set |
433 | # CONFIG_ATA is not set | 435 | # CONFIG_SCSI_PROC_FS is not set |
436 | |||
437 | # | ||
438 | # SCSI support type (disk, tape, CD-ROM) | ||
439 | # | ||
440 | CONFIG_BLK_DEV_SD=y | ||
441 | # CONFIG_CHR_DEV_ST is not set | ||
442 | # CONFIG_CHR_DEV_OSST is not set | ||
443 | # CONFIG_BLK_DEV_SR is not set | ||
444 | CONFIG_CHR_DEV_SG=y | ||
445 | # CONFIG_CHR_DEV_SCH is not set | ||
446 | |||
447 | # | ||
448 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
449 | # | ||
450 | # CONFIG_SCSI_MULTI_LUN is not set | ||
451 | # CONFIG_SCSI_CONSTANTS is not set | ||
452 | # CONFIG_SCSI_LOGGING is not set | ||
453 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
454 | CONFIG_SCSI_WAIT_SCAN=m | ||
455 | |||
456 | # | ||
457 | # SCSI Transports | ||
458 | # | ||
459 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
460 | # CONFIG_SCSI_FC_ATTRS is not set | ||
461 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
462 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
463 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
464 | CONFIG_SCSI_LOWLEVEL=y | ||
465 | # CONFIG_ISCSI_TCP is not set | ||
466 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
467 | # CONFIG_SCSI_3W_9XXX is not set | ||
468 | # CONFIG_SCSI_ACARD is not set | ||
469 | # CONFIG_SCSI_AACRAID is not set | ||
470 | # CONFIG_SCSI_AIC7XXX is not set | ||
471 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
472 | # CONFIG_SCSI_AIC79XX is not set | ||
473 | # CONFIG_SCSI_AIC94XX is not set | ||
474 | # CONFIG_SCSI_ARCMSR is not set | ||
475 | # CONFIG_MEGARAID_NEWGEN is not set | ||
476 | # CONFIG_MEGARAID_LEGACY is not set | ||
477 | # CONFIG_MEGARAID_SAS is not set | ||
478 | # CONFIG_SCSI_HPTIOP is not set | ||
479 | # CONFIG_SCSI_DMX3191D is not set | ||
480 | # CONFIG_SCSI_EATA is not set | ||
481 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
482 | # CONFIG_SCSI_GDTH is not set | ||
483 | # CONFIG_SCSI_IPS is not set | ||
484 | # CONFIG_SCSI_INITIO is not set | ||
485 | # CONFIG_SCSI_INIA100 is not set | ||
486 | # CONFIG_SCSI_STEX is not set | ||
487 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
488 | CONFIG_SCSI_IPR=y | ||
489 | CONFIG_SCSI_IPR_TRACE=y | ||
490 | CONFIG_SCSI_IPR_DUMP=y | ||
491 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
492 | # CONFIG_SCSI_QLA_FC is not set | ||
493 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
494 | # CONFIG_SCSI_LPFC is not set | ||
495 | # CONFIG_SCSI_DC395x is not set | ||
496 | # CONFIG_SCSI_DC390T is not set | ||
497 | # CONFIG_SCSI_DEBUG is not set | ||
498 | # CONFIG_SCSI_SRP is not set | ||
499 | CONFIG_ATA=y | ||
500 | CONFIG_ATA_NONSTANDARD=y | ||
501 | # CONFIG_SATA_AHCI is not set | ||
502 | # CONFIG_SATA_SVW is not set | ||
503 | # CONFIG_ATA_PIIX is not set | ||
504 | # CONFIG_SATA_MV is not set | ||
505 | # CONFIG_SATA_NV is not set | ||
506 | # CONFIG_PDC_ADMA is not set | ||
507 | # CONFIG_SATA_QSTOR is not set | ||
508 | # CONFIG_SATA_PROMISE is not set | ||
509 | # CONFIG_SATA_SX4 is not set | ||
510 | # CONFIG_SATA_SIL is not set | ||
511 | # CONFIG_SATA_SIL24 is not set | ||
512 | # CONFIG_SATA_SIS is not set | ||
513 | # CONFIG_SATA_ULI is not set | ||
514 | # CONFIG_SATA_VIA is not set | ||
515 | # CONFIG_SATA_VITESSE is not set | ||
516 | # CONFIG_SATA_INIC162X is not set | ||
517 | # CONFIG_PATA_ALI is not set | ||
518 | # CONFIG_PATA_AMD is not set | ||
519 | # CONFIG_PATA_ARTOP is not set | ||
520 | # CONFIG_PATA_ATIIXP is not set | ||
521 | # CONFIG_PATA_CMD640_PCI is not set | ||
522 | # CONFIG_PATA_CMD64X is not set | ||
523 | # CONFIG_PATA_CS5520 is not set | ||
524 | # CONFIG_PATA_CS5530 is not set | ||
525 | # CONFIG_PATA_CYPRESS is not set | ||
526 | # CONFIG_PATA_EFAR is not set | ||
527 | # CONFIG_ATA_GENERIC is not set | ||
528 | # CONFIG_PATA_HPT366 is not set | ||
529 | # CONFIG_PATA_HPT37X is not set | ||
530 | # CONFIG_PATA_HPT3X2N is not set | ||
531 | # CONFIG_PATA_HPT3X3 is not set | ||
532 | # CONFIG_PATA_IT821X is not set | ||
533 | # CONFIG_PATA_IT8213 is not set | ||
534 | # CONFIG_PATA_JMICRON is not set | ||
535 | # CONFIG_PATA_TRIFLEX is not set | ||
536 | # CONFIG_PATA_MARVELL is not set | ||
537 | # CONFIG_PATA_MPIIX is not set | ||
538 | # CONFIG_PATA_OLDPIIX is not set | ||
539 | # CONFIG_PATA_NETCELL is not set | ||
540 | # CONFIG_PATA_NS87410 is not set | ||
541 | # CONFIG_PATA_NS87415 is not set | ||
542 | # CONFIG_PATA_OPTI is not set | ||
543 | # CONFIG_PATA_OPTIDMA is not set | ||
544 | # CONFIG_PATA_PDC_OLD is not set | ||
545 | # CONFIG_PATA_RADISYS is not set | ||
546 | # CONFIG_PATA_RZ1000 is not set | ||
547 | # CONFIG_PATA_SC1200 is not set | ||
548 | # CONFIG_PATA_SERVERWORKS is not set | ||
549 | # CONFIG_PATA_PDC2027X is not set | ||
550 | # CONFIG_PATA_SIL680 is not set | ||
551 | # CONFIG_PATA_SIS is not set | ||
552 | # CONFIG_PATA_VIA is not set | ||
553 | # CONFIG_PATA_WINBOND is not set | ||
434 | # CONFIG_MD is not set | 554 | # CONFIG_MD is not set |
435 | # CONFIG_FUSION is not set | 555 | # CONFIG_FUSION is not set |
436 | 556 | ||
@@ -536,6 +656,7 @@ CONFIG_USB_PEGASUS=y | |||
536 | # CONFIG_HIPPI is not set | 656 | # CONFIG_HIPPI is not set |
537 | # CONFIG_PPP is not set | 657 | # CONFIG_PPP is not set |
538 | # CONFIG_SLIP is not set | 658 | # CONFIG_SLIP is not set |
659 | # CONFIG_NET_FC is not set | ||
539 | # CONFIG_SHAPER is not set | 660 | # CONFIG_SHAPER is not set |
540 | # CONFIG_NETCONSOLE is not set | 661 | # CONFIG_NETCONSOLE is not set |
541 | # CONFIG_NETPOLL is not set | 662 | # CONFIG_NETPOLL is not set |
@@ -783,12 +904,14 @@ CONFIG_USB_UHCI_HCD=y | |||
783 | # | 904 | # |
784 | # may also be needed; see USB_STORAGE Help for more information | 905 | # may also be needed; see USB_STORAGE Help for more information |
785 | # | 906 | # |
907 | # CONFIG_USB_STORAGE is not set | ||
786 | # CONFIG_USB_LIBUSUAL is not set | 908 | # CONFIG_USB_LIBUSUAL is not set |
787 | 909 | ||
788 | # | 910 | # |
789 | # USB Imaging devices | 911 | # USB Imaging devices |
790 | # | 912 | # |
791 | # CONFIG_USB_MDC800 is not set | 913 | # CONFIG_USB_MDC800 is not set |
914 | # CONFIG_USB_MICROTEK is not set | ||
792 | CONFIG_USB_MON=y | 915 | CONFIG_USB_MON=y |
793 | 916 | ||
794 | # | 917 | # |
diff --git a/arch/powerpc/configs/mpc83xx_defconfig b/arch/powerpc/configs/mpc83xx_defconfig index 029d2dab7deb..9e0dd8201691 100644 --- a/arch/powerpc/configs/mpc83xx_defconfig +++ b/arch/powerpc/configs/mpc83xx_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc9 |
4 | # Mon Mar 24 08:48:25 2008 | 4 | # Tue Apr 15 18:07:36 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -201,6 +201,7 @@ CONFIG_PREEMPT_NONE=y | |||
201 | # CONFIG_PREEMPT is not set | 201 | # CONFIG_PREEMPT is not set |
202 | CONFIG_BINFMT_ELF=y | 202 | CONFIG_BINFMT_ELF=y |
203 | # CONFIG_BINFMT_MISC is not set | 203 | # CONFIG_BINFMT_MISC is not set |
204 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
204 | CONFIG_MATH_EMULATION=y | 205 | CONFIG_MATH_EMULATION=y |
205 | # CONFIG_IOMMU_HELPER is not set | 206 | # CONFIG_IOMMU_HELPER is not set |
206 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 207 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
@@ -353,7 +354,90 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
353 | # CONFIG_FW_LOADER is not set | 354 | # CONFIG_FW_LOADER is not set |
354 | # CONFIG_SYS_HYPERVISOR is not set | 355 | # CONFIG_SYS_HYPERVISOR is not set |
355 | # CONFIG_CONNECTOR is not set | 356 | # CONFIG_CONNECTOR is not set |
356 | # CONFIG_MTD is not set | 357 | CONFIG_MTD=y |
358 | # CONFIG_MTD_DEBUG is not set | ||
359 | # CONFIG_MTD_CONCAT is not set | ||
360 | CONFIG_MTD_PARTITIONS=y | ||
361 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
362 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
363 | CONFIG_MTD_OF_PARTS=y | ||
364 | |||
365 | # | ||
366 | # User Modules And Translation Layers | ||
367 | # | ||
368 | CONFIG_MTD_CHAR=y | ||
369 | CONFIG_MTD_BLKDEVS=y | ||
370 | CONFIG_MTD_BLOCK=y | ||
371 | # CONFIG_FTL is not set | ||
372 | # CONFIG_NFTL is not set | ||
373 | # CONFIG_INFTL is not set | ||
374 | # CONFIG_RFD_FTL is not set | ||
375 | # CONFIG_SSFDC is not set | ||
376 | # CONFIG_MTD_OOPS is not set | ||
377 | |||
378 | # | ||
379 | # RAM/ROM/Flash chip drivers | ||
380 | # | ||
381 | CONFIG_MTD_CFI=y | ||
382 | # CONFIG_MTD_JEDECPROBE is not set | ||
383 | CONFIG_MTD_GEN_PROBE=y | ||
384 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
385 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
386 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
387 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
388 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
389 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
390 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
391 | CONFIG_MTD_CFI_I1=y | ||
392 | CONFIG_MTD_CFI_I2=y | ||
393 | # CONFIG_MTD_CFI_I4 is not set | ||
394 | # CONFIG_MTD_CFI_I8 is not set | ||
395 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
396 | CONFIG_MTD_CFI_AMDSTD=y | ||
397 | # CONFIG_MTD_CFI_STAA is not set | ||
398 | CONFIG_MTD_CFI_UTIL=y | ||
399 | # CONFIG_MTD_RAM is not set | ||
400 | # CONFIG_MTD_ROM is not set | ||
401 | # CONFIG_MTD_ABSENT is not set | ||
402 | |||
403 | # | ||
404 | # Mapping drivers for chip access | ||
405 | # | ||
406 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
407 | # CONFIG_MTD_PHYSMAP is not set | ||
408 | CONFIG_MTD_PHYSMAP_OF=y | ||
409 | # CONFIG_MTD_PLATRAM is not set | ||
410 | |||
411 | # | ||
412 | # Self-contained MTD device drivers | ||
413 | # | ||
414 | # CONFIG_MTD_SLRAM is not set | ||
415 | # CONFIG_MTD_PHRAM is not set | ||
416 | # CONFIG_MTD_MTDRAM is not set | ||
417 | # CONFIG_MTD_BLOCK2MTD is not set | ||
418 | |||
419 | # | ||
420 | # Disk-On-Chip Device Drivers | ||
421 | # | ||
422 | # CONFIG_MTD_DOC2000 is not set | ||
423 | # CONFIG_MTD_DOC2001 is not set | ||
424 | # CONFIG_MTD_DOC2001PLUS is not set | ||
425 | CONFIG_MTD_NAND=y | ||
426 | CONFIG_MTD_NAND_VERIFY_WRITE=y | ||
427 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
428 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
429 | CONFIG_MTD_NAND_IDS=y | ||
430 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
431 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
432 | # CONFIG_MTD_NAND_PLATFORM is not set | ||
433 | # CONFIG_MTD_ALAUDA is not set | ||
434 | CONFIG_MTD_NAND_FSL_ELBC=y | ||
435 | # CONFIG_MTD_ONENAND is not set | ||
436 | |||
437 | # | ||
438 | # UBI - Unsorted block images | ||
439 | # | ||
440 | # CONFIG_MTD_UBI is not set | ||
357 | CONFIG_OF_DEVICE=y | 441 | CONFIG_OF_DEVICE=y |
358 | # CONFIG_PARPORT is not set | 442 | # CONFIG_PARPORT is not set |
359 | CONFIG_BLK_DEV=y | 443 | CONFIG_BLK_DEV=y |
@@ -362,6 +446,7 @@ CONFIG_BLK_DEV=y | |||
362 | CONFIG_BLK_DEV_LOOP=y | 446 | CONFIG_BLK_DEV_LOOP=y |
363 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 447 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
364 | # CONFIG_BLK_DEV_NBD is not set | 448 | # CONFIG_BLK_DEV_NBD is not set |
449 | # CONFIG_BLK_DEV_UB is not set | ||
365 | CONFIG_BLK_DEV_RAM=y | 450 | CONFIG_BLK_DEV_RAM=y |
366 | CONFIG_BLK_DEV_RAM_COUNT=16 | 451 | CONFIG_BLK_DEV_RAM_COUNT=16 |
367 | CONFIG_BLK_DEV_RAM_SIZE=32768 | 452 | CONFIG_BLK_DEV_RAM_SIZE=32768 |
@@ -469,6 +554,15 @@ CONFIG_NETDEV_10000=y | |||
469 | # | 554 | # |
470 | # CONFIG_WLAN_PRE80211 is not set | 555 | # CONFIG_WLAN_PRE80211 is not set |
471 | # CONFIG_WLAN_80211 is not set | 556 | # CONFIG_WLAN_80211 is not set |
557 | |||
558 | # | ||
559 | # USB Network Adapters | ||
560 | # | ||
561 | # CONFIG_USB_CATC is not set | ||
562 | # CONFIG_USB_KAWETH is not set | ||
563 | # CONFIG_USB_PEGASUS is not set | ||
564 | # CONFIG_USB_RTL8150 is not set | ||
565 | # CONFIG_USB_USBNET is not set | ||
472 | # CONFIG_WAN is not set | 566 | # CONFIG_WAN is not set |
473 | # CONFIG_PPP is not set | 567 | # CONFIG_PPP is not set |
474 | # CONFIG_SLIP is not set | 568 | # CONFIG_SLIP is not set |
@@ -563,6 +657,7 @@ CONFIG_I2C_MPC=y | |||
563 | # CONFIG_I2C_SIMTEC is not set | 657 | # CONFIG_I2C_SIMTEC is not set |
564 | # CONFIG_I2C_TAOS_EVM is not set | 658 | # CONFIG_I2C_TAOS_EVM is not set |
565 | # CONFIG_I2C_STUB is not set | 659 | # CONFIG_I2C_STUB is not set |
660 | # CONFIG_I2C_TINY_USB is not set | ||
566 | 661 | ||
567 | # | 662 | # |
568 | # Miscellaneous I2C Chip support | 663 | # Miscellaneous I2C Chip support |
@@ -648,6 +743,11 @@ CONFIG_WATCHDOG=y | |||
648 | CONFIG_83xx_WDT=y | 743 | CONFIG_83xx_WDT=y |
649 | 744 | ||
650 | # | 745 | # |
746 | # USB-based Watchdog Cards | ||
747 | # | ||
748 | # CONFIG_USBPCWATCHDOG is not set | ||
749 | |||
750 | # | ||
651 | # Sonics Silicon Backplane | 751 | # Sonics Silicon Backplane |
652 | # | 752 | # |
653 | CONFIG_SSB_POSSIBLE=y | 753 | CONFIG_SSB_POSSIBLE=y |
@@ -664,6 +764,7 @@ CONFIG_SSB_POSSIBLE=y | |||
664 | # CONFIG_VIDEO_DEV is not set | 764 | # CONFIG_VIDEO_DEV is not set |
665 | # CONFIG_DVB_CORE is not set | 765 | # CONFIG_DVB_CORE is not set |
666 | CONFIG_DAB=y | 766 | CONFIG_DAB=y |
767 | # CONFIG_USB_DABUSB is not set | ||
667 | 768 | ||
668 | # | 769 | # |
669 | # Graphics support | 770 | # Graphics support |
@@ -686,6 +787,14 @@ CONFIG_HID_SUPPORT=y | |||
686 | CONFIG_HID=y | 787 | CONFIG_HID=y |
687 | # CONFIG_HID_DEBUG is not set | 788 | # CONFIG_HID_DEBUG is not set |
688 | # CONFIG_HIDRAW is not set | 789 | # CONFIG_HIDRAW is not set |
790 | |||
791 | # | ||
792 | # USB Input Devices | ||
793 | # | ||
794 | CONFIG_USB_HID=y | ||
795 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
796 | # CONFIG_HID_FF is not set | ||
797 | # CONFIG_USB_HIDDEV is not set | ||
689 | CONFIG_USB_SUPPORT=y | 798 | CONFIG_USB_SUPPORT=y |
690 | CONFIG_USB_ARCH_HAS_HCD=y | 799 | CONFIG_USB_ARCH_HAS_HCD=y |
691 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 800 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
@@ -715,8 +824,55 @@ CONFIG_USB_EHCI_HCD_PPC_OF=y | |||
715 | # CONFIG_USB_R8A66597_HCD is not set | 824 | # CONFIG_USB_R8A66597_HCD is not set |
716 | 825 | ||
717 | # | 826 | # |
827 | # USB Device Class drivers | ||
828 | # | ||
829 | # CONFIG_USB_ACM is not set | ||
830 | # CONFIG_USB_PRINTER is not set | ||
831 | |||
832 | # | ||
718 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 833 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
719 | # | 834 | # |
835 | |||
836 | # | ||
837 | # may also be needed; see USB_STORAGE Help for more information | ||
838 | # | ||
839 | # CONFIG_USB_STORAGE is not set | ||
840 | # CONFIG_USB_LIBUSUAL is not set | ||
841 | |||
842 | # | ||
843 | # USB Imaging devices | ||
844 | # | ||
845 | # CONFIG_USB_MDC800 is not set | ||
846 | # CONFIG_USB_MICROTEK is not set | ||
847 | CONFIG_USB_MON=y | ||
848 | |||
849 | # | ||
850 | # USB port drivers | ||
851 | # | ||
852 | # CONFIG_USB_SERIAL is not set | ||
853 | |||
854 | # | ||
855 | # USB Miscellaneous drivers | ||
856 | # | ||
857 | # CONFIG_USB_EMI62 is not set | ||
858 | # CONFIG_USB_EMI26 is not set | ||
859 | # CONFIG_USB_ADUTUX is not set | ||
860 | # CONFIG_USB_AUERSWALD is not set | ||
861 | # CONFIG_USB_RIO500 is not set | ||
862 | # CONFIG_USB_LEGOTOWER is not set | ||
863 | # CONFIG_USB_LCD is not set | ||
864 | # CONFIG_USB_BERRY_CHARGE is not set | ||
865 | # CONFIG_USB_LED is not set | ||
866 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
867 | # CONFIG_USB_CYTHERM is not set | ||
868 | # CONFIG_USB_PHIDGET is not set | ||
869 | # CONFIG_USB_IDMOUSE is not set | ||
870 | # CONFIG_USB_FTDI_ELAN is not set | ||
871 | # CONFIG_USB_APPLEDISPLAY is not set | ||
872 | # CONFIG_USB_SISUSBVGA is not set | ||
873 | # CONFIG_USB_LD is not set | ||
874 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
875 | # CONFIG_USB_IOWARRIOR is not set | ||
720 | # CONFIG_USB_GADGET is not set | 876 | # CONFIG_USB_GADGET is not set |
721 | # CONFIG_MMC is not set | 877 | # CONFIG_MMC is not set |
722 | # CONFIG_MEMSTICK is not set | 878 | # CONFIG_MEMSTICK is not set |
@@ -792,6 +948,7 @@ CONFIG_TMPFS=y | |||
792 | # CONFIG_BEFS_FS is not set | 948 | # CONFIG_BEFS_FS is not set |
793 | # CONFIG_BFS_FS is not set | 949 | # CONFIG_BFS_FS is not set |
794 | # CONFIG_EFS_FS is not set | 950 | # CONFIG_EFS_FS is not set |
951 | # CONFIG_JFFS2_FS is not set | ||
795 | # CONFIG_CRAMFS is not set | 952 | # CONFIG_CRAMFS is not set |
796 | # CONFIG_VXFS_FS is not set | 953 | # CONFIG_VXFS_FS is not set |
797 | # CONFIG_MINIX_FS is not set | 954 | # CONFIG_MINIX_FS is not set |
@@ -862,6 +1019,7 @@ CONFIG_PLIST=y | |||
862 | CONFIG_HAS_IOMEM=y | 1019 | CONFIG_HAS_IOMEM=y |
863 | CONFIG_HAS_IOPORT=y | 1020 | CONFIG_HAS_IOPORT=y |
864 | CONFIG_HAS_DMA=y | 1021 | CONFIG_HAS_DMA=y |
1022 | CONFIG_HAVE_LMB=y | ||
865 | 1023 | ||
866 | # | 1024 | # |
867 | # Kernel hacking | 1025 | # Kernel hacking |
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig index 558b0d348d4f..fca114252ac7 100644 --- a/arch/powerpc/configs/pmac32_defconfig +++ b/arch/powerpc/configs/pmac32_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Mar 20 11:05:14 2008 | 4 | # Thu Mar 27 13:56:21 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -77,8 +77,6 @@ CONFIG_IKCONFIG_PROC=y | |||
77 | CONFIG_LOG_BUF_SHIFT=14 | 77 | CONFIG_LOG_BUF_SHIFT=14 |
78 | # CONFIG_CGROUPS is not set | 78 | # CONFIG_CGROUPS is not set |
79 | # CONFIG_GROUP_SCHED is not set | 79 | # CONFIG_GROUP_SCHED is not set |
80 | # CONFIG_USER_SCHED is not set | ||
81 | # CONFIG_CGROUP_SCHED is not set | ||
82 | CONFIG_SYSFS_DEPRECATED=y | 80 | CONFIG_SYSFS_DEPRECATED=y |
83 | CONFIG_SYSFS_DEPRECATED_V2=y | 81 | CONFIG_SYSFS_DEPRECATED_V2=y |
84 | # CONFIG_RELAY is not set | 82 | # CONFIG_RELAY is not set |
@@ -272,7 +270,7 @@ CONFIG_PCI_SYSCALL=y | |||
272 | # CONFIG_PCIEPORTBUS is not set | 270 | # CONFIG_PCIEPORTBUS is not set |
273 | CONFIG_ARCH_SUPPORTS_MSI=y | 271 | CONFIG_ARCH_SUPPORTS_MSI=y |
274 | # CONFIG_PCI_MSI is not set | 272 | # CONFIG_PCI_MSI is not set |
275 | CONFIG_PCI_LEGACY=y | 273 | # CONFIG_PCI_LEGACY is not set |
276 | # CONFIG_PCI_DEBUG is not set | 274 | # CONFIG_PCI_DEBUG is not set |
277 | CONFIG_PCCARD=m | 275 | CONFIG_PCCARD=m |
278 | # CONFIG_PCMCIA_DEBUG is not set | 276 | # CONFIG_PCMCIA_DEBUG is not set |
@@ -1895,6 +1893,7 @@ CONFIG_PLIST=y | |||
1895 | CONFIG_HAS_IOMEM=y | 1893 | CONFIG_HAS_IOMEM=y |
1896 | CONFIG_HAS_IOPORT=y | 1894 | CONFIG_HAS_IOPORT=y |
1897 | CONFIG_HAS_DMA=y | 1895 | CONFIG_HAS_DMA=y |
1896 | CONFIG_HAVE_LMB=y | ||
1898 | 1897 | ||
1899 | # | 1898 | # |
1900 | # Kernel hacking | 1899 | # Kernel hacking |
diff --git a/arch/powerpc/configs/ppc40x_defconfig b/arch/powerpc/configs/ppc40x_defconfig new file mode 100644 index 000000000000..9d0140e3838e --- /dev/null +++ b/arch/powerpc/configs/ppc40x_defconfig | |||
@@ -0,0 +1,896 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.25-rc9 | ||
4 | # Tue Apr 15 08:46:44 2008 | ||
5 | # | ||
6 | # CONFIG_PPC64 is not set | ||
7 | |||
8 | # | ||
9 | # Processor support | ||
10 | # | ||
11 | # CONFIG_6xx is not set | ||
12 | # CONFIG_PPC_85xx is not set | ||
13 | # CONFIG_PPC_8xx is not set | ||
14 | CONFIG_40x=y | ||
15 | # CONFIG_44x is not set | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_4xx=y | ||
18 | # CONFIG_PPC_MM_SLICES is not set | ||
19 | CONFIG_NOT_COHERENT_CACHE=y | ||
20 | CONFIG_PPC32=y | ||
21 | CONFIG_WORD_SIZE=32 | ||
22 | CONFIG_PPC_MERGE=y | ||
23 | CONFIG_MMU=y | ||
24 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
25 | CONFIG_GENERIC_TIME=y | ||
26 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
27 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
28 | CONFIG_GENERIC_HARDIRQS=y | ||
29 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
30 | CONFIG_IRQ_PER_CPU=y | ||
31 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
32 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
33 | CONFIG_GENERIC_HWEIGHT=y | ||
34 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
35 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
36 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
37 | CONFIG_PPC=y | ||
38 | CONFIG_EARLY_PRINTK=y | ||
39 | CONFIG_GENERIC_NVRAM=y | ||
40 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
41 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
42 | CONFIG_PPC_OF=y | ||
43 | CONFIG_OF=y | ||
44 | CONFIG_PPC_UDBG_16550=y | ||
45 | # CONFIG_GENERIC_TBSYNC is not set | ||
46 | CONFIG_AUDIT_ARCH=y | ||
47 | CONFIG_GENERIC_BUG=y | ||
48 | # CONFIG_DEFAULT_UIMAGE is not set | ||
49 | CONFIG_PPC_DCR_NATIVE=y | ||
50 | # CONFIG_PPC_DCR_MMIO is not set | ||
51 | CONFIG_PPC_DCR=y | ||
52 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
53 | |||
54 | # | ||
55 | # General setup | ||
56 | # | ||
57 | CONFIG_EXPERIMENTAL=y | ||
58 | CONFIG_BROKEN_ON_SMP=y | ||
59 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
60 | CONFIG_LOCALVERSION="" | ||
61 | CONFIG_LOCALVERSION_AUTO=y | ||
62 | CONFIG_SWAP=y | ||
63 | CONFIG_SYSVIPC=y | ||
64 | CONFIG_SYSVIPC_SYSCTL=y | ||
65 | CONFIG_POSIX_MQUEUE=y | ||
66 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
67 | # CONFIG_TASKSTATS is not set | ||
68 | # CONFIG_AUDIT is not set | ||
69 | # CONFIG_IKCONFIG is not set | ||
70 | CONFIG_LOG_BUF_SHIFT=14 | ||
71 | # CONFIG_CGROUPS is not set | ||
72 | CONFIG_GROUP_SCHED=y | ||
73 | CONFIG_FAIR_GROUP_SCHED=y | ||
74 | # CONFIG_RT_GROUP_SCHED is not set | ||
75 | CONFIG_USER_SCHED=y | ||
76 | # CONFIG_CGROUP_SCHED is not set | ||
77 | CONFIG_SYSFS_DEPRECATED=y | ||
78 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
79 | # CONFIG_RELAY is not set | ||
80 | # CONFIG_NAMESPACES is not set | ||
81 | CONFIG_BLK_DEV_INITRD=y | ||
82 | CONFIG_INITRAMFS_SOURCE="" | ||
83 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
84 | CONFIG_SYSCTL=y | ||
85 | CONFIG_EMBEDDED=y | ||
86 | CONFIG_SYSCTL_SYSCALL=y | ||
87 | CONFIG_KALLSYMS=y | ||
88 | CONFIG_KALLSYMS_ALL=y | ||
89 | CONFIG_KALLSYMS_EXTRA_PASS=y | ||
90 | CONFIG_HOTPLUG=y | ||
91 | CONFIG_PRINTK=y | ||
92 | CONFIG_BUG=y | ||
93 | CONFIG_ELF_CORE=y | ||
94 | CONFIG_COMPAT_BRK=y | ||
95 | CONFIG_BASE_FULL=y | ||
96 | CONFIG_FUTEX=y | ||
97 | CONFIG_ANON_INODES=y | ||
98 | CONFIG_EPOLL=y | ||
99 | CONFIG_SIGNALFD=y | ||
100 | CONFIG_TIMERFD=y | ||
101 | CONFIG_EVENTFD=y | ||
102 | CONFIG_SHMEM=y | ||
103 | CONFIG_VM_EVENT_COUNTERS=y | ||
104 | CONFIG_SLUB_DEBUG=y | ||
105 | # CONFIG_SLAB is not set | ||
106 | CONFIG_SLUB=y | ||
107 | # CONFIG_SLOB is not set | ||
108 | # CONFIG_PROFILING is not set | ||
109 | # CONFIG_MARKERS is not set | ||
110 | CONFIG_HAVE_OPROFILE=y | ||
111 | # CONFIG_KPROBES is not set | ||
112 | CONFIG_HAVE_KPROBES=y | ||
113 | CONFIG_HAVE_KRETPROBES=y | ||
114 | CONFIG_PROC_PAGE_MONITOR=y | ||
115 | CONFIG_SLABINFO=y | ||
116 | CONFIG_RT_MUTEXES=y | ||
117 | # CONFIG_TINY_SHMEM is not set | ||
118 | CONFIG_BASE_SMALL=0 | ||
119 | CONFIG_MODULES=y | ||
120 | CONFIG_MODULE_UNLOAD=y | ||
121 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
122 | # CONFIG_MODVERSIONS is not set | ||
123 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
124 | CONFIG_KMOD=y | ||
125 | CONFIG_BLOCK=y | ||
126 | CONFIG_LBD=y | ||
127 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
128 | # CONFIG_LSF is not set | ||
129 | # CONFIG_BLK_DEV_BSG is not set | ||
130 | |||
131 | # | ||
132 | # IO Schedulers | ||
133 | # | ||
134 | CONFIG_IOSCHED_NOOP=y | ||
135 | CONFIG_IOSCHED_AS=y | ||
136 | CONFIG_IOSCHED_DEADLINE=y | ||
137 | CONFIG_IOSCHED_CFQ=y | ||
138 | CONFIG_DEFAULT_AS=y | ||
139 | # CONFIG_DEFAULT_DEADLINE is not set | ||
140 | # CONFIG_DEFAULT_CFQ is not set | ||
141 | # CONFIG_DEFAULT_NOOP is not set | ||
142 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
143 | CONFIG_CLASSIC_RCU=y | ||
144 | CONFIG_PPC4xx_PCI_EXPRESS=y | ||
145 | |||
146 | # | ||
147 | # Platform support | ||
148 | # | ||
149 | # CONFIG_PPC_MPC512x is not set | ||
150 | # CONFIG_PPC_MPC5121 is not set | ||
151 | # CONFIG_PPC_CELL is not set | ||
152 | # CONFIG_PPC_CELL_NATIVE is not set | ||
153 | # CONFIG_PQ2ADS is not set | ||
154 | CONFIG_EP405=y | ||
155 | CONFIG_KILAUEA=y | ||
156 | CONFIG_MAKALU=y | ||
157 | CONFIG_WALNUT=y | ||
158 | CONFIG_XILINX_VIRTEX_GENERIC_BOARD=y | ||
159 | CONFIG_405GP=y | ||
160 | CONFIG_405EX=y | ||
161 | CONFIG_XILINX_VIRTEX=y | ||
162 | CONFIG_XILINX_VIRTEX_II_PRO=y | ||
163 | CONFIG_XILINX_VIRTEX_4_FX=y | ||
164 | CONFIG_IBM405_ERR77=y | ||
165 | CONFIG_IBM405_ERR51=y | ||
166 | # CONFIG_IPIC is not set | ||
167 | # CONFIG_MPIC is not set | ||
168 | # CONFIG_MPIC_WEIRD is not set | ||
169 | # CONFIG_PPC_I8259 is not set | ||
170 | # CONFIG_PPC_RTAS is not set | ||
171 | # CONFIG_MMIO_NVRAM is not set | ||
172 | # CONFIG_PPC_MPC106 is not set | ||
173 | # CONFIG_PPC_970_NAP is not set | ||
174 | # CONFIG_PPC_INDIRECT_IO is not set | ||
175 | # CONFIG_GENERIC_IOMAP is not set | ||
176 | # CONFIG_CPU_FREQ is not set | ||
177 | # CONFIG_FSL_ULI1575 is not set | ||
178 | CONFIG_OF_RTC=y | ||
179 | |||
180 | # | ||
181 | # Kernel options | ||
182 | # | ||
183 | # CONFIG_HIGHMEM is not set | ||
184 | # CONFIG_TICK_ONESHOT is not set | ||
185 | # CONFIG_NO_HZ is not set | ||
186 | # CONFIG_HIGH_RES_TIMERS is not set | ||
187 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
188 | # CONFIG_HZ_100 is not set | ||
189 | CONFIG_HZ_250=y | ||
190 | # CONFIG_HZ_300 is not set | ||
191 | # CONFIG_HZ_1000 is not set | ||
192 | CONFIG_HZ=250 | ||
193 | # CONFIG_SCHED_HRTICK is not set | ||
194 | CONFIG_PREEMPT_NONE=y | ||
195 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
196 | # CONFIG_PREEMPT is not set | ||
197 | CONFIG_BINFMT_ELF=y | ||
198 | # CONFIG_BINFMT_MISC is not set | ||
199 | # CONFIG_MATH_EMULATION is not set | ||
200 | # CONFIG_IOMMU_HELPER is not set | ||
201 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
202 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
203 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
204 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
205 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
206 | CONFIG_SELECT_MEMORY_MODEL=y | ||
207 | CONFIG_FLATMEM_MANUAL=y | ||
208 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
209 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
210 | CONFIG_FLATMEM=y | ||
211 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
212 | # CONFIG_SPARSEMEM_STATIC is not set | ||
213 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
214 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
215 | CONFIG_RESOURCES_64BIT=y | ||
216 | CONFIG_ZONE_DMA_FLAG=1 | ||
217 | CONFIG_BOUNCE=y | ||
218 | CONFIG_VIRT_TO_BUS=y | ||
219 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
220 | CONFIG_PROC_DEVICETREE=y | ||
221 | # CONFIG_CMDLINE_BOOL is not set | ||
222 | # CONFIG_PM is not set | ||
223 | CONFIG_SECCOMP=y | ||
224 | CONFIG_ISA_DMA_API=y | ||
225 | |||
226 | # | ||
227 | # Bus options | ||
228 | # | ||
229 | CONFIG_ZONE_DMA=y | ||
230 | CONFIG_PPC_INDIRECT_PCI=y | ||
231 | CONFIG_4xx_SOC=y | ||
232 | CONFIG_PCI=y | ||
233 | CONFIG_PCI_DOMAINS=y | ||
234 | CONFIG_PCI_SYSCALL=y | ||
235 | # CONFIG_PCIEPORTBUS is not set | ||
236 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
237 | # CONFIG_PCI_MSI is not set | ||
238 | # CONFIG_PCI_LEGACY is not set | ||
239 | # CONFIG_PCI_DEBUG is not set | ||
240 | # CONFIG_PCCARD is not set | ||
241 | # CONFIG_HOTPLUG_PCI is not set | ||
242 | |||
243 | # | ||
244 | # Advanced setup | ||
245 | # | ||
246 | # CONFIG_ADVANCED_OPTIONS is not set | ||
247 | |||
248 | # | ||
249 | # Default settings for advanced configuration options are used | ||
250 | # | ||
251 | CONFIG_HIGHMEM_START=0xfe000000 | ||
252 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
253 | CONFIG_KERNEL_START=0xc0000000 | ||
254 | CONFIG_TASK_SIZE=0xc0000000 | ||
255 | CONFIG_CONSISTENT_START=0xff100000 | ||
256 | CONFIG_CONSISTENT_SIZE=0x00200000 | ||
257 | CONFIG_BOOT_LOAD=0x00400000 | ||
258 | |||
259 | # | ||
260 | # Networking | ||
261 | # | ||
262 | CONFIG_NET=y | ||
263 | |||
264 | # | ||
265 | # Networking options | ||
266 | # | ||
267 | CONFIG_PACKET=y | ||
268 | # CONFIG_PACKET_MMAP is not set | ||
269 | CONFIG_UNIX=y | ||
270 | # CONFIG_NET_KEY is not set | ||
271 | CONFIG_INET=y | ||
272 | # CONFIG_IP_MULTICAST is not set | ||
273 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
274 | CONFIG_IP_FIB_HASH=y | ||
275 | CONFIG_IP_PNP=y | ||
276 | CONFIG_IP_PNP_DHCP=y | ||
277 | CONFIG_IP_PNP_BOOTP=y | ||
278 | # CONFIG_IP_PNP_RARP is not set | ||
279 | # CONFIG_NET_IPIP is not set | ||
280 | # CONFIG_NET_IPGRE is not set | ||
281 | # CONFIG_ARPD is not set | ||
282 | # CONFIG_SYN_COOKIES is not set | ||
283 | # CONFIG_INET_AH is not set | ||
284 | # CONFIG_INET_ESP is not set | ||
285 | # CONFIG_INET_IPCOMP is not set | ||
286 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
287 | # CONFIG_INET_TUNNEL is not set | ||
288 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
289 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
290 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
291 | # CONFIG_INET_LRO is not set | ||
292 | CONFIG_INET_DIAG=y | ||
293 | CONFIG_INET_TCP_DIAG=y | ||
294 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
295 | CONFIG_TCP_CONG_CUBIC=y | ||
296 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
297 | # CONFIG_TCP_MD5SIG is not set | ||
298 | # CONFIG_IPV6 is not set | ||
299 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
300 | # CONFIG_INET6_TUNNEL is not set | ||
301 | # CONFIG_NETWORK_SECMARK is not set | ||
302 | # CONFIG_NETFILTER is not set | ||
303 | # CONFIG_IP_DCCP is not set | ||
304 | # CONFIG_IP_SCTP is not set | ||
305 | # CONFIG_TIPC is not set | ||
306 | # CONFIG_ATM is not set | ||
307 | # CONFIG_BRIDGE is not set | ||
308 | # CONFIG_VLAN_8021Q is not set | ||
309 | # CONFIG_DECNET is not set | ||
310 | # CONFIG_LLC2 is not set | ||
311 | # CONFIG_IPX is not set | ||
312 | # CONFIG_ATALK is not set | ||
313 | # CONFIG_X25 is not set | ||
314 | # CONFIG_LAPB is not set | ||
315 | # CONFIG_ECONET is not set | ||
316 | # CONFIG_WAN_ROUTER is not set | ||
317 | # CONFIG_NET_SCHED is not set | ||
318 | |||
319 | # | ||
320 | # Network testing | ||
321 | # | ||
322 | # CONFIG_NET_PKTGEN is not set | ||
323 | # CONFIG_HAMRADIO is not set | ||
324 | # CONFIG_CAN is not set | ||
325 | # CONFIG_IRDA is not set | ||
326 | # CONFIG_BT is not set | ||
327 | # CONFIG_AF_RXRPC is not set | ||
328 | |||
329 | # | ||
330 | # Wireless | ||
331 | # | ||
332 | # CONFIG_CFG80211 is not set | ||
333 | # CONFIG_WIRELESS_EXT is not set | ||
334 | # CONFIG_MAC80211 is not set | ||
335 | # CONFIG_IEEE80211 is not set | ||
336 | # CONFIG_RFKILL is not set | ||
337 | # CONFIG_NET_9P is not set | ||
338 | |||
339 | # | ||
340 | # Device Drivers | ||
341 | # | ||
342 | |||
343 | # | ||
344 | # Generic Driver Options | ||
345 | # | ||
346 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
347 | CONFIG_STANDALONE=y | ||
348 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
349 | CONFIG_FW_LOADER=y | ||
350 | # CONFIG_DEBUG_DRIVER is not set | ||
351 | # CONFIG_DEBUG_DEVRES is not set | ||
352 | # CONFIG_SYS_HYPERVISOR is not set | ||
353 | CONFIG_CONNECTOR=y | ||
354 | CONFIG_PROC_EVENTS=y | ||
355 | CONFIG_MTD=y | ||
356 | # CONFIG_MTD_DEBUG is not set | ||
357 | # CONFIG_MTD_CONCAT is not set | ||
358 | CONFIG_MTD_PARTITIONS=y | ||
359 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
360 | CONFIG_MTD_CMDLINE_PARTS=y | ||
361 | CONFIG_MTD_OF_PARTS=y | ||
362 | |||
363 | # | ||
364 | # User Modules And Translation Layers | ||
365 | # | ||
366 | CONFIG_MTD_CHAR=y | ||
367 | CONFIG_MTD_BLKDEVS=m | ||
368 | CONFIG_MTD_BLOCK=m | ||
369 | # CONFIG_MTD_BLOCK_RO is not set | ||
370 | # CONFIG_FTL is not set | ||
371 | # CONFIG_NFTL is not set | ||
372 | # CONFIG_INFTL is not set | ||
373 | # CONFIG_RFD_FTL is not set | ||
374 | # CONFIG_SSFDC is not set | ||
375 | # CONFIG_MTD_OOPS is not set | ||
376 | |||
377 | # | ||
378 | # RAM/ROM/Flash chip drivers | ||
379 | # | ||
380 | CONFIG_MTD_CFI=y | ||
381 | CONFIG_MTD_JEDECPROBE=y | ||
382 | CONFIG_MTD_GEN_PROBE=y | ||
383 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
384 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
385 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
386 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
387 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
388 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
389 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
390 | CONFIG_MTD_CFI_I1=y | ||
391 | CONFIG_MTD_CFI_I2=y | ||
392 | # CONFIG_MTD_CFI_I4 is not set | ||
393 | # CONFIG_MTD_CFI_I8 is not set | ||
394 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
395 | CONFIG_MTD_CFI_AMDSTD=y | ||
396 | # CONFIG_MTD_CFI_STAA is not set | ||
397 | CONFIG_MTD_CFI_UTIL=y | ||
398 | # CONFIG_MTD_RAM is not set | ||
399 | # CONFIG_MTD_ROM is not set | ||
400 | # CONFIG_MTD_ABSENT is not set | ||
401 | |||
402 | # | ||
403 | # Mapping drivers for chip access | ||
404 | # | ||
405 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
406 | # CONFIG_MTD_PHYSMAP is not set | ||
407 | CONFIG_MTD_PHYSMAP_OF=y | ||
408 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
409 | # CONFIG_MTD_PLATRAM is not set | ||
410 | |||
411 | # | ||
412 | # Self-contained MTD device drivers | ||
413 | # | ||
414 | # CONFIG_MTD_PMC551 is not set | ||
415 | # CONFIG_MTD_SLRAM is not set | ||
416 | # CONFIG_MTD_PHRAM is not set | ||
417 | # CONFIG_MTD_MTDRAM is not set | ||
418 | # CONFIG_MTD_BLOCK2MTD is not set | ||
419 | |||
420 | # | ||
421 | # Disk-On-Chip Device Drivers | ||
422 | # | ||
423 | # CONFIG_MTD_DOC2000 is not set | ||
424 | # CONFIG_MTD_DOC2001 is not set | ||
425 | # CONFIG_MTD_DOC2001PLUS is not set | ||
426 | # CONFIG_MTD_NAND is not set | ||
427 | # CONFIG_MTD_ONENAND is not set | ||
428 | |||
429 | # | ||
430 | # UBI - Unsorted block images | ||
431 | # | ||
432 | # CONFIG_MTD_UBI is not set | ||
433 | CONFIG_OF_DEVICE=y | ||
434 | # CONFIG_PARPORT is not set | ||
435 | CONFIG_BLK_DEV=y | ||
436 | # CONFIG_BLK_DEV_FD is not set | ||
437 | # CONFIG_BLK_CPQ_DA is not set | ||
438 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
439 | # CONFIG_BLK_DEV_DAC960 is not set | ||
440 | # CONFIG_BLK_DEV_UMEM is not set | ||
441 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
442 | # CONFIG_BLK_DEV_LOOP is not set | ||
443 | # CONFIG_BLK_DEV_NBD is not set | ||
444 | # CONFIG_BLK_DEV_SX8 is not set | ||
445 | CONFIG_BLK_DEV_RAM=y | ||
446 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
447 | CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
448 | # CONFIG_BLK_DEV_XIP is not set | ||
449 | # CONFIG_CDROM_PKTCDVD is not set | ||
450 | # CONFIG_ATA_OVER_ETH is not set | ||
451 | # CONFIG_XILINX_SYSACE is not set | ||
452 | CONFIG_MISC_DEVICES=y | ||
453 | # CONFIG_PHANTOM is not set | ||
454 | # CONFIG_EEPROM_93CX6 is not set | ||
455 | # CONFIG_SGI_IOC4 is not set | ||
456 | # CONFIG_TIFM_CORE is not set | ||
457 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
458 | CONFIG_HAVE_IDE=y | ||
459 | # CONFIG_IDE is not set | ||
460 | |||
461 | # | ||
462 | # SCSI device support | ||
463 | # | ||
464 | # CONFIG_RAID_ATTRS is not set | ||
465 | # CONFIG_SCSI is not set | ||
466 | # CONFIG_SCSI_DMA is not set | ||
467 | # CONFIG_SCSI_NETLINK is not set | ||
468 | # CONFIG_ATA is not set | ||
469 | # CONFIG_MD is not set | ||
470 | # CONFIG_FUSION is not set | ||
471 | |||
472 | # | ||
473 | # IEEE 1394 (FireWire) support | ||
474 | # | ||
475 | # CONFIG_FIREWIRE is not set | ||
476 | # CONFIG_IEEE1394 is not set | ||
477 | # CONFIG_I2O is not set | ||
478 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
479 | CONFIG_NETDEVICES=y | ||
480 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
481 | # CONFIG_DUMMY is not set | ||
482 | # CONFIG_BONDING is not set | ||
483 | # CONFIG_MACVLAN is not set | ||
484 | # CONFIG_EQUALIZER is not set | ||
485 | # CONFIG_TUN is not set | ||
486 | # CONFIG_VETH is not set | ||
487 | # CONFIG_ARCNET is not set | ||
488 | # CONFIG_PHYLIB is not set | ||
489 | CONFIG_NET_ETHERNET=y | ||
490 | # CONFIG_MII is not set | ||
491 | # CONFIG_HAPPYMEAL is not set | ||
492 | # CONFIG_SUNGEM is not set | ||
493 | # CONFIG_CASSINI is not set | ||
494 | # CONFIG_NET_VENDOR_3COM is not set | ||
495 | # CONFIG_NET_TULIP is not set | ||
496 | # CONFIG_HP100 is not set | ||
497 | CONFIG_IBM_NEW_EMAC=y | ||
498 | CONFIG_IBM_NEW_EMAC_RXB=128 | ||
499 | CONFIG_IBM_NEW_EMAC_TXB=64 | ||
500 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
501 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
502 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
503 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
504 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
505 | CONFIG_IBM_NEW_EMAC_RGMII=y | ||
506 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
507 | CONFIG_IBM_NEW_EMAC_EMAC4=y | ||
508 | # CONFIG_NET_PCI is not set | ||
509 | # CONFIG_B44 is not set | ||
510 | CONFIG_NETDEV_1000=y | ||
511 | # CONFIG_ACENIC is not set | ||
512 | # CONFIG_DL2K is not set | ||
513 | # CONFIG_E1000 is not set | ||
514 | # CONFIG_E1000E is not set | ||
515 | # CONFIG_E1000E_ENABLED is not set | ||
516 | # CONFIG_IP1000 is not set | ||
517 | # CONFIG_IGB is not set | ||
518 | # CONFIG_NS83820 is not set | ||
519 | # CONFIG_HAMACHI is not set | ||
520 | # CONFIG_YELLOWFIN is not set | ||
521 | # CONFIG_R8169 is not set | ||
522 | # CONFIG_SIS190 is not set | ||
523 | # CONFIG_SKGE is not set | ||
524 | # CONFIG_SKY2 is not set | ||
525 | # CONFIG_SK98LIN is not set | ||
526 | # CONFIG_VIA_VELOCITY is not set | ||
527 | # CONFIG_TIGON3 is not set | ||
528 | # CONFIG_BNX2 is not set | ||
529 | # CONFIG_QLA3XXX is not set | ||
530 | # CONFIG_ATL1 is not set | ||
531 | CONFIG_NETDEV_10000=y | ||
532 | # CONFIG_CHELSIO_T1 is not set | ||
533 | # CONFIG_CHELSIO_T3 is not set | ||
534 | # CONFIG_IXGBE is not set | ||
535 | # CONFIG_IXGB is not set | ||
536 | # CONFIG_S2IO is not set | ||
537 | # CONFIG_MYRI10GE is not set | ||
538 | # CONFIG_NETXEN_NIC is not set | ||
539 | # CONFIG_NIU is not set | ||
540 | # CONFIG_MLX4_CORE is not set | ||
541 | # CONFIG_TEHUTI is not set | ||
542 | # CONFIG_BNX2X is not set | ||
543 | # CONFIG_TR is not set | ||
544 | |||
545 | # | ||
546 | # Wireless LAN | ||
547 | # | ||
548 | # CONFIG_WLAN_PRE80211 is not set | ||
549 | # CONFIG_WLAN_80211 is not set | ||
550 | # CONFIG_WAN is not set | ||
551 | # CONFIG_FDDI is not set | ||
552 | # CONFIG_HIPPI is not set | ||
553 | # CONFIG_PPP is not set | ||
554 | # CONFIG_SLIP is not set | ||
555 | # CONFIG_NETCONSOLE is not set | ||
556 | # CONFIG_NETPOLL is not set | ||
557 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
558 | # CONFIG_ISDN is not set | ||
559 | # CONFIG_PHONE is not set | ||
560 | |||
561 | # | ||
562 | # Input device support | ||
563 | # | ||
564 | # CONFIG_INPUT is not set | ||
565 | |||
566 | # | ||
567 | # Hardware I/O ports | ||
568 | # | ||
569 | # CONFIG_SERIO is not set | ||
570 | # CONFIG_GAMEPORT is not set | ||
571 | |||
572 | # | ||
573 | # Character devices | ||
574 | # | ||
575 | # CONFIG_VT is not set | ||
576 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
577 | # CONFIG_NOZOMI is not set | ||
578 | |||
579 | # | ||
580 | # Serial drivers | ||
581 | # | ||
582 | CONFIG_SERIAL_8250=y | ||
583 | CONFIG_SERIAL_8250_CONSOLE=y | ||
584 | CONFIG_SERIAL_8250_PCI=y | ||
585 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
586 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
587 | CONFIG_SERIAL_8250_EXTENDED=y | ||
588 | # CONFIG_SERIAL_8250_MANY_PORTS is not set | ||
589 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
590 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
591 | # CONFIG_SERIAL_8250_RSA is not set | ||
592 | |||
593 | # | ||
594 | # Non-8250 serial port support | ||
595 | # | ||
596 | # CONFIG_SERIAL_UARTLITE is not set | ||
597 | CONFIG_SERIAL_CORE=y | ||
598 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
599 | # CONFIG_SERIAL_JSM is not set | ||
600 | CONFIG_SERIAL_OF_PLATFORM=y | ||
601 | CONFIG_UNIX98_PTYS=y | ||
602 | CONFIG_LEGACY_PTYS=y | ||
603 | CONFIG_LEGACY_PTY_COUNT=256 | ||
604 | # CONFIG_IPMI_HANDLER is not set | ||
605 | # CONFIG_HW_RANDOM is not set | ||
606 | # CONFIG_NVRAM is not set | ||
607 | # CONFIG_GEN_RTC is not set | ||
608 | CONFIG_XILINX_HWICAP=m | ||
609 | # CONFIG_R3964 is not set | ||
610 | # CONFIG_APPLICOM is not set | ||
611 | # CONFIG_RAW_DRIVER is not set | ||
612 | # CONFIG_TCG_TPM is not set | ||
613 | CONFIG_DEVPORT=y | ||
614 | # CONFIG_I2C is not set | ||
615 | |||
616 | # | ||
617 | # SPI support | ||
618 | # | ||
619 | # CONFIG_SPI is not set | ||
620 | # CONFIG_SPI_MASTER is not set | ||
621 | # CONFIG_W1 is not set | ||
622 | # CONFIG_POWER_SUPPLY is not set | ||
623 | # CONFIG_HWMON is not set | ||
624 | CONFIG_THERMAL=y | ||
625 | # CONFIG_WATCHDOG is not set | ||
626 | |||
627 | # | ||
628 | # Sonics Silicon Backplane | ||
629 | # | ||
630 | CONFIG_SSB_POSSIBLE=y | ||
631 | # CONFIG_SSB is not set | ||
632 | |||
633 | # | ||
634 | # Multifunction device drivers | ||
635 | # | ||
636 | # CONFIG_MFD_SM501 is not set | ||
637 | |||
638 | # | ||
639 | # Multimedia devices | ||
640 | # | ||
641 | # CONFIG_VIDEO_DEV is not set | ||
642 | # CONFIG_DVB_CORE is not set | ||
643 | # CONFIG_DAB is not set | ||
644 | |||
645 | # | ||
646 | # Graphics support | ||
647 | # | ||
648 | # CONFIG_AGP is not set | ||
649 | # CONFIG_DRM is not set | ||
650 | # CONFIG_VGASTATE is not set | ||
651 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
652 | # CONFIG_FB is not set | ||
653 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
654 | |||
655 | # | ||
656 | # Display device support | ||
657 | # | ||
658 | # CONFIG_DISPLAY_SUPPORT is not set | ||
659 | |||
660 | # | ||
661 | # Sound | ||
662 | # | ||
663 | # CONFIG_SOUND is not set | ||
664 | CONFIG_USB_SUPPORT=y | ||
665 | CONFIG_USB_ARCH_HAS_HCD=y | ||
666 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
667 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
668 | # CONFIG_USB is not set | ||
669 | |||
670 | # | ||
671 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
672 | # | ||
673 | # CONFIG_USB_GADGET is not set | ||
674 | # CONFIG_MMC is not set | ||
675 | # CONFIG_MEMSTICK is not set | ||
676 | # CONFIG_NEW_LEDS is not set | ||
677 | # CONFIG_INFINIBAND is not set | ||
678 | # CONFIG_EDAC is not set | ||
679 | # CONFIG_RTC_CLASS is not set | ||
680 | # CONFIG_DMADEVICES is not set | ||
681 | |||
682 | # | ||
683 | # Userspace I/O | ||
684 | # | ||
685 | # CONFIG_UIO is not set | ||
686 | |||
687 | # | ||
688 | # File systems | ||
689 | # | ||
690 | CONFIG_EXT2_FS=y | ||
691 | # CONFIG_EXT2_FS_XATTR is not set | ||
692 | # CONFIG_EXT2_FS_XIP is not set | ||
693 | # CONFIG_EXT3_FS is not set | ||
694 | # CONFIG_EXT4DEV_FS is not set | ||
695 | # CONFIG_REISERFS_FS is not set | ||
696 | # CONFIG_JFS_FS is not set | ||
697 | # CONFIG_FS_POSIX_ACL is not set | ||
698 | # CONFIG_XFS_FS is not set | ||
699 | # CONFIG_GFS2_FS is not set | ||
700 | # CONFIG_OCFS2_FS is not set | ||
701 | CONFIG_DNOTIFY=y | ||
702 | CONFIG_INOTIFY=y | ||
703 | CONFIG_INOTIFY_USER=y | ||
704 | # CONFIG_QUOTA is not set | ||
705 | # CONFIG_AUTOFS_FS is not set | ||
706 | # CONFIG_AUTOFS4_FS is not set | ||
707 | # CONFIG_FUSE_FS is not set | ||
708 | |||
709 | # | ||
710 | # CD-ROM/DVD Filesystems | ||
711 | # | ||
712 | # CONFIG_ISO9660_FS is not set | ||
713 | # CONFIG_UDF_FS is not set | ||
714 | |||
715 | # | ||
716 | # DOS/FAT/NT Filesystems | ||
717 | # | ||
718 | # CONFIG_MSDOS_FS is not set | ||
719 | # CONFIG_VFAT_FS is not set | ||
720 | # CONFIG_NTFS_FS is not set | ||
721 | |||
722 | # | ||
723 | # Pseudo filesystems | ||
724 | # | ||
725 | CONFIG_PROC_FS=y | ||
726 | CONFIG_PROC_KCORE=y | ||
727 | CONFIG_PROC_SYSCTL=y | ||
728 | CONFIG_SYSFS=y | ||
729 | CONFIG_TMPFS=y | ||
730 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
731 | # CONFIG_HUGETLB_PAGE is not set | ||
732 | # CONFIG_CONFIGFS_FS is not set | ||
733 | |||
734 | # | ||
735 | # Miscellaneous filesystems | ||
736 | # | ||
737 | # CONFIG_ADFS_FS is not set | ||
738 | # CONFIG_AFFS_FS is not set | ||
739 | # CONFIG_HFS_FS is not set | ||
740 | # CONFIG_HFSPLUS_FS is not set | ||
741 | # CONFIG_BEFS_FS is not set | ||
742 | # CONFIG_BFS_FS is not set | ||
743 | # CONFIG_EFS_FS is not set | ||
744 | # CONFIG_JFFS2_FS is not set | ||
745 | CONFIG_CRAMFS=y | ||
746 | # CONFIG_VXFS_FS is not set | ||
747 | # CONFIG_MINIX_FS is not set | ||
748 | # CONFIG_HPFS_FS is not set | ||
749 | # CONFIG_QNX4FS_FS is not set | ||
750 | # CONFIG_ROMFS_FS is not set | ||
751 | # CONFIG_SYSV_FS is not set | ||
752 | # CONFIG_UFS_FS is not set | ||
753 | CONFIG_NETWORK_FILESYSTEMS=y | ||
754 | CONFIG_NFS_FS=y | ||
755 | CONFIG_NFS_V3=y | ||
756 | # CONFIG_NFS_V3_ACL is not set | ||
757 | # CONFIG_NFS_V4 is not set | ||
758 | # CONFIG_NFS_DIRECTIO is not set | ||
759 | # CONFIG_NFSD is not set | ||
760 | CONFIG_ROOT_NFS=y | ||
761 | CONFIG_LOCKD=y | ||
762 | CONFIG_LOCKD_V4=y | ||
763 | CONFIG_NFS_COMMON=y | ||
764 | CONFIG_SUNRPC=y | ||
765 | # CONFIG_SUNRPC_BIND34 is not set | ||
766 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
767 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
768 | # CONFIG_SMB_FS is not set | ||
769 | # CONFIG_CIFS is not set | ||
770 | # CONFIG_NCP_FS is not set | ||
771 | # CONFIG_CODA_FS is not set | ||
772 | # CONFIG_AFS_FS is not set | ||
773 | |||
774 | # | ||
775 | # Partition Types | ||
776 | # | ||
777 | # CONFIG_PARTITION_ADVANCED is not set | ||
778 | CONFIG_MSDOS_PARTITION=y | ||
779 | # CONFIG_NLS is not set | ||
780 | # CONFIG_DLM is not set | ||
781 | |||
782 | # | ||
783 | # Library routines | ||
784 | # | ||
785 | CONFIG_BITREVERSE=y | ||
786 | # CONFIG_CRC_CCITT is not set | ||
787 | # CONFIG_CRC16 is not set | ||
788 | # CONFIG_CRC_ITU_T is not set | ||
789 | CONFIG_CRC32=y | ||
790 | # CONFIG_CRC7 is not set | ||
791 | # CONFIG_LIBCRC32C is not set | ||
792 | CONFIG_ZLIB_INFLATE=y | ||
793 | CONFIG_PLIST=y | ||
794 | CONFIG_HAS_IOMEM=y | ||
795 | CONFIG_HAS_IOPORT=y | ||
796 | CONFIG_HAS_DMA=y | ||
797 | CONFIG_HAVE_LMB=y | ||
798 | |||
799 | # | ||
800 | # Kernel hacking | ||
801 | # | ||
802 | # CONFIG_PRINTK_TIME is not set | ||
803 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
804 | CONFIG_ENABLE_MUST_CHECK=y | ||
805 | CONFIG_MAGIC_SYSRQ=y | ||
806 | # CONFIG_UNUSED_SYMBOLS is not set | ||
807 | CONFIG_DEBUG_FS=y | ||
808 | # CONFIG_HEADERS_CHECK is not set | ||
809 | CONFIG_DEBUG_KERNEL=y | ||
810 | # CONFIG_DEBUG_SHIRQ is not set | ||
811 | CONFIG_DETECT_SOFTLOCKUP=y | ||
812 | CONFIG_SCHED_DEBUG=y | ||
813 | # CONFIG_SCHEDSTATS is not set | ||
814 | # CONFIG_TIMER_STATS is not set | ||
815 | # CONFIG_SLUB_DEBUG_ON is not set | ||
816 | # CONFIG_SLUB_STATS is not set | ||
817 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
818 | # CONFIG_RT_MUTEX_TESTER is not set | ||
819 | # CONFIG_DEBUG_SPINLOCK is not set | ||
820 | # CONFIG_DEBUG_MUTEXES is not set | ||
821 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
822 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
823 | # CONFIG_DEBUG_KOBJECT is not set | ||
824 | CONFIG_DEBUG_BUGVERBOSE=y | ||
825 | # CONFIG_DEBUG_INFO is not set | ||
826 | # CONFIG_DEBUG_VM is not set | ||
827 | # CONFIG_DEBUG_LIST is not set | ||
828 | # CONFIG_DEBUG_SG is not set | ||
829 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
830 | # CONFIG_RCU_TORTURE_TEST is not set | ||
831 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
832 | # CONFIG_FAULT_INJECTION is not set | ||
833 | # CONFIG_SAMPLES is not set | ||
834 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
835 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
836 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
837 | # CONFIG_DEBUGGER is not set | ||
838 | # CONFIG_VIRQ_DEBUG is not set | ||
839 | # CONFIG_BDI_SWITCH is not set | ||
840 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
841 | |||
842 | # | ||
843 | # Security options | ||
844 | # | ||
845 | # CONFIG_KEYS is not set | ||
846 | # CONFIG_SECURITY is not set | ||
847 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
848 | CONFIG_CRYPTO=y | ||
849 | CONFIG_CRYPTO_ALGAPI=y | ||
850 | CONFIG_CRYPTO_BLKCIPHER=y | ||
851 | # CONFIG_CRYPTO_SEQIV is not set | ||
852 | CONFIG_CRYPTO_MANAGER=y | ||
853 | # CONFIG_CRYPTO_HMAC is not set | ||
854 | # CONFIG_CRYPTO_XCBC is not set | ||
855 | # CONFIG_CRYPTO_NULL is not set | ||
856 | # CONFIG_CRYPTO_MD4 is not set | ||
857 | CONFIG_CRYPTO_MD5=y | ||
858 | # CONFIG_CRYPTO_SHA1 is not set | ||
859 | # CONFIG_CRYPTO_SHA256 is not set | ||
860 | # CONFIG_CRYPTO_SHA512 is not set | ||
861 | # CONFIG_CRYPTO_WP512 is not set | ||
862 | # CONFIG_CRYPTO_TGR192 is not set | ||
863 | # CONFIG_CRYPTO_GF128MUL is not set | ||
864 | CONFIG_CRYPTO_ECB=y | ||
865 | CONFIG_CRYPTO_CBC=y | ||
866 | CONFIG_CRYPTO_PCBC=y | ||
867 | # CONFIG_CRYPTO_LRW is not set | ||
868 | # CONFIG_CRYPTO_XTS is not set | ||
869 | # CONFIG_CRYPTO_CTR is not set | ||
870 | # CONFIG_CRYPTO_GCM is not set | ||
871 | # CONFIG_CRYPTO_CCM is not set | ||
872 | # CONFIG_CRYPTO_CRYPTD is not set | ||
873 | CONFIG_CRYPTO_DES=y | ||
874 | # CONFIG_CRYPTO_FCRYPT is not set | ||
875 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
876 | # CONFIG_CRYPTO_TWOFISH is not set | ||
877 | # CONFIG_CRYPTO_SERPENT is not set | ||
878 | # CONFIG_CRYPTO_AES is not set | ||
879 | # CONFIG_CRYPTO_CAST5 is not set | ||
880 | # CONFIG_CRYPTO_CAST6 is not set | ||
881 | # CONFIG_CRYPTO_TEA is not set | ||
882 | # CONFIG_CRYPTO_ARC4 is not set | ||
883 | # CONFIG_CRYPTO_KHAZAD is not set | ||
884 | # CONFIG_CRYPTO_ANUBIS is not set | ||
885 | # CONFIG_CRYPTO_SEED is not set | ||
886 | # CONFIG_CRYPTO_SALSA20 is not set | ||
887 | # CONFIG_CRYPTO_DEFLATE is not set | ||
888 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
889 | # CONFIG_CRYPTO_CRC32C is not set | ||
890 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
891 | # CONFIG_CRYPTO_TEST is not set | ||
892 | # CONFIG_CRYPTO_AUTHENC is not set | ||
893 | # CONFIG_CRYPTO_LZO is not set | ||
894 | CONFIG_CRYPTO_HW=y | ||
895 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
896 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/configs/ppc44x_defconfig b/arch/powerpc/configs/ppc44x_defconfig index 57bd775ef777..12f9b5a80220 100644 --- a/arch/powerpc/configs/ppc44x_defconfig +++ b/arch/powerpc/configs/ppc44x_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc2 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Fri Feb 15 21:57:35 2008 | 4 | # Sat Apr 5 09:35:48 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -79,6 +79,7 @@ CONFIG_FAIR_GROUP_SCHED=y | |||
79 | CONFIG_USER_SCHED=y | 79 | CONFIG_USER_SCHED=y |
80 | # CONFIG_CGROUP_SCHED is not set | 80 | # CONFIG_CGROUP_SCHED is not set |
81 | CONFIG_SYSFS_DEPRECATED=y | 81 | CONFIG_SYSFS_DEPRECATED=y |
82 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
82 | # CONFIG_RELAY is not set | 83 | # CONFIG_RELAY is not set |
83 | # CONFIG_NAMESPACES is not set | 84 | # CONFIG_NAMESPACES is not set |
84 | CONFIG_BLK_DEV_INITRD=y | 85 | CONFIG_BLK_DEV_INITRD=y |
@@ -113,6 +114,7 @@ CONFIG_SLUB=y | |||
113 | CONFIG_HAVE_OPROFILE=y | 114 | CONFIG_HAVE_OPROFILE=y |
114 | # CONFIG_KPROBES is not set | 115 | # CONFIG_KPROBES is not set |
115 | CONFIG_HAVE_KPROBES=y | 116 | CONFIG_HAVE_KPROBES=y |
117 | CONFIG_HAVE_KRETPROBES=y | ||
116 | CONFIG_PROC_PAGE_MONITOR=y | 118 | CONFIG_PROC_PAGE_MONITOR=y |
117 | CONFIG_SLABINFO=y | 119 | CONFIG_SLABINFO=y |
118 | CONFIG_RT_MUTEXES=y | 120 | CONFIG_RT_MUTEXES=y |
@@ -143,7 +145,6 @@ CONFIG_DEFAULT_AS=y | |||
143 | # CONFIG_DEFAULT_NOOP is not set | 145 | # CONFIG_DEFAULT_NOOP is not set |
144 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 146 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
145 | CONFIG_CLASSIC_RCU=y | 147 | CONFIG_CLASSIC_RCU=y |
146 | # CONFIG_PREEMPT_RCU is not set | ||
147 | CONFIG_PPC4xx_PCI_EXPRESS=y | 148 | CONFIG_PPC4xx_PCI_EXPRESS=y |
148 | 149 | ||
149 | # | 150 | # |
@@ -161,12 +162,15 @@ CONFIG_TAISHAN=y | |||
161 | CONFIG_KATMAI=y | 162 | CONFIG_KATMAI=y |
162 | CONFIG_RAINIER=y | 163 | CONFIG_RAINIER=y |
163 | CONFIG_WARP=y | 164 | CONFIG_WARP=y |
165 | CONFIG_CANYONLANDS=y | ||
166 | CONFIG_YOSEMITE=y | ||
164 | CONFIG_440EP=y | 167 | CONFIG_440EP=y |
165 | CONFIG_440EPX=y | 168 | CONFIG_440EPX=y |
166 | CONFIG_440GRX=y | 169 | CONFIG_440GRX=y |
167 | CONFIG_440GP=y | 170 | CONFIG_440GP=y |
168 | CONFIG_440GX=y | 171 | CONFIG_440GX=y |
169 | CONFIG_440SPe=y | 172 | CONFIG_440SPe=y |
173 | CONFIG_460EX=y | ||
170 | CONFIG_IBM440EP_ERR42=y | 174 | CONFIG_IBM440EP_ERR42=y |
171 | # CONFIG_IPIC is not set | 175 | # CONFIG_IPIC is not set |
172 | # CONFIG_MPIC is not set | 176 | # CONFIG_MPIC is not set |
@@ -199,7 +203,6 @@ CONFIG_HZ=250 | |||
199 | CONFIG_PREEMPT_NONE=y | 203 | CONFIG_PREEMPT_NONE=y |
200 | # CONFIG_PREEMPT_VOLUNTARY is not set | 204 | # CONFIG_PREEMPT_VOLUNTARY is not set |
201 | # CONFIG_PREEMPT is not set | 205 | # CONFIG_PREEMPT is not set |
202 | # CONFIG_RCU_TRACE is not set | ||
203 | CONFIG_BINFMT_ELF=y | 206 | CONFIG_BINFMT_ELF=y |
204 | # CONFIG_BINFMT_MISC is not set | 207 | # CONFIG_BINFMT_MISC is not set |
205 | CONFIG_MATH_EMULATION=y | 208 | CONFIG_MATH_EMULATION=y |
@@ -232,6 +235,7 @@ CONFIG_ISA_DMA_API=y | |||
232 | # | 235 | # |
233 | CONFIG_ZONE_DMA=y | 236 | CONFIG_ZONE_DMA=y |
234 | CONFIG_PPC_INDIRECT_PCI=y | 237 | CONFIG_PPC_INDIRECT_PCI=y |
238 | CONFIG_4xx_SOC=y | ||
235 | CONFIG_PCI=y | 239 | CONFIG_PCI=y |
236 | CONFIG_PCI_DOMAINS=y | 240 | CONFIG_PCI_DOMAINS=y |
237 | CONFIG_PCI_SYSCALL=y | 241 | CONFIG_PCI_SYSCALL=y |
@@ -678,6 +682,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
678 | # CONFIG_INFINIBAND is not set | 682 | # CONFIG_INFINIBAND is not set |
679 | # CONFIG_EDAC is not set | 683 | # CONFIG_EDAC is not set |
680 | # CONFIG_RTC_CLASS is not set | 684 | # CONFIG_RTC_CLASS is not set |
685 | # CONFIG_DMADEVICES is not set | ||
681 | 686 | ||
682 | # | 687 | # |
683 | # Userspace I/O | 688 | # Userspace I/O |
@@ -805,6 +810,7 @@ CONFIG_PLIST=y | |||
805 | CONFIG_HAS_IOMEM=y | 810 | CONFIG_HAS_IOMEM=y |
806 | CONFIG_HAS_IOPORT=y | 811 | CONFIG_HAS_IOPORT=y |
807 | CONFIG_HAS_DMA=y | 812 | CONFIG_HAS_DMA=y |
813 | CONFIG_HAVE_LMB=y | ||
808 | 814 | ||
809 | # | 815 | # |
810 | # Kernel hacking | 816 | # Kernel hacking |
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index 880ab7ad10c1..970282b1a004 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Mar 20 11:06:28 2008 | 4 | # Thu Mar 27 13:56:24 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -84,8 +84,6 @@ CONFIG_CGROUPS=y | |||
84 | # CONFIG_CGROUP_NS is not set | 84 | # CONFIG_CGROUP_NS is not set |
85 | CONFIG_CPUSETS=y | 85 | CONFIG_CPUSETS=y |
86 | # CONFIG_GROUP_SCHED is not set | 86 | # CONFIG_GROUP_SCHED is not set |
87 | # CONFIG_USER_SCHED is not set | ||
88 | # CONFIG_CGROUP_SCHED is not set | ||
89 | # CONFIG_CGROUP_CPUACCT is not set | 87 | # CONFIG_CGROUP_CPUACCT is not set |
90 | # CONFIG_RESOURCE_COUNTERS is not set | 88 | # CONFIG_RESOURCE_COUNTERS is not set |
91 | CONFIG_SYSFS_DEPRECATED=y | 89 | CONFIG_SYSFS_DEPRECATED=y |
@@ -289,6 +287,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 287 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
290 | CONFIG_KEXEC=y | 288 | CONFIG_KEXEC=y |
291 | # CONFIG_CRASH_DUMP is not set | 289 | # CONFIG_CRASH_DUMP is not set |
290 | # CONFIG_PHYP_DUMP is not set | ||
292 | CONFIG_IRQ_ALL_CPUS=y | 291 | CONFIG_IRQ_ALL_CPUS=y |
293 | # CONFIG_NUMA is not set | 292 | # CONFIG_NUMA is not set |
294 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 293 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
@@ -335,7 +334,7 @@ CONFIG_PCI_SYSCALL=y | |||
335 | # CONFIG_PCIEPORTBUS is not set | 334 | # CONFIG_PCIEPORTBUS is not set |
336 | CONFIG_ARCH_SUPPORTS_MSI=y | 335 | CONFIG_ARCH_SUPPORTS_MSI=y |
337 | CONFIG_PCI_MSI=y | 336 | CONFIG_PCI_MSI=y |
338 | CONFIG_PCI_LEGACY=y | 337 | # CONFIG_PCI_LEGACY is not set |
339 | # CONFIG_PCI_DEBUG is not set | 338 | # CONFIG_PCI_DEBUG is not set |
340 | CONFIG_PCCARD=y | 339 | CONFIG_PCCARD=y |
341 | # CONFIG_PCMCIA_DEBUG is not set | 340 | # CONFIG_PCMCIA_DEBUG is not set |
@@ -1881,6 +1880,7 @@ CONFIG_PLIST=y | |||
1881 | CONFIG_HAS_IOMEM=y | 1880 | CONFIG_HAS_IOMEM=y |
1882 | CONFIG_HAS_IOPORT=y | 1881 | CONFIG_HAS_IOPORT=y |
1883 | CONFIG_HAS_DMA=y | 1882 | CONFIG_HAS_DMA=y |
1883 | CONFIG_HAVE_LMB=y | ||
1884 | 1884 | ||
1885 | # | 1885 | # |
1886 | # Kernel hacking | 1886 | # Kernel hacking |
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index 755aca72b522..3e2593c60b12 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Mar 20 11:08:01 2008 | 4 | # Thu Mar 27 13:56:28 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -83,8 +83,6 @@ CONFIG_CGROUPS=y | |||
83 | CONFIG_CGROUP_NS=y | 83 | CONFIG_CGROUP_NS=y |
84 | CONFIG_CPUSETS=y | 84 | CONFIG_CPUSETS=y |
85 | # CONFIG_GROUP_SCHED is not set | 85 | # CONFIG_GROUP_SCHED is not set |
86 | # CONFIG_USER_SCHED is not set | ||
87 | # CONFIG_CGROUP_SCHED is not set | ||
88 | CONFIG_CGROUP_CPUACCT=y | 86 | CONFIG_CGROUP_CPUACCT=y |
89 | # CONFIG_RESOURCE_COUNTERS is not set | 87 | # CONFIG_RESOURCE_COUNTERS is not set |
90 | CONFIG_SYSFS_DEPRECATED=y | 88 | CONFIG_SYSFS_DEPRECATED=y |
@@ -237,6 +235,7 @@ CONFIG_ARCH_HAS_WALK_MEMORY=y | |||
237 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | 235 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y |
238 | CONFIG_KEXEC=y | 236 | CONFIG_KEXEC=y |
239 | # CONFIG_CRASH_DUMP is not set | 237 | # CONFIG_CRASH_DUMP is not set |
238 | # CONFIG_PHYP_DUMP is not set | ||
240 | CONFIG_IRQ_ALL_CPUS=y | 239 | CONFIG_IRQ_ALL_CPUS=y |
241 | CONFIG_NUMA=y | 240 | CONFIG_NUMA=y |
242 | CONFIG_NODES_SHIFT=4 | 241 | CONFIG_NODES_SHIFT=4 |
@@ -283,7 +282,7 @@ CONFIG_PCI_SYSCALL=y | |||
283 | # CONFIG_PCIEPORTBUS is not set | 282 | # CONFIG_PCIEPORTBUS is not set |
284 | CONFIG_ARCH_SUPPORTS_MSI=y | 283 | CONFIG_ARCH_SUPPORTS_MSI=y |
285 | CONFIG_PCI_MSI=y | 284 | CONFIG_PCI_MSI=y |
286 | CONFIG_PCI_LEGACY=y | 285 | # CONFIG_PCI_LEGACY is not set |
287 | # CONFIG_PCI_DEBUG is not set | 286 | # CONFIG_PCI_DEBUG is not set |
288 | # CONFIG_PCCARD is not set | 287 | # CONFIG_PCCARD is not set |
289 | CONFIG_HOTPLUG_PCI=m | 288 | CONFIG_HOTPLUG_PCI=m |
@@ -1519,6 +1518,7 @@ CONFIG_PLIST=y | |||
1519 | CONFIG_HAS_IOMEM=y | 1518 | CONFIG_HAS_IOMEM=y |
1520 | CONFIG_HAS_IOPORT=y | 1519 | CONFIG_HAS_IOPORT=y |
1521 | CONFIG_HAS_DMA=y | 1520 | CONFIG_HAS_DMA=y |
1521 | CONFIG_HAVE_LMB=y | ||
1522 | 1522 | ||
1523 | # | 1523 | # |
1524 | # Kernel hacking | 1524 | # Kernel hacking |
diff --git a/arch/powerpc/configs/sbc8641d_defconfig b/arch/powerpc/configs/sbc8641d_defconfig new file mode 100644 index 000000000000..3180125aa6c4 --- /dev/null +++ b/arch/powerpc/configs/sbc8641d_defconfig | |||
@@ -0,0 +1,1342 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.25-rc6 | ||
4 | # Thu Apr 10 18:03:25 2008 | ||
5 | # | ||
6 | # CONFIG_PPC64 is not set | ||
7 | |||
8 | # | ||
9 | # Processor support | ||
10 | # | ||
11 | CONFIG_6xx=y | ||
12 | # CONFIG_PPC_85xx is not set | ||
13 | # CONFIG_PPC_8xx is not set | ||
14 | # CONFIG_40x is not set | ||
15 | # CONFIG_44x is not set | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_PPC_FPU=y | ||
18 | CONFIG_ALTIVEC=y | ||
19 | CONFIG_PPC_STD_MMU=y | ||
20 | CONFIG_PPC_STD_MMU_32=y | ||
21 | # CONFIG_PPC_MM_SLICES is not set | ||
22 | CONFIG_SMP=y | ||
23 | CONFIG_NR_CPUS=2 | ||
24 | CONFIG_PPC32=y | ||
25 | CONFIG_WORD_SIZE=32 | ||
26 | CONFIG_PPC_MERGE=y | ||
27 | CONFIG_MMU=y | ||
28 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
29 | CONFIG_GENERIC_TIME=y | ||
30 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
31 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
32 | CONFIG_GENERIC_HARDIRQS=y | ||
33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
34 | CONFIG_IRQ_PER_CPU=y | ||
35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
36 | CONFIG_GENERIC_LOCKBREAK=y | ||
37 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
38 | CONFIG_GENERIC_HWEIGHT=y | ||
39 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
40 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
41 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
42 | CONFIG_PPC=y | ||
43 | CONFIG_EARLY_PRINTK=y | ||
44 | CONFIG_GENERIC_NVRAM=y | ||
45 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
46 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
47 | CONFIG_PPC_OF=y | ||
48 | CONFIG_OF=y | ||
49 | CONFIG_PPC_UDBG_16550=y | ||
50 | CONFIG_GENERIC_TBSYNC=y | ||
51 | CONFIG_AUDIT_ARCH=y | ||
52 | CONFIG_GENERIC_BUG=y | ||
53 | CONFIG_DEFAULT_UIMAGE=y | ||
54 | # CONFIG_PPC_DCR_NATIVE is not set | ||
55 | # CONFIG_PPC_DCR_MMIO is not set | ||
56 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
57 | |||
58 | # | ||
59 | # General setup | ||
60 | # | ||
61 | CONFIG_EXPERIMENTAL=y | ||
62 | CONFIG_LOCK_KERNEL=y | ||
63 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
64 | CONFIG_LOCALVERSION="" | ||
65 | CONFIG_LOCALVERSION_AUTO=y | ||
66 | CONFIG_SWAP=y | ||
67 | CONFIG_SYSVIPC=y | ||
68 | CONFIG_SYSVIPC_SYSCTL=y | ||
69 | CONFIG_POSIX_MQUEUE=y | ||
70 | CONFIG_BSD_PROCESS_ACCT=y | ||
71 | CONFIG_BSD_PROCESS_ACCT_V3=y | ||
72 | # CONFIG_TASKSTATS is not set | ||
73 | # CONFIG_AUDIT is not set | ||
74 | CONFIG_IKCONFIG=y | ||
75 | CONFIG_IKCONFIG_PROC=y | ||
76 | CONFIG_LOG_BUF_SHIFT=14 | ||
77 | # CONFIG_CGROUPS is not set | ||
78 | CONFIG_GROUP_SCHED=y | ||
79 | CONFIG_FAIR_GROUP_SCHED=y | ||
80 | # CONFIG_RT_GROUP_SCHED is not set | ||
81 | CONFIG_USER_SCHED=y | ||
82 | # CONFIG_CGROUP_SCHED is not set | ||
83 | CONFIG_SYSFS_DEPRECATED=y | ||
84 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
85 | CONFIG_RELAY=y | ||
86 | # CONFIG_NAMESPACES is not set | ||
87 | CONFIG_BLK_DEV_INITRD=y | ||
88 | CONFIG_INITRAMFS_SOURCE="" | ||
89 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
90 | CONFIG_SYSCTL=y | ||
91 | CONFIG_EMBEDDED=y | ||
92 | CONFIG_SYSCTL_SYSCALL=y | ||
93 | CONFIG_KALLSYMS=y | ||
94 | # CONFIG_KALLSYMS_ALL is not set | ||
95 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
96 | CONFIG_HOTPLUG=y | ||
97 | CONFIG_PRINTK=y | ||
98 | CONFIG_BUG=y | ||
99 | CONFIG_ELF_CORE=y | ||
100 | CONFIG_COMPAT_BRK=y | ||
101 | CONFIG_BASE_FULL=y | ||
102 | CONFIG_FUTEX=y | ||
103 | CONFIG_ANON_INODES=y | ||
104 | CONFIG_EPOLL=y | ||
105 | CONFIG_SIGNALFD=y | ||
106 | CONFIG_TIMERFD=y | ||
107 | CONFIG_EVENTFD=y | ||
108 | CONFIG_SHMEM=y | ||
109 | CONFIG_VM_EVENT_COUNTERS=y | ||
110 | CONFIG_SLAB=y | ||
111 | # CONFIG_SLUB is not set | ||
112 | # CONFIG_SLOB is not set | ||
113 | # CONFIG_PROFILING is not set | ||
114 | # CONFIG_MARKERS is not set | ||
115 | CONFIG_HAVE_OPROFILE=y | ||
116 | # CONFIG_KPROBES is not set | ||
117 | CONFIG_HAVE_KPROBES=y | ||
118 | CONFIG_HAVE_KRETPROBES=y | ||
119 | CONFIG_PROC_PAGE_MONITOR=y | ||
120 | CONFIG_SLABINFO=y | ||
121 | CONFIG_RT_MUTEXES=y | ||
122 | # CONFIG_TINY_SHMEM is not set | ||
123 | CONFIG_BASE_SMALL=0 | ||
124 | CONFIG_MODULES=y | ||
125 | CONFIG_MODULE_UNLOAD=y | ||
126 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
127 | # CONFIG_MODVERSIONS is not set | ||
128 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
129 | CONFIG_KMOD=y | ||
130 | CONFIG_STOP_MACHINE=y | ||
131 | CONFIG_BLOCK=y | ||
132 | # CONFIG_LBD is not set | ||
133 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
134 | # CONFIG_LSF is not set | ||
135 | # CONFIG_BLK_DEV_BSG is not set | ||
136 | |||
137 | # | ||
138 | # IO Schedulers | ||
139 | # | ||
140 | CONFIG_IOSCHED_NOOP=y | ||
141 | CONFIG_IOSCHED_AS=y | ||
142 | CONFIG_IOSCHED_DEADLINE=y | ||
143 | CONFIG_IOSCHED_CFQ=y | ||
144 | # CONFIG_DEFAULT_AS is not set | ||
145 | # CONFIG_DEFAULT_DEADLINE is not set | ||
146 | CONFIG_DEFAULT_CFQ=y | ||
147 | # CONFIG_DEFAULT_NOOP is not set | ||
148 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
149 | CONFIG_CLASSIC_RCU=y | ||
150 | |||
151 | # | ||
152 | # Platform support | ||
153 | # | ||
154 | # CONFIG_PPC_MULTIPLATFORM is not set | ||
155 | # CONFIG_PPC_82xx is not set | ||
156 | # CONFIG_PPC_83xx is not set | ||
157 | CONFIG_PPC_86xx=y | ||
158 | # CONFIG_PPC_MPC512x is not set | ||
159 | # CONFIG_PPC_MPC5121 is not set | ||
160 | # CONFIG_PPC_CELL is not set | ||
161 | # CONFIG_PPC_CELL_NATIVE is not set | ||
162 | # CONFIG_PQ2ADS is not set | ||
163 | # CONFIG_MPC8641_HPCN is not set | ||
164 | CONFIG_SBC8641D=y | ||
165 | # CONFIG_MPC8610_HPCD is not set | ||
166 | CONFIG_MPC8641=y | ||
167 | # CONFIG_IPIC is not set | ||
168 | CONFIG_MPIC=y | ||
169 | # CONFIG_MPIC_WEIRD is not set | ||
170 | # CONFIG_PPC_I8259 is not set | ||
171 | # CONFIG_PPC_RTAS is not set | ||
172 | # CONFIG_MMIO_NVRAM is not set | ||
173 | # CONFIG_PPC_MPC106 is not set | ||
174 | # CONFIG_PPC_970_NAP is not set | ||
175 | # CONFIG_PPC_INDIRECT_IO is not set | ||
176 | # CONFIG_GENERIC_IOMAP is not set | ||
177 | # CONFIG_CPU_FREQ is not set | ||
178 | # CONFIG_FSL_ULI1575 is not set | ||
179 | |||
180 | # | ||
181 | # Kernel options | ||
182 | # | ||
183 | # CONFIG_HIGHMEM is not set | ||
184 | CONFIG_TICK_ONESHOT=y | ||
185 | # CONFIG_NO_HZ is not set | ||
186 | CONFIG_HIGH_RES_TIMERS=y | ||
187 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
188 | # CONFIG_HZ_100 is not set | ||
189 | CONFIG_HZ_250=y | ||
190 | # CONFIG_HZ_300 is not set | ||
191 | # CONFIG_HZ_1000 is not set | ||
192 | CONFIG_HZ=250 | ||
193 | # CONFIG_SCHED_HRTICK is not set | ||
194 | # CONFIG_PREEMPT_NONE is not set | ||
195 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
196 | CONFIG_PREEMPT=y | ||
197 | # CONFIG_PREEMPT_RCU is not set | ||
198 | CONFIG_BINFMT_ELF=y | ||
199 | CONFIG_BINFMT_MISC=m | ||
200 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
201 | # CONFIG_IOMMU_HELPER is not set | ||
202 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
203 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
204 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
205 | CONFIG_IRQ_ALL_CPUS=y | ||
206 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
207 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
208 | CONFIG_SELECT_MEMORY_MODEL=y | ||
209 | CONFIG_FLATMEM_MANUAL=y | ||
210 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
211 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
212 | CONFIG_FLATMEM=y | ||
213 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
214 | # CONFIG_SPARSEMEM_STATIC is not set | ||
215 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
216 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
217 | # CONFIG_RESOURCES_64BIT is not set | ||
218 | CONFIG_ZONE_DMA_FLAG=1 | ||
219 | CONFIG_BOUNCE=y | ||
220 | CONFIG_VIRT_TO_BUS=y | ||
221 | # CONFIG_PROC_DEVICETREE is not set | ||
222 | # CONFIG_CMDLINE_BOOL is not set | ||
223 | # CONFIG_PM is not set | ||
224 | CONFIG_SECCOMP=y | ||
225 | CONFIG_ISA_DMA_API=y | ||
226 | |||
227 | # | ||
228 | # Bus options | ||
229 | # | ||
230 | CONFIG_ZONE_DMA=y | ||
231 | CONFIG_GENERIC_ISA_DMA=y | ||
232 | CONFIG_PPC_INDIRECT_PCI=y | ||
233 | CONFIG_FSL_SOC=y | ||
234 | CONFIG_FSL_PCI=y | ||
235 | CONFIG_PCI=y | ||
236 | CONFIG_PCI_DOMAINS=y | ||
237 | CONFIG_PCI_SYSCALL=y | ||
238 | CONFIG_PCIEPORTBUS=y | ||
239 | CONFIG_PCIEAER=y | ||
240 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
241 | # CONFIG_PCI_MSI is not set | ||
242 | CONFIG_PCI_LEGACY=y | ||
243 | # CONFIG_PCI_DEBUG is not set | ||
244 | # CONFIG_PCCARD is not set | ||
245 | # CONFIG_HOTPLUG_PCI is not set | ||
246 | |||
247 | # | ||
248 | # Advanced setup | ||
249 | # | ||
250 | # CONFIG_ADVANCED_OPTIONS is not set | ||
251 | |||
252 | # | ||
253 | # Default settings for advanced configuration options are used | ||
254 | # | ||
255 | CONFIG_HIGHMEM_START=0xfe000000 | ||
256 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
257 | CONFIG_KERNEL_START=0xc0000000 | ||
258 | CONFIG_TASK_SIZE=0xc0000000 | ||
259 | CONFIG_BOOT_LOAD=0x00800000 | ||
260 | |||
261 | # | ||
262 | # Networking | ||
263 | # | ||
264 | CONFIG_NET=y | ||
265 | |||
266 | # | ||
267 | # Networking options | ||
268 | # | ||
269 | CONFIG_PACKET=y | ||
270 | CONFIG_PACKET_MMAP=y | ||
271 | CONFIG_UNIX=y | ||
272 | CONFIG_XFRM=y | ||
273 | CONFIG_XFRM_USER=m | ||
274 | # CONFIG_XFRM_SUB_POLICY is not set | ||
275 | # CONFIG_XFRM_MIGRATE is not set | ||
276 | # CONFIG_XFRM_STATISTICS is not set | ||
277 | CONFIG_NET_KEY=m | ||
278 | # CONFIG_NET_KEY_MIGRATE is not set | ||
279 | CONFIG_INET=y | ||
280 | CONFIG_IP_MULTICAST=y | ||
281 | CONFIG_IP_ADVANCED_ROUTER=y | ||
282 | CONFIG_ASK_IP_FIB_HASH=y | ||
283 | # CONFIG_IP_FIB_TRIE is not set | ||
284 | CONFIG_IP_FIB_HASH=y | ||
285 | CONFIG_IP_MULTIPLE_TABLES=y | ||
286 | CONFIG_IP_ROUTE_MULTIPATH=y | ||
287 | CONFIG_IP_ROUTE_VERBOSE=y | ||
288 | CONFIG_IP_PNP=y | ||
289 | CONFIG_IP_PNP_DHCP=y | ||
290 | CONFIG_IP_PNP_BOOTP=y | ||
291 | CONFIG_IP_PNP_RARP=y | ||
292 | CONFIG_NET_IPIP=m | ||
293 | CONFIG_NET_IPGRE=m | ||
294 | CONFIG_NET_IPGRE_BROADCAST=y | ||
295 | CONFIG_IP_MROUTE=y | ||
296 | CONFIG_IP_PIMSM_V1=y | ||
297 | CONFIG_IP_PIMSM_V2=y | ||
298 | # CONFIG_ARPD is not set | ||
299 | CONFIG_SYN_COOKIES=y | ||
300 | CONFIG_INET_AH=m | ||
301 | CONFIG_INET_ESP=m | ||
302 | CONFIG_INET_IPCOMP=m | ||
303 | CONFIG_INET_XFRM_TUNNEL=m | ||
304 | CONFIG_INET_TUNNEL=m | ||
305 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
306 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
307 | CONFIG_INET_XFRM_MODE_BEET=y | ||
308 | # CONFIG_INET_LRO is not set | ||
309 | CONFIG_INET_DIAG=y | ||
310 | CONFIG_INET_TCP_DIAG=y | ||
311 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
312 | CONFIG_TCP_CONG_CUBIC=y | ||
313 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
314 | # CONFIG_TCP_MD5SIG is not set | ||
315 | # CONFIG_IP_VS is not set | ||
316 | CONFIG_IPV6=m | ||
317 | # CONFIG_IPV6_PRIVACY is not set | ||
318 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
319 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
320 | CONFIG_INET6_AH=m | ||
321 | CONFIG_INET6_ESP=m | ||
322 | CONFIG_INET6_IPCOMP=m | ||
323 | # CONFIG_IPV6_MIP6 is not set | ||
324 | CONFIG_INET6_XFRM_TUNNEL=m | ||
325 | CONFIG_INET6_TUNNEL=m | ||
326 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
327 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
328 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
329 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
330 | CONFIG_IPV6_SIT=m | ||
331 | CONFIG_IPV6_TUNNEL=m | ||
332 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
333 | # CONFIG_NETLABEL is not set | ||
334 | # CONFIG_NETWORK_SECMARK is not set | ||
335 | CONFIG_NETFILTER=y | ||
336 | # CONFIG_NETFILTER_DEBUG is not set | ||
337 | CONFIG_NETFILTER_ADVANCED=y | ||
338 | CONFIG_BRIDGE_NETFILTER=y | ||
339 | |||
340 | # | ||
341 | # Core Netfilter Configuration | ||
342 | # | ||
343 | # CONFIG_NETFILTER_NETLINK_QUEUE is not set | ||
344 | # CONFIG_NETFILTER_NETLINK_LOG is not set | ||
345 | # CONFIG_NF_CONNTRACK is not set | ||
346 | CONFIG_NETFILTER_XTABLES=m | ||
347 | # CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set | ||
348 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | ||
349 | # CONFIG_NETFILTER_XT_TARGET_MARK is not set | ||
350 | # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set | ||
351 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set | ||
352 | # CONFIG_NETFILTER_XT_TARGET_RATEEST is not set | ||
353 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | ||
354 | # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set | ||
355 | # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set | ||
356 | # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set | ||
357 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set | ||
358 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | ||
359 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set | ||
360 | # CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set | ||
361 | # CONFIG_NETFILTER_XT_MATCH_LENGTH is not set | ||
362 | # CONFIG_NETFILTER_XT_MATCH_LIMIT is not set | ||
363 | # CONFIG_NETFILTER_XT_MATCH_MAC is not set | ||
364 | # CONFIG_NETFILTER_XT_MATCH_MARK is not set | ||
365 | # CONFIG_NETFILTER_XT_MATCH_OWNER is not set | ||
366 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set | ||
367 | # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set | ||
368 | # CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set | ||
369 | # CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set | ||
370 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set | ||
371 | # CONFIG_NETFILTER_XT_MATCH_RATEEST is not set | ||
372 | # CONFIG_NETFILTER_XT_MATCH_REALM is not set | ||
373 | # CONFIG_NETFILTER_XT_MATCH_SCTP is not set | ||
374 | # CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set | ||
375 | # CONFIG_NETFILTER_XT_MATCH_STRING is not set | ||
376 | # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set | ||
377 | # CONFIG_NETFILTER_XT_MATCH_TIME is not set | ||
378 | # CONFIG_NETFILTER_XT_MATCH_U32 is not set | ||
379 | # CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set | ||
380 | |||
381 | # | ||
382 | # IP: Netfilter Configuration | ||
383 | # | ||
384 | CONFIG_IP_NF_QUEUE=m | ||
385 | CONFIG_IP_NF_IPTABLES=m | ||
386 | CONFIG_IP_NF_MATCH_RECENT=m | ||
387 | CONFIG_IP_NF_MATCH_ECN=m | ||
388 | # CONFIG_IP_NF_MATCH_AH is not set | ||
389 | CONFIG_IP_NF_MATCH_TTL=m | ||
390 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
391 | CONFIG_IP_NF_FILTER=m | ||
392 | CONFIG_IP_NF_TARGET_REJECT=m | ||
393 | CONFIG_IP_NF_TARGET_LOG=m | ||
394 | CONFIG_IP_NF_TARGET_ULOG=m | ||
395 | CONFIG_IP_NF_MANGLE=m | ||
396 | CONFIG_IP_NF_TARGET_ECN=m | ||
397 | # CONFIG_IP_NF_TARGET_TTL is not set | ||
398 | CONFIG_IP_NF_RAW=m | ||
399 | CONFIG_IP_NF_ARPTABLES=m | ||
400 | CONFIG_IP_NF_ARPFILTER=m | ||
401 | CONFIG_IP_NF_ARP_MANGLE=m | ||
402 | |||
403 | # | ||
404 | # IPv6: Netfilter Configuration | ||
405 | # | ||
406 | CONFIG_IP6_NF_QUEUE=m | ||
407 | CONFIG_IP6_NF_IPTABLES=m | ||
408 | CONFIG_IP6_NF_MATCH_RT=m | ||
409 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
410 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
411 | CONFIG_IP6_NF_MATCH_HL=m | ||
412 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
413 | # CONFIG_IP6_NF_MATCH_AH is not set | ||
414 | # CONFIG_IP6_NF_MATCH_MH is not set | ||
415 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
416 | CONFIG_IP6_NF_FILTER=m | ||
417 | CONFIG_IP6_NF_TARGET_LOG=m | ||
418 | # CONFIG_IP6_NF_TARGET_REJECT is not set | ||
419 | CONFIG_IP6_NF_MANGLE=m | ||
420 | # CONFIG_IP6_NF_TARGET_HL is not set | ||
421 | CONFIG_IP6_NF_RAW=m | ||
422 | |||
423 | # | ||
424 | # Bridge: Netfilter Configuration | ||
425 | # | ||
426 | # CONFIG_BRIDGE_NF_EBTABLES is not set | ||
427 | # CONFIG_IP_DCCP is not set | ||
428 | CONFIG_IP_SCTP=m | ||
429 | # CONFIG_SCTP_DBG_MSG is not set | ||
430 | # CONFIG_SCTP_DBG_OBJCNT is not set | ||
431 | # CONFIG_SCTP_HMAC_NONE is not set | ||
432 | # CONFIG_SCTP_HMAC_SHA1 is not set | ||
433 | CONFIG_SCTP_HMAC_MD5=y | ||
434 | CONFIG_TIPC=m | ||
435 | # CONFIG_TIPC_ADVANCED is not set | ||
436 | # CONFIG_TIPC_DEBUG is not set | ||
437 | CONFIG_ATM=m | ||
438 | CONFIG_ATM_CLIP=m | ||
439 | # CONFIG_ATM_CLIP_NO_ICMP is not set | ||
440 | CONFIG_ATM_LANE=m | ||
441 | CONFIG_ATM_MPOA=m | ||
442 | CONFIG_ATM_BR2684=m | ||
443 | # CONFIG_ATM_BR2684_IPFILTER is not set | ||
444 | CONFIG_BRIDGE=m | ||
445 | CONFIG_VLAN_8021Q=m | ||
446 | # CONFIG_DECNET is not set | ||
447 | CONFIG_LLC=m | ||
448 | # CONFIG_LLC2 is not set | ||
449 | # CONFIG_IPX is not set | ||
450 | # CONFIG_ATALK is not set | ||
451 | # CONFIG_X25 is not set | ||
452 | # CONFIG_LAPB is not set | ||
453 | # CONFIG_ECONET is not set | ||
454 | CONFIG_WAN_ROUTER=m | ||
455 | CONFIG_NET_SCHED=y | ||
456 | |||
457 | # | ||
458 | # Queueing/Scheduling | ||
459 | # | ||
460 | CONFIG_NET_SCH_CBQ=m | ||
461 | CONFIG_NET_SCH_HTB=m | ||
462 | CONFIG_NET_SCH_HFSC=m | ||
463 | CONFIG_NET_SCH_ATM=m | ||
464 | CONFIG_NET_SCH_PRIO=m | ||
465 | # CONFIG_NET_SCH_RR is not set | ||
466 | CONFIG_NET_SCH_RED=m | ||
467 | CONFIG_NET_SCH_SFQ=m | ||
468 | CONFIG_NET_SCH_TEQL=m | ||
469 | CONFIG_NET_SCH_TBF=m | ||
470 | CONFIG_NET_SCH_GRED=m | ||
471 | CONFIG_NET_SCH_DSMARK=m | ||
472 | CONFIG_NET_SCH_NETEM=m | ||
473 | |||
474 | # | ||
475 | # Classification | ||
476 | # | ||
477 | CONFIG_NET_CLS=y | ||
478 | # CONFIG_NET_CLS_BASIC is not set | ||
479 | CONFIG_NET_CLS_TCINDEX=m | ||
480 | CONFIG_NET_CLS_ROUTE4=m | ||
481 | CONFIG_NET_CLS_ROUTE=y | ||
482 | CONFIG_NET_CLS_FW=m | ||
483 | CONFIG_NET_CLS_U32=m | ||
484 | # CONFIG_CLS_U32_PERF is not set | ||
485 | # CONFIG_CLS_U32_MARK is not set | ||
486 | CONFIG_NET_CLS_RSVP=m | ||
487 | CONFIG_NET_CLS_RSVP6=m | ||
488 | # CONFIG_NET_CLS_FLOW is not set | ||
489 | # CONFIG_NET_EMATCH is not set | ||
490 | # CONFIG_NET_CLS_ACT is not set | ||
491 | # CONFIG_NET_CLS_IND is not set | ||
492 | CONFIG_NET_SCH_FIFO=y | ||
493 | |||
494 | # | ||
495 | # Network testing | ||
496 | # | ||
497 | CONFIG_NET_PKTGEN=m | ||
498 | # CONFIG_HAMRADIO is not set | ||
499 | # CONFIG_CAN is not set | ||
500 | # CONFIG_IRDA is not set | ||
501 | # CONFIG_BT is not set | ||
502 | # CONFIG_AF_RXRPC is not set | ||
503 | CONFIG_FIB_RULES=y | ||
504 | |||
505 | # | ||
506 | # Wireless | ||
507 | # | ||
508 | # CONFIG_CFG80211 is not set | ||
509 | # CONFIG_WIRELESS_EXT is not set | ||
510 | # CONFIG_MAC80211 is not set | ||
511 | # CONFIG_IEEE80211 is not set | ||
512 | # CONFIG_RFKILL is not set | ||
513 | # CONFIG_NET_9P is not set | ||
514 | |||
515 | # | ||
516 | # Device Drivers | ||
517 | # | ||
518 | |||
519 | # | ||
520 | # Generic Driver Options | ||
521 | # | ||
522 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
523 | CONFIG_STANDALONE=y | ||
524 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
525 | # CONFIG_FW_LOADER is not set | ||
526 | # CONFIG_DEBUG_DRIVER is not set | ||
527 | # CONFIG_DEBUG_DEVRES is not set | ||
528 | # CONFIG_SYS_HYPERVISOR is not set | ||
529 | # CONFIG_CONNECTOR is not set | ||
530 | CONFIG_MTD=y | ||
531 | # CONFIG_MTD_DEBUG is not set | ||
532 | CONFIG_MTD_CONCAT=y | ||
533 | CONFIG_MTD_PARTITIONS=y | ||
534 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
535 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
536 | # CONFIG_MTD_OF_PARTS is not set | ||
537 | |||
538 | # | ||
539 | # User Modules And Translation Layers | ||
540 | # | ||
541 | CONFIG_MTD_CHAR=y | ||
542 | CONFIG_MTD_BLKDEVS=y | ||
543 | CONFIG_MTD_BLOCK=y | ||
544 | # CONFIG_FTL is not set | ||
545 | # CONFIG_NFTL is not set | ||
546 | # CONFIG_INFTL is not set | ||
547 | # CONFIG_RFD_FTL is not set | ||
548 | # CONFIG_SSFDC is not set | ||
549 | # CONFIG_MTD_OOPS is not set | ||
550 | |||
551 | # | ||
552 | # RAM/ROM/Flash chip drivers | ||
553 | # | ||
554 | CONFIG_MTD_CFI=y | ||
555 | # CONFIG_MTD_JEDECPROBE is not set | ||
556 | CONFIG_MTD_GEN_PROBE=y | ||
557 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
558 | # CONFIG_MTD_CFI_NOSWAP is not set | ||
559 | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | ||
560 | CONFIG_MTD_CFI_LE_BYTE_SWAP=y | ||
561 | # CONFIG_MTD_CFI_GEOMETRY is not set | ||
562 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
563 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
564 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
565 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
566 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
567 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
568 | CONFIG_MTD_CFI_I1=y | ||
569 | CONFIG_MTD_CFI_I2=y | ||
570 | # CONFIG_MTD_CFI_I4 is not set | ||
571 | # CONFIG_MTD_CFI_I8 is not set | ||
572 | # CONFIG_MTD_OTP is not set | ||
573 | CONFIG_MTD_CFI_INTELEXT=y | ||
574 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
575 | # CONFIG_MTD_CFI_STAA is not set | ||
576 | CONFIG_MTD_CFI_UTIL=y | ||
577 | # CONFIG_MTD_RAM is not set | ||
578 | # CONFIG_MTD_ROM is not set | ||
579 | # CONFIG_MTD_ABSENT is not set | ||
580 | |||
581 | # | ||
582 | # Mapping drivers for chip access | ||
583 | # | ||
584 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
585 | # CONFIG_MTD_PHYSMAP is not set | ||
586 | CONFIG_MTD_PHYSMAP_OF=y | ||
587 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
588 | # CONFIG_MTD_PLATRAM is not set | ||
589 | |||
590 | # | ||
591 | # Self-contained MTD device drivers | ||
592 | # | ||
593 | # CONFIG_MTD_PMC551 is not set | ||
594 | # CONFIG_MTD_SLRAM is not set | ||
595 | # CONFIG_MTD_PHRAM is not set | ||
596 | # CONFIG_MTD_MTDRAM is not set | ||
597 | # CONFIG_MTD_BLOCK2MTD is not set | ||
598 | |||
599 | # | ||
600 | # Disk-On-Chip Device Drivers | ||
601 | # | ||
602 | # CONFIG_MTD_DOC2000 is not set | ||
603 | # CONFIG_MTD_DOC2001 is not set | ||
604 | # CONFIG_MTD_DOC2001PLUS is not set | ||
605 | # CONFIG_MTD_NAND is not set | ||
606 | # CONFIG_MTD_ONENAND is not set | ||
607 | |||
608 | # | ||
609 | # UBI - Unsorted block images | ||
610 | # | ||
611 | # CONFIG_MTD_UBI is not set | ||
612 | CONFIG_OF_DEVICE=y | ||
613 | # CONFIG_PARPORT is not set | ||
614 | CONFIG_BLK_DEV=y | ||
615 | # CONFIG_BLK_DEV_FD is not set | ||
616 | # CONFIG_BLK_CPQ_DA is not set | ||
617 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
618 | # CONFIG_BLK_DEV_DAC960 is not set | ||
619 | # CONFIG_BLK_DEV_UMEM is not set | ||
620 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
621 | CONFIG_BLK_DEV_LOOP=m | ||
622 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
623 | CONFIG_BLK_DEV_NBD=m | ||
624 | # CONFIG_BLK_DEV_SX8 is not set | ||
625 | CONFIG_BLK_DEV_RAM=y | ||
626 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
627 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
628 | # CONFIG_BLK_DEV_XIP is not set | ||
629 | # CONFIG_CDROM_PKTCDVD is not set | ||
630 | # CONFIG_ATA_OVER_ETH is not set | ||
631 | CONFIG_MISC_DEVICES=y | ||
632 | # CONFIG_PHANTOM is not set | ||
633 | # CONFIG_EEPROM_93CX6 is not set | ||
634 | # CONFIG_SGI_IOC4 is not set | ||
635 | # CONFIG_TIFM_CORE is not set | ||
636 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
637 | CONFIG_HAVE_IDE=y | ||
638 | # CONFIG_IDE is not set | ||
639 | |||
640 | # | ||
641 | # SCSI device support | ||
642 | # | ||
643 | # CONFIG_RAID_ATTRS is not set | ||
644 | # CONFIG_SCSI is not set | ||
645 | # CONFIG_SCSI_DMA is not set | ||
646 | # CONFIG_SCSI_NETLINK is not set | ||
647 | # CONFIG_ATA is not set | ||
648 | CONFIG_MD=y | ||
649 | CONFIG_BLK_DEV_MD=y | ||
650 | CONFIG_MD_LINEAR=y | ||
651 | CONFIG_MD_RAID0=y | ||
652 | CONFIG_MD_RAID1=y | ||
653 | CONFIG_MD_RAID10=y | ||
654 | # CONFIG_MD_RAID456 is not set | ||
655 | CONFIG_MD_MULTIPATH=y | ||
656 | CONFIG_MD_FAULTY=y | ||
657 | CONFIG_BLK_DEV_DM=y | ||
658 | # CONFIG_DM_DEBUG is not set | ||
659 | CONFIG_DM_CRYPT=y | ||
660 | CONFIG_DM_SNAPSHOT=y | ||
661 | CONFIG_DM_MIRROR=y | ||
662 | CONFIG_DM_ZERO=y | ||
663 | # CONFIG_DM_MULTIPATH is not set | ||
664 | # CONFIG_DM_DELAY is not set | ||
665 | # CONFIG_DM_UEVENT is not set | ||
666 | # CONFIG_FUSION is not set | ||
667 | |||
668 | # | ||
669 | # IEEE 1394 (FireWire) support | ||
670 | # | ||
671 | # CONFIG_FIREWIRE is not set | ||
672 | # CONFIG_IEEE1394 is not set | ||
673 | # CONFIG_I2O is not set | ||
674 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
675 | CONFIG_NETDEVICES=y | ||
676 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
677 | CONFIG_DUMMY=m | ||
678 | CONFIG_BONDING=m | ||
679 | # CONFIG_MACVLAN is not set | ||
680 | # CONFIG_EQUALIZER is not set | ||
681 | CONFIG_TUN=m | ||
682 | # CONFIG_VETH is not set | ||
683 | # CONFIG_ARCNET is not set | ||
684 | CONFIG_PHYLIB=y | ||
685 | |||
686 | # | ||
687 | # MII PHY device drivers | ||
688 | # | ||
689 | # CONFIG_MARVELL_PHY is not set | ||
690 | # CONFIG_DAVICOM_PHY is not set | ||
691 | # CONFIG_QSEMI_PHY is not set | ||
692 | # CONFIG_LXT_PHY is not set | ||
693 | # CONFIG_CICADA_PHY is not set | ||
694 | # CONFIG_VITESSE_PHY is not set | ||
695 | # CONFIG_SMSC_PHY is not set | ||
696 | CONFIG_BROADCOM_PHY=y | ||
697 | # CONFIG_ICPLUS_PHY is not set | ||
698 | # CONFIG_REALTEK_PHY is not set | ||
699 | # CONFIG_FIXED_PHY is not set | ||
700 | # CONFIG_MDIO_BITBANG is not set | ||
701 | CONFIG_NET_ETHERNET=y | ||
702 | CONFIG_MII=y | ||
703 | # CONFIG_HAPPYMEAL is not set | ||
704 | # CONFIG_SUNGEM is not set | ||
705 | # CONFIG_CASSINI is not set | ||
706 | # CONFIG_NET_VENDOR_3COM is not set | ||
707 | # CONFIG_NET_TULIP is not set | ||
708 | # CONFIG_HP100 is not set | ||
709 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
710 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
711 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
712 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
713 | # CONFIG_NET_PCI is not set | ||
714 | # CONFIG_B44 is not set | ||
715 | CONFIG_NETDEV_1000=y | ||
716 | # CONFIG_ACENIC is not set | ||
717 | # CONFIG_DL2K is not set | ||
718 | # CONFIG_E1000 is not set | ||
719 | # CONFIG_E1000E is not set | ||
720 | # CONFIG_E1000E_ENABLED is not set | ||
721 | # CONFIG_IP1000 is not set | ||
722 | # CONFIG_IGB is not set | ||
723 | # CONFIG_NS83820 is not set | ||
724 | # CONFIG_HAMACHI is not set | ||
725 | # CONFIG_YELLOWFIN is not set | ||
726 | # CONFIG_R8169 is not set | ||
727 | # CONFIG_SIS190 is not set | ||
728 | # CONFIG_SKGE is not set | ||
729 | # CONFIG_SKY2 is not set | ||
730 | # CONFIG_SK98LIN is not set | ||
731 | # CONFIG_VIA_VELOCITY is not set | ||
732 | # CONFIG_TIGON3 is not set | ||
733 | # CONFIG_BNX2 is not set | ||
734 | CONFIG_GIANFAR=y | ||
735 | # CONFIG_GFAR_NAPI is not set | ||
736 | # CONFIG_QLA3XXX is not set | ||
737 | # CONFIG_ATL1 is not set | ||
738 | # CONFIG_NETDEV_10000 is not set | ||
739 | # CONFIG_TR is not set | ||
740 | |||
741 | # | ||
742 | # Wireless LAN | ||
743 | # | ||
744 | # CONFIG_WLAN_PRE80211 is not set | ||
745 | # CONFIG_WLAN_80211 is not set | ||
746 | # CONFIG_WAN is not set | ||
747 | CONFIG_ATM_DRIVERS=y | ||
748 | # CONFIG_ATM_DUMMY is not set | ||
749 | # CONFIG_ATM_TCP is not set | ||
750 | # CONFIG_ATM_LANAI is not set | ||
751 | # CONFIG_ATM_ENI is not set | ||
752 | # CONFIG_ATM_FIRESTREAM is not set | ||
753 | # CONFIG_ATM_ZATM is not set | ||
754 | # CONFIG_ATM_NICSTAR is not set | ||
755 | # CONFIG_ATM_IDT77252 is not set | ||
756 | # CONFIG_ATM_AMBASSADOR is not set | ||
757 | # CONFIG_ATM_HORIZON is not set | ||
758 | # CONFIG_ATM_IA is not set | ||
759 | # CONFIG_ATM_FORE200E_MAYBE is not set | ||
760 | # CONFIG_ATM_HE is not set | ||
761 | # CONFIG_FDDI is not set | ||
762 | # CONFIG_HIPPI is not set | ||
763 | CONFIG_PPP=m | ||
764 | CONFIG_PPP_MULTILINK=y | ||
765 | CONFIG_PPP_FILTER=y | ||
766 | CONFIG_PPP_ASYNC=m | ||
767 | CONFIG_PPP_SYNC_TTY=m | ||
768 | CONFIG_PPP_DEFLATE=m | ||
769 | CONFIG_PPP_BSDCOMP=m | ||
770 | # CONFIG_PPP_MPPE is not set | ||
771 | CONFIG_PPPOE=m | ||
772 | CONFIG_PPPOATM=m | ||
773 | # CONFIG_PPPOL2TP is not set | ||
774 | CONFIG_SLIP=m | ||
775 | CONFIG_SLIP_COMPRESSED=y | ||
776 | CONFIG_SLHC=m | ||
777 | CONFIG_SLIP_SMART=y | ||
778 | CONFIG_SLIP_MODE_SLIP6=y | ||
779 | CONFIG_NETCONSOLE=y | ||
780 | # CONFIG_NETCONSOLE_DYNAMIC is not set | ||
781 | CONFIG_NETPOLL=y | ||
782 | CONFIG_NETPOLL_TRAP=y | ||
783 | CONFIG_NET_POLL_CONTROLLER=y | ||
784 | # CONFIG_ISDN is not set | ||
785 | # CONFIG_PHONE is not set | ||
786 | |||
787 | # | ||
788 | # Input device support | ||
789 | # | ||
790 | CONFIG_INPUT=y | ||
791 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
792 | # CONFIG_INPUT_POLLDEV is not set | ||
793 | |||
794 | # | ||
795 | # Userland interfaces | ||
796 | # | ||
797 | CONFIG_INPUT_MOUSEDEV=y | ||
798 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
799 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
800 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
801 | # CONFIG_INPUT_JOYDEV is not set | ||
802 | # CONFIG_INPUT_EVDEV is not set | ||
803 | # CONFIG_INPUT_EVBUG is not set | ||
804 | |||
805 | # | ||
806 | # Input Device Drivers | ||
807 | # | ||
808 | # CONFIG_INPUT_KEYBOARD is not set | ||
809 | # CONFIG_INPUT_MOUSE is not set | ||
810 | # CONFIG_INPUT_JOYSTICK is not set | ||
811 | # CONFIG_INPUT_TABLET is not set | ||
812 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
813 | # CONFIG_INPUT_MISC is not set | ||
814 | |||
815 | # | ||
816 | # Hardware I/O ports | ||
817 | # | ||
818 | # CONFIG_SERIO is not set | ||
819 | # CONFIG_GAMEPORT is not set | ||
820 | |||
821 | # | ||
822 | # Character devices | ||
823 | # | ||
824 | CONFIG_VT=y | ||
825 | CONFIG_VT_CONSOLE=y | ||
826 | CONFIG_HW_CONSOLE=y | ||
827 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
828 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
829 | # CONFIG_NOZOMI is not set | ||
830 | |||
831 | # | ||
832 | # Serial drivers | ||
833 | # | ||
834 | CONFIG_SERIAL_8250=y | ||
835 | CONFIG_SERIAL_8250_CONSOLE=y | ||
836 | # CONFIG_SERIAL_8250_PCI is not set | ||
837 | CONFIG_SERIAL_8250_NR_UARTS=2 | ||
838 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 | ||
839 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
840 | |||
841 | # | ||
842 | # Non-8250 serial port support | ||
843 | # | ||
844 | # CONFIG_SERIAL_UARTLITE is not set | ||
845 | CONFIG_SERIAL_CORE=y | ||
846 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
847 | # CONFIG_SERIAL_JSM is not set | ||
848 | # CONFIG_SERIAL_OF_PLATFORM is not set | ||
849 | CONFIG_UNIX98_PTYS=y | ||
850 | CONFIG_LEGACY_PTYS=y | ||
851 | CONFIG_LEGACY_PTY_COUNT=256 | ||
852 | # CONFIG_IPMI_HANDLER is not set | ||
853 | CONFIG_HW_RANDOM=m | ||
854 | # CONFIG_NVRAM is not set | ||
855 | # CONFIG_GEN_RTC is not set | ||
856 | # CONFIG_R3964 is not set | ||
857 | # CONFIG_APPLICOM is not set | ||
858 | # CONFIG_RAW_DRIVER is not set | ||
859 | # CONFIG_TCG_TPM is not set | ||
860 | CONFIG_DEVPORT=y | ||
861 | CONFIG_I2C=y | ||
862 | CONFIG_I2C_BOARDINFO=y | ||
863 | CONFIG_I2C_CHARDEV=y | ||
864 | |||
865 | # | ||
866 | # I2C Algorithms | ||
867 | # | ||
868 | # CONFIG_I2C_ALGOBIT is not set | ||
869 | # CONFIG_I2C_ALGOPCF is not set | ||
870 | # CONFIG_I2C_ALGOPCA is not set | ||
871 | |||
872 | # | ||
873 | # I2C Hardware Bus support | ||
874 | # | ||
875 | # CONFIG_I2C_ALI1535 is not set | ||
876 | # CONFIG_I2C_ALI1563 is not set | ||
877 | # CONFIG_I2C_ALI15X3 is not set | ||
878 | # CONFIG_I2C_AMD756 is not set | ||
879 | # CONFIG_I2C_AMD8111 is not set | ||
880 | # CONFIG_I2C_I801 is not set | ||
881 | # CONFIG_I2C_I810 is not set | ||
882 | # CONFIG_I2C_PIIX4 is not set | ||
883 | CONFIG_I2C_MPC=y | ||
884 | # CONFIG_I2C_NFORCE2 is not set | ||
885 | # CONFIG_I2C_OCORES is not set | ||
886 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
887 | # CONFIG_I2C_PROSAVAGE is not set | ||
888 | # CONFIG_I2C_SAVAGE4 is not set | ||
889 | # CONFIG_I2C_SIMTEC is not set | ||
890 | # CONFIG_I2C_SIS5595 is not set | ||
891 | # CONFIG_I2C_SIS630 is not set | ||
892 | # CONFIG_I2C_SIS96X is not set | ||
893 | # CONFIG_I2C_TAOS_EVM is not set | ||
894 | # CONFIG_I2C_STUB is not set | ||
895 | # CONFIG_I2C_VIA is not set | ||
896 | # CONFIG_I2C_VIAPRO is not set | ||
897 | # CONFIG_I2C_VOODOO3 is not set | ||
898 | |||
899 | # | ||
900 | # Miscellaneous I2C Chip support | ||
901 | # | ||
902 | # CONFIG_DS1682 is not set | ||
903 | # CONFIG_SENSORS_EEPROM is not set | ||
904 | # CONFIG_SENSORS_PCF8574 is not set | ||
905 | # CONFIG_PCF8575 is not set | ||
906 | # CONFIG_SENSORS_PCF8591 is not set | ||
907 | # CONFIG_TPS65010 is not set | ||
908 | # CONFIG_SENSORS_MAX6875 is not set | ||
909 | # CONFIG_SENSORS_TSL2550 is not set | ||
910 | # CONFIG_I2C_DEBUG_CORE is not set | ||
911 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
912 | # CONFIG_I2C_DEBUG_BUS is not set | ||
913 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
914 | |||
915 | # | ||
916 | # SPI support | ||
917 | # | ||
918 | # CONFIG_SPI is not set | ||
919 | # CONFIG_SPI_MASTER is not set | ||
920 | # CONFIG_W1 is not set | ||
921 | # CONFIG_POWER_SUPPLY is not set | ||
922 | CONFIG_HWMON=y | ||
923 | # CONFIG_HWMON_VID is not set | ||
924 | # CONFIG_SENSORS_AD7418 is not set | ||
925 | # CONFIG_SENSORS_ADM1021 is not set | ||
926 | # CONFIG_SENSORS_ADM1025 is not set | ||
927 | # CONFIG_SENSORS_ADM1026 is not set | ||
928 | # CONFIG_SENSORS_ADM1029 is not set | ||
929 | # CONFIG_SENSORS_ADM1031 is not set | ||
930 | # CONFIG_SENSORS_ADM9240 is not set | ||
931 | # CONFIG_SENSORS_ADT7470 is not set | ||
932 | # CONFIG_SENSORS_ADT7473 is not set | ||
933 | # CONFIG_SENSORS_ATXP1 is not set | ||
934 | # CONFIG_SENSORS_DS1621 is not set | ||
935 | # CONFIG_SENSORS_I5K_AMB is not set | ||
936 | # CONFIG_SENSORS_F71805F is not set | ||
937 | # CONFIG_SENSORS_F71882FG is not set | ||
938 | # CONFIG_SENSORS_F75375S is not set | ||
939 | # CONFIG_SENSORS_GL518SM is not set | ||
940 | # CONFIG_SENSORS_GL520SM is not set | ||
941 | # CONFIG_SENSORS_IT87 is not set | ||
942 | # CONFIG_SENSORS_LM63 is not set | ||
943 | # CONFIG_SENSORS_LM75 is not set | ||
944 | # CONFIG_SENSORS_LM77 is not set | ||
945 | # CONFIG_SENSORS_LM78 is not set | ||
946 | # CONFIG_SENSORS_LM80 is not set | ||
947 | # CONFIG_SENSORS_LM83 is not set | ||
948 | # CONFIG_SENSORS_LM85 is not set | ||
949 | # CONFIG_SENSORS_LM87 is not set | ||
950 | # CONFIG_SENSORS_LM90 is not set | ||
951 | # CONFIG_SENSORS_LM92 is not set | ||
952 | # CONFIG_SENSORS_LM93 is not set | ||
953 | # CONFIG_SENSORS_MAX1619 is not set | ||
954 | # CONFIG_SENSORS_MAX6650 is not set | ||
955 | # CONFIG_SENSORS_PC87360 is not set | ||
956 | # CONFIG_SENSORS_PC87427 is not set | ||
957 | # CONFIG_SENSORS_SIS5595 is not set | ||
958 | # CONFIG_SENSORS_DME1737 is not set | ||
959 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
960 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
961 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
962 | # CONFIG_SENSORS_ADS7828 is not set | ||
963 | # CONFIG_SENSORS_THMC50 is not set | ||
964 | # CONFIG_SENSORS_VIA686A is not set | ||
965 | # CONFIG_SENSORS_VT1211 is not set | ||
966 | # CONFIG_SENSORS_VT8231 is not set | ||
967 | # CONFIG_SENSORS_W83781D is not set | ||
968 | # CONFIG_SENSORS_W83791D is not set | ||
969 | # CONFIG_SENSORS_W83792D is not set | ||
970 | # CONFIG_SENSORS_W83793 is not set | ||
971 | # CONFIG_SENSORS_W83L785TS is not set | ||
972 | # CONFIG_SENSORS_W83L786NG is not set | ||
973 | # CONFIG_SENSORS_W83627HF is not set | ||
974 | # CONFIG_SENSORS_W83627EHF is not set | ||
975 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
976 | # CONFIG_THERMAL is not set | ||
977 | CONFIG_WATCHDOG=y | ||
978 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
979 | |||
980 | # | ||
981 | # Watchdog Device Drivers | ||
982 | # | ||
983 | CONFIG_SOFT_WATCHDOG=m | ||
984 | |||
985 | # | ||
986 | # PCI-based Watchdog Cards | ||
987 | # | ||
988 | # CONFIG_PCIPCWATCHDOG is not set | ||
989 | # CONFIG_WDTPCI is not set | ||
990 | |||
991 | # | ||
992 | # Sonics Silicon Backplane | ||
993 | # | ||
994 | CONFIG_SSB_POSSIBLE=y | ||
995 | # CONFIG_SSB is not set | ||
996 | |||
997 | # | ||
998 | # Multifunction device drivers | ||
999 | # | ||
1000 | # CONFIG_MFD_SM501 is not set | ||
1001 | |||
1002 | # | ||
1003 | # Multimedia devices | ||
1004 | # | ||
1005 | # CONFIG_VIDEO_DEV is not set | ||
1006 | # CONFIG_DVB_CORE is not set | ||
1007 | CONFIG_DAB=y | ||
1008 | |||
1009 | # | ||
1010 | # Graphics support | ||
1011 | # | ||
1012 | # CONFIG_AGP is not set | ||
1013 | # CONFIG_DRM is not set | ||
1014 | # CONFIG_VGASTATE is not set | ||
1015 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
1016 | # CONFIG_FB is not set | ||
1017 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
1018 | |||
1019 | # | ||
1020 | # Display device support | ||
1021 | # | ||
1022 | # CONFIG_DISPLAY_SUPPORT is not set | ||
1023 | |||
1024 | # | ||
1025 | # Console display driver support | ||
1026 | # | ||
1027 | CONFIG_VGA_CONSOLE=y | ||
1028 | # CONFIG_VGACON_SOFT_SCROLLBACK is not set | ||
1029 | CONFIG_DUMMY_CONSOLE=y | ||
1030 | |||
1031 | # | ||
1032 | # Sound | ||
1033 | # | ||
1034 | # CONFIG_SOUND is not set | ||
1035 | CONFIG_HID_SUPPORT=y | ||
1036 | CONFIG_HID=y | ||
1037 | # CONFIG_HID_DEBUG is not set | ||
1038 | # CONFIG_HIDRAW is not set | ||
1039 | CONFIG_USB_SUPPORT=y | ||
1040 | CONFIG_USB_ARCH_HAS_HCD=y | ||
1041 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
1042 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
1043 | # CONFIG_USB is not set | ||
1044 | |||
1045 | # | ||
1046 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
1047 | # | ||
1048 | # CONFIG_USB_GADGET is not set | ||
1049 | # CONFIG_MMC is not set | ||
1050 | # CONFIG_MEMSTICK is not set | ||
1051 | # CONFIG_NEW_LEDS is not set | ||
1052 | # CONFIG_INFINIBAND is not set | ||
1053 | # CONFIG_EDAC is not set | ||
1054 | # CONFIG_RTC_CLASS is not set | ||
1055 | # CONFIG_DMADEVICES is not set | ||
1056 | |||
1057 | # | ||
1058 | # Userspace I/O | ||
1059 | # | ||
1060 | # CONFIG_UIO is not set | ||
1061 | |||
1062 | # | ||
1063 | # File systems | ||
1064 | # | ||
1065 | CONFIG_EXT2_FS=y | ||
1066 | CONFIG_EXT2_FS_XATTR=y | ||
1067 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
1068 | # CONFIG_EXT2_FS_SECURITY is not set | ||
1069 | # CONFIG_EXT2_FS_XIP is not set | ||
1070 | CONFIG_EXT3_FS=y | ||
1071 | CONFIG_EXT3_FS_XATTR=y | ||
1072 | CONFIG_EXT3_FS_POSIX_ACL=y | ||
1073 | # CONFIG_EXT3_FS_SECURITY is not set | ||
1074 | # CONFIG_EXT4DEV_FS is not set | ||
1075 | CONFIG_JBD=y | ||
1076 | # CONFIG_JBD_DEBUG is not set | ||
1077 | CONFIG_FS_MBCACHE=y | ||
1078 | CONFIG_REISERFS_FS=m | ||
1079 | # CONFIG_REISERFS_CHECK is not set | ||
1080 | # CONFIG_REISERFS_PROC_INFO is not set | ||
1081 | CONFIG_REISERFS_FS_XATTR=y | ||
1082 | CONFIG_REISERFS_FS_POSIX_ACL=y | ||
1083 | # CONFIG_REISERFS_FS_SECURITY is not set | ||
1084 | # CONFIG_JFS_FS is not set | ||
1085 | CONFIG_FS_POSIX_ACL=y | ||
1086 | # CONFIG_XFS_FS is not set | ||
1087 | # CONFIG_GFS2_FS is not set | ||
1088 | CONFIG_OCFS2_FS=m | ||
1089 | CONFIG_OCFS2_DEBUG_MASKLOG=y | ||
1090 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
1091 | CONFIG_DNOTIFY=y | ||
1092 | CONFIG_INOTIFY=y | ||
1093 | CONFIG_INOTIFY_USER=y | ||
1094 | # CONFIG_QUOTA is not set | ||
1095 | CONFIG_AUTOFS_FS=m | ||
1096 | CONFIG_AUTOFS4_FS=m | ||
1097 | # CONFIG_FUSE_FS is not set | ||
1098 | |||
1099 | # | ||
1100 | # CD-ROM/DVD Filesystems | ||
1101 | # | ||
1102 | # CONFIG_ISO9660_FS is not set | ||
1103 | # CONFIG_UDF_FS is not set | ||
1104 | |||
1105 | # | ||
1106 | # DOS/FAT/NT Filesystems | ||
1107 | # | ||
1108 | # CONFIG_MSDOS_FS is not set | ||
1109 | # CONFIG_VFAT_FS is not set | ||
1110 | # CONFIG_NTFS_FS is not set | ||
1111 | |||
1112 | # | ||
1113 | # Pseudo filesystems | ||
1114 | # | ||
1115 | CONFIG_PROC_FS=y | ||
1116 | CONFIG_PROC_KCORE=y | ||
1117 | CONFIG_PROC_SYSCTL=y | ||
1118 | CONFIG_SYSFS=y | ||
1119 | CONFIG_TMPFS=y | ||
1120 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1121 | # CONFIG_HUGETLB_PAGE is not set | ||
1122 | CONFIG_CONFIGFS_FS=m | ||
1123 | |||
1124 | # | ||
1125 | # Miscellaneous filesystems | ||
1126 | # | ||
1127 | # CONFIG_ADFS_FS is not set | ||
1128 | # CONFIG_AFFS_FS is not set | ||
1129 | # CONFIG_HFS_FS is not set | ||
1130 | # CONFIG_HFSPLUS_FS is not set | ||
1131 | # CONFIG_BEFS_FS is not set | ||
1132 | # CONFIG_BFS_FS is not set | ||
1133 | # CONFIG_EFS_FS is not set | ||
1134 | # CONFIG_JFFS2_FS is not set | ||
1135 | # CONFIG_CRAMFS is not set | ||
1136 | # CONFIG_VXFS_FS is not set | ||
1137 | CONFIG_MINIX_FS=m | ||
1138 | # CONFIG_HPFS_FS is not set | ||
1139 | # CONFIG_QNX4FS_FS is not set | ||
1140 | CONFIG_ROMFS_FS=m | ||
1141 | # CONFIG_SYSV_FS is not set | ||
1142 | # CONFIG_UFS_FS is not set | ||
1143 | CONFIG_NETWORK_FILESYSTEMS=y | ||
1144 | CONFIG_NFS_FS=y | ||
1145 | CONFIG_NFS_V3=y | ||
1146 | # CONFIG_NFS_V3_ACL is not set | ||
1147 | CONFIG_NFS_V4=y | ||
1148 | CONFIG_NFS_DIRECTIO=y | ||
1149 | # CONFIG_NFSD is not set | ||
1150 | CONFIG_ROOT_NFS=y | ||
1151 | CONFIG_LOCKD=y | ||
1152 | CONFIG_LOCKD_V4=y | ||
1153 | CONFIG_NFS_COMMON=y | ||
1154 | CONFIG_SUNRPC=y | ||
1155 | CONFIG_SUNRPC_GSS=y | ||
1156 | # CONFIG_SUNRPC_BIND34 is not set | ||
1157 | CONFIG_RPCSEC_GSS_KRB5=y | ||
1158 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
1159 | CONFIG_SMB_FS=m | ||
1160 | CONFIG_SMB_NLS_DEFAULT=y | ||
1161 | CONFIG_SMB_NLS_REMOTE="cp437" | ||
1162 | CONFIG_CIFS=m | ||
1163 | # CONFIG_CIFS_STATS is not set | ||
1164 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
1165 | CONFIG_CIFS_XATTR=y | ||
1166 | CONFIG_CIFS_POSIX=y | ||
1167 | # CONFIG_CIFS_DEBUG2 is not set | ||
1168 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
1169 | # CONFIG_NCP_FS is not set | ||
1170 | # CONFIG_CODA_FS is not set | ||
1171 | # CONFIG_AFS_FS is not set | ||
1172 | |||
1173 | # | ||
1174 | # Partition Types | ||
1175 | # | ||
1176 | # CONFIG_PARTITION_ADVANCED is not set | ||
1177 | CONFIG_MSDOS_PARTITION=y | ||
1178 | CONFIG_NLS=m | ||
1179 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1180 | CONFIG_NLS_CODEPAGE_437=m | ||
1181 | CONFIG_NLS_CODEPAGE_737=m | ||
1182 | CONFIG_NLS_CODEPAGE_775=m | ||
1183 | CONFIG_NLS_CODEPAGE_850=m | ||
1184 | CONFIG_NLS_CODEPAGE_852=m | ||
1185 | CONFIG_NLS_CODEPAGE_855=m | ||
1186 | CONFIG_NLS_CODEPAGE_857=m | ||
1187 | CONFIG_NLS_CODEPAGE_860=m | ||
1188 | CONFIG_NLS_CODEPAGE_861=m | ||
1189 | CONFIG_NLS_CODEPAGE_862=m | ||
1190 | CONFIG_NLS_CODEPAGE_863=m | ||
1191 | CONFIG_NLS_CODEPAGE_864=m | ||
1192 | CONFIG_NLS_CODEPAGE_865=m | ||
1193 | CONFIG_NLS_CODEPAGE_866=m | ||
1194 | CONFIG_NLS_CODEPAGE_869=m | ||
1195 | CONFIG_NLS_CODEPAGE_936=m | ||
1196 | CONFIG_NLS_CODEPAGE_950=m | ||
1197 | CONFIG_NLS_CODEPAGE_932=m | ||
1198 | CONFIG_NLS_CODEPAGE_949=m | ||
1199 | CONFIG_NLS_CODEPAGE_874=m | ||
1200 | CONFIG_NLS_ISO8859_8=m | ||
1201 | CONFIG_NLS_CODEPAGE_1250=m | ||
1202 | CONFIG_NLS_CODEPAGE_1251=m | ||
1203 | CONFIG_NLS_ASCII=m | ||
1204 | CONFIG_NLS_ISO8859_1=m | ||
1205 | CONFIG_NLS_ISO8859_2=m | ||
1206 | CONFIG_NLS_ISO8859_3=m | ||
1207 | CONFIG_NLS_ISO8859_4=m | ||
1208 | CONFIG_NLS_ISO8859_5=m | ||
1209 | CONFIG_NLS_ISO8859_6=m | ||
1210 | CONFIG_NLS_ISO8859_7=m | ||
1211 | CONFIG_NLS_ISO8859_9=m | ||
1212 | CONFIG_NLS_ISO8859_13=m | ||
1213 | CONFIG_NLS_ISO8859_14=m | ||
1214 | CONFIG_NLS_ISO8859_15=m | ||
1215 | CONFIG_NLS_KOI8_R=m | ||
1216 | CONFIG_NLS_KOI8_U=m | ||
1217 | CONFIG_NLS_UTF8=m | ||
1218 | # CONFIG_DLM is not set | ||
1219 | |||
1220 | # | ||
1221 | # Library routines | ||
1222 | # | ||
1223 | CONFIG_BITREVERSE=y | ||
1224 | CONFIG_CRC_CCITT=m | ||
1225 | # CONFIG_CRC16 is not set | ||
1226 | # CONFIG_CRC_ITU_T is not set | ||
1227 | CONFIG_CRC32=y | ||
1228 | # CONFIG_CRC7 is not set | ||
1229 | CONFIG_LIBCRC32C=m | ||
1230 | CONFIG_ZLIB_INFLATE=m | ||
1231 | CONFIG_ZLIB_DEFLATE=m | ||
1232 | CONFIG_PLIST=y | ||
1233 | CONFIG_HAS_IOMEM=y | ||
1234 | CONFIG_HAS_IOPORT=y | ||
1235 | CONFIG_HAS_DMA=y | ||
1236 | CONFIG_HAVE_LMB=y | ||
1237 | |||
1238 | # | ||
1239 | # Kernel hacking | ||
1240 | # | ||
1241 | # CONFIG_PRINTK_TIME is not set | ||
1242 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1243 | CONFIG_ENABLE_MUST_CHECK=y | ||
1244 | CONFIG_MAGIC_SYSRQ=y | ||
1245 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1246 | CONFIG_DEBUG_FS=y | ||
1247 | # CONFIG_HEADERS_CHECK is not set | ||
1248 | CONFIG_DEBUG_KERNEL=y | ||
1249 | # CONFIG_DEBUG_SHIRQ is not set | ||
1250 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1251 | CONFIG_SCHED_DEBUG=y | ||
1252 | # CONFIG_SCHEDSTATS is not set | ||
1253 | # CONFIG_TIMER_STATS is not set | ||
1254 | # CONFIG_DEBUG_SLAB is not set | ||
1255 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1256 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1257 | # CONFIG_DEBUG_SPINLOCK is not set | ||
1258 | # CONFIG_DEBUG_MUTEXES is not set | ||
1259 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
1260 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1261 | # CONFIG_DEBUG_KOBJECT is not set | ||
1262 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1263 | CONFIG_DEBUG_INFO=y | ||
1264 | # CONFIG_DEBUG_VM is not set | ||
1265 | # CONFIG_DEBUG_LIST is not set | ||
1266 | # CONFIG_DEBUG_SG is not set | ||
1267 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
1268 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1269 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1270 | # CONFIG_FAULT_INJECTION is not set | ||
1271 | # CONFIG_SAMPLES is not set | ||
1272 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
1273 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
1274 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
1275 | CONFIG_DEBUGGER=y | ||
1276 | # CONFIG_XMON is not set | ||
1277 | # CONFIG_VIRQ_DEBUG is not set | ||
1278 | # CONFIG_BDI_SWITCH is not set | ||
1279 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
1280 | |||
1281 | # | ||
1282 | # Security options | ||
1283 | # | ||
1284 | # CONFIG_KEYS is not set | ||
1285 | CONFIG_SECURITY=y | ||
1286 | CONFIG_SECURITY_NETWORK=y | ||
1287 | # CONFIG_SECURITY_NETWORK_XFRM is not set | ||
1288 | CONFIG_SECURITY_CAPABILITIES=y | ||
1289 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1290 | CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 | ||
1291 | CONFIG_CRYPTO=y | ||
1292 | CONFIG_CRYPTO_ALGAPI=y | ||
1293 | CONFIG_CRYPTO_AEAD=m | ||
1294 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1295 | # CONFIG_CRYPTO_SEQIV is not set | ||
1296 | CONFIG_CRYPTO_HASH=y | ||
1297 | CONFIG_CRYPTO_MANAGER=y | ||
1298 | CONFIG_CRYPTO_HMAC=y | ||
1299 | # CONFIG_CRYPTO_XCBC is not set | ||
1300 | CONFIG_CRYPTO_NULL=m | ||
1301 | CONFIG_CRYPTO_MD4=m | ||
1302 | CONFIG_CRYPTO_MD5=y | ||
1303 | CONFIG_CRYPTO_SHA1=m | ||
1304 | CONFIG_CRYPTO_SHA256=m | ||
1305 | CONFIG_CRYPTO_SHA512=m | ||
1306 | CONFIG_CRYPTO_WP512=m | ||
1307 | # CONFIG_CRYPTO_TGR192 is not set | ||
1308 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1309 | CONFIG_CRYPTO_ECB=m | ||
1310 | CONFIG_CRYPTO_CBC=y | ||
1311 | CONFIG_CRYPTO_PCBC=m | ||
1312 | # CONFIG_CRYPTO_LRW is not set | ||
1313 | # CONFIG_CRYPTO_XTS is not set | ||
1314 | # CONFIG_CRYPTO_CTR is not set | ||
1315 | # CONFIG_CRYPTO_GCM is not set | ||
1316 | # CONFIG_CRYPTO_CCM is not set | ||
1317 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1318 | CONFIG_CRYPTO_DES=y | ||
1319 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1320 | CONFIG_CRYPTO_BLOWFISH=m | ||
1321 | CONFIG_CRYPTO_TWOFISH=m | ||
1322 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1323 | CONFIG_CRYPTO_SERPENT=m | ||
1324 | CONFIG_CRYPTO_AES=m | ||
1325 | CONFIG_CRYPTO_CAST5=m | ||
1326 | CONFIG_CRYPTO_CAST6=m | ||
1327 | CONFIG_CRYPTO_TEA=m | ||
1328 | CONFIG_CRYPTO_ARC4=m | ||
1329 | CONFIG_CRYPTO_KHAZAD=m | ||
1330 | CONFIG_CRYPTO_ANUBIS=m | ||
1331 | # CONFIG_CRYPTO_SEED is not set | ||
1332 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1333 | CONFIG_CRYPTO_DEFLATE=m | ||
1334 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1335 | CONFIG_CRYPTO_CRC32C=m | ||
1336 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1337 | CONFIG_CRYPTO_TEST=m | ||
1338 | CONFIG_CRYPTO_AUTHENC=m | ||
1339 | # CONFIG_CRYPTO_LZO is not set | ||
1340 | CONFIG_CRYPTO_HW=y | ||
1341 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
1342 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index b9dbfff9afe9..ce1e8d24e747 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile | |||
@@ -67,6 +67,7 @@ obj-$(CONFIG_BOOTX_TEXT) += btext.o | |||
67 | obj-$(CONFIG_SMP) += smp.o | 67 | obj-$(CONFIG_SMP) += smp.o |
68 | obj-$(CONFIG_KPROBES) += kprobes.o | 68 | obj-$(CONFIG_KPROBES) += kprobes.o |
69 | obj-$(CONFIG_PPC_UDBG_16550) += legacy_serial.o udbg_16550.o | 69 | obj-$(CONFIG_PPC_UDBG_16550) += legacy_serial.o udbg_16550.o |
70 | obj-$(CONFIG_STACKTRACE) += stacktrace.o | ||
70 | 71 | ||
71 | pci64-$(CONFIG_PPC64) += pci_dn.o isa-bridge.o | 72 | pci64-$(CONFIG_PPC64) += pci_dn.o isa-bridge.o |
72 | obj-$(CONFIG_PCI) += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \ | 73 | obj-$(CONFIG_PCI) += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \ |
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index 4b749c416464..292c6d8db0e1 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -26,8 +26,6 @@ | |||
26 | #ifdef CONFIG_PPC64 | 26 | #ifdef CONFIG_PPC64 |
27 | #include <linux/time.h> | 27 | #include <linux/time.h> |
28 | #include <linux/hardirq.h> | 28 | #include <linux/hardirq.h> |
29 | #else | ||
30 | #include <linux/ptrace.h> | ||
31 | #endif | 29 | #endif |
32 | 30 | ||
33 | #include <asm/io.h> | 31 | #include <asm/io.h> |
@@ -46,6 +44,9 @@ | |||
46 | #include <asm/mmu.h> | 44 | #include <asm/mmu.h> |
47 | #include <asm/hvcall.h> | 45 | #include <asm/hvcall.h> |
48 | #endif | 46 | #endif |
47 | #ifdef CONFIG_PPC_ISERIES | ||
48 | #include <asm/iseries/alpaca.h> | ||
49 | #endif | ||
49 | 50 | ||
50 | #define DEFINE(sym, val) \ | 51 | #define DEFINE(sym, val) \ |
51 | asm volatile("\n->" #sym " %0 " #val : : "i" (val)) | 52 | asm volatile("\n->" #sym " %0 " #val : : "i" (val)) |
@@ -60,7 +61,6 @@ int main(void) | |||
60 | DEFINE(AUDITCONTEXT, offsetof(struct task_struct, audit_context)); | 61 | DEFINE(AUDITCONTEXT, offsetof(struct task_struct, audit_context)); |
61 | #else | 62 | #else |
62 | DEFINE(THREAD_INFO, offsetof(struct task_struct, stack)); | 63 | DEFINE(THREAD_INFO, offsetof(struct task_struct, stack)); |
63 | DEFINE(PTRACE, offsetof(struct task_struct, ptrace)); | ||
64 | #endif /* CONFIG_PPC64 */ | 64 | #endif /* CONFIG_PPC64 */ |
65 | 65 | ||
66 | DEFINE(KSP, offsetof(struct thread_struct, ksp)); | 66 | DEFINE(KSP, offsetof(struct thread_struct, ksp)); |
@@ -80,7 +80,6 @@ int main(void) | |||
80 | DEFINE(PGDIR, offsetof(struct thread_struct, pgdir)); | 80 | DEFINE(PGDIR, offsetof(struct thread_struct, pgdir)); |
81 | #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) | 81 | #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) |
82 | DEFINE(THREAD_DBCR0, offsetof(struct thread_struct, dbcr0)); | 82 | DEFINE(THREAD_DBCR0, offsetof(struct thread_struct, dbcr0)); |
83 | DEFINE(PT_PTRACED, PT_PTRACED); | ||
84 | #endif | 83 | #endif |
85 | #ifdef CONFIG_SPE | 84 | #ifdef CONFIG_SPE |
86 | DEFINE(THREAD_EVR0, offsetof(struct thread_struct, evr[0])); | 85 | DEFINE(THREAD_EVR0, offsetof(struct thread_struct, evr[0])); |
@@ -325,6 +324,9 @@ int main(void) | |||
325 | DEFINE(PAGE_OFFSET_VSID, KERNEL_VSID(PAGE_OFFSET)); | 324 | DEFINE(PAGE_OFFSET_VSID, KERNEL_VSID(PAGE_OFFSET)); |
326 | DEFINE(VMALLOC_START_ESID, GET_ESID(VMALLOC_START)); | 325 | DEFINE(VMALLOC_START_ESID, GET_ESID(VMALLOC_START)); |
327 | DEFINE(VMALLOC_START_VSID, KERNEL_VSID(VMALLOC_START)); | 326 | DEFINE(VMALLOC_START_VSID, KERNEL_VSID(VMALLOC_START)); |
327 | |||
328 | /* alpaca */ | ||
329 | DEFINE(ALPACA_SIZE, sizeof(struct alpaca)); | ||
328 | #endif | 330 | #endif |
329 | 331 | ||
330 | DEFINE(PGD_TABLE_SIZE, PGD_TABLE_SIZE); | 332 | DEFINE(PGD_TABLE_SIZE, PGD_TABLE_SIZE); |
diff --git a/arch/powerpc/kernel/btext.c b/arch/powerpc/kernel/btext.c index 80e2eef05b2e..9f9377745490 100644 --- a/arch/powerpc/kernel/btext.c +++ b/arch/powerpc/kernel/btext.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/string.h> | 7 | #include <linux/string.h> |
8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/lmb.h> | ||
10 | 11 | ||
11 | #include <asm/sections.h> | 12 | #include <asm/sections.h> |
12 | #include <asm/prom.h> | 13 | #include <asm/prom.h> |
@@ -15,7 +16,7 @@ | |||
15 | #include <asm/mmu.h> | 16 | #include <asm/mmu.h> |
16 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
17 | #include <asm/io.h> | 18 | #include <asm/io.h> |
18 | #include <asm/lmb.h> | 19 | #include <asm/prom.h> |
19 | #include <asm/processor.h> | 20 | #include <asm/processor.h> |
20 | #include <asm/udbg.h> | 21 | #include <asm/udbg.h> |
21 | 22 | ||
diff --git a/arch/powerpc/kernel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_setup_44x.S index 6250443ab9c9..5465e8de0e61 100644 --- a/arch/powerpc/kernel/cpu_setup_44x.S +++ b/arch/powerpc/kernel/cpu_setup_44x.S | |||
@@ -3,7 +3,7 @@ | |||
3 | * Valentine Barshak <vbarshak@ru.mvista.com> | 3 | * Valentine Barshak <vbarshak@ru.mvista.com> |
4 | * MontaVista Software, Inc (c) 2007 | 4 | * MontaVista Software, Inc (c) 2007 |
5 | * | 5 | * |
6 | * Based on cpu_setup_6xx code by | 6 | * Based on cpu_setup_6xx code by |
7 | * Benjamin Herrenschmidt <benh@kernel.crashing.org> | 7 | * Benjamin Herrenschmidt <benh@kernel.crashing.org> |
8 | * | 8 | * |
9 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
@@ -32,6 +32,9 @@ _GLOBAL(__setup_cpu_440grx) | |||
32 | bl __fixup_440A_mcheck | 32 | bl __fixup_440A_mcheck |
33 | mtlr r4 | 33 | mtlr r4 |
34 | blr | 34 | blr |
35 | _GLOBAL(__setup_cpu_460ex) | ||
36 | _GLOBAL(__setup_cpu_460gt) | ||
37 | b __init_fpu_44x | ||
35 | _GLOBAL(__setup_cpu_440gx) | 38 | _GLOBAL(__setup_cpu_440gx) |
36 | _GLOBAL(__setup_cpu_440spe) | 39 | _GLOBAL(__setup_cpu_440spe) |
37 | b __fixup_440A_mcheck | 40 | b __fixup_440A_mcheck |
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 2a8f5cc5184f..26ffb44e2701 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -36,6 +36,8 @@ extern void __setup_cpu_440epx(unsigned long offset, struct cpu_spec* spec); | |||
36 | extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec); | 36 | extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec); |
37 | extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec); | 37 | extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec); |
38 | extern void __setup_cpu_440spe(unsigned long offset, struct cpu_spec* spec); | 38 | extern void __setup_cpu_440spe(unsigned long offset, struct cpu_spec* spec); |
39 | extern void __setup_cpu_460ex(unsigned long offset, struct cpu_spec* spec); | ||
40 | extern void __setup_cpu_460gt(unsigned long offset, struct cpu_spec* spec); | ||
39 | extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); | 41 | extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); |
40 | extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); | 42 | extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); |
41 | extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); | 43 | extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); |
@@ -1397,6 +1399,30 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1397 | .machine_check = machine_check_440A, | 1399 | .machine_check = machine_check_440A, |
1398 | .platform = "ppc440", | 1400 | .platform = "ppc440", |
1399 | }, | 1401 | }, |
1402 | { /* 460EX */ | ||
1403 | .pvr_mask = 0xffff0002, | ||
1404 | .pvr_value = 0x13020002, | ||
1405 | .cpu_name = "460EX", | ||
1406 | .cpu_features = CPU_FTRS_44X, | ||
1407 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | ||
1408 | .icache_bsize = 32, | ||
1409 | .dcache_bsize = 32, | ||
1410 | .cpu_setup = __setup_cpu_460ex, | ||
1411 | .machine_check = machine_check_440A, | ||
1412 | .platform = "ppc440", | ||
1413 | }, | ||
1414 | { /* 460GT */ | ||
1415 | .pvr_mask = 0xffff0002, | ||
1416 | .pvr_value = 0x13020000, | ||
1417 | .cpu_name = "460GT", | ||
1418 | .cpu_features = CPU_FTRS_44X, | ||
1419 | .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, | ||
1420 | .icache_bsize = 32, | ||
1421 | .dcache_bsize = 32, | ||
1422 | .cpu_setup = __setup_cpu_460gt, | ||
1423 | .machine_check = machine_check_440A, | ||
1424 | .platform = "ppc440", | ||
1425 | }, | ||
1400 | #endif /* CONFIG_44x */ | 1426 | #endif /* CONFIG_44x */ |
1401 | #ifdef CONFIG_FSL_BOOKE | 1427 | #ifdef CONFIG_FSL_BOOKE |
1402 | #ifdef CONFIG_E200 | 1428 | #ifdef CONFIG_E200 |
@@ -1512,7 +1538,7 @@ struct cpu_spec * __init identify_cpu(unsigned long offset, unsigned int pvr) | |||
1512 | *t = *s; | 1538 | *t = *s; |
1513 | *PTRRELOC(&cur_cpu_spec) = &the_cpu_spec; | 1539 | *PTRRELOC(&cur_cpu_spec) = &the_cpu_spec; |
1514 | #if defined(CONFIG_PPC64) || defined(CONFIG_BOOKE) | 1540 | #if defined(CONFIG_PPC64) || defined(CONFIG_BOOKE) |
1515 | /* ppc64 and booke expect identify_cpu to also call | 1541 | /* ppc64 and booke expect identify_cpu to also call |
1516 | * setup_cpu for that processor. I will consolidate | 1542 | * setup_cpu for that processor. I will consolidate |
1517 | * that at a later time, for now, just use #ifdef. | 1543 | * that at a later time, for now, just use #ifdef. |
1518 | * we also don't need to PTRRELOC the function pointer | 1544 | * we also don't need to PTRRELOC the function pointer |
diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c index 571132ed12c1..eae401de3f76 100644 --- a/arch/powerpc/kernel/crash.c +++ b/arch/powerpc/kernel/crash.c | |||
@@ -24,12 +24,13 @@ | |||
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/irq.h> | 25 | #include <linux/irq.h> |
26 | #include <linux/types.h> | 26 | #include <linux/types.h> |
27 | #include <linux/lmb.h> | ||
27 | 28 | ||
28 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
29 | #include <asm/machdep.h> | 30 | #include <asm/machdep.h> |
30 | #include <asm/kexec.h> | 31 | #include <asm/kexec.h> |
31 | #include <asm/kdump.h> | 32 | #include <asm/kdump.h> |
32 | #include <asm/lmb.h> | 33 | #include <asm/prom.h> |
33 | #include <asm/firmware.h> | 34 | #include <asm/firmware.h> |
34 | #include <asm/smp.h> | 35 | #include <asm/smp.h> |
35 | #include <asm/system.h> | 36 | #include <asm/system.h> |
diff --git a/arch/powerpc/kernel/crash_dump.c b/arch/powerpc/kernel/crash_dump.c index 29ff77c468ac..9ee3c5278db0 100644 --- a/arch/powerpc/kernel/crash_dump.c +++ b/arch/powerpc/kernel/crash_dump.c | |||
@@ -13,8 +13,9 @@ | |||
13 | 13 | ||
14 | #include <linux/crash_dump.h> | 14 | #include <linux/crash_dump.h> |
15 | #include <linux/bootmem.h> | 15 | #include <linux/bootmem.h> |
16 | #include <linux/lmb.h> | ||
16 | #include <asm/kdump.h> | 17 | #include <asm/kdump.h> |
17 | #include <asm/lmb.h> | 18 | #include <asm/prom.h> |
18 | #include <asm/firmware.h> | 19 | #include <asm/firmware.h> |
19 | #include <asm/uaccess.h> | 20 | #include <asm/uaccess.h> |
20 | 21 | ||
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 69a91bd46115..84c868633068 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S | |||
@@ -110,9 +110,9 @@ transfer_to_handler: | |||
110 | stw r11,PT_REGS(r12) | 110 | stw r11,PT_REGS(r12) |
111 | #if defined(CONFIG_40x) || defined(CONFIG_BOOKE) | 111 | #if defined(CONFIG_40x) || defined(CONFIG_BOOKE) |
112 | /* Check to see if the dbcr0 register is set up to debug. Use the | 112 | /* Check to see if the dbcr0 register is set up to debug. Use the |
113 | single-step bit to do this. */ | 113 | internal debug mode bit to do this. */ |
114 | lwz r12,THREAD_DBCR0(r12) | 114 | lwz r12,THREAD_DBCR0(r12) |
115 | andis. r12,r12,DBCR0_IC@h | 115 | andis. r12,r12,DBCR0_IDM@h |
116 | beq+ 3f | 116 | beq+ 3f |
117 | /* From user and task is ptraced - load up global dbcr0 */ | 117 | /* From user and task is ptraced - load up global dbcr0 */ |
118 | li r12,-1 /* clear all pending debug events */ | 118 | li r12,-1 /* clear all pending debug events */ |
@@ -120,6 +120,12 @@ transfer_to_handler: | |||
120 | lis r11,global_dbcr0@ha | 120 | lis r11,global_dbcr0@ha |
121 | tophys(r11,r11) | 121 | tophys(r11,r11) |
122 | addi r11,r11,global_dbcr0@l | 122 | addi r11,r11,global_dbcr0@l |
123 | #ifdef CONFIG_SMP | ||
124 | rlwinm r9,r1,0,0,(31-THREAD_SHIFT) | ||
125 | lwz r9,TI_CPU(r9) | ||
126 | slwi r9,r9,3 | ||
127 | add r11,r11,r9 | ||
128 | #endif | ||
123 | lwz r12,0(r11) | 129 | lwz r12,0(r11) |
124 | mtspr SPRN_DBCR0,r12 | 130 | mtspr SPRN_DBCR0,r12 |
125 | lwz r12,4(r11) | 131 | lwz r12,4(r11) |
@@ -238,10 +244,10 @@ ret_from_syscall: | |||
238 | stw r11,_CCR(r1) | 244 | stw r11,_CCR(r1) |
239 | syscall_exit_cont: | 245 | syscall_exit_cont: |
240 | #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) | 246 | #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) |
241 | /* If the process has its own DBCR0 value, load it up. The single | 247 | /* If the process has its own DBCR0 value, load it up. The internal |
242 | step bit tells us that dbcr0 should be loaded. */ | 248 | debug mode bit tells us that dbcr0 should be loaded. */ |
243 | lwz r0,THREAD+THREAD_DBCR0(r2) | 249 | lwz r0,THREAD+THREAD_DBCR0(r2) |
244 | andis. r10,r0,DBCR0_IC@h | 250 | andis. r10,r0,DBCR0_IDM@h |
245 | bnel- load_dbcr0 | 251 | bnel- load_dbcr0 |
246 | #endif | 252 | #endif |
247 | #ifdef CONFIG_44x | 253 | #ifdef CONFIG_44x |
@@ -666,10 +672,10 @@ user_exc_return: /* r10 contains MSR_KERNEL here */ | |||
666 | 672 | ||
667 | restore_user: | 673 | restore_user: |
668 | #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) | 674 | #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) |
669 | /* Check whether this process has its own DBCR0 value. The single | 675 | /* Check whether this process has its own DBCR0 value. The internal |
670 | step bit tells us that dbcr0 should be loaded. */ | 676 | debug mode bit tells us that dbcr0 should be loaded. */ |
671 | lwz r0,THREAD+THREAD_DBCR0(r2) | 677 | lwz r0,THREAD+THREAD_DBCR0(r2) |
672 | andis. r10,r0,DBCR0_IC@h | 678 | andis. r10,r0,DBCR0_IDM@h |
673 | bnel- load_dbcr0 | 679 | bnel- load_dbcr0 |
674 | #endif | 680 | #endif |
675 | 681 | ||
@@ -879,6 +885,12 @@ load_dbcr0: | |||
879 | mfspr r10,SPRN_DBCR0 | 885 | mfspr r10,SPRN_DBCR0 |
880 | lis r11,global_dbcr0@ha | 886 | lis r11,global_dbcr0@ha |
881 | addi r11,r11,global_dbcr0@l | 887 | addi r11,r11,global_dbcr0@l |
888 | #ifdef CONFIG_SMP | ||
889 | rlwinm r9,r1,0,0,(31-THREAD_SHIFT) | ||
890 | lwz r9,TI_CPU(r9) | ||
891 | slwi r9,r9,3 | ||
892 | add r11,r11,r9 | ||
893 | #endif | ||
882 | stw r10,0(r11) | 894 | stw r10,0(r11) |
883 | mtspr SPRN_DBCR0,r0 | 895 | mtspr SPRN_DBCR0,r0 |
884 | lwz r10,4(r11) | 896 | lwz r10,4(r11) |
@@ -891,7 +903,7 @@ load_dbcr0: | |||
891 | .section .bss | 903 | .section .bss |
892 | .align 4 | 904 | .align 4 |
893 | global_dbcr0: | 905 | global_dbcr0: |
894 | .space 8 | 906 | .space 8*NR_CPUS |
895 | .previous | 907 | .previous |
896 | #endif /* !(CONFIG_4xx || CONFIG_BOOKE) */ | 908 | #endif /* !(CONFIG_4xx || CONFIG_BOOKE) */ |
897 | 909 | ||
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 148a3547c9aa..c0db5b769e55 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -29,6 +29,8 @@ | |||
29 | #include <asm/cputable.h> | 29 | #include <asm/cputable.h> |
30 | #include <asm/firmware.h> | 30 | #include <asm/firmware.h> |
31 | #include <asm/bug.h> | 31 | #include <asm/bug.h> |
32 | #include <asm/ptrace.h> | ||
33 | #include <asm/irqflags.h> | ||
32 | 34 | ||
33 | /* | 35 | /* |
34 | * System calls. | 36 | * System calls. |
@@ -39,7 +41,7 @@ | |||
39 | 41 | ||
40 | /* This value is used to mark exception frames on the stack. */ | 42 | /* This value is used to mark exception frames on the stack. */ |
41 | exception_marker: | 43 | exception_marker: |
42 | .tc ID_72656773_68657265[TC],0x7265677368657265 | 44 | .tc ID_EXC_MARKER[TC],STACK_FRAME_REGS_MARKER |
43 | 45 | ||
44 | .section ".text" | 46 | .section ".text" |
45 | .align 7 | 47 | .align 7 |
@@ -88,6 +90,14 @@ system_call_common: | |||
88 | addi r9,r1,STACK_FRAME_OVERHEAD | 90 | addi r9,r1,STACK_FRAME_OVERHEAD |
89 | ld r11,exception_marker@toc(r2) | 91 | ld r11,exception_marker@toc(r2) |
90 | std r11,-16(r9) /* "regshere" marker */ | 92 | std r11,-16(r9) /* "regshere" marker */ |
93 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
94 | bl .trace_hardirqs_on | ||
95 | REST_GPR(0,r1) | ||
96 | REST_4GPRS(3,r1) | ||
97 | REST_2GPRS(7,r1) | ||
98 | addi r9,r1,STACK_FRAME_OVERHEAD | ||
99 | ld r12,_MSR(r1) | ||
100 | #endif /* CONFIG_TRACE_IRQFLAGS */ | ||
91 | li r10,1 | 101 | li r10,1 |
92 | stb r10,PACASOFTIRQEN(r13) | 102 | stb r10,PACASOFTIRQEN(r13) |
93 | stb r10,PACAHARDIRQEN(r13) | 103 | stb r10,PACAHARDIRQEN(r13) |
@@ -102,7 +112,7 @@ BEGIN_FW_FTR_SECTION | |||
102 | b hardware_interrupt_entry | 112 | b hardware_interrupt_entry |
103 | 2: | 113 | 2: |
104 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | 114 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) |
105 | #endif | 115 | #endif /* CONFIG_PPC_ISERIES */ |
106 | mfmsr r11 | 116 | mfmsr r11 |
107 | ori r11,r11,MSR_EE | 117 | ori r11,r11,MSR_EE |
108 | mtmsrd r11,1 | 118 | mtmsrd r11,1 |
@@ -504,6 +514,10 @@ BEGIN_FW_FTR_SECTION | |||
504 | 514 | ||
505 | li r3,0 | 515 | li r3,0 |
506 | stb r3,PACASOFTIRQEN(r13) /* ensure we are soft-disabled */ | 516 | stb r3,PACASOFTIRQEN(r13) /* ensure we are soft-disabled */ |
517 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
518 | bl .trace_hardirqs_off | ||
519 | mfmsr r10 | ||
520 | #endif | ||
507 | ori r10,r10,MSR_EE | 521 | ori r10,r10,MSR_EE |
508 | mtmsrd r10 /* hard-enable again */ | 522 | mtmsrd r10 /* hard-enable again */ |
509 | addi r3,r1,STACK_FRAME_OVERHEAD | 523 | addi r3,r1,STACK_FRAME_OVERHEAD |
@@ -512,7 +526,7 @@ BEGIN_FW_FTR_SECTION | |||
512 | 4: | 526 | 4: |
513 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | 527 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) |
514 | #endif | 528 | #endif |
515 | stb r5,PACASOFTIRQEN(r13) | 529 | TRACE_AND_RESTORE_IRQ(r5); |
516 | 530 | ||
517 | /* extract EE bit and use it to restore paca->hard_enabled */ | 531 | /* extract EE bit and use it to restore paca->hard_enabled */ |
518 | ld r3,_MSR(r1) | 532 | ld r3,_MSR(r1) |
@@ -580,6 +594,16 @@ do_work: | |||
580 | bne restore | 594 | bne restore |
581 | /* here we are preempting the current task */ | 595 | /* here we are preempting the current task */ |
582 | 1: | 596 | 1: |
597 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
598 | bl .trace_hardirqs_on | ||
599 | /* Note: we just clobbered r10 which used to contain the previous | ||
600 | * MSR before the hard-disabling done by the caller of do_work. | ||
601 | * We don't have that value anymore, but it doesn't matter as | ||
602 | * we will hard-enable unconditionally, we can just reload the | ||
603 | * current MSR into r10 | ||
604 | */ | ||
605 | mfmsr r10 | ||
606 | #endif /* CONFIG_TRACE_IRQFLAGS */ | ||
583 | li r0,1 | 607 | li r0,1 |
584 | stb r0,PACASOFTIRQEN(r13) | 608 | stb r0,PACASOFTIRQEN(r13) |
585 | stb r0,PACAHARDIRQEN(r13) | 609 | stb r0,PACAHARDIRQEN(r13) |
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S index 0f4fac512020..785af9b56591 100644 --- a/arch/powerpc/kernel/head_32.S +++ b/arch/powerpc/kernel/head_32.S | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <asm/thread_info.h> | 30 | #include <asm/thread_info.h> |
31 | #include <asm/ppc_asm.h> | 31 | #include <asm/ppc_asm.h> |
32 | #include <asm/asm-offsets.h> | 32 | #include <asm/asm-offsets.h> |
33 | #include <asm/ptrace.h> | ||
33 | 34 | ||
34 | /* 601 only have IBAT; cr0.eq is set on 601 when using this macro */ | 35 | /* 601 only have IBAT; cr0.eq is set on 601 when using this macro */ |
35 | #define LOAD_BAT(n, reg, RA, RB) \ | 36 | #define LOAD_BAT(n, reg, RA, RB) \ |
@@ -268,8 +269,8 @@ __secondary_hold_acknowledge: | |||
268 | li r10,MSR_KERNEL & ~(MSR_IR|MSR_DR); /* can take exceptions */ \ | 269 | li r10,MSR_KERNEL & ~(MSR_IR|MSR_DR); /* can take exceptions */ \ |
269 | MTMSRD(r10); /* (except for mach check in rtas) */ \ | 270 | MTMSRD(r10); /* (except for mach check in rtas) */ \ |
270 | stw r0,GPR0(r11); \ | 271 | stw r0,GPR0(r11); \ |
271 | lis r10,0x7265; /* put exception frame marker */ \ | 272 | lis r10,STACK_FRAME_REGS_MARKER@ha; /* exception frame marker */ \ |
272 | addi r10,r10,0x6773; \ | 273 | addi r10,r10,STACK_FRAME_REGS_MARKER@l; \ |
273 | stw r10,8(r11); \ | 274 | stw r10,8(r11); \ |
274 | SAVE_4GPRS(3, r11); \ | 275 | SAVE_4GPRS(3, r11); \ |
275 | SAVE_2GPRS(7, r11) | 276 | SAVE_2GPRS(7, r11) |
@@ -763,23 +764,6 @@ load_up_altivec: | |||
763 | b fast_exception_return | 764 | b fast_exception_return |
764 | 765 | ||
765 | /* | 766 | /* |
766 | * AltiVec unavailable trap from kernel - print a message, but let | ||
767 | * the task use AltiVec in the kernel until it returns to user mode. | ||
768 | */ | ||
769 | KernelAltiVec: | ||
770 | lwz r3,_MSR(r1) | ||
771 | oris r3,r3,MSR_VEC@h | ||
772 | stw r3,_MSR(r1) /* enable use of AltiVec after return */ | ||
773 | lis r3,87f@h | ||
774 | ori r3,r3,87f@l | ||
775 | mr r4,r2 /* current */ | ||
776 | lwz r5,_NIP(r1) | ||
777 | bl printk | ||
778 | b ret_from_except | ||
779 | 87: .string "AltiVec used in kernel (task=%p, pc=%x) \n" | ||
780 | .align 4,0 | ||
781 | |||
782 | /* | ||
783 | * giveup_altivec(tsk) | 767 | * giveup_altivec(tsk) |
784 | * Disable AltiVec for the task given as the argument, | 768 | * Disable AltiVec for the task given as the argument, |
785 | * and save the AltiVec registers in its thread_struct. | 769 | * and save the AltiVec registers in its thread_struct. |
diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S index ad071a146a8d..b84ec6a2fc94 100644 --- a/arch/powerpc/kernel/head_44x.S +++ b/arch/powerpc/kernel/head_44x.S | |||
@@ -211,7 +211,7 @@ skpinv: addi r4,r4,1 /* Increment */ | |||
211 | SET_IVOR(12, WatchdogTimer); | 211 | SET_IVOR(12, WatchdogTimer); |
212 | SET_IVOR(13, DataTLBError); | 212 | SET_IVOR(13, DataTLBError); |
213 | SET_IVOR(14, InstructionTLBError); | 213 | SET_IVOR(14, InstructionTLBError); |
214 | SET_IVOR(15, Debug); | 214 | SET_IVOR(15, DebugCrit); |
215 | 215 | ||
216 | /* Establish the interrupt vector base */ | 216 | /* Establish the interrupt vector base */ |
217 | lis r4,interrupt_base@h /* IVPR only uses the high 16-bits */ | 217 | lis r4,interrupt_base@h /* IVPR only uses the high 16-bits */ |
@@ -578,7 +578,7 @@ interrupt_base: | |||
578 | b InstructionStorage | 578 | b InstructionStorage |
579 | 579 | ||
580 | /* Debug Interrupt */ | 580 | /* Debug Interrupt */ |
581 | DEBUG_EXCEPTION | 581 | DEBUG_CRIT_EXCEPTION |
582 | 582 | ||
583 | /* | 583 | /* |
584 | * Local functions | 584 | * Local functions |
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index d3aee08e6814..215973a2c8d5 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
@@ -36,8 +36,7 @@ | |||
36 | #include <asm/firmware.h> | 36 | #include <asm/firmware.h> |
37 | #include <asm/page_64.h> | 37 | #include <asm/page_64.h> |
38 | #include <asm/exception.h> | 38 | #include <asm/exception.h> |
39 | 39 | #include <asm/irqflags.h> | |
40 | #define DO_SOFT_DISABLE | ||
41 | 40 | ||
42 | /* | 41 | /* |
43 | * We layout physical memory as follows: | 42 | * We layout physical memory as follows: |
@@ -450,8 +449,8 @@ bad_stack: | |||
450 | */ | 449 | */ |
451 | fast_exc_return_irq: /* restores irq state too */ | 450 | fast_exc_return_irq: /* restores irq state too */ |
452 | ld r3,SOFTE(r1) | 451 | ld r3,SOFTE(r1) |
452 | TRACE_AND_RESTORE_IRQ(r3); | ||
453 | ld r12,_MSR(r1) | 453 | ld r12,_MSR(r1) |
454 | stb r3,PACASOFTIRQEN(r13) /* restore paca->soft_enabled */ | ||
455 | rldicl r4,r12,49,63 /* get MSR_EE to LSB */ | 454 | rldicl r4,r12,49,63 /* get MSR_EE to LSB */ |
456 | stb r4,PACAHARDIRQEN(r13) /* restore paca->hard_enabled */ | 455 | stb r4,PACAHARDIRQEN(r13) /* restore paca->hard_enabled */ |
457 | b 1f | 456 | b 1f |
@@ -621,7 +620,7 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | |||
621 | mtlr r10 | 620 | mtlr r10 |
622 | 621 | ||
623 | andi. r10,r12,MSR_RI /* check for unrecoverable exception */ | 622 | andi. r10,r12,MSR_RI /* check for unrecoverable exception */ |
624 | beq- unrecov_slb | 623 | beq- 2f |
625 | 624 | ||
626 | .machine push | 625 | .machine push |
627 | .machine "power4" | 626 | .machine "power4" |
@@ -643,6 +642,22 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | |||
643 | rfid | 642 | rfid |
644 | b . /* prevent speculative execution */ | 643 | b . /* prevent speculative execution */ |
645 | 644 | ||
645 | 2: | ||
646 | #ifdef CONFIG_PPC_ISERIES | ||
647 | BEGIN_FW_FTR_SECTION | ||
648 | b unrecov_slb | ||
649 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | ||
650 | #endif /* CONFIG_PPC_ISERIES */ | ||
651 | mfspr r11,SPRN_SRR0 | ||
652 | clrrdi r10,r13,32 | ||
653 | LOAD_HANDLER(r10,unrecov_slb) | ||
654 | mtspr SPRN_SRR0,r10 | ||
655 | mfmsr r10 | ||
656 | ori r10,r10,MSR_IR|MSR_DR|MSR_RI | ||
657 | mtspr SPRN_SRR1,r10 | ||
658 | rfid | ||
659 | b . | ||
660 | |||
646 | unrecov_slb: | 661 | unrecov_slb: |
647 | EXCEPTION_PROLOG_COMMON(0x4100, PACA_EXSLB) | 662 | EXCEPTION_PROLOG_COMMON(0x4100, PACA_EXSLB) |
648 | DISABLE_INTS | 663 | DISABLE_INTS |
@@ -808,7 +823,7 @@ _STATIC(load_up_altivec) | |||
808 | * Hash table stuff | 823 | * Hash table stuff |
809 | */ | 824 | */ |
810 | .align 7 | 825 | .align 7 |
811 | _GLOBAL(do_hash_page) | 826 | _STATIC(do_hash_page) |
812 | std r3,_DAR(r1) | 827 | std r3,_DAR(r1) |
813 | std r4,_DSISR(r1) | 828 | std r4,_DSISR(r1) |
814 | 829 | ||
@@ -820,6 +835,27 @@ BEGIN_FTR_SECTION | |||
820 | END_FTR_SECTION_IFCLR(CPU_FTR_SLB) | 835 | END_FTR_SECTION_IFCLR(CPU_FTR_SLB) |
821 | 836 | ||
822 | /* | 837 | /* |
838 | * On iSeries, we soft-disable interrupts here, then | ||
839 | * hard-enable interrupts so that the hash_page code can spin on | ||
840 | * the hash_table_lock without problems on a shared processor. | ||
841 | */ | ||
842 | DISABLE_INTS | ||
843 | |||
844 | /* | ||
845 | * Currently, trace_hardirqs_off() will be called by DISABLE_INTS | ||
846 | * and will clobber volatile registers when irq tracing is enabled | ||
847 | * so we need to reload them. It may be possible to be smarter here | ||
848 | * and move the irq tracing elsewhere but let's keep it simple for | ||
849 | * now | ||
850 | */ | ||
851 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
852 | ld r3,_DAR(r1) | ||
853 | ld r4,_DSISR(r1) | ||
854 | ld r5,_TRAP(r1) | ||
855 | ld r12,_MSR(r1) | ||
856 | clrrdi r5,r5,4 | ||
857 | #endif /* CONFIG_TRACE_IRQFLAGS */ | ||
858 | /* | ||
823 | * We need to set the _PAGE_USER bit if MSR_PR is set or if we are | 859 | * We need to set the _PAGE_USER bit if MSR_PR is set or if we are |
824 | * accessing a userspace segment (even from the kernel). We assume | 860 | * accessing a userspace segment (even from the kernel). We assume |
825 | * kernel addresses always have the high bit set. | 861 | * kernel addresses always have the high bit set. |
@@ -832,13 +868,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_SLB) | |||
832 | rlwimi r4,r5,22+2,31-2,31-2 /* Set _PAGE_EXEC if trap is 0x400 */ | 868 | rlwimi r4,r5,22+2,31-2,31-2 /* Set _PAGE_EXEC if trap is 0x400 */ |
833 | 869 | ||
834 | /* | 870 | /* |
835 | * On iSeries, we soft-disable interrupts here, then | ||
836 | * hard-enable interrupts so that the hash_page code can spin on | ||
837 | * the hash_table_lock without problems on a shared processor. | ||
838 | */ | ||
839 | DISABLE_INTS | ||
840 | |||
841 | /* | ||
842 | * r3 contains the faulting address | 871 | * r3 contains the faulting address |
843 | * r4 contains the required access permissions | 872 | * r4 contains the required access permissions |
844 | * r5 contains the trap number | 873 | * r5 contains the trap number |
@@ -848,7 +877,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_SLB) | |||
848 | bl .hash_page /* build HPTE if possible */ | 877 | bl .hash_page /* build HPTE if possible */ |
849 | cmpdi r3,0 /* see if hash_page succeeded */ | 878 | cmpdi r3,0 /* see if hash_page succeeded */ |
850 | 879 | ||
851 | #ifdef DO_SOFT_DISABLE | ||
852 | BEGIN_FW_FTR_SECTION | 880 | BEGIN_FW_FTR_SECTION |
853 | /* | 881 | /* |
854 | * If we had interrupts soft-enabled at the point where the | 882 | * If we had interrupts soft-enabled at the point where the |
@@ -860,7 +888,7 @@ BEGIN_FW_FTR_SECTION | |||
860 | */ | 888 | */ |
861 | beq 13f | 889 | beq 13f |
862 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | 890 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) |
863 | #endif | 891 | |
864 | BEGIN_FW_FTR_SECTION | 892 | BEGIN_FW_FTR_SECTION |
865 | /* | 893 | /* |
866 | * Here we have interrupts hard-disabled, so it is sufficient | 894 | * Here we have interrupts hard-disabled, so it is sufficient |
@@ -874,11 +902,12 @@ END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) | |||
874 | 902 | ||
875 | /* | 903 | /* |
876 | * hash_page couldn't handle it, set soft interrupt enable back | 904 | * hash_page couldn't handle it, set soft interrupt enable back |
877 | * to what it was before the trap. Note that .local_irq_restore | 905 | * to what it was before the trap. Note that .raw_local_irq_restore |
878 | * handles any interrupts pending at this point. | 906 | * handles any interrupts pending at this point. |
879 | */ | 907 | */ |
880 | ld r3,SOFTE(r1) | 908 | ld r3,SOFTE(r1) |
881 | bl .local_irq_restore | 909 | TRACE_AND_RESTORE_IRQ_PARTIAL(r3, 11f) |
910 | bl .raw_local_irq_restore | ||
882 | b 11f | 911 | b 11f |
883 | 912 | ||
884 | /* Here we have a page fault that hash_page can't handle. */ | 913 | /* Here we have a page fault that hash_page can't handle. */ |
@@ -1477,6 +1506,10 @@ _INIT_STATIC(start_here_multiplatform) | |||
1477 | addi r2,r2,0x4000 | 1506 | addi r2,r2,0x4000 |
1478 | add r2,r2,r26 | 1507 | add r2,r2,r26 |
1479 | 1508 | ||
1509 | /* Set initial ptr to current */ | ||
1510 | LOAD_REG_IMMEDIATE(r4, init_task) | ||
1511 | std r4,PACACURRENT(r13) | ||
1512 | |||
1480 | /* Do very early kernel initializations, including initial hash table, | 1513 | /* Do very early kernel initializations, including initial hash table, |
1481 | * stab and slb setup before we turn on relocation. */ | 1514 | * stab and slb setup before we turn on relocation. */ |
1482 | 1515 | ||
@@ -1505,10 +1538,6 @@ _INIT_GLOBAL(start_here_common) | |||
1505 | li r0,0 | 1538 | li r0,0 |
1506 | stdu r0,-STACK_FRAME_OVERHEAD(r1) | 1539 | stdu r0,-STACK_FRAME_OVERHEAD(r1) |
1507 | 1540 | ||
1508 | /* ptr to current */ | ||
1509 | LOAD_REG_IMMEDIATE(r4, init_task) | ||
1510 | std r4,PACACURRENT(r13) | ||
1511 | |||
1512 | /* Load the TOC */ | 1541 | /* Load the TOC */ |
1513 | ld r2,PACATOC(r13) | 1542 | ld r2,PACATOC(r13) |
1514 | std r1,PACAKSAVE(r13) | 1543 | std r1,PACAKSAVE(r13) |
diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h index ba9393f8e77a..aefafc6330c9 100644 --- a/arch/powerpc/kernel/head_booke.h +++ b/arch/powerpc/kernel/head_booke.h | |||
@@ -56,8 +56,17 @@ | |||
56 | * is necessary since the MMU is always on, for Book-E parts, and the stacks | 56 | * is necessary since the MMU is always on, for Book-E parts, and the stacks |
57 | * are offset from KERNELBASE. | 57 | * are offset from KERNELBASE. |
58 | * | 58 | * |
59 | * There is some space optimization to be had here if desired. However | ||
60 | * to allow for a common kernel with support for debug exceptions either | ||
61 | * going to critical or their own debug level we aren't currently | ||
62 | * providing configurations that micro-optimize space usage. | ||
59 | */ | 63 | */ |
60 | #define BOOKE_EXCEPTION_STACK_SIZE (8192) | 64 | #ifdef CONFIG_44x |
65 | #define NUM_EXCEPTION_LVLS 2 | ||
66 | #else | ||
67 | #define NUM_EXCEPTION_LVLS 3 | ||
68 | #endif | ||
69 | #define BOOKE_EXCEPTION_STACK_SIZE (4096 * NUM_EXCEPTION_LVLS) | ||
61 | 70 | ||
62 | /* CRIT_SPRG only used in critical exception handling */ | 71 | /* CRIT_SPRG only used in critical exception handling */ |
63 | #define CRIT_SPRG SPRN_SPRG2 | 72 | #define CRIT_SPRG SPRN_SPRG2 |
@@ -68,7 +77,7 @@ | |||
68 | #define CRIT_STACK_TOP (exception_stack_top) | 77 | #define CRIT_STACK_TOP (exception_stack_top) |
69 | 78 | ||
70 | /* only on e200 for now */ | 79 | /* only on e200 for now */ |
71 | #define DEBUG_STACK_TOP (exception_stack_top - 4096) | 80 | #define DEBUG_STACK_TOP (exception_stack_top - 8192) |
72 | #define DEBUG_SPRG SPRN_SPRG6W | 81 | #define DEBUG_SPRG SPRN_SPRG6W |
73 | 82 | ||
74 | #ifdef CONFIG_SMP | 83 | #ifdef CONFIG_SMP |
@@ -212,9 +221,8 @@ label: | |||
212 | * save (and later restore) the MSR via SPRN_CSRR1, which will still have | 221 | * save (and later restore) the MSR via SPRN_CSRR1, which will still have |
213 | * the MSR_DE bit set. | 222 | * the MSR_DE bit set. |
214 | */ | 223 | */ |
215 | #ifdef CONFIG_E200 | 224 | #define DEBUG_DEBUG_EXCEPTION \ |
216 | #define DEBUG_EXCEPTION \ | 225 | START_EXCEPTION(DebugDebug); \ |
217 | START_EXCEPTION(Debug); \ | ||
218 | DEBUG_EXCEPTION_PROLOG; \ | 226 | DEBUG_EXCEPTION_PROLOG; \ |
219 | \ | 227 | \ |
220 | /* \ | 228 | /* \ |
@@ -234,8 +242,8 @@ label: | |||
234 | cmplw r12,r10; \ | 242 | cmplw r12,r10; \ |
235 | blt+ 2f; /* addr below exception vectors */ \ | 243 | blt+ 2f; /* addr below exception vectors */ \ |
236 | \ | 244 | \ |
237 | lis r10,Debug@h; \ | 245 | lis r10,DebugDebug@h; \ |
238 | ori r10,r10,Debug@l; \ | 246 | ori r10,r10,DebugDebug@l; \ |
239 | cmplw r12,r10; \ | 247 | cmplw r12,r10; \ |
240 | bgt+ 2f; /* addr above exception vectors */ \ | 248 | bgt+ 2f; /* addr above exception vectors */ \ |
241 | \ | 249 | \ |
@@ -265,9 +273,9 @@ label: | |||
265 | 2: mfspr r4,SPRN_DBSR; \ | 273 | 2: mfspr r4,SPRN_DBSR; \ |
266 | addi r3,r1,STACK_FRAME_OVERHEAD; \ | 274 | addi r3,r1,STACK_FRAME_OVERHEAD; \ |
267 | EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, debug_transfer_to_handler, ret_from_debug_exc) | 275 | EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, debug_transfer_to_handler, ret_from_debug_exc) |
268 | #else | 276 | |
269 | #define DEBUG_EXCEPTION \ | 277 | #define DEBUG_CRIT_EXCEPTION \ |
270 | START_EXCEPTION(Debug); \ | 278 | START_EXCEPTION(DebugCrit); \ |
271 | CRITICAL_EXCEPTION_PROLOG; \ | 279 | CRITICAL_EXCEPTION_PROLOG; \ |
272 | \ | 280 | \ |
273 | /* \ | 281 | /* \ |
@@ -287,8 +295,8 @@ label: | |||
287 | cmplw r12,r10; \ | 295 | cmplw r12,r10; \ |
288 | blt+ 2f; /* addr below exception vectors */ \ | 296 | blt+ 2f; /* addr below exception vectors */ \ |
289 | \ | 297 | \ |
290 | lis r10,Debug@h; \ | 298 | lis r10,DebugCrit@h; \ |
291 | ori r10,r10,Debug@l; \ | 299 | ori r10,r10,DebugCrit@l; \ |
292 | cmplw r12,r10; \ | 300 | cmplw r12,r10; \ |
293 | bgt+ 2f; /* addr above exception vectors */ \ | 301 | bgt+ 2f; /* addr above exception vectors */ \ |
294 | \ | 302 | \ |
@@ -318,7 +326,6 @@ label: | |||
318 | 2: mfspr r4,SPRN_DBSR; \ | 326 | 2: mfspr r4,SPRN_DBSR; \ |
319 | addi r3,r1,STACK_FRAME_OVERHEAD; \ | 327 | addi r3,r1,STACK_FRAME_OVERHEAD; \ |
320 | EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, crit_transfer_to_handler, ret_from_crit_exc) | 328 | EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, crit_transfer_to_handler, ret_from_crit_exc) |
321 | #endif | ||
322 | 329 | ||
323 | #define INSTRUCTION_STORAGE_EXCEPTION \ | 330 | #define INSTRUCTION_STORAGE_EXCEPTION \ |
324 | START_EXCEPTION(InstructionStorage) \ | 331 | START_EXCEPTION(InstructionStorage) \ |
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S index d9cc2c288d9e..4ff744143566 100644 --- a/arch/powerpc/kernel/head_fsl_booke.S +++ b/arch/powerpc/kernel/head_fsl_booke.S | |||
@@ -68,7 +68,9 @@ _ENTRY(_start); | |||
68 | mr r29,r5 | 68 | mr r29,r5 |
69 | mr r28,r6 | 69 | mr r28,r6 |
70 | mr r27,r7 | 70 | mr r27,r7 |
71 | li r25,0 /* phys kernel start (low) */ | ||
71 | li r24,0 /* CPU number */ | 72 | li r24,0 /* CPU number */ |
73 | li r23,0 /* phys kernel start (high) */ | ||
72 | 74 | ||
73 | /* We try to not make any assumptions about how the boot loader | 75 | /* We try to not make any assumptions about how the boot loader |
74 | * setup or used the TLBs. We invalidate all mappings from the | 76 | * setup or used the TLBs. We invalidate all mappings from the |
@@ -167,7 +169,28 @@ skpinv: addi r6,r6,1 /* Increment */ | |||
167 | mtspr SPRN_MAS0,r7 | 169 | mtspr SPRN_MAS0,r7 |
168 | tlbre | 170 | tlbre |
169 | 171 | ||
170 | /* Just modify the entry ID, EPN and RPN for the temp mapping */ | 172 | /* grab and fixup the RPN */ |
173 | mfspr r6,SPRN_MAS1 /* extract MAS1[SIZE] */ | ||
174 | rlwinm r6,r6,25,27,30 | ||
175 | li r8,-1 | ||
176 | addi r6,r6,10 | ||
177 | slw r6,r8,r6 /* convert to mask */ | ||
178 | |||
179 | bl 1f /* Find our address */ | ||
180 | 1: mflr r7 | ||
181 | |||
182 | mfspr r8,SPRN_MAS3 | ||
183 | #ifdef CONFIG_PHYS_64BIT | ||
184 | mfspr r23,SPRN_MAS7 | ||
185 | #endif | ||
186 | and r8,r6,r8 | ||
187 | subfic r9,r6,-4096 | ||
188 | and r9,r9,r7 | ||
189 | |||
190 | or r25,r8,r9 | ||
191 | ori r8,r25,(MAS3_SX|MAS3_SW|MAS3_SR) | ||
192 | |||
193 | /* Just modify the entry ID and EPN for the temp mapping */ | ||
171 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | 194 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ |
172 | rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ | 195 | rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ |
173 | mtspr SPRN_MAS0,r7 | 196 | mtspr SPRN_MAS0,r7 |
@@ -177,12 +200,10 @@ skpinv: addi r6,r6,1 /* Increment */ | |||
177 | ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l | 200 | ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l |
178 | mtspr SPRN_MAS1,r6 | 201 | mtspr SPRN_MAS1,r6 |
179 | mfspr r6,SPRN_MAS2 | 202 | mfspr r6,SPRN_MAS2 |
180 | lis r7,PHYSICAL_START@h | 203 | li r7,0 /* temp EPN = 0 */ |
181 | rlwimi r7,r6,0,20,31 | 204 | rlwimi r7,r6,0,20,31 |
182 | mtspr SPRN_MAS2,r7 | 205 | mtspr SPRN_MAS2,r7 |
183 | mfspr r6,SPRN_MAS3 | 206 | mtspr SPRN_MAS3,r8 |
184 | rlwimi r7,r6,0,20,31 | ||
185 | mtspr SPRN_MAS3,r7 | ||
186 | tlbwe | 207 | tlbwe |
187 | 208 | ||
188 | xori r6,r4,1 | 209 | xori r6,r4,1 |
@@ -232,8 +253,7 @@ skpinv: addi r6,r6,1 /* Increment */ | |||
232 | ori r6,r6,PAGE_OFFSET@l | 253 | ori r6,r6,PAGE_OFFSET@l |
233 | rlwimi r6,r7,0,20,31 | 254 | rlwimi r6,r7,0,20,31 |
234 | mtspr SPRN_MAS2,r6 | 255 | mtspr SPRN_MAS2,r6 |
235 | li r7,(MAS3_SX|MAS3_SW|MAS3_SR) | 256 | mtspr SPRN_MAS3,r8 |
236 | mtspr SPRN_MAS3,r7 | ||
237 | tlbwe | 257 | tlbwe |
238 | 258 | ||
239 | /* 7. Jump to KERNELBASE mapping */ | 259 | /* 7. Jump to KERNELBASE mapping */ |
@@ -283,7 +303,10 @@ skpinv: addi r6,r6,1 /* Increment */ | |||
283 | SET_IVOR(12, WatchdogTimer); | 303 | SET_IVOR(12, WatchdogTimer); |
284 | SET_IVOR(13, DataTLBError); | 304 | SET_IVOR(13, DataTLBError); |
285 | SET_IVOR(14, InstructionTLBError); | 305 | SET_IVOR(14, InstructionTLBError); |
286 | SET_IVOR(15, Debug); | 306 | SET_IVOR(15, DebugDebug); |
307 | #if defined(CONFIG_E500) | ||
308 | SET_IVOR(15, DebugCrit); | ||
309 | #endif | ||
287 | SET_IVOR(32, SPEUnavailable); | 310 | SET_IVOR(32, SPEUnavailable); |
288 | SET_IVOR(33, SPEFloatingPointData); | 311 | SET_IVOR(33, SPEFloatingPointData); |
289 | SET_IVOR(34, SPEFloatingPointRound); | 312 | SET_IVOR(34, SPEFloatingPointRound); |
@@ -718,7 +741,10 @@ interrupt_base: | |||
718 | 741 | ||
719 | 742 | ||
720 | /* Debug Interrupt */ | 743 | /* Debug Interrupt */ |
721 | DEBUG_EXCEPTION | 744 | DEBUG_DEBUG_EXCEPTION |
745 | #if defined(CONFIG_E500) | ||
746 | DEBUG_CRIT_EXCEPTION | ||
747 | #endif | ||
722 | 748 | ||
723 | /* | 749 | /* |
724 | * Local functions | 750 | * Local functions |
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c index 2f50bb5d00f9..9971159c8040 100644 --- a/arch/powerpc/kernel/ibmebus.c +++ b/arch/powerpc/kernel/ibmebus.c | |||
@@ -183,7 +183,7 @@ static int ibmebus_create_devices(const struct of_device_id *matches) | |||
183 | ret = ibmebus_create_device(child); | 183 | ret = ibmebus_create_device(child); |
184 | if (ret) { | 184 | if (ret) { |
185 | printk(KERN_ERR "%s: failed to create device (%i)", | 185 | printk(KERN_ERR "%s: failed to create device (%i)", |
186 | __FUNCTION__, ret); | 186 | __func__, ret); |
187 | of_node_put(child); | 187 | of_node_put(child); |
188 | break; | 188 | break; |
189 | } | 189 | } |
@@ -269,7 +269,7 @@ static ssize_t ibmebus_store_probe(struct bus_type *bus, | |||
269 | if (bus_find_device(&ibmebus_bus_type, NULL, path, | 269 | if (bus_find_device(&ibmebus_bus_type, NULL, path, |
270 | ibmebus_match_path)) { | 270 | ibmebus_match_path)) { |
271 | printk(KERN_WARNING "%s: %s has already been probed\n", | 271 | printk(KERN_WARNING "%s: %s has already been probed\n", |
272 | __FUNCTION__, path); | 272 | __func__, path); |
273 | rc = -EEXIST; | 273 | rc = -EEXIST; |
274 | goto out; | 274 | goto out; |
275 | } | 275 | } |
@@ -279,7 +279,7 @@ static ssize_t ibmebus_store_probe(struct bus_type *bus, | |||
279 | of_node_put(dn); | 279 | of_node_put(dn); |
280 | } else { | 280 | } else { |
281 | printk(KERN_WARNING "%s: no such device node: %s\n", | 281 | printk(KERN_WARNING "%s: no such device node: %s\n", |
282 | __FUNCTION__, path); | 282 | __func__, path); |
283 | rc = -ENODEV; | 283 | rc = -ENODEV; |
284 | } | 284 | } |
285 | 285 | ||
@@ -308,7 +308,7 @@ static ssize_t ibmebus_store_remove(struct bus_type *bus, | |||
308 | return count; | 308 | return count; |
309 | } else { | 309 | } else { |
310 | printk(KERN_WARNING "%s: %s not on the bus\n", | 310 | printk(KERN_WARNING "%s: %s not on the bus\n", |
311 | __FUNCTION__, path); | 311 | __func__, path); |
312 | 312 | ||
313 | kfree(path); | 313 | kfree(path); |
314 | return -ENODEV; | 314 | return -ENODEV; |
@@ -337,14 +337,14 @@ static int __init ibmebus_bus_init(void) | |||
337 | err = of_bus_type_init(&ibmebus_bus_type, "ibmebus"); | 337 | err = of_bus_type_init(&ibmebus_bus_type, "ibmebus"); |
338 | if (err) { | 338 | if (err) { |
339 | printk(KERN_ERR "%s: failed to register IBM eBus.\n", | 339 | printk(KERN_ERR "%s: failed to register IBM eBus.\n", |
340 | __FUNCTION__); | 340 | __func__); |
341 | return err; | 341 | return err; |
342 | } | 342 | } |
343 | 343 | ||
344 | err = device_register(&ibmebus_bus_device); | 344 | err = device_register(&ibmebus_bus_device); |
345 | if (err) { | 345 | if (err) { |
346 | printk(KERN_WARNING "%s: device_register returned %i\n", | 346 | printk(KERN_WARNING "%s: device_register returned %i\n", |
347 | __FUNCTION__, err); | 347 | __func__, err); |
348 | bus_unregister(&ibmebus_bus_type); | 348 | bus_unregister(&ibmebus_bus_type); |
349 | 349 | ||
350 | return err; | 350 | return err; |
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c index 8f1f4e539c4b..0c663669bc32 100644 --- a/arch/powerpc/kernel/iommu.c +++ b/arch/powerpc/kernel/iommu.c | |||
@@ -520,7 +520,7 @@ void iommu_free_table(struct iommu_table *tbl, const char *node_name) | |||
520 | unsigned int order; | 520 | unsigned int order; |
521 | 521 | ||
522 | if (!tbl || !tbl->it_map) { | 522 | if (!tbl || !tbl->it_map) { |
523 | printk(KERN_ERR "%s: expected TCE map for %s\n", __FUNCTION__, | 523 | printk(KERN_ERR "%s: expected TCE map for %s\n", __func__, |
524 | node_name); | 524 | node_name); |
525 | return; | 525 | return; |
526 | } | 526 | } |
@@ -530,7 +530,7 @@ void iommu_free_table(struct iommu_table *tbl, const char *node_name) | |||
530 | for (i = 0; i < (tbl->it_size/64); i++) { | 530 | for (i = 0; i < (tbl->it_size/64); i++) { |
531 | if (tbl->it_map[i] != 0) { | 531 | if (tbl->it_map[i] != 0) { |
532 | printk(KERN_WARNING "%s: Unexpected TCEs for %s\n", | 532 | printk(KERN_WARNING "%s: Unexpected TCEs for %s\n", |
533 | __FUNCTION__, node_name); | 533 | __func__, node_name); |
534 | break; | 534 | break; |
535 | } | 535 | } |
536 | } | 536 | } |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 292163f5b39a..425616f92d18 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
@@ -114,7 +114,7 @@ static inline void set_soft_enabled(unsigned long enable) | |||
114 | : : "r" (enable), "i" (offsetof(struct paca_struct, soft_enabled))); | 114 | : : "r" (enable), "i" (offsetof(struct paca_struct, soft_enabled))); |
115 | } | 115 | } |
116 | 116 | ||
117 | void local_irq_restore(unsigned long en) | 117 | void raw_local_irq_restore(unsigned long en) |
118 | { | 118 | { |
119 | /* | 119 | /* |
120 | * get_paca()->soft_enabled = en; | 120 | * get_paca()->soft_enabled = en; |
@@ -174,6 +174,7 @@ void local_irq_restore(unsigned long en) | |||
174 | 174 | ||
175 | __hard_irq_enable(); | 175 | __hard_irq_enable(); |
176 | } | 176 | } |
177 | EXPORT_SYMBOL(raw_local_irq_restore); | ||
177 | #endif /* CONFIG_PPC64 */ | 178 | #endif /* CONFIG_PPC64 */ |
178 | 179 | ||
179 | int show_interrupts(struct seq_file *p, void *v) | 180 | int show_interrupts(struct seq_file *p, void *v) |
@@ -310,8 +311,21 @@ void do_IRQ(struct pt_regs *regs) | |||
310 | handler = &__do_IRQ; | 311 | handler = &__do_IRQ; |
311 | irqtp->task = curtp->task; | 312 | irqtp->task = curtp->task; |
312 | irqtp->flags = 0; | 313 | irqtp->flags = 0; |
314 | |||
315 | /* Copy the softirq bits in preempt_count so that the | ||
316 | * softirq checks work in the hardirq context. | ||
317 | */ | ||
318 | irqtp->preempt_count = | ||
319 | (irqtp->preempt_count & ~SOFTIRQ_MASK) | | ||
320 | (curtp->preempt_count & SOFTIRQ_MASK); | ||
321 | |||
313 | call_handle_irq(irq, desc, irqtp, handler); | 322 | call_handle_irq(irq, desc, irqtp, handler); |
314 | irqtp->task = NULL; | 323 | irqtp->task = NULL; |
324 | |||
325 | |||
326 | /* Set any flag that may have been set on the | ||
327 | * alternate stack | ||
328 | */ | ||
315 | if (irqtp->flags) | 329 | if (irqtp->flags) |
316 | set_bits(irqtp->flags, &curtp->flags); | 330 | set_bits(irqtp->flags, &curtp->flags); |
317 | } else | 331 | } else |
@@ -357,7 +371,7 @@ void irq_ctx_init(void) | |||
357 | memset((void *)softirq_ctx[i], 0, THREAD_SIZE); | 371 | memset((void *)softirq_ctx[i], 0, THREAD_SIZE); |
358 | tp = softirq_ctx[i]; | 372 | tp = softirq_ctx[i]; |
359 | tp->cpu = i; | 373 | tp->cpu = i; |
360 | tp->preempt_count = SOFTIRQ_OFFSET; | 374 | tp->preempt_count = 0; |
361 | 375 | ||
362 | memset((void *)hardirq_ctx[i], 0, THREAD_SIZE); | 376 | memset((void *)hardirq_ctx[i], 0, THREAD_SIZE); |
363 | tp = hardirq_ctx[i]; | 377 | tp = hardirq_ctx[i]; |
diff --git a/arch/powerpc/kernel/isa-bridge.c b/arch/powerpc/kernel/isa-bridge.c index ee172aa42aa7..289af348978d 100644 --- a/arch/powerpc/kernel/isa-bridge.c +++ b/arch/powerpc/kernel/isa-bridge.c | |||
@@ -80,13 +80,13 @@ static void __devinit pci_process_ISA_OF_ranges(struct device_node *isa_node, | |||
80 | * (size depending on dev->n_addr_cells) | 80 | * (size depending on dev->n_addr_cells) |
81 | * cell 5: the size of the range | 81 | * cell 5: the size of the range |
82 | */ | 82 | */ |
83 | if ((range->isa_addr.a_hi && ISA_SPACE_MASK) != ISA_SPACE_IO) { | 83 | if ((range->isa_addr.a_hi & ISA_SPACE_MASK) != ISA_SPACE_IO) { |
84 | range++; | 84 | range++; |
85 | rlen -= sizeof(struct isa_range); | 85 | rlen -= sizeof(struct isa_range); |
86 | if (rlen < sizeof(struct isa_range)) | 86 | if (rlen < sizeof(struct isa_range)) |
87 | goto inval_range; | 87 | goto inval_range; |
88 | } | 88 | } |
89 | if ((range->isa_addr.a_hi && ISA_SPACE_MASK) != ISA_SPACE_IO) | 89 | if ((range->isa_addr.a_hi & ISA_SPACE_MASK) != ISA_SPACE_IO) |
90 | goto inval_range; | 90 | goto inval_range; |
91 | 91 | ||
92 | isa_addr = range->isa_addr.a_lo; | 92 | isa_addr = range->isa_addr.a_lo; |
@@ -99,7 +99,7 @@ static void __devinit pci_process_ISA_OF_ranges(struct device_node *isa_node, | |||
99 | */ | 99 | */ |
100 | if ((pci_addr != 0) || (isa_addr != 0)) { | 100 | if ((pci_addr != 0) || (isa_addr != 0)) { |
101 | printk(KERN_ERR "unexpected isa to pci mapping: %s\n", | 101 | printk(KERN_ERR "unexpected isa to pci mapping: %s\n", |
102 | __FUNCTION__); | 102 | __func__); |
103 | return; | 103 | return; |
104 | } | 104 | } |
105 | 105 | ||
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index dcb89a88df46..1ffacc698ffb 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c | |||
@@ -226,7 +226,7 @@ static void parse_system_parameter_string(struct seq_file *m) | |||
226 | unsigned char *local_buffer = kmalloc(SPLPAR_MAXLENGTH, GFP_KERNEL); | 226 | unsigned char *local_buffer = kmalloc(SPLPAR_MAXLENGTH, GFP_KERNEL); |
227 | if (!local_buffer) { | 227 | if (!local_buffer) { |
228 | printk(KERN_ERR "%s %s kmalloc failure at line %d \n", | 228 | printk(KERN_ERR "%s %s kmalloc failure at line %d \n", |
229 | __FILE__, __FUNCTION__, __LINE__); | 229 | __FILE__, __func__, __LINE__); |
230 | return; | 230 | return; |
231 | } | 231 | } |
232 | 232 | ||
@@ -243,14 +243,14 @@ static void parse_system_parameter_string(struct seq_file *m) | |||
243 | if (call_status != 0) { | 243 | if (call_status != 0) { |
244 | printk(KERN_INFO | 244 | printk(KERN_INFO |
245 | "%s %s Error calling get-system-parameter (0x%x)\n", | 245 | "%s %s Error calling get-system-parameter (0x%x)\n", |
246 | __FILE__, __FUNCTION__, call_status); | 246 | __FILE__, __func__, call_status); |
247 | } else { | 247 | } else { |
248 | int splpar_strlen; | 248 | int splpar_strlen; |
249 | int idx, w_idx; | 249 | int idx, w_idx; |
250 | char *workbuffer = kzalloc(SPLPAR_MAXLENGTH, GFP_KERNEL); | 250 | char *workbuffer = kzalloc(SPLPAR_MAXLENGTH, GFP_KERNEL); |
251 | if (!workbuffer) { | 251 | if (!workbuffer) { |
252 | printk(KERN_ERR "%s %s kmalloc failure at line %d \n", | 252 | printk(KERN_ERR "%s %s kmalloc failure at line %d \n", |
253 | __FILE__, __FUNCTION__, __LINE__); | 253 | __FILE__, __func__, __LINE__); |
254 | kfree(local_buffer); | 254 | kfree(local_buffer); |
255 | return; | 255 | return; |
256 | } | 256 | } |
@@ -484,10 +484,10 @@ static ssize_t lparcfg_write(struct file *file, const char __user * buf, | |||
484 | current_weight = (resource >> 5 * 8) & 0xFF; | 484 | current_weight = (resource >> 5 * 8) & 0xFF; |
485 | 485 | ||
486 | pr_debug("%s: current_entitled = %lu, current_weight = %u\n", | 486 | pr_debug("%s: current_entitled = %lu, current_weight = %u\n", |
487 | __FUNCTION__, current_entitled, current_weight); | 487 | __func__, current_entitled, current_weight); |
488 | 488 | ||
489 | pr_debug("%s: new_entitled = %lu, new_weight = %u\n", | 489 | pr_debug("%s: new_entitled = %lu, new_weight = %u\n", |
490 | __FUNCTION__, *new_entitled_ptr, *new_weight_ptr); | 490 | __func__, *new_entitled_ptr, *new_weight_ptr); |
491 | 491 | ||
492 | retval = plpar_hcall_norets(H_SET_PPP, *new_entitled_ptr, | 492 | retval = plpar_hcall_norets(H_SET_PPP, *new_entitled_ptr, |
493 | *new_weight_ptr); | 493 | *new_weight_ptr); |
@@ -502,7 +502,7 @@ static ssize_t lparcfg_write(struct file *file, const char __user * buf, | |||
502 | retval = -EINVAL; | 502 | retval = -EINVAL; |
503 | } else { | 503 | } else { |
504 | printk(KERN_WARNING "%s: received unknown hv return code %ld", | 504 | printk(KERN_WARNING "%s: received unknown hv return code %ld", |
505 | __FUNCTION__, retval); | 505 | __func__, retval); |
506 | retval = -EIO; | 506 | retval = -EIO; |
507 | } | 507 | } |
508 | 508 | ||
diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c index c0c8e8c3ced9..2d202f274e73 100644 --- a/arch/powerpc/kernel/machine_kexec.c +++ b/arch/powerpc/kernel/machine_kexec.c | |||
@@ -12,8 +12,9 @@ | |||
12 | #include <linux/kexec.h> | 12 | #include <linux/kexec.h> |
13 | #include <linux/reboot.h> | 13 | #include <linux/reboot.h> |
14 | #include <linux/threads.h> | 14 | #include <linux/threads.h> |
15 | #include <linux/lmb.h> | ||
15 | #include <asm/machdep.h> | 16 | #include <asm/machdep.h> |
16 | #include <asm/lmb.h> | 17 | #include <asm/prom.h> |
17 | 18 | ||
18 | void machine_crash_shutdown(struct pt_regs *regs) | 19 | void machine_crash_shutdown(struct pt_regs *regs) |
19 | { | 20 | { |
diff --git a/arch/powerpc/kernel/paca.c b/arch/powerpc/kernel/paca.c index 55f1a25085cd..ac163bd46cfd 100644 --- a/arch/powerpc/kernel/paca.c +++ b/arch/powerpc/kernel/paca.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <asm/ptrace.h> | 15 | #include <asm/ptrace.h> |
16 | #include <asm/page.h> | 16 | #include <asm/page.h> |
17 | #include <asm/lppaca.h> | 17 | #include <asm/lppaca.h> |
18 | #include <asm/iseries/it_lp_reg_save.h> | ||
19 | #include <asm/paca.h> | 18 | #include <asm/paca.h> |
20 | #include <asm/mmu.h> | 19 | #include <asm/mmu.h> |
21 | 20 | ||
@@ -25,13 +24,13 @@ | |||
25 | extern unsigned long __toc_start; | 24 | extern unsigned long __toc_start; |
26 | 25 | ||
27 | /* | 26 | /* |
28 | * iSeries structure which the hypervisor knows about - this structure | 27 | * The structure which the hypervisor knows about - this structure |
29 | * should not cross a page boundary. The vpa_init/register_vpa call | 28 | * should not cross a page boundary. The vpa_init/register_vpa call |
30 | * is now known to fail if the lppaca structure crosses a page | 29 | * is now known to fail if the lppaca structure crosses a page |
31 | * boundary. The lppaca is also used on POWER5 pSeries boxes. The | 30 | * boundary. The lppaca is also used on legacy iSeries and POWER5 |
32 | * lppaca is 640 bytes long, and cannot readily change since the | 31 | * pSeries boxes. The lppaca is 640 bytes long, and cannot readily |
33 | * hypervisor knows its layout, so a 1kB alignment will suffice to | 32 | * change since the hypervisor knows its layout, so a 1kB alignment |
34 | * ensure that it doesn't cross a page boundary. | 33 | * will suffice to ensure that it doesn't cross a page boundary. |
35 | */ | 34 | */ |
36 | struct lppaca lppaca[] = { | 35 | struct lppaca lppaca[] = { |
37 | [0 ... (NR_CPUS-1)] = { | 36 | [0 ... (NR_CPUS-1)] = { |
@@ -66,32 +65,17 @@ struct slb_shadow slb_shadow[] __cacheline_aligned = { | |||
66 | * processors. The processor VPD array needs one entry per physical | 65 | * processors. The processor VPD array needs one entry per physical |
67 | * processor (not thread). | 66 | * processor (not thread). |
68 | */ | 67 | */ |
69 | #define PACA_INIT_COMMON(number) \ | 68 | #define PACA_INIT(number) \ |
69 | { \ | ||
70 | .lppaca_ptr = &lppaca[number], \ | 70 | .lppaca_ptr = &lppaca[number], \ |
71 | .lock_token = 0x8000, \ | 71 | .lock_token = 0x8000, \ |
72 | .paca_index = (number), /* Paca Index */ \ | 72 | .paca_index = (number), /* Paca Index */ \ |
73 | .kernel_toc = (unsigned long)(&__toc_start) + 0x8000UL, \ | 73 | .kernel_toc = (unsigned long)(&__toc_start) + 0x8000UL, \ |
74 | .hw_cpu_id = 0xffff, \ | 74 | .hw_cpu_id = 0xffff, \ |
75 | .slb_shadow_ptr = &slb_shadow[number], | 75 | .slb_shadow_ptr = &slb_shadow[number], \ |
76 | 76 | .__current = &init_task, \ | |
77 | #ifdef CONFIG_PPC_ISERIES | ||
78 | #define PACA_INIT_ISERIES(number) \ | ||
79 | .reg_save_ptr = &iseries_reg_save[number], | ||
80 | |||
81 | #define PACA_INIT(number) \ | ||
82 | { \ | ||
83 | PACA_INIT_COMMON(number) \ | ||
84 | PACA_INIT_ISERIES(number) \ | ||
85 | } | 77 | } |
86 | 78 | ||
87 | #else | ||
88 | #define PACA_INIT(number) \ | ||
89 | { \ | ||
90 | PACA_INIT_COMMON(number) \ | ||
91 | } | ||
92 | |||
93 | #endif | ||
94 | |||
95 | struct paca_struct paca[] = { | 79 | struct paca_struct paca[] = { |
96 | PACA_INIT(0), | 80 | PACA_INIT(0), |
97 | #if NR_CPUS > 1 | 81 | #if NR_CPUS > 1 |
diff --git a/arch/powerpc/kernel/ppc32.h b/arch/powerpc/kernel/ppc32.h index 90e562771791..fda05e2211d6 100644 --- a/arch/powerpc/kernel/ppc32.h +++ b/arch/powerpc/kernel/ppc32.h | |||
@@ -135,4 +135,6 @@ struct ucontext32 { | |||
135 | struct mcontext32 uc_mcontext; | 135 | struct mcontext32 uc_mcontext; |
136 | }; | 136 | }; |
137 | 137 | ||
138 | extern int copy_siginfo_to_user32(struct compat_siginfo __user *d, siginfo_t *s); | ||
139 | |||
138 | #endif /* _PPC64_PPC32_H */ | 140 | #endif /* _PPC64_PPC32_H */ |
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c index 65d14e6ddc3c..09fcb50c45ae 100644 --- a/arch/powerpc/kernel/ppc_ksyms.c +++ b/arch/powerpc/kernel/ppc_ksyms.c | |||
@@ -44,10 +44,6 @@ | |||
44 | #include <asm/signal.h> | 44 | #include <asm/signal.h> |
45 | #include <asm/dcr.h> | 45 | #include <asm/dcr.h> |
46 | 46 | ||
47 | #ifdef CONFIG_PPC64 | ||
48 | EXPORT_SYMBOL(local_irq_restore); | ||
49 | #endif | ||
50 | |||
51 | #ifdef CONFIG_PPC32 | 47 | #ifdef CONFIG_PPC32 |
52 | extern void transfer_to_handler(void); | 48 | extern void transfer_to_handler(void); |
53 | extern void do_IRQ(struct pt_regs *regs); | 49 | extern void do_IRQ(struct pt_regs *regs); |
@@ -57,7 +53,6 @@ extern void program_check_exception(struct pt_regs *regs); | |||
57 | extern void single_step_exception(struct pt_regs *regs); | 53 | extern void single_step_exception(struct pt_regs *regs); |
58 | extern int sys_sigreturn(struct pt_regs *regs); | 54 | extern int sys_sigreturn(struct pt_regs *regs); |
59 | 55 | ||
60 | EXPORT_SYMBOL(empty_zero_page); | ||
61 | EXPORT_SYMBOL(clear_pages); | 56 | EXPORT_SYMBOL(clear_pages); |
62 | EXPORT_SYMBOL(copy_page); | 57 | EXPORT_SYMBOL(copy_page); |
63 | EXPORT_SYMBOL(ISA_DMA_THRESHOLD); | 58 | EXPORT_SYMBOL(ISA_DMA_THRESHOLD); |
@@ -78,6 +73,7 @@ EXPORT_SYMBOL(strncpy); | |||
78 | EXPORT_SYMBOL(strcat); | 73 | EXPORT_SYMBOL(strcat); |
79 | EXPORT_SYMBOL(strlen); | 74 | EXPORT_SYMBOL(strlen); |
80 | EXPORT_SYMBOL(strcmp); | 75 | EXPORT_SYMBOL(strcmp); |
76 | EXPORT_SYMBOL(strncmp); | ||
81 | 77 | ||
82 | EXPORT_SYMBOL(csum_partial); | 78 | EXPORT_SYMBOL(csum_partial); |
83 | EXPORT_SYMBOL(csum_partial_copy_generic); | 79 | EXPORT_SYMBOL(csum_partial_copy_generic); |
@@ -191,3 +187,4 @@ EXPORT_SYMBOL(intercept_table); | |||
191 | EXPORT_SYMBOL(__mtdcr); | 187 | EXPORT_SYMBOL(__mtdcr); |
192 | EXPORT_SYMBOL(__mfdcr); | 188 | EXPORT_SYMBOL(__mfdcr); |
193 | #endif | 189 | #endif |
190 | EXPORT_SYMBOL(empty_zero_page); | ||
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 4ec605521504..703100d5e458 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -868,11 +868,6 @@ int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2, | |||
868 | flush_spe_to_thread(current); | 868 | flush_spe_to_thread(current); |
869 | error = do_execve(filename, (char __user * __user *) a1, | 869 | error = do_execve(filename, (char __user * __user *) a1, |
870 | (char __user * __user *) a2, regs); | 870 | (char __user * __user *) a2, regs); |
871 | if (error == 0) { | ||
872 | task_lock(current); | ||
873 | current->ptrace &= ~PT_DTRACE; | ||
874 | task_unlock(current); | ||
875 | } | ||
876 | putname(filename); | 871 | putname(filename); |
877 | out: | 872 | out: |
878 | return error; | 873 | return error; |
@@ -919,20 +914,6 @@ int validate_sp(unsigned long sp, struct task_struct *p, | |||
919 | return valid_irq_stack(sp, p, nbytes); | 914 | return valid_irq_stack(sp, p, nbytes); |
920 | } | 915 | } |
921 | 916 | ||
922 | #ifdef CONFIG_PPC64 | ||
923 | #define MIN_STACK_FRAME 112 /* same as STACK_FRAME_OVERHEAD, in fact */ | ||
924 | #define FRAME_LR_SAVE 2 | ||
925 | #define INT_FRAME_SIZE (sizeof(struct pt_regs) + STACK_FRAME_OVERHEAD + 288) | ||
926 | #define REGS_MARKER 0x7265677368657265ul | ||
927 | #define FRAME_MARKER 12 | ||
928 | #else | ||
929 | #define MIN_STACK_FRAME 16 | ||
930 | #define FRAME_LR_SAVE 1 | ||
931 | #define INT_FRAME_SIZE (sizeof(struct pt_regs) + STACK_FRAME_OVERHEAD) | ||
932 | #define REGS_MARKER 0x72656773ul | ||
933 | #define FRAME_MARKER 2 | ||
934 | #endif | ||
935 | |||
936 | EXPORT_SYMBOL(validate_sp); | 917 | EXPORT_SYMBOL(validate_sp); |
937 | 918 | ||
938 | unsigned long get_wchan(struct task_struct *p) | 919 | unsigned long get_wchan(struct task_struct *p) |
@@ -944,15 +925,15 @@ unsigned long get_wchan(struct task_struct *p) | |||
944 | return 0; | 925 | return 0; |
945 | 926 | ||
946 | sp = p->thread.ksp; | 927 | sp = p->thread.ksp; |
947 | if (!validate_sp(sp, p, MIN_STACK_FRAME)) | 928 | if (!validate_sp(sp, p, STACK_FRAME_OVERHEAD)) |
948 | return 0; | 929 | return 0; |
949 | 930 | ||
950 | do { | 931 | do { |
951 | sp = *(unsigned long *)sp; | 932 | sp = *(unsigned long *)sp; |
952 | if (!validate_sp(sp, p, MIN_STACK_FRAME)) | 933 | if (!validate_sp(sp, p, STACK_FRAME_OVERHEAD)) |
953 | return 0; | 934 | return 0; |
954 | if (count > 0) { | 935 | if (count > 0) { |
955 | ip = ((unsigned long *)sp)[FRAME_LR_SAVE]; | 936 | ip = ((unsigned long *)sp)[STACK_FRAME_LR_SAVE]; |
956 | if (!in_sched_functions(ip)) | 937 | if (!in_sched_functions(ip)) |
957 | return ip; | 938 | return ip; |
958 | } | 939 | } |
@@ -981,12 +962,12 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | |||
981 | lr = 0; | 962 | lr = 0; |
982 | printk("Call Trace:\n"); | 963 | printk("Call Trace:\n"); |
983 | do { | 964 | do { |
984 | if (!validate_sp(sp, tsk, MIN_STACK_FRAME)) | 965 | if (!validate_sp(sp, tsk, STACK_FRAME_OVERHEAD)) |
985 | return; | 966 | return; |
986 | 967 | ||
987 | stack = (unsigned long *) sp; | 968 | stack = (unsigned long *) sp; |
988 | newsp = stack[0]; | 969 | newsp = stack[0]; |
989 | ip = stack[FRAME_LR_SAVE]; | 970 | ip = stack[STACK_FRAME_LR_SAVE]; |
990 | if (!firstframe || ip != lr) { | 971 | if (!firstframe || ip != lr) { |
991 | printk("["REG"] ["REG"] ", sp, ip); | 972 | printk("["REG"] ["REG"] ", sp, ip); |
992 | print_symbol("%s", ip); | 973 | print_symbol("%s", ip); |
@@ -1000,8 +981,8 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | |||
1000 | * See if this is an exception frame. | 981 | * See if this is an exception frame. |
1001 | * We look for the "regshere" marker in the current frame. | 982 | * We look for the "regshere" marker in the current frame. |
1002 | */ | 983 | */ |
1003 | if (validate_sp(sp, tsk, INT_FRAME_SIZE) | 984 | if (validate_sp(sp, tsk, STACK_INT_FRAME_SIZE) |
1004 | && stack[FRAME_MARKER] == REGS_MARKER) { | 985 | && stack[STACK_FRAME_MARKER] == STACK_FRAME_REGS_MARKER) { |
1005 | struct pt_regs *regs = (struct pt_regs *) | 986 | struct pt_regs *regs = (struct pt_regs *) |
1006 | (sp + STACK_FRAME_OVERHEAD); | 987 | (sp + STACK_FRAME_OVERHEAD); |
1007 | printk("--- Exception: %lx", regs->trap); | 988 | printk("--- Exception: %lx", regs->trap); |
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index eac97f48b9b8..3bfe7837e820 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
@@ -31,10 +31,10 @@ | |||
31 | #include <linux/kexec.h> | 31 | #include <linux/kexec.h> |
32 | #include <linux/debugfs.h> | 32 | #include <linux/debugfs.h> |
33 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
34 | #include <linux/lmb.h> | ||
34 | 35 | ||
35 | #include <asm/prom.h> | 36 | #include <asm/prom.h> |
36 | #include <asm/rtas.h> | 37 | #include <asm/rtas.h> |
37 | #include <asm/lmb.h> | ||
38 | #include <asm/page.h> | 38 | #include <asm/page.h> |
39 | #include <asm/processor.h> | 39 | #include <asm/processor.h> |
40 | #include <asm/irq.h> | 40 | #include <asm/irq.h> |
@@ -51,6 +51,7 @@ | |||
51 | #include <asm/machdep.h> | 51 | #include <asm/machdep.h> |
52 | #include <asm/pSeries_reconfig.h> | 52 | #include <asm/pSeries_reconfig.h> |
53 | #include <asm/pci-bridge.h> | 53 | #include <asm/pci-bridge.h> |
54 | #include <asm/phyp_dump.h> | ||
54 | #include <asm/kexec.h> | 55 | #include <asm/kexec.h> |
55 | 56 | ||
56 | #ifdef DEBUG | 57 | #ifdef DEBUG |
@@ -436,7 +437,7 @@ early_param("mem", early_parse_mem); | |||
436 | * The device tree may be allocated beyond our memory limit, or inside the | 437 | * The device tree may be allocated beyond our memory limit, or inside the |
437 | * crash kernel region for kdump. If so, move it out of the way. | 438 | * crash kernel region for kdump. If so, move it out of the way. |
438 | */ | 439 | */ |
439 | static void move_device_tree(void) | 440 | static void __init move_device_tree(void) |
440 | { | 441 | { |
441 | unsigned long start, size; | 442 | unsigned long start, size; |
442 | void *p; | 443 | void *p; |
@@ -1040,6 +1041,87 @@ static void __init early_reserve_mem(void) | |||
1040 | #endif | 1041 | #endif |
1041 | } | 1042 | } |
1042 | 1043 | ||
1044 | #ifdef CONFIG_PHYP_DUMP | ||
1045 | /** | ||
1046 | * phyp_dump_calculate_reserve_size() - reserve variable boot area 5% or arg | ||
1047 | * | ||
1048 | * Function to find the largest size we need to reserve | ||
1049 | * during early boot process. | ||
1050 | * | ||
1051 | * It either looks for boot param and returns that OR | ||
1052 | * returns larger of 256 or 5% rounded down to multiples of 256MB. | ||
1053 | * | ||
1054 | */ | ||
1055 | static inline unsigned long phyp_dump_calculate_reserve_size(void) | ||
1056 | { | ||
1057 | unsigned long tmp; | ||
1058 | |||
1059 | if (phyp_dump_info->reserve_bootvar) | ||
1060 | return phyp_dump_info->reserve_bootvar; | ||
1061 | |||
1062 | /* divide by 20 to get 5% of value */ | ||
1063 | tmp = lmb_end_of_DRAM(); | ||
1064 | do_div(tmp, 20); | ||
1065 | |||
1066 | /* round it down in multiples of 256 */ | ||
1067 | tmp = tmp & ~0x0FFFFFFFUL; | ||
1068 | |||
1069 | return (tmp > PHYP_DUMP_RMR_END ? tmp : PHYP_DUMP_RMR_END); | ||
1070 | } | ||
1071 | |||
1072 | /** | ||
1073 | * phyp_dump_reserve_mem() - reserve all not-yet-dumped mmemory | ||
1074 | * | ||
1075 | * This routine may reserve memory regions in the kernel only | ||
1076 | * if the system is supported and a dump was taken in last | ||
1077 | * boot instance or if the hardware is supported and the | ||
1078 | * scratch area needs to be setup. In other instances it returns | ||
1079 | * without reserving anything. The memory in case of dump being | ||
1080 | * active is freed when the dump is collected (by userland tools). | ||
1081 | */ | ||
1082 | static void __init phyp_dump_reserve_mem(void) | ||
1083 | { | ||
1084 | unsigned long base, size; | ||
1085 | unsigned long variable_reserve_size; | ||
1086 | |||
1087 | if (!phyp_dump_info->phyp_dump_configured) { | ||
1088 | printk(KERN_ERR "Phyp-dump not supported on this hardware\n"); | ||
1089 | return; | ||
1090 | } | ||
1091 | |||
1092 | if (!phyp_dump_info->phyp_dump_at_boot) { | ||
1093 | printk(KERN_INFO "Phyp-dump disabled at boot time\n"); | ||
1094 | return; | ||
1095 | } | ||
1096 | |||
1097 | variable_reserve_size = phyp_dump_calculate_reserve_size(); | ||
1098 | |||
1099 | if (phyp_dump_info->phyp_dump_is_active) { | ||
1100 | /* Reserve *everything* above RMR.Area freed by userland tools*/ | ||
1101 | base = variable_reserve_size; | ||
1102 | size = lmb_end_of_DRAM() - base; | ||
1103 | |||
1104 | /* XXX crashed_ram_end is wrong, since it may be beyond | ||
1105 | * the memory_limit, it will need to be adjusted. */ | ||
1106 | lmb_reserve(base, size); | ||
1107 | |||
1108 | phyp_dump_info->init_reserve_start = base; | ||
1109 | phyp_dump_info->init_reserve_size = size; | ||
1110 | } else { | ||
1111 | size = phyp_dump_info->cpu_state_size + | ||
1112 | phyp_dump_info->hpte_region_size + | ||
1113 | variable_reserve_size; | ||
1114 | base = lmb_end_of_DRAM() - size; | ||
1115 | lmb_reserve(base, size); | ||
1116 | phyp_dump_info->init_reserve_start = base; | ||
1117 | phyp_dump_info->init_reserve_size = size; | ||
1118 | } | ||
1119 | } | ||
1120 | #else | ||
1121 | static inline void __init phyp_dump_reserve_mem(void) {} | ||
1122 | #endif /* CONFIG_PHYP_DUMP && CONFIG_PPC_RTAS */ | ||
1123 | |||
1124 | |||
1043 | void __init early_init_devtree(void *params) | 1125 | void __init early_init_devtree(void *params) |
1044 | { | 1126 | { |
1045 | DBG(" -> early_init_devtree(%p)\n", params); | 1127 | DBG(" -> early_init_devtree(%p)\n", params); |
@@ -1052,6 +1134,11 @@ void __init early_init_devtree(void *params) | |||
1052 | of_scan_flat_dt(early_init_dt_scan_rtas, NULL); | 1134 | of_scan_flat_dt(early_init_dt_scan_rtas, NULL); |
1053 | #endif | 1135 | #endif |
1054 | 1136 | ||
1137 | #ifdef CONFIG_PHYP_DUMP | ||
1138 | /* scan tree to see if dump occured during last boot */ | ||
1139 | of_scan_flat_dt(early_init_dt_scan_phyp_dump, NULL); | ||
1140 | #endif | ||
1141 | |||
1055 | /* Retrieve various informations from the /chosen node of the | 1142 | /* Retrieve various informations from the /chosen node of the |
1056 | * device-tree, including the platform type, initrd location and | 1143 | * device-tree, including the platform type, initrd location and |
1057 | * size, TCE reserve, and more ... | 1144 | * size, TCE reserve, and more ... |
@@ -1072,6 +1159,7 @@ void __init early_init_devtree(void *params) | |||
1072 | reserve_kdump_trampoline(); | 1159 | reserve_kdump_trampoline(); |
1073 | reserve_crashkernel(); | 1160 | reserve_crashkernel(); |
1074 | early_reserve_mem(); | 1161 | early_reserve_mem(); |
1162 | phyp_dump_reserve_mem(); | ||
1075 | 1163 | ||
1076 | lmb_enforce_memory_limit(memory_limit); | 1164 | lmb_enforce_memory_limit(memory_limit); |
1077 | lmb_analyze(); | 1165 | lmb_analyze(); |
@@ -1244,12 +1332,14 @@ EXPORT_SYMBOL(of_node_put); | |||
1244 | */ | 1332 | */ |
1245 | void of_attach_node(struct device_node *np) | 1333 | void of_attach_node(struct device_node *np) |
1246 | { | 1334 | { |
1247 | write_lock(&devtree_lock); | 1335 | unsigned long flags; |
1336 | |||
1337 | write_lock_irqsave(&devtree_lock, flags); | ||
1248 | np->sibling = np->parent->child; | 1338 | np->sibling = np->parent->child; |
1249 | np->allnext = allnodes; | 1339 | np->allnext = allnodes; |
1250 | np->parent->child = np; | 1340 | np->parent->child = np; |
1251 | allnodes = np; | 1341 | allnodes = np; |
1252 | write_unlock(&devtree_lock); | 1342 | write_unlock_irqrestore(&devtree_lock, flags); |
1253 | } | 1343 | } |
1254 | 1344 | ||
1255 | /* | 1345 | /* |
@@ -1260,8 +1350,9 @@ void of_attach_node(struct device_node *np) | |||
1260 | void of_detach_node(struct device_node *np) | 1350 | void of_detach_node(struct device_node *np) |
1261 | { | 1351 | { |
1262 | struct device_node *parent; | 1352 | struct device_node *parent; |
1353 | unsigned long flags; | ||
1263 | 1354 | ||
1264 | write_lock(&devtree_lock); | 1355 | write_lock_irqsave(&devtree_lock, flags); |
1265 | 1356 | ||
1266 | parent = np->parent; | 1357 | parent = np->parent; |
1267 | if (!parent) | 1358 | if (!parent) |
@@ -1292,7 +1383,7 @@ void of_detach_node(struct device_node *np) | |||
1292 | of_node_set_flag(np, OF_DETACHED); | 1383 | of_node_set_flag(np, OF_DETACHED); |
1293 | 1384 | ||
1294 | out_unlock: | 1385 | out_unlock: |
1295 | write_unlock(&devtree_lock); | 1386 | write_unlock_irqrestore(&devtree_lock, flags); |
1296 | } | 1387 | } |
1297 | 1388 | ||
1298 | #ifdef CONFIG_PPC_PSERIES | 1389 | #ifdef CONFIG_PPC_PSERIES |
@@ -1373,20 +1464,21 @@ __initcall(prom_reconfig_setup); | |||
1373 | int prom_add_property(struct device_node* np, struct property* prop) | 1464 | int prom_add_property(struct device_node* np, struct property* prop) |
1374 | { | 1465 | { |
1375 | struct property **next; | 1466 | struct property **next; |
1467 | unsigned long flags; | ||
1376 | 1468 | ||
1377 | prop->next = NULL; | 1469 | prop->next = NULL; |
1378 | write_lock(&devtree_lock); | 1470 | write_lock_irqsave(&devtree_lock, flags); |
1379 | next = &np->properties; | 1471 | next = &np->properties; |
1380 | while (*next) { | 1472 | while (*next) { |
1381 | if (strcmp(prop->name, (*next)->name) == 0) { | 1473 | if (strcmp(prop->name, (*next)->name) == 0) { |
1382 | /* duplicate ! don't insert it */ | 1474 | /* duplicate ! don't insert it */ |
1383 | write_unlock(&devtree_lock); | 1475 | write_unlock_irqrestore(&devtree_lock, flags); |
1384 | return -1; | 1476 | return -1; |
1385 | } | 1477 | } |
1386 | next = &(*next)->next; | 1478 | next = &(*next)->next; |
1387 | } | 1479 | } |
1388 | *next = prop; | 1480 | *next = prop; |
1389 | write_unlock(&devtree_lock); | 1481 | write_unlock_irqrestore(&devtree_lock, flags); |
1390 | 1482 | ||
1391 | #ifdef CONFIG_PROC_DEVICETREE | 1483 | #ifdef CONFIG_PROC_DEVICETREE |
1392 | /* try to add to proc as well if it was initialized */ | 1484 | /* try to add to proc as well if it was initialized */ |
@@ -1406,9 +1498,10 @@ int prom_add_property(struct device_node* np, struct property* prop) | |||
1406 | int prom_remove_property(struct device_node *np, struct property *prop) | 1498 | int prom_remove_property(struct device_node *np, struct property *prop) |
1407 | { | 1499 | { |
1408 | struct property **next; | 1500 | struct property **next; |
1501 | unsigned long flags; | ||
1409 | int found = 0; | 1502 | int found = 0; |
1410 | 1503 | ||
1411 | write_lock(&devtree_lock); | 1504 | write_lock_irqsave(&devtree_lock, flags); |
1412 | next = &np->properties; | 1505 | next = &np->properties; |
1413 | while (*next) { | 1506 | while (*next) { |
1414 | if (*next == prop) { | 1507 | if (*next == prop) { |
@@ -1421,7 +1514,7 @@ int prom_remove_property(struct device_node *np, struct property *prop) | |||
1421 | } | 1514 | } |
1422 | next = &(*next)->next; | 1515 | next = &(*next)->next; |
1423 | } | 1516 | } |
1424 | write_unlock(&devtree_lock); | 1517 | write_unlock_irqrestore(&devtree_lock, flags); |
1425 | 1518 | ||
1426 | if (!found) | 1519 | if (!found) |
1427 | return -ENODEV; | 1520 | return -ENODEV; |
@@ -1447,9 +1540,10 @@ int prom_update_property(struct device_node *np, | |||
1447 | struct property *oldprop) | 1540 | struct property *oldprop) |
1448 | { | 1541 | { |
1449 | struct property **next; | 1542 | struct property **next; |
1543 | unsigned long flags; | ||
1450 | int found = 0; | 1544 | int found = 0; |
1451 | 1545 | ||
1452 | write_lock(&devtree_lock); | 1546 | write_lock_irqsave(&devtree_lock, flags); |
1453 | next = &np->properties; | 1547 | next = &np->properties; |
1454 | while (*next) { | 1548 | while (*next) { |
1455 | if (*next == oldprop) { | 1549 | if (*next == oldprop) { |
@@ -1463,7 +1557,7 @@ int prom_update_property(struct device_node *np, | |||
1463 | } | 1557 | } |
1464 | next = &(*next)->next; | 1558 | next = &(*next)->next; |
1465 | } | 1559 | } |
1466 | write_unlock(&devtree_lock); | 1560 | write_unlock_irqrestore(&devtree_lock, flags); |
1467 | 1561 | ||
1468 | if (!found) | 1562 | if (!found) |
1469 | return -ENODEV; | 1563 | return -ENODEV; |
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 5ab4c8466cc9..6d6df1e60325 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
@@ -2240,6 +2240,14 @@ static void __init fixup_device_tree_efika(void) | |||
2240 | if (rv != PROM_ERROR && (strcmp(prop, "chrp") == 0)) | 2240 | if (rv != PROM_ERROR && (strcmp(prop, "chrp") == 0)) |
2241 | prom_setprop(node, "/", "device_type", "efika", sizeof("efika")); | 2241 | prom_setprop(node, "/", "device_type", "efika", sizeof("efika")); |
2242 | 2242 | ||
2243 | /* CODEGEN,description is exposed in /proc/cpuinfo so | ||
2244 | fix that too */ | ||
2245 | rv = prom_getprop(node, "CODEGEN,description", prop, sizeof(prop)); | ||
2246 | if (rv != PROM_ERROR && (strstr(prop, "CHRP"))) | ||
2247 | prom_setprop(node, "/", "CODEGEN,description", | ||
2248 | "Efika 5200B PowerPC System", | ||
2249 | sizeof("Efika 5200B PowerPC System")); | ||
2250 | |||
2243 | /* Fixup bestcomm interrupts property */ | 2251 | /* Fixup bestcomm interrupts property */ |
2244 | node = call_prom("finddevice", 1, 1, ADDR("/builtin/bestcomm")); | 2252 | node = call_prom("finddevice", 1, 1, ADDR("/builtin/bestcomm")); |
2245 | if (PHANDLE_VALID(node)) { | 2253 | if (PHANDLE_VALID(node)) { |
diff --git a/arch/powerpc/kernel/ptrace32.c b/arch/powerpc/kernel/ptrace32.c index 4c1de6af4c09..9d30e10970ac 100644 --- a/arch/powerpc/kernel/ptrace32.c +++ b/arch/powerpc/kernel/ptrace32.c | |||
@@ -29,12 +29,15 @@ | |||
29 | #include <linux/security.h> | 29 | #include <linux/security.h> |
30 | #include <linux/signal.h> | 30 | #include <linux/signal.h> |
31 | #include <linux/compat.h> | 31 | #include <linux/compat.h> |
32 | #include <linux/elf.h> | ||
32 | 33 | ||
33 | #include <asm/uaccess.h> | 34 | #include <asm/uaccess.h> |
34 | #include <asm/page.h> | 35 | #include <asm/page.h> |
35 | #include <asm/pgtable.h> | 36 | #include <asm/pgtable.h> |
36 | #include <asm/system.h> | 37 | #include <asm/system.h> |
37 | 38 | ||
39 | #include "ppc32.h" | ||
40 | |||
38 | /* | 41 | /* |
39 | * does not yet catch signals sent when the child dies. | 42 | * does not yet catch signals sent when the child dies. |
40 | * in exit.c or in signal.c. | 43 | * in exit.c or in signal.c. |
@@ -64,6 +67,27 @@ static long compat_ptrace_old(struct task_struct *child, long request, | |||
64 | return -EPERM; | 67 | return -EPERM; |
65 | } | 68 | } |
66 | 69 | ||
70 | static int compat_ptrace_getsiginfo(struct task_struct *child, compat_siginfo_t __user *data) | ||
71 | { | ||
72 | siginfo_t lastinfo; | ||
73 | int error = -ESRCH; | ||
74 | |||
75 | read_lock(&tasklist_lock); | ||
76 | if (likely(child->sighand != NULL)) { | ||
77 | error = -EINVAL; | ||
78 | spin_lock_irq(&child->sighand->siglock); | ||
79 | if (likely(child->last_siginfo != NULL)) { | ||
80 | lastinfo = *child->last_siginfo; | ||
81 | error = 0; | ||
82 | } | ||
83 | spin_unlock_irq(&child->sighand->siglock); | ||
84 | } | ||
85 | read_unlock(&tasklist_lock); | ||
86 | if (!error) | ||
87 | return copy_siginfo_to_user32(data, &lastinfo); | ||
88 | return error; | ||
89 | } | ||
90 | |||
67 | long compat_arch_ptrace(struct task_struct *child, compat_long_t request, | 91 | long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
68 | compat_ulong_t caddr, compat_ulong_t cdata) | 92 | compat_ulong_t caddr, compat_ulong_t cdata) |
69 | { | 93 | { |
@@ -282,6 +306,9 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, | |||
282 | 0, PT_REGS_COUNT * sizeof(compat_long_t), | 306 | 0, PT_REGS_COUNT * sizeof(compat_long_t), |
283 | compat_ptr(data)); | 307 | compat_ptr(data)); |
284 | 308 | ||
309 | case PTRACE_GETSIGINFO: | ||
310 | return compat_ptrace_getsiginfo(child, compat_ptr(data)); | ||
311 | |||
285 | case PTRACE_GETFPREGS: | 312 | case PTRACE_GETFPREGS: |
286 | case PTRACE_SETFPREGS: | 313 | case PTRACE_SETFPREGS: |
287 | case PTRACE_GETVRREGS: | 314 | case PTRACE_GETVRREGS: |
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index fe8d95146893..34843c318419 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/smp.h> | 22 | #include <linux/smp.h> |
23 | #include <linux/completion.h> | 23 | #include <linux/completion.h> |
24 | #include <linux/cpumask.h> | 24 | #include <linux/cpumask.h> |
25 | #include <linux/lmb.h> | ||
25 | 26 | ||
26 | #include <asm/prom.h> | 27 | #include <asm/prom.h> |
27 | #include <asm/rtas.h> | 28 | #include <asm/rtas.h> |
@@ -33,7 +34,6 @@ | |||
33 | #include <asm/system.h> | 34 | #include <asm/system.h> |
34 | #include <asm/delay.h> | 35 | #include <asm/delay.h> |
35 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
36 | #include <asm/lmb.h> | ||
37 | #include <asm/udbg.h> | 37 | #include <asm/udbg.h> |
38 | #include <asm/syscalls.h> | 38 | #include <asm/syscalls.h> |
39 | #include <asm/smp.h> | 39 | #include <asm/smp.h> |
@@ -506,7 +506,7 @@ int rtas_error_rc(int rtas_rc) | |||
506 | break; | 506 | break; |
507 | default: | 507 | default: |
508 | printk(KERN_ERR "%s: unexpected RTAS error %d\n", | 508 | printk(KERN_ERR "%s: unexpected RTAS error %d\n", |
509 | __FUNCTION__, rtas_rc); | 509 | __func__, rtas_rc); |
510 | rc = -ERANGE; | 510 | rc = -ERANGE; |
511 | break; | 511 | break; |
512 | } | 512 | } |
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index 538baf46f15f..627f126d1848 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
@@ -807,7 +807,7 @@ int __init rtas_flash_init(void) | |||
807 | rtas_block_ctor); | 807 | rtas_block_ctor); |
808 | if (!flash_block_cache) { | 808 | if (!flash_block_cache) { |
809 | printk(KERN_ERR "%s: failed to create block cache\n", | 809 | printk(KERN_ERR "%s: failed to create block cache\n", |
810 | __FUNCTION__); | 810 | __func__); |
811 | rc = -ENOMEM; | 811 | rc = -ENOMEM; |
812 | goto cleanup; | 812 | goto cleanup; |
813 | } | 813 | } |
diff --git a/arch/powerpc/kernel/rtas_pci.c b/arch/powerpc/kernel/rtas_pci.c index 433a0a0949fb..3ab88a9dc70d 100644 --- a/arch/powerpc/kernel/rtas_pci.c +++ b/arch/powerpc/kernel/rtas_pci.c | |||
@@ -56,21 +56,6 @@ static inline int config_access_valid(struct pci_dn *dn, int where) | |||
56 | return 0; | 56 | return 0; |
57 | } | 57 | } |
58 | 58 | ||
59 | static int of_device_available(struct device_node * dn) | ||
60 | { | ||
61 | const char *status; | ||
62 | |||
63 | status = of_get_property(dn, "status", NULL); | ||
64 | |||
65 | if (!status) | ||
66 | return 1; | ||
67 | |||
68 | if (!strcmp(status, "okay")) | ||
69 | return 1; | ||
70 | |||
71 | return 0; | ||
72 | } | ||
73 | |||
74 | int rtas_read_config(struct pci_dn *pdn, int where, int size, u32 *val) | 59 | int rtas_read_config(struct pci_dn *pdn, int where, int size, u32 *val) |
75 | { | 60 | { |
76 | int returnval = -1; | 61 | int returnval = -1; |
@@ -117,7 +102,7 @@ static int rtas_pci_read_config(struct pci_bus *bus, | |||
117 | for (dn = busdn->child; dn; dn = dn->sibling) { | 102 | for (dn = busdn->child; dn; dn = dn->sibling) { |
118 | struct pci_dn *pdn = PCI_DN(dn); | 103 | struct pci_dn *pdn = PCI_DN(dn); |
119 | if (pdn && pdn->devfn == devfn | 104 | if (pdn && pdn->devfn == devfn |
120 | && of_device_available(dn)) | 105 | && of_device_is_available(dn)) |
121 | return rtas_read_config(pdn, where, size, val); | 106 | return rtas_read_config(pdn, where, size, val); |
122 | } | 107 | } |
123 | 108 | ||
@@ -164,7 +149,7 @@ static int rtas_pci_write_config(struct pci_bus *bus, | |||
164 | for (dn = busdn->child; dn; dn = dn->sibling) { | 149 | for (dn = busdn->child; dn; dn = dn->sibling) { |
165 | struct pci_dn *pdn = PCI_DN(dn); | 150 | struct pci_dn *pdn = PCI_DN(dn); |
166 | if (pdn && pdn->devfn == devfn | 151 | if (pdn && pdn->devfn == devfn |
167 | && of_device_available(dn)) | 152 | && of_device_is_available(dn)) |
168 | return rtas_write_config(pdn, where, size, val); | 153 | return rtas_write_config(pdn, where, size, val); |
169 | } | 154 | } |
170 | return PCIBIOS_DEVICE_NOT_FOUND; | 155 | return PCIBIOS_DEVICE_NOT_FOUND; |
@@ -326,7 +311,7 @@ int pcibios_remove_root_bus(struct pci_controller *phb) | |||
326 | 311 | ||
327 | res = b->resource[0]; | 312 | res = b->resource[0]; |
328 | if (!res->flags) { | 313 | if (!res->flags) { |
329 | printk(KERN_ERR "%s: no IO resource for PHB %s\n", __FUNCTION__, | 314 | printk(KERN_ERR "%s: no IO resource for PHB %s\n", __func__, |
330 | b->name); | 315 | b->name); |
331 | return 1; | 316 | return 1; |
332 | } | 317 | } |
@@ -334,13 +319,13 @@ int pcibios_remove_root_bus(struct pci_controller *phb) | |||
334 | rc = pcibios_unmap_io_space(b); | 319 | rc = pcibios_unmap_io_space(b); |
335 | if (rc) { | 320 | if (rc) { |
336 | printk(KERN_ERR "%s: failed to unmap IO on bus %s\n", | 321 | printk(KERN_ERR "%s: failed to unmap IO on bus %s\n", |
337 | __FUNCTION__, b->name); | 322 | __func__, b->name); |
338 | return 1; | 323 | return 1; |
339 | } | 324 | } |
340 | 325 | ||
341 | if (release_resource(res)) { | 326 | if (release_resource(res)) { |
342 | printk(KERN_ERR "%s: failed to release IO on bus %s\n", | 327 | printk(KERN_ERR "%s: failed to release IO on bus %s\n", |
343 | __FUNCTION__, b->name); | 328 | __func__, b->name); |
344 | return 1; | 329 | return 1; |
345 | } | 330 | } |
346 | 331 | ||
@@ -348,13 +333,13 @@ int pcibios_remove_root_bus(struct pci_controller *phb) | |||
348 | res = b->resource[i]; | 333 | res = b->resource[i]; |
349 | if (!res->flags && i == 0) { | 334 | if (!res->flags && i == 0) { |
350 | printk(KERN_ERR "%s: no MEM resource for PHB %s\n", | 335 | printk(KERN_ERR "%s: no MEM resource for PHB %s\n", |
351 | __FUNCTION__, b->name); | 336 | __func__, b->name); |
352 | return 1; | 337 | return 1; |
353 | } | 338 | } |
354 | if (res->flags && release_resource(res)) { | 339 | if (res->flags && release_resource(res)) { |
355 | printk(KERN_ERR | 340 | printk(KERN_ERR |
356 | "%s: failed to release IO %d on bus %s\n", | 341 | "%s: failed to release IO %d on bus %s\n", |
357 | __FUNCTION__, i, b->name); | 342 | __func__, i, b->name); |
358 | return 1; | 343 | return 1; |
359 | } | 344 | } |
360 | } | 345 | } |
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 6adb5a1e98bb..db540eab09f4 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/serial_8250.h> | 34 | #include <linux/serial_8250.h> |
35 | #include <linux/debugfs.h> | 35 | #include <linux/debugfs.h> |
36 | #include <linux/percpu.h> | 36 | #include <linux/percpu.h> |
37 | #include <linux/lmb.h> | ||
37 | #include <asm/io.h> | 38 | #include <asm/io.h> |
38 | #include <asm/prom.h> | 39 | #include <asm/prom.h> |
39 | #include <asm/processor.h> | 40 | #include <asm/processor.h> |
@@ -56,7 +57,6 @@ | |||
56 | #include <asm/cache.h> | 57 | #include <asm/cache.h> |
57 | #include <asm/page.h> | 58 | #include <asm/page.h> |
58 | #include <asm/mmu.h> | 59 | #include <asm/mmu.h> |
59 | #include <asm/lmb.h> | ||
60 | #include <asm/xmon.h> | 60 | #include <asm/xmon.h> |
61 | #include <asm/cputhreads.h> | 61 | #include <asm/cputhreads.h> |
62 | 62 | ||
@@ -167,6 +167,8 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
167 | unsigned short min; | 167 | unsigned short min; |
168 | 168 | ||
169 | if (cpu_id == NR_CPUS) { | 169 | if (cpu_id == NR_CPUS) { |
170 | struct device_node *root; | ||
171 | const char *model = NULL; | ||
170 | #if defined(CONFIG_SMP) && defined(CONFIG_PPC32) | 172 | #if defined(CONFIG_SMP) && defined(CONFIG_PPC32) |
171 | unsigned long bogosum = 0; | 173 | unsigned long bogosum = 0; |
172 | int i; | 174 | int i; |
@@ -178,6 +180,13 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
178 | seq_printf(m, "timebase\t: %lu\n", ppc_tb_freq); | 180 | seq_printf(m, "timebase\t: %lu\n", ppc_tb_freq); |
179 | if (ppc_md.name) | 181 | if (ppc_md.name) |
180 | seq_printf(m, "platform\t: %s\n", ppc_md.name); | 182 | seq_printf(m, "platform\t: %s\n", ppc_md.name); |
183 | root = of_find_node_by_path("/"); | ||
184 | if (root) | ||
185 | model = of_get_property(root, "model", NULL); | ||
186 | if (model) | ||
187 | seq_printf(m, "model\t\t: %s\n", model); | ||
188 | of_node_put(root); | ||
189 | |||
181 | if (ppc_md.show_cpuinfo != NULL) | 190 | if (ppc_md.show_cpuinfo != NULL) |
182 | ppc_md.show_cpuinfo(m); | 191 | ppc_md.show_cpuinfo(m); |
183 | 192 | ||
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c index 06d918d94dd1..36f6779c88d4 100644 --- a/arch/powerpc/kernel/setup_32.c +++ b/arch/powerpc/kernel/setup_32.c | |||
@@ -164,6 +164,18 @@ int __init ppc_setup_l2cr(char *str) | |||
164 | } | 164 | } |
165 | __setup("l2cr=", ppc_setup_l2cr); | 165 | __setup("l2cr=", ppc_setup_l2cr); |
166 | 166 | ||
167 | /* Checks "l3cr=xxxx" command-line option */ | ||
168 | int __init ppc_setup_l3cr(char *str) | ||
169 | { | ||
170 | if (cpu_has_feature(CPU_FTR_L3CR)) { | ||
171 | unsigned long val = simple_strtoul(str, NULL, 0); | ||
172 | printk(KERN_INFO "l3cr set to %lx\n", val); | ||
173 | _set_L3CR(val); /* and enable it */ | ||
174 | } | ||
175 | return 1; | ||
176 | } | ||
177 | __setup("l3cr=", ppc_setup_l3cr); | ||
178 | |||
167 | #ifdef CONFIG_GENERIC_NVRAM | 179 | #ifdef CONFIG_GENERIC_NVRAM |
168 | 180 | ||
169 | /* Generic nvram hooks used by drivers/char/gen_nvram.c */ | 181 | /* Generic nvram hooks used by drivers/char/gen_nvram.c */ |
@@ -269,7 +281,7 @@ void __init setup_arch(char **cmdline_p) | |||
269 | if (ppc_md.panic) | 281 | if (ppc_md.panic) |
270 | setup_panic(); | 282 | setup_panic(); |
271 | 283 | ||
272 | init_mm.start_code = PAGE_OFFSET; | 284 | init_mm.start_code = (unsigned long)_stext; |
273 | init_mm.end_code = (unsigned long) _etext; | 285 | init_mm.end_code = (unsigned long) _etext; |
274 | init_mm.end_data = (unsigned long) _edata; | 286 | init_mm.end_data = (unsigned long) _edata; |
275 | init_mm.brk = klimit; | 287 | init_mm.brk = klimit; |
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 3b1529c103ef..31ada9fdfc5c 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c | |||
@@ -33,6 +33,8 @@ | |||
33 | #include <linux/serial_8250.h> | 33 | #include <linux/serial_8250.h> |
34 | #include <linux/bootmem.h> | 34 | #include <linux/bootmem.h> |
35 | #include <linux/pci.h> | 35 | #include <linux/pci.h> |
36 | #include <linux/lockdep.h> | ||
37 | #include <linux/lmb.h> | ||
36 | #include <asm/io.h> | 38 | #include <asm/io.h> |
37 | #include <asm/kdump.h> | 39 | #include <asm/kdump.h> |
38 | #include <asm/prom.h> | 40 | #include <asm/prom.h> |
@@ -55,7 +57,6 @@ | |||
55 | #include <asm/cache.h> | 57 | #include <asm/cache.h> |
56 | #include <asm/page.h> | 58 | #include <asm/page.h> |
57 | #include <asm/mmu.h> | 59 | #include <asm/mmu.h> |
58 | #include <asm/lmb.h> | ||
59 | #include <asm/firmware.h> | 60 | #include <asm/firmware.h> |
60 | #include <asm/xmon.h> | 61 | #include <asm/xmon.h> |
61 | #include <asm/udbg.h> | 62 | #include <asm/udbg.h> |
@@ -178,6 +179,9 @@ void __init early_setup(unsigned long dt_ptr) | |||
178 | /* Enable early debugging if any specified (see udbg.h) */ | 179 | /* Enable early debugging if any specified (see udbg.h) */ |
179 | udbg_early_init(); | 180 | udbg_early_init(); |
180 | 181 | ||
182 | /* Initialize lockdep early or else spinlocks will blow */ | ||
183 | lockdep_init(); | ||
184 | |||
181 | DBG(" -> early_setup(), dt_ptr: 0x%lx\n", dt_ptr); | 185 | DBG(" -> early_setup(), dt_ptr: 0x%lx\n", dt_ptr); |
182 | 186 | ||
183 | /* | 187 | /* |
@@ -510,7 +514,7 @@ void __init setup_arch(char **cmdline_p) | |||
510 | if (ppc_md.panic) | 514 | if (ppc_md.panic) |
511 | setup_panic(); | 515 | setup_panic(); |
512 | 516 | ||
513 | init_mm.start_code = PAGE_OFFSET; | 517 | init_mm.start_code = (unsigned long)_stext; |
514 | init_mm.end_code = (unsigned long) _etext; | 518 | init_mm.end_code = (unsigned long) _etext; |
515 | init_mm.end_data = (unsigned long) _edata; | 519 | init_mm.end_data = (unsigned long) _edata; |
516 | init_mm.brk = klimit; | 520 | init_mm.brk = klimit; |
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index d840bc772fd3..ad6943468ee9 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
@@ -621,6 +621,18 @@ int copy_siginfo_to_user32(struct compat_siginfo __user *d, siginfo_t *s) | |||
621 | 621 | ||
622 | #define copy_siginfo_to_user copy_siginfo_to_user32 | 622 | #define copy_siginfo_to_user copy_siginfo_to_user32 |
623 | 623 | ||
624 | int copy_siginfo_from_user32(siginfo_t *to, struct compat_siginfo __user *from) | ||
625 | { | ||
626 | memset(to, 0, sizeof *to); | ||
627 | |||
628 | if (copy_from_user(to, from, 3*sizeof(int)) || | ||
629 | copy_from_user(to->_sifields._pad, | ||
630 | from->_sifields._pad, SI_PAD_SIZE32)) | ||
631 | return -EFAULT; | ||
632 | |||
633 | return 0; | ||
634 | } | ||
635 | |||
624 | /* | 636 | /* |
625 | * Note: it is necessary to treat pid and sig as unsigned ints, with the | 637 | * Note: it is necessary to treat pid and sig as unsigned ints, with the |
626 | * corresponding cast to a signed int to insure that the proper conversion | 638 | * corresponding cast to a signed int to insure that the proper conversion |
@@ -634,9 +646,10 @@ long compat_sys_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo | |||
634 | int ret; | 646 | int ret; |
635 | mm_segment_t old_fs = get_fs(); | 647 | mm_segment_t old_fs = get_fs(); |
636 | 648 | ||
637 | if (copy_from_user (&info, uinfo, 3*sizeof(int)) || | 649 | ret = copy_siginfo_from_user32(&info, uinfo); |
638 | copy_from_user (info._sifields._pad, uinfo->_sifields._pad, SI_PAD_SIZE32)) | 650 | if (unlikely(ret)) |
639 | return -EFAULT; | 651 | return ret; |
652 | |||
640 | set_fs (KERNEL_DS); | 653 | set_fs (KERNEL_DS); |
641 | /* The __user pointer cast is valid becasuse of the set_fs() */ | 654 | /* The __user pointer cast is valid becasuse of the set_fs() */ |
642 | ret = sys_rt_sigqueueinfo((int)pid, (int)sig, (siginfo_t __user *) &info); | 655 | ret = sys_rt_sigqueueinfo((int)pid, (int)sig, (siginfo_t __user *) &info); |
diff --git a/arch/powerpc/kernel/stacktrace.c b/arch/powerpc/kernel/stacktrace.c new file mode 100644 index 000000000000..e3638eeaaae7 --- /dev/null +++ b/arch/powerpc/kernel/stacktrace.c | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * Stack trace utility | ||
3 | * | ||
4 | * Copyright 2008 Christoph Hellwig, IBM Corp. | ||
5 | * | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version | ||
10 | * 2 of the License, or (at your option) any later version. | ||
11 | */ | ||
12 | |||
13 | #include <linux/sched.h> | ||
14 | #include <linux/stacktrace.h> | ||
15 | #include <asm/ptrace.h> | ||
16 | #include <asm/asm-offsets.h> | ||
17 | |||
18 | /* | ||
19 | * Save stack-backtrace addresses into a stack_trace buffer. | ||
20 | */ | ||
21 | void save_stack_trace(struct stack_trace *trace) | ||
22 | { | ||
23 | unsigned long sp; | ||
24 | |||
25 | asm("mr %0,1" : "=r" (sp)); | ||
26 | |||
27 | for (;;) { | ||
28 | unsigned long *stack = (unsigned long *) sp; | ||
29 | unsigned long newsp, ip; | ||
30 | |||
31 | if (!validate_sp(sp, current, STACK_FRAME_OVERHEAD)) | ||
32 | return; | ||
33 | |||
34 | newsp = stack[0]; | ||
35 | ip = stack[STACK_FRAME_LR_SAVE]; | ||
36 | |||
37 | if (!trace->skip) | ||
38 | trace->entries[trace->nr_entries++] = ip; | ||
39 | else | ||
40 | trace->skip--; | ||
41 | |||
42 | if (trace->nr_entries >= trace->max_entries) | ||
43 | return; | ||
44 | |||
45 | sp = newsp; | ||
46 | } | ||
47 | } | ||
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c index fee9ee2260b1..709f8cb8bfca 100644 --- a/arch/powerpc/kernel/sys_ppc32.c +++ b/arch/powerpc/kernel/sys_ppc32.c | |||
@@ -367,11 +367,6 @@ long compat_sys_execve(unsigned long a0, unsigned long a1, unsigned long a2, | |||
367 | 367 | ||
368 | error = compat_do_execve(filename, compat_ptr(a1), compat_ptr(a2), regs); | 368 | error = compat_do_execve(filename, compat_ptr(a1), compat_ptr(a2), regs); |
369 | 369 | ||
370 | if (error == 0) { | ||
371 | task_lock(current); | ||
372 | current->ptrace &= ~PT_DTRACE; | ||
373 | task_unlock(current); | ||
374 | } | ||
375 | putname(filename); | 370 | putname(filename); |
376 | 371 | ||
377 | out: | 372 | out: |
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index d3437c4c4a6f..c21a626af676 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c | |||
@@ -21,13 +21,14 @@ | |||
21 | #include <linux/elf.h> | 21 | #include <linux/elf.h> |
22 | #include <linux/security.h> | 22 | #include <linux/security.h> |
23 | #include <linux/bootmem.h> | 23 | #include <linux/bootmem.h> |
24 | #include <linux/lmb.h> | ||
24 | 25 | ||
25 | #include <asm/pgtable.h> | 26 | #include <asm/pgtable.h> |
26 | #include <asm/system.h> | 27 | #include <asm/system.h> |
27 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
28 | #include <asm/mmu.h> | 29 | #include <asm/mmu.h> |
29 | #include <asm/mmu_context.h> | 30 | #include <asm/mmu_context.h> |
30 | #include <asm/lmb.h> | 31 | #include <asm/prom.h> |
31 | #include <asm/machdep.h> | 32 | #include <asm/machdep.h> |
32 | #include <asm/cputable.h> | 33 | #include <asm/cputable.h> |
33 | #include <asm/sections.h> | 34 | #include <asm/sections.h> |
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index f98867252ee2..b77f8af7ddde 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c | |||
@@ -139,7 +139,7 @@ static int vio_bus_remove(struct device *dev) | |||
139 | */ | 139 | */ |
140 | int vio_register_driver(struct vio_driver *viodrv) | 140 | int vio_register_driver(struct vio_driver *viodrv) |
141 | { | 141 | { |
142 | printk(KERN_DEBUG "%s: driver %s registering\n", __FUNCTION__, | 142 | printk(KERN_DEBUG "%s: driver %s registering\n", __func__, |
143 | viodrv->driver.name); | 143 | viodrv->driver.name); |
144 | 144 | ||
145 | /* fill in 'struct driver' fields */ | 145 | /* fill in 'struct driver' fields */ |
@@ -184,7 +184,7 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node) | |||
184 | /* we need the 'device_type' property, in order to match with drivers */ | 184 | /* we need the 'device_type' property, in order to match with drivers */ |
185 | if (of_node->type == NULL) { | 185 | if (of_node->type == NULL) { |
186 | printk(KERN_WARNING "%s: node %s missing 'device_type'\n", | 186 | printk(KERN_WARNING "%s: node %s missing 'device_type'\n", |
187 | __FUNCTION__, | 187 | __func__, |
188 | of_node->name ? of_node->name : "<unknown>"); | 188 | of_node->name ? of_node->name : "<unknown>"); |
189 | return NULL; | 189 | return NULL; |
190 | } | 190 | } |
@@ -192,7 +192,7 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node) | |||
192 | unit_address = of_get_property(of_node, "reg", NULL); | 192 | unit_address = of_get_property(of_node, "reg", NULL); |
193 | if (unit_address == NULL) { | 193 | if (unit_address == NULL) { |
194 | printk(KERN_WARNING "%s: node %s missing 'reg'\n", | 194 | printk(KERN_WARNING "%s: node %s missing 'reg'\n", |
195 | __FUNCTION__, | 195 | __func__, |
196 | of_node->name ? of_node->name : "<unknown>"); | 196 | of_node->name ? of_node->name : "<unknown>"); |
197 | return NULL; | 197 | return NULL; |
198 | } | 198 | } |
@@ -227,7 +227,7 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node) | |||
227 | /* register with generic device framework */ | 227 | /* register with generic device framework */ |
228 | if (device_register(&viodev->dev)) { | 228 | if (device_register(&viodev->dev)) { |
229 | printk(KERN_ERR "%s: failed to register device %s\n", | 229 | printk(KERN_ERR "%s: failed to register device %s\n", |
230 | __FUNCTION__, viodev->dev.bus_id); | 230 | __func__, viodev->dev.bus_id); |
231 | /* XXX free TCE table */ | 231 | /* XXX free TCE table */ |
232 | kfree(viodev); | 232 | kfree(viodev); |
233 | return NULL; | 233 | return NULL; |
@@ -258,7 +258,7 @@ static int __init vio_bus_init(void) | |||
258 | err = device_register(&vio_bus_device.dev); | 258 | err = device_register(&vio_bus_device.dev); |
259 | if (err) { | 259 | if (err) { |
260 | printk(KERN_WARNING "%s: device_register returned %i\n", | 260 | printk(KERN_WARNING "%s: device_register returned %i\n", |
261 | __FUNCTION__, err); | 261 | __func__, err); |
262 | return err; | 262 | return err; |
263 | } | 263 | } |
264 | 264 | ||
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index 0afb9e31d2a0..0c3000bf8d75 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
@@ -1,11 +1,9 @@ | |||
1 | #ifdef CONFIG_PPC64 | 1 | #ifdef CONFIG_PPC64 |
2 | #include <asm/page.h> | ||
3 | #define PROVIDE32(x) PROVIDE(__unused__##x) | 2 | #define PROVIDE32(x) PROVIDE(__unused__##x) |
4 | #else | 3 | #else |
5 | #define PAGE_SIZE 4096 | ||
6 | #define KERNELBASE CONFIG_KERNEL_START | ||
7 | #define PROVIDE32(x) PROVIDE(x) | 4 | #define PROVIDE32(x) PROVIDE(x) |
8 | #endif | 5 | #endif |
6 | #include <asm/page.h> | ||
9 | #include <asm-generic/vmlinux.lds.h> | 7 | #include <asm-generic/vmlinux.lds.h> |
10 | #include <asm/cache.h> | 8 | #include <asm/cache.h> |
11 | 9 | ||
@@ -33,7 +31,7 @@ SECTIONS | |||
33 | */ | 31 | */ |
34 | 32 | ||
35 | /* Text and gots */ | 33 | /* Text and gots */ |
36 | .text : { | 34 | .text : AT(ADDR(.text) - LOAD_OFFSET) { |
37 | ALIGN_FUNCTION(); | 35 | ALIGN_FUNCTION(); |
38 | *(.text.head) | 36 | *(.text.head) |
39 | _text = .; | 37 | _text = .; |
@@ -58,7 +56,7 @@ SECTIONS | |||
58 | RODATA | 56 | RODATA |
59 | 57 | ||
60 | /* Exception & bug tables */ | 58 | /* Exception & bug tables */ |
61 | __ex_table : { | 59 | __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { |
62 | __start___ex_table = .; | 60 | __start___ex_table = .; |
63 | *(__ex_table) | 61 | *(__ex_table) |
64 | __stop___ex_table = .; | 62 | __stop___ex_table = .; |
@@ -74,7 +72,7 @@ SECTIONS | |||
74 | . = ALIGN(PAGE_SIZE); | 72 | . = ALIGN(PAGE_SIZE); |
75 | __init_begin = .; | 73 | __init_begin = .; |
76 | 74 | ||
77 | .init.text : { | 75 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { |
78 | _sinittext = .; | 76 | _sinittext = .; |
79 | INIT_TEXT | 77 | INIT_TEXT |
80 | _einittext = .; | 78 | _einittext = .; |
@@ -83,11 +81,11 @@ SECTIONS | |||
83 | /* .exit.text is discarded at runtime, not link time, | 81 | /* .exit.text is discarded at runtime, not link time, |
84 | * to deal with references from __bug_table | 82 | * to deal with references from __bug_table |
85 | */ | 83 | */ |
86 | .exit.text : { | 84 | .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { |
87 | EXIT_TEXT | 85 | EXIT_TEXT |
88 | } | 86 | } |
89 | 87 | ||
90 | .init.data : { | 88 | .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { |
91 | INIT_DATA | 89 | INIT_DATA |
92 | __vtop_table_begin = .; | 90 | __vtop_table_begin = .; |
93 | *(.vtop_fixup); | 91 | *(.vtop_fixup); |
@@ -103,19 +101,19 @@ SECTIONS | |||
103 | } | 101 | } |
104 | 102 | ||
105 | . = ALIGN(16); | 103 | . = ALIGN(16); |
106 | .init.setup : { | 104 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { |
107 | __setup_start = .; | 105 | __setup_start = .; |
108 | *(.init.setup) | 106 | *(.init.setup) |
109 | __setup_end = .; | 107 | __setup_end = .; |
110 | } | 108 | } |
111 | 109 | ||
112 | .initcall.init : { | 110 | .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { |
113 | __initcall_start = .; | 111 | __initcall_start = .; |
114 | INITCALLS | 112 | INITCALLS |
115 | __initcall_end = .; | 113 | __initcall_end = .; |
116 | } | 114 | } |
117 | 115 | ||
118 | .con_initcall.init : { | 116 | .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { |
119 | __con_initcall_start = .; | 117 | __con_initcall_start = .; |
120 | *(.con_initcall.init) | 118 | *(.con_initcall.init) |
121 | __con_initcall_end = .; | 119 | __con_initcall_end = .; |
@@ -124,14 +122,14 @@ SECTIONS | |||
124 | SECURITY_INIT | 122 | SECURITY_INIT |
125 | 123 | ||
126 | . = ALIGN(8); | 124 | . = ALIGN(8); |
127 | __ftr_fixup : { | 125 | __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { |
128 | __start___ftr_fixup = .; | 126 | __start___ftr_fixup = .; |
129 | *(__ftr_fixup) | 127 | *(__ftr_fixup) |
130 | __stop___ftr_fixup = .; | 128 | __stop___ftr_fixup = .; |
131 | } | 129 | } |
132 | #ifdef CONFIG_PPC64 | 130 | #ifdef CONFIG_PPC64 |
133 | . = ALIGN(8); | 131 | . = ALIGN(8); |
134 | __fw_ftr_fixup : { | 132 | __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) { |
135 | __start___fw_ftr_fixup = .; | 133 | __start___fw_ftr_fixup = .; |
136 | *(__fw_ftr_fixup) | 134 | *(__fw_ftr_fixup) |
137 | __stop___fw_ftr_fixup = .; | 135 | __stop___fw_ftr_fixup = .; |
@@ -139,14 +137,14 @@ SECTIONS | |||
139 | #endif | 137 | #endif |
140 | #ifdef CONFIG_BLK_DEV_INITRD | 138 | #ifdef CONFIG_BLK_DEV_INITRD |
141 | . = ALIGN(PAGE_SIZE); | 139 | . = ALIGN(PAGE_SIZE); |
142 | .init.ramfs : { | 140 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { |
143 | __initramfs_start = .; | 141 | __initramfs_start = .; |
144 | *(.init.ramfs) | 142 | *(.init.ramfs) |
145 | __initramfs_end = .; | 143 | __initramfs_end = .; |
146 | } | 144 | } |
147 | #endif | 145 | #endif |
148 | . = ALIGN(PAGE_SIZE); | 146 | . = ALIGN(PAGE_SIZE); |
149 | .data.percpu : { | 147 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { |
150 | __per_cpu_start = .; | 148 | __per_cpu_start = .; |
151 | *(.data.percpu) | 149 | *(.data.percpu) |
152 | *(.data.percpu.shared_aligned) | 150 | *(.data.percpu.shared_aligned) |
@@ -154,7 +152,7 @@ SECTIONS | |||
154 | } | 152 | } |
155 | 153 | ||
156 | . = ALIGN(8); | 154 | . = ALIGN(8); |
157 | .machine.desc : { | 155 | .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { |
158 | __machine_desc_start = . ; | 156 | __machine_desc_start = . ; |
159 | *(.machine.desc) | 157 | *(.machine.desc) |
160 | __machine_desc_end = . ; | 158 | __machine_desc_end = . ; |
@@ -172,25 +170,24 @@ SECTIONS | |||
172 | _sdata = .; | 170 | _sdata = .; |
173 | 171 | ||
174 | #ifdef CONFIG_PPC32 | 172 | #ifdef CONFIG_PPC32 |
175 | .data : | 173 | .data : AT(ADDR(.data) - LOAD_OFFSET) { |
176 | { | ||
177 | DATA_DATA | 174 | DATA_DATA |
178 | *(.sdata) | 175 | *(.sdata) |
179 | *(.got.plt) *(.got) | 176 | *(.got.plt) *(.got) |
180 | } | 177 | } |
181 | #else | 178 | #else |
182 | .data : { | 179 | .data : AT(ADDR(.data) - LOAD_OFFSET) { |
183 | DATA_DATA | 180 | DATA_DATA |
184 | *(.data.rel*) | 181 | *(.data.rel*) |
185 | *(.toc1) | 182 | *(.toc1) |
186 | *(.branch_lt) | 183 | *(.branch_lt) |
187 | } | 184 | } |
188 | 185 | ||
189 | .opd : { | 186 | .opd : AT(ADDR(.opd) - LOAD_OFFSET) { |
190 | *(.opd) | 187 | *(.opd) |
191 | } | 188 | } |
192 | 189 | ||
193 | .got : { | 190 | .got : AT(ADDR(.got) - LOAD_OFFSET) { |
194 | __toc_start = .; | 191 | __toc_start = .; |
195 | *(.got) | 192 | *(.got) |
196 | *(.toc) | 193 | *(.toc) |
@@ -207,26 +204,26 @@ SECTIONS | |||
207 | #else | 204 | #else |
208 | . = ALIGN(16384); | 205 | . = ALIGN(16384); |
209 | #endif | 206 | #endif |
210 | .data.init_task : { | 207 | .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { |
211 | *(.data.init_task) | 208 | *(.data.init_task) |
212 | } | 209 | } |
213 | 210 | ||
214 | . = ALIGN(PAGE_SIZE); | 211 | . = ALIGN(PAGE_SIZE); |
215 | .data.page_aligned : { | 212 | .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { |
216 | *(.data.page_aligned) | 213 | *(.data.page_aligned) |
217 | } | 214 | } |
218 | 215 | ||
219 | .data.cacheline_aligned : { | 216 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { |
220 | *(.data.cacheline_aligned) | 217 | *(.data.cacheline_aligned) |
221 | } | 218 | } |
222 | 219 | ||
223 | . = ALIGN(L1_CACHE_BYTES); | 220 | . = ALIGN(L1_CACHE_BYTES); |
224 | .data.read_mostly : { | 221 | .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { |
225 | *(.data.read_mostly) | 222 | *(.data.read_mostly) |
226 | } | 223 | } |
227 | 224 | ||
228 | . = ALIGN(PAGE_SIZE); | 225 | . = ALIGN(PAGE_SIZE); |
229 | __data_nosave : { | 226 | .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { |
230 | __nosave_begin = .; | 227 | __nosave_begin = .; |
231 | *(.data.nosave) | 228 | *(.data.nosave) |
232 | . = ALIGN(PAGE_SIZE); | 229 | . = ALIGN(PAGE_SIZE); |
@@ -237,7 +234,7 @@ SECTIONS | |||
237 | * And finally the bss | 234 | * And finally the bss |
238 | */ | 235 | */ |
239 | 236 | ||
240 | .bss : { | 237 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { |
241 | __bss_start = .; | 238 | __bss_start = .; |
242 | *(.sbss) *(.scommon) | 239 | *(.sbss) *(.scommon) |
243 | *(.dynbss) | 240 | *(.dynbss) |
diff --git a/arch/powerpc/lib/rheap.c b/arch/powerpc/lib/rheap.c index 22c3b4f53de7..29b2941cada0 100644 --- a/arch/powerpc/lib/rheap.c +++ b/arch/powerpc/lib/rheap.c | |||
@@ -54,7 +54,7 @@ static int grow(rh_info_t * info, int max_blocks) | |||
54 | 54 | ||
55 | new_blocks = max_blocks - info->max_blocks; | 55 | new_blocks = max_blocks - info->max_blocks; |
56 | 56 | ||
57 | block = kmalloc(sizeof(rh_block_t) * max_blocks, GFP_KERNEL); | 57 | block = kmalloc(sizeof(rh_block_t) * max_blocks, GFP_ATOMIC); |
58 | if (block == NULL) | 58 | if (block == NULL) |
59 | return -ENOMEM; | 59 | return -ENOMEM; |
60 | 60 | ||
@@ -258,7 +258,7 @@ rh_info_t *rh_create(unsigned int alignment) | |||
258 | if ((alignment & (alignment - 1)) != 0) | 258 | if ((alignment & (alignment - 1)) != 0) |
259 | return ERR_PTR(-EINVAL); | 259 | return ERR_PTR(-EINVAL); |
260 | 260 | ||
261 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 261 | info = kmalloc(sizeof(*info), GFP_ATOMIC); |
262 | if (info == NULL) | 262 | if (info == NULL) |
263 | return ERR_PTR(-ENOMEM); | 263 | return ERR_PTR(-ENOMEM); |
264 | 264 | ||
diff --git a/arch/powerpc/lib/string.S b/arch/powerpc/lib/string.S index c4c622d8e6ac..49eb1f1a2bb4 100644 --- a/arch/powerpc/lib/string.S +++ b/arch/powerpc/lib/string.S | |||
@@ -75,6 +75,20 @@ _GLOBAL(strcmp) | |||
75 | beq 1b | 75 | beq 1b |
76 | blr | 76 | blr |
77 | 77 | ||
78 | _GLOBAL(strncmp) | ||
79 | PPC_LCMPI r5,0 | ||
80 | beqlr | ||
81 | mtctr r5 | ||
82 | addi r5,r3,-1 | ||
83 | addi r4,r4,-1 | ||
84 | 1: lbzu r3,1(r5) | ||
85 | cmpwi 1,r3,0 | ||
86 | lbzu r0,1(r4) | ||
87 | subf. r3,r0,r3 | ||
88 | beqlr 1 | ||
89 | bdnzt eq,1b | ||
90 | blr | ||
91 | |||
78 | _GLOBAL(strlen) | 92 | _GLOBAL(strlen) |
79 | addi r4,r3,-1 | 93 | addi r4,r3,-1 |
80 | 1: lbzu r0,1(r4) | 94 | 1: lbzu r0,1(r4) |
diff --git a/arch/powerpc/math-emu/fabs.c b/arch/powerpc/math-emu/fabs.c index 41f0617f3d3a..549baba5948f 100644 --- a/arch/powerpc/math-emu/fabs.c +++ b/arch/powerpc/math-emu/fabs.c | |||
@@ -9,7 +9,7 @@ fabs(u32 *frD, u32 *frB) | |||
9 | frD[1] = frB[1]; | 9 | frD[1] = frB[1]; |
10 | 10 | ||
11 | #ifdef DEBUG | 11 | #ifdef DEBUG |
12 | printk("%s: D %p, B %p: ", __FUNCTION__, frD, frB); | 12 | printk("%s: D %p, B %p: ", __func__, frD, frB); |
13 | dump_double(frD); | 13 | dump_double(frD); |
14 | printk("\n"); | 14 | printk("\n"); |
15 | #endif | 15 | #endif |
diff --git a/arch/powerpc/math-emu/fadd.c b/arch/powerpc/math-emu/fadd.c index fc8836488b64..7befbbf2c332 100644 --- a/arch/powerpc/math-emu/fadd.c +++ b/arch/powerpc/math-emu/fadd.c | |||
@@ -14,7 +14,7 @@ fadd(void *frD, void *frA, void *frB) | |||
14 | int ret = 0; | 14 | int ret = 0; |
15 | 15 | ||
16 | #ifdef DEBUG | 16 | #ifdef DEBUG |
17 | printk("%s: %p %p %p\n", __FUNCTION__, frD, frA, frB); | 17 | printk("%s: %p %p %p\n", __func__, frD, frA, frB); |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | __FP_UNPACK_D(A, frA); | 20 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fadds.c b/arch/powerpc/math-emu/fadds.c index 93025b6c8f3c..2b346b38b480 100644 --- a/arch/powerpc/math-emu/fadds.c +++ b/arch/powerpc/math-emu/fadds.c | |||
@@ -15,7 +15,7 @@ fadds(void *frD, void *frA, void *frB) | |||
15 | int ret = 0; | 15 | int ret = 0; |
16 | 16 | ||
17 | #ifdef DEBUG | 17 | #ifdef DEBUG |
18 | printk("%s: %p %p %p\n", __FUNCTION__, frD, frA, frB); | 18 | printk("%s: %p %p %p\n", __func__, frD, frA, frB); |
19 | #endif | 19 | #endif |
20 | 20 | ||
21 | __FP_UNPACK_D(A, frA); | 21 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fcmpo.c b/arch/powerpc/math-emu/fcmpo.c index 4efac394b4cb..36d689044c63 100644 --- a/arch/powerpc/math-emu/fcmpo.c +++ b/arch/powerpc/math-emu/fcmpo.c | |||
@@ -15,7 +15,7 @@ fcmpo(u32 *ccr, int crfD, void *frA, void *frB) | |||
15 | int ret = 0; | 15 | int ret = 0; |
16 | 16 | ||
17 | #ifdef DEBUG | 17 | #ifdef DEBUG |
18 | printk("%s: %p (%08x) %d %p %p\n", __FUNCTION__, ccr, *ccr, crfD, frA, frB); | 18 | printk("%s: %p (%08x) %d %p %p\n", __func__, ccr, *ccr, crfD, frA, frB); |
19 | #endif | 19 | #endif |
20 | 20 | ||
21 | __FP_UNPACK_D(A, frA); | 21 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fcmpu.c b/arch/powerpc/math-emu/fcmpu.c index b7e33176e618..53d93894f2a6 100644 --- a/arch/powerpc/math-emu/fcmpu.c +++ b/arch/powerpc/math-emu/fcmpu.c | |||
@@ -14,7 +14,7 @@ fcmpu(u32 *ccr, int crfD, void *frA, void *frB) | |||
14 | long cmp; | 14 | long cmp; |
15 | 15 | ||
16 | #ifdef DEBUG | 16 | #ifdef DEBUG |
17 | printk("%s: %p (%08x) %d %p %p\n", __FUNCTION__, ccr, *ccr, crfD, frA, frB); | 17 | printk("%s: %p (%08x) %d %p %p\n", __func__, ccr, *ccr, crfD, frA, frB); |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | __FP_UNPACK_D(A, frA); | 20 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fctiw.c b/arch/powerpc/math-emu/fctiw.c index 3b3c98b840cf..fcd7a95e021d 100644 --- a/arch/powerpc/math-emu/fctiw.c +++ b/arch/powerpc/math-emu/fctiw.c | |||
@@ -16,7 +16,7 @@ fctiw(u32 *frD, void *frB) | |||
16 | frD[1] = r; | 16 | frD[1] = r; |
17 | 17 | ||
18 | #ifdef DEBUG | 18 | #ifdef DEBUG |
19 | printk("%s: D %p, B %p: ", __FUNCTION__, frD, frB); | 19 | printk("%s: D %p, B %p: ", __func__, frD, frB); |
20 | dump_double(frD); | 20 | dump_double(frD); |
21 | printk("\n"); | 21 | printk("\n"); |
22 | #endif | 22 | #endif |
diff --git a/arch/powerpc/math-emu/fctiwz.c b/arch/powerpc/math-emu/fctiwz.c index 7717eb6fcfb6..1514d59e146e 100644 --- a/arch/powerpc/math-emu/fctiwz.c +++ b/arch/powerpc/math-emu/fctiwz.c | |||
@@ -23,7 +23,7 @@ fctiwz(u32 *frD, void *frB) | |||
23 | __FPU_FPSCR = fpscr; | 23 | __FPU_FPSCR = fpscr; |
24 | 24 | ||
25 | #ifdef DEBUG | 25 | #ifdef DEBUG |
26 | printk("%s: D %p, B %p: ", __FUNCTION__, frD, frB); | 26 | printk("%s: D %p, B %p: ", __func__, frD, frB); |
27 | dump_double(frD); | 27 | dump_double(frD); |
28 | printk("\n"); | 28 | printk("\n"); |
29 | #endif | 29 | #endif |
diff --git a/arch/powerpc/math-emu/fdiv.c b/arch/powerpc/math-emu/fdiv.c index f2fba825b2d0..18a20fe396b0 100644 --- a/arch/powerpc/math-emu/fdiv.c +++ b/arch/powerpc/math-emu/fdiv.c | |||
@@ -14,7 +14,7 @@ fdiv(void *frD, void *frA, void *frB) | |||
14 | int ret = 0; | 14 | int ret = 0; |
15 | 15 | ||
16 | #ifdef DEBUG | 16 | #ifdef DEBUG |
17 | printk("%s: %p %p %p\n", __FUNCTION__, frD, frA, frB); | 17 | printk("%s: %p %p %p\n", __func__, frD, frA, frB); |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | __FP_UNPACK_D(A, frA); | 20 | __FP_UNPACK_D(A, frA); |
@@ -28,13 +28,13 @@ fdiv(void *frD, void *frA, void *frB) | |||
28 | if (A_c == FP_CLS_ZERO && B_c == FP_CLS_ZERO) { | 28 | if (A_c == FP_CLS_ZERO && B_c == FP_CLS_ZERO) { |
29 | ret |= EFLAG_VXZDZ; | 29 | ret |= EFLAG_VXZDZ; |
30 | #ifdef DEBUG | 30 | #ifdef DEBUG |
31 | printk("%s: FPSCR_VXZDZ raised\n", __FUNCTION__); | 31 | printk("%s: FPSCR_VXZDZ raised\n", __func__); |
32 | #endif | 32 | #endif |
33 | } | 33 | } |
34 | if (A_c == FP_CLS_INF && B_c == FP_CLS_INF) { | 34 | if (A_c == FP_CLS_INF && B_c == FP_CLS_INF) { |
35 | ret |= EFLAG_VXIDI; | 35 | ret |= EFLAG_VXIDI; |
36 | #ifdef DEBUG | 36 | #ifdef DEBUG |
37 | printk("%s: FPSCR_VXIDI raised\n", __FUNCTION__); | 37 | printk("%s: FPSCR_VXIDI raised\n", __func__); |
38 | #endif | 38 | #endif |
39 | } | 39 | } |
40 | 40 | ||
diff --git a/arch/powerpc/math-emu/fdivs.c b/arch/powerpc/math-emu/fdivs.c index b971196e3175..24feed689c35 100644 --- a/arch/powerpc/math-emu/fdivs.c +++ b/arch/powerpc/math-emu/fdivs.c | |||
@@ -15,7 +15,7 @@ fdivs(void *frD, void *frA, void *frB) | |||
15 | int ret = 0; | 15 | int ret = 0; |
16 | 16 | ||
17 | #ifdef DEBUG | 17 | #ifdef DEBUG |
18 | printk("%s: %p %p %p\n", __FUNCTION__, frD, frA, frB); | 18 | printk("%s: %p %p %p\n", __func__, frD, frA, frB); |
19 | #endif | 19 | #endif |
20 | 20 | ||
21 | __FP_UNPACK_D(A, frA); | 21 | __FP_UNPACK_D(A, frA); |
@@ -29,13 +29,13 @@ fdivs(void *frD, void *frA, void *frB) | |||
29 | if (A_c == FP_CLS_ZERO && B_c == FP_CLS_ZERO) { | 29 | if (A_c == FP_CLS_ZERO && B_c == FP_CLS_ZERO) { |
30 | ret |= EFLAG_VXZDZ; | 30 | ret |= EFLAG_VXZDZ; |
31 | #ifdef DEBUG | 31 | #ifdef DEBUG |
32 | printk("%s: FPSCR_VXZDZ raised\n", __FUNCTION__); | 32 | printk("%s: FPSCR_VXZDZ raised\n", __func__); |
33 | #endif | 33 | #endif |
34 | } | 34 | } |
35 | if (A_c == FP_CLS_INF && B_c == FP_CLS_INF) { | 35 | if (A_c == FP_CLS_INF && B_c == FP_CLS_INF) { |
36 | ret |= EFLAG_VXIDI; | 36 | ret |= EFLAG_VXIDI; |
37 | #ifdef DEBUG | 37 | #ifdef DEBUG |
38 | printk("%s: FPSCR_VXIDI raised\n", __FUNCTION__); | 38 | printk("%s: FPSCR_VXIDI raised\n", __func__); |
39 | #endif | 39 | #endif |
40 | } | 40 | } |
41 | 41 | ||
diff --git a/arch/powerpc/math-emu/fmadd.c b/arch/powerpc/math-emu/fmadd.c index 0a1dbce793e9..dedb465fdc68 100644 --- a/arch/powerpc/math-emu/fmadd.c +++ b/arch/powerpc/math-emu/fmadd.c | |||
@@ -16,7 +16,7 @@ fmadd(void *frD, void *frA, void *frB, void *frC) | |||
16 | int ret = 0; | 16 | int ret = 0; |
17 | 17 | ||
18 | #ifdef DEBUG | 18 | #ifdef DEBUG |
19 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 19 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | __FP_UNPACK_D(A, frA); | 22 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fmadds.c b/arch/powerpc/math-emu/fmadds.c index 0f70bba9445e..6bbb56d5502c 100644 --- a/arch/powerpc/math-emu/fmadds.c +++ b/arch/powerpc/math-emu/fmadds.c | |||
@@ -17,7 +17,7 @@ fmadds(void *frD, void *frA, void *frB, void *frC) | |||
17 | int ret = 0; | 17 | int ret = 0; |
18 | 18 | ||
19 | #ifdef DEBUG | 19 | #ifdef DEBUG |
20 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 20 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | __FP_UNPACK_D(A, frA); | 23 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fmr.c b/arch/powerpc/math-emu/fmr.c index 28df700c0c7e..bd55384b8196 100644 --- a/arch/powerpc/math-emu/fmr.c +++ b/arch/powerpc/math-emu/fmr.c | |||
@@ -9,7 +9,7 @@ fmr(u32 *frD, u32 *frB) | |||
9 | frD[1] = frB[1]; | 9 | frD[1] = frB[1]; |
10 | 10 | ||
11 | #ifdef DEBUG | 11 | #ifdef DEBUG |
12 | printk("%s: D %p, B %p: ", __FUNCTION__, frD, frB); | 12 | printk("%s: D %p, B %p: ", __func__, frD, frB); |
13 | dump_double(frD); | 13 | dump_double(frD); |
14 | printk("\n"); | 14 | printk("\n"); |
15 | #endif | 15 | #endif |
diff --git a/arch/powerpc/math-emu/fmsub.c b/arch/powerpc/math-emu/fmsub.c index 203fd48a6fec..f311e2c7e67e 100644 --- a/arch/powerpc/math-emu/fmsub.c +++ b/arch/powerpc/math-emu/fmsub.c | |||
@@ -16,7 +16,7 @@ fmsub(void *frD, void *frA, void *frB, void *frC) | |||
16 | int ret = 0; | 16 | int ret = 0; |
17 | 17 | ||
18 | #ifdef DEBUG | 18 | #ifdef DEBUG |
19 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 19 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | __FP_UNPACK_D(A, frA); | 22 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fmsubs.c b/arch/powerpc/math-emu/fmsubs.c index 8ce68624c189..81a716d3ee2e 100644 --- a/arch/powerpc/math-emu/fmsubs.c +++ b/arch/powerpc/math-emu/fmsubs.c | |||
@@ -17,7 +17,7 @@ fmsubs(void *frD, void *frA, void *frB, void *frC) | |||
17 | int ret = 0; | 17 | int ret = 0; |
18 | 18 | ||
19 | #ifdef DEBUG | 19 | #ifdef DEBUG |
20 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 20 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | __FP_UNPACK_D(A, frA); | 23 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fmul.c b/arch/powerpc/math-emu/fmul.c index 66c7e79aae2e..2f3d32784a04 100644 --- a/arch/powerpc/math-emu/fmul.c +++ b/arch/powerpc/math-emu/fmul.c | |||
@@ -14,7 +14,7 @@ fmul(void *frD, void *frA, void *frB) | |||
14 | int ret = 0; | 14 | int ret = 0; |
15 | 15 | ||
16 | #ifdef DEBUG | 16 | #ifdef DEBUG |
17 | printk("%s: %p %p %p\n", __FUNCTION__, frD, frA, frB); | 17 | printk("%s: %p %p %p\n", __func__, frD, frA, frB); |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | __FP_UNPACK_D(A, frA); | 20 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fmuls.c b/arch/powerpc/math-emu/fmuls.c index 26bc4278271c..962b5883f784 100644 --- a/arch/powerpc/math-emu/fmuls.c +++ b/arch/powerpc/math-emu/fmuls.c | |||
@@ -15,7 +15,7 @@ fmuls(void *frD, void *frA, void *frB) | |||
15 | int ret = 0; | 15 | int ret = 0; |
16 | 16 | ||
17 | #ifdef DEBUG | 17 | #ifdef DEBUG |
18 | printk("%s: %p %p %p\n", __FUNCTION__, frD, frA, frB); | 18 | printk("%s: %p %p %p\n", __func__, frD, frA, frB); |
19 | #endif | 19 | #endif |
20 | 20 | ||
21 | __FP_UNPACK_D(A, frA); | 21 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fnabs.c b/arch/powerpc/math-emu/fnabs.c index c6b913d179e0..a7d34f3d9499 100644 --- a/arch/powerpc/math-emu/fnabs.c +++ b/arch/powerpc/math-emu/fnabs.c | |||
@@ -9,7 +9,7 @@ fnabs(u32 *frD, u32 *frB) | |||
9 | frD[1] = frB[1]; | 9 | frD[1] = frB[1]; |
10 | 10 | ||
11 | #ifdef DEBUG | 11 | #ifdef DEBUG |
12 | printk("%s: D %p, B %p: ", __FUNCTION__, frD, frB); | 12 | printk("%s: D %p, B %p: ", __func__, frD, frB); |
13 | dump_double(frD); | 13 | dump_double(frD); |
14 | printk("\n"); | 14 | printk("\n"); |
15 | #endif | 15 | #endif |
diff --git a/arch/powerpc/math-emu/fneg.c b/arch/powerpc/math-emu/fneg.c index fe9a98deff69..1e988cd9c6cc 100644 --- a/arch/powerpc/math-emu/fneg.c +++ b/arch/powerpc/math-emu/fneg.c | |||
@@ -9,7 +9,7 @@ fneg(u32 *frD, u32 *frB) | |||
9 | frD[1] = frB[1]; | 9 | frD[1] = frB[1]; |
10 | 10 | ||
11 | #ifdef DEBUG | 11 | #ifdef DEBUG |
12 | printk("%s: D %p, B %p: ", __FUNCTION__, frD, frB); | 12 | printk("%s: D %p, B %p: ", __func__, frD, frB); |
13 | dump_double(frD); | 13 | dump_double(frD); |
14 | printk("\n"); | 14 | printk("\n"); |
15 | #endif | 15 | #endif |
diff --git a/arch/powerpc/math-emu/fnmadd.c b/arch/powerpc/math-emu/fnmadd.c index 7f312276d920..8cf7827c4fb5 100644 --- a/arch/powerpc/math-emu/fnmadd.c +++ b/arch/powerpc/math-emu/fnmadd.c | |||
@@ -16,7 +16,7 @@ fnmadd(void *frD, void *frA, void *frB, void *frC) | |||
16 | int ret = 0; | 16 | int ret = 0; |
17 | 17 | ||
18 | #ifdef DEBUG | 18 | #ifdef DEBUG |
19 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 19 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | __FP_UNPACK_D(A, frA); | 22 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fnmadds.c b/arch/powerpc/math-emu/fnmadds.c index 65454c9c70bc..f1c4f0f0d807 100644 --- a/arch/powerpc/math-emu/fnmadds.c +++ b/arch/powerpc/math-emu/fnmadds.c | |||
@@ -17,7 +17,7 @@ fnmadds(void *frD, void *frA, void *frB, void *frC) | |||
17 | int ret = 0; | 17 | int ret = 0; |
18 | 18 | ||
19 | #ifdef DEBUG | 19 | #ifdef DEBUG |
20 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 20 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | __FP_UNPACK_D(A, frA); | 23 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fnmsub.c b/arch/powerpc/math-emu/fnmsub.c index f1ca7482b5f0..98944e6e2601 100644 --- a/arch/powerpc/math-emu/fnmsub.c +++ b/arch/powerpc/math-emu/fnmsub.c | |||
@@ -16,7 +16,7 @@ fnmsub(void *frD, void *frA, void *frB, void *frC) | |||
16 | int ret = 0; | 16 | int ret = 0; |
17 | 17 | ||
18 | #ifdef DEBUG | 18 | #ifdef DEBUG |
19 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 19 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | __FP_UNPACK_D(A, frA); | 22 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fnmsubs.c b/arch/powerpc/math-emu/fnmsubs.c index 5c9a09a87dc7..b20f4eb63fb9 100644 --- a/arch/powerpc/math-emu/fnmsubs.c +++ b/arch/powerpc/math-emu/fnmsubs.c | |||
@@ -17,7 +17,7 @@ fnmsubs(void *frD, void *frA, void *frB, void *frC) | |||
17 | int ret = 0; | 17 | int ret = 0; |
18 | 18 | ||
19 | #ifdef DEBUG | 19 | #ifdef DEBUG |
20 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 20 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | __FP_UNPACK_D(A, frA); | 23 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fres.c b/arch/powerpc/math-emu/fres.c index ec11e46d20af..10ecbd08b79e 100644 --- a/arch/powerpc/math-emu/fres.c +++ b/arch/powerpc/math-emu/fres.c | |||
@@ -6,7 +6,7 @@ int | |||
6 | fres(void *frD, void *frB) | 6 | fres(void *frD, void *frB) |
7 | { | 7 | { |
8 | #ifdef DEBUG | 8 | #ifdef DEBUG |
9 | printk("%s: %p %p\n", __FUNCTION__, frD, frB); | 9 | printk("%s: %p %p\n", __func__, frD, frB); |
10 | #endif | 10 | #endif |
11 | return -ENOSYS; | 11 | return -ENOSYS; |
12 | } | 12 | } |
diff --git a/arch/powerpc/math-emu/frsp.c b/arch/powerpc/math-emu/frsp.c index d879b2a3d0c9..724ccbc0468e 100644 --- a/arch/powerpc/math-emu/frsp.c +++ b/arch/powerpc/math-emu/frsp.c | |||
@@ -12,7 +12,7 @@ frsp(void *frD, void *frB) | |||
12 | FP_DECL_D(B); | 12 | FP_DECL_D(B); |
13 | 13 | ||
14 | #ifdef DEBUG | 14 | #ifdef DEBUG |
15 | printk("%s: D %p, B %p\n", __FUNCTION__, frD, frB); | 15 | printk("%s: D %p, B %p\n", __func__, frD, frB); |
16 | #endif | 16 | #endif |
17 | 17 | ||
18 | __FP_UNPACK_D(B, frB); | 18 | __FP_UNPACK_D(B, frB); |
diff --git a/arch/powerpc/math-emu/frsqrte.c b/arch/powerpc/math-emu/frsqrte.c index a11ae1829850..1d0a3a0fd0e6 100644 --- a/arch/powerpc/math-emu/frsqrte.c +++ b/arch/powerpc/math-emu/frsqrte.c | |||
@@ -6,7 +6,7 @@ int | |||
6 | frsqrte(void *frD, void *frB) | 6 | frsqrte(void *frD, void *frB) |
7 | { | 7 | { |
8 | #ifdef DEBUG | 8 | #ifdef DEBUG |
9 | printk("%s: %p %p\n", __FUNCTION__, frD, frB); | 9 | printk("%s: %p %p\n", __func__, frD, frB); |
10 | #endif | 10 | #endif |
11 | return 0; | 11 | return 0; |
12 | } | 12 | } |
diff --git a/arch/powerpc/math-emu/fsel.c b/arch/powerpc/math-emu/fsel.c index e36e6e72819a..ecb5f28eb1f3 100644 --- a/arch/powerpc/math-emu/fsel.c +++ b/arch/powerpc/math-emu/fsel.c | |||
@@ -11,7 +11,7 @@ fsel(u32 *frD, void *frA, u32 *frB, u32 *frC) | |||
11 | FP_DECL_D(A); | 11 | FP_DECL_D(A); |
12 | 12 | ||
13 | #ifdef DEBUG | 13 | #ifdef DEBUG |
14 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frA, frB, frC); | 14 | printk("%s: %p %p %p %p\n", __func__, frD, frA, frB, frC); |
15 | #endif | 15 | #endif |
16 | 16 | ||
17 | __FP_UNPACK_D(A, frA); | 17 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fsqrt.c b/arch/powerpc/math-emu/fsqrt.c index 6f8319f64a8a..38ec2b752e9d 100644 --- a/arch/powerpc/math-emu/fsqrt.c +++ b/arch/powerpc/math-emu/fsqrt.c | |||
@@ -13,7 +13,7 @@ fsqrt(void *frD, void *frB) | |||
13 | int ret = 0; | 13 | int ret = 0; |
14 | 14 | ||
15 | #ifdef DEBUG | 15 | #ifdef DEBUG |
16 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frB); | 16 | printk("%s: %p %p %p %p\n", __func__, frD, frB); |
17 | #endif | 17 | #endif |
18 | 18 | ||
19 | __FP_UNPACK_D(B, frB); | 19 | __FP_UNPACK_D(B, frB); |
diff --git a/arch/powerpc/math-emu/fsqrts.c b/arch/powerpc/math-emu/fsqrts.c index 3b2b1cf55c12..335263e06ee5 100644 --- a/arch/powerpc/math-emu/fsqrts.c +++ b/arch/powerpc/math-emu/fsqrts.c | |||
@@ -14,7 +14,7 @@ fsqrts(void *frD, void *frB) | |||
14 | int ret = 0; | 14 | int ret = 0; |
15 | 15 | ||
16 | #ifdef DEBUG | 16 | #ifdef DEBUG |
17 | printk("%s: %p %p %p %p\n", __FUNCTION__, frD, frB); | 17 | printk("%s: %p %p %p %p\n", __func__, frD, frB); |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | __FP_UNPACK_D(B, frB); | 20 | __FP_UNPACK_D(B, frB); |
diff --git a/arch/powerpc/math-emu/fsub.c b/arch/powerpc/math-emu/fsub.c index 956679042bb2..208d20fc52a5 100644 --- a/arch/powerpc/math-emu/fsub.c +++ b/arch/powerpc/math-emu/fsub.c | |||
@@ -14,7 +14,7 @@ fsub(void *frD, void *frA, void *frB) | |||
14 | int ret = 0; | 14 | int ret = 0; |
15 | 15 | ||
16 | #ifdef DEBUG | 16 | #ifdef DEBUG |
17 | printk("%s: %p %p %p\n", __FUNCTION__, frD, frA, frB); | 17 | printk("%s: %p %p %p\n", __func__, frD, frA, frB); |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | __FP_UNPACK_D(A, frA); | 20 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/fsubs.c b/arch/powerpc/math-emu/fsubs.c index 3428117dfe8c..0e61b808c44b 100644 --- a/arch/powerpc/math-emu/fsubs.c +++ b/arch/powerpc/math-emu/fsubs.c | |||
@@ -15,7 +15,7 @@ fsubs(void *frD, void *frA, void *frB) | |||
15 | int ret = 0; | 15 | int ret = 0; |
16 | 16 | ||
17 | #ifdef DEBUG | 17 | #ifdef DEBUG |
18 | printk("%s: %p %p %p\n", __FUNCTION__, frD, frA, frB); | 18 | printk("%s: %p %p %p\n", __func__, frD, frA, frB); |
19 | #endif | 19 | #endif |
20 | 20 | ||
21 | __FP_UNPACK_D(A, frA); | 21 | __FP_UNPACK_D(A, frA); |
diff --git a/arch/powerpc/math-emu/lfd.c b/arch/powerpc/math-emu/lfd.c index 7d38101c329b..6ec90b57c61a 100644 --- a/arch/powerpc/math-emu/lfd.c +++ b/arch/powerpc/math-emu/lfd.c | |||
@@ -11,7 +11,7 @@ lfd(void *frD, void *ea) | |||
11 | if (copy_from_user(frD, ea, sizeof(double))) | 11 | if (copy_from_user(frD, ea, sizeof(double))) |
12 | return -EFAULT; | 12 | return -EFAULT; |
13 | #ifdef DEBUG | 13 | #ifdef DEBUG |
14 | printk("%s: D %p, ea %p: ", __FUNCTION__, frD, ea); | 14 | printk("%s: D %p, ea %p: ", __func__, frD, ea); |
15 | dump_double(frD); | 15 | dump_double(frD); |
16 | printk("\n"); | 16 | printk("\n"); |
17 | #endif | 17 | #endif |
diff --git a/arch/powerpc/math-emu/lfs.c b/arch/powerpc/math-emu/lfs.c index c86dee3d7655..6f18ebe3a7ff 100644 --- a/arch/powerpc/math-emu/lfs.c +++ b/arch/powerpc/math-emu/lfs.c | |||
@@ -14,7 +14,7 @@ lfs(void *frD, void *ea) | |||
14 | float f; | 14 | float f; |
15 | 15 | ||
16 | #ifdef DEBUG | 16 | #ifdef DEBUG |
17 | printk("%s: D %p, ea %p\n", __FUNCTION__, frD, ea); | 17 | printk("%s: D %p, ea %p\n", __func__, frD, ea); |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | if (copy_from_user(&f, ea, sizeof(float))) | 20 | if (copy_from_user(&f, ea, sizeof(float))) |
diff --git a/arch/powerpc/math-emu/mcrfs.c b/arch/powerpc/math-emu/mcrfs.c index 106dd912914b..41ba247faf89 100644 --- a/arch/powerpc/math-emu/mcrfs.c +++ b/arch/powerpc/math-emu/mcrfs.c | |||
@@ -10,7 +10,7 @@ mcrfs(u32 *ccr, u32 crfD, u32 crfS) | |||
10 | u32 value, clear; | 10 | u32 value, clear; |
11 | 11 | ||
12 | #ifdef DEBUG | 12 | #ifdef DEBUG |
13 | printk("%s: %p (%08x) %d %d\n", __FUNCTION__, ccr, *ccr, crfD, crfS); | 13 | printk("%s: %p (%08x) %d %d\n", __func__, ccr, *ccr, crfD, crfS); |
14 | #endif | 14 | #endif |
15 | 15 | ||
16 | clear = 15 << ((7 - crfS) << 2); | 16 | clear = 15 << ((7 - crfS) << 2); |
@@ -24,7 +24,7 @@ mcrfs(u32 *ccr, u32 crfD, u32 crfS) | |||
24 | *ccr |= (value << ((7 - crfD) << 2)); | 24 | *ccr |= (value << ((7 - crfD) << 2)); |
25 | 25 | ||
26 | #ifdef DEBUG | 26 | #ifdef DEBUG |
27 | printk("CR: %08x\n", __FUNCTION__, *ccr); | 27 | printk("CR: %08x\n", __func__, *ccr); |
28 | #endif | 28 | #endif |
29 | 29 | ||
30 | return 0; | 30 | return 0; |
diff --git a/arch/powerpc/math-emu/mffs.c b/arch/powerpc/math-emu/mffs.c index f477c9170e75..b0e2106e6eb6 100644 --- a/arch/powerpc/math-emu/mffs.c +++ b/arch/powerpc/math-emu/mffs.c | |||
@@ -10,7 +10,7 @@ mffs(u32 *frD) | |||
10 | frD[1] = __FPU_FPSCR; | 10 | frD[1] = __FPU_FPSCR; |
11 | 11 | ||
12 | #ifdef DEBUG | 12 | #ifdef DEBUG |
13 | printk("%s: frD %p: %08x.%08x\n", __FUNCTION__, frD, frD[0], frD[1]); | 13 | printk("%s: frD %p: %08x.%08x\n", __func__, frD, frD[0], frD[1]); |
14 | #endif | 14 | #endif |
15 | 15 | ||
16 | return 0; | 16 | return 0; |
diff --git a/arch/powerpc/math-emu/mtfsb0.c b/arch/powerpc/math-emu/mtfsb0.c index 99bfd80f4af3..d3062350ea21 100644 --- a/arch/powerpc/math-emu/mtfsb0.c +++ b/arch/powerpc/math-emu/mtfsb0.c | |||
@@ -11,7 +11,7 @@ mtfsb0(int crbD) | |||
11 | __FPU_FPSCR &= ~(1 << (31 - crbD)); | 11 | __FPU_FPSCR &= ~(1 << (31 - crbD)); |
12 | 12 | ||
13 | #ifdef DEBUG | 13 | #ifdef DEBUG |
14 | printk("%s: %d %08lx\n", __FUNCTION__, crbD, __FPU_FPSCR); | 14 | printk("%s: %d %08lx\n", __func__, crbD, __FPU_FPSCR); |
15 | #endif | 15 | #endif |
16 | 16 | ||
17 | return 0; | 17 | return 0; |
diff --git a/arch/powerpc/math-emu/mtfsb1.c b/arch/powerpc/math-emu/mtfsb1.c index 3d9e7ed92d2b..2e948704b56e 100644 --- a/arch/powerpc/math-emu/mtfsb1.c +++ b/arch/powerpc/math-emu/mtfsb1.c | |||
@@ -11,7 +11,7 @@ mtfsb1(int crbD) | |||
11 | __FPU_FPSCR |= (1 << (31 - crbD)); | 11 | __FPU_FPSCR |= (1 << (31 - crbD)); |
12 | 12 | ||
13 | #ifdef DEBUG | 13 | #ifdef DEBUG |
14 | printk("%s: %d %08lx\n", __FUNCTION__, crbD, __FPU_FPSCR); | 14 | printk("%s: %d %08lx\n", __func__, crbD, __FPU_FPSCR); |
15 | #endif | 15 | #endif |
16 | 16 | ||
17 | return 0; | 17 | return 0; |
diff --git a/arch/powerpc/math-emu/mtfsf.c b/arch/powerpc/math-emu/mtfsf.c index d70cf714994c..48014d8e3af1 100644 --- a/arch/powerpc/math-emu/mtfsf.c +++ b/arch/powerpc/math-emu/mtfsf.c | |||
@@ -38,7 +38,7 @@ mtfsf(unsigned int FM, u32 *frB) | |||
38 | __FPU_FPSCR |= (frB[1] & mask); | 38 | __FPU_FPSCR |= (frB[1] & mask); |
39 | 39 | ||
40 | #ifdef DEBUG | 40 | #ifdef DEBUG |
41 | printk("%s: %02x %p: %08lx\n", __FUNCTION__, FM, frB, __FPU_FPSCR); | 41 | printk("%s: %02x %p: %08lx\n", __func__, FM, frB, __FPU_FPSCR); |
42 | #endif | 42 | #endif |
43 | 43 | ||
44 | return 0; | 44 | return 0; |
diff --git a/arch/powerpc/math-emu/mtfsfi.c b/arch/powerpc/math-emu/mtfsfi.c index 71df854baa7e..031e20093549 100644 --- a/arch/powerpc/math-emu/mtfsfi.c +++ b/arch/powerpc/math-emu/mtfsfi.c | |||
@@ -16,7 +16,7 @@ mtfsfi(unsigned int crfD, unsigned int IMM) | |||
16 | __FPU_FPSCR |= (IMM & 0xf) << ((7 - crfD) << 2); | 16 | __FPU_FPSCR |= (IMM & 0xf) << ((7 - crfD) << 2); |
17 | 17 | ||
18 | #ifdef DEBUG | 18 | #ifdef DEBUG |
19 | printk("%s: %d %x: %08lx\n", __FUNCTION__, crfD, IMM, __FPU_FPSCR); | 19 | printk("%s: %d %x: %08lx\n", __func__, crfD, IMM, __FPU_FPSCR); |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | return 0; | 22 | return 0; |
diff --git a/arch/powerpc/math-emu/stfd.c b/arch/powerpc/math-emu/stfd.c index 3f8c2558a9e8..33a165c8df0f 100644 --- a/arch/powerpc/math-emu/stfd.c +++ b/arch/powerpc/math-emu/stfd.c | |||
@@ -7,7 +7,7 @@ stfd(void *frS, void *ea) | |||
7 | { | 7 | { |
8 | #if 0 | 8 | #if 0 |
9 | #ifdef DEBUG | 9 | #ifdef DEBUG |
10 | printk("%s: S %p, ea %p: ", __FUNCTION__, frS, ea); | 10 | printk("%s: S %p, ea %p: ", __func__, frS, ea); |
11 | dump_double(frS); | 11 | dump_double(frS); |
12 | printk("\n"); | 12 | printk("\n"); |
13 | #endif | 13 | #endif |
diff --git a/arch/powerpc/math-emu/stfiwx.c b/arch/powerpc/math-emu/stfiwx.c index 95caaeec6a08..f15a35f67e2c 100644 --- a/arch/powerpc/math-emu/stfiwx.c +++ b/arch/powerpc/math-emu/stfiwx.c | |||
@@ -6,7 +6,7 @@ int | |||
6 | stfiwx(u32 *frS, void *ea) | 6 | stfiwx(u32 *frS, void *ea) |
7 | { | 7 | { |
8 | #ifdef DEBUG | 8 | #ifdef DEBUG |
9 | printk("%s: %p %p\n", __FUNCTION__, frS, ea); | 9 | printk("%s: %p %p\n", __func__, frS, ea); |
10 | #endif | 10 | #endif |
11 | 11 | ||
12 | if (copy_to_user(ea, &frS[1], sizeof(frS[1]))) | 12 | if (copy_to_user(ea, &frS[1], sizeof(frS[1]))) |
diff --git a/arch/powerpc/math-emu/stfs.c b/arch/powerpc/math-emu/stfs.c index e87ca23c6dc3..8689aa48ef69 100644 --- a/arch/powerpc/math-emu/stfs.c +++ b/arch/powerpc/math-emu/stfs.c | |||
@@ -15,7 +15,7 @@ stfs(void *frS, void *ea) | |||
15 | int err; | 15 | int err; |
16 | 16 | ||
17 | #ifdef DEBUG | 17 | #ifdef DEBUG |
18 | printk("%s: S %p, ea %p\n", __FUNCTION__, frS, ea); | 18 | printk("%s: S %p, ea %p\n", __func__, frS, ea); |
19 | #endif | 19 | #endif |
20 | 20 | ||
21 | __FP_UNPACK_D(A, frS); | 21 | __FP_UNPACK_D(A, frS); |
diff --git a/arch/powerpc/mm/40x_mmu.c b/arch/powerpc/mm/40x_mmu.c index 3899ea97fbdf..cecbbc76f624 100644 --- a/arch/powerpc/mm/40x_mmu.c +++ b/arch/powerpc/mm/40x_mmu.c | |||
@@ -97,7 +97,7 @@ unsigned long __init mmu_mapin_ram(void) | |||
97 | phys_addr_t p; | 97 | phys_addr_t p; |
98 | 98 | ||
99 | v = KERNELBASE; | 99 | v = KERNELBASE; |
100 | p = PPC_MEMSTART; | 100 | p = 0; |
101 | s = total_lowmem; | 101 | s = total_lowmem; |
102 | 102 | ||
103 | if (__map_without_ltlbs) | 103 | if (__map_without_ltlbs) |
diff --git a/arch/powerpc/mm/44x_mmu.c b/arch/powerpc/mm/44x_mmu.c index 04dc08798d3d..953fb919eb06 100644 --- a/arch/powerpc/mm/44x_mmu.c +++ b/arch/powerpc/mm/44x_mmu.c | |||
@@ -67,7 +67,7 @@ unsigned long __init mmu_mapin_ram(void) | |||
67 | 67 | ||
68 | /* Pin in enough TLBs to cover any lowmem not covered by the | 68 | /* Pin in enough TLBs to cover any lowmem not covered by the |
69 | * initial 256M mapping established in head_44x.S */ | 69 | * initial 256M mapping established in head_44x.S */ |
70 | for (addr = PPC_PIN_SIZE; addr < total_lowmem; | 70 | for (addr = PPC_PIN_SIZE; addr < lowmem_end_addr; |
71 | addr += PPC_PIN_SIZE) | 71 | addr += PPC_PIN_SIZE) |
72 | ppc44x_pin_tlb(addr + PAGE_OFFSET, addr); | 72 | ppc44x_pin_tlb(addr + PAGE_OFFSET, addr); |
73 | 73 | ||
diff --git a/arch/powerpc/mm/Makefile b/arch/powerpc/mm/Makefile index 41649a5d3602..1c00e0196f6c 100644 --- a/arch/powerpc/mm/Makefile +++ b/arch/powerpc/mm/Makefile | |||
@@ -6,7 +6,7 @@ ifeq ($(CONFIG_PPC64),y) | |||
6 | EXTRA_CFLAGS += -mno-minimal-toc | 6 | EXTRA_CFLAGS += -mno-minimal-toc |
7 | endif | 7 | endif |
8 | 8 | ||
9 | obj-y := fault.o mem.o lmb.o \ | 9 | obj-y := fault.o mem.o \ |
10 | init_$(CONFIG_WORD_SIZE).o \ | 10 | init_$(CONFIG_WORD_SIZE).o \ |
11 | pgtable_$(CONFIG_WORD_SIZE).o \ | 11 | pgtable_$(CONFIG_WORD_SIZE).o \ |
12 | mmu_context_$(CONFIG_WORD_SIZE).o | 12 | mmu_context_$(CONFIG_WORD_SIZE).o |
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c index c93a966b7e4b..ada249bf9779 100644 --- a/arch/powerpc/mm/fsl_booke_mmu.c +++ b/arch/powerpc/mm/fsl_booke_mmu.c | |||
@@ -49,18 +49,15 @@ | |||
49 | #include <asm/mmu.h> | 49 | #include <asm/mmu.h> |
50 | #include <asm/uaccess.h> | 50 | #include <asm/uaccess.h> |
51 | #include <asm/smp.h> | 51 | #include <asm/smp.h> |
52 | #include <asm/bootx.h> | ||
53 | #include <asm/machdep.h> | 52 | #include <asm/machdep.h> |
54 | #include <asm/setup.h> | 53 | #include <asm/setup.h> |
55 | 54 | ||
55 | #include "mmu_decl.h" | ||
56 | |||
56 | extern void loadcam_entry(unsigned int index); | 57 | extern void loadcam_entry(unsigned int index); |
57 | unsigned int tlbcam_index; | 58 | unsigned int tlbcam_index; |
58 | unsigned int num_tlbcam_entries; | 59 | unsigned int num_tlbcam_entries; |
59 | static unsigned long __cam0, __cam1, __cam2; | 60 | static unsigned long __cam0, __cam1, __cam2; |
60 | extern unsigned long total_lowmem; | ||
61 | extern unsigned long __max_low_memory; | ||
62 | extern unsigned long __initial_memory_limit; | ||
63 | #define MAX_LOW_MEM CONFIG_LOWMEM_SIZE | ||
64 | 61 | ||
65 | #define NUM_TLBCAMS (16) | 62 | #define NUM_TLBCAMS (16) |
66 | 63 | ||
@@ -165,15 +162,15 @@ void invalidate_tlbcam_entry(int index) | |||
165 | void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1, | 162 | void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1, |
166 | unsigned long cam2) | 163 | unsigned long cam2) |
167 | { | 164 | { |
168 | settlbcam(0, PAGE_OFFSET, PPC_MEMSTART, cam0, _PAGE_KERNEL, 0); | 165 | settlbcam(0, PAGE_OFFSET, memstart_addr, cam0, _PAGE_KERNEL, 0); |
169 | tlbcam_index++; | 166 | tlbcam_index++; |
170 | if (cam1) { | 167 | if (cam1) { |
171 | tlbcam_index++; | 168 | tlbcam_index++; |
172 | settlbcam(1, PAGE_OFFSET+cam0, PPC_MEMSTART+cam0, cam1, _PAGE_KERNEL, 0); | 169 | settlbcam(1, PAGE_OFFSET+cam0, memstart_addr+cam0, cam1, _PAGE_KERNEL, 0); |
173 | } | 170 | } |
174 | if (cam2) { | 171 | if (cam2) { |
175 | tlbcam_index++; | 172 | tlbcam_index++; |
176 | settlbcam(2, PAGE_OFFSET+cam0+cam1, PPC_MEMSTART+cam0+cam1, cam2, _PAGE_KERNEL, 0); | 173 | settlbcam(2, PAGE_OFFSET+cam0+cam1, memstart_addr+cam0+cam1, cam2, _PAGE_KERNEL, 0); |
177 | } | 174 | } |
178 | } | 175 | } |
179 | 176 | ||
@@ -196,35 +193,32 @@ unsigned long __init mmu_mapin_ram(void) | |||
196 | void __init | 193 | void __init |
197 | adjust_total_lowmem(void) | 194 | adjust_total_lowmem(void) |
198 | { | 195 | { |
199 | unsigned long max_low_mem = MAX_LOW_MEM; | 196 | phys_addr_t max_lowmem_size = __max_low_memory; |
200 | unsigned long cam_max = 0x10000000; | 197 | phys_addr_t cam_max_size = 0x10000000; |
201 | unsigned long ram; | 198 | phys_addr_t ram; |
202 | 199 | ||
203 | /* adjust CAM size to max_low_mem */ | 200 | /* adjust CAM size to max_lowmem_size */ |
204 | if (max_low_mem < cam_max) | 201 | if (max_lowmem_size < cam_max_size) |
205 | cam_max = max_low_mem; | 202 | cam_max_size = max_lowmem_size; |
206 | 203 | ||
207 | /* adjust lowmem size to max_low_mem */ | 204 | /* adjust lowmem size to max_lowmem_size */ |
208 | if (max_low_mem < total_lowmem) | 205 | ram = min(max_lowmem_size, total_lowmem); |
209 | ram = max_low_mem; | ||
210 | else | ||
211 | ram = total_lowmem; | ||
212 | 206 | ||
213 | /* Calculate CAM values */ | 207 | /* Calculate CAM values */ |
214 | __cam0 = 1UL << 2 * (__ilog2(ram) / 2); | 208 | __cam0 = 1UL << 2 * (__ilog2(ram) / 2); |
215 | if (__cam0 > cam_max) | 209 | if (__cam0 > cam_max_size) |
216 | __cam0 = cam_max; | 210 | __cam0 = cam_max_size; |
217 | ram -= __cam0; | 211 | ram -= __cam0; |
218 | if (ram) { | 212 | if (ram) { |
219 | __cam1 = 1UL << 2 * (__ilog2(ram) / 2); | 213 | __cam1 = 1UL << 2 * (__ilog2(ram) / 2); |
220 | if (__cam1 > cam_max) | 214 | if (__cam1 > cam_max_size) |
221 | __cam1 = cam_max; | 215 | __cam1 = cam_max_size; |
222 | ram -= __cam1; | 216 | ram -= __cam1; |
223 | } | 217 | } |
224 | if (ram) { | 218 | if (ram) { |
225 | __cam2 = 1UL << 2 * (__ilog2(ram) / 2); | 219 | __cam2 = 1UL << 2 * (__ilog2(ram) / 2); |
226 | if (__cam2 > cam_max) | 220 | if (__cam2 > cam_max_size) |
227 | __cam2 = cam_max; | 221 | __cam2 = cam_max_size; |
228 | ram -= __cam2; | 222 | ram -= __cam2; |
229 | } | 223 | } |
230 | 224 | ||
@@ -232,6 +226,6 @@ adjust_total_lowmem(void) | |||
232 | " CAM2=%ldMb residual: %ldMb\n", | 226 | " CAM2=%ldMb residual: %ldMb\n", |
233 | __cam0 >> 20, __cam1 >> 20, __cam2 >> 20, | 227 | __cam0 >> 20, __cam1 >> 20, __cam2 >> 20, |
234 | (total_lowmem - __cam0 - __cam1 - __cam2) >> 20); | 228 | (total_lowmem - __cam0 - __cam1 - __cam2) >> 20); |
235 | __max_low_memory = max_low_mem = __cam0 + __cam1 + __cam2; | 229 | __max_low_memory = __cam0 + __cam1 + __cam2; |
236 | __initial_memory_limit = __max_low_memory; | 230 | __initial_memory_limit_addr = memstart_addr + __max_low_memory; |
237 | } | 231 | } |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index a83dfa3cf40c..2b5a399f6fa6 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/cache.h> | 31 | #include <linux/cache.h> |
32 | #include <linux/init.h> | 32 | #include <linux/init.h> |
33 | #include <linux/signal.h> | 33 | #include <linux/signal.h> |
34 | #include <linux/lmb.h> | ||
34 | 35 | ||
35 | #include <asm/processor.h> | 36 | #include <asm/processor.h> |
36 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
@@ -41,7 +42,7 @@ | |||
41 | #include <asm/system.h> | 42 | #include <asm/system.h> |
42 | #include <asm/uaccess.h> | 43 | #include <asm/uaccess.h> |
43 | #include <asm/machdep.h> | 44 | #include <asm/machdep.h> |
44 | #include <asm/lmb.h> | 45 | #include <asm/prom.h> |
45 | #include <asm/abs_addr.h> | 46 | #include <asm/abs_addr.h> |
46 | #include <asm/tlbflush.h> | 47 | #include <asm/tlbflush.h> |
47 | #include <asm/io.h> | 48 | #include <asm/io.h> |
@@ -191,6 +192,29 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend, | |||
191 | return ret < 0 ? ret : 0; | 192 | return ret < 0 ? ret : 0; |
192 | } | 193 | } |
193 | 194 | ||
195 | #ifdef CONFIG_MEMORY_HOTPLUG | ||
196 | static int htab_remove_mapping(unsigned long vstart, unsigned long vend, | ||
197 | int psize, int ssize) | ||
198 | { | ||
199 | unsigned long vaddr; | ||
200 | unsigned int step, shift; | ||
201 | |||
202 | shift = mmu_psize_defs[psize].shift; | ||
203 | step = 1 << shift; | ||
204 | |||
205 | if (!ppc_md.hpte_removebolted) { | ||
206 | printk(KERN_WARNING "Platform doesn't implement " | ||
207 | "hpte_removebolted\n"); | ||
208 | return -EINVAL; | ||
209 | } | ||
210 | |||
211 | for (vaddr = vstart; vaddr < vend; vaddr += step) | ||
212 | ppc_md.hpte_removebolted(vaddr, psize, ssize); | ||
213 | |||
214 | return 0; | ||
215 | } | ||
216 | #endif /* CONFIG_MEMORY_HOTPLUG */ | ||
217 | |||
194 | static int __init htab_dt_scan_seg_sizes(unsigned long node, | 218 | static int __init htab_dt_scan_seg_sizes(unsigned long node, |
195 | const char *uname, int depth, | 219 | const char *uname, int depth, |
196 | void *data) | 220 | void *data) |
@@ -434,6 +458,12 @@ void create_section_mapping(unsigned long start, unsigned long end) | |||
434 | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_COHERENT | PP_RWXX, | 458 | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_COHERENT | PP_RWXX, |
435 | mmu_linear_psize, mmu_kernel_ssize)); | 459 | mmu_linear_psize, mmu_kernel_ssize)); |
436 | } | 460 | } |
461 | |||
462 | int remove_section_mapping(unsigned long start, unsigned long end) | ||
463 | { | ||
464 | return htab_remove_mapping(start, end, mmu_linear_psize, | ||
465 | mmu_kernel_ssize); | ||
466 | } | ||
437 | #endif /* CONFIG_MEMORY_HOTPLUG */ | 467 | #endif /* CONFIG_MEMORY_HOTPLUG */ |
438 | 468 | ||
439 | static inline void make_bl(unsigned int *insn_addr, void *func) | 469 | static inline void make_bl(unsigned int *insn_addr, void *func) |
diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c index 977cb1ee5e72..47325f23c51f 100644 --- a/arch/powerpc/mm/init_32.c +++ b/arch/powerpc/mm/init_32.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/highmem.h> | 30 | #include <linux/highmem.h> |
31 | #include <linux/initrd.h> | 31 | #include <linux/initrd.h> |
32 | #include <linux/pagemap.h> | 32 | #include <linux/pagemap.h> |
33 | #include <linux/lmb.h> | ||
33 | 34 | ||
34 | #include <asm/pgalloc.h> | 35 | #include <asm/pgalloc.h> |
35 | #include <asm/prom.h> | 36 | #include <asm/prom.h> |
@@ -41,7 +42,6 @@ | |||
41 | #include <asm/machdep.h> | 42 | #include <asm/machdep.h> |
42 | #include <asm/btext.h> | 43 | #include <asm/btext.h> |
43 | #include <asm/tlb.h> | 44 | #include <asm/tlb.h> |
44 | #include <asm/lmb.h> | ||
45 | #include <asm/sections.h> | 45 | #include <asm/sections.h> |
46 | 46 | ||
47 | #include "mmu_decl.h" | 47 | #include "mmu_decl.h" |
@@ -59,8 +59,8 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | |||
59 | unsigned long total_memory; | 59 | unsigned long total_memory; |
60 | unsigned long total_lowmem; | 60 | unsigned long total_lowmem; |
61 | 61 | ||
62 | unsigned long ppc_memstart; | 62 | phys_addr_t memstart_addr; |
63 | unsigned long ppc_memoffset = PAGE_OFFSET; | 63 | phys_addr_t lowmem_end_addr; |
64 | 64 | ||
65 | int boot_mapsize; | 65 | int boot_mapsize; |
66 | #ifdef CONFIG_PPC_PMAC | 66 | #ifdef CONFIG_PPC_PMAC |
@@ -95,10 +95,10 @@ int __map_without_ltlbs; | |||
95 | unsigned long __max_low_memory = MAX_LOW_MEM; | 95 | unsigned long __max_low_memory = MAX_LOW_MEM; |
96 | 96 | ||
97 | /* | 97 | /* |
98 | * limit of what is accessible with initial MMU setup - | 98 | * address of the limit of what is accessible with initial MMU setup - |
99 | * 256MB usually, but only 16MB on 601. | 99 | * 256MB usually, but only 16MB on 601. |
100 | */ | 100 | */ |
101 | unsigned long __initial_memory_limit = 0x10000000; | 101 | phys_addr_t __initial_memory_limit_addr = (phys_addr_t)0x10000000; |
102 | 102 | ||
103 | /* | 103 | /* |
104 | * Check for command-line options that affect what MMU_init will do. | 104 | * Check for command-line options that affect what MMU_init will do. |
@@ -131,10 +131,10 @@ void __init MMU_init(void) | |||
131 | 131 | ||
132 | /* 601 can only access 16MB at the moment */ | 132 | /* 601 can only access 16MB at the moment */ |
133 | if (PVR_VER(mfspr(SPRN_PVR)) == 1) | 133 | if (PVR_VER(mfspr(SPRN_PVR)) == 1) |
134 | __initial_memory_limit = 0x01000000; | 134 | __initial_memory_limit_addr = 0x01000000; |
135 | /* 8xx can only access 8MB at the moment */ | 135 | /* 8xx can only access 8MB at the moment */ |
136 | if (PVR_VER(mfspr(SPRN_PVR)) == 0x50) | 136 | if (PVR_VER(mfspr(SPRN_PVR)) == 0x50) |
137 | __initial_memory_limit = 0x00800000; | 137 | __initial_memory_limit_addr = 0x00800000; |
138 | 138 | ||
139 | /* parse args from command line */ | 139 | /* parse args from command line */ |
140 | MMU_setup(); | 140 | MMU_setup(); |
@@ -145,8 +145,8 @@ void __init MMU_init(void) | |||
145 | printk(KERN_WARNING "Only using first contiguous memory region"); | 145 | printk(KERN_WARNING "Only using first contiguous memory region"); |
146 | } | 146 | } |
147 | 147 | ||
148 | total_memory = lmb_end_of_DRAM(); | 148 | total_lowmem = total_memory = lmb_end_of_DRAM() - memstart_addr; |
149 | total_lowmem = total_memory; | 149 | lowmem_end_addr = memstart_addr + total_lowmem; |
150 | 150 | ||
151 | #ifdef CONFIG_FSL_BOOKE | 151 | #ifdef CONFIG_FSL_BOOKE |
152 | /* Freescale Book-E parts expect lowmem to be mapped by fixed TLB | 152 | /* Freescale Book-E parts expect lowmem to be mapped by fixed TLB |
@@ -157,9 +157,10 @@ void __init MMU_init(void) | |||
157 | 157 | ||
158 | if (total_lowmem > __max_low_memory) { | 158 | if (total_lowmem > __max_low_memory) { |
159 | total_lowmem = __max_low_memory; | 159 | total_lowmem = __max_low_memory; |
160 | lowmem_end_addr = memstart_addr + total_lowmem; | ||
160 | #ifndef CONFIG_HIGHMEM | 161 | #ifndef CONFIG_HIGHMEM |
161 | total_memory = total_lowmem; | 162 | total_memory = total_lowmem; |
162 | lmb_enforce_memory_limit(total_lowmem); | 163 | lmb_enforce_memory_limit(lowmem_end_addr); |
163 | lmb_analyze(); | 164 | lmb_analyze(); |
164 | #endif /* CONFIG_HIGHMEM */ | 165 | #endif /* CONFIG_HIGHMEM */ |
165 | } | 166 | } |
@@ -184,8 +185,6 @@ void __init MMU_init(void) | |||
184 | /* Map in I/O resources */ | 185 | /* Map in I/O resources */ |
185 | if (ppc_md.progress) | 186 | if (ppc_md.progress) |
186 | ppc_md.progress("MMU:setio", 0x302); | 187 | ppc_md.progress("MMU:setio", 0x302); |
187 | if (ppc_md.setup_io_mappings) | ||
188 | ppc_md.setup_io_mappings(); | ||
189 | 188 | ||
190 | /* Initialize the context management stuff */ | 189 | /* Initialize the context management stuff */ |
191 | mmu_context_init(); | 190 | mmu_context_init(); |
@@ -208,7 +207,7 @@ void __init *early_get_page(void) | |||
208 | p = alloc_bootmem_pages(PAGE_SIZE); | 207 | p = alloc_bootmem_pages(PAGE_SIZE); |
209 | } else { | 208 | } else { |
210 | p = __va(lmb_alloc_base(PAGE_SIZE, PAGE_SIZE, | 209 | p = __va(lmb_alloc_base(PAGE_SIZE, PAGE_SIZE, |
211 | __initial_memory_limit)); | 210 | __initial_memory_limit_addr)); |
212 | } | 211 | } |
213 | return p; | 212 | return p; |
214 | } | 213 | } |
@@ -276,7 +275,7 @@ static int __init setup_kcore(void) | |||
276 | 275 | ||
277 | kcore_mem = kmalloc(sizeof(struct kcore_list), GFP_ATOMIC); | 276 | kcore_mem = kmalloc(sizeof(struct kcore_list), GFP_ATOMIC); |
278 | if (!kcore_mem) | 277 | if (!kcore_mem) |
279 | panic("%s: kmalloc failed\n", __FUNCTION__); | 278 | panic("%s: kmalloc failed\n", __func__); |
280 | 279 | ||
281 | /* must stay under 32 bits */ | 280 | /* must stay under 32 bits */ |
282 | if ( 0xfffffffful - (unsigned long)__va(base) < size) { | 281 | if ( 0xfffffffful - (unsigned long)__va(base) < size) { |
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index c0f5cff77035..698bd000f98b 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -38,11 +38,11 @@ | |||
38 | #include <linux/nodemask.h> | 38 | #include <linux/nodemask.h> |
39 | #include <linux/module.h> | 39 | #include <linux/module.h> |
40 | #include <linux/poison.h> | 40 | #include <linux/poison.h> |
41 | #include <linux/lmb.h> | ||
41 | 42 | ||
42 | #include <asm/pgalloc.h> | 43 | #include <asm/pgalloc.h> |
43 | #include <asm/page.h> | 44 | #include <asm/page.h> |
44 | #include <asm/prom.h> | 45 | #include <asm/prom.h> |
45 | #include <asm/lmb.h> | ||
46 | #include <asm/rtas.h> | 46 | #include <asm/rtas.h> |
47 | #include <asm/io.h> | 47 | #include <asm/io.h> |
48 | #include <asm/mmu_context.h> | 48 | #include <asm/mmu_context.h> |
@@ -72,8 +72,7 @@ | |||
72 | #warning TASK_SIZE is smaller than it needs to be. | 72 | #warning TASK_SIZE is smaller than it needs to be. |
73 | #endif | 73 | #endif |
74 | 74 | ||
75 | /* max amount of RAM to use */ | 75 | phys_addr_t memstart_addr; |
76 | unsigned long __max_memory; | ||
77 | 76 | ||
78 | void free_initmem(void) | 77 | void free_initmem(void) |
79 | { | 78 | { |
@@ -122,7 +121,7 @@ static int __init setup_kcore(void) | |||
122 | /* GFP_ATOMIC to avoid might_sleep warnings during boot */ | 121 | /* GFP_ATOMIC to avoid might_sleep warnings during boot */ |
123 | kcore_mem = kmalloc(sizeof(struct kcore_list), GFP_ATOMIC); | 122 | kcore_mem = kmalloc(sizeof(struct kcore_list), GFP_ATOMIC); |
124 | if (!kcore_mem) | 123 | if (!kcore_mem) |
125 | panic("%s: kmalloc failed\n", __FUNCTION__); | 124 | panic("%s: kmalloc failed\n", __func__); |
126 | 125 | ||
127 | kclist_add(kcore_mem, __va(base), size); | 126 | kclist_add(kcore_mem, __va(base), size); |
128 | } | 127 | } |
diff --git a/arch/powerpc/mm/lmb.c b/arch/powerpc/mm/lmb.c deleted file mode 100644 index 4ce23bcf8a57..000000000000 --- a/arch/powerpc/mm/lmb.c +++ /dev/null | |||
@@ -1,357 +0,0 @@ | |||
1 | /* | ||
2 | * Procedures for maintaining information about logical memory blocks. | ||
3 | * | ||
4 | * Peter Bergner, IBM Corp. June 2001. | ||
5 | * Copyright (C) 2001 Peter Bergner. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version | ||
10 | * 2 of the License, or (at your option) any later version. | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/bitops.h> | ||
16 | #include <asm/types.h> | ||
17 | #include <asm/page.h> | ||
18 | #include <asm/prom.h> | ||
19 | #include <asm/lmb.h> | ||
20 | #ifdef CONFIG_PPC32 | ||
21 | #include "mmu_decl.h" /* for __max_low_memory */ | ||
22 | #endif | ||
23 | |||
24 | #undef DEBUG | ||
25 | |||
26 | #ifdef DEBUG | ||
27 | #include <asm/udbg.h> | ||
28 | #define DBG(fmt...) udbg_printf(fmt) | ||
29 | #else | ||
30 | #define DBG(fmt...) | ||
31 | #endif | ||
32 | |||
33 | #define LMB_ALLOC_ANYWHERE 0 | ||
34 | |||
35 | struct lmb lmb; | ||
36 | |||
37 | void lmb_dump_all(void) | ||
38 | { | ||
39 | #ifdef DEBUG | ||
40 | unsigned long i; | ||
41 | |||
42 | DBG("lmb_dump_all:\n"); | ||
43 | DBG(" memory.cnt = 0x%lx\n", lmb.memory.cnt); | ||
44 | DBG(" memory.size = 0x%lx\n", lmb.memory.size); | ||
45 | for (i=0; i < lmb.memory.cnt ;i++) { | ||
46 | DBG(" memory.region[0x%x].base = 0x%lx\n", | ||
47 | i, lmb.memory.region[i].base); | ||
48 | DBG(" .size = 0x%lx\n", | ||
49 | lmb.memory.region[i].size); | ||
50 | } | ||
51 | |||
52 | DBG("\n reserved.cnt = 0x%lx\n", lmb.reserved.cnt); | ||
53 | DBG(" reserved.size = 0x%lx\n", lmb.reserved.size); | ||
54 | for (i=0; i < lmb.reserved.cnt ;i++) { | ||
55 | DBG(" reserved.region[0x%x].base = 0x%lx\n", | ||
56 | i, lmb.reserved.region[i].base); | ||
57 | DBG(" .size = 0x%lx\n", | ||
58 | lmb.reserved.region[i].size); | ||
59 | } | ||
60 | #endif /* DEBUG */ | ||
61 | } | ||
62 | |||
63 | static unsigned long __init lmb_addrs_overlap(unsigned long base1, | ||
64 | unsigned long size1, unsigned long base2, unsigned long size2) | ||
65 | { | ||
66 | return ((base1 < (base2+size2)) && (base2 < (base1+size1))); | ||
67 | } | ||
68 | |||
69 | static long __init lmb_addrs_adjacent(unsigned long base1, unsigned long size1, | ||
70 | unsigned long base2, unsigned long size2) | ||
71 | { | ||
72 | if (base2 == base1 + size1) | ||
73 | return 1; | ||
74 | else if (base1 == base2 + size2) | ||
75 | return -1; | ||
76 | |||
77 | return 0; | ||
78 | } | ||
79 | |||
80 | static long __init lmb_regions_adjacent(struct lmb_region *rgn, | ||
81 | unsigned long r1, unsigned long r2) | ||
82 | { | ||
83 | unsigned long base1 = rgn->region[r1].base; | ||
84 | unsigned long size1 = rgn->region[r1].size; | ||
85 | unsigned long base2 = rgn->region[r2].base; | ||
86 | unsigned long size2 = rgn->region[r2].size; | ||
87 | |||
88 | return lmb_addrs_adjacent(base1, size1, base2, size2); | ||
89 | } | ||
90 | |||
91 | static void __init lmb_remove_region(struct lmb_region *rgn, unsigned long r) | ||
92 | { | ||
93 | unsigned long i; | ||
94 | |||
95 | for (i = r; i < rgn->cnt - 1; i++) { | ||
96 | rgn->region[i].base = rgn->region[i + 1].base; | ||
97 | rgn->region[i].size = rgn->region[i + 1].size; | ||
98 | } | ||
99 | rgn->cnt--; | ||
100 | } | ||
101 | |||
102 | /* Assumption: base addr of region 1 < base addr of region 2 */ | ||
103 | static void __init lmb_coalesce_regions(struct lmb_region *rgn, | ||
104 | unsigned long r1, unsigned long r2) | ||
105 | { | ||
106 | rgn->region[r1].size += rgn->region[r2].size; | ||
107 | lmb_remove_region(rgn, r2); | ||
108 | } | ||
109 | |||
110 | /* This routine called with relocation disabled. */ | ||
111 | void __init lmb_init(void) | ||
112 | { | ||
113 | /* Create a dummy zero size LMB which will get coalesced away later. | ||
114 | * This simplifies the lmb_add() code below... | ||
115 | */ | ||
116 | lmb.memory.region[0].base = 0; | ||
117 | lmb.memory.region[0].size = 0; | ||
118 | lmb.memory.cnt = 1; | ||
119 | |||
120 | /* Ditto. */ | ||
121 | lmb.reserved.region[0].base = 0; | ||
122 | lmb.reserved.region[0].size = 0; | ||
123 | lmb.reserved.cnt = 1; | ||
124 | } | ||
125 | |||
126 | /* This routine may be called with relocation disabled. */ | ||
127 | void __init lmb_analyze(void) | ||
128 | { | ||
129 | int i; | ||
130 | |||
131 | lmb.memory.size = 0; | ||
132 | |||
133 | for (i = 0; i < lmb.memory.cnt; i++) | ||
134 | lmb.memory.size += lmb.memory.region[i].size; | ||
135 | } | ||
136 | |||
137 | /* This routine called with relocation disabled. */ | ||
138 | static long __init lmb_add_region(struct lmb_region *rgn, unsigned long base, | ||
139 | unsigned long size) | ||
140 | { | ||
141 | unsigned long coalesced = 0; | ||
142 | long adjacent, i; | ||
143 | |||
144 | /* First try and coalesce this LMB with another. */ | ||
145 | for (i=0; i < rgn->cnt; i++) { | ||
146 | unsigned long rgnbase = rgn->region[i].base; | ||
147 | unsigned long rgnsize = rgn->region[i].size; | ||
148 | |||
149 | if ((rgnbase == base) && (rgnsize == size)) | ||
150 | /* Already have this region, so we're done */ | ||
151 | return 0; | ||
152 | |||
153 | adjacent = lmb_addrs_adjacent(base,size,rgnbase,rgnsize); | ||
154 | if ( adjacent > 0 ) { | ||
155 | rgn->region[i].base -= size; | ||
156 | rgn->region[i].size += size; | ||
157 | coalesced++; | ||
158 | break; | ||
159 | } | ||
160 | else if ( adjacent < 0 ) { | ||
161 | rgn->region[i].size += size; | ||
162 | coalesced++; | ||
163 | break; | ||
164 | } | ||
165 | } | ||
166 | |||
167 | if ((i < rgn->cnt-1) && lmb_regions_adjacent(rgn, i, i+1) ) { | ||
168 | lmb_coalesce_regions(rgn, i, i+1); | ||
169 | coalesced++; | ||
170 | } | ||
171 | |||
172 | if (coalesced) | ||
173 | return coalesced; | ||
174 | if (rgn->cnt >= MAX_LMB_REGIONS) | ||
175 | return -1; | ||
176 | |||
177 | /* Couldn't coalesce the LMB, so add it to the sorted table. */ | ||
178 | for (i = rgn->cnt-1; i >= 0; i--) { | ||
179 | if (base < rgn->region[i].base) { | ||
180 | rgn->region[i+1].base = rgn->region[i].base; | ||
181 | rgn->region[i+1].size = rgn->region[i].size; | ||
182 | } else { | ||
183 | rgn->region[i+1].base = base; | ||
184 | rgn->region[i+1].size = size; | ||
185 | break; | ||
186 | } | ||
187 | } | ||
188 | rgn->cnt++; | ||
189 | |||
190 | return 0; | ||
191 | } | ||
192 | |||
193 | /* This routine may be called with relocation disabled. */ | ||
194 | long __init lmb_add(unsigned long base, unsigned long size) | ||
195 | { | ||
196 | struct lmb_region *_rgn = &(lmb.memory); | ||
197 | |||
198 | /* On pSeries LPAR systems, the first LMB is our RMO region. */ | ||
199 | if (base == 0) | ||
200 | lmb.rmo_size = size; | ||
201 | |||
202 | return lmb_add_region(_rgn, base, size); | ||
203 | |||
204 | } | ||
205 | |||
206 | long __init lmb_reserve(unsigned long base, unsigned long size) | ||
207 | { | ||
208 | struct lmb_region *_rgn = &(lmb.reserved); | ||
209 | |||
210 | BUG_ON(0 == size); | ||
211 | |||
212 | return lmb_add_region(_rgn, base, size); | ||
213 | } | ||
214 | |||
215 | long __init lmb_overlaps_region(struct lmb_region *rgn, unsigned long base, | ||
216 | unsigned long size) | ||
217 | { | ||
218 | unsigned long i; | ||
219 | |||
220 | for (i=0; i < rgn->cnt; i++) { | ||
221 | unsigned long rgnbase = rgn->region[i].base; | ||
222 | unsigned long rgnsize = rgn->region[i].size; | ||
223 | if ( lmb_addrs_overlap(base,size,rgnbase,rgnsize) ) { | ||
224 | break; | ||
225 | } | ||
226 | } | ||
227 | |||
228 | return (i < rgn->cnt) ? i : -1; | ||
229 | } | ||
230 | |||
231 | unsigned long __init lmb_alloc(unsigned long size, unsigned long align) | ||
232 | { | ||
233 | return lmb_alloc_base(size, align, LMB_ALLOC_ANYWHERE); | ||
234 | } | ||
235 | |||
236 | unsigned long __init lmb_alloc_base(unsigned long size, unsigned long align, | ||
237 | unsigned long max_addr) | ||
238 | { | ||
239 | unsigned long alloc; | ||
240 | |||
241 | alloc = __lmb_alloc_base(size, align, max_addr); | ||
242 | |||
243 | if (alloc == 0) | ||
244 | panic("ERROR: Failed to allocate 0x%lx bytes below 0x%lx.\n", | ||
245 | size, max_addr); | ||
246 | |||
247 | return alloc; | ||
248 | } | ||
249 | |||
250 | unsigned long __init __lmb_alloc_base(unsigned long size, unsigned long align, | ||
251 | unsigned long max_addr) | ||
252 | { | ||
253 | long i, j; | ||
254 | unsigned long base = 0; | ||
255 | |||
256 | BUG_ON(0 == size); | ||
257 | |||
258 | #ifdef CONFIG_PPC32 | ||
259 | /* On 32-bit, make sure we allocate lowmem */ | ||
260 | if (max_addr == LMB_ALLOC_ANYWHERE) | ||
261 | max_addr = __max_low_memory; | ||
262 | #endif | ||
263 | for (i = lmb.memory.cnt-1; i >= 0; i--) { | ||
264 | unsigned long lmbbase = lmb.memory.region[i].base; | ||
265 | unsigned long lmbsize = lmb.memory.region[i].size; | ||
266 | |||
267 | if (max_addr == LMB_ALLOC_ANYWHERE) | ||
268 | base = _ALIGN_DOWN(lmbbase + lmbsize - size, align); | ||
269 | else if (lmbbase < max_addr) { | ||
270 | base = min(lmbbase + lmbsize, max_addr); | ||
271 | base = _ALIGN_DOWN(base - size, align); | ||
272 | } else | ||
273 | continue; | ||
274 | |||
275 | while ((lmbbase <= base) && | ||
276 | ((j = lmb_overlaps_region(&lmb.reserved, base, size)) >= 0) ) | ||
277 | base = _ALIGN_DOWN(lmb.reserved.region[j].base - size, | ||
278 | align); | ||
279 | |||
280 | if ((base != 0) && (lmbbase <= base)) | ||
281 | break; | ||
282 | } | ||
283 | |||
284 | if (i < 0) | ||
285 | return 0; | ||
286 | |||
287 | lmb_add_region(&lmb.reserved, base, size); | ||
288 | |||
289 | return base; | ||
290 | } | ||
291 | |||
292 | /* You must call lmb_analyze() before this. */ | ||
293 | unsigned long __init lmb_phys_mem_size(void) | ||
294 | { | ||
295 | return lmb.memory.size; | ||
296 | } | ||
297 | |||
298 | unsigned long __init lmb_end_of_DRAM(void) | ||
299 | { | ||
300 | int idx = lmb.memory.cnt - 1; | ||
301 | |||
302 | return (lmb.memory.region[idx].base + lmb.memory.region[idx].size); | ||
303 | } | ||
304 | |||
305 | /* You must call lmb_analyze() after this. */ | ||
306 | void __init lmb_enforce_memory_limit(unsigned long memory_limit) | ||
307 | { | ||
308 | unsigned long i, limit; | ||
309 | struct lmb_property *p; | ||
310 | |||
311 | if (! memory_limit) | ||
312 | return; | ||
313 | |||
314 | /* Truncate the lmb regions to satisfy the memory limit. */ | ||
315 | limit = memory_limit; | ||
316 | for (i = 0; i < lmb.memory.cnt; i++) { | ||
317 | if (limit > lmb.memory.region[i].size) { | ||
318 | limit -= lmb.memory.region[i].size; | ||
319 | continue; | ||
320 | } | ||
321 | |||
322 | lmb.memory.region[i].size = limit; | ||
323 | lmb.memory.cnt = i + 1; | ||
324 | break; | ||
325 | } | ||
326 | |||
327 | if (lmb.memory.region[0].size < lmb.rmo_size) | ||
328 | lmb.rmo_size = lmb.memory.region[0].size; | ||
329 | |||
330 | /* And truncate any reserves above the limit also. */ | ||
331 | for (i = 0; i < lmb.reserved.cnt; i++) { | ||
332 | p = &lmb.reserved.region[i]; | ||
333 | |||
334 | if (p->base > memory_limit) | ||
335 | p->size = 0; | ||
336 | else if ((p->base + p->size) > memory_limit) | ||
337 | p->size = memory_limit - p->base; | ||
338 | |||
339 | if (p->size == 0) { | ||
340 | lmb_remove_region(&lmb.reserved, i); | ||
341 | i--; | ||
342 | } | ||
343 | } | ||
344 | } | ||
345 | |||
346 | int __init lmb_is_reserved(unsigned long addr) | ||
347 | { | ||
348 | int i; | ||
349 | |||
350 | for (i = 0; i < lmb.reserved.cnt; i++) { | ||
351 | unsigned long upper = lmb.reserved.region[i].base + | ||
352 | lmb.reserved.region[i].size - 1; | ||
353 | if ((addr >= lmb.reserved.region[i].base) && (addr <= upper)) | ||
354 | return 1; | ||
355 | } | ||
356 | return 0; | ||
357 | } | ||
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index be5c506779a7..16def4dcff6d 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/initrd.h> | 31 | #include <linux/initrd.h> |
32 | #include <linux/pagemap.h> | 32 | #include <linux/pagemap.h> |
33 | #include <linux/suspend.h> | 33 | #include <linux/suspend.h> |
34 | #include <linux/lmb.h> | ||
34 | 35 | ||
35 | #include <asm/pgalloc.h> | 36 | #include <asm/pgalloc.h> |
36 | #include <asm/prom.h> | 37 | #include <asm/prom.h> |
@@ -42,7 +43,6 @@ | |||
42 | #include <asm/machdep.h> | 43 | #include <asm/machdep.h> |
43 | #include <asm/btext.h> | 44 | #include <asm/btext.h> |
44 | #include <asm/tlb.h> | 45 | #include <asm/tlb.h> |
45 | #include <asm/lmb.h> | ||
46 | #include <asm/sections.h> | 46 | #include <asm/sections.h> |
47 | #include <asm/vdso.h> | 47 | #include <asm/vdso.h> |
48 | 48 | ||
@@ -111,7 +111,7 @@ int memory_add_physaddr_to_nid(u64 start) | |||
111 | } | 111 | } |
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | int __devinit arch_add_memory(int nid, u64 start, u64 size) | 114 | int arch_add_memory(int nid, u64 start, u64 size) |
115 | { | 115 | { |
116 | struct pglist_data *pgdata; | 116 | struct pglist_data *pgdata; |
117 | struct zone *zone; | 117 | struct zone *zone; |
@@ -175,7 +175,6 @@ void show_mem(void) | |||
175 | 175 | ||
176 | printk("Mem-info:\n"); | 176 | printk("Mem-info:\n"); |
177 | show_free_areas(); | 177 | show_free_areas(); |
178 | printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); | ||
179 | for_each_online_pgdat(pgdat) { | 178 | for_each_online_pgdat(pgdat) { |
180 | unsigned long flags; | 179 | unsigned long flags; |
181 | pgdat_resize_lock(pgdat, &flags); | 180 | pgdat_resize_lock(pgdat, &flags); |
@@ -217,9 +216,11 @@ void __init do_init_bootmem(void) | |||
217 | unsigned long total_pages; | 216 | unsigned long total_pages; |
218 | int boot_mapsize; | 217 | int boot_mapsize; |
219 | 218 | ||
220 | max_pfn = total_pages = lmb_end_of_DRAM() >> PAGE_SHIFT; | 219 | max_pfn = lmb_end_of_DRAM() >> PAGE_SHIFT; |
220 | total_pages = (lmb_end_of_DRAM() - memstart_addr) >> PAGE_SHIFT; | ||
221 | #ifdef CONFIG_HIGHMEM | 221 | #ifdef CONFIG_HIGHMEM |
222 | total_pages = total_lowmem >> PAGE_SHIFT; | 222 | total_pages = total_lowmem >> PAGE_SHIFT; |
223 | max_low_pfn = lowmem_end_addr >> PAGE_SHIFT; | ||
223 | #endif | 224 | #endif |
224 | 225 | ||
225 | /* | 226 | /* |
@@ -245,18 +246,18 @@ void __init do_init_bootmem(void) | |||
245 | * present. | 246 | * present. |
246 | */ | 247 | */ |
247 | #ifdef CONFIG_HIGHMEM | 248 | #ifdef CONFIG_HIGHMEM |
248 | free_bootmem_with_active_regions(0, total_lowmem >> PAGE_SHIFT); | 249 | free_bootmem_with_active_regions(0, lowmem_end_addr >> PAGE_SHIFT); |
249 | 250 | ||
250 | /* reserve the sections we're already using */ | 251 | /* reserve the sections we're already using */ |
251 | for (i = 0; i < lmb.reserved.cnt; i++) { | 252 | for (i = 0; i < lmb.reserved.cnt; i++) { |
252 | unsigned long addr = lmb.reserved.region[i].base + | 253 | unsigned long addr = lmb.reserved.region[i].base + |
253 | lmb_size_bytes(&lmb.reserved, i) - 1; | 254 | lmb_size_bytes(&lmb.reserved, i) - 1; |
254 | if (addr < total_lowmem) | 255 | if (addr < lowmem_end_addr) |
255 | reserve_bootmem(lmb.reserved.region[i].base, | 256 | reserve_bootmem(lmb.reserved.region[i].base, |
256 | lmb_size_bytes(&lmb.reserved, i), | 257 | lmb_size_bytes(&lmb.reserved, i), |
257 | BOOTMEM_DEFAULT); | 258 | BOOTMEM_DEFAULT); |
258 | else if (lmb.reserved.region[i].base < total_lowmem) { | 259 | else if (lmb.reserved.region[i].base < lowmem_end_addr) { |
259 | unsigned long adjusted_size = total_lowmem - | 260 | unsigned long adjusted_size = lowmem_end_addr - |
260 | lmb.reserved.region[i].base; | 261 | lmb.reserved.region[i].base; |
261 | reserve_bootmem(lmb.reserved.region[i].base, | 262 | reserve_bootmem(lmb.reserved.region[i].base, |
262 | adjusted_size, BOOTMEM_DEFAULT); | 263 | adjusted_size, BOOTMEM_DEFAULT); |
@@ -326,7 +327,7 @@ void __init paging_init(void) | |||
326 | (top_of_ram - total_ram) >> 20); | 327 | (top_of_ram - total_ram) >> 20); |
327 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); | 328 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); |
328 | #ifdef CONFIG_HIGHMEM | 329 | #ifdef CONFIG_HIGHMEM |
329 | max_zone_pfns[ZONE_DMA] = total_lowmem >> PAGE_SHIFT; | 330 | max_zone_pfns[ZONE_DMA] = lowmem_end_addr >> PAGE_SHIFT; |
330 | max_zone_pfns[ZONE_HIGHMEM] = top_of_ram >> PAGE_SHIFT; | 331 | max_zone_pfns[ZONE_HIGHMEM] = top_of_ram >> PAGE_SHIFT; |
331 | #else | 332 | #else |
332 | max_zone_pfns[ZONE_DMA] = top_of_ram >> PAGE_SHIFT; | 333 | max_zone_pfns[ZONE_DMA] = top_of_ram >> PAGE_SHIFT; |
@@ -381,7 +382,7 @@ void __init mem_init(void) | |||
381 | { | 382 | { |
382 | unsigned long pfn, highmem_mapnr; | 383 | unsigned long pfn, highmem_mapnr; |
383 | 384 | ||
384 | highmem_mapnr = total_lowmem >> PAGE_SHIFT; | 385 | highmem_mapnr = lowmem_end_addr >> PAGE_SHIFT; |
385 | for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { | 386 | for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { |
386 | struct page *page = pfn_to_page(pfn); | 387 | struct page *page = pfn_to_page(pfn); |
387 | if (lmb_is_reserved(pfn << PAGE_SHIFT)) | 388 | if (lmb_is_reserved(pfn << PAGE_SHIFT)) |
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h index ebfd13dc9d19..04802252a64f 100644 --- a/arch/powerpc/mm/mmu_decl.h +++ b/arch/powerpc/mm/mmu_decl.h | |||
@@ -48,9 +48,11 @@ extern unsigned int num_tlbcam_entries; | |||
48 | 48 | ||
49 | extern unsigned long ioremap_bot; | 49 | extern unsigned long ioremap_bot; |
50 | extern unsigned long __max_low_memory; | 50 | extern unsigned long __max_low_memory; |
51 | extern unsigned long __initial_memory_limit; | 51 | extern phys_addr_t __initial_memory_limit_addr; |
52 | extern unsigned long total_memory; | 52 | extern unsigned long total_memory; |
53 | extern unsigned long total_lowmem; | 53 | extern unsigned long total_lowmem; |
54 | extern phys_addr_t memstart_addr; | ||
55 | extern phys_addr_t lowmem_end_addr; | ||
54 | 56 | ||
55 | /* ...and now those things that may be slightly different between processor | 57 | /* ...and now those things that may be slightly different between processor |
56 | * architectures. -- Dan | 58 | * architectures. -- Dan |
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index a300d254aac6..1efd631211ef 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c | |||
@@ -17,8 +17,9 @@ | |||
17 | #include <linux/nodemask.h> | 17 | #include <linux/nodemask.h> |
18 | #include <linux/cpu.h> | 18 | #include <linux/cpu.h> |
19 | #include <linux/notifier.h> | 19 | #include <linux/notifier.h> |
20 | #include <linux/lmb.h> | ||
20 | #include <asm/sparsemem.h> | 21 | #include <asm/sparsemem.h> |
21 | #include <asm/lmb.h> | 22 | #include <asm/prom.h> |
22 | #include <asm/system.h> | 23 | #include <asm/system.h> |
23 | #include <asm/smp.h> | 24 | #include <asm/smp.h> |
24 | 25 | ||
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index ac3390f81900..64c44bcc68de 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c | |||
@@ -281,12 +281,13 @@ int map_page(unsigned long va, phys_addr_t pa, int flags) | |||
281 | */ | 281 | */ |
282 | void __init mapin_ram(void) | 282 | void __init mapin_ram(void) |
283 | { | 283 | { |
284 | unsigned long v, p, s, f; | 284 | unsigned long v, s, f; |
285 | phys_addr_t p; | ||
285 | int ktext; | 286 | int ktext; |
286 | 287 | ||
287 | s = mmu_mapin_ram(); | 288 | s = mmu_mapin_ram(); |
288 | v = KERNELBASE + s; | 289 | v = KERNELBASE + s; |
289 | p = PPC_MEMSTART + s; | 290 | p = memstart_addr + s; |
290 | for (; s < total_lowmem; s += PAGE_SIZE) { | 291 | for (; s < total_lowmem; s += PAGE_SIZE) { |
291 | ktext = ((char *) v >= _stext && (char *) v < etext); | 292 | ktext = ((char *) v >= _stext && (char *) v < etext); |
292 | f = ktext ?_PAGE_RAM_TEXT : _PAGE_RAM; | 293 | f = ktext ?_PAGE_RAM_TEXT : _PAGE_RAM; |
diff --git a/arch/powerpc/mm/ppc_mmu_32.c b/arch/powerpc/mm/ppc_mmu_32.c index 5c45d474cfcc..cef9f156874b 100644 --- a/arch/powerpc/mm/ppc_mmu_32.c +++ b/arch/powerpc/mm/ppc_mmu_32.c | |||
@@ -26,11 +26,11 @@ | |||
26 | #include <linux/mm.h> | 26 | #include <linux/mm.h> |
27 | #include <linux/init.h> | 27 | #include <linux/init.h> |
28 | #include <linux/highmem.h> | 28 | #include <linux/highmem.h> |
29 | #include <linux/lmb.h> | ||
29 | 30 | ||
30 | #include <asm/prom.h> | 31 | #include <asm/prom.h> |
31 | #include <asm/mmu.h> | 32 | #include <asm/mmu.h> |
32 | #include <asm/machdep.h> | 33 | #include <asm/machdep.h> |
33 | #include <asm/lmb.h> | ||
34 | 34 | ||
35 | #include "mmu_decl.h" | 35 | #include "mmu_decl.h" |
36 | 36 | ||
@@ -82,7 +82,6 @@ unsigned long __init mmu_mapin_ram(void) | |||
82 | #else | 82 | #else |
83 | unsigned long tot, bl, done; | 83 | unsigned long tot, bl, done; |
84 | unsigned long max_size = (256<<20); | 84 | unsigned long max_size = (256<<20); |
85 | unsigned long align; | ||
86 | 85 | ||
87 | if (__map_without_bats) { | 86 | if (__map_without_bats) { |
88 | printk(KERN_DEBUG "RAM mapped without BATs\n"); | 87 | printk(KERN_DEBUG "RAM mapped without BATs\n"); |
@@ -93,19 +92,13 @@ unsigned long __init mmu_mapin_ram(void) | |||
93 | 92 | ||
94 | /* Make sure we don't map a block larger than the | 93 | /* Make sure we don't map a block larger than the |
95 | smallest alignment of the physical address. */ | 94 | smallest alignment of the physical address. */ |
96 | /* alignment of PPC_MEMSTART */ | ||
97 | align = ~(PPC_MEMSTART-1) & PPC_MEMSTART; | ||
98 | /* set BAT block size to MIN(max_size, align) */ | ||
99 | if (align && align < max_size) | ||
100 | max_size = align; | ||
101 | |||
102 | tot = total_lowmem; | 95 | tot = total_lowmem; |
103 | for (bl = 128<<10; bl < max_size; bl <<= 1) { | 96 | for (bl = 128<<10; bl < max_size; bl <<= 1) { |
104 | if (bl * 2 > tot) | 97 | if (bl * 2 > tot) |
105 | break; | 98 | break; |
106 | } | 99 | } |
107 | 100 | ||
108 | setbat(2, KERNELBASE, PPC_MEMSTART, bl, _PAGE_RAM); | 101 | setbat(2, KERNELBASE, 0, bl, _PAGE_RAM); |
109 | done = (unsigned long)bat_addrs[2].limit - KERNELBASE + 1; | 102 | done = (unsigned long)bat_addrs[2].limit - KERNELBASE + 1; |
110 | if ((done < tot) && !bat_addrs[3].limit) { | 103 | if ((done < tot) && !bat_addrs[3].limit) { |
111 | /* use BAT3 to cover a bit more */ | 104 | /* use BAT3 to cover a bit more */ |
@@ -113,7 +106,7 @@ unsigned long __init mmu_mapin_ram(void) | |||
113 | for (bl = 128<<10; bl < max_size; bl <<= 1) | 106 | for (bl = 128<<10; bl < max_size; bl <<= 1) |
114 | if (bl * 2 > tot) | 107 | if (bl * 2 > tot) |
115 | break; | 108 | break; |
116 | setbat(3, KERNELBASE+done, PPC_MEMSTART+done, bl, _PAGE_RAM); | 109 | setbat(3, KERNELBASE+done, done, bl, _PAGE_RAM); |
117 | done = (unsigned long)bat_addrs[3].limit - KERNELBASE + 1; | 110 | done = (unsigned long)bat_addrs[3].limit - KERNELBASE + 1; |
118 | } | 111 | } |
119 | 112 | ||
@@ -240,7 +233,7 @@ void __init MMU_init_hw(void) | |||
240 | */ | 233 | */ |
241 | if ( ppc_md.progress ) ppc_md.progress("hash:find piece", 0x322); | 234 | if ( ppc_md.progress ) ppc_md.progress("hash:find piece", 0x322); |
242 | Hash = __va(lmb_alloc_base(Hash_size, Hash_size, | 235 | Hash = __va(lmb_alloc_base(Hash_size, Hash_size, |
243 | __initial_memory_limit)); | 236 | __initial_memory_limit_addr)); |
244 | cacheable_memzero(Hash, Hash_size); | 237 | cacheable_memzero(Hash, Hash_size); |
245 | _SDR1 = __pa(Hash) | SDR1_LOW_BITS; | 238 | _SDR1 = __pa(Hash) | SDR1_LOW_BITS; |
246 | 239 | ||
diff --git a/arch/powerpc/mm/stab.c b/arch/powerpc/mm/stab.c index 50448d5de9d2..efbbd13d93e5 100644 --- a/arch/powerpc/mm/stab.c +++ b/arch/powerpc/mm/stab.c | |||
@@ -12,12 +12,14 @@ | |||
12 | * 2 of the License, or (at your option) any later version. | 12 | * 2 of the License, or (at your option) any later version. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/lmb.h> | ||
16 | |||
15 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
16 | #include <asm/mmu.h> | 18 | #include <asm/mmu.h> |
17 | #include <asm/mmu_context.h> | 19 | #include <asm/mmu_context.h> |
18 | #include <asm/paca.h> | 20 | #include <asm/paca.h> |
19 | #include <asm/cputable.h> | 21 | #include <asm/cputable.h> |
20 | #include <asm/lmb.h> | 22 | #include <asm/prom.h> |
21 | #include <asm/abs_addr.h> | 23 | #include <asm/abs_addr.h> |
22 | #include <asm/firmware.h> | 24 | #include <asm/firmware.h> |
23 | #include <asm/iseries/hv_call.h> | 25 | #include <asm/iseries/hv_call.h> |
diff --git a/arch/powerpc/oprofile/cell/spu_task_sync.c b/arch/powerpc/oprofile/cell/spu_task_sync.c index 257b13cb18af..2a9b4a049329 100644 --- a/arch/powerpc/oprofile/cell/spu_task_sync.c +++ b/arch/powerpc/oprofile/cell/spu_task_sync.c | |||
@@ -68,7 +68,7 @@ static struct cached_info *get_cached_info(struct spu *the_spu, int spu_num) | |||
68 | if (spu_num >= num_spu_nodes) { | 68 | if (spu_num >= num_spu_nodes) { |
69 | printk(KERN_ERR "SPU_PROF: " | 69 | printk(KERN_ERR "SPU_PROF: " |
70 | "%s, line %d: Invalid index %d into spu info cache\n", | 70 | "%s, line %d: Invalid index %d into spu info cache\n", |
71 | __FUNCTION__, __LINE__, spu_num); | 71 | __func__, __LINE__, spu_num); |
72 | ret_info = NULL; | 72 | ret_info = NULL; |
73 | goto out; | 73 | goto out; |
74 | } | 74 | } |
@@ -115,7 +115,7 @@ prepare_cached_spu_info(struct spu *spu, unsigned long objectId) | |||
115 | if (!info) { | 115 | if (!info) { |
116 | printk(KERN_ERR "SPU_PROF: " | 116 | printk(KERN_ERR "SPU_PROF: " |
117 | "%s, line %d: create vma_map failed\n", | 117 | "%s, line %d: create vma_map failed\n", |
118 | __FUNCTION__, __LINE__); | 118 | __func__, __LINE__); |
119 | retval = -ENOMEM; | 119 | retval = -ENOMEM; |
120 | goto err_alloc; | 120 | goto err_alloc; |
121 | } | 121 | } |
@@ -123,7 +123,7 @@ prepare_cached_spu_info(struct spu *spu, unsigned long objectId) | |||
123 | if (!new_map) { | 123 | if (!new_map) { |
124 | printk(KERN_ERR "SPU_PROF: " | 124 | printk(KERN_ERR "SPU_PROF: " |
125 | "%s, line %d: create vma_map failed\n", | 125 | "%s, line %d: create vma_map failed\n", |
126 | __FUNCTION__, __LINE__); | 126 | __func__, __LINE__); |
127 | retval = -ENOMEM; | 127 | retval = -ENOMEM; |
128 | goto err_alloc; | 128 | goto err_alloc; |
129 | } | 129 | } |
@@ -171,7 +171,7 @@ static int release_cached_info(int spu_index) | |||
171 | printk(KERN_ERR "SPU_PROF: " | 171 | printk(KERN_ERR "SPU_PROF: " |
172 | "%s, line %d: " | 172 | "%s, line %d: " |
173 | "Invalid index %d into spu info cache\n", | 173 | "Invalid index %d into spu info cache\n", |
174 | __FUNCTION__, __LINE__, spu_index); | 174 | __func__, __LINE__, spu_index); |
175 | goto out; | 175 | goto out; |
176 | } | 176 | } |
177 | end = spu_index + 1; | 177 | end = spu_index + 1; |
@@ -273,7 +273,7 @@ fail_no_image_cookie: | |||
273 | 273 | ||
274 | printk(KERN_ERR "SPU_PROF: " | 274 | printk(KERN_ERR "SPU_PROF: " |
275 | "%s, line %d: Cannot find dcookie for SPU binary\n", | 275 | "%s, line %d: Cannot find dcookie for SPU binary\n", |
276 | __FUNCTION__, __LINE__); | 276 | __func__, __LINE__); |
277 | goto out; | 277 | goto out; |
278 | } | 278 | } |
279 | 279 | ||
@@ -467,7 +467,7 @@ int spu_sync_stop(void) | |||
467 | if (ret) { | 467 | if (ret) { |
468 | printk(KERN_ERR "SPU_PROF: " | 468 | printk(KERN_ERR "SPU_PROF: " |
469 | "%s, line %d: spu_switch_event_unregister returned %d\n", | 469 | "%s, line %d: spu_switch_event_unregister returned %d\n", |
470 | __FUNCTION__, __LINE__, ret); | 470 | __func__, __LINE__, ret); |
471 | goto out; | 471 | goto out; |
472 | } | 472 | } |
473 | 473 | ||
diff --git a/arch/powerpc/oprofile/cell/vma_map.c b/arch/powerpc/oprofile/cell/vma_map.c index 9a932177e70e..fff66662d021 100644 --- a/arch/powerpc/oprofile/cell/vma_map.c +++ b/arch/powerpc/oprofile/cell/vma_map.c | |||
@@ -72,7 +72,7 @@ vma_map_add(struct vma_to_fileoffset_map *map, unsigned int vma, | |||
72 | kzalloc(sizeof(struct vma_to_fileoffset_map), GFP_KERNEL); | 72 | kzalloc(sizeof(struct vma_to_fileoffset_map), GFP_KERNEL); |
73 | if (!new) { | 73 | if (!new) { |
74 | printk(KERN_ERR "SPU_PROF: %s, line %d: malloc failed\n", | 74 | printk(KERN_ERR "SPU_PROF: %s, line %d: malloc failed\n", |
75 | __FUNCTION__, __LINE__); | 75 | __func__, __LINE__); |
76 | vma_map_free(map); | 76 | vma_map_free(map); |
77 | return NULL; | 77 | return NULL; |
78 | } | 78 | } |
@@ -134,19 +134,19 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
134 | if (memcmp(ehdr.e_ident, expected, EI_PAD) != 0) { | 134 | if (memcmp(ehdr.e_ident, expected, EI_PAD) != 0) { |
135 | printk(KERN_ERR "SPU_PROF: " | 135 | printk(KERN_ERR "SPU_PROF: " |
136 | "%s, line %d: Unexpected e_ident parsing SPU ELF\n", | 136 | "%s, line %d: Unexpected e_ident parsing SPU ELF\n", |
137 | __FUNCTION__, __LINE__); | 137 | __func__, __LINE__); |
138 | goto fail; | 138 | goto fail; |
139 | } | 139 | } |
140 | if (ehdr.e_machine != EM_SPU) { | 140 | if (ehdr.e_machine != EM_SPU) { |
141 | printk(KERN_ERR "SPU_PROF: " | 141 | printk(KERN_ERR "SPU_PROF: " |
142 | "%s, line %d: Unexpected e_machine parsing SPU ELF\n", | 142 | "%s, line %d: Unexpected e_machine parsing SPU ELF\n", |
143 | __FUNCTION__, __LINE__); | 143 | __func__, __LINE__); |
144 | goto fail; | 144 | goto fail; |
145 | } | 145 | } |
146 | if (ehdr.e_type != ET_EXEC) { | 146 | if (ehdr.e_type != ET_EXEC) { |
147 | printk(KERN_ERR "SPU_PROF: " | 147 | printk(KERN_ERR "SPU_PROF: " |
148 | "%s, line %d: Unexpected e_type parsing SPU ELF\n", | 148 | "%s, line %d: Unexpected e_type parsing SPU ELF\n", |
149 | __FUNCTION__, __LINE__); | 149 | __func__, __LINE__); |
150 | goto fail; | 150 | goto fail; |
151 | } | 151 | } |
152 | phdr_start = spu_elf_start + ehdr.e_phoff; | 152 | phdr_start = spu_elf_start + ehdr.e_phoff; |
@@ -232,7 +232,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
232 | if (overlay_tbl_offset < 0) { | 232 | if (overlay_tbl_offset < 0) { |
233 | printk(KERN_ERR "SPU_PROF: " | 233 | printk(KERN_ERR "SPU_PROF: " |
234 | "%s, line %d: Error finding SPU overlay table\n", | 234 | "%s, line %d: Error finding SPU overlay table\n", |
235 | __FUNCTION__, __LINE__); | 235 | __func__, __LINE__); |
236 | goto fail; | 236 | goto fail; |
237 | } | 237 | } |
238 | ovly_table = spu_elf_start + overlay_tbl_offset; | 238 | ovly_table = spu_elf_start + overlay_tbl_offset; |
diff --git a/arch/powerpc/oprofile/op_model_cell.c b/arch/powerpc/oprofile/op_model_cell.c index 9eed1f68fcab..5ff4de3eb3be 100644 --- a/arch/powerpc/oprofile/op_model_cell.c +++ b/arch/powerpc/oprofile/op_model_cell.c | |||
@@ -216,7 +216,7 @@ static void pm_rtas_reset_signals(u32 node) | |||
216 | * failure to stop OProfile. | 216 | * failure to stop OProfile. |
217 | */ | 217 | */ |
218 | printk(KERN_WARNING "%s: rtas returned: %d\n", | 218 | printk(KERN_WARNING "%s: rtas returned: %d\n", |
219 | __FUNCTION__, ret); | 219 | __func__, ret); |
220 | } | 220 | } |
221 | 221 | ||
222 | static int pm_rtas_activate_signals(u32 node, u32 count) | 222 | static int pm_rtas_activate_signals(u32 node, u32 count) |
@@ -255,7 +255,7 @@ static int pm_rtas_activate_signals(u32 node, u32 count) | |||
255 | 255 | ||
256 | if (unlikely(ret)) { | 256 | if (unlikely(ret)) { |
257 | printk(KERN_WARNING "%s: rtas returned: %d\n", | 257 | printk(KERN_WARNING "%s: rtas returned: %d\n", |
258 | __FUNCTION__, ret); | 258 | __func__, ret); |
259 | return -EIO; | 259 | return -EIO; |
260 | } | 260 | } |
261 | } | 261 | } |
@@ -560,7 +560,7 @@ static int cell_reg_setup(struct op_counter_config *ctr, | |||
560 | if (unlikely(spu_rtas_token == RTAS_UNKNOWN_SERVICE)) { | 560 | if (unlikely(spu_rtas_token == RTAS_UNKNOWN_SERVICE)) { |
561 | printk(KERN_ERR | 561 | printk(KERN_ERR |
562 | "%s: rtas token ibm,cbe-spu-perftools unknown\n", | 562 | "%s: rtas token ibm,cbe-spu-perftools unknown\n", |
563 | __FUNCTION__); | 563 | __func__); |
564 | return -EIO; | 564 | return -EIO; |
565 | } | 565 | } |
566 | } | 566 | } |
@@ -576,7 +576,7 @@ static int cell_reg_setup(struct op_counter_config *ctr, | |||
576 | if (unlikely(pm_rtas_token == RTAS_UNKNOWN_SERVICE)) { | 576 | if (unlikely(pm_rtas_token == RTAS_UNKNOWN_SERVICE)) { |
577 | printk(KERN_ERR | 577 | printk(KERN_ERR |
578 | "%s: rtas token ibm,cbe-perftools unknown\n", | 578 | "%s: rtas token ibm,cbe-perftools unknown\n", |
579 | __FUNCTION__); | 579 | __func__); |
580 | return -EIO; | 580 | return -EIO; |
581 | } | 581 | } |
582 | 582 | ||
@@ -853,7 +853,7 @@ static int pm_rtas_activate_spu_profiling(u32 node) | |||
853 | 853 | ||
854 | if (unlikely(ret)) { | 854 | if (unlikely(ret)) { |
855 | printk(KERN_WARNING "%s: rtas returned: %d\n", | 855 | printk(KERN_WARNING "%s: rtas returned: %d\n", |
856 | __FUNCTION__, ret); | 856 | __func__, ret); |
857 | return -EIO; | 857 | return -EIO; |
858 | } | 858 | } |
859 | 859 | ||
@@ -949,7 +949,7 @@ static int cell_global_start_spu(struct op_counter_config *ctr) | |||
949 | if (unlikely(ret != 0)) { | 949 | if (unlikely(ret != 0)) { |
950 | printk(KERN_ERR | 950 | printk(KERN_ERR |
951 | "%s: rtas call ibm,cbe-spu-perftools failed, return = %d\n", | 951 | "%s: rtas call ibm,cbe-spu-perftools failed, return = %d\n", |
952 | __FUNCTION__, ret); | 952 | __func__, ret); |
953 | rtas_error = -EIO; | 953 | rtas_error = -EIO; |
954 | goto out; | 954 | goto out; |
955 | } | 955 | } |
@@ -1061,7 +1061,7 @@ static void cell_global_stop_spu(void) | |||
1061 | if (unlikely(rtn_value != 0)) { | 1061 | if (unlikely(rtn_value != 0)) { |
1062 | printk(KERN_ERR | 1062 | printk(KERN_ERR |
1063 | "%s: rtas call ibm,cbe-spu-perftools failed, return = %d\n", | 1063 | "%s: rtas call ibm,cbe-spu-perftools failed, return = %d\n", |
1064 | __FUNCTION__, rtn_value); | 1064 | __func__, rtn_value); |
1065 | } | 1065 | } |
1066 | 1066 | ||
1067 | /* Deactivate the signals */ | 1067 | /* Deactivate the signals */ |
diff --git a/arch/powerpc/platforms/40x/ep405.c b/arch/powerpc/platforms/40x/ep405.c index 13d1345026da..ae2e7f67c18e 100644 --- a/arch/powerpc/platforms/40x/ep405.c +++ b/arch/powerpc/platforms/40x/ep405.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <asm/time.h> | 29 | #include <asm/time.h> |
30 | #include <asm/uic.h> | 30 | #include <asm/uic.h> |
31 | #include <asm/pci-bridge.h> | 31 | #include <asm/pci-bridge.h> |
32 | #include <asm/ppc4xx.h> | ||
32 | 33 | ||
33 | static struct device_node *bcsr_node; | 34 | static struct device_node *bcsr_node; |
34 | static void __iomem *bcsr_regs; | 35 | static void __iomem *bcsr_regs; |
@@ -119,5 +120,6 @@ define_machine(ep405) { | |||
119 | .progress = udbg_progress, | 120 | .progress = udbg_progress, |
120 | .init_IRQ = uic_init_tree, | 121 | .init_IRQ = uic_init_tree, |
121 | .get_irq = uic_get_irq, | 122 | .get_irq = uic_get_irq, |
123 | .restart = ppc4xx_reset_system, | ||
122 | .calibrate_decr = generic_calibrate_decr, | 124 | .calibrate_decr = generic_calibrate_decr, |
123 | }; | 125 | }; |
diff --git a/arch/powerpc/platforms/40x/kilauea.c b/arch/powerpc/platforms/40x/kilauea.c index f9206a7fede0..1dd24ffc0dc1 100644 --- a/arch/powerpc/platforms/40x/kilauea.c +++ b/arch/powerpc/platforms/40x/kilauea.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Kilauea board specific routines | 2 | * Kilauea board specific routines |
3 | * | 3 | * |
4 | * Copyright 2007 DENX Software Engineering, Stefan Roese <sr@denx.de> | 4 | * Copyright 2007-2008 DENX Software Engineering, Stefan Roese <sr@denx.de> |
5 | * | 5 | * |
6 | * Based on the Walnut code by | 6 | * Based on the Walnut code by |
7 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | 7 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> |
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/time.h> | 20 | #include <asm/time.h> |
21 | #include <asm/uic.h> | 21 | #include <asm/uic.h> |
22 | #include <asm/pci-bridge.h> | 22 | #include <asm/pci-bridge.h> |
23 | #include <asm/ppc4xx.h> | ||
23 | 24 | ||
24 | static __initdata struct of_device_id kilauea_of_bus[] = { | 25 | static __initdata struct of_device_id kilauea_of_bus[] = { |
25 | { .compatible = "ibm,plb4", }, | 26 | { .compatible = "ibm,plb4", }, |
@@ -54,5 +55,6 @@ define_machine(kilauea) { | |||
54 | .progress = udbg_progress, | 55 | .progress = udbg_progress, |
55 | .init_IRQ = uic_init_tree, | 56 | .init_IRQ = uic_init_tree, |
56 | .get_irq = uic_get_irq, | 57 | .get_irq = uic_get_irq, |
58 | .restart = ppc4xx_reset_system, | ||
57 | .calibrate_decr = generic_calibrate_decr, | 59 | .calibrate_decr = generic_calibrate_decr, |
58 | }; | 60 | }; |
diff --git a/arch/powerpc/platforms/40x/makalu.c b/arch/powerpc/platforms/40x/makalu.c index 4e4df72fc9cd..a6a1d6017b71 100644 --- a/arch/powerpc/platforms/40x/makalu.c +++ b/arch/powerpc/platforms/40x/makalu.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/time.h> | 20 | #include <asm/time.h> |
21 | #include <asm/uic.h> | 21 | #include <asm/uic.h> |
22 | #include <asm/pci-bridge.h> | 22 | #include <asm/pci-bridge.h> |
23 | #include <asm/ppc4xx.h> | ||
23 | 24 | ||
24 | static __initdata struct of_device_id makalu_of_bus[] = { | 25 | static __initdata struct of_device_id makalu_of_bus[] = { |
25 | { .compatible = "ibm,plb4", }, | 26 | { .compatible = "ibm,plb4", }, |
@@ -54,5 +55,6 @@ define_machine(makalu) { | |||
54 | .progress = udbg_progress, | 55 | .progress = udbg_progress, |
55 | .init_IRQ = uic_init_tree, | 56 | .init_IRQ = uic_init_tree, |
56 | .get_irq = uic_get_irq, | 57 | .get_irq = uic_get_irq, |
58 | .restart = ppc4xx_reset_system, | ||
57 | .calibrate_decr = generic_calibrate_decr, | 59 | .calibrate_decr = generic_calibrate_decr, |
58 | }; | 60 | }; |
diff --git a/arch/powerpc/platforms/40x/virtex.c b/arch/powerpc/platforms/40x/virtex.c index 0422590040db..fc7fb001276c 100644 --- a/arch/powerpc/platforms/40x/virtex.c +++ b/arch/powerpc/platforms/40x/virtex.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/prom.h> | 14 | #include <asm/prom.h> |
15 | #include <asm/time.h> | 15 | #include <asm/time.h> |
16 | #include <asm/xilinx_intc.h> | 16 | #include <asm/xilinx_intc.h> |
17 | #include <asm/ppc4xx.h> | ||
17 | 18 | ||
18 | static struct of_device_id xilinx_of_bus_ids[] __initdata = { | 19 | static struct of_device_id xilinx_of_bus_ids[] __initdata = { |
19 | { .compatible = "xlnx,plb-v46-1.00.a", }, | 20 | { .compatible = "xlnx,plb-v46-1.00.a", }, |
@@ -48,5 +49,6 @@ define_machine(virtex) { | |||
48 | .probe = virtex_probe, | 49 | .probe = virtex_probe, |
49 | .init_IRQ = xilinx_intc_init_tree, | 50 | .init_IRQ = xilinx_intc_init_tree, |
50 | .get_irq = xilinx_intc_get_irq, | 51 | .get_irq = xilinx_intc_get_irq, |
52 | .restart = ppc4xx_reset_system, | ||
51 | .calibrate_decr = generic_calibrate_decr, | 53 | .calibrate_decr = generic_calibrate_decr, |
52 | }; | 54 | }; |
diff --git a/arch/powerpc/platforms/40x/walnut.c b/arch/powerpc/platforms/40x/walnut.c index b8b257efeb77..335df91fbee5 100644 --- a/arch/powerpc/platforms/40x/walnut.c +++ b/arch/powerpc/platforms/40x/walnut.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <asm/time.h> | 26 | #include <asm/time.h> |
27 | #include <asm/uic.h> | 27 | #include <asm/uic.h> |
28 | #include <asm/pci-bridge.h> | 28 | #include <asm/pci-bridge.h> |
29 | #include <asm/ppc4xx.h> | ||
29 | 30 | ||
30 | static __initdata struct of_device_id walnut_of_bus[] = { | 31 | static __initdata struct of_device_id walnut_of_bus[] = { |
31 | { .compatible = "ibm,plb3", }, | 32 | { .compatible = "ibm,plb3", }, |
@@ -61,5 +62,6 @@ define_machine(walnut) { | |||
61 | .progress = udbg_progress, | 62 | .progress = udbg_progress, |
62 | .init_IRQ = uic_init_tree, | 63 | .init_IRQ = uic_init_tree, |
63 | .get_irq = uic_get_irq, | 64 | .get_irq = uic_get_irq, |
64 | .calibrate_decr = generic_calibrate_decr, | 65 | .restart = ppc4xx_reset_system, |
66 | .calibrate_decr = generic_calibrate_decr, | ||
65 | }; | 67 | }; |
diff --git a/arch/powerpc/platforms/44x/44x.h b/arch/powerpc/platforms/44x/44x.h index 42eabf87fea3..dbc4d2b4301a 100644 --- a/arch/powerpc/platforms/44x/44x.h +++ b/arch/powerpc/platforms/44x/44x.h | |||
@@ -3,6 +3,5 @@ | |||
3 | 3 | ||
4 | extern u8 as1_readb(volatile u8 __iomem *addr); | 4 | extern u8 as1_readb(volatile u8 __iomem *addr); |
5 | extern void as1_writeb(u8 data, volatile u8 __iomem *addr); | 5 | extern void as1_writeb(u8 data, volatile u8 __iomem *addr); |
6 | extern void ppc44x_reset_system(char *cmd); | ||
7 | 6 | ||
8 | #endif /* __POWERPC_PLATFORMS_44X_44X_H */ | 7 | #endif /* __POWERPC_PLATFORMS_44X_44X_H */ |
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig index 1bfb2191010a..6abe91357eee 100644 --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig | |||
@@ -67,6 +67,25 @@ config WARP | |||
67 | See http://www.pikatechnologies.com/ and follow the "PIKA for Computer | 67 | See http://www.pikatechnologies.com/ and follow the "PIKA for Computer |
68 | Telephony Developers" link for more information. | 68 | Telephony Developers" link for more information. |
69 | 69 | ||
70 | config CANYONLANDS | ||
71 | bool "Canyonlands" | ||
72 | depends on 44x | ||
73 | default n | ||
74 | select 460EX | ||
75 | select PCI | ||
76 | select PPC4xx_PCI_EXPRESS | ||
77 | help | ||
78 | This option enables support for the AMCC PPC460EX evaluation board. | ||
79 | |||
80 | config YOSEMITE | ||
81 | bool "Yosemite" | ||
82 | depends on 44x | ||
83 | default n | ||
84 | select 440EP | ||
85 | select PCI | ||
86 | help | ||
87 | This option enables support for the AMCC PPC440EP evaluation board. | ||
88 | |||
70 | #config LUAN | 89 | #config LUAN |
71 | # bool "Luan" | 90 | # bool "Luan" |
72 | # depends on 44x | 91 | # depends on 44x |
@@ -122,6 +141,14 @@ config 440SPe | |||
122 | bool | 141 | bool |
123 | select IBM_NEW_EMAC_EMAC4 | 142 | select IBM_NEW_EMAC_EMAC4 |
124 | 143 | ||
144 | config 460EX | ||
145 | bool | ||
146 | select PPC_FPU | ||
147 | select IBM_NEW_EMAC_EMAC4 | ||
148 | select IBM_NEW_EMAC_RGMII | ||
149 | select IBM_NEW_EMAC_ZMII | ||
150 | select IBM_NEW_EMAC_TAH | ||
151 | |||
125 | # 44x errata/workaround config symbols, selected by the CPU models above | 152 | # 44x errata/workaround config symbols, selected by the CPU models above |
126 | config IBM440EP_ERR42 | 153 | config IBM440EP_ERR42 |
127 | bool | 154 | bool |
diff --git a/arch/powerpc/platforms/44x/Makefile b/arch/powerpc/platforms/44x/Makefile index 0864d4f1cbc2..774165f9acdd 100644 --- a/arch/powerpc/platforms/44x/Makefile +++ b/arch/powerpc/platforms/44x/Makefile | |||
@@ -1,9 +1,11 @@ | |||
1 | obj-$(CONFIG_44x) := misc_44x.o | 1 | obj-$(CONFIG_44x) := misc_44x.o idle.o |
2 | obj-$(CONFIG_EBONY) += ebony.o | 2 | obj-$(CONFIG_EBONY) += ebony.o |
3 | obj-$(CONFIG_TAISHAN) += taishan.o | 3 | obj-$(CONFIG_TAISHAN) += taishan.o |
4 | obj-$(CONFIG_BAMBOO) += bamboo.o | 4 | obj-$(CONFIG_BAMBOO) += bamboo.o |
5 | obj-$(CONFIG_YOSEMITE) += bamboo.o | ||
5 | obj-$(CONFIG_SEQUOIA) += sequoia.o | 6 | obj-$(CONFIG_SEQUOIA) += sequoia.o |
6 | obj-$(CONFIG_KATMAI) += katmai.o | 7 | obj-$(CONFIG_KATMAI) += katmai.o |
7 | obj-$(CONFIG_RAINIER) += rainier.o | 8 | obj-$(CONFIG_RAINIER) += rainier.o |
8 | obj-$(CONFIG_WARP) += warp.o | 9 | obj-$(CONFIG_WARP) += warp.o |
9 | obj-$(CONFIG_WARP) += warp-nand.o | 10 | obj-$(CONFIG_WARP) += warp-nand.o |
11 | obj-$(CONFIG_CANYONLANDS) += canyonlands.o | ||
diff --git a/arch/powerpc/platforms/44x/bamboo.c b/arch/powerpc/platforms/44x/bamboo.c index fb9a22a7e8d0..cef169e95156 100644 --- a/arch/powerpc/platforms/44x/bamboo.c +++ b/arch/powerpc/platforms/44x/bamboo.c | |||
@@ -22,8 +22,7 @@ | |||
22 | #include <asm/time.h> | 22 | #include <asm/time.h> |
23 | #include <asm/uic.h> | 23 | #include <asm/uic.h> |
24 | #include <asm/pci-bridge.h> | 24 | #include <asm/pci-bridge.h> |
25 | 25 | #include <asm/ppc4xx.h> | |
26 | #include "44x.h" | ||
27 | 26 | ||
28 | static __initdata struct of_device_id bamboo_of_bus[] = { | 27 | static __initdata struct of_device_id bamboo_of_bus[] = { |
29 | { .compatible = "ibm,plb4", }, | 28 | { .compatible = "ibm,plb4", }, |
@@ -53,11 +52,11 @@ static int __init bamboo_probe(void) | |||
53 | } | 52 | } |
54 | 53 | ||
55 | define_machine(bamboo) { | 54 | define_machine(bamboo) { |
56 | .name = "Bamboo", | 55 | .name = "Bamboo", |
57 | .probe = bamboo_probe, | 56 | .probe = bamboo_probe, |
58 | .progress = udbg_progress, | 57 | .progress = udbg_progress, |
59 | .init_IRQ = uic_init_tree, | 58 | .init_IRQ = uic_init_tree, |
60 | .get_irq = uic_get_irq, | 59 | .get_irq = uic_get_irq, |
61 | .restart = ppc44x_reset_system, | 60 | .restart = ppc4xx_reset_system, |
62 | .calibrate_decr = generic_calibrate_decr, | 61 | .calibrate_decr = generic_calibrate_decr, |
63 | }; | 62 | }; |
diff --git a/arch/powerpc/platforms/44x/canyonlands.c b/arch/powerpc/platforms/44x/canyonlands.c new file mode 100644 index 000000000000..3949289f51df --- /dev/null +++ b/arch/powerpc/platforms/44x/canyonlands.c | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * Canyonlands board specific routines | ||
3 | * | ||
4 | * Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
5 | * | ||
6 | * Based on the Katmai code by | ||
7 | * Benjamin Herrenschmidt <benh@kernel.crashing.org> | ||
8 | * Copyright 2007 IBM Corp. | ||
9 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
10 | * Copyright 2007 IBM Corporation | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify it | ||
13 | * under the terms of the GNU General Public License as published by the | ||
14 | * Free Software Foundation; either version 2 of the License, or (at your | ||
15 | * option) any later version. | ||
16 | */ | ||
17 | #include <linux/init.h> | ||
18 | #include <linux/of_platform.h> | ||
19 | |||
20 | #include <asm/machdep.h> | ||
21 | #include <asm/prom.h> | ||
22 | #include <asm/udbg.h> | ||
23 | #include <asm/time.h> | ||
24 | #include <asm/uic.h> | ||
25 | #include <asm/pci-bridge.h> | ||
26 | #include <asm/ppc4xx.h> | ||
27 | |||
28 | static __initdata struct of_device_id canyonlands_of_bus[] = { | ||
29 | { .compatible = "ibm,plb4", }, | ||
30 | { .compatible = "ibm,opb", }, | ||
31 | { .compatible = "ibm,ebc", }, | ||
32 | {}, | ||
33 | }; | ||
34 | |||
35 | static int __init canyonlands_device_probe(void) | ||
36 | { | ||
37 | of_platform_bus_probe(NULL, canyonlands_of_bus, NULL); | ||
38 | |||
39 | return 0; | ||
40 | } | ||
41 | machine_device_initcall(canyonlands, canyonlands_device_probe); | ||
42 | |||
43 | static int __init canyonlands_probe(void) | ||
44 | { | ||
45 | unsigned long root = of_get_flat_dt_root(); | ||
46 | |||
47 | if (!of_flat_dt_is_compatible(root, "amcc,canyonlands")) | ||
48 | return 0; | ||
49 | |||
50 | ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC; | ||
51 | |||
52 | return 1; | ||
53 | } | ||
54 | |||
55 | define_machine(canyonlands) { | ||
56 | .name = "Canyonlands", | ||
57 | .probe = canyonlands_probe, | ||
58 | .progress = udbg_progress, | ||
59 | .init_IRQ = uic_init_tree, | ||
60 | .get_irq = uic_get_irq, | ||
61 | .restart = ppc4xx_reset_system, | ||
62 | .calibrate_decr = generic_calibrate_decr, | ||
63 | }; | ||
diff --git a/arch/powerpc/platforms/44x/ebony.c b/arch/powerpc/platforms/44x/ebony.c index 1a8d467bff85..a0e8fe4662f6 100644 --- a/arch/powerpc/platforms/44x/ebony.c +++ b/arch/powerpc/platforms/44x/ebony.c | |||
@@ -26,8 +26,7 @@ | |||
26 | #include <asm/time.h> | 26 | #include <asm/time.h> |
27 | #include <asm/uic.h> | 27 | #include <asm/uic.h> |
28 | #include <asm/pci-bridge.h> | 28 | #include <asm/pci-bridge.h> |
29 | 29 | #include <asm/ppc4xx.h> | |
30 | #include "44x.h" | ||
31 | 30 | ||
32 | static __initdata struct of_device_id ebony_of_bus[] = { | 31 | static __initdata struct of_device_id ebony_of_bus[] = { |
33 | { .compatible = "ibm,plb4", }, | 32 | { .compatible = "ibm,plb4", }, |
@@ -66,6 +65,6 @@ define_machine(ebony) { | |||
66 | .progress = udbg_progress, | 65 | .progress = udbg_progress, |
67 | .init_IRQ = uic_init_tree, | 66 | .init_IRQ = uic_init_tree, |
68 | .get_irq = uic_get_irq, | 67 | .get_irq = uic_get_irq, |
69 | .restart = ppc44x_reset_system, | 68 | .restart = ppc4xx_reset_system, |
70 | .calibrate_decr = generic_calibrate_decr, | 69 | .calibrate_decr = generic_calibrate_decr, |
71 | }; | 70 | }; |
diff --git a/arch/powerpc/platforms/44x/idle.c b/arch/powerpc/platforms/44x/idle.c new file mode 100644 index 000000000000..7a81f921fef9 --- /dev/null +++ b/arch/powerpc/platforms/44x/idle.c | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * Copyright 2008 IBM Corp. | ||
3 | * | ||
4 | * Based on arch/powerpc/platforms/pasemi/idle.c: | ||
5 | * Copyright (C) 2006-2007 PA Semi, Inc | ||
6 | * | ||
7 | * Added by: Jerone Young <jyoung5@us.ibm.com> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | * | ||
22 | */ | ||
23 | |||
24 | #include <linux/of.h> | ||
25 | #include <linux/kernel.h> | ||
26 | #include <asm/machdep.h> | ||
27 | |||
28 | static int mode_spin; | ||
29 | |||
30 | static void ppc44x_idle(void) | ||
31 | { | ||
32 | unsigned long msr_save; | ||
33 | |||
34 | msr_save = mfmsr(); | ||
35 | /* set wait state MSR */ | ||
36 | mtmsr(msr_save|MSR_WE|MSR_EE|MSR_CE|MSR_DE); | ||
37 | isync(); | ||
38 | /* return to initial state */ | ||
39 | mtmsr(msr_save); | ||
40 | isync(); | ||
41 | } | ||
42 | |||
43 | int __init ppc44x_idle_init(void) | ||
44 | { | ||
45 | if (!mode_spin) { | ||
46 | /* If we are not setting spin mode | ||
47 | then we set to wait mode */ | ||
48 | ppc_md.power_save = &ppc44x_idle; | ||
49 | } | ||
50 | |||
51 | return 0; | ||
52 | } | ||
53 | |||
54 | arch_initcall(ppc44x_idle_init); | ||
55 | |||
56 | static int __init idle_param(char *p) | ||
57 | { | ||
58 | |||
59 | if (!strcmp("spin", p)) { | ||
60 | mode_spin = 1; | ||
61 | ppc_md.power_save = NULL; | ||
62 | } | ||
63 | |||
64 | return 0; | ||
65 | } | ||
66 | |||
67 | early_param("idle", idle_param); | ||
diff --git a/arch/powerpc/platforms/44x/katmai.c b/arch/powerpc/platforms/44x/katmai.c index 11134121f272..44f4b3a00ced 100644 --- a/arch/powerpc/platforms/44x/katmai.c +++ b/arch/powerpc/platforms/44x/katmai.c | |||
@@ -22,8 +22,7 @@ | |||
22 | #include <asm/time.h> | 22 | #include <asm/time.h> |
23 | #include <asm/uic.h> | 23 | #include <asm/uic.h> |
24 | #include <asm/pci-bridge.h> | 24 | #include <asm/pci-bridge.h> |
25 | 25 | #include <asm/ppc4xx.h> | |
26 | #include "44x.h" | ||
27 | 26 | ||
28 | static __initdata struct of_device_id katmai_of_bus[] = { | 27 | static __initdata struct of_device_id katmai_of_bus[] = { |
29 | { .compatible = "ibm,plb4", }, | 28 | { .compatible = "ibm,plb4", }, |
@@ -58,6 +57,6 @@ define_machine(katmai) { | |||
58 | .progress = udbg_progress, | 57 | .progress = udbg_progress, |
59 | .init_IRQ = uic_init_tree, | 58 | .init_IRQ = uic_init_tree, |
60 | .get_irq = uic_get_irq, | 59 | .get_irq = uic_get_irq, |
61 | .restart = ppc44x_reset_system, | 60 | .restart = ppc4xx_reset_system, |
62 | .calibrate_decr = generic_calibrate_decr, | 61 | .calibrate_decr = generic_calibrate_decr, |
63 | }; | 62 | }; |
diff --git a/arch/powerpc/platforms/44x/misc_44x.S b/arch/powerpc/platforms/44x/misc_44x.S index 3bce71d5d756..dc12b8009e48 100644 --- a/arch/powerpc/platforms/44x/misc_44x.S +++ b/arch/powerpc/platforms/44x/misc_44x.S | |||
@@ -44,14 +44,3 @@ _GLOBAL(as1_writeb) | |||
44 | sync | 44 | sync |
45 | isync | 45 | isync |
46 | blr | 46 | blr |
47 | |||
48 | /* | ||
49 | * void ppc44x_reset_system(char *cmd) | ||
50 | * | ||
51 | * At present, this routine just applies a system reset. | ||
52 | */ | ||
53 | _GLOBAL(ppc44x_reset_system) | ||
54 | mfspr r13,SPRN_DBCR0 | ||
55 | oris r13,r13,DBCR0_RST_SYSTEM@h | ||
56 | mtspr SPRN_DBCR0,r13 | ||
57 | b . /* Just in case the reset doesn't work */ | ||
diff --git a/arch/powerpc/platforms/44x/rainier.c b/arch/powerpc/platforms/44x/rainier.c index a7fae1cf69c1..4f1ff84c4b63 100644 --- a/arch/powerpc/platforms/44x/rainier.c +++ b/arch/powerpc/platforms/44x/rainier.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <asm/time.h> | 22 | #include <asm/time.h> |
23 | #include <asm/uic.h> | 23 | #include <asm/uic.h> |
24 | #include <asm/pci-bridge.h> | 24 | #include <asm/pci-bridge.h> |
25 | #include "44x.h" | 25 | #include <asm/ppc4xx.h> |
26 | 26 | ||
27 | static __initdata struct of_device_id rainier_of_bus[] = { | 27 | static __initdata struct of_device_id rainier_of_bus[] = { |
28 | { .compatible = "ibm,plb4", }, | 28 | { .compatible = "ibm,plb4", }, |
@@ -57,6 +57,6 @@ define_machine(rainier) { | |||
57 | .progress = udbg_progress, | 57 | .progress = udbg_progress, |
58 | .init_IRQ = uic_init_tree, | 58 | .init_IRQ = uic_init_tree, |
59 | .get_irq = uic_get_irq, | 59 | .get_irq = uic_get_irq, |
60 | .restart = ppc44x_reset_system, | 60 | .restart = ppc4xx_reset_system, |
61 | .calibrate_decr = generic_calibrate_decr, | 61 | .calibrate_decr = generic_calibrate_decr, |
62 | }; | 62 | }; |
diff --git a/arch/powerpc/platforms/44x/sequoia.c b/arch/powerpc/platforms/44x/sequoia.c index d279db42c896..49eb73daacdf 100644 --- a/arch/powerpc/platforms/44x/sequoia.c +++ b/arch/powerpc/platforms/44x/sequoia.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include <asm/uic.h> | 23 | #include <asm/uic.h> |
24 | #include <asm/pci-bridge.h> | 24 | #include <asm/pci-bridge.h> |
25 | 25 | ||
26 | #include "44x.h" | 26 | #include <asm/ppc4xx.h> |
27 | 27 | ||
28 | static __initdata struct of_device_id sequoia_of_bus[] = { | 28 | static __initdata struct of_device_id sequoia_of_bus[] = { |
29 | { .compatible = "ibm,plb4", }, | 29 | { .compatible = "ibm,plb4", }, |
@@ -58,6 +58,6 @@ define_machine(sequoia) { | |||
58 | .progress = udbg_progress, | 58 | .progress = udbg_progress, |
59 | .init_IRQ = uic_init_tree, | 59 | .init_IRQ = uic_init_tree, |
60 | .get_irq = uic_get_irq, | 60 | .get_irq = uic_get_irq, |
61 | .restart = ppc44x_reset_system, | 61 | .restart = ppc4xx_reset_system, |
62 | .calibrate_decr = generic_calibrate_decr, | 62 | .calibrate_decr = generic_calibrate_decr, |
63 | }; | 63 | }; |
diff --git a/arch/powerpc/platforms/44x/taishan.c b/arch/powerpc/platforms/44x/taishan.c index 28ab7e2e02c3..49c78b2098b4 100644 --- a/arch/powerpc/platforms/44x/taishan.c +++ b/arch/powerpc/platforms/44x/taishan.c | |||
@@ -29,8 +29,7 @@ | |||
29 | #include <asm/time.h> | 29 | #include <asm/time.h> |
30 | #include <asm/uic.h> | 30 | #include <asm/uic.h> |
31 | #include <asm/pci-bridge.h> | 31 | #include <asm/pci-bridge.h> |
32 | 32 | #include <asm/ppc4xx.h> | |
33 | #include "44x.h" | ||
34 | 33 | ||
35 | static __initdata struct of_device_id taishan_of_bus[] = { | 34 | static __initdata struct of_device_id taishan_of_bus[] = { |
36 | { .compatible = "ibm,plb4", }, | 35 | { .compatible = "ibm,plb4", }, |
@@ -68,6 +67,6 @@ define_machine(taishan) { | |||
68 | .progress = udbg_progress, | 67 | .progress = udbg_progress, |
69 | .init_IRQ = uic_init_tree, | 68 | .init_IRQ = uic_init_tree, |
70 | .get_irq = uic_get_irq, | 69 | .get_irq = uic_get_irq, |
71 | .restart = ppc44x_reset_system, | 70 | .restart = ppc4xx_reset_system, |
72 | .calibrate_decr = generic_calibrate_decr, | 71 | .calibrate_decr = generic_calibrate_decr, |
73 | }; | 72 | }; |
diff --git a/arch/powerpc/platforms/44x/warp-nand.c b/arch/powerpc/platforms/44x/warp-nand.c index 84ab78ff8c03..9150318cfc56 100644 --- a/arch/powerpc/platforms/44x/warp-nand.c +++ b/arch/powerpc/platforms/44x/warp-nand.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/mtd/partitions.h> | 11 | #include <linux/mtd/partitions.h> |
12 | #include <linux/mtd/nand.h> | 12 | #include <linux/mtd/nand.h> |
13 | #include <linux/mtd/ndfc.h> | 13 | #include <linux/mtd/ndfc.h> |
14 | #include <asm/machdep.h> | ||
14 | 15 | ||
15 | #ifdef CONFIG_MTD_NAND_NDFC | 16 | #ifdef CONFIG_MTD_NAND_NDFC |
16 | 17 | ||
@@ -100,6 +101,6 @@ static int warp_setup_nand_flash(void) | |||
100 | 101 | ||
101 | return 0; | 102 | return 0; |
102 | } | 103 | } |
103 | device_initcall(warp_setup_nand_flash); | 104 | machine_device_initcall(warp, warp_setup_nand_flash); |
104 | 105 | ||
105 | #endif | 106 | #endif |
diff --git a/arch/powerpc/platforms/44x/warp.c b/arch/powerpc/platforms/44x/warp.c index da5b7b7599db..39cf6150a72b 100644 --- a/arch/powerpc/platforms/44x/warp.c +++ b/arch/powerpc/platforms/44x/warp.c | |||
@@ -18,9 +18,7 @@ | |||
18 | #include <asm/udbg.h> | 18 | #include <asm/udbg.h> |
19 | #include <asm/time.h> | 19 | #include <asm/time.h> |
20 | #include <asm/uic.h> | 20 | #include <asm/uic.h> |
21 | 21 | #include <asm/ppc4xx.h> | |
22 | #include "44x.h" | ||
23 | |||
24 | 22 | ||
25 | static __initdata struct of_device_id warp_of_bus[] = { | 23 | static __initdata struct of_device_id warp_of_bus[] = { |
26 | { .compatible = "ibm,plb4", }, | 24 | { .compatible = "ibm,plb4", }, |
@@ -49,7 +47,7 @@ define_machine(warp) { | |||
49 | .progress = udbg_progress, | 47 | .progress = udbg_progress, |
50 | .init_IRQ = uic_init_tree, | 48 | .init_IRQ = uic_init_tree, |
51 | .get_irq = uic_get_irq, | 49 | .get_irq = uic_get_irq, |
52 | .restart = ppc44x_reset_system, | 50 | .restart = ppc4xx_reset_system, |
53 | .calibrate_decr = generic_calibrate_decr, | 51 | .calibrate_decr = generic_calibrate_decr, |
54 | }; | 52 | }; |
55 | 53 | ||
diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c index 956f459e175c..6d584f4e3c9a 100644 --- a/arch/powerpc/platforms/52xx/lite5200.c +++ b/arch/powerpc/platforms/52xx/lite5200.c | |||
@@ -63,7 +63,7 @@ lite5200_fix_clock_config(void) | |||
63 | of_node_put(np); | 63 | of_node_put(np); |
64 | if (!cdm) { | 64 | if (!cdm) { |
65 | printk(KERN_ERR "%s() failed; expect abnormal behaviour\n", | 65 | printk(KERN_ERR "%s() failed; expect abnormal behaviour\n", |
66 | __FUNCTION__); | 66 | __func__); |
67 | return; | 67 | return; |
68 | } | 68 | } |
69 | 69 | ||
@@ -98,7 +98,7 @@ lite5200_fix_port_config(void) | |||
98 | of_node_put(np); | 98 | of_node_put(np); |
99 | if (!gpio) { | 99 | if (!gpio) { |
100 | printk(KERN_ERR "%s() failed. expect abnormal behavior\n", | 100 | printk(KERN_ERR "%s() failed. expect abnormal behavior\n", |
101 | __FUNCTION__); | 101 | __func__); |
102 | return; | 102 | return; |
103 | } | 103 | } |
104 | 104 | ||
diff --git a/arch/powerpc/platforms/82xx/Kconfig b/arch/powerpc/platforms/82xx/Kconfig index 4fad6c7bf9f1..917ac8891555 100644 --- a/arch/powerpc/platforms/82xx/Kconfig +++ b/arch/powerpc/platforms/82xx/Kconfig | |||
@@ -11,7 +11,6 @@ config MPC8272_ADS | |||
11 | select 8260 | 11 | select 8260 |
12 | select FSL_SOC | 12 | select FSL_SOC |
13 | select PQ2_ADS_PCI_PIC if PCI | 13 | select PQ2_ADS_PCI_PIC if PCI |
14 | select PPC_CPM_NEW_BINDING | ||
15 | help | 14 | help |
16 | This option enables support for the MPC8272 ADS board | 15 | This option enables support for the MPC8272 ADS board |
17 | 16 | ||
@@ -22,7 +21,6 @@ config PQ2FADS | |||
22 | select 8260 | 21 | select 8260 |
23 | select FSL_SOC | 22 | select FSL_SOC |
24 | select PQ2_ADS_PCI_PIC if PCI | 23 | select PQ2_ADS_PCI_PIC if PCI |
25 | select PPC_CPM_NEW_BINDING | ||
26 | help | 24 | help |
27 | This option enables support for the PQ2FADS board | 25 | This option enables support for the PQ2FADS board |
28 | 26 | ||
@@ -31,7 +29,6 @@ config EP8248E | |||
31 | select 8272 | 29 | select 8272 |
32 | select 8260 | 30 | select 8260 |
33 | select FSL_SOC | 31 | select FSL_SOC |
34 | select PPC_CPM_NEW_BINDING | ||
35 | select MDIO_BITBANG | 32 | select MDIO_BITBANG |
36 | help | 33 | help |
37 | This enables support for the Embedded Planet EP8248E board. | 34 | This enables support for the Embedded Planet EP8248E board. |
diff --git a/arch/powerpc/platforms/83xx/mpc837x_rdb.c b/arch/powerpc/platforms/83xx/mpc837x_rdb.c index 2293ae51383d..c00356bdb1dd 100644 --- a/arch/powerpc/platforms/83xx/mpc837x_rdb.c +++ b/arch/powerpc/platforms/83xx/mpc837x_rdb.c | |||
@@ -46,6 +46,7 @@ static void __init mpc837x_rdb_setup_arch(void) | |||
46 | static struct of_device_id mpc837x_ids[] = { | 46 | static struct of_device_id mpc837x_ids[] = { |
47 | { .type = "soc", }, | 47 | { .type = "soc", }, |
48 | { .compatible = "soc", }, | 48 | { .compatible = "soc", }, |
49 | { .compatible = "simple-bus", }, | ||
49 | {}, | 50 | {}, |
50 | }; | 51 | }; |
51 | 52 | ||
diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h index 68065e62fc3d..88a3b5cabb18 100644 --- a/arch/powerpc/platforms/83xx/mpc83xx.h +++ b/arch/powerpc/platforms/83xx/mpc83xx.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #define MPC83XX_SCCR_USB_DRCM_10 0x00200000 | 16 | #define MPC83XX_SCCR_USB_DRCM_10 0x00200000 |
17 | #define MPC8315_SCCR_USB_MASK 0x00c00000 | 17 | #define MPC8315_SCCR_USB_MASK 0x00c00000 |
18 | #define MPC8315_SCCR_USB_DRCM_11 0x00c00000 | 18 | #define MPC8315_SCCR_USB_DRCM_11 0x00c00000 |
19 | #define MPC8315_SCCR_USB_DRCM_01 0x00400000 | ||
19 | #define MPC837X_SCCR_USB_DRCM_11 0x00c00000 | 20 | #define MPC837X_SCCR_USB_DRCM_11 0x00c00000 |
20 | 21 | ||
21 | /* system i/o configuration register low */ | 22 | /* system i/o configuration register low */ |
@@ -37,6 +38,7 @@ | |||
37 | /* USB Control Register */ | 38 | /* USB Control Register */ |
38 | #define FSL_USB2_CONTROL_OFFS 0x500 | 39 | #define FSL_USB2_CONTROL_OFFS 0x500 |
39 | #define CONTROL_UTMI_PHY_EN 0x00000200 | 40 | #define CONTROL_UTMI_PHY_EN 0x00000200 |
41 | #define CONTROL_REFSEL_24MHZ 0x00000040 | ||
40 | #define CONTROL_REFSEL_48MHZ 0x00000080 | 42 | #define CONTROL_REFSEL_48MHZ 0x00000080 |
41 | #define CONTROL_PHY_CLK_SEL_ULPI 0x00000400 | 43 | #define CONTROL_PHY_CLK_SEL_ULPI 0x00000400 |
42 | #define CONTROL_OTG_PORT 0x00000020 | 44 | #define CONTROL_OTG_PORT 0x00000020 |
diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c index 471fdd8f4108..64bcf0a33c71 100644 --- a/arch/powerpc/platforms/83xx/usb.c +++ b/arch/powerpc/platforms/83xx/usb.c | |||
@@ -129,7 +129,7 @@ int mpc831x_usb_cfg(void) | |||
129 | if (immr_node && of_device_is_compatible(immr_node, "fsl,mpc8315-immr")) | 129 | if (immr_node && of_device_is_compatible(immr_node, "fsl,mpc8315-immr")) |
130 | clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, | 130 | clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, |
131 | MPC8315_SCCR_USB_MASK, | 131 | MPC8315_SCCR_USB_MASK, |
132 | MPC8315_SCCR_USB_DRCM_11); | 132 | MPC8315_SCCR_USB_DRCM_01); |
133 | else | 133 | else |
134 | clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, | 134 | clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, |
135 | MPC83XX_SCCR_USB_MASK, | 135 | MPC83XX_SCCR_USB_MASK, |
@@ -164,9 +164,15 @@ int mpc831x_usb_cfg(void) | |||
164 | /* Using on-chip PHY */ | 164 | /* Using on-chip PHY */ |
165 | if (prop && (!strcmp(prop, "utmi_wide") || | 165 | if (prop && (!strcmp(prop, "utmi_wide") || |
166 | !strcmp(prop, "utmi"))) { | 166 | !strcmp(prop, "utmi"))) { |
167 | /* Set UTMI_PHY_EN, REFSEL to 48MHZ */ | 167 | u32 refsel; |
168 | |||
169 | if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr")) | ||
170 | refsel = CONTROL_REFSEL_24MHZ; | ||
171 | else | ||
172 | refsel = CONTROL_REFSEL_48MHZ; | ||
173 | /* Set UTMI_PHY_EN and REFSEL */ | ||
168 | out_be32(usb_regs + FSL_USB2_CONTROL_OFFS, | 174 | out_be32(usb_regs + FSL_USB2_CONTROL_OFFS, |
169 | CONTROL_UTMI_PHY_EN | CONTROL_REFSEL_48MHZ); | 175 | CONTROL_UTMI_PHY_EN | refsel); |
170 | /* Using external UPLI PHY */ | 176 | /* Using external UPLI PHY */ |
171 | } else if (prop && !strcmp(prop, "ulpi")) { | 177 | } else if (prop && !strcmp(prop, "ulpi")) { |
172 | /* Set PHY_CLK_SEL to ULPI */ | 178 | /* Set PHY_CLK_SEL to ULPI */ |
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig index 7e76ddbd5821..7ff29d53dc2d 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig | |||
@@ -19,7 +19,6 @@ config MPC8540_ADS | |||
19 | config MPC8560_ADS | 19 | config MPC8560_ADS |
20 | bool "Freescale MPC8560 ADS" | 20 | bool "Freescale MPC8560 ADS" |
21 | select DEFAULT_UIMAGE | 21 | select DEFAULT_UIMAGE |
22 | select PPC_CPM_NEW_BINDING | ||
23 | select CPM2 | 22 | select CPM2 |
24 | help | 23 | help |
25 | This option enables support for the MPC 8560 ADS board | 24 | This option enables support for the MPC 8560 ADS board |
@@ -46,6 +45,12 @@ config MPC85xx_DS | |||
46 | help | 45 | help |
47 | This option enables support for the MPC85xx DS (MPC8544 DS) board | 46 | This option enables support for the MPC85xx DS (MPC8544 DS) board |
48 | 47 | ||
48 | config KSI8560 | ||
49 | bool "Emerson KSI8560" | ||
50 | select DEFAULT_UIMAGE | ||
51 | help | ||
52 | This option enables support for the Emerson KSI8560 board | ||
53 | |||
49 | config STX_GP3 | 54 | config STX_GP3 |
50 | bool "Silicon Turnkey Express GP3" | 55 | bool "Silicon Turnkey Express GP3" |
51 | help | 56 | help |
@@ -53,14 +58,12 @@ config STX_GP3 | |||
53 | board. | 58 | board. |
54 | select CPM2 | 59 | select CPM2 |
55 | select DEFAULT_UIMAGE | 60 | select DEFAULT_UIMAGE |
56 | select PPC_CPM_NEW_BINDING | ||
57 | 61 | ||
58 | config TQM8540 | 62 | config TQM8540 |
59 | bool "TQ Components TQM8540" | 63 | bool "TQ Components TQM8540" |
60 | help | 64 | help |
61 | This option enables support for the TQ Components TQM8540 board. | 65 | This option enables support for the TQ Components TQM8540 board. |
62 | select DEFAULT_UIMAGE | 66 | select DEFAULT_UIMAGE |
63 | select PPC_CPM_NEW_BINDING | ||
64 | select TQM85xx | 67 | select TQM85xx |
65 | 68 | ||
66 | config TQM8541 | 69 | config TQM8541 |
@@ -68,7 +71,6 @@ config TQM8541 | |||
68 | help | 71 | help |
69 | This option enables support for the TQ Components TQM8541 board. | 72 | This option enables support for the TQ Components TQM8541 board. |
70 | select DEFAULT_UIMAGE | 73 | select DEFAULT_UIMAGE |
71 | select PPC_CPM_NEW_BINDING | ||
72 | select TQM85xx | 74 | select TQM85xx |
73 | select CPM2 | 75 | select CPM2 |
74 | 76 | ||
@@ -77,7 +79,6 @@ config TQM8555 | |||
77 | help | 79 | help |
78 | This option enables support for the TQ Components TQM8555 board. | 80 | This option enables support for the TQ Components TQM8555 board. |
79 | select DEFAULT_UIMAGE | 81 | select DEFAULT_UIMAGE |
80 | select PPC_CPM_NEW_BINDING | ||
81 | select TQM85xx | 82 | select TQM85xx |
82 | select CPM2 | 83 | select CPM2 |
83 | 84 | ||
@@ -86,7 +87,6 @@ config TQM8560 | |||
86 | help | 87 | help |
87 | This option enables support for the TQ Components TQM8560 board. | 88 | This option enables support for the TQ Components TQM8560 board. |
88 | select DEFAULT_UIMAGE | 89 | select DEFAULT_UIMAGE |
89 | select PPC_CPM_NEW_BINDING | ||
90 | select TQM85xx | 90 | select TQM85xx |
91 | select CPM2 | 91 | select CPM2 |
92 | 92 | ||
@@ -99,7 +99,6 @@ config SBC8548 | |||
99 | config SBC8560 | 99 | config SBC8560 |
100 | bool "Wind River SBC8560" | 100 | bool "Wind River SBC8560" |
101 | select DEFAULT_UIMAGE | 101 | select DEFAULT_UIMAGE |
102 | select PPC_CPM_NEW_BINDING if CPM2 | ||
103 | help | 102 | help |
104 | This option enables support for the Wind River SBC8560 board | 103 | This option enables support for the Wind River SBC8560 board |
105 | 104 | ||
diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile index cb7af4ebd75f..6cea185f62b2 100644 --- a/arch/powerpc/platforms/85xx/Makefile +++ b/arch/powerpc/platforms/85xx/Makefile | |||
@@ -10,3 +10,4 @@ obj-$(CONFIG_STX_GP3) += stx_gp3.o | |||
10 | obj-$(CONFIG_TQM85xx) += tqm85xx.o | 10 | obj-$(CONFIG_TQM85xx) += tqm85xx.o |
11 | obj-$(CONFIG_SBC8560) += sbc8560.o | 11 | obj-$(CONFIG_SBC8560) += sbc8560.o |
12 | obj-$(CONFIG_SBC8548) += sbc8548.o | 12 | obj-$(CONFIG_SBC8548) += sbc8548.o |
13 | obj-$(CONFIG_KSI8560) += ksi8560.o | ||
diff --git a/arch/powerpc/platforms/85xx/ksi8560.c b/arch/powerpc/platforms/85xx/ksi8560.c new file mode 100644 index 000000000000..2145adeb220c --- /dev/null +++ b/arch/powerpc/platforms/85xx/ksi8560.c | |||
@@ -0,0 +1,257 @@ | |||
1 | /* | ||
2 | * Board setup routines for the Emerson KSI8560 | ||
3 | * | ||
4 | * Author: Alexandr Smirnov <asmirnov@ru.mvista.com> | ||
5 | * | ||
6 | * Based on mpc85xx_ads.c maintained by Kumar Gala | ||
7 | * | ||
8 | * 2008 (c) MontaVista, Software, Inc. This file is licensed under | ||
9 | * the terms of the GNU General Public License version 2. This program | ||
10 | * is licensed "as is" without any warranty of any kind, whether express | ||
11 | * or implied. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #include <linux/stddef.h> | ||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/pci.h> | ||
18 | #include <linux/kdev_t.h> | ||
19 | #include <linux/delay.h> | ||
20 | #include <linux/seq_file.h> | ||
21 | #include <linux/of_platform.h> | ||
22 | |||
23 | #include <asm/system.h> | ||
24 | #include <asm/time.h> | ||
25 | #include <asm/machdep.h> | ||
26 | #include <asm/pci-bridge.h> | ||
27 | #include <asm/mpic.h> | ||
28 | #include <mm/mmu_decl.h> | ||
29 | #include <asm/udbg.h> | ||
30 | #include <asm/prom.h> | ||
31 | |||
32 | #include <sysdev/fsl_soc.h> | ||
33 | #include <sysdev/fsl_pci.h> | ||
34 | |||
35 | #include <asm/cpm2.h> | ||
36 | #include <sysdev/cpm2_pic.h> | ||
37 | |||
38 | |||
39 | #define KSI8560_CPLD_HVR 0x04 /* Hardware Version Register */ | ||
40 | #define KSI8560_CPLD_PVR 0x08 /* PLD Version Register */ | ||
41 | #define KSI8560_CPLD_RCR1 0x30 /* Reset Command Register 1 */ | ||
42 | |||
43 | #define KSI8560_CPLD_RCR1_CPUHR 0x80 /* CPU Hard Reset */ | ||
44 | |||
45 | static void __iomem *cpld_base = NULL; | ||
46 | |||
47 | static void machine_restart(char *cmd) | ||
48 | { | ||
49 | if (cpld_base) | ||
50 | out_8(cpld_base + KSI8560_CPLD_RCR1, KSI8560_CPLD_RCR1_CPUHR); | ||
51 | else | ||
52 | printk(KERN_ERR "Can't find CPLD base, hang forever\n"); | ||
53 | |||
54 | for (;;); | ||
55 | } | ||
56 | |||
57 | static void cpm2_cascade(unsigned int irq, struct irq_desc *desc) | ||
58 | { | ||
59 | int cascade_irq; | ||
60 | |||
61 | while ((cascade_irq = cpm2_get_irq()) >= 0) | ||
62 | generic_handle_irq(cascade_irq); | ||
63 | |||
64 | desc->chip->eoi(irq); | ||
65 | } | ||
66 | |||
67 | static void __init ksi8560_pic_init(void) | ||
68 | { | ||
69 | struct mpic *mpic; | ||
70 | struct resource r; | ||
71 | struct device_node *np; | ||
72 | #ifdef CONFIG_CPM2 | ||
73 | int irq; | ||
74 | #endif | ||
75 | |||
76 | np = of_find_node_by_type(NULL, "open-pic"); | ||
77 | |||
78 | if (np == NULL) { | ||
79 | printk(KERN_ERR "Could not find open-pic node\n"); | ||
80 | return; | ||
81 | } | ||
82 | |||
83 | if (of_address_to_resource(np, 0, &r)) { | ||
84 | printk(KERN_ERR "Could not map mpic register space\n"); | ||
85 | of_node_put(np); | ||
86 | return; | ||
87 | } | ||
88 | |||
89 | mpic = mpic_alloc(np, r.start, | ||
90 | MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, | ||
91 | 0, 256, " OpenPIC "); | ||
92 | BUG_ON(mpic == NULL); | ||
93 | of_node_put(np); | ||
94 | |||
95 | mpic_init(mpic); | ||
96 | |||
97 | #ifdef CONFIG_CPM2 | ||
98 | /* Setup CPM2 PIC */ | ||
99 | np = of_find_compatible_node(NULL, NULL, "fsl,cpm2-pic"); | ||
100 | if (np == NULL) { | ||
101 | printk(KERN_ERR "PIC init: can not find fsl,cpm2-pic node\n"); | ||
102 | return; | ||
103 | } | ||
104 | irq = irq_of_parse_and_map(np, 0); | ||
105 | |||
106 | cpm2_pic_init(np); | ||
107 | of_node_put(np); | ||
108 | set_irq_chained_handler(irq, cpm2_cascade); | ||
109 | |||
110 | setup_irq(0, NULL); | ||
111 | #endif | ||
112 | } | ||
113 | |||
114 | #ifdef CONFIG_CPM2 | ||
115 | /* | ||
116 | * Setup I/O ports | ||
117 | */ | ||
118 | struct cpm_pin { | ||
119 | int port, pin, flags; | ||
120 | }; | ||
121 | |||
122 | static struct cpm_pin __initdata ksi8560_pins[] = { | ||
123 | /* SCC1 */ | ||
124 | {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
125 | {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
126 | {3, 31, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
127 | |||
128 | /* SCC2 */ | ||
129 | {3, 26, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
130 | {3, 27, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
131 | {3, 28, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
132 | |||
133 | /* FCC1 */ | ||
134 | {0, 14, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
135 | {0, 15, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
136 | {0, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
137 | {0, 17, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
138 | {0, 18, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
139 | {0, 19, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
140 | {0, 20, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
141 | {0, 21, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
142 | {0, 26, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
143 | {0, 27, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
144 | {0, 28, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
145 | {0, 29, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
146 | {0, 30, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
147 | {0, 31, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
148 | {2, 23, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, /* CLK9 */ | ||
149 | {2, 22, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, /* CLK10 */ | ||
150 | |||
151 | }; | ||
152 | |||
153 | static void __init init_ioports(void) | ||
154 | { | ||
155 | int i; | ||
156 | |||
157 | for (i = 0; i < ARRAY_SIZE(ksi8560_pins); i++) { | ||
158 | struct cpm_pin *pin = &ksi8560_pins[i]; | ||
159 | cpm2_set_pin(pin->port, pin->pin, pin->flags); | ||
160 | } | ||
161 | |||
162 | cpm2_clk_setup(CPM_CLK_SCC1, CPM_BRG1, CPM_CLK_RX); | ||
163 | cpm2_clk_setup(CPM_CLK_SCC1, CPM_BRG1, CPM_CLK_TX); | ||
164 | cpm2_clk_setup(CPM_CLK_SCC2, CPM_BRG2, CPM_CLK_RX); | ||
165 | cpm2_clk_setup(CPM_CLK_SCC2, CPM_BRG2, CPM_CLK_TX); | ||
166 | cpm2_clk_setup(CPM_CLK_FCC1, CPM_CLK9, CPM_CLK_RX); | ||
167 | cpm2_clk_setup(CPM_CLK_FCC1, CPM_CLK10, CPM_CLK_TX); | ||
168 | } | ||
169 | #endif | ||
170 | |||
171 | /* | ||
172 | * Setup the architecture | ||
173 | */ | ||
174 | static void __init ksi8560_setup_arch(void) | ||
175 | { | ||
176 | struct device_node *cpld; | ||
177 | |||
178 | cpld = of_find_compatible_node(NULL, NULL, "emerson,KSI8560-cpld"); | ||
179 | if (cpld) | ||
180 | cpld_base = of_iomap(cpld, 0); | ||
181 | else | ||
182 | printk(KERN_ERR "Can't find CPLD in device tree\n"); | ||
183 | |||
184 | if (ppc_md.progress) | ||
185 | ppc_md.progress("ksi8560_setup_arch()", 0); | ||
186 | |||
187 | #ifdef CONFIG_CPM2 | ||
188 | cpm2_reset(); | ||
189 | init_ioports(); | ||
190 | #endif | ||
191 | } | ||
192 | |||
193 | static void ksi8560_show_cpuinfo(struct seq_file *m) | ||
194 | { | ||
195 | uint pvid, svid, phid1; | ||
196 | uint memsize = total_memory; | ||
197 | |||
198 | pvid = mfspr(SPRN_PVR); | ||
199 | svid = mfspr(SPRN_SVR); | ||
200 | |||
201 | seq_printf(m, "Vendor\t\t: Emerson Network Power\n"); | ||
202 | seq_printf(m, "Board\t\t: KSI8560\n"); | ||
203 | |||
204 | if (cpld_base) { | ||
205 | seq_printf(m, "Hardware rev\t: %d\n", | ||
206 | in_8(cpld_base + KSI8560_CPLD_HVR)); | ||
207 | seq_printf(m, "CPLD rev\t: %d\n", | ||
208 | in_8(cpld_base + KSI8560_CPLD_PVR)); | ||
209 | } else | ||
210 | seq_printf(m, "Unknown Hardware and CPLD revs\n"); | ||
211 | |||
212 | seq_printf(m, "PVR\t\t: 0x%x\n", pvid); | ||
213 | seq_printf(m, "SVR\t\t: 0x%x\n", svid); | ||
214 | |||
215 | /* Display cpu Pll setting */ | ||
216 | phid1 = mfspr(SPRN_HID1); | ||
217 | seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f)); | ||
218 | |||
219 | /* Display the amount of memory */ | ||
220 | seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024)); | ||
221 | } | ||
222 | |||
223 | static struct of_device_id __initdata of_bus_ids[] = { | ||
224 | { .type = "soc", }, | ||
225 | { .name = "cpm", }, | ||
226 | { .name = "localbus", }, | ||
227 | {}, | ||
228 | }; | ||
229 | |||
230 | static int __init declare_of_platform_devices(void) | ||
231 | { | ||
232 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
233 | |||
234 | return 0; | ||
235 | } | ||
236 | machine_device_initcall(ksi8560, declare_of_platform_devices); | ||
237 | |||
238 | /* | ||
239 | * Called very early, device-tree isn't unflattened | ||
240 | */ | ||
241 | static int __init ksi8560_probe(void) | ||
242 | { | ||
243 | unsigned long root = of_get_flat_dt_root(); | ||
244 | |||
245 | return of_flat_dt_is_compatible(root, "emerson,KSI8560"); | ||
246 | } | ||
247 | |||
248 | define_machine(ksi8560) { | ||
249 | .name = "KSI8560", | ||
250 | .probe = ksi8560_probe, | ||
251 | .setup_arch = ksi8560_setup_arch, | ||
252 | .init_IRQ = ksi8560_pic_init, | ||
253 | .show_cpuinfo = ksi8560_show_cpuinfo, | ||
254 | .get_irq = mpic_get_irq, | ||
255 | .restart = machine_restart, | ||
256 | .calibrate_decr = generic_calibrate_decr, | ||
257 | }; | ||
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c index 4e0305096114..3582c841844b 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c | |||
@@ -165,7 +165,7 @@ static void __init init_ioports(void) | |||
165 | int i; | 165 | int i; |
166 | 166 | ||
167 | for (i = 0; i < ARRAY_SIZE(mpc8560_ads_pins); i++) { | 167 | for (i = 0; i < ARRAY_SIZE(mpc8560_ads_pins); i++) { |
168 | struct cpm_pin *pin = &mpc8560_ads_pins[i]; | 168 | const struct cpm_pin *pin = &mpc8560_ads_pins[i]; |
169 | cpm2_set_pin(pin->port, pin->pin, pin->flags); | 169 | cpm2_set_pin(pin->port, pin->pin, pin->flags); |
170 | } | 170 | } |
171 | 171 | ||
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c index bdb3d0b38cd2..dfd8b4ad9b28 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/seq_file.h> | 20 | #include <linux/seq_file.h> |
21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
22 | #include <linux/of_platform.h> | ||
22 | 23 | ||
23 | #include <asm/system.h> | 24 | #include <asm/system.h> |
24 | #include <asm/time.h> | 25 | #include <asm/time.h> |
@@ -36,7 +37,7 @@ | |||
36 | #undef DEBUG | 37 | #undef DEBUG |
37 | 38 | ||
38 | #ifdef DEBUG | 39 | #ifdef DEBUG |
39 | #define DBG(fmt, args...) printk(KERN_ERR "%s: " fmt, __FUNCTION__, ## args) | 40 | #define DBG(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args) |
40 | #else | 41 | #else |
41 | #define DBG(fmt, args...) | 42 | #define DBG(fmt, args...) |
42 | #endif | 43 | #endif |
@@ -183,6 +184,18 @@ static int __init mpc8544_ds_probe(void) | |||
183 | } | 184 | } |
184 | } | 185 | } |
185 | 186 | ||
187 | static struct of_device_id mpc85xxds_ids[] = { | ||
188 | { .type = "soc", }, | ||
189 | { .compatible = "soc", }, | ||
190 | {}, | ||
191 | }; | ||
192 | |||
193 | static int __init mpc85xxds_publish_devices(void) | ||
194 | { | ||
195 | return of_platform_bus_probe(NULL, mpc85xxds_ids, NULL); | ||
196 | } | ||
197 | machine_device_initcall(mpc8544_ds, mpc85xxds_publish_devices); | ||
198 | |||
186 | /* | 199 | /* |
187 | * Called very early, device-tree isn't unflattened | 200 | * Called very early, device-tree isn't unflattened |
188 | */ | 201 | */ |
diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig index 21d113536b86..7442c58d44f5 100644 --- a/arch/powerpc/platforms/86xx/Kconfig +++ b/arch/powerpc/platforms/86xx/Kconfig | |||
@@ -11,6 +11,12 @@ config MPC8641_HPCN | |||
11 | help | 11 | help |
12 | This option enables support for the MPC8641 HPCN board. | 12 | This option enables support for the MPC8641 HPCN board. |
13 | 13 | ||
14 | config SBC8641D | ||
15 | bool "Wind River SBC8641D" | ||
16 | select DEFAULT_UIMAGE | ||
17 | help | ||
18 | This option enables support for the WRS SBC8641D board. | ||
19 | |||
14 | config MPC8610_HPCD | 20 | config MPC8610_HPCD |
15 | bool "Freescale MPC8610 HPCD" | 21 | bool "Freescale MPC8610 HPCD" |
16 | select DEFAULT_UIMAGE | 22 | select DEFAULT_UIMAGE |
@@ -24,7 +30,7 @@ config MPC8641 | |||
24 | select FSL_PCI if PCI | 30 | select FSL_PCI if PCI |
25 | select PPC_UDBG_16550 | 31 | select PPC_UDBG_16550 |
26 | select MPIC | 32 | select MPIC |
27 | default y if MPC8641_HPCN | 33 | default y if MPC8641_HPCN || SBC8641D |
28 | 34 | ||
29 | config MPC8610 | 35 | config MPC8610 |
30 | bool | 36 | bool |
diff --git a/arch/powerpc/platforms/86xx/Makefile b/arch/powerpc/platforms/86xx/Makefile index c96706327eaa..1b9b4a9b2525 100644 --- a/arch/powerpc/platforms/86xx/Makefile +++ b/arch/powerpc/platforms/86xx/Makefile | |||
@@ -4,4 +4,5 @@ | |||
4 | 4 | ||
5 | obj-$(CONFIG_SMP) += mpc86xx_smp.o | 5 | obj-$(CONFIG_SMP) += mpc86xx_smp.o |
6 | obj-$(CONFIG_MPC8641_HPCN) += mpc86xx_hpcn.o | 6 | obj-$(CONFIG_MPC8641_HPCN) += mpc86xx_hpcn.o |
7 | obj-$(CONFIG_SBC8641D) += sbc8641d.o | ||
7 | obj-$(CONFIG_MPC8610_HPCD) += mpc8610_hpcd.o | 8 | obj-$(CONFIG_MPC8610_HPCD) += mpc8610_hpcd.o |
diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c index 0b07485641fe..18b8ebe930d5 100644 --- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c +++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c | |||
@@ -52,7 +52,7 @@ static int __init mpc8610_declare_of_platform_devices(void) | |||
52 | } | 52 | } |
53 | machine_device_initcall(mpc86xx_hpcd, mpc8610_declare_of_platform_devices); | 53 | machine_device_initcall(mpc86xx_hpcd, mpc8610_declare_of_platform_devices); |
54 | 54 | ||
55 | void __init | 55 | static void __init |
56 | mpc86xx_hpcd_init_irq(void) | 56 | mpc86xx_hpcd_init_irq(void) |
57 | { | 57 | { |
58 | struct mpic *mpic1; | 58 | struct mpic *mpic1; |
@@ -200,7 +200,7 @@ static int __init mpc86xx_hpcd_probe(void) | |||
200 | return 0; | 200 | return 0; |
201 | } | 201 | } |
202 | 202 | ||
203 | long __init | 203 | static long __init |
204 | mpc86xx_time_init(void) | 204 | mpc86xx_time_init(void) |
205 | { | 205 | { |
206 | unsigned int temp; | 206 | unsigned int temp; |
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c index cfbe8c52e263..f947f555fd46 100644 --- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c +++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c | |||
@@ -55,7 +55,7 @@ static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc) | |||
55 | } | 55 | } |
56 | #endif /* CONFIG_PCI */ | 56 | #endif /* CONFIG_PCI */ |
57 | 57 | ||
58 | void __init | 58 | static void __init |
59 | mpc86xx_hpcn_init_irq(void) | 59 | mpc86xx_hpcn_init_irq(void) |
60 | { | 60 | { |
61 | struct mpic *mpic1; | 61 | struct mpic *mpic1; |
@@ -162,7 +162,7 @@ mpc86xx_hpcn_setup_arch(void) | |||
162 | } | 162 | } |
163 | 163 | ||
164 | 164 | ||
165 | void | 165 | static void |
166 | mpc86xx_hpcn_show_cpuinfo(struct seq_file *m) | 166 | mpc86xx_hpcn_show_cpuinfo(struct seq_file *m) |
167 | { | 167 | { |
168 | struct device_node *root; | 168 | struct device_node *root; |
@@ -190,13 +190,19 @@ static int __init mpc86xx_hpcn_probe(void) | |||
190 | { | 190 | { |
191 | unsigned long root = of_get_flat_dt_root(); | 191 | unsigned long root = of_get_flat_dt_root(); |
192 | 192 | ||
193 | if (of_flat_dt_is_compatible(root, "mpc86xx")) | 193 | if (of_flat_dt_is_compatible(root, "fsl,mpc8641hpcn")) |
194 | return 1; /* Looks good */ | 194 | return 1; /* Looks good */ |
195 | 195 | ||
196 | /* Be nice and don't give silent boot death. Delete this in 2.6.27 */ | ||
197 | if (of_flat_dt_is_compatible(root, "mpc86xx")) { | ||
198 | pr_warning("WARNING: your dts/dtb is old. You must update before the next kernel release\n"); | ||
199 | return 1; | ||
200 | } | ||
201 | |||
196 | return 0; | 202 | return 0; |
197 | } | 203 | } |
198 | 204 | ||
199 | long __init | 205 | static long __init |
200 | mpc86xx_time_init(void) | 206 | mpc86xx_time_init(void) |
201 | { | 207 | { |
202 | unsigned int temp; | 208 | unsigned int temp; |
diff --git a/arch/powerpc/platforms/86xx/sbc8641d.c b/arch/powerpc/platforms/86xx/sbc8641d.c new file mode 100644 index 000000000000..510a06ef0b55 --- /dev/null +++ b/arch/powerpc/platforms/86xx/sbc8641d.c | |||
@@ -0,0 +1,164 @@ | |||
1 | /* | ||
2 | * SBC8641D board specific routines | ||
3 | * | ||
4 | * Copyright 2008 Wind River Systems Inc. | ||
5 | * | ||
6 | * By Paul Gortmaker (see MAINTAINERS for contact information) | ||
7 | * | ||
8 | * Based largely on the 8641 HPCN support by Freescale Semiconductor Inc. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | |||
16 | #include <linux/stddef.h> | ||
17 | #include <linux/kernel.h> | ||
18 | #include <linux/pci.h> | ||
19 | #include <linux/kdev_t.h> | ||
20 | #include <linux/delay.h> | ||
21 | #include <linux/seq_file.h> | ||
22 | #include <linux/of_platform.h> | ||
23 | |||
24 | #include <asm/system.h> | ||
25 | #include <asm/time.h> | ||
26 | #include <asm/machdep.h> | ||
27 | #include <asm/pci-bridge.h> | ||
28 | #include <asm/mpc86xx.h> | ||
29 | #include <asm/prom.h> | ||
30 | #include <mm/mmu_decl.h> | ||
31 | #include <asm/udbg.h> | ||
32 | |||
33 | #include <asm/mpic.h> | ||
34 | |||
35 | #include <sysdev/fsl_pci.h> | ||
36 | #include <sysdev/fsl_soc.h> | ||
37 | |||
38 | #include "mpc86xx.h" | ||
39 | |||
40 | static void __init | ||
41 | sbc8641_init_irq(void) | ||
42 | { | ||
43 | struct mpic *mpic1; | ||
44 | struct device_node *np; | ||
45 | struct resource res; | ||
46 | |||
47 | /* Determine PIC address. */ | ||
48 | np = of_find_node_by_type(NULL, "open-pic"); | ||
49 | if (np == NULL) | ||
50 | return; | ||
51 | of_address_to_resource(np, 0, &res); | ||
52 | |||
53 | /* Alloc mpic structure and per isu has 16 INT entries. */ | ||
54 | mpic1 = mpic_alloc(np, res.start, | ||
55 | MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN, | ||
56 | 0, 256, " MPIC "); | ||
57 | of_node_put(np); | ||
58 | BUG_ON(mpic1 == NULL); | ||
59 | |||
60 | mpic_init(mpic1); | ||
61 | } | ||
62 | |||
63 | static void __init | ||
64 | sbc8641_setup_arch(void) | ||
65 | { | ||
66 | #ifdef CONFIG_PCI | ||
67 | struct device_node *np; | ||
68 | #endif | ||
69 | |||
70 | if (ppc_md.progress) | ||
71 | ppc_md.progress("sbc8641_setup_arch()", 0); | ||
72 | |||
73 | #ifdef CONFIG_PCI | ||
74 | for_each_compatible_node(np, "pci", "fsl,mpc8641-pcie") | ||
75 | fsl_add_bridge(np, 0); | ||
76 | #endif | ||
77 | |||
78 | printk("SBC8641 board from Wind River\n"); | ||
79 | |||
80 | #ifdef CONFIG_SMP | ||
81 | mpc86xx_smp_init(); | ||
82 | #endif | ||
83 | } | ||
84 | |||
85 | |||
86 | static void | ||
87 | sbc8641_show_cpuinfo(struct seq_file *m) | ||
88 | { | ||
89 | struct device_node *root; | ||
90 | uint memsize = total_memory; | ||
91 | const char *model = ""; | ||
92 | uint svid = mfspr(SPRN_SVR); | ||
93 | |||
94 | seq_printf(m, "Vendor\t\t: Wind River Systems\n"); | ||
95 | |||
96 | root = of_find_node_by_path("/"); | ||
97 | if (root) | ||
98 | model = of_get_property(root, "model", NULL); | ||
99 | seq_printf(m, "Machine\t\t: %s\n", model); | ||
100 | of_node_put(root); | ||
101 | |||
102 | seq_printf(m, "SVR\t\t: 0x%x\n", svid); | ||
103 | seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024)); | ||
104 | } | ||
105 | |||
106 | |||
107 | /* | ||
108 | * Called very early, device-tree isn't unflattened | ||
109 | */ | ||
110 | static int __init sbc8641_probe(void) | ||
111 | { | ||
112 | unsigned long root = of_get_flat_dt_root(); | ||
113 | |||
114 | if (of_flat_dt_is_compatible(root, "wind,sbc8641")) | ||
115 | return 1; /* Looks good */ | ||
116 | |||
117 | return 0; | ||
118 | } | ||
119 | |||
120 | static long __init | ||
121 | mpc86xx_time_init(void) | ||
122 | { | ||
123 | unsigned int temp; | ||
124 | |||
125 | /* Set the time base to zero */ | ||
126 | mtspr(SPRN_TBWL, 0); | ||
127 | mtspr(SPRN_TBWU, 0); | ||
128 | |||
129 | temp = mfspr(SPRN_HID0); | ||
130 | temp |= HID0_TBEN; | ||
131 | mtspr(SPRN_HID0, temp); | ||
132 | asm volatile("isync"); | ||
133 | |||
134 | return 0; | ||
135 | } | ||
136 | |||
137 | static __initdata struct of_device_id of_bus_ids[] = { | ||
138 | { .compatible = "simple-bus", }, | ||
139 | {}, | ||
140 | }; | ||
141 | |||
142 | static int __init declare_of_platform_devices(void) | ||
143 | { | ||
144 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
145 | |||
146 | return 0; | ||
147 | } | ||
148 | machine_device_initcall(sbc8641, declare_of_platform_devices); | ||
149 | |||
150 | define_machine(sbc8641) { | ||
151 | .name = "SBC8641D", | ||
152 | .probe = sbc8641_probe, | ||
153 | .setup_arch = sbc8641_setup_arch, | ||
154 | .init_IRQ = sbc8641_init_irq, | ||
155 | .show_cpuinfo = sbc8641_show_cpuinfo, | ||
156 | .get_irq = mpic_get_irq, | ||
157 | .restart = fsl_rstcr_restart, | ||
158 | .time_init = mpc86xx_time_init, | ||
159 | .calibrate_decr = generic_calibrate_decr, | ||
160 | .progress = udbg_progress, | ||
161 | #ifdef CONFIG_PCI | ||
162 | .pcibios_fixup_bus = fsl_pcibios_fixup_bus, | ||
163 | #endif | ||
164 | }; | ||
diff --git a/arch/powerpc/platforms/8xx/Kconfig b/arch/powerpc/platforms/8xx/Kconfig index 7fd224ca233d..6fc849e51e48 100644 --- a/arch/powerpc/platforms/8xx/Kconfig +++ b/arch/powerpc/platforms/8xx/Kconfig | |||
@@ -18,7 +18,6 @@ config MPC8XXFADS | |||
18 | config MPC86XADS | 18 | config MPC86XADS |
19 | bool "MPC86XADS" | 19 | bool "MPC86XADS" |
20 | select CPM1 | 20 | select CPM1 |
21 | select PPC_CPM_NEW_BINDING | ||
22 | help | 21 | help |
23 | MPC86x Application Development System by Freescale Semiconductor. | 22 | MPC86x Application Development System by Freescale Semiconductor. |
24 | The MPC86xADS is meant to serve as a platform for s/w and h/w | 23 | The MPC86xADS is meant to serve as a platform for s/w and h/w |
@@ -27,7 +26,6 @@ config MPC86XADS | |||
27 | config MPC885ADS | 26 | config MPC885ADS |
28 | bool "MPC885ADS" | 27 | bool "MPC885ADS" |
29 | select CPM1 | 28 | select CPM1 |
30 | select PPC_CPM_NEW_BINDING | ||
31 | help | 29 | help |
32 | Freescale Semiconductor MPC885 Application Development System (ADS). | 30 | Freescale Semiconductor MPC885 Application Development System (ADS). |
33 | Also known as DUET. | 31 | Also known as DUET. |
@@ -37,7 +35,6 @@ config MPC885ADS | |||
37 | config PPC_EP88XC | 35 | config PPC_EP88XC |
38 | bool "Embedded Planet EP88xC (a.k.a. CWH-PPC-885XN-VE)" | 36 | bool "Embedded Planet EP88xC (a.k.a. CWH-PPC-885XN-VE)" |
39 | select CPM1 | 37 | select CPM1 |
40 | select PPC_CPM_NEW_BINDING | ||
41 | help | 38 | help |
42 | This enables support for the Embedded Planet EP88xC board. | 39 | This enables support for the Embedded Planet EP88xC board. |
43 | 40 | ||
@@ -47,7 +44,6 @@ config PPC_EP88XC | |||
47 | config PPC_ADDER875 | 44 | config PPC_ADDER875 |
48 | bool "Analogue & Micro Adder 875" | 45 | bool "Analogue & Micro Adder 875" |
49 | select CPM1 | 46 | select CPM1 |
50 | select PPC_CPM_NEW_BINDING | ||
51 | select REDBOOT | 47 | select REDBOOT |
52 | help | 48 | help |
53 | This enables support for the Analogue & Micro Adder 875 | 49 | This enables support for the Analogue & Micro Adder 875 |
diff --git a/arch/powerpc/platforms/8xx/m8xx_setup.c b/arch/powerpc/platforms/8xx/m8xx_setup.c index 184f998d1be2..0d9f75c74f8c 100644 --- a/arch/powerpc/platforms/8xx/m8xx_setup.c +++ b/arch/powerpc/platforms/8xx/m8xx_setup.c | |||
@@ -111,17 +111,12 @@ void __init mpc8xx_calibrate_decr(void) | |||
111 | 111 | ||
112 | /* Processor frequency is MHz. | 112 | /* Processor frequency is MHz. |
113 | */ | 113 | */ |
114 | ppc_tb_freq = 50000000; | ||
115 | if (!get_freq("bus-frequency", &ppc_tb_freq)) { | ||
116 | printk(KERN_ERR "WARNING: Estimating decrementer frequency " | ||
117 | "(not found)\n"); | ||
118 | } | ||
119 | ppc_tb_freq /= 16; | ||
120 | ppc_proc_freq = 50000000; | 114 | ppc_proc_freq = 50000000; |
121 | if (!get_freq("clock-frequency", &ppc_proc_freq)) | 115 | if (!get_freq("clock-frequency", &ppc_proc_freq)) |
122 | printk(KERN_ERR "WARNING: Estimating processor frequency " | 116 | printk(KERN_ERR "WARNING: Estimating processor frequency " |
123 | "(not found)\n"); | 117 | "(not found)\n"); |
124 | 118 | ||
119 | ppc_tb_freq = ppc_proc_freq / 16; | ||
125 | printk("Decrementer Frequency = 0x%lx\n", ppc_tb_freq); | 120 | printk("Decrementer Frequency = 0x%lx\n", ppc_tb_freq); |
126 | 121 | ||
127 | /* Perform some more timer/timebase initialization. This used | 122 | /* Perform some more timer/timebase initialization. This used |
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig index a578b966ecbc..f38c50b4ce56 100644 --- a/arch/powerpc/platforms/Kconfig +++ b/arch/powerpc/platforms/Kconfig | |||
@@ -290,13 +290,7 @@ config CPM2 | |||
290 | config PPC_CPM_NEW_BINDING | 290 | config PPC_CPM_NEW_BINDING |
291 | bool | 291 | bool |
292 | depends on CPM1 || CPM2 | 292 | depends on CPM1 || CPM2 |
293 | help | 293 | default y |
294 | Select this if your board has been converted to use the new | ||
295 | device tree bindings for CPM, and no longer needs the | ||
296 | ioport callbacks or the platform device glue code. | ||
297 | |||
298 | The fs_enet and cpm_uart drivers will be built as | ||
299 | of_platform devices. | ||
300 | 294 | ||
301 | config AXON_RAM | 295 | config AXON_RAM |
302 | tristate "Axon DDR2 memory device driver" | 296 | tristate "Axon DDR2 memory device driver" |
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index 0c3face0ddbb..5fc7fac10e93 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype | |||
@@ -41,11 +41,13 @@ config 40x | |||
41 | bool "AMCC 40x" | 41 | bool "AMCC 40x" |
42 | select PPC_DCR_NATIVE | 42 | select PPC_DCR_NATIVE |
43 | select PPC_UDBG_16550 | 43 | select PPC_UDBG_16550 |
44 | select 4xx_SOC | ||
44 | 45 | ||
45 | config 44x | 46 | config 44x |
46 | bool "AMCC 44x" | 47 | bool "AMCC 44x" |
47 | select PPC_DCR_NATIVE | 48 | select PPC_DCR_NATIVE |
48 | select PPC_UDBG_16550 | 49 | select PPC_UDBG_16550 |
50 | select 4xx_SOC | ||
49 | 51 | ||
50 | config E200 | 52 | config E200 |
51 | bool "Freescale e200" | 53 | bool "Freescale e200" |
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index d75ccded7f10..45646b2b4af4 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
@@ -28,13 +28,13 @@ | |||
28 | #include <linux/notifier.h> | 28 | #include <linux/notifier.h> |
29 | #include <linux/of.h> | 29 | #include <linux/of.h> |
30 | #include <linux/of_platform.h> | 30 | #include <linux/of_platform.h> |
31 | #include <linux/lmb.h> | ||
31 | 32 | ||
32 | #include <asm/prom.h> | 33 | #include <asm/prom.h> |
33 | #include <asm/iommu.h> | 34 | #include <asm/iommu.h> |
34 | #include <asm/machdep.h> | 35 | #include <asm/machdep.h> |
35 | #include <asm/pci-bridge.h> | 36 | #include <asm/pci-bridge.h> |
36 | #include <asm/udbg.h> | 37 | #include <asm/udbg.h> |
37 | #include <asm/lmb.h> | ||
38 | #include <asm/firmware.h> | 38 | #include <asm/firmware.h> |
39 | #include <asm/cell-regs.h> | 39 | #include <asm/cell-regs.h> |
40 | 40 | ||
@@ -316,7 +316,7 @@ static void cell_iommu_setup_stab(struct cbe_iommu *iommu, | |||
316 | segments = max(dbase + dsize, fbase + fsize) >> IO_SEGMENT_SHIFT; | 316 | segments = max(dbase + dsize, fbase + fsize) >> IO_SEGMENT_SHIFT; |
317 | 317 | ||
318 | pr_debug("%s: iommu[%d]: segments: %lu\n", | 318 | pr_debug("%s: iommu[%d]: segments: %lu\n", |
319 | __FUNCTION__, iommu->nid, segments); | 319 | __func__, iommu->nid, segments); |
320 | 320 | ||
321 | /* set up the segment table */ | 321 | /* set up the segment table */ |
322 | stab_size = segments * sizeof(unsigned long); | 322 | stab_size = segments * sizeof(unsigned long); |
@@ -343,7 +343,7 @@ static unsigned long *cell_iommu_alloc_ptab(struct cbe_iommu *iommu, | |||
343 | (1 << 12) / sizeof(unsigned long)); | 343 | (1 << 12) / sizeof(unsigned long)); |
344 | 344 | ||
345 | ptab_size = segments * pages_per_segment * sizeof(unsigned long); | 345 | ptab_size = segments * pages_per_segment * sizeof(unsigned long); |
346 | pr_debug("%s: iommu[%d]: ptab_size: %lu, order: %d\n", __FUNCTION__, | 346 | pr_debug("%s: iommu[%d]: ptab_size: %lu, order: %d\n", __func__, |
347 | iommu->nid, ptab_size, get_order(ptab_size)); | 347 | iommu->nid, ptab_size, get_order(ptab_size)); |
348 | page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(ptab_size)); | 348 | page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(ptab_size)); |
349 | BUG_ON(!page); | 349 | BUG_ON(!page); |
@@ -355,7 +355,7 @@ static unsigned long *cell_iommu_alloc_ptab(struct cbe_iommu *iommu, | |||
355 | n_pte_pages = (pages_per_segment * sizeof(unsigned long)) >> 12; | 355 | n_pte_pages = (pages_per_segment * sizeof(unsigned long)) >> 12; |
356 | 356 | ||
357 | pr_debug("%s: iommu[%d]: stab at %p, ptab at %p, n_pte_pages: %lu\n", | 357 | pr_debug("%s: iommu[%d]: stab at %p, ptab at %p, n_pte_pages: %lu\n", |
358 | __FUNCTION__, iommu->nid, iommu->stab, ptab, | 358 | __func__, iommu->nid, iommu->stab, ptab, |
359 | n_pte_pages); | 359 | n_pte_pages); |
360 | 360 | ||
361 | /* initialise the STEs */ | 361 | /* initialise the STEs */ |
@@ -394,7 +394,7 @@ static void cell_iommu_enable_hardware(struct cbe_iommu *iommu) | |||
394 | 394 | ||
395 | if (cell_iommu_find_ioc(iommu->nid, &xlate_base)) | 395 | if (cell_iommu_find_ioc(iommu->nid, &xlate_base)) |
396 | panic("%s: missing IOC register mappings for node %d\n", | 396 | panic("%s: missing IOC register mappings for node %d\n", |
397 | __FUNCTION__, iommu->nid); | 397 | __func__, iommu->nid); |
398 | 398 | ||
399 | iommu->xlate_regs = ioremap(xlate_base, IOC_Reg_Size); | 399 | iommu->xlate_regs = ioremap(xlate_base, IOC_Reg_Size); |
400 | iommu->cmd_regs = iommu->xlate_regs + IOC_IOCmd_Offset; | 400 | iommu->cmd_regs = iommu->xlate_regs + IOC_IOCmd_Offset; |
diff --git a/arch/powerpc/platforms/cell/pervasive.c b/arch/powerpc/platforms/cell/pervasive.c index 0304589c0a80..8a3631ce912b 100644 --- a/arch/powerpc/platforms/cell/pervasive.c +++ b/arch/powerpc/platforms/cell/pervasive.c | |||
@@ -65,7 +65,7 @@ static void cbe_power_save(void) | |||
65 | break; | 65 | break; |
66 | default: | 66 | default: |
67 | printk(KERN_WARNING "%s: unknown configuration\n", | 67 | printk(KERN_WARNING "%s: unknown configuration\n", |
68 | __FUNCTION__); | 68 | __func__); |
69 | break; | 69 | break; |
70 | } | 70 | } |
71 | mtspr(SPRN_TSC_CELL, thread_switch_control); | 71 | mtspr(SPRN_TSC_CELL, thread_switch_control); |
diff --git a/arch/powerpc/platforms/cell/ras.c b/arch/powerpc/platforms/cell/ras.c index e43024c0392e..655704ad03cf 100644 --- a/arch/powerpc/platforms/cell/ras.c +++ b/arch/powerpc/platforms/cell/ras.c | |||
@@ -132,7 +132,7 @@ static int __init cbe_ptcal_enable_on_node(int nid, int order) | |||
132 | (unsigned int)(addr >> 32), | 132 | (unsigned int)(addr >> 32), |
133 | (unsigned int)(addr & 0xffffffff))) { | 133 | (unsigned int)(addr & 0xffffffff))) { |
134 | printk(KERN_ERR "%s: error enabling PTCAL on node %d!\n", | 134 | printk(KERN_ERR "%s: error enabling PTCAL on node %d!\n", |
135 | __FUNCTION__, nid); | 135 | __func__, nid); |
136 | goto out_free_pages; | 136 | goto out_free_pages; |
137 | } | 137 | } |
138 | 138 | ||
@@ -162,7 +162,7 @@ static int __init cbe_ptcal_enable(void) | |||
162 | if (!size) | 162 | if (!size) |
163 | return -ENODEV; | 163 | return -ENODEV; |
164 | 164 | ||
165 | pr_debug("%s: enabling PTCAL, size = 0x%x\n", __FUNCTION__, *size); | 165 | pr_debug("%s: enabling PTCAL, size = 0x%x\n", __func__, *size); |
166 | order = get_order(*size); | 166 | order = get_order(*size); |
167 | of_node_put(np); | 167 | of_node_put(np); |
168 | 168 | ||
@@ -180,7 +180,7 @@ static int __init cbe_ptcal_enable(void) | |||
180 | const u32 *nid = of_get_property(np, "node-id", NULL); | 180 | const u32 *nid = of_get_property(np, "node-id", NULL); |
181 | if (!nid) { | 181 | if (!nid) { |
182 | printk(KERN_ERR "%s: node %s is missing node-id?\n", | 182 | printk(KERN_ERR "%s: node %s is missing node-id?\n", |
183 | __FUNCTION__, np->full_name); | 183 | __func__, np->full_name); |
184 | continue; | 184 | continue; |
185 | } | 185 | } |
186 | cbe_ptcal_enable_on_node(*nid, order); | 186 | cbe_ptcal_enable_on_node(*nid, order); |
@@ -195,13 +195,13 @@ static int cbe_ptcal_disable(void) | |||
195 | struct ptcal_area *area, *tmp; | 195 | struct ptcal_area *area, *tmp; |
196 | int ret = 0; | 196 | int ret = 0; |
197 | 197 | ||
198 | pr_debug("%s: disabling PTCAL\n", __FUNCTION__); | 198 | pr_debug("%s: disabling PTCAL\n", __func__); |
199 | 199 | ||
200 | list_for_each_entry_safe(area, tmp, &ptcal_list, list) { | 200 | list_for_each_entry_safe(area, tmp, &ptcal_list, list) { |
201 | /* disable ptcal on this node */ | 201 | /* disable ptcal on this node */ |
202 | if (rtas_call(ptcal_stop_tok, 1, 1, NULL, area->nid)) { | 202 | if (rtas_call(ptcal_stop_tok, 1, 1, NULL, area->nid)) { |
203 | printk(KERN_ERR "%s: error disabling PTCAL " | 203 | printk(KERN_ERR "%s: error disabling PTCAL " |
204 | "on node %d!\n", __FUNCTION__, | 204 | "on node %d!\n", __func__, |
205 | area->nid); | 205 | area->nid); |
206 | ret = -EIO; | 206 | ret = -EIO; |
207 | continue; | 207 | continue; |
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c index 712001f6b7da..6bab44b7716b 100644 --- a/arch/powerpc/platforms/cell/spu_base.c +++ b/arch/powerpc/platforms/cell/spu_base.c | |||
@@ -165,7 +165,7 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea) | |||
165 | struct spu_slb slb; | 165 | struct spu_slb slb; |
166 | int psize; | 166 | int psize; |
167 | 167 | ||
168 | pr_debug("%s\n", __FUNCTION__); | 168 | pr_debug("%s\n", __func__); |
169 | 169 | ||
170 | slb.esid = (ea & ESID_MASK) | SLB_ESID_V; | 170 | slb.esid = (ea & ESID_MASK) | SLB_ESID_V; |
171 | 171 | ||
@@ -215,7 +215,7 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea) | |||
215 | extern int hash_page(unsigned long ea, unsigned long access, unsigned long trap); //XXX | 215 | extern int hash_page(unsigned long ea, unsigned long access, unsigned long trap); //XXX |
216 | static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr) | 216 | static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr) |
217 | { | 217 | { |
218 | pr_debug("%s, %lx, %lx\n", __FUNCTION__, dsisr, ea); | 218 | pr_debug("%s, %lx, %lx\n", __func__, dsisr, ea); |
219 | 219 | ||
220 | /* Handle kernel space hash faults immediately. | 220 | /* Handle kernel space hash faults immediately. |
221 | User hash faults need to be deferred to process context. */ | 221 | User hash faults need to be deferred to process context. */ |
@@ -351,7 +351,7 @@ spu_irq_class_1(int irq, void *data) | |||
351 | __spu_trap_data_seg(spu, dar); | 351 | __spu_trap_data_seg(spu, dar); |
352 | 352 | ||
353 | spin_unlock(&spu->register_lock); | 353 | spin_unlock(&spu->register_lock); |
354 | pr_debug("%s: %lx %lx %lx %lx\n", __FUNCTION__, mask, stat, | 354 | pr_debug("%s: %lx %lx %lx %lx\n", __func__, mask, stat, |
355 | dar, dsisr); | 355 | dar, dsisr); |
356 | 356 | ||
357 | if (stat & CLASS1_STORAGE_FAULT_INTR) | 357 | if (stat & CLASS1_STORAGE_FAULT_INTR) |
@@ -726,7 +726,7 @@ static int __init init_spu_base(void) | |||
726 | 726 | ||
727 | if (ret < 0) { | 727 | if (ret < 0) { |
728 | printk(KERN_WARNING "%s: Error initializing spus\n", | 728 | printk(KERN_WARNING "%s: Error initializing spus\n", |
729 | __FUNCTION__); | 729 | __func__); |
730 | goto out_unregister_sysdev_class; | 730 | goto out_unregister_sysdev_class; |
731 | } | 731 | } |
732 | 732 | ||
diff --git a/arch/powerpc/platforms/cell/spu_callbacks.c b/arch/powerpc/platforms/cell/spu_callbacks.c index dceb8b6a9382..19f6bfdbb933 100644 --- a/arch/powerpc/platforms/cell/spu_callbacks.c +++ b/arch/powerpc/platforms/cell/spu_callbacks.c | |||
@@ -54,7 +54,7 @@ long spu_sys_callback(struct spu_syscall_block *s) | |||
54 | long (*syscall)(u64 a1, u64 a2, u64 a3, u64 a4, u64 a5, u64 a6); | 54 | long (*syscall)(u64 a1, u64 a2, u64 a3, u64 a4, u64 a5, u64 a6); |
55 | 55 | ||
56 | if (s->nr_ret >= ARRAY_SIZE(spu_syscall_table)) { | 56 | if (s->nr_ret >= ARRAY_SIZE(spu_syscall_table)) { |
57 | pr_debug("%s: invalid syscall #%ld", __FUNCTION__, s->nr_ret); | 57 | pr_debug("%s: invalid syscall #%ld", __func__, s->nr_ret); |
58 | return -ENOSYS; | 58 | return -ENOSYS; |
59 | } | 59 | } |
60 | 60 | ||
diff --git a/arch/powerpc/platforms/cell/spu_manage.c b/arch/powerpc/platforms/cell/spu_manage.c index d351bdebf5f1..4c506c1463cd 100644 --- a/arch/powerpc/platforms/cell/spu_manage.c +++ b/arch/powerpc/platforms/cell/spu_manage.c | |||
@@ -92,7 +92,7 @@ static int __init spu_map_interrupts_old(struct spu *spu, | |||
92 | 92 | ||
93 | tmp = of_get_property(np->parent->parent, "node-id", NULL); | 93 | tmp = of_get_property(np->parent->parent, "node-id", NULL); |
94 | if (!tmp) { | 94 | if (!tmp) { |
95 | printk(KERN_WARNING "%s: can't find node-id\n", __FUNCTION__); | 95 | printk(KERN_WARNING "%s: can't find node-id\n", __func__); |
96 | nid = spu->node; | 96 | nid = spu->node; |
97 | } else | 97 | } else |
98 | nid = tmp[0]; | 98 | nid = tmp[0]; |
@@ -296,7 +296,7 @@ static int __init of_enumerate_spus(int (*fn)(void *data)) | |||
296 | ret = fn(node); | 296 | ret = fn(node); |
297 | if (ret) { | 297 | if (ret) { |
298 | printk(KERN_WARNING "%s: Error initializing %s\n", | 298 | printk(KERN_WARNING "%s: Error initializing %s\n", |
299 | __FUNCTION__, node->name); | 299 | __func__, node->name); |
300 | break; | 300 | break; |
301 | } | 301 | } |
302 | n++; | 302 | n++; |
@@ -327,7 +327,7 @@ static int __init of_create_spu(struct spu *spu, void *data) | |||
327 | if (!legacy_map) { | 327 | if (!legacy_map) { |
328 | legacy_map = 1; | 328 | legacy_map = 1; |
329 | printk(KERN_WARNING "%s: Legacy device tree found, " | 329 | printk(KERN_WARNING "%s: Legacy device tree found, " |
330 | "trying to map old style\n", __FUNCTION__); | 330 | "trying to map old style\n", __func__); |
331 | } | 331 | } |
332 | ret = spu_map_device_old(spu); | 332 | ret = spu_map_device_old(spu); |
333 | if (ret) { | 333 | if (ret) { |
@@ -342,7 +342,7 @@ static int __init of_create_spu(struct spu *spu, void *data) | |||
342 | if (!legacy_irq) { | 342 | if (!legacy_irq) { |
343 | legacy_irq = 1; | 343 | legacy_irq = 1; |
344 | printk(KERN_WARNING "%s: Legacy device tree found, " | 344 | printk(KERN_WARNING "%s: Legacy device tree found, " |
345 | "trying old style irq\n", __FUNCTION__); | 345 | "trying old style irq\n", __func__); |
346 | } | 346 | } |
347 | ret = spu_map_interrupts_old(spu, spe); | 347 | ret = spu_map_interrupts_old(spu, spe); |
348 | if (ret) { | 348 | if (ret) { |
diff --git a/arch/powerpc/platforms/cell/spufs/coredump.c b/arch/powerpc/platforms/cell/spufs/coredump.c index 0c6a96b82b2d..b962c3ab470c 100644 --- a/arch/powerpc/platforms/cell/spufs/coredump.c +++ b/arch/powerpc/platforms/cell/spufs/coredump.c | |||
@@ -133,8 +133,6 @@ static struct spu_context *coredump_next_context(int *fd) | |||
133 | if (ctx->flags & SPU_CREATE_NOSCHED) | 133 | if (ctx->flags & SPU_CREATE_NOSCHED) |
134 | continue; | 134 | continue; |
135 | 135 | ||
136 | /* start searching the next fd next time we're called */ | ||
137 | (*fd)++; | ||
138 | break; | 136 | break; |
139 | } | 137 | } |
140 | 138 | ||
@@ -157,6 +155,9 @@ int spufs_coredump_extra_notes_size(void) | |||
157 | break; | 155 | break; |
158 | 156 | ||
159 | size += rc; | 157 | size += rc; |
158 | |||
159 | /* start searching the next fd next time */ | ||
160 | fd++; | ||
160 | } | 161 | } |
161 | 162 | ||
162 | return size; | 163 | return size; |
@@ -239,6 +240,9 @@ int spufs_coredump_extra_notes_write(struct file *file, loff_t *foffset) | |||
239 | } | 240 | } |
240 | 241 | ||
241 | spu_release_saved(ctx); | 242 | spu_release_saved(ctx); |
243 | |||
244 | /* start searching the next fd next time */ | ||
245 | fd++; | ||
242 | } | 246 | } |
243 | 247 | ||
244 | return 0; | 248 | return 0; |
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c index c7df0a6cfa1b..08f44d1971ac 100644 --- a/arch/powerpc/platforms/cell/spufs/file.c +++ b/arch/powerpc/platforms/cell/spufs/file.c | |||
@@ -1336,7 +1336,7 @@ static u64 spufs_signal1_type_get(struct spu_context *ctx) | |||
1336 | return ctx->ops->signal1_type_get(ctx); | 1336 | return ctx->ops->signal1_type_get(ctx); |
1337 | } | 1337 | } |
1338 | DEFINE_SPUFS_ATTRIBUTE(spufs_signal1_type, spufs_signal1_type_get, | 1338 | DEFINE_SPUFS_ATTRIBUTE(spufs_signal1_type, spufs_signal1_type_get, |
1339 | spufs_signal1_type_set, "%llu", SPU_ATTR_ACQUIRE); | 1339 | spufs_signal1_type_set, "%llu\n", SPU_ATTR_ACQUIRE); |
1340 | 1340 | ||
1341 | 1341 | ||
1342 | static int spufs_signal2_type_set(void *data, u64 val) | 1342 | static int spufs_signal2_type_set(void *data, u64 val) |
@@ -1358,7 +1358,7 @@ static u64 spufs_signal2_type_get(struct spu_context *ctx) | |||
1358 | return ctx->ops->signal2_type_get(ctx); | 1358 | return ctx->ops->signal2_type_get(ctx); |
1359 | } | 1359 | } |
1360 | DEFINE_SPUFS_ATTRIBUTE(spufs_signal2_type, spufs_signal2_type_get, | 1360 | DEFINE_SPUFS_ATTRIBUTE(spufs_signal2_type, spufs_signal2_type_get, |
1361 | spufs_signal2_type_set, "%llu", SPU_ATTR_ACQUIRE); | 1361 | spufs_signal2_type_set, "%llu\n", SPU_ATTR_ACQUIRE); |
1362 | 1362 | ||
1363 | #if SPUFS_MMAP_4K | 1363 | #if SPUFS_MMAP_4K |
1364 | static unsigned long spufs_mss_mmap_nopfn(struct vm_area_struct *vma, | 1364 | static unsigned long spufs_mss_mmap_nopfn(struct vm_area_struct *vma, |
@@ -1555,7 +1555,7 @@ void spufs_mfc_callback(struct spu *spu) | |||
1555 | 1555 | ||
1556 | wake_up_all(&ctx->mfc_wq); | 1556 | wake_up_all(&ctx->mfc_wq); |
1557 | 1557 | ||
1558 | pr_debug("%s %s\n", __FUNCTION__, spu->name); | 1558 | pr_debug("%s %s\n", __func__, spu->name); |
1559 | if (ctx->mfc_fasync) { | 1559 | if (ctx->mfc_fasync) { |
1560 | u32 free_elements, tagstatus; | 1560 | u32 free_elements, tagstatus; |
1561 | unsigned int mask; | 1561 | unsigned int mask; |
@@ -1789,7 +1789,7 @@ static unsigned int spufs_mfc_poll(struct file *file,poll_table *wait) | |||
1789 | if (tagstatus & ctx->tagwait) | 1789 | if (tagstatus & ctx->tagwait) |
1790 | mask |= POLLIN | POLLRDNORM; | 1790 | mask |= POLLIN | POLLRDNORM; |
1791 | 1791 | ||
1792 | pr_debug("%s: free %d tagstatus %d tagwait %d\n", __FUNCTION__, | 1792 | pr_debug("%s: free %d tagstatus %d tagwait %d\n", __func__, |
1793 | free_elements, tagstatus, ctx->tagwait); | 1793 | free_elements, tagstatus, ctx->tagwait); |
1794 | 1794 | ||
1795 | return mask; | 1795 | return mask; |
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c index cac69e116776..96bf7c2b86fc 100644 --- a/arch/powerpc/platforms/cell/spufs/run.c +++ b/arch/powerpc/platforms/cell/spufs/run.c | |||
@@ -98,7 +98,7 @@ static int spu_setup_isolated(struct spu_context *ctx) | |||
98 | != MFC_CNTL_PURGE_DMA_COMPLETE) { | 98 | != MFC_CNTL_PURGE_DMA_COMPLETE) { |
99 | if (time_after(jiffies, timeout)) { | 99 | if (time_after(jiffies, timeout)) { |
100 | printk(KERN_ERR "%s: timeout flushing MFC DMA queue\n", | 100 | printk(KERN_ERR "%s: timeout flushing MFC DMA queue\n", |
101 | __FUNCTION__); | 101 | __func__); |
102 | ret = -EIO; | 102 | ret = -EIO; |
103 | goto out; | 103 | goto out; |
104 | } | 104 | } |
@@ -124,7 +124,7 @@ static int spu_setup_isolated(struct spu_context *ctx) | |||
124 | status_loading) { | 124 | status_loading) { |
125 | if (time_after(jiffies, timeout)) { | 125 | if (time_after(jiffies, timeout)) { |
126 | printk(KERN_ERR "%s: timeout waiting for loader\n", | 126 | printk(KERN_ERR "%s: timeout waiting for loader\n", |
127 | __FUNCTION__); | 127 | __func__); |
128 | ret = -EIO; | 128 | ret = -EIO; |
129 | goto out_drop_priv; | 129 | goto out_drop_priv; |
130 | } | 130 | } |
@@ -134,7 +134,7 @@ static int spu_setup_isolated(struct spu_context *ctx) | |||
134 | if (!(status & SPU_STATUS_RUNNING)) { | 134 | if (!(status & SPU_STATUS_RUNNING)) { |
135 | /* If isolated LOAD has failed: run SPU, we will get a stop-and | 135 | /* If isolated LOAD has failed: run SPU, we will get a stop-and |
136 | * signal later. */ | 136 | * signal later. */ |
137 | pr_debug("%s: isolated LOAD failed\n", __FUNCTION__); | 137 | pr_debug("%s: isolated LOAD failed\n", __func__); |
138 | ctx->ops->runcntl_write(ctx, SPU_RUNCNTL_RUNNABLE); | 138 | ctx->ops->runcntl_write(ctx, SPU_RUNCNTL_RUNNABLE); |
139 | ret = -EACCES; | 139 | ret = -EACCES; |
140 | goto out_drop_priv; | 140 | goto out_drop_priv; |
@@ -142,7 +142,7 @@ static int spu_setup_isolated(struct spu_context *ctx) | |||
142 | 142 | ||
143 | if (!(status & SPU_STATUS_ISOLATED_STATE)) { | 143 | if (!(status & SPU_STATUS_ISOLATED_STATE)) { |
144 | /* This isn't allowed by the CBEA, but check anyway */ | 144 | /* This isn't allowed by the CBEA, but check anyway */ |
145 | pr_debug("%s: SPU fell out of isolated mode?\n", __FUNCTION__); | 145 | pr_debug("%s: SPU fell out of isolated mode?\n", __func__); |
146 | ctx->ops->runcntl_write(ctx, SPU_RUNCNTL_STOP); | 146 | ctx->ops->runcntl_write(ctx, SPU_RUNCNTL_STOP); |
147 | ret = -EINVAL; | 147 | ret = -EINVAL; |
148 | goto out_drop_priv; | 148 | goto out_drop_priv; |
@@ -282,7 +282,7 @@ static int spu_handle_restartsys(struct spu_context *ctx, long *spu_ret, | |||
282 | break; | 282 | break; |
283 | default: | 283 | default: |
284 | printk(KERN_WARNING "%s: unexpected return code %ld\n", | 284 | printk(KERN_WARNING "%s: unexpected return code %ld\n", |
285 | __FUNCTION__, *spu_ret); | 285 | __func__, *spu_ret); |
286 | ret = 0; | 286 | ret = 0; |
287 | } | 287 | } |
288 | return ret; | 288 | return ret; |
@@ -323,6 +323,10 @@ static int spu_process_callback(struct spu_context *ctx) | |||
323 | return -EINTR; | 323 | return -EINTR; |
324 | } | 324 | } |
325 | 325 | ||
326 | /* need to re-get the ls, as it may have changed when we released the | ||
327 | * spu */ | ||
328 | ls = (void __iomem *)ctx->ops->get_ls(ctx); | ||
329 | |||
326 | /* write result, jump over indirect pointer */ | 330 | /* write result, jump over indirect pointer */ |
327 | memcpy_toio(ls + ls_pointer, &spu_ret, sizeof(spu_ret)); | 331 | memcpy_toio(ls + ls_pointer, &spu_ret, sizeof(spu_ret)); |
328 | ctx->ops->npc_write(ctx, npc); | 332 | ctx->ops->npc_write(ctx, npc); |
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c index e9dc7a55d1b9..d2a1249d36dd 100644 --- a/arch/powerpc/platforms/cell/spufs/switch.c +++ b/arch/powerpc/platforms/cell/spufs/switch.c | |||
@@ -1815,6 +1815,7 @@ static void save_csa(struct spu_state *prev, struct spu *spu) | |||
1815 | save_mfc_csr_ato(prev, spu); /* Step 24. */ | 1815 | save_mfc_csr_ato(prev, spu); /* Step 24. */ |
1816 | save_mfc_tclass_id(prev, spu); /* Step 25. */ | 1816 | save_mfc_tclass_id(prev, spu); /* Step 25. */ |
1817 | set_mfc_tclass_id(prev, spu); /* Step 26. */ | 1817 | set_mfc_tclass_id(prev, spu); /* Step 26. */ |
1818 | save_mfc_cmd(prev, spu); /* Step 26a - moved from 44. */ | ||
1818 | purge_mfc_queue(prev, spu); /* Step 27. */ | 1819 | purge_mfc_queue(prev, spu); /* Step 27. */ |
1819 | wait_purge_complete(prev, spu); /* Step 28. */ | 1820 | wait_purge_complete(prev, spu); /* Step 28. */ |
1820 | setup_mfc_sr1(prev, spu); /* Step 30. */ | 1821 | setup_mfc_sr1(prev, spu); /* Step 30. */ |
@@ -1831,7 +1832,6 @@ static void save_csa(struct spu_state *prev, struct spu *spu) | |||
1831 | save_ppuint_mb(prev, spu); /* Step 41. */ | 1832 | save_ppuint_mb(prev, spu); /* Step 41. */ |
1832 | save_ch_part1(prev, spu); /* Step 42. */ | 1833 | save_ch_part1(prev, spu); /* Step 42. */ |
1833 | save_spu_mb(prev, spu); /* Step 43. */ | 1834 | save_spu_mb(prev, spu); /* Step 43. */ |
1834 | save_mfc_cmd(prev, spu); /* Step 44. */ | ||
1835 | reset_ch(prev, spu); /* Step 45. */ | 1835 | reset_ch(prev, spu); /* Step 45. */ |
1836 | } | 1836 | } |
1837 | 1837 | ||
diff --git a/arch/powerpc/platforms/celleb/beat.c b/arch/powerpc/platforms/celleb/beat.c index 93ebb7d85120..b64b171f245b 100644 --- a/arch/powerpc/platforms/celleb/beat.c +++ b/arch/powerpc/platforms/celleb/beat.c | |||
@@ -48,6 +48,7 @@ void beat_power_off(void) | |||
48 | } | 48 | } |
49 | 49 | ||
50 | u64 beat_halt_code = 0x1000000000000000UL; | 50 | u64 beat_halt_code = 0x1000000000000000UL; |
51 | EXPORT_SYMBOL(beat_halt_code); | ||
51 | 52 | ||
52 | void beat_halt(void) | 53 | void beat_halt(void) |
53 | { | 54 | { |
@@ -94,9 +95,8 @@ ssize_t beat_nvram_read(char *buf, size_t count, loff_t *index) | |||
94 | len = count; | 95 | len = count; |
95 | if (len > BEAT_NVRW_CNT) | 96 | if (len > BEAT_NVRW_CNT) |
96 | len = BEAT_NVRW_CNT; | 97 | len = BEAT_NVRW_CNT; |
97 | if (beat_eeprom_read(i, len, p)) { | 98 | if (beat_eeprom_read(i, len, p)) |
98 | return -EIO; | 99 | return -EIO; |
99 | } | ||
100 | 100 | ||
101 | p += len; | 101 | p += len; |
102 | i += len; | 102 | i += len; |
@@ -121,9 +121,8 @@ ssize_t beat_nvram_write(char *buf, size_t count, loff_t *index) | |||
121 | len = count; | 121 | len = count; |
122 | if (len > BEAT_NVRW_CNT) | 122 | if (len > BEAT_NVRW_CNT) |
123 | len = BEAT_NVRW_CNT; | 123 | len = BEAT_NVRW_CNT; |
124 | if (beat_eeprom_write(i, len, p)) { | 124 | if (beat_eeprom_write(i, len, p)) |
125 | return -EIO; | 125 | return -EIO; |
126 | } | ||
127 | 126 | ||
128 | p += len; | 127 | p += len; |
129 | i += len; | 128 | i += len; |
@@ -149,13 +148,14 @@ int64_t beat_get_term_char(u64 vterm, u64 *len, u64 *t1, u64 *t2) | |||
149 | u64 db[2]; | 148 | u64 db[2]; |
150 | s64 ret; | 149 | s64 ret; |
151 | 150 | ||
152 | ret = beat_get_characters_from_console(vterm, len, (u8*)db); | 151 | ret = beat_get_characters_from_console(vterm, len, (u8 *)db); |
153 | if (ret == 0) { | 152 | if (ret == 0) { |
154 | *t1 = db[0]; | 153 | *t1 = db[0]; |
155 | *t2 = db[1]; | 154 | *t2 = db[1]; |
156 | } | 155 | } |
157 | return ret; | 156 | return ret; |
158 | } | 157 | } |
158 | EXPORT_SYMBOL(beat_get_term_char); | ||
159 | 159 | ||
160 | int64_t beat_put_term_char(u64 vterm, u64 len, u64 t1, u64 t2) | 160 | int64_t beat_put_term_char(u64 vterm, u64 len, u64 t1, u64 t2) |
161 | { | 161 | { |
@@ -163,8 +163,9 @@ int64_t beat_put_term_char(u64 vterm, u64 len, u64 t1, u64 t2) | |||
163 | 163 | ||
164 | db[0] = t1; | 164 | db[0] = t1; |
165 | db[1] = t2; | 165 | db[1] = t2; |
166 | return beat_put_characters_to_console(vterm, len, (u8*)db); | 166 | return beat_put_characters_to_console(vterm, len, (u8 *)db); |
167 | } | 167 | } |
168 | EXPORT_SYMBOL(beat_put_term_char); | ||
168 | 169 | ||
169 | void beat_power_save(void) | 170 | void beat_power_save(void) |
170 | { | 171 | { |
@@ -261,7 +262,3 @@ static int __init beat_event_init(void) | |||
261 | } | 262 | } |
262 | 263 | ||
263 | device_initcall(beat_event_init); | 264 | device_initcall(beat_event_init); |
264 | |||
265 | EXPORT_SYMBOL(beat_get_term_char); | ||
266 | EXPORT_SYMBOL(beat_put_term_char); | ||
267 | EXPORT_SYMBOL(beat_halt_code); | ||
diff --git a/arch/powerpc/platforms/celleb/beat.h b/arch/powerpc/platforms/celleb/beat.h index ac82ac35b991..32c8efcedc80 100644 --- a/arch/powerpc/platforms/celleb/beat.h +++ b/arch/powerpc/platforms/celleb/beat.h | |||
@@ -21,8 +21,8 @@ | |||
21 | #ifndef _CELLEB_BEAT_H | 21 | #ifndef _CELLEB_BEAT_H |
22 | #define _CELLEB_BEAT_H | 22 | #define _CELLEB_BEAT_H |
23 | 23 | ||
24 | int64_t beat_get_term_char(uint64_t,uint64_t*,uint64_t*,uint64_t*); | 24 | int64_t beat_get_term_char(uint64_t, uint64_t *, uint64_t *, uint64_t *); |
25 | int64_t beat_put_term_char(uint64_t,uint64_t,uint64_t,uint64_t); | 25 | int64_t beat_put_term_char(uint64_t, uint64_t, uint64_t, uint64_t); |
26 | int64_t beat_repository_encode(int, const char *, uint64_t[4]); | 26 | int64_t beat_repository_encode(int, const char *, uint64_t[4]); |
27 | void beat_restart(char *); | 27 | void beat_restart(char *); |
28 | void beat_power_off(void); | 28 | void beat_power_off(void); |
diff --git a/arch/powerpc/platforms/celleb/beat_wrapper.h b/arch/powerpc/platforms/celleb/beat_wrapper.h index cbc1487df7de..b47dfda48d06 100644 --- a/arch/powerpc/platforms/celleb/beat_wrapper.h +++ b/arch/powerpc/platforms/celleb/beat_wrapper.h | |||
@@ -197,7 +197,8 @@ static inline s64 beat_put_characters_to_console(u64 termno, u64 len, | |||
197 | u64 b[2]; | 197 | u64 b[2]; |
198 | 198 | ||
199 | memcpy(b, buffer, len); | 199 | memcpy(b, buffer, len); |
200 | return beat_hcall_norets(HV_put_characters_to_console, termno, len, b[0], b[1]); | 200 | return beat_hcall_norets(HV_put_characters_to_console, termno, len, |
201 | b[0], b[1]); | ||
201 | } | 202 | } |
202 | 203 | ||
203 | static inline s64 beat_get_spe_privileged_state_1_registers( | 204 | static inline s64 beat_get_spe_privileged_state_1_registers( |
diff --git a/arch/powerpc/platforms/celleb/htab.c b/arch/powerpc/platforms/celleb/htab.c index fbf27c74ebda..81467ff055c8 100644 --- a/arch/powerpc/platforms/celleb/htab.c +++ b/arch/powerpc/platforms/celleb/htab.c | |||
@@ -35,9 +35,9 @@ | |||
35 | #include "beat_wrapper.h" | 35 | #include "beat_wrapper.h" |
36 | 36 | ||
37 | #ifdef DEBUG_LOW | 37 | #ifdef DEBUG_LOW |
38 | #define DBG_LOW(fmt...) do { udbg_printf(fmt); } while(0) | 38 | #define DBG_LOW(fmt...) do { udbg_printf(fmt); } while (0) |
39 | #else | 39 | #else |
40 | #define DBG_LOW(fmt...) do { } while(0) | 40 | #define DBG_LOW(fmt...) do { } while (0) |
41 | #endif | 41 | #endif |
42 | 42 | ||
43 | static DEFINE_SPINLOCK(beat_htab_lock); | 43 | static DEFINE_SPINLOCK(beat_htab_lock); |
@@ -116,7 +116,8 @@ static long beat_lpar_hpte_insert(unsigned long hpte_group, | |||
116 | hpte_r &= ~_PAGE_COHERENT; | 116 | hpte_r &= ~_PAGE_COHERENT; |
117 | 117 | ||
118 | spin_lock(&beat_htab_lock); | 118 | spin_lock(&beat_htab_lock); |
119 | if ((lpar_rc = beat_read_mask(hpte_group)) == 0) { | 119 | lpar_rc = beat_read_mask(hpte_group); |
120 | if (lpar_rc == 0) { | ||
120 | if (!(vflags & HPTE_V_BOLTED)) | 121 | if (!(vflags & HPTE_V_BOLTED)) |
121 | DBG_LOW(" full\n"); | 122 | DBG_LOW(" full\n"); |
122 | spin_unlock(&beat_htab_lock); | 123 | spin_unlock(&beat_htab_lock); |
diff --git a/arch/powerpc/platforms/celleb/interrupt.c b/arch/powerpc/platforms/celleb/interrupt.c index c7c68ca70c82..69562a867876 100644 --- a/arch/powerpc/platforms/celleb/interrupt.c +++ b/arch/powerpc/platforms/celleb/interrupt.c | |||
@@ -34,7 +34,7 @@ static DEFINE_SPINLOCK(beatic_irq_mask_lock); | |||
34 | static uint64_t beatic_irq_mask_enable[(MAX_IRQS+255)/64]; | 34 | static uint64_t beatic_irq_mask_enable[(MAX_IRQS+255)/64]; |
35 | static uint64_t beatic_irq_mask_ack[(MAX_IRQS+255)/64]; | 35 | static uint64_t beatic_irq_mask_ack[(MAX_IRQS+255)/64]; |
36 | 36 | ||
37 | static struct irq_host *beatic_host = NULL; | 37 | static struct irq_host *beatic_host; |
38 | 38 | ||
39 | /* | 39 | /* |
40 | * In this implementation, "virq" == "IRQ plug number", | 40 | * In this implementation, "virq" == "IRQ plug number", |
@@ -49,13 +49,13 @@ static inline void beatic_update_irq_mask(unsigned int irq_plug) | |||
49 | 49 | ||
50 | off = (irq_plug / 256) * 4; | 50 | off = (irq_plug / 256) * 4; |
51 | masks[0] = beatic_irq_mask_enable[off + 0] | 51 | masks[0] = beatic_irq_mask_enable[off + 0] |
52 | & beatic_irq_mask_ack[off + 0]; | 52 | & beatic_irq_mask_ack[off + 0]; |
53 | masks[1] = beatic_irq_mask_enable[off + 1] | 53 | masks[1] = beatic_irq_mask_enable[off + 1] |
54 | & beatic_irq_mask_ack[off + 1]; | 54 | & beatic_irq_mask_ack[off + 1]; |
55 | masks[2] = beatic_irq_mask_enable[off + 2] | 55 | masks[2] = beatic_irq_mask_enable[off + 2] |
56 | & beatic_irq_mask_ack[off + 2]; | 56 | & beatic_irq_mask_ack[off + 2]; |
57 | masks[3] = beatic_irq_mask_enable[off + 3] | 57 | masks[3] = beatic_irq_mask_enable[off + 3] |
58 | & beatic_irq_mask_ack[off + 3]; | 58 | & beatic_irq_mask_ack[off + 3]; |
59 | if (beat_set_interrupt_mask(irq_plug&~255UL, | 59 | if (beat_set_interrupt_mask(irq_plug&~255UL, |
60 | masks[0], masks[1], masks[2], masks[3]) != 0) | 60 | masks[0], masks[1], masks[2], masks[3]) != 0) |
61 | panic("Failed to set mask IRQ!"); | 61 | panic("Failed to set mask IRQ!"); |
@@ -96,7 +96,8 @@ static void beatic_end_irq(unsigned int irq_plug) | |||
96 | s64 err; | 96 | s64 err; |
97 | unsigned long flags; | 97 | unsigned long flags; |
98 | 98 | ||
99 | if ((err = beat_downcount_of_interrupt(irq_plug)) != 0) { | 99 | err = beat_downcount_of_interrupt(irq_plug); |
100 | if (err != 0) { | ||
100 | if ((err & 0xFFFFFFFF) != 0xFFFFFFF5) /* -11: wrong state */ | 101 | if ((err & 0xFFFFFFFF) != 0xFFFFFFF5) /* -11: wrong state */ |
101 | panic("Failed to downcount IRQ! Error = %16lx", err); | 102 | panic("Failed to downcount IRQ! Error = %16lx", err); |
102 | 103 | ||
@@ -138,7 +139,8 @@ static int beatic_pic_host_map(struct irq_host *h, unsigned int virq, | |||
138 | struct irq_desc *desc = get_irq_desc(virq); | 139 | struct irq_desc *desc = get_irq_desc(virq); |
139 | int64_t err; | 140 | int64_t err; |
140 | 141 | ||
141 | if ((err = beat_construct_and_connect_irq_plug(virq, hw)) < 0) | 142 | err = beat_construct_and_connect_irq_plug(virq, hw); |
143 | if (err < 0) | ||
142 | return -EIO; | 144 | return -EIO; |
143 | 145 | ||
144 | desc->status |= IRQ_LEVEL; | 146 | desc->status |= IRQ_LEVEL; |
@@ -202,22 +204,22 @@ static inline unsigned int beatic_get_irq_plug(void) | |||
202 | beat_detect_pending_interrupts(i, pending); | 204 | beat_detect_pending_interrupts(i, pending); |
203 | __asm__ ("cntlzd %0,%1":"=r"(ub): | 205 | __asm__ ("cntlzd %0,%1":"=r"(ub): |
204 | "r"(pending[0] & beatic_irq_mask_enable[i/64+0] | 206 | "r"(pending[0] & beatic_irq_mask_enable[i/64+0] |
205 | & beatic_irq_mask_ack[i/64+0])); | 207 | & beatic_irq_mask_ack[i/64+0])); |
206 | if (ub != 64) | 208 | if (ub != 64) |
207 | return i + ub + 0; | 209 | return i + ub + 0; |
208 | __asm__ ("cntlzd %0,%1":"=r"(ub): | 210 | __asm__ ("cntlzd %0,%1":"=r"(ub): |
209 | "r"(pending[1] & beatic_irq_mask_enable[i/64+1] | 211 | "r"(pending[1] & beatic_irq_mask_enable[i/64+1] |
210 | & beatic_irq_mask_ack[i/64+1])); | 212 | & beatic_irq_mask_ack[i/64+1])); |
211 | if (ub != 64) | 213 | if (ub != 64) |
212 | return i + ub + 64; | 214 | return i + ub + 64; |
213 | __asm__ ("cntlzd %0,%1":"=r"(ub): | 215 | __asm__ ("cntlzd %0,%1":"=r"(ub): |
214 | "r"(pending[2] & beatic_irq_mask_enable[i/64+2] | 216 | "r"(pending[2] & beatic_irq_mask_enable[i/64+2] |
215 | & beatic_irq_mask_ack[i/64+2])); | 217 | & beatic_irq_mask_ack[i/64+2])); |
216 | if (ub != 64) | 218 | if (ub != 64) |
217 | return i + ub + 128; | 219 | return i + ub + 128; |
218 | __asm__ ("cntlzd %0,%1":"=r"(ub): | 220 | __asm__ ("cntlzd %0,%1":"=r"(ub): |
219 | "r"(pending[3] & beatic_irq_mask_enable[i/64+3] | 221 | "r"(pending[3] & beatic_irq_mask_enable[i/64+3] |
220 | & beatic_irq_mask_ack[i/64+3])); | 222 | & beatic_irq_mask_ack[i/64+3])); |
221 | if (ub != 64) | 223 | if (ub != 64) |
222 | return i + ub + 192; | 224 | return i + ub + 192; |
223 | } | 225 | } |
@@ -250,7 +252,7 @@ void __init beatic_init_IRQ(void) | |||
250 | 252 | ||
251 | /* Allocate an irq host */ | 253 | /* Allocate an irq host */ |
252 | beatic_host = irq_alloc_host(NULL, IRQ_HOST_MAP_NOMAP, 0, | 254 | beatic_host = irq_alloc_host(NULL, IRQ_HOST_MAP_NOMAP, 0, |
253 | &beatic_pic_host_ops, | 255 | &beatic_pic_host_ops, |
254 | 0); | 256 | 0); |
255 | BUG_ON(beatic_host == NULL); | 257 | BUG_ON(beatic_host == NULL); |
256 | irq_set_default_host(beatic_host); | 258 | irq_set_default_host(beatic_host); |
diff --git a/arch/powerpc/platforms/celleb/scc_epci.c b/arch/powerpc/platforms/celleb/scc_epci.c index a3c7cfbcb323..a999b393f6f6 100644 --- a/arch/powerpc/platforms/celleb/scc_epci.c +++ b/arch/powerpc/platforms/celleb/scc_epci.c | |||
@@ -161,9 +161,9 @@ static PCI_IO_ADDR celleb_epci_make_config_addr( | |||
161 | if (bus != hose->bus) | 161 | if (bus != hose->bus) |
162 | addr = celleb_epci_get_epci_cfg(hose) + | 162 | addr = celleb_epci_get_epci_cfg(hose) + |
163 | (((bus->number & 0xff) << 16) | 163 | (((bus->number & 0xff) << 16) |
164 | | ((devfn & 0xff) << 8) | 164 | | ((devfn & 0xff) << 8) |
165 | | (where & 0xff) | 165 | | (where & 0xff) |
166 | | 0x01000000); | 166 | | 0x01000000); |
167 | else | 167 | else |
168 | addr = celleb_epci_get_epci_cfg(hose) + | 168 | addr = celleb_epci_get_epci_cfg(hose) + |
169 | (((devfn & 0xff) << 8) | (where & 0xff)); | 169 | (((devfn & 0xff) << 8) | (where & 0xff)); |
@@ -174,7 +174,7 @@ static PCI_IO_ADDR celleb_epci_make_config_addr( | |||
174 | } | 174 | } |
175 | 175 | ||
176 | static int celleb_epci_read_config(struct pci_bus *bus, | 176 | static int celleb_epci_read_config(struct pci_bus *bus, |
177 | unsigned int devfn, int where, int size, u32 * val) | 177 | unsigned int devfn, int where, int size, u32 *val) |
178 | { | 178 | { |
179 | PCI_IO_ADDR epci_base; | 179 | PCI_IO_ADDR epci_base; |
180 | PCI_IO_ADDR addr; | 180 | PCI_IO_ADDR addr; |
diff --git a/arch/powerpc/platforms/celleb/scc_sio.c b/arch/powerpc/platforms/celleb/scc_sio.c index 610008211ca1..3a16c5b3c464 100644 --- a/arch/powerpc/platforms/celleb/scc_sio.c +++ b/arch/powerpc/platforms/celleb/scc_sio.c | |||
@@ -28,7 +28,7 @@ | |||
28 | 28 | ||
29 | /* sio irq0=0xb00010022 irq0=0xb00010023 irq2=0xb00010024 | 29 | /* sio irq0=0xb00010022 irq0=0xb00010023 irq2=0xb00010024 |
30 | mmio=0xfff000-0x1000,0xff2000-0x1000 */ | 30 | mmio=0xfff000-0x1000,0xff2000-0x1000 */ |
31 | static int txx9_serial_bitmap __initdata = 0; | 31 | static int txx9_serial_bitmap __initdata; |
32 | 32 | ||
33 | static struct { | 33 | static struct { |
34 | uint32_t offset; | 34 | uint32_t offset; |
@@ -84,7 +84,7 @@ static int __init txx9_serial_config(char *ptr) | |||
84 | int i; | 84 | int i; |
85 | 85 | ||
86 | for (;;) { | 86 | for (;;) { |
87 | switch(get_option(&ptr, &i)) { | 87 | switch (get_option(&ptr, &i)) { |
88 | default: | 88 | default: |
89 | return 0; | 89 | return 0; |
90 | case 2: | 90 | case 2: |
diff --git a/arch/powerpc/platforms/celleb/spu_priv1.c b/arch/powerpc/platforms/celleb/spu_priv1.c index 2bf6700f747a..bcc17f7fe8ad 100644 --- a/arch/powerpc/platforms/celleb/spu_priv1.c +++ b/arch/powerpc/platforms/celleb/spu_priv1.c | |||
@@ -183,8 +183,7 @@ static u64 resource_allocation_enable_get(struct spu *spu) | |||
183 | return enable; | 183 | return enable; |
184 | } | 184 | } |
185 | 185 | ||
186 | const struct spu_priv1_ops spu_priv1_beat_ops = | 186 | const struct spu_priv1_ops spu_priv1_beat_ops = { |
187 | { | ||
188 | .int_mask_and = int_mask_and, | 187 | .int_mask_and = int_mask_and, |
189 | .int_mask_or = int_mask_or, | 188 | .int_mask_or = int_mask_or, |
190 | .int_mask_set = int_mask_set, | 189 | .int_mask_set = int_mask_set, |
diff --git a/arch/powerpc/platforms/celleb/udbg_beat.c b/arch/powerpc/platforms/celleb/udbg_beat.c index d888c4674c62..6b418f6b6175 100644 --- a/arch/powerpc/platforms/celleb/udbg_beat.c +++ b/arch/powerpc/platforms/celleb/udbg_beat.c | |||
@@ -54,7 +54,8 @@ static int udbg_getc_poll_beat(void) | |||
54 | if (inbuflen == 0) { | 54 | if (inbuflen == 0) { |
55 | /* get some more chars. */ | 55 | /* get some more chars. */ |
56 | inbuflen = 0; | 56 | inbuflen = 0; |
57 | rc = beat_get_term_char(celleb_vtermno, &inbuflen, inbuf+0, inbuf+1); | 57 | rc = beat_get_term_char(celleb_vtermno, &inbuflen, |
58 | inbuf+0, inbuf+1); | ||
58 | if (rc != 0) | 59 | if (rc != 0) |
59 | inbuflen = 0; /* otherwise inbuflen is garbage */ | 60 | inbuflen = 0; /* otherwise inbuflen is garbage */ |
60 | } | 61 | } |
@@ -78,7 +79,7 @@ static int udbg_getc_beat(void) | |||
78 | if (ch == -1) { | 79 | if (ch == -1) { |
79 | /* This shouldn't be needed...but... */ | 80 | /* This shouldn't be needed...but... */ |
80 | volatile unsigned long delay; | 81 | volatile unsigned long delay; |
81 | for (delay=0; delay < 2000000; delay++) | 82 | for (delay = 0; delay < 2000000; delay++) |
82 | ; | 83 | ; |
83 | } else { | 84 | } else { |
84 | return ch; | 85 | return ch; |
diff --git a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c index d4f8bf581e3a..84e2d78b9a62 100644 --- a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c +++ b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c | |||
@@ -117,11 +117,11 @@ static void __init mpc7448_hpc2_init_IRQ(void) | |||
117 | } | 117 | } |
118 | 118 | ||
119 | if (mpic_paddr == 0) { | 119 | if (mpic_paddr == 0) { |
120 | printk("%s: No tsi108 PIC found !\n", __FUNCTION__); | 120 | printk("%s: No tsi108 PIC found !\n", __func__); |
121 | return; | 121 | return; |
122 | } | 122 | } |
123 | 123 | ||
124 | DBG("%s: tsi108 pic phys_addr = 0x%x\n", __FUNCTION__, | 124 | DBG("%s: tsi108 pic phys_addr = 0x%x\n", __func__, |
125 | (u32) mpic_paddr); | 125 | (u32) mpic_paddr); |
126 | 126 | ||
127 | mpic = mpic_alloc(tsi_pic, mpic_paddr, | 127 | mpic = mpic_alloc(tsi_pic, mpic_paddr, |
@@ -140,17 +140,17 @@ static void __init mpc7448_hpc2_init_IRQ(void) | |||
140 | #ifdef CONFIG_PCI | 140 | #ifdef CONFIG_PCI |
141 | tsi_pci = of_find_node_by_type(NULL, "pci"); | 141 | tsi_pci = of_find_node_by_type(NULL, "pci"); |
142 | if (tsi_pci == NULL) { | 142 | if (tsi_pci == NULL) { |
143 | printk("%s: No tsi108 pci node found !\n", __FUNCTION__); | 143 | printk("%s: No tsi108 pci node found !\n", __func__); |
144 | return; | 144 | return; |
145 | } | 145 | } |
146 | cascade_node = of_find_node_by_type(NULL, "pic-router"); | 146 | cascade_node = of_find_node_by_type(NULL, "pic-router"); |
147 | if (cascade_node == NULL) { | 147 | if (cascade_node == NULL) { |
148 | printk("%s: No tsi108 pci cascade node found !\n", __FUNCTION__); | 148 | printk("%s: No tsi108 pci cascade node found !\n", __func__); |
149 | return; | 149 | return; |
150 | } | 150 | } |
151 | 151 | ||
152 | cascade_pci_irq = irq_of_parse_and_map(tsi_pci, 0); | 152 | cascade_pci_irq = irq_of_parse_and_map(tsi_pci, 0); |
153 | DBG("%s: tsi108 cascade_pci_irq = 0x%x\n", __FUNCTION__, | 153 | DBG("%s: tsi108 cascade_pci_irq = 0x%x\n", __func__, |
154 | (u32) cascade_pci_irq); | 154 | (u32) cascade_pci_irq); |
155 | tsi108_pci_int_init(cascade_node); | 155 | tsi108_pci_int_init(cascade_node); |
156 | set_irq_data(cascade_pci_irq, mpic); | 156 | set_irq_data(cascade_pci_irq, mpic); |
diff --git a/arch/powerpc/platforms/embedded6xx/prpmc2800.c b/arch/powerpc/platforms/embedded6xx/prpmc2800.c index 653a5eb91c90..5a19b9a1457c 100644 --- a/arch/powerpc/platforms/embedded6xx/prpmc2800.c +++ b/arch/powerpc/platforms/embedded6xx/prpmc2800.c | |||
@@ -49,13 +49,13 @@ static void __init prpmc2800_setup_arch(void) | |||
49 | * ioremap mpp and gpp registers in case they are later | 49 | * ioremap mpp and gpp registers in case they are later |
50 | * needed by prpmc2800_reset_board(). | 50 | * needed by prpmc2800_reset_board(). |
51 | */ | 51 | */ |
52 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64x60-mpp"); | 52 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64360-mpp"); |
53 | reg = of_get_property(np, "reg", NULL); | 53 | reg = of_get_property(np, "reg", NULL); |
54 | paddr = of_translate_address(np, reg); | 54 | paddr = of_translate_address(np, reg); |
55 | of_node_put(np); | 55 | of_node_put(np); |
56 | mv64x60_mpp_reg_base = ioremap(paddr, reg[1]); | 56 | mv64x60_mpp_reg_base = ioremap(paddr, reg[1]); |
57 | 57 | ||
58 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64x60-gpp"); | 58 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64360-gpp"); |
59 | reg = of_get_property(np, "reg", NULL); | 59 | reg = of_get_property(np, "reg", NULL); |
60 | paddr = of_translate_address(np, reg); | 60 | paddr = of_translate_address(np, reg); |
61 | of_node_put(np); | 61 | of_node_put(np); |
diff --git a/arch/powerpc/platforms/iseries/exception.S b/arch/powerpc/platforms/iseries/exception.S index 5381038f0881..c775cd4b3d6e 100644 --- a/arch/powerpc/platforms/iseries/exception.S +++ b/arch/powerpc/platforms/iseries/exception.S | |||
@@ -38,11 +38,19 @@ | |||
38 | 38 | ||
39 | .globl system_reset_iSeries | 39 | .globl system_reset_iSeries |
40 | system_reset_iSeries: | 40 | system_reset_iSeries: |
41 | mfspr r13,SPRN_SPRG3 /* Get paca address */ | 41 | mfspr r13,SPRN_SPRG3 /* Get alpaca address */ |
42 | LOAD_REG_IMMEDIATE(r23, alpaca) | ||
43 | li r0,ALPACA_SIZE | ||
44 | sub r23,r13,r23 | ||
45 | divdu r23,r23,r0 /* r23 has cpu number */ | ||
46 | LOAD_REG_IMMEDIATE(r13, paca) | ||
47 | mulli r0,r23,PACA_SIZE | ||
48 | add r13,r13,r0 | ||
49 | mtspr SPRN_SPRG3,r13 /* Save it away for the future */ | ||
42 | mfmsr r24 | 50 | mfmsr r24 |
43 | ori r24,r24,MSR_RI | 51 | ori r24,r24,MSR_RI |
44 | mtmsrd r24 /* RI on */ | 52 | mtmsrd r24 /* RI on */ |
45 | lhz r24,PACAPACAINDEX(r13) /* Get processor # */ | 53 | mr r24,r23 |
46 | cmpwi 0,r24,0 /* Are we processor 0? */ | 54 | cmpwi 0,r24,0 /* Are we processor 0? */ |
47 | bne 1f | 55 | bne 1f |
48 | b .__start_initialization_iSeries /* Start up the first processor */ | 56 | b .__start_initialization_iSeries /* Start up the first processor */ |
diff --git a/arch/powerpc/platforms/iseries/ipl_parms.h b/arch/powerpc/platforms/iseries/ipl_parms.h index 77c135ddbf1b..83e4ca42fc57 100644 --- a/arch/powerpc/platforms/iseries/ipl_parms.h +++ b/arch/powerpc/platforms/iseries/ipl_parms.h | |||
@@ -65,6 +65,4 @@ struct ItIplParmsReal { | |||
65 | u64 xRsvd13; // Reserved x38-x3F | 65 | u64 xRsvd13; // Reserved x38-x3F |
66 | }; | 66 | }; |
67 | 67 | ||
68 | extern struct ItIplParmsReal xItIplParmsReal; | ||
69 | |||
70 | #endif /* _ISERIES_IPL_PARMS_H */ | 68 | #endif /* _ISERIES_IPL_PARMS_H */ |
diff --git a/arch/powerpc/platforms/iseries/lpardata.c b/arch/powerpc/platforms/iseries/lpardata.c index 8162049bb04d..98bd2d37038a 100644 --- a/arch/powerpc/platforms/iseries/lpardata.c +++ b/arch/powerpc/platforms/iseries/lpardata.c | |||
@@ -14,10 +14,10 @@ | |||
14 | #include <asm/ptrace.h> | 14 | #include <asm/ptrace.h> |
15 | #include <asm/abs_addr.h> | 15 | #include <asm/abs_addr.h> |
16 | #include <asm/lppaca.h> | 16 | #include <asm/lppaca.h> |
17 | #include <asm/iseries/it_lp_reg_save.h> | ||
18 | #include <asm/paca.h> | 17 | #include <asm/paca.h> |
19 | #include <asm/iseries/lpar_map.h> | 18 | #include <asm/iseries/lpar_map.h> |
20 | #include <asm/iseries/it_lp_queue.h> | 19 | #include <asm/iseries/it_lp_queue.h> |
20 | #include <asm/iseries/alpaca.h> | ||
21 | 21 | ||
22 | #include "naca.h" | 22 | #include "naca.h" |
23 | #include "vpd_areas.h" | 23 | #include "vpd_areas.h" |
@@ -31,7 +31,7 @@ | |||
31 | /* The HvReleaseData is the root of the information shared between | 31 | /* The HvReleaseData is the root of the information shared between |
32 | * the hypervisor and Linux. | 32 | * the hypervisor and Linux. |
33 | */ | 33 | */ |
34 | struct HvReleaseData hvReleaseData = { | 34 | const struct HvReleaseData hvReleaseData = { |
35 | .xDesc = 0xc8a5d9c4, /* "HvRD" ebcdic */ | 35 | .xDesc = 0xc8a5d9c4, /* "HvRD" ebcdic */ |
36 | .xSize = sizeof(struct HvReleaseData), | 36 | .xSize = sizeof(struct HvReleaseData), |
37 | .xVpdAreasPtrOffset = offsetof(struct naca_struct, xItVpdAreas), | 37 | .xVpdAreasPtrOffset = offsetof(struct naca_struct, xItVpdAreas), |
@@ -61,6 +61,63 @@ struct naca_struct naca = { | |||
61 | .xRamDiskSize = 0, | 61 | .xRamDiskSize = 0, |
62 | }; | 62 | }; |
63 | 63 | ||
64 | struct ItLpRegSave { | ||
65 | u32 xDesc; // Eye catcher "LpRS" ebcdic 000-003 | ||
66 | u16 xSize; // Size of this class 004-005 | ||
67 | u8 xInUse; // Area is live 006-007 | ||
68 | u8 xRsvd1[9]; // Reserved 007-00F | ||
69 | |||
70 | u8 xFixedRegSave[352]; // Fixed Register Save Area 010-16F | ||
71 | u32 xCTRL; // Control Register 170-173 | ||
72 | u32 xDEC; // Decrementer 174-177 | ||
73 | u32 xFPSCR; // FP Status and Control Reg 178-17B | ||
74 | u32 xPVR; // Processor Version Number 17C-17F | ||
75 | |||
76 | u64 xMMCR0; // Monitor Mode Control Reg 0 180-187 | ||
77 | u32 xPMC1; // Perf Monitor Counter 1 188-18B | ||
78 | u32 xPMC2; // Perf Monitor Counter 2 18C-18F | ||
79 | u32 xPMC3; // Perf Monitor Counter 3 190-193 | ||
80 | u32 xPMC4; // Perf Monitor Counter 4 194-197 | ||
81 | u32 xPIR; // Processor ID Reg 198-19B | ||
82 | |||
83 | u32 xMMCR1; // Monitor Mode Control Reg 1 19C-19F | ||
84 | u32 xMMCRA; // Monitor Mode Control Reg A 1A0-1A3 | ||
85 | u32 xPMC5; // Perf Monitor Counter 5 1A4-1A7 | ||
86 | u32 xPMC6; // Perf Monitor Counter 6 1A8-1AB | ||
87 | u32 xPMC7; // Perf Monitor Counter 7 1AC-1AF | ||
88 | u32 xPMC8; // Perf Monitor Counter 8 1B0-1B3 | ||
89 | u32 xTSC; // Thread Switch Control 1B4-1B7 | ||
90 | u32 xTST; // Thread Switch Timeout 1B8-1BB | ||
91 | u32 xRsvd; // Reserved 1BC-1BF | ||
92 | |||
93 | u64 xACCR; // Address Compare Control Reg 1C0-1C7 | ||
94 | u64 xIMR; // Instruction Match Register 1C8-1CF | ||
95 | u64 xSDR1; // Storage Description Reg 1 1D0-1D7 | ||
96 | u64 xSPRG0; // Special Purpose Reg General0 1D8-1DF | ||
97 | u64 xSPRG1; // Special Purpose Reg General1 1E0-1E7 | ||
98 | u64 xSPRG2; // Special Purpose Reg General2 1E8-1EF | ||
99 | u64 xSPRG3; // Special Purpose Reg General3 1F0-1F7 | ||
100 | u64 xTB; // Time Base Register 1F8-1FF | ||
101 | |||
102 | u64 xFPR[32]; // Floating Point Registers 200-2FF | ||
103 | |||
104 | u64 xMSR; // Machine State Register 300-307 | ||
105 | u64 xNIA; // Next Instruction Address 308-30F | ||
106 | |||
107 | u64 xDABR; // Data Address Breakpoint Reg 310-317 | ||
108 | u64 xIABR; // Inst Address Breakpoint Reg 318-31F | ||
109 | |||
110 | u64 xHID0; // HW Implementation Dependent0 320-327 | ||
111 | |||
112 | u64 xHID4; // HW Implementation Dependent4 328-32F | ||
113 | u64 xSCOMd; // SCON Data Reg (SPRG4) 330-337 | ||
114 | u64 xSCOMc; // SCON Command Reg (SPRG5) 338-33F | ||
115 | u64 xSDAR; // Sample Data Address Register 340-347 | ||
116 | u64 xSIAR; // Sample Inst Address Register 348-34F | ||
117 | |||
118 | u8 xRsvd3[176]; // Reserved 350-3FF | ||
119 | }; | ||
120 | |||
64 | extern void system_reset_iSeries(void); | 121 | extern void system_reset_iSeries(void); |
65 | extern void machine_check_iSeries(void); | 122 | extern void machine_check_iSeries(void); |
66 | extern void data_access_iSeries(void); | 123 | extern void data_access_iSeries(void); |
@@ -129,7 +186,7 @@ struct ItLpNaca itLpNaca = { | |||
129 | }; | 186 | }; |
130 | 187 | ||
131 | /* May be filled in by the hypervisor so cannot end up in the BSS */ | 188 | /* May be filled in by the hypervisor so cannot end up in the BSS */ |
132 | struct ItIplParmsReal xItIplParmsReal __attribute__((__section__(".data"))); | 189 | static struct ItIplParmsReal xItIplParmsReal __attribute__((__section__(".data"))); |
133 | 190 | ||
134 | /* May be filled in by the hypervisor so cannot end up in the BSS */ | 191 | /* May be filled in by the hypervisor so cannot end up in the BSS */ |
135 | struct ItExtVpdPanel xItExtVpdPanel __attribute__((__section__(".data"))); | 192 | struct ItExtVpdPanel xItExtVpdPanel __attribute__((__section__(".data"))); |
@@ -152,13 +209,54 @@ u64 xMsVpd[3400] __attribute__((__section__(".data"))); | |||
152 | 209 | ||
153 | /* Space for Recovery Log Buffer */ | 210 | /* Space for Recovery Log Buffer */ |
154 | /* May be filled in by the hypervisor so cannot end up in the BSS */ | 211 | /* May be filled in by the hypervisor so cannot end up in the BSS */ |
155 | u64 xRecoveryLogBuffer[32] __attribute__((__section__(".data"))); | 212 | static u64 xRecoveryLogBuffer[32] __attribute__((__section__(".data"))); |
156 | 213 | ||
157 | struct SpCommArea xSpCommArea = { | 214 | static const struct SpCommArea xSpCommArea = { |
158 | .xDesc = 0xE2D7C3C2, | 215 | .xDesc = 0xE2D7C3C2, |
159 | .xFormat = 1, | 216 | .xFormat = 1, |
160 | }; | 217 | }; |
161 | 218 | ||
219 | static const struct ItLpRegSave iseries_reg_save[] = { | ||
220 | [0 ... (NR_CPUS-1)] = { | ||
221 | .xDesc = 0xd397d9e2, /* "LpRS" */ | ||
222 | .xSize = sizeof(struct ItLpRegSave), | ||
223 | }, | ||
224 | }; | ||
225 | |||
226 | #define ALPACA_INIT(number) \ | ||
227 | { \ | ||
228 | .lppaca_ptr = &lppaca[number], \ | ||
229 | .reg_save_ptr = &iseries_reg_save[number], \ | ||
230 | } | ||
231 | |||
232 | const struct alpaca alpaca[] = { | ||
233 | ALPACA_INIT( 0), | ||
234 | #if NR_CPUS > 1 | ||
235 | ALPACA_INIT( 1), ALPACA_INIT( 2), ALPACA_INIT( 3), | ||
236 | #if NR_CPUS > 4 | ||
237 | ALPACA_INIT( 4), ALPACA_INIT( 5), ALPACA_INIT( 6), ALPACA_INIT( 7), | ||
238 | #if NR_CPUS > 8 | ||
239 | ALPACA_INIT( 8), ALPACA_INIT( 9), ALPACA_INIT(10), ALPACA_INIT(11), | ||
240 | ALPACA_INIT(12), ALPACA_INIT(13), ALPACA_INIT(14), ALPACA_INIT(15), | ||
241 | ALPACA_INIT(16), ALPACA_INIT(17), ALPACA_INIT(18), ALPACA_INIT(19), | ||
242 | ALPACA_INIT(20), ALPACA_INIT(21), ALPACA_INIT(22), ALPACA_INIT(23), | ||
243 | ALPACA_INIT(24), ALPACA_INIT(25), ALPACA_INIT(26), ALPACA_INIT(27), | ||
244 | ALPACA_INIT(28), ALPACA_INIT(29), ALPACA_INIT(30), ALPACA_INIT(31), | ||
245 | #if NR_CPUS > 32 | ||
246 | ALPACA_INIT(32), ALPACA_INIT(33), ALPACA_INIT(34), ALPACA_INIT(35), | ||
247 | ALPACA_INIT(36), ALPACA_INIT(37), ALPACA_INIT(38), ALPACA_INIT(39), | ||
248 | ALPACA_INIT(40), ALPACA_INIT(41), ALPACA_INIT(42), ALPACA_INIT(43), | ||
249 | ALPACA_INIT(44), ALPACA_INIT(45), ALPACA_INIT(46), ALPACA_INIT(47), | ||
250 | ALPACA_INIT(48), ALPACA_INIT(49), ALPACA_INIT(50), ALPACA_INIT(51), | ||
251 | ALPACA_INIT(52), ALPACA_INIT(53), ALPACA_INIT(54), ALPACA_INIT(55), | ||
252 | ALPACA_INIT(56), ALPACA_INIT(57), ALPACA_INIT(58), ALPACA_INIT(59), | ||
253 | ALPACA_INIT(60), ALPACA_INIT(61), ALPACA_INIT(62), ALPACA_INIT(63), | ||
254 | #endif | ||
255 | #endif | ||
256 | #endif | ||
257 | #endif | ||
258 | }; | ||
259 | |||
162 | /* The LparMap data is now located at offset 0x6000 in head.S | 260 | /* The LparMap data is now located at offset 0x6000 in head.S |
163 | * It was put there so that the HvReleaseData could address it | 261 | * It was put there so that the HvReleaseData could address it |
164 | * with a 32-bit offset as required by the iSeries hypervisor | 262 | * with a 32-bit offset as required by the iSeries hypervisor |
@@ -167,7 +265,7 @@ struct SpCommArea xSpCommArea = { | |||
167 | * the Naca via the HvReleaseData area. The HvReleaseData has the | 265 | * the Naca via the HvReleaseData area. The HvReleaseData has the |
168 | * offset into the Naca of the pointer to the ItVpdAreas. | 266 | * offset into the Naca of the pointer to the ItVpdAreas. |
169 | */ | 267 | */ |
170 | struct ItVpdAreas itVpdAreas = { | 268 | const struct ItVpdAreas itVpdAreas = { |
171 | .xSlicDesc = 0xc9a3e5c1, /* "ItVA" */ | 269 | .xSlicDesc = 0xc9a3e5c1, /* "ItVA" */ |
172 | .xSlicSize = sizeof(struct ItVpdAreas), | 270 | .xSlicSize = sizeof(struct ItVpdAreas), |
173 | .xSlicVpdEntries = ItVpdMaxEntries, /* # VPD array entries */ | 271 | .xSlicVpdEntries = ItVpdMaxEntries, /* # VPD array entries */ |
@@ -185,7 +283,7 @@ struct ItVpdAreas itVpdAreas = { | |||
185 | .xSlicVpdLens = { /* VPD lengths */ | 283 | .xSlicVpdLens = { /* VPD lengths */ |
186 | 0,0,0, /* 0 - 2 */ | 284 | 0,0,0, /* 0 - 2 */ |
187 | sizeof(xItExtVpdPanel), /* 3 Extended VPD */ | 285 | sizeof(xItExtVpdPanel), /* 3 Extended VPD */ |
188 | sizeof(struct paca_struct), /* 4 length of Paca */ | 286 | sizeof(struct alpaca), /* 4 length of (fake) Paca */ |
189 | 0, /* 5 */ | 287 | 0, /* 5 */ |
190 | sizeof(struct ItIplParmsReal),/* 6 length of IPL parms */ | 288 | sizeof(struct ItIplParmsReal),/* 6 length of IPL parms */ |
191 | 26992, /* 7 length of MS VPD */ | 289 | 26992, /* 7 length of MS VPD */ |
@@ -203,7 +301,7 @@ struct ItVpdAreas itVpdAreas = { | |||
203 | .xSlicVpdAdrs = { /* VPD addresses */ | 301 | .xSlicVpdAdrs = { /* VPD addresses */ |
204 | 0,0,0, /* 0 - 2 */ | 302 | 0,0,0, /* 0 - 2 */ |
205 | &xItExtVpdPanel, /* 3 Extended VPD */ | 303 | &xItExtVpdPanel, /* 3 Extended VPD */ |
206 | &paca[0], /* 4 first Paca */ | 304 | &alpaca[0], /* 4 first (fake) Paca */ |
207 | 0, /* 5 */ | 305 | 0, /* 5 */ |
208 | &xItIplParmsReal, /* 6 IPL parms */ | 306 | &xItIplParmsReal, /* 6 IPL parms */ |
209 | &xMsVpd, /* 7 MS Vpd */ | 307 | &xMsVpd, /* 7 MS Vpd */ |
@@ -219,10 +317,3 @@ struct ItVpdAreas itVpdAreas = { | |||
219 | 0,0 | 317 | 0,0 |
220 | } | 318 | } |
221 | }; | 319 | }; |
222 | |||
223 | struct ItLpRegSave iseries_reg_save[] = { | ||
224 | [0 ... (NR_CPUS-1)] = { | ||
225 | .xDesc = 0xd397d9e2, /* "LpRS" */ | ||
226 | .xSize = sizeof(struct ItLpRegSave), | ||
227 | }, | ||
228 | }; | ||
diff --git a/arch/powerpc/platforms/iseries/naca.h b/arch/powerpc/platforms/iseries/naca.h index ab2372eb8d2e..f01708e12862 100644 --- a/arch/powerpc/platforms/iseries/naca.h +++ b/arch/powerpc/platforms/iseries/naca.h | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | struct naca_struct { | 15 | struct naca_struct { |
16 | /* Kernel only data - undefined for user space */ | 16 | /* Kernel only data - undefined for user space */ |
17 | void *xItVpdAreas; /* VPD Data 0x00 */ | 17 | const void *xItVpdAreas; /* VPD Data 0x00 */ |
18 | void *xRamDisk; /* iSeries ramdisk 0x08 */ | 18 | void *xRamDisk; /* iSeries ramdisk 0x08 */ |
19 | u64 xRamDiskSize; /* In pages 0x10 */ | 19 | u64 xRamDiskSize; /* In pages 0x10 */ |
20 | }; | 20 | }; |
diff --git a/arch/powerpc/platforms/iseries/pci.c b/arch/powerpc/platforms/iseries/pci.c index cc562e4c2f32..02a634faedbe 100644 --- a/arch/powerpc/platforms/iseries/pci.c +++ b/arch/powerpc/platforms/iseries/pci.c | |||
@@ -23,6 +23,7 @@ | |||
23 | 23 | ||
24 | #undef DEBUG | 24 | #undef DEBUG |
25 | 25 | ||
26 | #include <linux/jiffies.h> | ||
26 | #include <linux/kernel.h> | 27 | #include <linux/kernel.h> |
27 | #include <linux/list.h> | 28 | #include <linux/list.h> |
28 | #include <linux/string.h> | 29 | #include <linux/string.h> |
@@ -586,7 +587,7 @@ static inline struct device_node *xlate_iomm_address( | |||
586 | static unsigned long last_jiffies; | 587 | static unsigned long last_jiffies; |
587 | static int num_printed; | 588 | static int num_printed; |
588 | 589 | ||
589 | if ((jiffies - last_jiffies) > 60 * HZ) { | 590 | if (time_after(jiffies, last_jiffies + 60 * HZ)) { |
590 | last_jiffies = jiffies; | 591 | last_jiffies = jiffies; |
591 | num_printed = 0; | 592 | num_printed = 0; |
592 | } | 593 | } |
diff --git a/arch/powerpc/platforms/iseries/release_data.h b/arch/powerpc/platforms/iseries/release_data.h index 66189fd2e32d..6ad7d843e8fc 100644 --- a/arch/powerpc/platforms/iseries/release_data.h +++ b/arch/powerpc/platforms/iseries/release_data.h | |||
@@ -58,6 +58,6 @@ struct HvReleaseData { | |||
58 | char xRsvd3[20]; /* Reserved x2C-x3F */ | 58 | char xRsvd3[20]; /* Reserved x2C-x3F */ |
59 | }; | 59 | }; |
60 | 60 | ||
61 | extern struct HvReleaseData hvReleaseData; | 61 | extern const struct HvReleaseData hvReleaseData; |
62 | 62 | ||
63 | #endif /* _ISERIES_RELEASE_DATA_H */ | 63 | #endif /* _ISERIES_RELEASE_DATA_H */ |
diff --git a/arch/powerpc/platforms/iseries/spcomm_area.h b/arch/powerpc/platforms/iseries/spcomm_area.h index 6e3b685115c9..598b7c14573a 100644 --- a/arch/powerpc/platforms/iseries/spcomm_area.h +++ b/arch/powerpc/platforms/iseries/spcomm_area.h | |||
@@ -31,6 +31,4 @@ struct SpCommArea { | |||
31 | u8 xRsvd2[80]; // Reserved 030-07F | 31 | u8 xRsvd2[80]; // Reserved 030-07F |
32 | }; | 32 | }; |
33 | 33 | ||
34 | extern struct SpCommArea xSpCommArea; | ||
35 | |||
36 | #endif /* _ISERIES_SPCOMM_AREA_H */ | 34 | #endif /* _ISERIES_SPCOMM_AREA_H */ |
diff --git a/arch/powerpc/platforms/iseries/vpd_areas.h b/arch/powerpc/platforms/iseries/vpd_areas.h index 601e6dd860ed..feb001f3a5fe 100644 --- a/arch/powerpc/platforms/iseries/vpd_areas.h +++ b/arch/powerpc/platforms/iseries/vpd_areas.h | |||
@@ -80,9 +80,9 @@ struct ItVpdAreas { | |||
80 | u32 xPlicDmaLens[ItDmaMaxEntries];// Array of DMA lengths 080-0A7 | 80 | u32 xPlicDmaLens[ItDmaMaxEntries];// Array of DMA lengths 080-0A7 |
81 | u32 xPlicDmaToks[ItDmaMaxEntries];// Array of DMA tokens 0A8-0CF | 81 | u32 xPlicDmaToks[ItDmaMaxEntries];// Array of DMA tokens 0A8-0CF |
82 | u32 xSlicVpdLens[ItVpdMaxEntries];// Array of VPD lengths 0D0-12F | 82 | u32 xSlicVpdLens[ItVpdMaxEntries];// Array of VPD lengths 0D0-12F |
83 | void *xSlicVpdAdrs[ItVpdMaxEntries];// Array of VPD buffers 130-1EF | 83 | const void *xSlicVpdAdrs[ItVpdMaxEntries];// Array of VPD buffers 130-1EF |
84 | }; | 84 | }; |
85 | 85 | ||
86 | extern struct ItVpdAreas itVpdAreas; | 86 | extern const struct ItVpdAreas itVpdAreas; |
87 | 87 | ||
88 | #endif /* _ISERIES_VPD_AREAS_H */ | 88 | #endif /* _ISERIES_VPD_AREAS_H */ |
diff --git a/arch/powerpc/platforms/maple/pci.c b/arch/powerpc/platforms/maple/pci.c index 3ffa0ac170ee..301855263b81 100644 --- a/arch/powerpc/platforms/maple/pci.c +++ b/arch/powerpc/platforms/maple/pci.c | |||
@@ -592,50 +592,3 @@ int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel) | |||
592 | } | 592 | } |
593 | return irq; | 593 | return irq; |
594 | } | 594 | } |
595 | |||
596 | /* XXX: To remove once all firmwares are ok */ | ||
597 | static void fixup_maple_ide(struct pci_dev* dev) | ||
598 | { | ||
599 | if (!machine_is(maple)) | ||
600 | return; | ||
601 | |||
602 | #if 0 /* Enable this to enable IDE port 0 */ | ||
603 | { | ||
604 | u8 v; | ||
605 | |||
606 | pci_read_config_byte(dev, 0x40, &v); | ||
607 | v |= 2; | ||
608 | pci_write_config_byte(dev, 0x40, v); | ||
609 | } | ||
610 | #endif | ||
611 | #if 0 /* fix bus master base */ | ||
612 | pci_write_config_dword(dev, 0x20, 0xcc01); | ||
613 | printk("old ide resource: %lx -> %lx \n", | ||
614 | dev->resource[4].start, dev->resource[4].end); | ||
615 | dev->resource[4].start = 0xcc00; | ||
616 | dev->resource[4].end = 0xcc10; | ||
617 | #endif | ||
618 | #if 0 /* Enable this to fixup IDE sense/polarity of irqs in IO-APICs */ | ||
619 | { | ||
620 | struct pci_dev *apicdev; | ||
621 | u32 v; | ||
622 | |||
623 | apicdev = pci_get_slot (dev->bus, PCI_DEVFN(5,0)); | ||
624 | if (apicdev == NULL) | ||
625 | printk("IDE Fixup IRQ: Can't find IO-APIC !\n"); | ||
626 | else { | ||
627 | pci_write_config_byte(apicdev, 0xf2, 0x10 + 2*14); | ||
628 | pci_read_config_dword(apicdev, 0xf4, &v); | ||
629 | v &= ~0x00000022; | ||
630 | pci_write_config_dword(apicdev, 0xf4, v); | ||
631 | pci_write_config_byte(apicdev, 0xf2, 0x10 + 2*15); | ||
632 | pci_read_config_dword(apicdev, 0xf4, &v); | ||
633 | v &= ~0x00000022; | ||
634 | pci_write_config_dword(apicdev, 0xf4, v); | ||
635 | pci_dev_put(apicdev); | ||
636 | } | ||
637 | } | ||
638 | #endif | ||
639 | } | ||
640 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8111_IDE, | ||
641 | fixup_maple_ide); | ||
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c index 3ce2d73b4177..364714757cf1 100644 --- a/arch/powerpc/platforms/maple/setup.c +++ b/arch/powerpc/platforms/maple/setup.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <linux/smp.h> | 43 | #include <linux/smp.h> |
44 | #include <linux/bitops.h> | 44 | #include <linux/bitops.h> |
45 | #include <linux/of_device.h> | 45 | #include <linux/of_device.h> |
46 | #include <linux/lmb.h> | ||
46 | 47 | ||
47 | #include <asm/processor.h> | 48 | #include <asm/processor.h> |
48 | #include <asm/sections.h> | 49 | #include <asm/sections.h> |
@@ -57,7 +58,6 @@ | |||
57 | #include <asm/dma.h> | 58 | #include <asm/dma.h> |
58 | #include <asm/cputable.h> | 59 | #include <asm/cputable.h> |
59 | #include <asm/time.h> | 60 | #include <asm/time.h> |
60 | #include <asm/lmb.h> | ||
61 | #include <asm/mpic.h> | 61 | #include <asm/mpic.h> |
62 | #include <asm/rtas.h> | 62 | #include <asm/rtas.h> |
63 | #include <asm/udbg.h> | 63 | #include <asm/udbg.h> |
@@ -319,7 +319,7 @@ static int __init maple_probe(void) | |||
319 | return 1; | 319 | return 1; |
320 | } | 320 | } |
321 | 321 | ||
322 | define_machine(maple_md) { | 322 | define_machine(maple) { |
323 | .name = "Maple", | 323 | .name = "Maple", |
324 | .probe = maple_probe, | 324 | .probe = maple_probe, |
325 | .setup_arch = maple_setup_arch, | 325 | .setup_arch = maple_setup_arch, |
diff --git a/arch/powerpc/platforms/pasemi/dma_lib.c b/arch/powerpc/platforms/pasemi/dma_lib.c index c529d8dff395..217af321b0ca 100644 --- a/arch/powerpc/platforms/pasemi/dma_lib.c +++ b/arch/powerpc/platforms/pasemi/dma_lib.c | |||
@@ -17,6 +17,7 @@ | |||
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/kernel.h> | ||
20 | #include <linux/init.h> | 21 | #include <linux/init.h> |
21 | #include <linux/module.h> | 22 | #include <linux/module.h> |
22 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
@@ -26,6 +27,8 @@ | |||
26 | 27 | ||
27 | #define MAX_TXCH 64 | 28 | #define MAX_TXCH 64 |
28 | #define MAX_RXCH 64 | 29 | #define MAX_RXCH 64 |
30 | #define MAX_FLAGS 64 | ||
31 | #define MAX_FUN 8 | ||
29 | 32 | ||
30 | static struct pasdma_status *dma_status; | 33 | static struct pasdma_status *dma_status; |
31 | 34 | ||
@@ -43,6 +46,8 @@ static struct pci_dev *dma_pdev; | |||
43 | 46 | ||
44 | static DECLARE_BITMAP(txch_free, MAX_TXCH); | 47 | static DECLARE_BITMAP(txch_free, MAX_TXCH); |
45 | static DECLARE_BITMAP(rxch_free, MAX_RXCH); | 48 | static DECLARE_BITMAP(rxch_free, MAX_RXCH); |
49 | static DECLARE_BITMAP(flags_free, MAX_FLAGS); | ||
50 | static DECLARE_BITMAP(fun_free, MAX_FUN); | ||
46 | 51 | ||
47 | /* pasemi_read_iob_reg - read IOB register | 52 | /* pasemi_read_iob_reg - read IOB register |
48 | * @reg: Register to read (offset into PCI CFG space) | 53 | * @reg: Register to read (offset into PCI CFG space) |
@@ -373,6 +378,106 @@ void pasemi_dma_free_buf(struct pasemi_dmachan *chan, int size, | |||
373 | } | 378 | } |
374 | EXPORT_SYMBOL(pasemi_dma_free_buf); | 379 | EXPORT_SYMBOL(pasemi_dma_free_buf); |
375 | 380 | ||
381 | /* pasemi_dma_alloc_flag - Allocate a flag (event) for channel syncronization | ||
382 | * | ||
383 | * Allocates a flag for use with channel syncronization (event descriptors). | ||
384 | * Returns allocated flag (0-63), < 0 on error. | ||
385 | */ | ||
386 | int pasemi_dma_alloc_flag(void) | ||
387 | { | ||
388 | int bit; | ||
389 | |||
390 | retry: | ||
391 | bit = find_next_bit(flags_free, MAX_FLAGS, 0); | ||
392 | if (bit >= MAX_FLAGS) | ||
393 | return -ENOSPC; | ||
394 | if (!test_and_clear_bit(bit, flags_free)) | ||
395 | goto retry; | ||
396 | |||
397 | return bit; | ||
398 | } | ||
399 | EXPORT_SYMBOL(pasemi_dma_alloc_flag); | ||
400 | |||
401 | |||
402 | /* pasemi_dma_free_flag - Deallocates a flag (event) | ||
403 | * @flag: Flag number to deallocate | ||
404 | * | ||
405 | * Frees up a flag so it can be reused for other purposes. | ||
406 | */ | ||
407 | void pasemi_dma_free_flag(int flag) | ||
408 | { | ||
409 | BUG_ON(test_bit(flag, flags_free)); | ||
410 | BUG_ON(flag >= MAX_FLAGS); | ||
411 | set_bit(flag, flags_free); | ||
412 | } | ||
413 | EXPORT_SYMBOL(pasemi_dma_free_flag); | ||
414 | |||
415 | |||
416 | /* pasemi_dma_set_flag - Sets a flag (event) to 1 | ||
417 | * @flag: Flag number to set active | ||
418 | * | ||
419 | * Sets the flag provided to 1. | ||
420 | */ | ||
421 | void pasemi_dma_set_flag(int flag) | ||
422 | { | ||
423 | BUG_ON(flag >= MAX_FLAGS); | ||
424 | if (flag < 32) | ||
425 | pasemi_write_dma_reg(PAS_DMA_TXF_SFLG0, 1 << flag); | ||
426 | else | ||
427 | pasemi_write_dma_reg(PAS_DMA_TXF_SFLG1, 1 << flag); | ||
428 | } | ||
429 | EXPORT_SYMBOL(pasemi_dma_set_flag); | ||
430 | |||
431 | /* pasemi_dma_clear_flag - Sets a flag (event) to 0 | ||
432 | * @flag: Flag number to set inactive | ||
433 | * | ||
434 | * Sets the flag provided to 0. | ||
435 | */ | ||
436 | void pasemi_dma_clear_flag(int flag) | ||
437 | { | ||
438 | BUG_ON(flag >= MAX_FLAGS); | ||
439 | if (flag < 32) | ||
440 | pasemi_write_dma_reg(PAS_DMA_TXF_CFLG0, 1 << flag); | ||
441 | else | ||
442 | pasemi_write_dma_reg(PAS_DMA_TXF_CFLG1, 1 << flag); | ||
443 | } | ||
444 | EXPORT_SYMBOL(pasemi_dma_clear_flag); | ||
445 | |||
446 | /* pasemi_dma_alloc_fun - Allocate a function engine | ||
447 | * | ||
448 | * Allocates a function engine to use for crypto/checksum offload | ||
449 | * Returns allocated engine (0-8), < 0 on error. | ||
450 | */ | ||
451 | int pasemi_dma_alloc_fun(void) | ||
452 | { | ||
453 | int bit; | ||
454 | |||
455 | retry: | ||
456 | bit = find_next_bit(fun_free, MAX_FLAGS, 0); | ||
457 | if (bit >= MAX_FLAGS) | ||
458 | return -ENOSPC; | ||
459 | if (!test_and_clear_bit(bit, fun_free)) | ||
460 | goto retry; | ||
461 | |||
462 | return bit; | ||
463 | } | ||
464 | EXPORT_SYMBOL(pasemi_dma_alloc_fun); | ||
465 | |||
466 | |||
467 | /* pasemi_dma_free_fun - Deallocates a function engine | ||
468 | * @flag: Engine number to deallocate | ||
469 | * | ||
470 | * Frees up a function engine so it can be used for other purposes. | ||
471 | */ | ||
472 | void pasemi_dma_free_fun(int fun) | ||
473 | { | ||
474 | BUG_ON(test_bit(fun, fun_free)); | ||
475 | BUG_ON(fun >= MAX_FLAGS); | ||
476 | set_bit(fun, fun_free); | ||
477 | } | ||
478 | EXPORT_SYMBOL(pasemi_dma_free_fun); | ||
479 | |||
480 | |||
376 | static void *map_onedev(struct pci_dev *p, int index) | 481 | static void *map_onedev(struct pci_dev *p, int index) |
377 | { | 482 | { |
378 | struct device_node *dn; | 483 | struct device_node *dn; |
@@ -410,6 +515,7 @@ int pasemi_dma_init(void) | |||
410 | struct resource res; | 515 | struct resource res; |
411 | struct device_node *dn; | 516 | struct device_node *dn; |
412 | int i, intf, err = 0; | 517 | int i, intf, err = 0; |
518 | unsigned long timeout; | ||
413 | u32 tmp; | 519 | u32 tmp; |
414 | 520 | ||
415 | if (!machine_is(pasemi)) | 521 | if (!machine_is(pasemi)) |
@@ -478,6 +584,44 @@ int pasemi_dma_init(void) | |||
478 | for (i = 0; i < MAX_RXCH; i++) | 584 | for (i = 0; i < MAX_RXCH; i++) |
479 | __set_bit(i, rxch_free); | 585 | __set_bit(i, rxch_free); |
480 | 586 | ||
587 | timeout = jiffies + HZ; | ||
588 | pasemi_write_dma_reg(PAS_DMA_COM_RXCMD, 0); | ||
589 | while (pasemi_read_dma_reg(PAS_DMA_COM_RXSTA) & 1) { | ||
590 | if (time_after(jiffies, timeout)) { | ||
591 | pr_warning("Warning: Could not disable RX section\n"); | ||
592 | break; | ||
593 | } | ||
594 | } | ||
595 | |||
596 | timeout = jiffies + HZ; | ||
597 | pasemi_write_dma_reg(PAS_DMA_COM_TXCMD, 0); | ||
598 | while (pasemi_read_dma_reg(PAS_DMA_COM_TXSTA) & 1) { | ||
599 | if (time_after(jiffies, timeout)) { | ||
600 | pr_warning("Warning: Could not disable TX section\n"); | ||
601 | break; | ||
602 | } | ||
603 | } | ||
604 | |||
605 | /* setup resource allocations for the different DMA sections */ | ||
606 | tmp = pasemi_read_dma_reg(PAS_DMA_COM_CFG); | ||
607 | pasemi_write_dma_reg(PAS_DMA_COM_CFG, tmp | 0x18000000); | ||
608 | |||
609 | /* enable tx section */ | ||
610 | pasemi_write_dma_reg(PAS_DMA_COM_TXCMD, PAS_DMA_COM_TXCMD_EN); | ||
611 | |||
612 | /* enable rx section */ | ||
613 | pasemi_write_dma_reg(PAS_DMA_COM_RXCMD, PAS_DMA_COM_RXCMD_EN); | ||
614 | |||
615 | for (i = 0; i < MAX_FLAGS; i++) | ||
616 | __set_bit(i, flags_free); | ||
617 | |||
618 | for (i = 0; i < MAX_FUN; i++) | ||
619 | __set_bit(i, fun_free); | ||
620 | |||
621 | /* clear all status flags */ | ||
622 | pasemi_write_dma_reg(PAS_DMA_TXF_CFLG0, 0xffffffff); | ||
623 | pasemi_write_dma_reg(PAS_DMA_TXF_CFLG1, 0xffffffff); | ||
624 | |||
481 | printk(KERN_INFO "PA Semi PWRficient DMA library initialized " | 625 | printk(KERN_INFO "PA Semi PWRficient DMA library initialized " |
482 | "(%d tx, %d rx channels)\n", num_txch, num_rxch); | 626 | "(%d tx, %d rx channels)\n", num_txch, num_rxch); |
483 | 627 | ||
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c index 5803f11c77fc..86967bdd8774 100644 --- a/arch/powerpc/platforms/pasemi/iommu.c +++ b/arch/powerpc/platforms/pasemi/iommu.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2005-2007, PA Semi, Inc | 2 | * Copyright (C) 2005-2008, PA Semi, Inc |
3 | * | 3 | * |
4 | * Maintained by: Olof Johansson <olof@lixom.net> | 4 | * Maintained by: Olof Johansson <olof@lixom.net> |
5 | * | 5 | * |
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/abs_addr.h> | 27 | #include <asm/abs_addr.h> |
28 | #include <asm/firmware.h> | 28 | #include <asm/firmware.h> |
29 | 29 | ||
30 | |||
31 | #define IOBMAP_PAGE_SHIFT 12 | 30 | #define IOBMAP_PAGE_SHIFT 12 |
32 | #define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT) | 31 | #define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT) |
33 | #define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1) | 32 | #define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1) |
@@ -35,13 +34,13 @@ | |||
35 | #define IOB_BASE 0xe0000000 | 34 | #define IOB_BASE 0xe0000000 |
36 | #define IOB_SIZE 0x3000 | 35 | #define IOB_SIZE 0x3000 |
37 | /* Configuration registers */ | 36 | /* Configuration registers */ |
38 | #define IOBCAP_REG 0x10 | 37 | #define IOBCAP_REG 0x40 |
39 | #define IOBCOM_REG 0x40 | 38 | #define IOBCOM_REG 0x100 |
40 | /* Enable IOB address translation */ | 39 | /* Enable IOB address translation */ |
41 | #define IOBCOM_ATEN 0x00000100 | 40 | #define IOBCOM_ATEN 0x00000100 |
42 | 41 | ||
43 | /* Address decode configuration register */ | 42 | /* Address decode configuration register */ |
44 | #define IOB_AD_REG 0x53 | 43 | #define IOB_AD_REG 0x14c |
45 | /* IOBCOM_AD_REG fields */ | 44 | /* IOBCOM_AD_REG fields */ |
46 | #define IOB_AD_VGPRT 0x00000e00 | 45 | #define IOB_AD_VGPRT 0x00000e00 |
47 | #define IOB_AD_VGAEN 0x00000100 | 46 | #define IOB_AD_VGAEN 0x00000100 |
@@ -56,13 +55,13 @@ | |||
56 | #define IOB_AD_TRNG_2G 0x00000001 | 55 | #define IOB_AD_TRNG_2G 0x00000001 |
57 | #define IOB_AD_TRNG_128G 0x00000003 | 56 | #define IOB_AD_TRNG_128G 0x00000003 |
58 | 57 | ||
59 | #define IOB_TABLEBASE_REG 0x55 | 58 | #define IOB_TABLEBASE_REG 0x154 |
60 | 59 | ||
61 | /* Base of the 64 4-byte L1 registers */ | 60 | /* Base of the 64 4-byte L1 registers */ |
62 | #define IOB_XLT_L1_REGBASE 0xac0 | 61 | #define IOB_XLT_L1_REGBASE 0x2b00 |
63 | 62 | ||
64 | /* Register to invalidate TLB entries */ | 63 | /* Register to invalidate TLB entries */ |
65 | #define IOB_AT_INVAL_TLB_REG 0xb40 | 64 | #define IOB_AT_INVAL_TLB_REG 0x2d00 |
66 | 65 | ||
67 | /* The top two bits of the level 1 entry contains valid and type flags */ | 66 | /* The top two bits of the level 1 entry contains valid and type flags */ |
68 | #define IOBMAP_L1E_V 0x40000000 | 67 | #define IOBMAP_L1E_V 0x40000000 |
@@ -76,7 +75,7 @@ | |||
76 | #define IOBMAP_L2E_V 0x80000000 | 75 | #define IOBMAP_L2E_V 0x80000000 |
77 | #define IOBMAP_L2E_V_CACHED 0xc0000000 | 76 | #define IOBMAP_L2E_V_CACHED 0xc0000000 |
78 | 77 | ||
79 | static u32 __iomem *iob; | 78 | static void __iomem *iob; |
80 | static u32 iob_l1_emptyval; | 79 | static u32 iob_l1_emptyval; |
81 | static u32 iob_l2_emptyval; | 80 | static u32 iob_l2_emptyval; |
82 | static u32 *iob_l2_base; | 81 | static u32 *iob_l2_base; |
@@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn) | |||
219 | for (i = 0; i < 64; i++) { | 218 | for (i = 0; i < 64; i++) { |
220 | /* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */ | 219 | /* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */ |
221 | regword = IOBMAP_L1E_V | (__pa(iob_l2_base + i*0x2000) >> 12); | 220 | regword = IOBMAP_L1E_V | (__pa(iob_l2_base + i*0x2000) >> 12); |
222 | out_le32(iob+IOB_XLT_L1_REGBASE+i, regword); | 221 | out_le32(iob+IOB_XLT_L1_REGBASE+i*4, regword); |
223 | } | 222 | } |
224 | 223 | ||
225 | /* set 2GB translation window, based at 0 */ | 224 | /* set 2GB translation window, based at 0 */ |
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c index 2693fc371eab..bf44c5441a36 100644 --- a/arch/powerpc/platforms/powermac/setup.c +++ b/arch/powerpc/platforms/powermac/setup.c | |||
@@ -53,6 +53,7 @@ | |||
53 | #include <linux/suspend.h> | 53 | #include <linux/suspend.h> |
54 | #include <linux/of_device.h> | 54 | #include <linux/of_device.h> |
55 | #include <linux/of_platform.h> | 55 | #include <linux/of_platform.h> |
56 | #include <linux/lmb.h> | ||
56 | 57 | ||
57 | #include <asm/reg.h> | 58 | #include <asm/reg.h> |
58 | #include <asm/sections.h> | 59 | #include <asm/sections.h> |
@@ -74,7 +75,6 @@ | |||
74 | #include <asm/iommu.h> | 75 | #include <asm/iommu.h> |
75 | #include <asm/smu.h> | 76 | #include <asm/smu.h> |
76 | #include <asm/pmc.h> | 77 | #include <asm/pmc.h> |
77 | #include <asm/lmb.h> | ||
78 | #include <asm/udbg.h> | 78 | #include <asm/udbg.h> |
79 | 79 | ||
80 | #include "pmac.h" | 80 | #include "pmac.h" |
diff --git a/arch/powerpc/platforms/ps3/device-init.c b/arch/powerpc/platforms/ps3/device-init.c index 9d251d0ca8c6..3866debfa3c4 100644 --- a/arch/powerpc/platforms/ps3/device-init.c +++ b/arch/powerpc/platforms/ps3/device-init.c | |||
@@ -499,41 +499,14 @@ static int __init ps3_register_graphics_devices(void) | |||
499 | } | 499 | } |
500 | 500 | ||
501 | /** | 501 | /** |
502 | * ps3_register_repository_device - Register a device from the repositiory info. | 502 | * ps3_setup_dynamic_device - Setup a dynamic device from the repository |
503 | * | ||
504 | */ | 503 | */ |
505 | 504 | ||
506 | static int ps3_register_repository_device( | 505 | static int ps3_setup_dynamic_device(const struct ps3_repository_device *repo) |
507 | const struct ps3_repository_device *repo) | ||
508 | { | 506 | { |
509 | int result; | 507 | int result; |
510 | 508 | ||
511 | switch (repo->dev_type) { | 509 | switch (repo->dev_type) { |
512 | case PS3_DEV_TYPE_SB_GELIC: | ||
513 | result = ps3_setup_gelic_device(repo); | ||
514 | if (result) { | ||
515 | pr_debug("%s:%d ps3_setup_gelic_device failed\n", | ||
516 | __func__, __LINE__); | ||
517 | } | ||
518 | break; | ||
519 | case PS3_DEV_TYPE_SB_USB: | ||
520 | |||
521 | /* Each USB device has both an EHCI and an OHCI HC */ | ||
522 | |||
523 | result = ps3_setup_ehci_device(repo); | ||
524 | |||
525 | if (result) { | ||
526 | pr_debug("%s:%d ps3_setup_ehci_device failed\n", | ||
527 | __func__, __LINE__); | ||
528 | } | ||
529 | |||
530 | result = ps3_setup_ohci_device(repo); | ||
531 | |||
532 | if (result) { | ||
533 | pr_debug("%s:%d ps3_setup_ohci_device failed\n", | ||
534 | __func__, __LINE__); | ||
535 | } | ||
536 | break; | ||
537 | case PS3_DEV_TYPE_STOR_DISK: | 510 | case PS3_DEV_TYPE_STOR_DISK: |
538 | result = ps3_setup_storage_dev(repo, PS3_MATCH_ID_STOR_DISK); | 511 | result = ps3_setup_storage_dev(repo, PS3_MATCH_ID_STOR_DISK); |
539 | 512 | ||
@@ -572,6 +545,48 @@ static int ps3_register_repository_device( | |||
572 | return result; | 545 | return result; |
573 | } | 546 | } |
574 | 547 | ||
548 | /** | ||
549 | * ps3_setup_static_device - Setup a static device from the repository | ||
550 | */ | ||
551 | |||
552 | static int __init ps3_setup_static_device(const struct ps3_repository_device *repo) | ||
553 | { | ||
554 | int result; | ||
555 | |||
556 | switch (repo->dev_type) { | ||
557 | case PS3_DEV_TYPE_SB_GELIC: | ||
558 | result = ps3_setup_gelic_device(repo); | ||
559 | if (result) { | ||
560 | pr_debug("%s:%d ps3_setup_gelic_device failed\n", | ||
561 | __func__, __LINE__); | ||
562 | } | ||
563 | break; | ||
564 | case PS3_DEV_TYPE_SB_USB: | ||
565 | |||
566 | /* Each USB device has both an EHCI and an OHCI HC */ | ||
567 | |||
568 | result = ps3_setup_ehci_device(repo); | ||
569 | |||
570 | if (result) { | ||
571 | pr_debug("%s:%d ps3_setup_ehci_device failed\n", | ||
572 | __func__, __LINE__); | ||
573 | } | ||
574 | |||
575 | result = ps3_setup_ohci_device(repo); | ||
576 | |||
577 | if (result) { | ||
578 | pr_debug("%s:%d ps3_setup_ohci_device failed\n", | ||
579 | __func__, __LINE__); | ||
580 | } | ||
581 | break; | ||
582 | |||
583 | default: | ||
584 | return ps3_setup_dynamic_device(repo); | ||
585 | } | ||
586 | |||
587 | return result; | ||
588 | } | ||
589 | |||
575 | static void ps3_find_and_add_device(u64 bus_id, u64 dev_id) | 590 | static void ps3_find_and_add_device(u64 bus_id, u64 dev_id) |
576 | { | 591 | { |
577 | struct ps3_repository_device repo; | 592 | struct ps3_repository_device repo; |
@@ -601,7 +616,7 @@ found: | |||
601 | pr_debug("%s:%u: device %lu:%lu found after %u retries\n", | 616 | pr_debug("%s:%u: device %lu:%lu found after %u retries\n", |
602 | __func__, __LINE__, bus_id, dev_id, retries); | 617 | __func__, __LINE__, bus_id, dev_id, retries); |
603 | 618 | ||
604 | ps3_register_repository_device(&repo); | 619 | ps3_setup_dynamic_device(&repo); |
605 | return; | 620 | return; |
606 | } | 621 | } |
607 | 622 | ||
@@ -905,8 +920,7 @@ static int __init ps3_register_devices(void) | |||
905 | 920 | ||
906 | ps3_register_graphics_devices(); | 921 | ps3_register_graphics_devices(); |
907 | 922 | ||
908 | ps3_repository_find_devices(PS3_BUS_TYPE_SB, | 923 | ps3_repository_find_devices(PS3_BUS_TYPE_SB, ps3_setup_static_device); |
909 | ps3_register_repository_device); | ||
910 | 924 | ||
911 | ps3_register_sound_devices(); | 925 | ps3_register_sound_devices(); |
912 | 926 | ||
diff --git a/arch/powerpc/platforms/ps3/htab.c b/arch/powerpc/platforms/ps3/htab.c index 7382f195c4f8..1cf901fa9031 100644 --- a/arch/powerpc/platforms/ps3/htab.c +++ b/arch/powerpc/platforms/ps3/htab.c | |||
@@ -19,9 +19,10 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
22 | #include <linux/lmb.h> | ||
22 | 23 | ||
23 | #include <asm/machdep.h> | 24 | #include <asm/machdep.h> |
24 | #include <asm/lmb.h> | 25 | #include <asm/prom.h> |
25 | #include <asm/udbg.h> | 26 | #include <asm/udbg.h> |
26 | #include <asm/lv1call.h> | 27 | #include <asm/lv1call.h> |
27 | #include <asm/ps3fb.h> | 28 | #include <asm/ps3fb.h> |
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c index 3a6db04aa940..a14e5cdc2fed 100644 --- a/arch/powerpc/platforms/ps3/interrupt.c +++ b/arch/powerpc/platforms/ps3/interrupt.c | |||
@@ -709,7 +709,7 @@ static unsigned int ps3_get_irq(void) | |||
709 | asm volatile("cntlzd %0,%1" : "=r" (plug) : "r" (x)); | 709 | asm volatile("cntlzd %0,%1" : "=r" (plug) : "r" (x)); |
710 | plug &= 0x3f; | 710 | plug &= 0x3f; |
711 | 711 | ||
712 | if (unlikely(plug) == NO_IRQ) { | 712 | if (unlikely(plug == NO_IRQ)) { |
713 | pr_debug("%s:%d: no plug found: thread_id %lu\n", __func__, | 713 | pr_debug("%s:%d: no plug found: thread_id %lu\n", __func__, |
714 | __LINE__, pd->thread_id); | 714 | __LINE__, pd->thread_id); |
715 | dump_bmp(&per_cpu(ps3_private, 0)); | 715 | dump_bmp(&per_cpu(ps3_private, 0)); |
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c index 68900476c842..5b3fb2b321ab 100644 --- a/arch/powerpc/platforms/ps3/mm.c +++ b/arch/powerpc/platforms/ps3/mm.c | |||
@@ -21,9 +21,10 @@ | |||
21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
23 | #include <linux/memory_hotplug.h> | 23 | #include <linux/memory_hotplug.h> |
24 | #include <linux/lmb.h> | ||
24 | 25 | ||
25 | #include <asm/firmware.h> | 26 | #include <asm/firmware.h> |
26 | #include <asm/lmb.h> | 27 | #include <asm/prom.h> |
27 | #include <asm/udbg.h> | 28 | #include <asm/udbg.h> |
28 | #include <asm/lv1call.h> | 29 | #include <asm/lv1call.h> |
29 | 30 | ||
diff --git a/arch/powerpc/platforms/ps3/os-area.c b/arch/powerpc/platforms/ps3/os-area.c index b9ea09d9d2fb..c73379ec9141 100644 --- a/arch/powerpc/platforms/ps3/os-area.c +++ b/arch/powerpc/platforms/ps3/os-area.c | |||
@@ -24,8 +24,9 @@ | |||
24 | #include <linux/fs.h> | 24 | #include <linux/fs.h> |
25 | #include <linux/syscalls.h> | 25 | #include <linux/syscalls.h> |
26 | #include <linux/ctype.h> | 26 | #include <linux/ctype.h> |
27 | #include <linux/lmb.h> | ||
27 | 28 | ||
28 | #include <asm/lmb.h> | 29 | #include <asm/prom.h> |
29 | 30 | ||
30 | #include "platform.h" | 31 | #include "platform.h" |
31 | 32 | ||
diff --git a/arch/powerpc/platforms/ps3/setup.c b/arch/powerpc/platforms/ps3/setup.c index 5c2cbb08eb52..a413abbd4123 100644 --- a/arch/powerpc/platforms/ps3/setup.c +++ b/arch/powerpc/platforms/ps3/setup.c | |||
@@ -95,6 +95,14 @@ static void ps3_power_off(void) | |||
95 | ps3_sys_manager_power_off(); /* never returns */ | 95 | ps3_sys_manager_power_off(); /* never returns */ |
96 | } | 96 | } |
97 | 97 | ||
98 | static void ps3_halt(void) | ||
99 | { | ||
100 | DBG("%s:%d\n", __func__, __LINE__); | ||
101 | |||
102 | smp_send_stop(); | ||
103 | ps3_sys_manager_halt(); /* never returns */ | ||
104 | } | ||
105 | |||
98 | static void ps3_panic(char *str) | 106 | static void ps3_panic(char *str) |
99 | { | 107 | { |
100 | DBG("%s:%d %s\n", __func__, __LINE__, str); | 108 | DBG("%s:%d %s\n", __func__, __LINE__, str); |
@@ -105,7 +113,8 @@ static void ps3_panic(char *str) | |||
105 | printk(" Please press POWER button.\n"); | 113 | printk(" Please press POWER button.\n"); |
106 | printk("\n"); | 114 | printk("\n"); |
107 | 115 | ||
108 | while(1); | 116 | while(1) |
117 | lv1_pause(1); | ||
109 | } | 118 | } |
110 | 119 | ||
111 | #if defined(CONFIG_FB_PS3) || defined(CONFIG_FB_PS3_MODULE) || \ | 120 | #if defined(CONFIG_FB_PS3) || defined(CONFIG_FB_PS3_MODULE) || \ |
@@ -117,7 +126,7 @@ static void __init prealloc(struct ps3_prealloc *p) | |||
117 | 126 | ||
118 | p->address = __alloc_bootmem(p->size, p->align, __pa(MAX_DMA_ADDRESS)); | 127 | p->address = __alloc_bootmem(p->size, p->align, __pa(MAX_DMA_ADDRESS)); |
119 | if (!p->address) { | 128 | if (!p->address) { |
120 | printk(KERN_ERR "%s: Cannot allocate %s\n", __FUNCTION__, | 129 | printk(KERN_ERR "%s: Cannot allocate %s\n", __func__, |
121 | p->name); | 130 | p->name); |
122 | return; | 131 | return; |
123 | } | 132 | } |
@@ -266,6 +275,7 @@ define_machine(ps3) { | |||
266 | .progress = ps3_progress, | 275 | .progress = ps3_progress, |
267 | .restart = ps3_restart, | 276 | .restart = ps3_restart, |
268 | .power_off = ps3_power_off, | 277 | .power_off = ps3_power_off, |
278 | .halt = ps3_halt, | ||
269 | #if defined(CONFIG_KEXEC) | 279 | #if defined(CONFIG_KEXEC) |
270 | .kexec_cpu_down = ps3_kexec_cpu_down, | 280 | .kexec_cpu_down = ps3_kexec_cpu_down, |
271 | .machine_kexec = default_machine_kexec, | 281 | .machine_kexec = default_machine_kexec, |
diff --git a/arch/powerpc/platforms/ps3/spu.c b/arch/powerpc/platforms/ps3/spu.c index 5ad41189b494..d135cef9ed6a 100644 --- a/arch/powerpc/platforms/ps3/spu.c +++ b/arch/powerpc/platforms/ps3/spu.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/spu.h> | 27 | #include <asm/spu.h> |
28 | #include <asm/spu_priv1.h> | 28 | #include <asm/spu_priv1.h> |
29 | #include <asm/lv1call.h> | 29 | #include <asm/lv1call.h> |
30 | #include <asm/ps3.h> | ||
30 | 31 | ||
31 | #include "../cell/spufs/spufs.h" | 32 | #include "../cell/spufs/spufs.h" |
32 | #include "platform.h" | 33 | #include "platform.h" |
@@ -140,6 +141,12 @@ static void _dump_areas(unsigned int spe_id, unsigned long priv2, | |||
140 | pr_debug("%s:%d: shadow: %lxh\n", func, line, shadow); | 141 | pr_debug("%s:%d: shadow: %lxh\n", func, line, shadow); |
141 | } | 142 | } |
142 | 143 | ||
144 | inline u64 ps3_get_spe_id(void *arg) | ||
145 | { | ||
146 | return spu_pdata(arg)->spe_id; | ||
147 | } | ||
148 | EXPORT_SYMBOL_GPL(ps3_get_spe_id); | ||
149 | |||
143 | static unsigned long get_vas_id(void) | 150 | static unsigned long get_vas_id(void) |
144 | { | 151 | { |
145 | unsigned long id; | 152 | unsigned long id; |
diff --git a/arch/powerpc/platforms/pseries/Makefile b/arch/powerpc/platforms/pseries/Makefile index 992ba6753cf2..bdae04bb7a01 100644 --- a/arch/powerpc/platforms/pseries/Makefile +++ b/arch/powerpc/platforms/pseries/Makefile | |||
@@ -18,3 +18,4 @@ obj-$(CONFIG_HOTPLUG_CPU) += hotplug-cpu.o | |||
18 | obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o | 18 | obj-$(CONFIG_HVC_CONSOLE) += hvconsole.o |
19 | obj-$(CONFIG_HVCS) += hvcserver.o | 19 | obj-$(CONFIG_HVCS) += hvcserver.o |
20 | obj-$(CONFIG_HCALL_STATS) += hvCall_inst.o | 20 | obj-$(CONFIG_HCALL_STATS) += hvCall_inst.o |
21 | obj-$(CONFIG_PHYP_DUMP) += phyp_dump.o | ||
diff --git a/arch/powerpc/platforms/pseries/eeh.c b/arch/powerpc/platforms/pseries/eeh.c index 9eb539ee5f9a..550b2f7d2cc1 100644 --- a/arch/powerpc/platforms/pseries/eeh.c +++ b/arch/powerpc/platforms/pseries/eeh.c | |||
@@ -945,7 +945,6 @@ static void *early_enable_eeh(struct device_node *dn, void *data) | |||
945 | unsigned int rets[3]; | 945 | unsigned int rets[3]; |
946 | struct eeh_early_enable_info *info = data; | 946 | struct eeh_early_enable_info *info = data; |
947 | int ret; | 947 | int ret; |
948 | const char *status = of_get_property(dn, "status", NULL); | ||
949 | const u32 *class_code = of_get_property(dn, "class-code", NULL); | 948 | const u32 *class_code = of_get_property(dn, "class-code", NULL); |
950 | const u32 *vendor_id = of_get_property(dn, "vendor-id", NULL); | 949 | const u32 *vendor_id = of_get_property(dn, "vendor-id", NULL); |
951 | const u32 *device_id = of_get_property(dn, "device-id", NULL); | 950 | const u32 *device_id = of_get_property(dn, "device-id", NULL); |
@@ -959,8 +958,8 @@ static void *early_enable_eeh(struct device_node *dn, void *data) | |||
959 | pdn->eeh_freeze_count = 0; | 958 | pdn->eeh_freeze_count = 0; |
960 | pdn->eeh_false_positives = 0; | 959 | pdn->eeh_false_positives = 0; |
961 | 960 | ||
962 | if (status && strncmp(status, "ok", 2) != 0) | 961 | if (!of_device_is_available(dn)) |
963 | return NULL; /* ignore devices with bad status */ | 962 | return NULL; |
964 | 963 | ||
965 | /* Ignore bad nodes. */ | 964 | /* Ignore bad nodes. */ |
966 | if (!class_code || !vendor_id || !device_id) | 965 | if (!class_code || !vendor_id || !device_id) |
diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c index 9a455d46379d..9235c469449e 100644 --- a/arch/powerpc/platforms/pseries/lpar.c +++ b/arch/powerpc/platforms/pseries/lpar.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <asm/smp.h> | 40 | #include <asm/smp.h> |
41 | 41 | ||
42 | #include "plpar_wrappers.h" | 42 | #include "plpar_wrappers.h" |
43 | #include "pseries.h" | ||
43 | 44 | ||
44 | #ifdef DEBUG_LOW | 45 | #ifdef DEBUG_LOW |
45 | #define DBG_LOW(fmt...) do { udbg_printf(fmt); } while(0) | 46 | #define DBG_LOW(fmt...) do { udbg_printf(fmt); } while(0) |
@@ -203,7 +204,6 @@ void __init find_udbg_vterm(void) | |||
203 | struct device_node *stdout_node; | 204 | struct device_node *stdout_node; |
204 | const u32 *termno; | 205 | const u32 *termno; |
205 | const char *name; | 206 | const char *name; |
206 | int add_console; | ||
207 | 207 | ||
208 | /* find the boot console from /chosen/stdout */ | 208 | /* find the boot console from /chosen/stdout */ |
209 | if (!of_chosen) | 209 | if (!of_chosen) |
@@ -219,8 +219,6 @@ void __init find_udbg_vterm(void) | |||
219 | printk(KERN_WARNING "stdout node missing 'name' property!\n"); | 219 | printk(KERN_WARNING "stdout node missing 'name' property!\n"); |
220 | goto out; | 220 | goto out; |
221 | } | 221 | } |
222 | /* The user has requested a console so this is already set up. */ | ||
223 | add_console = !strstr(cmd_line, "console="); | ||
224 | 222 | ||
225 | /* Check if it's a virtual terminal */ | 223 | /* Check if it's a virtual terminal */ |
226 | if (strncmp(name, "vty", 3) != 0) | 224 | if (strncmp(name, "vty", 3) != 0) |
@@ -234,15 +232,13 @@ void __init find_udbg_vterm(void) | |||
234 | udbg_putc = udbg_putcLP; | 232 | udbg_putc = udbg_putcLP; |
235 | udbg_getc = udbg_getcLP; | 233 | udbg_getc = udbg_getcLP; |
236 | udbg_getc_poll = udbg_getc_pollLP; | 234 | udbg_getc_poll = udbg_getc_pollLP; |
237 | if (add_console) | 235 | add_preferred_console("hvc", termno[0] & 0xff, NULL); |
238 | add_preferred_console("hvc", termno[0] & 0xff, NULL); | ||
239 | } else if (of_device_is_compatible(stdout_node, "hvterm-protocol")) { | 236 | } else if (of_device_is_compatible(stdout_node, "hvterm-protocol")) { |
240 | vtermno = termno[0]; | 237 | vtermno = termno[0]; |
241 | udbg_putc = udbg_hvsi_putc; | 238 | udbg_putc = udbg_hvsi_putc; |
242 | udbg_getc = udbg_hvsi_getc; | 239 | udbg_getc = udbg_hvsi_getc; |
243 | udbg_getc_poll = udbg_hvsi_getc_poll; | 240 | udbg_getc_poll = udbg_hvsi_getc_poll; |
244 | if (add_console) | 241 | add_preferred_console("hvsi", termno[0] & 0xff, NULL); |
245 | add_preferred_console("hvsi", termno[0] & 0xff, NULL); | ||
246 | } | 242 | } |
247 | out: | 243 | out: |
248 | of_node_put(stdout_node); | 244 | of_node_put(stdout_node); |
@@ -520,6 +516,20 @@ static void pSeries_lpar_hpte_invalidate(unsigned long slot, unsigned long va, | |||
520 | BUG_ON(lpar_rc != H_SUCCESS); | 516 | BUG_ON(lpar_rc != H_SUCCESS); |
521 | } | 517 | } |
522 | 518 | ||
519 | static void pSeries_lpar_hpte_removebolted(unsigned long ea, | ||
520 | int psize, int ssize) | ||
521 | { | ||
522 | unsigned long slot, vsid, va; | ||
523 | |||
524 | vsid = get_kernel_vsid(ea, ssize); | ||
525 | va = hpt_va(ea, vsid, ssize); | ||
526 | |||
527 | slot = pSeries_lpar_hpte_find(va, psize, ssize); | ||
528 | BUG_ON(slot == -1); | ||
529 | |||
530 | pSeries_lpar_hpte_invalidate(slot, va, psize, ssize, 0); | ||
531 | } | ||
532 | |||
523 | /* Flag bits for H_BULK_REMOVE */ | 533 | /* Flag bits for H_BULK_REMOVE */ |
524 | #define HBR_REQUEST 0x4000000000000000UL | 534 | #define HBR_REQUEST 0x4000000000000000UL |
525 | #define HBR_RESPONSE 0x8000000000000000UL | 535 | #define HBR_RESPONSE 0x8000000000000000UL |
@@ -597,6 +607,7 @@ void __init hpte_init_lpar(void) | |||
597 | ppc_md.hpte_updateboltedpp = pSeries_lpar_hpte_updateboltedpp; | 607 | ppc_md.hpte_updateboltedpp = pSeries_lpar_hpte_updateboltedpp; |
598 | ppc_md.hpte_insert = pSeries_lpar_hpte_insert; | 608 | ppc_md.hpte_insert = pSeries_lpar_hpte_insert; |
599 | ppc_md.hpte_remove = pSeries_lpar_hpte_remove; | 609 | ppc_md.hpte_remove = pSeries_lpar_hpte_remove; |
610 | ppc_md.hpte_removebolted = pSeries_lpar_hpte_removebolted; | ||
600 | ppc_md.flush_hash_range = pSeries_lpar_flush_hash_range; | 611 | ppc_md.flush_hash_range = pSeries_lpar_flush_hash_range; |
601 | ppc_md.hpte_clear_all = pSeries_lpar_hptab_clear; | 612 | ppc_md.hpte_clear_all = pSeries_lpar_hptab_clear; |
602 | } | 613 | } |
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c index 5a5a19e40bb4..0d7229cde0e9 100644 --- a/arch/powerpc/platforms/pseries/pci_dlpar.c +++ b/arch/powerpc/platforms/pseries/pci_dlpar.c | |||
@@ -123,7 +123,7 @@ pcibios_pci_config_bridge(struct pci_dev *dev) | |||
123 | /* Add to children of PCI bridge dev->bus */ | 123 | /* Add to children of PCI bridge dev->bus */ |
124 | child_bus = pci_add_new_bus(dev->bus, dev, sec_busno); | 124 | child_bus = pci_add_new_bus(dev->bus, dev, sec_busno); |
125 | if (!child_bus) { | 125 | if (!child_bus) { |
126 | printk (KERN_ERR "%s: could not add second bus\n", __FUNCTION__); | 126 | printk (KERN_ERR "%s: could not add second bus\n", __func__); |
127 | return -EIO; | 127 | return -EIO; |
128 | } | 128 | } |
129 | sprintf(child_bus->name, "PCI Bus #%02x", child_bus->number); | 129 | sprintf(child_bus->name, "PCI Bus #%02x", child_bus->number); |
diff --git a/arch/powerpc/platforms/pseries/phyp_dump.c b/arch/powerpc/platforms/pseries/phyp_dump.c new file mode 100644 index 000000000000..edbc012c2ebc --- /dev/null +++ b/arch/powerpc/platforms/pseries/phyp_dump.c | |||
@@ -0,0 +1,507 @@ | |||
1 | /* | ||
2 | * Hypervisor-assisted dump | ||
3 | * | ||
4 | * Linas Vepstas, Manish Ahuja 2008 | ||
5 | * Copyright 2008 IBM Corp. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version | ||
10 | * 2 of the License, or (at your option) any later version. | ||
11 | * | ||
12 | */ | ||
13 | |||
14 | #include <linux/init.h> | ||
15 | #include <linux/kobject.h> | ||
16 | #include <linux/mm.h> | ||
17 | #include <linux/of.h> | ||
18 | #include <linux/pfn.h> | ||
19 | #include <linux/swap.h> | ||
20 | #include <linux/sysfs.h> | ||
21 | |||
22 | #include <asm/page.h> | ||
23 | #include <asm/phyp_dump.h> | ||
24 | #include <asm/machdep.h> | ||
25 | #include <asm/prom.h> | ||
26 | #include <asm/rtas.h> | ||
27 | |||
28 | /* Variables, used to communicate data between early boot and late boot */ | ||
29 | static struct phyp_dump phyp_dump_vars; | ||
30 | struct phyp_dump *phyp_dump_info = &phyp_dump_vars; | ||
31 | |||
32 | static int ibm_configure_kernel_dump; | ||
33 | /* ------------------------------------------------- */ | ||
34 | /* RTAS interfaces to declare the dump regions */ | ||
35 | |||
36 | struct dump_section { | ||
37 | u32 dump_flags; | ||
38 | u16 source_type; | ||
39 | u16 error_flags; | ||
40 | u64 source_address; | ||
41 | u64 source_length; | ||
42 | u64 length_copied; | ||
43 | u64 destination_address; | ||
44 | }; | ||
45 | |||
46 | struct phyp_dump_header { | ||
47 | u32 version; | ||
48 | u16 num_of_sections; | ||
49 | u16 status; | ||
50 | |||
51 | u32 first_offset_section; | ||
52 | u32 dump_disk_section; | ||
53 | u64 block_num_dd; | ||
54 | u64 num_of_blocks_dd; | ||
55 | u32 offset_dd; | ||
56 | u32 maxtime_to_auto; | ||
57 | /* No dump disk path string used */ | ||
58 | |||
59 | struct dump_section cpu_data; | ||
60 | struct dump_section hpte_data; | ||
61 | struct dump_section kernel_data; | ||
62 | }; | ||
63 | |||
64 | /* The dump header *must be* in low memory, so .bss it */ | ||
65 | static struct phyp_dump_header phdr; | ||
66 | |||
67 | #define NUM_DUMP_SECTIONS 3 | ||
68 | #define DUMP_HEADER_VERSION 0x1 | ||
69 | #define DUMP_REQUEST_FLAG 0x1 | ||
70 | #define DUMP_SOURCE_CPU 0x0001 | ||
71 | #define DUMP_SOURCE_HPTE 0x0002 | ||
72 | #define DUMP_SOURCE_RMO 0x0011 | ||
73 | #define DUMP_ERROR_FLAG 0x2000 | ||
74 | #define DUMP_TRIGGERED 0x4000 | ||
75 | #define DUMP_PERFORMED 0x8000 | ||
76 | |||
77 | |||
78 | /** | ||
79 | * init_dump_header() - initialize the header declaring a dump | ||
80 | * Returns: length of dump save area. | ||
81 | * | ||
82 | * When the hypervisor saves crashed state, it needs to put | ||
83 | * it somewhere. The dump header tells the hypervisor where | ||
84 | * the data can be saved. | ||
85 | */ | ||
86 | static unsigned long init_dump_header(struct phyp_dump_header *ph) | ||
87 | { | ||
88 | unsigned long addr_offset = 0; | ||
89 | |||
90 | /* Set up the dump header */ | ||
91 | ph->version = DUMP_HEADER_VERSION; | ||
92 | ph->num_of_sections = NUM_DUMP_SECTIONS; | ||
93 | ph->status = 0; | ||
94 | |||
95 | ph->first_offset_section = | ||
96 | (u32)offsetof(struct phyp_dump_header, cpu_data); | ||
97 | ph->dump_disk_section = 0; | ||
98 | ph->block_num_dd = 0; | ||
99 | ph->num_of_blocks_dd = 0; | ||
100 | ph->offset_dd = 0; | ||
101 | |||
102 | ph->maxtime_to_auto = 0; /* disabled */ | ||
103 | |||
104 | /* The first two sections are mandatory */ | ||
105 | ph->cpu_data.dump_flags = DUMP_REQUEST_FLAG; | ||
106 | ph->cpu_data.source_type = DUMP_SOURCE_CPU; | ||
107 | ph->cpu_data.source_address = 0; | ||
108 | ph->cpu_data.source_length = phyp_dump_info->cpu_state_size; | ||
109 | ph->cpu_data.destination_address = addr_offset; | ||
110 | addr_offset += phyp_dump_info->cpu_state_size; | ||
111 | |||
112 | ph->hpte_data.dump_flags = DUMP_REQUEST_FLAG; | ||
113 | ph->hpte_data.source_type = DUMP_SOURCE_HPTE; | ||
114 | ph->hpte_data.source_address = 0; | ||
115 | ph->hpte_data.source_length = phyp_dump_info->hpte_region_size; | ||
116 | ph->hpte_data.destination_address = addr_offset; | ||
117 | addr_offset += phyp_dump_info->hpte_region_size; | ||
118 | |||
119 | /* This section describes the low kernel region */ | ||
120 | ph->kernel_data.dump_flags = DUMP_REQUEST_FLAG; | ||
121 | ph->kernel_data.source_type = DUMP_SOURCE_RMO; | ||
122 | ph->kernel_data.source_address = PHYP_DUMP_RMR_START; | ||
123 | ph->kernel_data.source_length = PHYP_DUMP_RMR_END; | ||
124 | ph->kernel_data.destination_address = addr_offset; | ||
125 | addr_offset += ph->kernel_data.source_length; | ||
126 | |||
127 | return addr_offset; | ||
128 | } | ||
129 | |||
130 | static void print_dump_header(const struct phyp_dump_header *ph) | ||
131 | { | ||
132 | #ifdef DEBUG | ||
133 | printk(KERN_INFO "dump header:\n"); | ||
134 | /* setup some ph->sections required */ | ||
135 | printk(KERN_INFO "version = %d\n", ph->version); | ||
136 | printk(KERN_INFO "Sections = %d\n", ph->num_of_sections); | ||
137 | printk(KERN_INFO "Status = 0x%x\n", ph->status); | ||
138 | |||
139 | /* No ph->disk, so all should be set to 0 */ | ||
140 | printk(KERN_INFO "Offset to first section 0x%x\n", | ||
141 | ph->first_offset_section); | ||
142 | printk(KERN_INFO "dump disk sections should be zero\n"); | ||
143 | printk(KERN_INFO "dump disk section = %d\n", ph->dump_disk_section); | ||
144 | printk(KERN_INFO "block num = %ld\n", ph->block_num_dd); | ||
145 | printk(KERN_INFO "number of blocks = %ld\n", ph->num_of_blocks_dd); | ||
146 | printk(KERN_INFO "dump disk offset = %d\n", ph->offset_dd); | ||
147 | printk(KERN_INFO "Max auto time= %d\n", ph->maxtime_to_auto); | ||
148 | |||
149 | /*set cpu state and hpte states as well scratch pad area */ | ||
150 | printk(KERN_INFO " CPU AREA \n"); | ||
151 | printk(KERN_INFO "cpu dump_flags =%d\n", ph->cpu_data.dump_flags); | ||
152 | printk(KERN_INFO "cpu source_type =%d\n", ph->cpu_data.source_type); | ||
153 | printk(KERN_INFO "cpu error_flags =%d\n", ph->cpu_data.error_flags); | ||
154 | printk(KERN_INFO "cpu source_address =%lx\n", | ||
155 | ph->cpu_data.source_address); | ||
156 | printk(KERN_INFO "cpu source_length =%lx\n", | ||
157 | ph->cpu_data.source_length); | ||
158 | printk(KERN_INFO "cpu length_copied =%lx\n", | ||
159 | ph->cpu_data.length_copied); | ||
160 | |||
161 | printk(KERN_INFO " HPTE AREA \n"); | ||
162 | printk(KERN_INFO "HPTE dump_flags =%d\n", ph->hpte_data.dump_flags); | ||
163 | printk(KERN_INFO "HPTE source_type =%d\n", ph->hpte_data.source_type); | ||
164 | printk(KERN_INFO "HPTE error_flags =%d\n", ph->hpte_data.error_flags); | ||
165 | printk(KERN_INFO "HPTE source_address =%lx\n", | ||
166 | ph->hpte_data.source_address); | ||
167 | printk(KERN_INFO "HPTE source_length =%lx\n", | ||
168 | ph->hpte_data.source_length); | ||
169 | printk(KERN_INFO "HPTE length_copied =%lx\n", | ||
170 | ph->hpte_data.length_copied); | ||
171 | |||
172 | printk(KERN_INFO " SRSD AREA \n"); | ||
173 | printk(KERN_INFO "SRSD dump_flags =%d\n", ph->kernel_data.dump_flags); | ||
174 | printk(KERN_INFO "SRSD source_type =%d\n", ph->kernel_data.source_type); | ||
175 | printk(KERN_INFO "SRSD error_flags =%d\n", ph->kernel_data.error_flags); | ||
176 | printk(KERN_INFO "SRSD source_address =%lx\n", | ||
177 | ph->kernel_data.source_address); | ||
178 | printk(KERN_INFO "SRSD source_length =%lx\n", | ||
179 | ph->kernel_data.source_length); | ||
180 | printk(KERN_INFO "SRSD length_copied =%lx\n", | ||
181 | ph->kernel_data.length_copied); | ||
182 | #endif | ||
183 | } | ||
184 | |||
185 | static ssize_t show_phyp_dump_active(struct kobject *kobj, | ||
186 | struct kobj_attribute *attr, char *buf) | ||
187 | { | ||
188 | |||
189 | /* create filesystem entry so kdump is phyp-dump aware */ | ||
190 | return sprintf(buf, "%lx\n", phyp_dump_info->phyp_dump_at_boot); | ||
191 | } | ||
192 | |||
193 | static struct kobj_attribute pdl = __ATTR(phyp_dump_active, 0600, | ||
194 | show_phyp_dump_active, | ||
195 | NULL); | ||
196 | |||
197 | static void register_dump_area(struct phyp_dump_header *ph, unsigned long addr) | ||
198 | { | ||
199 | int rc; | ||
200 | |||
201 | /* Add addr value if not initialized before */ | ||
202 | if (ph->cpu_data.destination_address == 0) { | ||
203 | ph->cpu_data.destination_address += addr; | ||
204 | ph->hpte_data.destination_address += addr; | ||
205 | ph->kernel_data.destination_address += addr; | ||
206 | } | ||
207 | |||
208 | /* ToDo Invalidate kdump and free memory range. */ | ||
209 | |||
210 | do { | ||
211 | rc = rtas_call(ibm_configure_kernel_dump, 3, 1, NULL, | ||
212 | 1, ph, sizeof(struct phyp_dump_header)); | ||
213 | } while (rtas_busy_delay(rc)); | ||
214 | |||
215 | if (rc) { | ||
216 | printk(KERN_ERR "phyp-dump: unexpected error (%d) on " | ||
217 | "register\n", rc); | ||
218 | print_dump_header(ph); | ||
219 | return; | ||
220 | } | ||
221 | |||
222 | rc = sysfs_create_file(kernel_kobj, &pdl.attr); | ||
223 | if (rc) | ||
224 | printk(KERN_ERR "phyp-dump: unable to create sysfs" | ||
225 | " file (%d)\n", rc); | ||
226 | } | ||
227 | |||
228 | static | ||
229 | void invalidate_last_dump(struct phyp_dump_header *ph, unsigned long addr) | ||
230 | { | ||
231 | int rc; | ||
232 | |||
233 | /* Add addr value if not initialized before */ | ||
234 | if (ph->cpu_data.destination_address == 0) { | ||
235 | ph->cpu_data.destination_address += addr; | ||
236 | ph->hpte_data.destination_address += addr; | ||
237 | ph->kernel_data.destination_address += addr; | ||
238 | } | ||
239 | |||
240 | do { | ||
241 | rc = rtas_call(ibm_configure_kernel_dump, 3, 1, NULL, | ||
242 | 2, ph, sizeof(struct phyp_dump_header)); | ||
243 | } while (rtas_busy_delay(rc)); | ||
244 | |||
245 | if (rc) { | ||
246 | printk(KERN_ERR "phyp-dump: unexpected error (%d) " | ||
247 | "on invalidate\n", rc); | ||
248 | print_dump_header(ph); | ||
249 | } | ||
250 | } | ||
251 | |||
252 | /* ------------------------------------------------- */ | ||
253 | /** | ||
254 | * release_memory_range -- release memory previously lmb_reserved | ||
255 | * @start_pfn: starting physical frame number | ||
256 | * @nr_pages: number of pages to free. | ||
257 | * | ||
258 | * This routine will release memory that had been previously | ||
259 | * lmb_reserved in early boot. The released memory becomes | ||
260 | * available for genreal use. | ||
261 | */ | ||
262 | static void release_memory_range(unsigned long start_pfn, | ||
263 | unsigned long nr_pages) | ||
264 | { | ||
265 | struct page *rpage; | ||
266 | unsigned long end_pfn; | ||
267 | long i; | ||
268 | |||
269 | end_pfn = start_pfn + nr_pages; | ||
270 | |||
271 | for (i = start_pfn; i <= end_pfn; i++) { | ||
272 | rpage = pfn_to_page(i); | ||
273 | if (PageReserved(rpage)) { | ||
274 | ClearPageReserved(rpage); | ||
275 | init_page_count(rpage); | ||
276 | __free_page(rpage); | ||
277 | totalram_pages++; | ||
278 | } | ||
279 | } | ||
280 | } | ||
281 | |||
282 | /** | ||
283 | * track_freed_range -- Counts the range being freed. | ||
284 | * Once the counter goes to zero, it re-registers dump for | ||
285 | * future use. | ||
286 | */ | ||
287 | static void | ||
288 | track_freed_range(unsigned long addr, unsigned long length) | ||
289 | { | ||
290 | static unsigned long scratch_area_size, reserved_area_size; | ||
291 | |||
292 | if (addr < phyp_dump_info->init_reserve_start) | ||
293 | return; | ||
294 | |||
295 | if ((addr >= phyp_dump_info->init_reserve_start) && | ||
296 | (addr <= phyp_dump_info->init_reserve_start + | ||
297 | phyp_dump_info->init_reserve_size)) | ||
298 | reserved_area_size += length; | ||
299 | |||
300 | if ((addr >= phyp_dump_info->reserved_scratch_addr) && | ||
301 | (addr <= phyp_dump_info->reserved_scratch_addr + | ||
302 | phyp_dump_info->reserved_scratch_size)) | ||
303 | scratch_area_size += length; | ||
304 | |||
305 | if ((reserved_area_size == phyp_dump_info->init_reserve_size) && | ||
306 | (scratch_area_size == phyp_dump_info->reserved_scratch_size)) { | ||
307 | |||
308 | invalidate_last_dump(&phdr, | ||
309 | phyp_dump_info->reserved_scratch_addr); | ||
310 | register_dump_area(&phdr, | ||
311 | phyp_dump_info->reserved_scratch_addr); | ||
312 | } | ||
313 | } | ||
314 | |||
315 | /* ------------------------------------------------- */ | ||
316 | /** | ||
317 | * sysfs_release_region -- sysfs interface to release memory range. | ||
318 | * | ||
319 | * Usage: | ||
320 | * "echo <start addr> <length> > /sys/kernel/release_region" | ||
321 | * | ||
322 | * Example: | ||
323 | * "echo 0x40000000 0x10000000 > /sys/kernel/release_region" | ||
324 | * | ||
325 | * will release 256MB starting at 1GB. | ||
326 | */ | ||
327 | static ssize_t store_release_region(struct kobject *kobj, | ||
328 | struct kobj_attribute *attr, | ||
329 | const char *buf, size_t count) | ||
330 | { | ||
331 | unsigned long start_addr, length, end_addr; | ||
332 | unsigned long start_pfn, nr_pages; | ||
333 | ssize_t ret; | ||
334 | |||
335 | ret = sscanf(buf, "%lx %lx", &start_addr, &length); | ||
336 | if (ret != 2) | ||
337 | return -EINVAL; | ||
338 | |||
339 | track_freed_range(start_addr, length); | ||
340 | |||
341 | /* Range-check - don't free any reserved memory that | ||
342 | * wasn't reserved for phyp-dump */ | ||
343 | if (start_addr < phyp_dump_info->init_reserve_start) | ||
344 | start_addr = phyp_dump_info->init_reserve_start; | ||
345 | |||
346 | end_addr = phyp_dump_info->init_reserve_start + | ||
347 | phyp_dump_info->init_reserve_size; | ||
348 | if (start_addr+length > end_addr) | ||
349 | length = end_addr - start_addr; | ||
350 | |||
351 | /* Release the region of memory assed in by user */ | ||
352 | start_pfn = PFN_DOWN(start_addr); | ||
353 | nr_pages = PFN_DOWN(length); | ||
354 | release_memory_range(start_pfn, nr_pages); | ||
355 | |||
356 | return count; | ||
357 | } | ||
358 | |||
359 | static ssize_t show_release_region(struct kobject *kobj, | ||
360 | struct kobj_attribute *attr, char *buf) | ||
361 | { | ||
362 | u64 second_addr_range; | ||
363 | |||
364 | /* total reserved size - start of scratch area */ | ||
365 | second_addr_range = phyp_dump_info->init_reserve_size - | ||
366 | phyp_dump_info->reserved_scratch_size; | ||
367 | return sprintf(buf, "CPU:0x%lx-0x%lx: HPTE:0x%lx-0x%lx:" | ||
368 | " DUMP:0x%lx-0x%lx, 0x%lx-0x%lx:\n", | ||
369 | phdr.cpu_data.destination_address, | ||
370 | phdr.cpu_data.length_copied, | ||
371 | phdr.hpte_data.destination_address, | ||
372 | phdr.hpte_data.length_copied, | ||
373 | phdr.kernel_data.destination_address, | ||
374 | phdr.kernel_data.length_copied, | ||
375 | phyp_dump_info->init_reserve_start, | ||
376 | second_addr_range); | ||
377 | } | ||
378 | |||
379 | static struct kobj_attribute rr = __ATTR(release_region, 0600, | ||
380 | show_release_region, | ||
381 | store_release_region); | ||
382 | |||
383 | static int __init phyp_dump_setup(void) | ||
384 | { | ||
385 | struct device_node *rtas; | ||
386 | const struct phyp_dump_header *dump_header = NULL; | ||
387 | unsigned long dump_area_start; | ||
388 | unsigned long dump_area_length; | ||
389 | int header_len = 0; | ||
390 | int rc; | ||
391 | |||
392 | /* If no memory was reserved in early boot, there is nothing to do */ | ||
393 | if (phyp_dump_info->init_reserve_size == 0) | ||
394 | return 0; | ||
395 | |||
396 | /* Return if phyp dump not supported */ | ||
397 | if (!phyp_dump_info->phyp_dump_configured) | ||
398 | return -ENOSYS; | ||
399 | |||
400 | /* Is there dump data waiting for us? If there isn't, | ||
401 | * then register a new dump area, and release all of | ||
402 | * the rest of the reserved ram. | ||
403 | * | ||
404 | * The /rtas/ibm,kernel-dump rtas node is present only | ||
405 | * if there is dump data waiting for us. | ||
406 | */ | ||
407 | rtas = of_find_node_by_path("/rtas"); | ||
408 | if (rtas) { | ||
409 | dump_header = of_get_property(rtas, "ibm,kernel-dump", | ||
410 | &header_len); | ||
411 | of_node_put(rtas); | ||
412 | } | ||
413 | |||
414 | print_dump_header(dump_header); | ||
415 | dump_area_length = init_dump_header(&phdr); | ||
416 | /* align down */ | ||
417 | dump_area_start = phyp_dump_info->init_reserve_start & PAGE_MASK; | ||
418 | |||
419 | if (dump_header == NULL) { | ||
420 | register_dump_area(&phdr, dump_area_start); | ||
421 | return 0; | ||
422 | } | ||
423 | |||
424 | /* re-register the dump area, if old dump was invalid */ | ||
425 | if ((dump_header) && (dump_header->status & DUMP_ERROR_FLAG)) { | ||
426 | invalidate_last_dump(&phdr, dump_area_start); | ||
427 | register_dump_area(&phdr, dump_area_start); | ||
428 | return 0; | ||
429 | } | ||
430 | |||
431 | if (dump_header) { | ||
432 | phyp_dump_info->reserved_scratch_addr = | ||
433 | dump_header->cpu_data.destination_address; | ||
434 | phyp_dump_info->reserved_scratch_size = | ||
435 | dump_header->cpu_data.source_length + | ||
436 | dump_header->hpte_data.source_length + | ||
437 | dump_header->kernel_data.source_length; | ||
438 | } | ||
439 | |||
440 | /* Should we create a dump_subsys, analogous to s390/ipl.c ? */ | ||
441 | rc = sysfs_create_file(kernel_kobj, &rr.attr); | ||
442 | if (rc) | ||
443 | printk(KERN_ERR "phyp-dump: unable to create sysfs file (%d)\n", | ||
444 | rc); | ||
445 | |||
446 | /* ToDo: re-register the dump area, for next time. */ | ||
447 | return 0; | ||
448 | } | ||
449 | machine_subsys_initcall(pseries, phyp_dump_setup); | ||
450 | |||
451 | int __init early_init_dt_scan_phyp_dump(unsigned long node, | ||
452 | const char *uname, int depth, void *data) | ||
453 | { | ||
454 | const unsigned int *sizes; | ||
455 | |||
456 | phyp_dump_info->phyp_dump_configured = 0; | ||
457 | phyp_dump_info->phyp_dump_is_active = 0; | ||
458 | |||
459 | if (depth != 1 || strcmp(uname, "rtas") != 0) | ||
460 | return 0; | ||
461 | |||
462 | if (of_get_flat_dt_prop(node, "ibm,configure-kernel-dump", NULL)) | ||
463 | phyp_dump_info->phyp_dump_configured++; | ||
464 | |||
465 | if (of_get_flat_dt_prop(node, "ibm,dump-kernel", NULL)) | ||
466 | phyp_dump_info->phyp_dump_is_active++; | ||
467 | |||
468 | sizes = of_get_flat_dt_prop(node, "ibm,configure-kernel-dump-sizes", | ||
469 | NULL); | ||
470 | if (!sizes) | ||
471 | return 0; | ||
472 | |||
473 | if (sizes[0] == 1) | ||
474 | phyp_dump_info->cpu_state_size = *((unsigned long *)&sizes[1]); | ||
475 | |||
476 | if (sizes[3] == 2) | ||
477 | phyp_dump_info->hpte_region_size = | ||
478 | *((unsigned long *)&sizes[4]); | ||
479 | return 1; | ||
480 | } | ||
481 | |||
482 | /* Look for phyp_dump= cmdline option */ | ||
483 | static int __init early_phyp_dump_enabled(char *p) | ||
484 | { | ||
485 | phyp_dump_info->phyp_dump_at_boot = 1; | ||
486 | |||
487 | if (!p) | ||
488 | return 0; | ||
489 | |||
490 | if (strncmp(p, "1", 1) == 0) | ||
491 | phyp_dump_info->phyp_dump_at_boot = 1; | ||
492 | else if (strncmp(p, "0", 1) == 0) | ||
493 | phyp_dump_info->phyp_dump_at_boot = 0; | ||
494 | |||
495 | return 0; | ||
496 | } | ||
497 | early_param("phyp_dump", early_phyp_dump_enabled); | ||
498 | |||
499 | /* Look for phyp_dump_reserve_size= cmdline option */ | ||
500 | static int __init early_phyp_dump_reserve_size(char *p) | ||
501 | { | ||
502 | if (p) | ||
503 | phyp_dump_info->reserve_bootvar = memparse(p, &p); | ||
504 | |||
505 | return 0; | ||
506 | } | ||
507 | early_param("phyp_dump_reserve_size", early_phyp_dump_reserve_size); | ||
diff --git a/arch/powerpc/platforms/pseries/pseries.h b/arch/powerpc/platforms/pseries/pseries.h index 61136d019554..9e17c0d2a0c8 100644 --- a/arch/powerpc/platforms/pseries/pseries.h +++ b/arch/powerpc/platforms/pseries/pseries.h | |||
@@ -38,4 +38,6 @@ extern void pSeries_final_fixup(void); | |||
38 | /* Poweron flag used for enabling auto ups restart */ | 38 | /* Poweron flag used for enabling auto ups restart */ |
39 | extern unsigned long rtas_poweron_auto; | 39 | extern unsigned long rtas_poweron_auto; |
40 | 40 | ||
41 | extern void find_udbg_vterm(void); | ||
42 | |||
41 | #endif /* _PSERIES_PSERIES_H */ | 43 | #endif /* _PSERIES_PSERIES_H */ |
diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c index 2800fced8c7c..ac75c10de278 100644 --- a/arch/powerpc/platforms/pseries/reconfig.c +++ b/arch/powerpc/platforms/pseries/reconfig.c | |||
@@ -222,14 +222,14 @@ static char * parse_next_property(char *buf, char *end, char **name, int *length | |||
222 | tmp = strchr(buf, ' '); | 222 | tmp = strchr(buf, ' '); |
223 | if (!tmp) { | 223 | if (!tmp) { |
224 | printk(KERN_ERR "property parse failed in %s at line %d\n", | 224 | printk(KERN_ERR "property parse failed in %s at line %d\n", |
225 | __FUNCTION__, __LINE__); | 225 | __func__, __LINE__); |
226 | return NULL; | 226 | return NULL; |
227 | } | 227 | } |
228 | *tmp = '\0'; | 228 | *tmp = '\0'; |
229 | 229 | ||
230 | if (++tmp >= end) { | 230 | if (++tmp >= end) { |
231 | printk(KERN_ERR "property parse failed in %s at line %d\n", | 231 | printk(KERN_ERR "property parse failed in %s at line %d\n", |
232 | __FUNCTION__, __LINE__); | 232 | __func__, __LINE__); |
233 | return NULL; | 233 | return NULL; |
234 | } | 234 | } |
235 | 235 | ||
@@ -238,12 +238,12 @@ static char * parse_next_property(char *buf, char *end, char **name, int *length | |||
238 | *length = simple_strtoul(tmp, &tmp, 10); | 238 | *length = simple_strtoul(tmp, &tmp, 10); |
239 | if (*length == -1) { | 239 | if (*length == -1) { |
240 | printk(KERN_ERR "property parse failed in %s at line %d\n", | 240 | printk(KERN_ERR "property parse failed in %s at line %d\n", |
241 | __FUNCTION__, __LINE__); | 241 | __func__, __LINE__); |
242 | return NULL; | 242 | return NULL; |
243 | } | 243 | } |
244 | if (*tmp != ' ' || ++tmp >= end) { | 244 | if (*tmp != ' ' || ++tmp >= end) { |
245 | printk(KERN_ERR "property parse failed in %s at line %d\n", | 245 | printk(KERN_ERR "property parse failed in %s at line %d\n", |
246 | __FUNCTION__, __LINE__); | 246 | __func__, __LINE__); |
247 | return NULL; | 247 | return NULL; |
248 | } | 248 | } |
249 | 249 | ||
@@ -252,12 +252,12 @@ static char * parse_next_property(char *buf, char *end, char **name, int *length | |||
252 | tmp += *length; | 252 | tmp += *length; |
253 | if (tmp > end) { | 253 | if (tmp > end) { |
254 | printk(KERN_ERR "property parse failed in %s at line %d\n", | 254 | printk(KERN_ERR "property parse failed in %s at line %d\n", |
255 | __FUNCTION__, __LINE__); | 255 | __func__, __LINE__); |
256 | return NULL; | 256 | return NULL; |
257 | } | 257 | } |
258 | else if (tmp < end && *tmp != ' ' && *tmp != '\0') { | 258 | else if (tmp < end && *tmp != ' ' && *tmp != '\0') { |
259 | printk(KERN_ERR "property parse failed in %s at line %d\n", | 259 | printk(KERN_ERR "property parse failed in %s at line %d\n", |
260 | __FUNCTION__, __LINE__); | 260 | __func__, __LINE__); |
261 | return NULL; | 261 | return NULL; |
262 | } | 262 | } |
263 | tmp++; | 263 | tmp++; |
diff --git a/arch/powerpc/platforms/pseries/scanlog.c b/arch/powerpc/platforms/pseries/scanlog.c index 8e1ef168e2dd..e5b0ea870164 100644 --- a/arch/powerpc/platforms/pseries/scanlog.c +++ b/arch/powerpc/platforms/pseries/scanlog.c | |||
@@ -195,31 +195,30 @@ const struct file_operations scanlog_fops = { | |||
195 | static int __init scanlog_init(void) | 195 | static int __init scanlog_init(void) |
196 | { | 196 | { |
197 | struct proc_dir_entry *ent; | 197 | struct proc_dir_entry *ent; |
198 | void *data; | ||
199 | int err = -ENOMEM; | ||
198 | 200 | ||
199 | ibm_scan_log_dump = rtas_token("ibm,scan-log-dump"); | 201 | ibm_scan_log_dump = rtas_token("ibm,scan-log-dump"); |
200 | if (ibm_scan_log_dump == RTAS_UNKNOWN_SERVICE) { | 202 | if (ibm_scan_log_dump == RTAS_UNKNOWN_SERVICE) |
201 | printk(KERN_ERR "scan-log-dump not implemented on this system\n"); | 203 | return -ENODEV; |
202 | return -EIO; | ||
203 | } | ||
204 | 204 | ||
205 | ent = create_proc_entry("ppc64/rtas/scan-log-dump", S_IRUSR, NULL); | 205 | /* Ideally we could allocate a buffer < 4G */ |
206 | if (ent) { | 206 | data = kzalloc(RTAS_DATA_BUF_SIZE, GFP_KERNEL); |
207 | ent->proc_fops = &scanlog_fops; | 207 | if (!data) |
208 | /* Ideally we could allocate a buffer < 4G */ | 208 | goto err; |
209 | ent->data = kmalloc(RTAS_DATA_BUF_SIZE, GFP_KERNEL); | 209 | |
210 | if (!ent->data) { | 210 | ent = proc_create("ppc64/rtas/scan-log-dump", S_IRUSR, NULL, |
211 | printk(KERN_ERR "Failed to allocate a buffer\n"); | 211 | &scanlog_fops); |
212 | remove_proc_entry("scan-log-dump", ent->parent); | 212 | if (!ent) |
213 | return -ENOMEM; | 213 | goto err; |
214 | } | 214 | |
215 | ((unsigned int *)ent->data)[0] = 0; | 215 | ent->data = data; |
216 | } else { | ||
217 | printk(KERN_ERR "Failed to create ppc64/scan-log-dump proc entry\n"); | ||
218 | return -EIO; | ||
219 | } | ||
220 | proc_ppc64_scan_log_dump = ent; | 216 | proc_ppc64_scan_log_dump = ent; |
221 | 217 | ||
222 | return 0; | 218 | return 0; |
219 | err: | ||
220 | kfree(data); | ||
221 | return err; | ||
223 | } | 222 | } |
224 | 223 | ||
225 | static void __exit scanlog_cleanup(void) | 224 | static void __exit scanlog_cleanup(void) |
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index fdb9b1c8f977..f66aa9c3b135 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -76,9 +76,6 @@ | |||
76 | #define DBG(fmt...) | 76 | #define DBG(fmt...) |
77 | #endif | 77 | #endif |
78 | 78 | ||
79 | /* move those away to a .h */ | ||
80 | extern void find_udbg_vterm(void); | ||
81 | |||
82 | int fwnmi_active; /* TRUE if an FWNMI handler is present */ | 79 | int fwnmi_active; /* TRUE if an FWNMI handler is present */ |
83 | 80 | ||
84 | static void pseries_shared_idle_sleep(void); | 81 | static void pseries_shared_idle_sleep(void); |
@@ -127,14 +124,60 @@ void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc) | |||
127 | desc->chip->eoi(irq); | 124 | desc->chip->eoi(irq); |
128 | } | 125 | } |
129 | 126 | ||
130 | static void __init pseries_mpic_init_IRQ(void) | 127 | static void __init pseries_setup_i8259_cascade(void) |
131 | { | 128 | { |
132 | struct device_node *np, *old, *cascade = NULL; | 129 | struct device_node *np, *old, *found = NULL; |
133 | const unsigned int *addrp; | 130 | unsigned int cascade; |
131 | const u32 *addrp; | ||
134 | unsigned long intack = 0; | 132 | unsigned long intack = 0; |
133 | int naddr; | ||
134 | |||
135 | for_each_node_by_type(np, "interrupt-controller") { | ||
136 | if (of_device_is_compatible(np, "chrp,iic")) { | ||
137 | found = np; | ||
138 | break; | ||
139 | } | ||
140 | } | ||
141 | |||
142 | if (found == NULL) { | ||
143 | printk(KERN_DEBUG "pic: no ISA interrupt controller\n"); | ||
144 | return; | ||
145 | } | ||
146 | |||
147 | cascade = irq_of_parse_and_map(found, 0); | ||
148 | if (cascade == NO_IRQ) { | ||
149 | printk(KERN_ERR "pic: failed to map cascade interrupt"); | ||
150 | return; | ||
151 | } | ||
152 | pr_debug("pic: cascade mapped to irq %d\n", cascade); | ||
153 | |||
154 | for (old = of_node_get(found); old != NULL ; old = np) { | ||
155 | np = of_get_parent(old); | ||
156 | of_node_put(old); | ||
157 | if (np == NULL) | ||
158 | break; | ||
159 | if (strcmp(np->name, "pci") != 0) | ||
160 | continue; | ||
161 | addrp = of_get_property(np, "8259-interrupt-acknowledge", NULL); | ||
162 | if (addrp == NULL) | ||
163 | continue; | ||
164 | naddr = of_n_addr_cells(np); | ||
165 | intack = addrp[naddr-1]; | ||
166 | if (naddr > 1) | ||
167 | intack |= ((unsigned long)addrp[naddr-2]) << 32; | ||
168 | } | ||
169 | if (intack) | ||
170 | printk(KERN_DEBUG "pic: PCI 8259 intack at 0x%016lx\n", intack); | ||
171 | i8259_init(found, intack); | ||
172 | of_node_put(found); | ||
173 | set_irq_chained_handler(cascade, pseries_8259_cascade); | ||
174 | } | ||
175 | |||
176 | static void __init pseries_mpic_init_IRQ(void) | ||
177 | { | ||
178 | struct device_node *np; | ||
135 | const unsigned int *opprop; | 179 | const unsigned int *opprop; |
136 | unsigned long openpic_addr = 0; | 180 | unsigned long openpic_addr = 0; |
137 | unsigned int cascade_irq; | ||
138 | int naddr, n, i, opplen; | 181 | int naddr, n, i, opplen; |
139 | struct mpic *mpic; | 182 | struct mpic *mpic; |
140 | 183 | ||
@@ -167,43 +210,13 @@ static void __init pseries_mpic_init_IRQ(void) | |||
167 | mpic_init(mpic); | 210 | mpic_init(mpic); |
168 | 211 | ||
169 | /* Look for cascade */ | 212 | /* Look for cascade */ |
170 | for_each_node_by_type(np, "interrupt-controller") | 213 | pseries_setup_i8259_cascade(); |
171 | if (of_device_is_compatible(np, "chrp,iic")) { | 214 | } |
172 | cascade = np; | ||
173 | break; | ||
174 | } | ||
175 | if (cascade == NULL) | ||
176 | return; | ||
177 | |||
178 | cascade_irq = irq_of_parse_and_map(cascade, 0); | ||
179 | if (cascade_irq == NO_IRQ) { | ||
180 | printk(KERN_ERR "mpic: failed to map cascade interrupt"); | ||
181 | return; | ||
182 | } | ||
183 | 215 | ||
184 | /* Check ACK type */ | 216 | static void __init pseries_xics_init_IRQ(void) |
185 | for (old = of_node_get(cascade); old != NULL ; old = np) { | 217 | { |
186 | np = of_get_parent(old); | 218 | xics_init_IRQ(); |
187 | of_node_put(old); | 219 | pseries_setup_i8259_cascade(); |
188 | if (np == NULL) | ||
189 | break; | ||
190 | if (strcmp(np->name, "pci") != 0) | ||
191 | continue; | ||
192 | addrp = of_get_property(np, "8259-interrupt-acknowledge", | ||
193 | NULL); | ||
194 | if (addrp == NULL) | ||
195 | continue; | ||
196 | naddr = of_n_addr_cells(np); | ||
197 | intack = addrp[naddr-1]; | ||
198 | if (naddr > 1) | ||
199 | intack |= ((unsigned long)addrp[naddr-2]) << 32; | ||
200 | } | ||
201 | if (intack) | ||
202 | printk(KERN_DEBUG "mpic: PCI 8259 intack at 0x%016lx\n", | ||
203 | intack); | ||
204 | i8259_init(cascade, intack); | ||
205 | of_node_put(cascade); | ||
206 | set_irq_chained_handler(cascade_irq, pseries_8259_cascade); | ||
207 | } | 220 | } |
208 | 221 | ||
209 | static void pseries_lpar_enable_pmcs(void) | 222 | static void pseries_lpar_enable_pmcs(void) |
@@ -235,7 +248,7 @@ static void __init pseries_discover_pic(void) | |||
235 | smp_init_pseries_mpic(); | 248 | smp_init_pseries_mpic(); |
236 | return; | 249 | return; |
237 | } else if (strstr(typep, "ppc-xicp")) { | 250 | } else if (strstr(typep, "ppc-xicp")) { |
238 | ppc_md.init_IRQ = xics_init_IRQ; | 251 | ppc_md.init_IRQ = pseries_xics_init_IRQ; |
239 | setup_kexec_cpu_down_xics(); | 252 | setup_kexec_cpu_down_xics(); |
240 | smp_init_pseries_xics(); | 253 | smp_init_pseries_xics(); |
241 | return; | 254 | return; |
@@ -393,6 +406,7 @@ static void pseries_dedicated_idle_sleep(void) | |||
393 | { | 406 | { |
394 | unsigned int cpu = smp_processor_id(); | 407 | unsigned int cpu = smp_processor_id(); |
395 | unsigned long start_snooze; | 408 | unsigned long start_snooze; |
409 | unsigned long in_purr, out_purr; | ||
396 | 410 | ||
397 | /* | 411 | /* |
398 | * Indicate to the HV that we are idle. Now would be | 412 | * Indicate to the HV that we are idle. Now would be |
@@ -400,6 +414,7 @@ static void pseries_dedicated_idle_sleep(void) | |||
400 | */ | 414 | */ |
401 | get_lppaca()->idle = 1; | 415 | get_lppaca()->idle = 1; |
402 | get_lppaca()->donate_dedicated_cpu = 1; | 416 | get_lppaca()->donate_dedicated_cpu = 1; |
417 | in_purr = mfspr(SPRN_PURR); | ||
403 | 418 | ||
404 | /* | 419 | /* |
405 | * We come in with interrupts disabled, and need_resched() | 420 | * We come in with interrupts disabled, and need_resched() |
@@ -432,6 +447,8 @@ static void pseries_dedicated_idle_sleep(void) | |||
432 | 447 | ||
433 | out: | 448 | out: |
434 | HMT_medium(); | 449 | HMT_medium(); |
450 | out_purr = mfspr(SPRN_PURR); | ||
451 | get_lppaca()->wait_state_cycles += out_purr - in_purr; | ||
435 | get_lppaca()->donate_dedicated_cpu = 0; | 452 | get_lppaca()->donate_dedicated_cpu = 0; |
436 | get_lppaca()->idle = 0; | 453 | get_lppaca()->idle = 0; |
437 | } | 454 | } |
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index a977f200db89..43df53c30aa0 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
@@ -516,6 +516,8 @@ static struct irq_chip xics_pic_lpar = { | |||
516 | .set_affinity = xics_set_affinity | 516 | .set_affinity = xics_set_affinity |
517 | }; | 517 | }; |
518 | 518 | ||
519 | /* Points to the irq_chip we're actually using */ | ||
520 | static struct irq_chip *xics_irq_chip; | ||
519 | 521 | ||
520 | static int xics_host_match(struct irq_host *h, struct device_node *node) | 522 | static int xics_host_match(struct irq_host *h, struct device_node *node) |
521 | { | 523 | { |
@@ -526,23 +528,13 @@ static int xics_host_match(struct irq_host *h, struct device_node *node) | |||
526 | return !of_device_is_compatible(node, "chrp,iic"); | 528 | return !of_device_is_compatible(node, "chrp,iic"); |
527 | } | 529 | } |
528 | 530 | ||
529 | static int xics_host_map_direct(struct irq_host *h, unsigned int virq, | 531 | static int xics_host_map(struct irq_host *h, unsigned int virq, |
530 | irq_hw_number_t hw) | 532 | irq_hw_number_t hw) |
531 | { | 533 | { |
532 | pr_debug("xics: map_direct virq %d, hwirq 0x%lx\n", virq, hw); | 534 | pr_debug("xics: map virq %d, hwirq 0x%lx\n", virq, hw); |
533 | 535 | ||
534 | get_irq_desc(virq)->status |= IRQ_LEVEL; | 536 | get_irq_desc(virq)->status |= IRQ_LEVEL; |
535 | set_irq_chip_and_handler(virq, &xics_pic_direct, handle_fasteoi_irq); | 537 | set_irq_chip_and_handler(virq, xics_irq_chip, handle_fasteoi_irq); |
536 | return 0; | ||
537 | } | ||
538 | |||
539 | static int xics_host_map_lpar(struct irq_host *h, unsigned int virq, | ||
540 | irq_hw_number_t hw) | ||
541 | { | ||
542 | pr_debug("xics: map_direct virq %d, hwirq 0x%lx\n", virq, hw); | ||
543 | |||
544 | get_irq_desc(virq)->status |= IRQ_LEVEL; | ||
545 | set_irq_chip_and_handler(virq, &xics_pic_lpar, handle_fasteoi_irq); | ||
546 | return 0; | 538 | return 0; |
547 | } | 539 | } |
548 | 540 | ||
@@ -561,27 +553,20 @@ static int xics_host_xlate(struct irq_host *h, struct device_node *ct, | |||
561 | return 0; | 553 | return 0; |
562 | } | 554 | } |
563 | 555 | ||
564 | static struct irq_host_ops xics_host_direct_ops = { | 556 | static struct irq_host_ops xics_host_ops = { |
565 | .match = xics_host_match, | 557 | .match = xics_host_match, |
566 | .map = xics_host_map_direct, | 558 | .map = xics_host_map, |
567 | .xlate = xics_host_xlate, | ||
568 | }; | ||
569 | |||
570 | static struct irq_host_ops xics_host_lpar_ops = { | ||
571 | .match = xics_host_match, | ||
572 | .map = xics_host_map_lpar, | ||
573 | .xlate = xics_host_xlate, | 559 | .xlate = xics_host_xlate, |
574 | }; | 560 | }; |
575 | 561 | ||
576 | static void __init xics_init_host(void) | 562 | static void __init xics_init_host(void) |
577 | { | 563 | { |
578 | struct irq_host_ops *ops; | ||
579 | |||
580 | if (firmware_has_feature(FW_FEATURE_LPAR)) | 564 | if (firmware_has_feature(FW_FEATURE_LPAR)) |
581 | ops = &xics_host_lpar_ops; | 565 | xics_irq_chip = &xics_pic_lpar; |
582 | else | 566 | else |
583 | ops = &xics_host_direct_ops; | 567 | xics_irq_chip = &xics_pic_direct; |
584 | xics_host = irq_alloc_host(NULL, IRQ_HOST_MAP_TREE, 0, ops, | 568 | |
569 | xics_host = irq_alloc_host(NULL, IRQ_HOST_MAP_TREE, 0, &xics_host_ops, | ||
585 | XICS_IRQ_SPURIOUS); | 570 | XICS_IRQ_SPURIOUS); |
586 | BUG_ON(xics_host == NULL); | 571 | BUG_ON(xics_host == NULL); |
587 | irq_set_default_host(xics_host); | 572 | irq_set_default_host(xics_host); |
@@ -655,52 +640,6 @@ static void __init xics_init_one_node(struct device_node *np, | |||
655 | } | 640 | } |
656 | } | 641 | } |
657 | 642 | ||
658 | |||
659 | static void __init xics_setup_8259_cascade(void) | ||
660 | { | ||
661 | struct device_node *np, *old, *found = NULL; | ||
662 | int cascade, naddr; | ||
663 | const u32 *addrp; | ||
664 | unsigned long intack = 0; | ||
665 | |||
666 | for_each_node_by_type(np, "interrupt-controller") | ||
667 | if (of_device_is_compatible(np, "chrp,iic")) { | ||
668 | found = np; | ||
669 | break; | ||
670 | } | ||
671 | if (found == NULL) { | ||
672 | printk(KERN_DEBUG "xics: no ISA interrupt controller\n"); | ||
673 | return; | ||
674 | } | ||
675 | cascade = irq_of_parse_and_map(found, 0); | ||
676 | if (cascade == NO_IRQ) { | ||
677 | printk(KERN_ERR "xics: failed to map cascade interrupt"); | ||
678 | return; | ||
679 | } | ||
680 | pr_debug("xics: cascade mapped to irq %d\n", cascade); | ||
681 | |||
682 | for (old = of_node_get(found); old != NULL ; old = np) { | ||
683 | np = of_get_parent(old); | ||
684 | of_node_put(old); | ||
685 | if (np == NULL) | ||
686 | break; | ||
687 | if (strcmp(np->name, "pci") != 0) | ||
688 | continue; | ||
689 | addrp = of_get_property(np, "8259-interrupt-acknowledge", NULL); | ||
690 | if (addrp == NULL) | ||
691 | continue; | ||
692 | naddr = of_n_addr_cells(np); | ||
693 | intack = addrp[naddr-1]; | ||
694 | if (naddr > 1) | ||
695 | intack |= ((unsigned long)addrp[naddr-2]) << 32; | ||
696 | } | ||
697 | if (intack) | ||
698 | printk(KERN_DEBUG "xics: PCI 8259 intack at 0x%016lx\n", intack); | ||
699 | i8259_init(found, intack); | ||
700 | of_node_put(found); | ||
701 | set_irq_chained_handler(cascade, pseries_8259_cascade); | ||
702 | } | ||
703 | |||
704 | void __init xics_init_IRQ(void) | 643 | void __init xics_init_IRQ(void) |
705 | { | 644 | { |
706 | struct device_node *np; | 645 | struct device_node *np; |
@@ -733,8 +672,6 @@ void __init xics_init_IRQ(void) | |||
733 | 672 | ||
734 | xics_setup_cpu(); | 673 | xics_setup_cpu(); |
735 | 674 | ||
736 | xics_setup_8259_cascade(); | ||
737 | |||
738 | ppc64_boot_msg(0x21, "XICS Done"); | 675 | ppc64_boot_msg(0x21, "XICS Done"); |
739 | } | 676 | } |
740 | 677 | ||
diff --git a/arch/powerpc/platforms/pseries/xics.h b/arch/powerpc/platforms/pseries/xics.h index c26bcff47b6d..1c5321ae8f2f 100644 --- a/arch/powerpc/platforms/pseries/xics.h +++ b/arch/powerpc/platforms/pseries/xics.h | |||
@@ -28,7 +28,4 @@ struct xics_ipi_struct { | |||
28 | 28 | ||
29 | extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned; | 29 | extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned; |
30 | 30 | ||
31 | struct irq_desc; | ||
32 | extern void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc); | ||
33 | |||
34 | #endif /* _POWERPC_KERNEL_XICS_H */ | 31 | #endif /* _POWERPC_KERNEL_XICS_H */ |
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile index 15f3e8527d77..6d386d0071a0 100644 --- a/arch/powerpc/sysdev/Makefile +++ b/arch/powerpc/sysdev/Makefile | |||
@@ -12,6 +12,7 @@ obj-$(CONFIG_U3_DART) += dart_iommu.o | |||
12 | obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o | 12 | obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o |
13 | obj-$(CONFIG_FSL_SOC) += fsl_soc.o | 13 | obj-$(CONFIG_FSL_SOC) += fsl_soc.o |
14 | obj-$(CONFIG_FSL_PCI) += fsl_pci.o | 14 | obj-$(CONFIG_FSL_PCI) += fsl_pci.o |
15 | obj-$(CONFIG_FSL_LBC) += fsl_lbc.o | ||
15 | obj-$(CONFIG_RAPIDIO) += fsl_rio.o | 16 | obj-$(CONFIG_RAPIDIO) += fsl_rio.o |
16 | obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o | 17 | obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o |
17 | obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ | 18 | obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ |
@@ -27,6 +28,7 @@ obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o | |||
27 | obj-$(CONFIG_PPC_I8259) += i8259.o | 28 | obj-$(CONFIG_PPC_I8259) += i8259.o |
28 | obj-$(CONFIG_IPIC) += ipic.o | 29 | obj-$(CONFIG_IPIC) += ipic.o |
29 | obj-$(CONFIG_4xx) += uic.o | 30 | obj-$(CONFIG_4xx) += uic.o |
31 | obj-$(CONFIG_4xx_SOC) += ppc4xx_soc.o | ||
30 | obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o | 32 | obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o |
31 | obj-$(CONFIG_OF_RTC) += of_rtc.o | 33 | obj-$(CONFIG_OF_RTC) += of_rtc.o |
32 | ifeq ($(CONFIG_PCI),y) | 34 | ifeq ($(CONFIG_PCI),y) |
diff --git a/arch/powerpc/sysdev/cpm1.c b/arch/powerpc/sysdev/cpm1.c index df8bd2b64796..58292a086c16 100644 --- a/arch/powerpc/sysdev/cpm1.c +++ b/arch/powerpc/sysdev/cpm1.c | |||
@@ -44,9 +44,6 @@ | |||
44 | 44 | ||
45 | #define CPM_MAP_SIZE (0x4000) | 45 | #define CPM_MAP_SIZE (0x4000) |
46 | 46 | ||
47 | #ifndef CONFIG_PPC_CPM_NEW_BINDING | ||
48 | static void m8xx_cpm_dpinit(void); | ||
49 | #endif | ||
50 | cpm8xx_t __iomem *cpmp; /* Pointer to comm processor space */ | 47 | cpm8xx_t __iomem *cpmp; /* Pointer to comm processor space */ |
51 | immap_t __iomem *mpc8xx_immr; | 48 | immap_t __iomem *mpc8xx_immr; |
52 | static cpic8xx_t __iomem *cpic_reg; | 49 | static cpic8xx_t __iomem *cpic_reg; |
@@ -229,12 +226,7 @@ void __init cpm_reset(void) | |||
229 | out_be32(&siu_conf->sc_sdcr, 1); | 226 | out_be32(&siu_conf->sc_sdcr, 1); |
230 | immr_unmap(siu_conf); | 227 | immr_unmap(siu_conf); |
231 | 228 | ||
232 | #ifdef CONFIG_PPC_CPM_NEW_BINDING | ||
233 | cpm_muram_init(); | 229 | cpm_muram_init(); |
234 | #else | ||
235 | /* Reclaim the DP memory for our use. */ | ||
236 | m8xx_cpm_dpinit(); | ||
237 | #endif | ||
238 | } | 230 | } |
239 | 231 | ||
240 | static DEFINE_SPINLOCK(cmd_lock); | 232 | static DEFINE_SPINLOCK(cmd_lock); |
@@ -257,7 +249,7 @@ int cpm_command(u32 command, u8 opcode) | |||
257 | if ((in_be16(&cpmp->cp_cpcr) & CPM_CR_FLG) == 0) | 249 | if ((in_be16(&cpmp->cp_cpcr) & CPM_CR_FLG) == 0) |
258 | goto out; | 250 | goto out; |
259 | 251 | ||
260 | printk(KERN_ERR "%s(): Not able to issue CPM command\n", __FUNCTION__); | 252 | printk(KERN_ERR "%s(): Not able to issue CPM command\n", __func__); |
261 | ret = -EIO; | 253 | ret = -EIO; |
262 | out: | 254 | out: |
263 | spin_unlock_irqrestore(&cmd_lock, flags); | 255 | spin_unlock_irqrestore(&cmd_lock, flags); |
@@ -293,110 +285,6 @@ cpm_setbrg(uint brg, uint rate) | |||
293 | CPM_BRG_EN | CPM_BRG_DIV16); | 285 | CPM_BRG_EN | CPM_BRG_DIV16); |
294 | } | 286 | } |
295 | 287 | ||
296 | #ifndef CONFIG_PPC_CPM_NEW_BINDING | ||
297 | /* | ||
298 | * dpalloc / dpfree bits. | ||
299 | */ | ||
300 | static spinlock_t cpm_dpmem_lock; | ||
301 | /* | ||
302 | * 16 blocks should be enough to satisfy all requests | ||
303 | * until the memory subsystem goes up... | ||
304 | */ | ||
305 | static rh_block_t cpm_boot_dpmem_rh_block[16]; | ||
306 | static rh_info_t cpm_dpmem_info; | ||
307 | |||
308 | #define CPM_DPMEM_ALIGNMENT 8 | ||
309 | static u8 __iomem *dpram_vbase; | ||
310 | static phys_addr_t dpram_pbase; | ||
311 | |||
312 | static void m8xx_cpm_dpinit(void) | ||
313 | { | ||
314 | spin_lock_init(&cpm_dpmem_lock); | ||
315 | |||
316 | dpram_vbase = cpmp->cp_dpmem; | ||
317 | dpram_pbase = get_immrbase() + offsetof(immap_t, im_cpm.cp_dpmem); | ||
318 | |||
319 | /* Initialize the info header */ | ||
320 | rh_init(&cpm_dpmem_info, CPM_DPMEM_ALIGNMENT, | ||
321 | sizeof(cpm_boot_dpmem_rh_block) / | ||
322 | sizeof(cpm_boot_dpmem_rh_block[0]), | ||
323 | cpm_boot_dpmem_rh_block); | ||
324 | |||
325 | /* | ||
326 | * Attach the usable dpmem area. | ||
327 | * XXX: This is actually crap. CPM_DATAONLY_BASE and | ||
328 | * CPM_DATAONLY_SIZE are a subset of the available dparm. It varies | ||
329 | * with the processor and the microcode patches applied / activated. | ||
330 | * But the following should be at least safe. | ||
331 | */ | ||
332 | rh_attach_region(&cpm_dpmem_info, CPM_DATAONLY_BASE, CPM_DATAONLY_SIZE); | ||
333 | } | ||
334 | |||
335 | /* | ||
336 | * Allocate the requested size worth of DP memory. | ||
337 | * This function returns an offset into the DPRAM area. | ||
338 | * Use cpm_dpram_addr() to get the virtual address of the area. | ||
339 | */ | ||
340 | unsigned long cpm_dpalloc(uint size, uint align) | ||
341 | { | ||
342 | unsigned long start; | ||
343 | unsigned long flags; | ||
344 | |||
345 | spin_lock_irqsave(&cpm_dpmem_lock, flags); | ||
346 | cpm_dpmem_info.alignment = align; | ||
347 | start = rh_alloc(&cpm_dpmem_info, size, "commproc"); | ||
348 | spin_unlock_irqrestore(&cpm_dpmem_lock, flags); | ||
349 | |||
350 | return (uint)start; | ||
351 | } | ||
352 | EXPORT_SYMBOL(cpm_dpalloc); | ||
353 | |||
354 | int cpm_dpfree(unsigned long offset) | ||
355 | { | ||
356 | int ret; | ||
357 | unsigned long flags; | ||
358 | |||
359 | spin_lock_irqsave(&cpm_dpmem_lock, flags); | ||
360 | ret = rh_free(&cpm_dpmem_info, offset); | ||
361 | spin_unlock_irqrestore(&cpm_dpmem_lock, flags); | ||
362 | |||
363 | return ret; | ||
364 | } | ||
365 | EXPORT_SYMBOL(cpm_dpfree); | ||
366 | |||
367 | unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align) | ||
368 | { | ||
369 | unsigned long start; | ||
370 | unsigned long flags; | ||
371 | |||
372 | spin_lock_irqsave(&cpm_dpmem_lock, flags); | ||
373 | cpm_dpmem_info.alignment = align; | ||
374 | start = rh_alloc_fixed(&cpm_dpmem_info, offset, size, "commproc"); | ||
375 | spin_unlock_irqrestore(&cpm_dpmem_lock, flags); | ||
376 | |||
377 | return start; | ||
378 | } | ||
379 | EXPORT_SYMBOL(cpm_dpalloc_fixed); | ||
380 | |||
381 | void cpm_dpdump(void) | ||
382 | { | ||
383 | rh_dump(&cpm_dpmem_info); | ||
384 | } | ||
385 | EXPORT_SYMBOL(cpm_dpdump); | ||
386 | |||
387 | void *cpm_dpram_addr(unsigned long offset) | ||
388 | { | ||
389 | return (void *)(dpram_vbase + offset); | ||
390 | } | ||
391 | EXPORT_SYMBOL(cpm_dpram_addr); | ||
392 | |||
393 | uint cpm_dpram_phys(u8 *addr) | ||
394 | { | ||
395 | return (dpram_pbase + (uint)(addr - dpram_vbase)); | ||
396 | } | ||
397 | EXPORT_SYMBOL(cpm_dpram_phys); | ||
398 | #endif /* !CONFIG_PPC_CPM_NEW_BINDING */ | ||
399 | |||
400 | struct cpm_ioport16 { | 288 | struct cpm_ioport16 { |
401 | __be16 dir, par, odr_sor, dat, intr; | 289 | __be16 dir, par, odr_sor, dat, intr; |
402 | __be16 res[3]; | 290 | __be16 res[3]; |
diff --git a/arch/powerpc/sysdev/cpm2.c b/arch/powerpc/sysdev/cpm2.c index dd066bb1d562..5a6c5dfc53ef 100644 --- a/arch/powerpc/sysdev/cpm2.c +++ b/arch/powerpc/sysdev/cpm2.c | |||
@@ -46,10 +46,6 @@ | |||
46 | 46 | ||
47 | #include <sysdev/fsl_soc.h> | 47 | #include <sysdev/fsl_soc.h> |
48 | 48 | ||
49 | #ifndef CONFIG_PPC_CPM_NEW_BINDING | ||
50 | static void cpm2_dpinit(void); | ||
51 | #endif | ||
52 | |||
53 | cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor space */ | 49 | cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor space */ |
54 | 50 | ||
55 | /* We allocate this here because it is used almost exclusively for | 51 | /* We allocate this here because it is used almost exclusively for |
@@ -71,15 +67,17 @@ void __init cpm2_reset(void) | |||
71 | 67 | ||
72 | /* Reclaim the DP memory for our use. | 68 | /* Reclaim the DP memory for our use. |
73 | */ | 69 | */ |
74 | #ifdef CONFIG_PPC_CPM_NEW_BINDING | ||
75 | cpm_muram_init(); | 70 | cpm_muram_init(); |
76 | #else | ||
77 | cpm2_dpinit(); | ||
78 | #endif | ||
79 | 71 | ||
80 | /* Tell everyone where the comm processor resides. | 72 | /* Tell everyone where the comm processor resides. |
81 | */ | 73 | */ |
82 | cpmp = &cpm2_immr->im_cpm; | 74 | cpmp = &cpm2_immr->im_cpm; |
75 | |||
76 | #ifndef CONFIG_PPC_EARLY_DEBUG_CPM | ||
77 | /* Reset the CPM. | ||
78 | */ | ||
79 | cpm_command(CPM_CR_RST, 0); | ||
80 | #endif | ||
83 | } | 81 | } |
84 | 82 | ||
85 | static DEFINE_SPINLOCK(cmd_lock); | 83 | static DEFINE_SPINLOCK(cmd_lock); |
@@ -99,7 +97,7 @@ int cpm_command(u32 command, u8 opcode) | |||
99 | if ((in_be32(&cpmp->cp_cpcr) & CPM_CR_FLG) == 0) | 97 | if ((in_be32(&cpmp->cp_cpcr) & CPM_CR_FLG) == 0) |
100 | goto out; | 98 | goto out; |
101 | 99 | ||
102 | printk(KERN_ERR "%s(): Not able to issue CPM command\n", __FUNCTION__); | 100 | printk(KERN_ERR "%s(): Not able to issue CPM command\n", __func__); |
103 | ret = -EIO; | 101 | ret = -EIO; |
104 | out: | 102 | out: |
105 | spin_unlock_irqrestore(&cmd_lock, flags); | 103 | spin_unlock_irqrestore(&cmd_lock, flags); |
@@ -347,95 +345,6 @@ int cpm2_smc_clk_setup(enum cpm_clk_target target, int clock) | |||
347 | return ret; | 345 | return ret; |
348 | } | 346 | } |
349 | 347 | ||
350 | #ifndef CONFIG_PPC_CPM_NEW_BINDING | ||
351 | /* | ||
352 | * dpalloc / dpfree bits. | ||
353 | */ | ||
354 | static spinlock_t cpm_dpmem_lock; | ||
355 | /* 16 blocks should be enough to satisfy all requests | ||
356 | * until the memory subsystem goes up... */ | ||
357 | static rh_block_t cpm_boot_dpmem_rh_block[16]; | ||
358 | static rh_info_t cpm_dpmem_info; | ||
359 | static u8 __iomem *im_dprambase; | ||
360 | |||
361 | static void cpm2_dpinit(void) | ||
362 | { | ||
363 | spin_lock_init(&cpm_dpmem_lock); | ||
364 | |||
365 | /* initialize the info header */ | ||
366 | rh_init(&cpm_dpmem_info, 1, | ||
367 | sizeof(cpm_boot_dpmem_rh_block) / | ||
368 | sizeof(cpm_boot_dpmem_rh_block[0]), | ||
369 | cpm_boot_dpmem_rh_block); | ||
370 | |||
371 | im_dprambase = cpm2_immr; | ||
372 | |||
373 | /* Attach the usable dpmem area */ | ||
374 | /* XXX: This is actually crap. CPM_DATAONLY_BASE and | ||
375 | * CPM_DATAONLY_SIZE is only a subset of the available dpram. It | ||
376 | * varies with the processor and the microcode patches activated. | ||
377 | * But the following should be at least safe. | ||
378 | */ | ||
379 | rh_attach_region(&cpm_dpmem_info, CPM_DATAONLY_BASE, CPM_DATAONLY_SIZE); | ||
380 | } | ||
381 | |||
382 | /* This function returns an index into the DPRAM area. | ||
383 | */ | ||
384 | unsigned long cpm_dpalloc(uint size, uint align) | ||
385 | { | ||
386 | unsigned long start; | ||
387 | unsigned long flags; | ||
388 | |||
389 | spin_lock_irqsave(&cpm_dpmem_lock, flags); | ||
390 | cpm_dpmem_info.alignment = align; | ||
391 | start = rh_alloc(&cpm_dpmem_info, size, "commproc"); | ||
392 | spin_unlock_irqrestore(&cpm_dpmem_lock, flags); | ||
393 | |||
394 | return (uint)start; | ||
395 | } | ||
396 | EXPORT_SYMBOL(cpm_dpalloc); | ||
397 | |||
398 | int cpm_dpfree(unsigned long offset) | ||
399 | { | ||
400 | int ret; | ||
401 | unsigned long flags; | ||
402 | |||
403 | spin_lock_irqsave(&cpm_dpmem_lock, flags); | ||
404 | ret = rh_free(&cpm_dpmem_info, offset); | ||
405 | spin_unlock_irqrestore(&cpm_dpmem_lock, flags); | ||
406 | |||
407 | return ret; | ||
408 | } | ||
409 | EXPORT_SYMBOL(cpm_dpfree); | ||
410 | |||
411 | /* not sure if this is ever needed */ | ||
412 | unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align) | ||
413 | { | ||
414 | unsigned long start; | ||
415 | unsigned long flags; | ||
416 | |||
417 | spin_lock_irqsave(&cpm_dpmem_lock, flags); | ||
418 | cpm_dpmem_info.alignment = align; | ||
419 | start = rh_alloc_fixed(&cpm_dpmem_info, offset, size, "commproc"); | ||
420 | spin_unlock_irqrestore(&cpm_dpmem_lock, flags); | ||
421 | |||
422 | return start; | ||
423 | } | ||
424 | EXPORT_SYMBOL(cpm_dpalloc_fixed); | ||
425 | |||
426 | void cpm_dpdump(void) | ||
427 | { | ||
428 | rh_dump(&cpm_dpmem_info); | ||
429 | } | ||
430 | EXPORT_SYMBOL(cpm_dpdump); | ||
431 | |||
432 | void *cpm_dpram_addr(unsigned long offset) | ||
433 | { | ||
434 | return (void *)(im_dprambase + offset); | ||
435 | } | ||
436 | EXPORT_SYMBOL(cpm_dpram_addr); | ||
437 | #endif /* !CONFIG_PPC_CPM_NEW_BINDING */ | ||
438 | |||
439 | struct cpm2_ioports { | 348 | struct cpm2_ioports { |
440 | u32 dir, par, sor, odr, dat; | 349 | u32 dir, par, sor, odr, dat; |
441 | u32 res[3]; | 350 | u32 res[3]; |
diff --git a/arch/powerpc/sysdev/cpm_common.c b/arch/powerpc/sysdev/cpm_common.c index 165981c87786..cb7df2dce44f 100644 --- a/arch/powerpc/sysdev/cpm_common.c +++ b/arch/powerpc/sysdev/cpm_common.c | |||
@@ -58,7 +58,6 @@ void __init udbg_init_cpm(void) | |||
58 | } | 58 | } |
59 | #endif | 59 | #endif |
60 | 60 | ||
61 | #ifdef CONFIG_PPC_CPM_NEW_BINDING | ||
62 | static spinlock_t cpm_muram_lock; | 61 | static spinlock_t cpm_muram_lock; |
63 | static rh_block_t cpm_boot_muram_rh_block[16]; | 62 | static rh_block_t cpm_boot_muram_rh_block[16]; |
64 | static rh_info_t cpm_muram_info; | 63 | static rh_info_t cpm_muram_info; |
@@ -199,5 +198,3 @@ dma_addr_t cpm_muram_dma(void __iomem *addr) | |||
199 | return muram_pbase + ((u8 __iomem *)addr - muram_vbase); | 198 | return muram_pbase + ((u8 __iomem *)addr - muram_vbase); |
200 | } | 199 | } |
201 | EXPORT_SYMBOL(cpm_muram_dma); | 200 | EXPORT_SYMBOL(cpm_muram_dma); |
202 | |||
203 | #endif /* CONFIG_PPC_CPM_NEW_BINDING */ | ||
diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c index e0e24b01e3a6..005c2ecf976f 100644 --- a/arch/powerpc/sysdev/dart_iommu.c +++ b/arch/powerpc/sysdev/dart_iommu.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/dma-mapping.h> | 37 | #include <linux/dma-mapping.h> |
38 | #include <linux/vmalloc.h> | 38 | #include <linux/vmalloc.h> |
39 | #include <linux/suspend.h> | 39 | #include <linux/suspend.h> |
40 | #include <linux/lmb.h> | ||
40 | #include <asm/io.h> | 41 | #include <asm/io.h> |
41 | #include <asm/prom.h> | 42 | #include <asm/prom.h> |
42 | #include <asm/iommu.h> | 43 | #include <asm/iommu.h> |
@@ -44,7 +45,6 @@ | |||
44 | #include <asm/machdep.h> | 45 | #include <asm/machdep.h> |
45 | #include <asm/abs_addr.h> | 46 | #include <asm/abs_addr.h> |
46 | #include <asm/cacheflush.h> | 47 | #include <asm/cacheflush.h> |
47 | #include <asm/lmb.h> | ||
48 | #include <asm/ppc-pci.h> | 48 | #include <asm/ppc-pci.h> |
49 | 49 | ||
50 | #include "dart.h" | 50 | #include "dart.h" |
diff --git a/arch/powerpc/sysdev/fsl_lbc.c b/arch/powerpc/sysdev/fsl_lbc.c new file mode 100644 index 000000000000..422c8faef593 --- /dev/null +++ b/arch/powerpc/sysdev/fsl_lbc.c | |||
@@ -0,0 +1,129 @@ | |||
1 | /* | ||
2 | * Freescale LBC and UPM routines. | ||
3 | * | ||
4 | * Copyright (c) 2007-2008 MontaVista Software, Inc. | ||
5 | * | ||
6 | * Author: Anton Vorontsov <avorontsov@ru.mvista.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/of.h> | ||
16 | #include <asm/fsl_lbc.h> | ||
17 | |||
18 | spinlock_t fsl_lbc_lock = __SPIN_LOCK_UNLOCKED(fsl_lbc_lock); | ||
19 | |||
20 | struct fsl_lbc_regs __iomem *fsl_lbc_regs; | ||
21 | EXPORT_SYMBOL(fsl_lbc_regs); | ||
22 | |||
23 | static char __initdata *compat_lbc[] = { | ||
24 | "fsl,pq2-localbus", | ||
25 | "fsl,pq2pro-localbus", | ||
26 | "fsl,pq3-localbus", | ||
27 | "fsl,elbc", | ||
28 | }; | ||
29 | |||
30 | static int __init fsl_lbc_init(void) | ||
31 | { | ||
32 | struct device_node *lbus; | ||
33 | int i; | ||
34 | |||
35 | for (i = 0; i < ARRAY_SIZE(compat_lbc); i++) { | ||
36 | lbus = of_find_compatible_node(NULL, NULL, compat_lbc[i]); | ||
37 | if (lbus) | ||
38 | goto found; | ||
39 | } | ||
40 | return -ENODEV; | ||
41 | |||
42 | found: | ||
43 | fsl_lbc_regs = of_iomap(lbus, 0); | ||
44 | of_node_put(lbus); | ||
45 | if (!fsl_lbc_regs) | ||
46 | return -ENOMEM; | ||
47 | return 0; | ||
48 | } | ||
49 | arch_initcall(fsl_lbc_init); | ||
50 | |||
51 | /** | ||
52 | * fsl_lbc_find - find Localbus bank | ||
53 | * @addr_base: base address of the memory bank | ||
54 | * | ||
55 | * This function walks LBC banks comparing "Base address" field of the BR | ||
56 | * registers with the supplied addr_base argument. When bases match this | ||
57 | * function returns bank number (starting with 0), otherwise it returns | ||
58 | * appropriate errno value. | ||
59 | */ | ||
60 | int fsl_lbc_find(phys_addr_t addr_base) | ||
61 | { | ||
62 | int i; | ||
63 | |||
64 | if (!fsl_lbc_regs) | ||
65 | return -ENODEV; | ||
66 | |||
67 | for (i = 0; i < ARRAY_SIZE(fsl_lbc_regs->bank); i++) { | ||
68 | __be32 br = in_be32(&fsl_lbc_regs->bank[i].br); | ||
69 | __be32 or = in_be32(&fsl_lbc_regs->bank[i].or); | ||
70 | |||
71 | if (br & BR_V && (br & or & BR_BA) == addr_base) | ||
72 | return i; | ||
73 | } | ||
74 | |||
75 | return -ENOENT; | ||
76 | } | ||
77 | EXPORT_SYMBOL(fsl_lbc_find); | ||
78 | |||
79 | /** | ||
80 | * fsl_upm_find - find pre-programmed UPM via base address | ||
81 | * @addr_base: base address of the memory bank controlled by the UPM | ||
82 | * @upm: pointer to the allocated fsl_upm structure | ||
83 | * | ||
84 | * This function fills fsl_upm structure so you can use it with the rest of | ||
85 | * UPM API. On success this function returns 0, otherwise it returns | ||
86 | * appropriate errno value. | ||
87 | */ | ||
88 | int fsl_upm_find(phys_addr_t addr_base, struct fsl_upm *upm) | ||
89 | { | ||
90 | int bank; | ||
91 | __be32 br; | ||
92 | |||
93 | bank = fsl_lbc_find(addr_base); | ||
94 | if (bank < 0) | ||
95 | return bank; | ||
96 | |||
97 | br = in_be32(&fsl_lbc_regs->bank[bank].br); | ||
98 | |||
99 | switch (br & BR_MSEL) { | ||
100 | case BR_MS_UPMA: | ||
101 | upm->mxmr = &fsl_lbc_regs->mamr; | ||
102 | break; | ||
103 | case BR_MS_UPMB: | ||
104 | upm->mxmr = &fsl_lbc_regs->mbmr; | ||
105 | break; | ||
106 | case BR_MS_UPMC: | ||
107 | upm->mxmr = &fsl_lbc_regs->mcmr; | ||
108 | break; | ||
109 | default: | ||
110 | return -EINVAL; | ||
111 | } | ||
112 | |||
113 | switch (br & BR_PS) { | ||
114 | case BR_PS_8: | ||
115 | upm->width = 8; | ||
116 | break; | ||
117 | case BR_PS_16: | ||
118 | upm->width = 16; | ||
119 | break; | ||
120 | case BR_PS_32: | ||
121 | upm->width = 32; | ||
122 | break; | ||
123 | default: | ||
124 | return -EINVAL; | ||
125 | } | ||
126 | |||
127 | return 0; | ||
128 | } | ||
129 | EXPORT_SYMBOL(fsl_upm_find); | ||
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index 3581416905ea..5c1b246aaccc 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -75,6 +75,33 @@ phys_addr_t get_immrbase(void) | |||
75 | 75 | ||
76 | EXPORT_SYMBOL(get_immrbase); | 76 | EXPORT_SYMBOL(get_immrbase); |
77 | 77 | ||
78 | static u32 sysfreq = -1; | ||
79 | |||
80 | u32 fsl_get_sys_freq(void) | ||
81 | { | ||
82 | struct device_node *soc; | ||
83 | const u32 *prop; | ||
84 | int size; | ||
85 | |||
86 | if (sysfreq != -1) | ||
87 | return sysfreq; | ||
88 | |||
89 | soc = of_find_node_by_type(NULL, "soc"); | ||
90 | if (!soc) | ||
91 | return -1; | ||
92 | |||
93 | prop = of_get_property(soc, "clock-frequency", &size); | ||
94 | if (!prop || size != sizeof(*prop) || *prop == 0) | ||
95 | prop = of_get_property(soc, "bus-frequency", &size); | ||
96 | |||
97 | if (prop && size == sizeof(*prop)) | ||
98 | sysfreq = *prop; | ||
99 | |||
100 | of_node_put(soc); | ||
101 | return sysfreq; | ||
102 | } | ||
103 | EXPORT_SYMBOL(fsl_get_sys_freq); | ||
104 | |||
78 | #if defined(CONFIG_CPM2) || defined(CONFIG_QUICC_ENGINE) || defined(CONFIG_8xx) | 105 | #if defined(CONFIG_CPM2) || defined(CONFIG_QUICC_ENGINE) || defined(CONFIG_8xx) |
79 | 106 | ||
80 | static u32 brgfreq = -1; | 107 | static u32 brgfreq = -1; |
@@ -517,9 +544,9 @@ arch_initcall(fsl_i2c_of_init); | |||
517 | static int __init mpc83xx_wdt_init(void) | 544 | static int __init mpc83xx_wdt_init(void) |
518 | { | 545 | { |
519 | struct resource r; | 546 | struct resource r; |
520 | struct device_node *soc, *np; | 547 | struct device_node *np; |
521 | struct platform_device *dev; | 548 | struct platform_device *dev; |
522 | const unsigned int *freq; | 549 | u32 freq = fsl_get_sys_freq(); |
523 | int ret; | 550 | int ret; |
524 | 551 | ||
525 | np = of_find_compatible_node(NULL, "watchdog", "mpc83xx_wdt"); | 552 | np = of_find_compatible_node(NULL, "watchdog", "mpc83xx_wdt"); |
@@ -529,19 +556,6 @@ static int __init mpc83xx_wdt_init(void) | |||
529 | goto nodev; | 556 | goto nodev; |
530 | } | 557 | } |
531 | 558 | ||
532 | soc = of_find_node_by_type(NULL, "soc"); | ||
533 | |||
534 | if (!soc) { | ||
535 | ret = -ENODEV; | ||
536 | goto nosoc; | ||
537 | } | ||
538 | |||
539 | freq = of_get_property(soc, "bus-frequency", NULL); | ||
540 | if (!freq) { | ||
541 | ret = -ENODEV; | ||
542 | goto err; | ||
543 | } | ||
544 | |||
545 | memset(&r, 0, sizeof(r)); | 559 | memset(&r, 0, sizeof(r)); |
546 | 560 | ||
547 | ret = of_address_to_resource(np, 0, &r); | 561 | ret = of_address_to_resource(np, 0, &r); |
@@ -554,20 +568,16 @@ static int __init mpc83xx_wdt_init(void) | |||
554 | goto err; | 568 | goto err; |
555 | } | 569 | } |
556 | 570 | ||
557 | ret = platform_device_add_data(dev, freq, sizeof(int)); | 571 | ret = platform_device_add_data(dev, &freq, sizeof(freq)); |
558 | if (ret) | 572 | if (ret) |
559 | goto unreg; | 573 | goto unreg; |
560 | 574 | ||
561 | of_node_put(soc); | ||
562 | of_node_put(np); | 575 | of_node_put(np); |
563 | |||
564 | return 0; | 576 | return 0; |
565 | 577 | ||
566 | unreg: | 578 | unreg: |
567 | platform_device_unregister(dev); | 579 | platform_device_unregister(dev); |
568 | err: | 580 | err: |
569 | of_node_put(soc); | ||
570 | nosoc: | ||
571 | of_node_put(np); | 581 | of_node_put(np); |
572 | nodev: | 582 | nodev: |
573 | return ret; | 583 | return ret; |
@@ -736,547 +746,6 @@ err: | |||
736 | 746 | ||
737 | arch_initcall(fsl_usb_of_init); | 747 | arch_initcall(fsl_usb_of_init); |
738 | 748 | ||
739 | #ifndef CONFIG_PPC_CPM_NEW_BINDING | ||
740 | #ifdef CONFIG_CPM2 | ||
741 | |||
742 | extern void init_scc_ioports(struct fs_uart_platform_info*); | ||
743 | |||
744 | static const char fcc_regs[] = "fcc_regs"; | ||
745 | static const char fcc_regs_c[] = "fcc_regs_c"; | ||
746 | static const char fcc_pram[] = "fcc_pram"; | ||
747 | static char bus_id[9][BUS_ID_SIZE]; | ||
748 | |||
749 | static int __init fs_enet_of_init(void) | ||
750 | { | ||
751 | struct device_node *np; | ||
752 | unsigned int i; | ||
753 | struct platform_device *fs_enet_dev; | ||
754 | struct resource res; | ||
755 | int ret; | ||
756 | |||
757 | for (np = NULL, i = 0; | ||
758 | (np = of_find_compatible_node(np, "network", "fs_enet")) != NULL; | ||
759 | i++) { | ||
760 | struct resource r[4]; | ||
761 | struct device_node *phy, *mdio; | ||
762 | struct fs_platform_info fs_enet_data; | ||
763 | const unsigned int *id, *phy_addr, *phy_irq; | ||
764 | const void *mac_addr; | ||
765 | const phandle *ph; | ||
766 | const char *model; | ||
767 | |||
768 | memset(r, 0, sizeof(r)); | ||
769 | memset(&fs_enet_data, 0, sizeof(fs_enet_data)); | ||
770 | |||
771 | ret = of_address_to_resource(np, 0, &r[0]); | ||
772 | if (ret) | ||
773 | goto err; | ||
774 | r[0].name = fcc_regs; | ||
775 | |||
776 | ret = of_address_to_resource(np, 1, &r[1]); | ||
777 | if (ret) | ||
778 | goto err; | ||
779 | r[1].name = fcc_pram; | ||
780 | |||
781 | ret = of_address_to_resource(np, 2, &r[2]); | ||
782 | if (ret) | ||
783 | goto err; | ||
784 | r[2].name = fcc_regs_c; | ||
785 | fs_enet_data.fcc_regs_c = r[2].start; | ||
786 | |||
787 | of_irq_to_resource(np, 0, &r[3]); | ||
788 | |||
789 | fs_enet_dev = | ||
790 | platform_device_register_simple("fsl-cpm-fcc", i, &r[0], 4); | ||
791 | |||
792 | if (IS_ERR(fs_enet_dev)) { | ||
793 | ret = PTR_ERR(fs_enet_dev); | ||
794 | goto err; | ||
795 | } | ||
796 | |||
797 | model = of_get_property(np, "model", NULL); | ||
798 | if (model == NULL) { | ||
799 | ret = -ENODEV; | ||
800 | goto unreg; | ||
801 | } | ||
802 | |||
803 | mac_addr = of_get_mac_address(np); | ||
804 | if (mac_addr) | ||
805 | memcpy(fs_enet_data.macaddr, mac_addr, 6); | ||
806 | |||
807 | ph = of_get_property(np, "phy-handle", NULL); | ||
808 | phy = of_find_node_by_phandle(*ph); | ||
809 | |||
810 | if (phy == NULL) { | ||
811 | ret = -ENODEV; | ||
812 | goto unreg; | ||
813 | } | ||
814 | |||
815 | phy_addr = of_get_property(phy, "reg", NULL); | ||
816 | fs_enet_data.phy_addr = *phy_addr; | ||
817 | |||
818 | phy_irq = of_get_property(phy, "interrupts", NULL); | ||
819 | |||
820 | id = of_get_property(np, "device-id", NULL); | ||
821 | fs_enet_data.fs_no = *id; | ||
822 | strcpy(fs_enet_data.fs_type, model); | ||
823 | |||
824 | mdio = of_get_parent(phy); | ||
825 | ret = of_address_to_resource(mdio, 0, &res); | ||
826 | if (ret) { | ||
827 | of_node_put(phy); | ||
828 | of_node_put(mdio); | ||
829 | goto unreg; | ||
830 | } | ||
831 | |||
832 | fs_enet_data.clk_rx = *((u32 *)of_get_property(np, | ||
833 | "rx-clock", NULL)); | ||
834 | fs_enet_data.clk_tx = *((u32 *)of_get_property(np, | ||
835 | "tx-clock", NULL)); | ||
836 | |||
837 | if (strstr(model, "FCC")) { | ||
838 | int fcc_index = *id - 1; | ||
839 | const unsigned char *mdio_bb_prop; | ||
840 | |||
841 | fs_enet_data.dpram_offset = (u32)cpm_dpram_addr(0); | ||
842 | fs_enet_data.rx_ring = 32; | ||
843 | fs_enet_data.tx_ring = 32; | ||
844 | fs_enet_data.rx_copybreak = 240; | ||
845 | fs_enet_data.use_napi = 0; | ||
846 | fs_enet_data.napi_weight = 17; | ||
847 | fs_enet_data.mem_offset = FCC_MEM_OFFSET(fcc_index); | ||
848 | fs_enet_data.cp_page = CPM_CR_FCC_PAGE(fcc_index); | ||
849 | fs_enet_data.cp_block = CPM_CR_FCC_SBLOCK(fcc_index); | ||
850 | |||
851 | snprintf((char*)&bus_id[(*id)], BUS_ID_SIZE, "%x:%02x", | ||
852 | (u32)res.start, fs_enet_data.phy_addr); | ||
853 | fs_enet_data.bus_id = (char*)&bus_id[(*id)]; | ||
854 | fs_enet_data.init_ioports = init_fcc_ioports; | ||
855 | |||
856 | mdio_bb_prop = of_get_property(phy, "bitbang", NULL); | ||
857 | if (mdio_bb_prop) { | ||
858 | struct platform_device *fs_enet_mdio_bb_dev; | ||
859 | struct fs_mii_bb_platform_info fs_enet_mdio_bb_data; | ||
860 | |||
861 | fs_enet_mdio_bb_dev = | ||
862 | platform_device_register_simple("fsl-bb-mdio", | ||
863 | i, NULL, 0); | ||
864 | memset(&fs_enet_mdio_bb_data, 0, | ||
865 | sizeof(struct fs_mii_bb_platform_info)); | ||
866 | fs_enet_mdio_bb_data.mdio_dat.bit = | ||
867 | mdio_bb_prop[0]; | ||
868 | fs_enet_mdio_bb_data.mdio_dir.bit = | ||
869 | mdio_bb_prop[1]; | ||
870 | fs_enet_mdio_bb_data.mdc_dat.bit = | ||
871 | mdio_bb_prop[2]; | ||
872 | fs_enet_mdio_bb_data.mdio_port = | ||
873 | mdio_bb_prop[3]; | ||
874 | fs_enet_mdio_bb_data.mdc_port = | ||
875 | mdio_bb_prop[4]; | ||
876 | fs_enet_mdio_bb_data.delay = | ||
877 | mdio_bb_prop[5]; | ||
878 | |||
879 | fs_enet_mdio_bb_data.irq[0] = phy_irq[0]; | ||
880 | fs_enet_mdio_bb_data.irq[1] = -1; | ||
881 | fs_enet_mdio_bb_data.irq[2] = -1; | ||
882 | fs_enet_mdio_bb_data.irq[3] = phy_irq[0]; | ||
883 | fs_enet_mdio_bb_data.irq[31] = -1; | ||
884 | |||
885 | fs_enet_mdio_bb_data.mdio_dat.offset = | ||
886 | (u32)&cpm2_immr->im_ioport.iop_pdatc; | ||
887 | fs_enet_mdio_bb_data.mdio_dir.offset = | ||
888 | (u32)&cpm2_immr->im_ioport.iop_pdirc; | ||
889 | fs_enet_mdio_bb_data.mdc_dat.offset = | ||
890 | (u32)&cpm2_immr->im_ioport.iop_pdatc; | ||
891 | |||
892 | ret = platform_device_add_data( | ||
893 | fs_enet_mdio_bb_dev, | ||
894 | &fs_enet_mdio_bb_data, | ||
895 | sizeof(struct fs_mii_bb_platform_info)); | ||
896 | if (ret) | ||
897 | goto unreg; | ||
898 | } | ||
899 | |||
900 | of_node_put(phy); | ||
901 | of_node_put(mdio); | ||
902 | |||
903 | ret = platform_device_add_data(fs_enet_dev, &fs_enet_data, | ||
904 | sizeof(struct | ||
905 | fs_platform_info)); | ||
906 | if (ret) | ||
907 | goto unreg; | ||
908 | } | ||
909 | } | ||
910 | return 0; | ||
911 | |||
912 | unreg: | ||
913 | platform_device_unregister(fs_enet_dev); | ||
914 | err: | ||
915 | return ret; | ||
916 | } | ||
917 | |||
918 | arch_initcall(fs_enet_of_init); | ||
919 | |||
920 | static const char scc_regs[] = "regs"; | ||
921 | static const char scc_pram[] = "pram"; | ||
922 | |||
923 | static int __init cpm_uart_of_init(void) | ||
924 | { | ||
925 | struct device_node *np; | ||
926 | unsigned int i; | ||
927 | struct platform_device *cpm_uart_dev; | ||
928 | int ret; | ||
929 | |||
930 | for (np = NULL, i = 0; | ||
931 | (np = of_find_compatible_node(np, "serial", "cpm_uart")) != NULL; | ||
932 | i++) { | ||
933 | struct resource r[3]; | ||
934 | struct fs_uart_platform_info cpm_uart_data; | ||
935 | const int *id; | ||
936 | const char *model; | ||
937 | |||
938 | memset(r, 0, sizeof(r)); | ||
939 | memset(&cpm_uart_data, 0, sizeof(cpm_uart_data)); | ||
940 | |||
941 | ret = of_address_to_resource(np, 0, &r[0]); | ||
942 | if (ret) | ||
943 | goto err; | ||
944 | |||
945 | r[0].name = scc_regs; | ||
946 | |||
947 | ret = of_address_to_resource(np, 1, &r[1]); | ||
948 | if (ret) | ||
949 | goto err; | ||
950 | r[1].name = scc_pram; | ||
951 | |||
952 | of_irq_to_resource(np, 0, &r[2]); | ||
953 | |||
954 | cpm_uart_dev = | ||
955 | platform_device_register_simple("fsl-cpm-scc:uart", i, &r[0], 3); | ||
956 | |||
957 | if (IS_ERR(cpm_uart_dev)) { | ||
958 | ret = PTR_ERR(cpm_uart_dev); | ||
959 | goto err; | ||
960 | } | ||
961 | |||
962 | id = of_get_property(np, "device-id", NULL); | ||
963 | cpm_uart_data.fs_no = *id; | ||
964 | |||
965 | model = of_get_property(np, "model", NULL); | ||
966 | strcpy(cpm_uart_data.fs_type, model); | ||
967 | |||
968 | cpm_uart_data.uart_clk = ppc_proc_freq; | ||
969 | |||
970 | cpm_uart_data.tx_num_fifo = 4; | ||
971 | cpm_uart_data.tx_buf_size = 32; | ||
972 | cpm_uart_data.rx_num_fifo = 4; | ||
973 | cpm_uart_data.rx_buf_size = 32; | ||
974 | cpm_uart_data.clk_rx = *((u32 *)of_get_property(np, | ||
975 | "rx-clock", NULL)); | ||
976 | cpm_uart_data.clk_tx = *((u32 *)of_get_property(np, | ||
977 | "tx-clock", NULL)); | ||
978 | |||
979 | ret = | ||
980 | platform_device_add_data(cpm_uart_dev, &cpm_uart_data, | ||
981 | sizeof(struct | ||
982 | fs_uart_platform_info)); | ||
983 | if (ret) | ||
984 | goto unreg; | ||
985 | } | ||
986 | |||
987 | return 0; | ||
988 | |||
989 | unreg: | ||
990 | platform_device_unregister(cpm_uart_dev); | ||
991 | err: | ||
992 | return ret; | ||
993 | } | ||
994 | |||
995 | arch_initcall(cpm_uart_of_init); | ||
996 | #endif /* CONFIG_CPM2 */ | ||
997 | |||
998 | #ifdef CONFIG_8xx | ||
999 | |||
1000 | extern void init_scc_ioports(struct fs_platform_info*); | ||
1001 | extern int platform_device_skip(const char *model, int id); | ||
1002 | |||
1003 | static int __init fs_enet_mdio_of_init(void) | ||
1004 | { | ||
1005 | struct device_node *np; | ||
1006 | unsigned int i; | ||
1007 | struct platform_device *mdio_dev; | ||
1008 | struct resource res; | ||
1009 | int ret; | ||
1010 | |||
1011 | for (np = NULL, i = 0; | ||
1012 | (np = of_find_compatible_node(np, "mdio", "fs_enet")) != NULL; | ||
1013 | i++) { | ||
1014 | struct fs_mii_fec_platform_info mdio_data; | ||
1015 | |||
1016 | memset(&res, 0, sizeof(res)); | ||
1017 | memset(&mdio_data, 0, sizeof(mdio_data)); | ||
1018 | |||
1019 | ret = of_address_to_resource(np, 0, &res); | ||
1020 | if (ret) | ||
1021 | goto err; | ||
1022 | |||
1023 | mdio_dev = | ||
1024 | platform_device_register_simple("fsl-cpm-fec-mdio", | ||
1025 | res.start, &res, 1); | ||
1026 | if (IS_ERR(mdio_dev)) { | ||
1027 | ret = PTR_ERR(mdio_dev); | ||
1028 | goto err; | ||
1029 | } | ||
1030 | |||
1031 | mdio_data.mii_speed = ((((ppc_proc_freq + 4999999) / 2500000) / 2) & 0x3F) << 1; | ||
1032 | |||
1033 | ret = | ||
1034 | platform_device_add_data(mdio_dev, &mdio_data, | ||
1035 | sizeof(struct fs_mii_fec_platform_info)); | ||
1036 | if (ret) | ||
1037 | goto unreg; | ||
1038 | } | ||
1039 | return 0; | ||
1040 | |||
1041 | unreg: | ||
1042 | platform_device_unregister(mdio_dev); | ||
1043 | err: | ||
1044 | return ret; | ||
1045 | } | ||
1046 | |||
1047 | arch_initcall(fs_enet_mdio_of_init); | ||
1048 | |||
1049 | static const char *enet_regs = "regs"; | ||
1050 | static const char *enet_pram = "pram"; | ||
1051 | static const char *enet_irq = "interrupt"; | ||
1052 | static char bus_id[9][BUS_ID_SIZE]; | ||
1053 | |||
1054 | static int __init fs_enet_of_init(void) | ||
1055 | { | ||
1056 | struct device_node *np; | ||
1057 | unsigned int i; | ||
1058 | struct platform_device *fs_enet_dev = NULL; | ||
1059 | struct resource res; | ||
1060 | int ret; | ||
1061 | |||
1062 | for (np = NULL, i = 0; | ||
1063 | (np = of_find_compatible_node(np, "network", "fs_enet")) != NULL; | ||
1064 | i++) { | ||
1065 | struct resource r[4]; | ||
1066 | struct device_node *phy = NULL, *mdio = NULL; | ||
1067 | struct fs_platform_info fs_enet_data; | ||
1068 | const unsigned int *id; | ||
1069 | const unsigned int *phy_addr; | ||
1070 | const void *mac_addr; | ||
1071 | const phandle *ph; | ||
1072 | const char *model; | ||
1073 | |||
1074 | memset(r, 0, sizeof(r)); | ||
1075 | memset(&fs_enet_data, 0, sizeof(fs_enet_data)); | ||
1076 | |||
1077 | model = of_get_property(np, "model", NULL); | ||
1078 | if (model == NULL) { | ||
1079 | ret = -ENODEV; | ||
1080 | goto unreg; | ||
1081 | } | ||
1082 | |||
1083 | id = of_get_property(np, "device-id", NULL); | ||
1084 | fs_enet_data.fs_no = *id; | ||
1085 | |||
1086 | if (platform_device_skip(model, *id)) | ||
1087 | continue; | ||
1088 | |||
1089 | ret = of_address_to_resource(np, 0, &r[0]); | ||
1090 | if (ret) | ||
1091 | goto err; | ||
1092 | r[0].name = enet_regs; | ||
1093 | |||
1094 | mac_addr = of_get_mac_address(np); | ||
1095 | if (mac_addr) | ||
1096 | memcpy(fs_enet_data.macaddr, mac_addr, 6); | ||
1097 | |||
1098 | ph = of_get_property(np, "phy-handle", NULL); | ||
1099 | if (ph != NULL) | ||
1100 | phy = of_find_node_by_phandle(*ph); | ||
1101 | |||
1102 | if (phy != NULL) { | ||
1103 | phy_addr = of_get_property(phy, "reg", NULL); | ||
1104 | fs_enet_data.phy_addr = *phy_addr; | ||
1105 | fs_enet_data.has_phy = 1; | ||
1106 | |||
1107 | mdio = of_get_parent(phy); | ||
1108 | ret = of_address_to_resource(mdio, 0, &res); | ||
1109 | if (ret) { | ||
1110 | of_node_put(phy); | ||
1111 | of_node_put(mdio); | ||
1112 | goto unreg; | ||
1113 | } | ||
1114 | } | ||
1115 | |||
1116 | model = of_get_property(np, "model", NULL); | ||
1117 | strcpy(fs_enet_data.fs_type, model); | ||
1118 | |||
1119 | if (strstr(model, "FEC")) { | ||
1120 | r[1].start = r[1].end = irq_of_parse_and_map(np, 0); | ||
1121 | r[1].flags = IORESOURCE_IRQ; | ||
1122 | r[1].name = enet_irq; | ||
1123 | |||
1124 | fs_enet_dev = | ||
1125 | platform_device_register_simple("fsl-cpm-fec", i, &r[0], 2); | ||
1126 | |||
1127 | if (IS_ERR(fs_enet_dev)) { | ||
1128 | ret = PTR_ERR(fs_enet_dev); | ||
1129 | goto err; | ||
1130 | } | ||
1131 | |||
1132 | fs_enet_data.rx_ring = 128; | ||
1133 | fs_enet_data.tx_ring = 16; | ||
1134 | fs_enet_data.rx_copybreak = 240; | ||
1135 | fs_enet_data.use_napi = 1; | ||
1136 | fs_enet_data.napi_weight = 17; | ||
1137 | |||
1138 | snprintf((char*)&bus_id[i], BUS_ID_SIZE, "%x:%02x", | ||
1139 | (u32)res.start, fs_enet_data.phy_addr); | ||
1140 | fs_enet_data.bus_id = (char*)&bus_id[i]; | ||
1141 | fs_enet_data.init_ioports = init_fec_ioports; | ||
1142 | } | ||
1143 | if (strstr(model, "SCC")) { | ||
1144 | ret = of_address_to_resource(np, 1, &r[1]); | ||
1145 | if (ret) | ||
1146 | goto err; | ||
1147 | r[1].name = enet_pram; | ||
1148 | |||
1149 | r[2].start = r[2].end = irq_of_parse_and_map(np, 0); | ||
1150 | r[2].flags = IORESOURCE_IRQ; | ||
1151 | r[2].name = enet_irq; | ||
1152 | |||
1153 | fs_enet_dev = | ||
1154 | platform_device_register_simple("fsl-cpm-scc", i, &r[0], 3); | ||
1155 | |||
1156 | if (IS_ERR(fs_enet_dev)) { | ||
1157 | ret = PTR_ERR(fs_enet_dev); | ||
1158 | goto err; | ||
1159 | } | ||
1160 | |||
1161 | fs_enet_data.rx_ring = 64; | ||
1162 | fs_enet_data.tx_ring = 8; | ||
1163 | fs_enet_data.rx_copybreak = 240; | ||
1164 | fs_enet_data.use_napi = 1; | ||
1165 | fs_enet_data.napi_weight = 17; | ||
1166 | |||
1167 | snprintf((char*)&bus_id[i], BUS_ID_SIZE, "%s", "fixed@10:1"); | ||
1168 | fs_enet_data.bus_id = (char*)&bus_id[i]; | ||
1169 | fs_enet_data.init_ioports = init_scc_ioports; | ||
1170 | } | ||
1171 | |||
1172 | of_node_put(phy); | ||
1173 | of_node_put(mdio); | ||
1174 | |||
1175 | ret = platform_device_add_data(fs_enet_dev, &fs_enet_data, | ||
1176 | sizeof(struct | ||
1177 | fs_platform_info)); | ||
1178 | if (ret) | ||
1179 | goto unreg; | ||
1180 | } | ||
1181 | return 0; | ||
1182 | |||
1183 | unreg: | ||
1184 | platform_device_unregister(fs_enet_dev); | ||
1185 | err: | ||
1186 | return ret; | ||
1187 | } | ||
1188 | |||
1189 | arch_initcall(fs_enet_of_init); | ||
1190 | |||
1191 | static int __init fsl_pcmcia_of_init(void) | ||
1192 | { | ||
1193 | struct device_node *np; | ||
1194 | /* | ||
1195 | * Register all the devices which type is "pcmcia" | ||
1196 | */ | ||
1197 | for_each_compatible_node(np, "pcmcia", "fsl,pq-pcmcia") | ||
1198 | of_platform_device_create(np, "m8xx-pcmcia", NULL); | ||
1199 | return 0; | ||
1200 | } | ||
1201 | |||
1202 | arch_initcall(fsl_pcmcia_of_init); | ||
1203 | |||
1204 | static const char *smc_regs = "regs"; | ||
1205 | static const char *smc_pram = "pram"; | ||
1206 | |||
1207 | static int __init cpm_smc_uart_of_init(void) | ||
1208 | { | ||
1209 | struct device_node *np; | ||
1210 | unsigned int i; | ||
1211 | struct platform_device *cpm_uart_dev; | ||
1212 | int ret; | ||
1213 | |||
1214 | for (np = NULL, i = 0; | ||
1215 | (np = of_find_compatible_node(np, "serial", "cpm_uart")) != NULL; | ||
1216 | i++) { | ||
1217 | struct resource r[3]; | ||
1218 | struct fs_uart_platform_info cpm_uart_data; | ||
1219 | const int *id; | ||
1220 | const char *model; | ||
1221 | |||
1222 | memset(r, 0, sizeof(r)); | ||
1223 | memset(&cpm_uart_data, 0, sizeof(cpm_uart_data)); | ||
1224 | |||
1225 | ret = of_address_to_resource(np, 0, &r[0]); | ||
1226 | if (ret) | ||
1227 | goto err; | ||
1228 | |||
1229 | r[0].name = smc_regs; | ||
1230 | |||
1231 | ret = of_address_to_resource(np, 1, &r[1]); | ||
1232 | if (ret) | ||
1233 | goto err; | ||
1234 | r[1].name = smc_pram; | ||
1235 | |||
1236 | r[2].start = r[2].end = irq_of_parse_and_map(np, 0); | ||
1237 | r[2].flags = IORESOURCE_IRQ; | ||
1238 | |||
1239 | cpm_uart_dev = | ||
1240 | platform_device_register_simple("fsl-cpm-smc:uart", i, &r[0], 3); | ||
1241 | |||
1242 | if (IS_ERR(cpm_uart_dev)) { | ||
1243 | ret = PTR_ERR(cpm_uart_dev); | ||
1244 | goto err; | ||
1245 | } | ||
1246 | |||
1247 | model = of_get_property(np, "model", NULL); | ||
1248 | strcpy(cpm_uart_data.fs_type, model); | ||
1249 | |||
1250 | id = of_get_property(np, "device-id", NULL); | ||
1251 | cpm_uart_data.fs_no = *id; | ||
1252 | cpm_uart_data.uart_clk = ppc_proc_freq; | ||
1253 | |||
1254 | cpm_uart_data.tx_num_fifo = 4; | ||
1255 | cpm_uart_data.tx_buf_size = 32; | ||
1256 | cpm_uart_data.rx_num_fifo = 4; | ||
1257 | cpm_uart_data.rx_buf_size = 32; | ||
1258 | |||
1259 | ret = | ||
1260 | platform_device_add_data(cpm_uart_dev, &cpm_uart_data, | ||
1261 | sizeof(struct | ||
1262 | fs_uart_platform_info)); | ||
1263 | if (ret) | ||
1264 | goto unreg; | ||
1265 | } | ||
1266 | |||
1267 | return 0; | ||
1268 | |||
1269 | unreg: | ||
1270 | platform_device_unregister(cpm_uart_dev); | ||
1271 | err: | ||
1272 | return ret; | ||
1273 | } | ||
1274 | |||
1275 | arch_initcall(cpm_smc_uart_of_init); | ||
1276 | |||
1277 | #endif /* CONFIG_8xx */ | ||
1278 | #endif /* CONFIG_PPC_CPM_NEW_BINDING */ | ||
1279 | |||
1280 | static int __init of_fsl_spi_probe(char *type, char *compatible, u32 sysclk, | 749 | static int __init of_fsl_spi_probe(char *type, char *compatible, u32 sysclk, |
1281 | struct spi_board_info *board_infos, | 750 | struct spi_board_info *board_infos, |
1282 | unsigned int num_board_infos, | 751 | unsigned int num_board_infos, |
@@ -1372,25 +841,9 @@ int __init fsl_spi_init(struct spi_board_info *board_infos, | |||
1372 | sysclk = get_brgfreq(); | 841 | sysclk = get_brgfreq(); |
1373 | #endif | 842 | #endif |
1374 | if (sysclk == -1) { | 843 | if (sysclk == -1) { |
1375 | struct device_node *np; | 844 | sysclk = fsl_get_sys_freq(); |
1376 | const u32 *freq; | 845 | if (sysclk == -1) |
1377 | int size; | ||
1378 | |||
1379 | np = of_find_node_by_type(NULL, "soc"); | ||
1380 | if (!np) | ||
1381 | return -ENODEV; | 846 | return -ENODEV; |
1382 | |||
1383 | freq = of_get_property(np, "clock-frequency", &size); | ||
1384 | if (!freq || size != sizeof(*freq) || *freq == 0) { | ||
1385 | freq = of_get_property(np, "bus-frequency", &size); | ||
1386 | if (!freq || size != sizeof(*freq) || *freq == 0) { | ||
1387 | of_node_put(np); | ||
1388 | return -ENODEV; | ||
1389 | } | ||
1390 | } | ||
1391 | |||
1392 | sysclk = *freq; | ||
1393 | of_node_put(np); | ||
1394 | } | 847 | } |
1395 | 848 | ||
1396 | ret = of_fsl_spi_probe(NULL, "fsl,spi", sysclk, board_infos, | 849 | ret = of_fsl_spi_probe(NULL, "fsl,spi", sysclk, board_infos, |
diff --git a/arch/powerpc/sysdev/fsl_soc.h b/arch/powerpc/sysdev/fsl_soc.h index 63e7db30a4cd..74c4a9657b33 100644 --- a/arch/powerpc/sysdev/fsl_soc.h +++ b/arch/powerpc/sysdev/fsl_soc.h | |||
@@ -7,6 +7,7 @@ | |||
7 | extern phys_addr_t get_immrbase(void); | 7 | extern phys_addr_t get_immrbase(void); |
8 | extern u32 get_brgfreq(void); | 8 | extern u32 get_brgfreq(void); |
9 | extern u32 get_baudrate(void); | 9 | extern u32 get_baudrate(void); |
10 | extern u32 fsl_get_sys_freq(void); | ||
10 | 11 | ||
11 | struct spi_board_info; | 12 | struct spi_board_info; |
12 | 13 | ||
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 6ffdda244bb1..8619f2a3f1f6 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -175,13 +175,16 @@ static inline void _mpic_write(enum mpic_reg_type type, | |||
175 | switch(type) { | 175 | switch(type) { |
176 | #ifdef CONFIG_PPC_DCR | 176 | #ifdef CONFIG_PPC_DCR |
177 | case mpic_access_dcr: | 177 | case mpic_access_dcr: |
178 | return dcr_write(rb->dhost, reg, value); | 178 | dcr_write(rb->dhost, reg, value); |
179 | break; | ||
179 | #endif | 180 | #endif |
180 | case mpic_access_mmio_be: | 181 | case mpic_access_mmio_be: |
181 | return out_be32(rb->base + (reg >> 2), value); | 182 | out_be32(rb->base + (reg >> 2), value); |
183 | break; | ||
182 | case mpic_access_mmio_le: | 184 | case mpic_access_mmio_le: |
183 | default: | 185 | default: |
184 | return out_le32(rb->base + (reg >> 2), value); | 186 | out_le32(rb->base + (reg >> 2), value); |
187 | break; | ||
185 | } | 188 | } |
186 | } | 189 | } |
187 | 190 | ||
@@ -1000,7 +1003,7 @@ struct mpic * __init mpic_alloc(struct device_node *node, | |||
1000 | const char *name) | 1003 | const char *name) |
1001 | { | 1004 | { |
1002 | struct mpic *mpic; | 1005 | struct mpic *mpic; |
1003 | u32 reg; | 1006 | u32 greg_feature; |
1004 | const char *vers; | 1007 | const char *vers; |
1005 | int i; | 1008 | int i; |
1006 | int intvec_top; | 1009 | int intvec_top; |
@@ -1064,7 +1067,8 @@ struct mpic * __init mpic_alloc(struct device_node *node, | |||
1064 | 1067 | ||
1065 | /* Look for protected sources */ | 1068 | /* Look for protected sources */ |
1066 | if (node) { | 1069 | if (node) { |
1067 | unsigned int psize, bits, mapsize; | 1070 | int psize; |
1071 | unsigned int bits, mapsize; | ||
1068 | const u32 *psrc = | 1072 | const u32 *psrc = |
1069 | of_get_property(node, "protected-sources", &psize); | 1073 | of_get_property(node, "protected-sources", &psize); |
1070 | if (psrc) { | 1074 | if (psrc) { |
@@ -1107,8 +1111,7 @@ struct mpic * __init mpic_alloc(struct device_node *node, | |||
1107 | * in, try to obtain one | 1111 | * in, try to obtain one |
1108 | */ | 1112 | */ |
1109 | if (paddr == 0 && !(mpic->flags & MPIC_USES_DCR)) { | 1113 | if (paddr == 0 && !(mpic->flags & MPIC_USES_DCR)) { |
1110 | const u32 *reg; | 1114 | const u32 *reg = of_get_property(node, "reg", NULL); |
1111 | reg = of_get_property(node, "reg", NULL); | ||
1112 | BUG_ON(reg == NULL); | 1115 | BUG_ON(reg == NULL); |
1113 | paddr = of_translate_address(node, reg); | 1116 | paddr = of_translate_address(node, reg); |
1114 | BUG_ON(paddr == OF_BAD_ADDR); | 1117 | BUG_ON(paddr == OF_BAD_ADDR); |
@@ -1137,12 +1140,13 @@ struct mpic * __init mpic_alloc(struct device_node *node, | |||
1137 | * MPICs, num sources as well. On ISU MPICs, sources are counted | 1140 | * MPICs, num sources as well. On ISU MPICs, sources are counted |
1138 | * as ISUs are added | 1141 | * as ISUs are added |
1139 | */ | 1142 | */ |
1140 | reg = mpic_read(mpic->gregs, MPIC_INFO(GREG_FEATURE_0)); | 1143 | greg_feature = mpic_read(mpic->gregs, MPIC_INFO(GREG_FEATURE_0)); |
1141 | mpic->num_cpus = ((reg & MPIC_GREG_FEATURE_LAST_CPU_MASK) | 1144 | mpic->num_cpus = ((greg_feature & MPIC_GREG_FEATURE_LAST_CPU_MASK) |
1142 | >> MPIC_GREG_FEATURE_LAST_CPU_SHIFT) + 1; | 1145 | >> MPIC_GREG_FEATURE_LAST_CPU_SHIFT) + 1; |
1143 | if (isu_size == 0) | 1146 | if (isu_size == 0) |
1144 | mpic->num_sources = ((reg & MPIC_GREG_FEATURE_LAST_SRC_MASK) | 1147 | mpic->num_sources = |
1145 | >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1; | 1148 | ((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK) |
1149 | >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1; | ||
1146 | 1150 | ||
1147 | /* Map the per-CPU registers */ | 1151 | /* Map the per-CPU registers */ |
1148 | for (i = 0; i < mpic->num_cpus; i++) { | 1152 | for (i = 0; i < mpic->num_cpus; i++) { |
@@ -1161,7 +1165,7 @@ struct mpic * __init mpic_alloc(struct device_node *node, | |||
1161 | mpic->isu_mask = (1 << mpic->isu_shift) - 1; | 1165 | mpic->isu_mask = (1 << mpic->isu_shift) - 1; |
1162 | 1166 | ||
1163 | /* Display version */ | 1167 | /* Display version */ |
1164 | switch (reg & MPIC_GREG_FEATURE_VERSION_MASK) { | 1168 | switch (greg_feature & MPIC_GREG_FEATURE_VERSION_MASK) { |
1165 | case 1: | 1169 | case 1: |
1166 | vers = "1.0"; | 1170 | vers = "1.0"; |
1167 | break; | 1171 | break; |
@@ -1321,7 +1325,7 @@ void __init mpic_set_serial_int(struct mpic *mpic, int enable) | |||
1321 | 1325 | ||
1322 | void mpic_irq_set_priority(unsigned int irq, unsigned int pri) | 1326 | void mpic_irq_set_priority(unsigned int irq, unsigned int pri) |
1323 | { | 1327 | { |
1324 | int is_ipi; | 1328 | unsigned int is_ipi; |
1325 | struct mpic *mpic = mpic_find(irq, &is_ipi); | 1329 | struct mpic *mpic = mpic_find(irq, &is_ipi); |
1326 | unsigned int src = mpic_irq_to_hw(irq); | 1330 | unsigned int src = mpic_irq_to_hw(irq); |
1327 | unsigned long flags; | 1331 | unsigned long flags; |
@@ -1344,7 +1348,7 @@ void mpic_irq_set_priority(unsigned int irq, unsigned int pri) | |||
1344 | 1348 | ||
1345 | unsigned int mpic_irq_get_priority(unsigned int irq) | 1349 | unsigned int mpic_irq_get_priority(unsigned int irq) |
1346 | { | 1350 | { |
1347 | int is_ipi; | 1351 | unsigned int is_ipi; |
1348 | struct mpic *mpic = mpic_find(irq, &is_ipi); | 1352 | struct mpic *mpic = mpic_find(irq, &is_ipi); |
1349 | unsigned int src = mpic_irq_to_hw(irq); | 1353 | unsigned int src = mpic_irq_to_hw(irq); |
1350 | unsigned long flags; | 1354 | unsigned long flags; |
@@ -1406,11 +1410,6 @@ void mpic_cpu_set_priority(int prio) | |||
1406 | mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), prio); | 1410 | mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), prio); |
1407 | } | 1411 | } |
1408 | 1412 | ||
1409 | /* | ||
1410 | * XXX: someone who knows mpic should check this. | ||
1411 | * do we need to eoi the ipi including for kexec cpu here (see xics comments)? | ||
1412 | * or can we reset the mpic in the new kernel? | ||
1413 | */ | ||
1414 | void mpic_teardown_this_cpu(int secondary) | 1413 | void mpic_teardown_this_cpu(int secondary) |
1415 | { | 1414 | { |
1416 | struct mpic *mpic = mpic_primary; | 1415 | struct mpic *mpic = mpic_primary; |
@@ -1430,6 +1429,10 @@ void mpic_teardown_this_cpu(int secondary) | |||
1430 | 1429 | ||
1431 | /* Set current processor priority to max */ | 1430 | /* Set current processor priority to max */ |
1432 | mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf); | 1431 | mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf); |
1432 | /* We need to EOI the IPI since not all platforms reset the MPIC | ||
1433 | * on boot and new interrupts wouldn't get delivered otherwise. | ||
1434 | */ | ||
1435 | mpic_eoi(mpic); | ||
1433 | 1436 | ||
1434 | spin_unlock_irqrestore(&mpic_lock, flags); | 1437 | spin_unlock_irqrestore(&mpic_lock, flags); |
1435 | } | 1438 | } |
diff --git a/arch/powerpc/sysdev/mv64x60_dev.c b/arch/powerpc/sysdev/mv64x60_dev.c index efda0028909d..047b31027fa6 100644 --- a/arch/powerpc/sysdev/mv64x60_dev.c +++ b/arch/powerpc/sysdev/mv64x60_dev.c | |||
@@ -127,7 +127,7 @@ static int __init mv64x60_mpsc_device_setup(struct device_node *np, int id) | |||
127 | if (err) | 127 | if (err) |
128 | return err; | 128 | return err; |
129 | 129 | ||
130 | prop = of_get_property(np, "block-index", NULL); | 130 | prop = of_get_property(np, "cell-index", NULL); |
131 | if (!prop) | 131 | if (!prop) |
132 | return -ENODEV; | 132 | return -ENODEV; |
133 | port_number = *(int *)prop; | 133 | port_number = *(int *)prop; |
@@ -136,6 +136,7 @@ static int __init mv64x60_mpsc_device_setup(struct device_node *np, int id) | |||
136 | 136 | ||
137 | pdata.cache_mgmt = 1; /* All current revs need this set */ | 137 | pdata.cache_mgmt = 1; /* All current revs need this set */ |
138 | 138 | ||
139 | pdata.max_idle = 40; /* default */ | ||
139 | prop = of_get_property(np, "max_idle", NULL); | 140 | prop = of_get_property(np, "max_idle", NULL); |
140 | if (prop) | 141 | if (prop) |
141 | pdata.max_idle = *prop; | 142 | pdata.max_idle = *prop; |
@@ -205,30 +206,24 @@ error: | |||
205 | /* | 206 | /* |
206 | * Create mv64x60_eth platform devices | 207 | * Create mv64x60_eth platform devices |
207 | */ | 208 | */ |
208 | static int __init eth_register_shared_pdev(struct device_node *np) | 209 | static struct platform_device * __init mv64x60_eth_register_shared_pdev( |
210 | struct device_node *np, int id) | ||
209 | { | 211 | { |
210 | struct platform_device *pdev; | 212 | struct platform_device *pdev; |
211 | struct resource r[1]; | 213 | struct resource r[1]; |
212 | int err; | 214 | int err; |
213 | 215 | ||
214 | np = of_get_parent(np); | ||
215 | if (!np) | ||
216 | return -ENODEV; | ||
217 | |||
218 | err = of_address_to_resource(np, 0, &r[0]); | 216 | err = of_address_to_resource(np, 0, &r[0]); |
219 | of_node_put(np); | ||
220 | if (err) | 217 | if (err) |
221 | return err; | 218 | return ERR_PTR(err); |
222 | 219 | ||
223 | pdev = platform_device_register_simple(MV643XX_ETH_SHARED_NAME, 0, | 220 | pdev = platform_device_register_simple(MV643XX_ETH_SHARED_NAME, id, |
224 | r, 1); | 221 | r, 1); |
225 | if (IS_ERR(pdev)) | 222 | return pdev; |
226 | return PTR_ERR(pdev); | ||
227 | |||
228 | return 0; | ||
229 | } | 223 | } |
230 | 224 | ||
231 | static int __init mv64x60_eth_device_setup(struct device_node *np, int id) | 225 | static int __init mv64x60_eth_device_setup(struct device_node *np, int id, |
226 | struct platform_device *shared_pdev) | ||
232 | { | 227 | { |
233 | struct resource r[1]; | 228 | struct resource r[1]; |
234 | struct mv643xx_eth_platform_data pdata; | 229 | struct mv643xx_eth_platform_data pdata; |
@@ -239,16 +234,12 @@ static int __init mv64x60_eth_device_setup(struct device_node *np, int id) | |||
239 | const phandle *ph; | 234 | const phandle *ph; |
240 | int err; | 235 | int err; |
241 | 236 | ||
242 | /* only register the shared platform device the first time through */ | ||
243 | if (id == 0 && (err = eth_register_shared_pdev(np))) | ||
244 | return err; | ||
245 | |||
246 | memset(r, 0, sizeof(r)); | 237 | memset(r, 0, sizeof(r)); |
247 | of_irq_to_resource(np, 0, &r[0]); | 238 | of_irq_to_resource(np, 0, &r[0]); |
248 | 239 | ||
249 | memset(&pdata, 0, sizeof(pdata)); | 240 | memset(&pdata, 0, sizeof(pdata)); |
250 | 241 | ||
251 | prop = of_get_property(np, "block-index", NULL); | 242 | prop = of_get_property(np, "reg", NULL); |
252 | if (!prop) | 243 | if (!prop) |
253 | return -ENODEV; | 244 | return -ENODEV; |
254 | pdata.port_number = *prop; | 245 | pdata.port_number = *prop; |
@@ -301,7 +292,7 @@ static int __init mv64x60_eth_device_setup(struct device_node *np, int id) | |||
301 | 292 | ||
302 | of_node_put(phy); | 293 | of_node_put(phy); |
303 | 294 | ||
304 | pdev = platform_device_alloc(MV643XX_ETH_NAME, pdata.port_number); | 295 | pdev = platform_device_alloc(MV643XX_ETH_NAME, id); |
305 | if (!pdev) | 296 | if (!pdev) |
306 | return -ENOMEM; | 297 | return -ENOMEM; |
307 | 298 | ||
@@ -345,21 +336,19 @@ static int __init mv64x60_i2c_device_setup(struct device_node *np, int id) | |||
345 | 336 | ||
346 | memset(&pdata, 0, sizeof(pdata)); | 337 | memset(&pdata, 0, sizeof(pdata)); |
347 | 338 | ||
339 | pdata.freq_m = 8; /* default */ | ||
348 | prop = of_get_property(np, "freq_m", NULL); | 340 | prop = of_get_property(np, "freq_m", NULL); |
349 | if (!prop) | 341 | if (!prop) |
350 | return -ENODEV; | 342 | return -ENODEV; |
351 | pdata.freq_m = *prop; | 343 | pdata.freq_m = *prop; |
352 | 344 | ||
345 | pdata.freq_m = 3; /* default */ | ||
353 | prop = of_get_property(np, "freq_n", NULL); | 346 | prop = of_get_property(np, "freq_n", NULL); |
354 | if (!prop) | 347 | if (!prop) |
355 | return -ENODEV; | 348 | return -ENODEV; |
356 | pdata.freq_n = *prop; | 349 | pdata.freq_n = *prop; |
357 | 350 | ||
358 | prop = of_get_property(np, "timeout", NULL); | 351 | pdata.timeout = 1000; /* default: 1 second */ |
359 | if (prop) | ||
360 | pdata.timeout = *prop; | ||
361 | else | ||
362 | pdata.timeout = 1000; /* 1 second */ | ||
363 | 352 | ||
364 | pdev = platform_device_alloc(MV64XXX_I2C_CTLR_NAME, id); | 353 | pdev = platform_device_alloc(MV64XXX_I2C_CTLR_NAME, id); |
365 | if (!pdev) | 354 | if (!pdev) |
@@ -401,10 +390,7 @@ static int __init mv64x60_wdt_device_setup(struct device_node *np, int id) | |||
401 | 390 | ||
402 | memset(&pdata, 0, sizeof(pdata)); | 391 | memset(&pdata, 0, sizeof(pdata)); |
403 | 392 | ||
404 | prop = of_get_property(np, "timeout", NULL); | 393 | pdata.timeout = 10; /* Default: 10 seconds */ |
405 | if (!prop) | ||
406 | return -ENODEV; | ||
407 | pdata.timeout = *prop; | ||
408 | 394 | ||
409 | np = of_get_parent(np); | 395 | np = of_get_parent(np); |
410 | if (!np) | 396 | if (!np) |
@@ -441,27 +427,43 @@ error: | |||
441 | 427 | ||
442 | static int __init mv64x60_device_setup(void) | 428 | static int __init mv64x60_device_setup(void) |
443 | { | 429 | { |
444 | struct device_node *np = NULL; | 430 | struct device_node *np, *np2; |
445 | int id; | 431 | struct platform_device *pdev; |
432 | int id, id2; | ||
446 | int err; | 433 | int err; |
447 | 434 | ||
448 | id = 0; | 435 | id = 0; |
449 | for_each_compatible_node(np, "serial", "marvell,mpsc") | 436 | for_each_compatible_node(np, "serial", "marvell,mv64360-mpsc") |
450 | if ((err = mv64x60_mpsc_device_setup(np, id++))) | 437 | if ((err = mv64x60_mpsc_device_setup(np, id++))) |
451 | goto error; | 438 | goto error; |
452 | 439 | ||
453 | id = 0; | 440 | id = 0; |
454 | for_each_compatible_node(np, "network", "marvell,mv64x60-eth") | 441 | id2 = 0; |
455 | if ((err = mv64x60_eth_device_setup(np, id++))) | 442 | for_each_compatible_node(np, NULL, "marvell,mv64360-eth-group") { |
443 | pdev = mv64x60_eth_register_shared_pdev(np, id++); | ||
444 | if (IS_ERR(pdev)) { | ||
445 | err = PTR_ERR(pdev); | ||
456 | goto error; | 446 | goto error; |
447 | } | ||
448 | for_each_child_of_node(np, np2) { | ||
449 | if (!of_device_is_compatible(np2, | ||
450 | "marvell,mv64360-eth")) | ||
451 | continue; | ||
452 | err = mv64x60_eth_device_setup(np2, id2++, pdev); | ||
453 | if (err) { | ||
454 | of_node_put(np2); | ||
455 | goto error; | ||
456 | } | ||
457 | } | ||
458 | } | ||
457 | 459 | ||
458 | id = 0; | 460 | id = 0; |
459 | for_each_compatible_node(np, "i2c", "marvell,mv64x60-i2c") | 461 | for_each_compatible_node(np, "i2c", "marvell,mv64360-i2c") |
460 | if ((err = mv64x60_i2c_device_setup(np, id++))) | 462 | if ((err = mv64x60_i2c_device_setup(np, id++))) |
461 | goto error; | 463 | goto error; |
462 | 464 | ||
463 | /* support up to one watchdog timer */ | 465 | /* support up to one watchdog timer */ |
464 | np = of_find_compatible_node(np, NULL, "marvell,mv64x60-wdt"); | 466 | np = of_find_compatible_node(np, NULL, "marvell,mv64360-wdt"); |
465 | if (np) { | 467 | if (np) { |
466 | if ((err = mv64x60_wdt_device_setup(np, id))) | 468 | if ((err = mv64x60_wdt_device_setup(np, id))) |
467 | goto error; | 469 | goto error; |
@@ -489,10 +491,10 @@ static int __init mv64x60_add_mpsc_console(void) | |||
489 | if (!np) | 491 | if (!np) |
490 | goto not_mpsc; | 492 | goto not_mpsc; |
491 | 493 | ||
492 | if (!of_device_is_compatible(np, "marvell,mpsc")) | 494 | if (!of_device_is_compatible(np, "marvell,mv64360-mpsc")) |
493 | goto not_mpsc; | 495 | goto not_mpsc; |
494 | 496 | ||
495 | prop = of_get_property(np, "block-index", NULL); | 497 | prop = of_get_property(np, "cell-index", NULL); |
496 | if (!prop) | 498 | if (!prop) |
497 | goto not_mpsc; | 499 | goto not_mpsc; |
498 | 500 | ||
diff --git a/arch/powerpc/sysdev/mv64x60_pci.c b/arch/powerpc/sysdev/mv64x60_pci.c index d21ab8fa4993..1456015a22d8 100644 --- a/arch/powerpc/sysdev/mv64x60_pci.c +++ b/arch/powerpc/sysdev/mv64x60_pci.c | |||
@@ -86,14 +86,14 @@ static int __init mv64x60_sysfs_init(void) | |||
86 | struct platform_device *pdev; | 86 | struct platform_device *pdev; |
87 | const unsigned int *prop; | 87 | const unsigned int *prop; |
88 | 88 | ||
89 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64x60"); | 89 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64360"); |
90 | if (!np) | 90 | if (!np) |
91 | return 0; | 91 | return 0; |
92 | 92 | ||
93 | prop = of_get_property(np, "hs_reg_valid", NULL); | 93 | prop = of_get_property(np, "hs_reg_valid", NULL); |
94 | of_node_put(np); | 94 | of_node_put(np); |
95 | 95 | ||
96 | pdev = platform_device_register_simple("marvell,mv64x60", 0, NULL, 0); | 96 | pdev = platform_device_register_simple("marvell,mv64360", 0, NULL, 0); |
97 | if (IS_ERR(pdev)) | 97 | if (IS_ERR(pdev)) |
98 | return PTR_ERR(pdev); | 98 | return PTR_ERR(pdev); |
99 | 99 | ||
@@ -166,6 +166,6 @@ void __init mv64x60_pci_init(void) | |||
166 | { | 166 | { |
167 | struct device_node *np; | 167 | struct device_node *np; |
168 | 168 | ||
169 | for_each_compatible_node(np, "pci", "marvell,mv64x60-pci") | 169 | for_each_compatible_node(np, "pci", "marvell,mv64360-pci") |
170 | mv64x60_add_bridge(np); | 170 | mv64x60_add_bridge(np); |
171 | } | 171 | } |
diff --git a/arch/powerpc/sysdev/mv64x60_pic.c b/arch/powerpc/sysdev/mv64x60_pic.c index 19e6ef263797..2aa4ed066db1 100644 --- a/arch/powerpc/sysdev/mv64x60_pic.c +++ b/arch/powerpc/sysdev/mv64x60_pic.c | |||
@@ -238,13 +238,13 @@ void __init mv64x60_init_irq(void) | |||
238 | const unsigned int *reg; | 238 | const unsigned int *reg; |
239 | unsigned long flags; | 239 | unsigned long flags; |
240 | 240 | ||
241 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64x60-gpp"); | 241 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64360-gpp"); |
242 | reg = of_get_property(np, "reg", &size); | 242 | reg = of_get_property(np, "reg", &size); |
243 | paddr = of_translate_address(np, reg); | 243 | paddr = of_translate_address(np, reg); |
244 | mv64x60_gpp_reg_base = ioremap(paddr, reg[1]); | 244 | mv64x60_gpp_reg_base = ioremap(paddr, reg[1]); |
245 | of_node_put(np); | 245 | of_node_put(np); |
246 | 246 | ||
247 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64x60-pic"); | 247 | np = of_find_compatible_node(NULL, NULL, "marvell,mv64360-pic"); |
248 | reg = of_get_property(np, "reg", &size); | 248 | reg = of_get_property(np, "reg", &size); |
249 | paddr = of_translate_address(np, reg); | 249 | paddr = of_translate_address(np, reg); |
250 | mv64x60_irq_reg_base = ioremap(paddr, reg[1]); | 250 | mv64x60_irq_reg_base = ioremap(paddr, reg[1]); |
diff --git a/arch/powerpc/sysdev/mv64x60_udbg.c b/arch/powerpc/sysdev/mv64x60_udbg.c index 35c77c7d0616..ccdb3b0418fc 100644 --- a/arch/powerpc/sysdev/mv64x60_udbg.c +++ b/arch/powerpc/sysdev/mv64x60_udbg.c | |||
@@ -85,7 +85,7 @@ static void mv64x60_udbg_init(void) | |||
85 | if (!stdout) | 85 | if (!stdout) |
86 | return; | 86 | return; |
87 | 87 | ||
88 | for_each_compatible_node(np, "serial", "marvell,mpsc") { | 88 | for_each_compatible_node(np, "serial", "marvell,mv64360-mpsc") { |
89 | if (np == stdout) | 89 | if (np == stdout) |
90 | break; | 90 | break; |
91 | } | 91 | } |
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c index 5abfcd157483..1814adbd2236 100644 --- a/arch/powerpc/sysdev/ppc4xx_pci.c +++ b/arch/powerpc/sysdev/ppc4xx_pci.c | |||
@@ -527,6 +527,7 @@ static void __init ppc4xx_probe_pcix_bridge(struct device_node *np) | |||
527 | * | 527 | * |
528 | * ibm,plb-pciex-440spe | 528 | * ibm,plb-pciex-440spe |
529 | * ibm,plb-pciex-405ex | 529 | * ibm,plb-pciex-405ex |
530 | * ibm,plb-pciex-460ex | ||
530 | * | 531 | * |
531 | * Anything else will be rejected for now as they are all subtly | 532 | * Anything else will be rejected for now as they are all subtly |
532 | * different unfortunately. | 533 | * different unfortunately. |
@@ -645,7 +646,7 @@ static int __init ppc440spe_pciex_core_init(struct device_node *np) | |||
645 | int time_out = 20; | 646 | int time_out = 20; |
646 | 647 | ||
647 | /* Set PLL clock receiver to LVPECL */ | 648 | /* Set PLL clock receiver to LVPECL */ |
648 | mtdcri(SDR0, PESDR0_PLLLCT1, mfdcri(SDR0, PESDR0_PLLLCT1) | 1 << 28); | 649 | dcri_clrset(SDR0, PESDR0_PLLLCT1, 0, 1 << 28); |
649 | 650 | ||
650 | /* Shouldn't we do all the calibration stuff etc... here ? */ | 651 | /* Shouldn't we do all the calibration stuff etc... here ? */ |
651 | if (ppc440spe_pciex_check_reset(np)) | 652 | if (ppc440spe_pciex_check_reset(np)) |
@@ -659,8 +660,7 @@ static int __init ppc440spe_pciex_core_init(struct device_node *np) | |||
659 | } | 660 | } |
660 | 661 | ||
661 | /* De-assert reset of PCIe PLL, wait for lock */ | 662 | /* De-assert reset of PCIe PLL, wait for lock */ |
662 | mtdcri(SDR0, PESDR0_PLLLCT1, | 663 | dcri_clrset(SDR0, PESDR0_PLLLCT1, 1 << 24, 0); |
663 | mfdcri(SDR0, PESDR0_PLLLCT1) & ~(1 << 24)); | ||
664 | udelay(3); | 664 | udelay(3); |
665 | 665 | ||
666 | while (time_out) { | 666 | while (time_out) { |
@@ -712,9 +712,8 @@ static int ppc440spe_pciex_init_port_hw(struct ppc4xx_pciex_port *port) | |||
712 | mtdcri(SDR0, port->sdr_base + PESDRn_440SPE_HSSL7SET1, | 712 | mtdcri(SDR0, port->sdr_base + PESDRn_440SPE_HSSL7SET1, |
713 | 0x35000000); | 713 | 0x35000000); |
714 | } | 714 | } |
715 | val = mfdcri(SDR0, port->sdr_base + PESDRn_RCSSET); | 715 | dcri_clrset(SDR0, port->sdr_base + PESDRn_RCSSET, |
716 | mtdcri(SDR0, port->sdr_base + PESDRn_RCSSET, | 716 | (1 << 24) | (1 << 16), 1 << 12); |
717 | (val & ~(1 << 24 | 1 << 16)) | 1 << 12); | ||
718 | 717 | ||
719 | return 0; | 718 | return 0; |
720 | } | 719 | } |
@@ -775,6 +774,115 @@ static struct ppc4xx_pciex_hwops ppc440speB_pcie_hwops __initdata = | |||
775 | .setup_utl = ppc440speB_pciex_init_utl, | 774 | .setup_utl = ppc440speB_pciex_init_utl, |
776 | }; | 775 | }; |
777 | 776 | ||
777 | static int __init ppc460ex_pciex_core_init(struct device_node *np) | ||
778 | { | ||
779 | /* Nothing to do, return 2 ports */ | ||
780 | return 2; | ||
781 | } | ||
782 | |||
783 | static int ppc460ex_pciex_init_port_hw(struct ppc4xx_pciex_port *port) | ||
784 | { | ||
785 | u32 val; | ||
786 | u32 utlset1; | ||
787 | |||
788 | if (port->endpoint) | ||
789 | val = PTYPE_LEGACY_ENDPOINT << 20; | ||
790 | else | ||
791 | val = PTYPE_ROOT_PORT << 20; | ||
792 | |||
793 | if (port->index == 0) { | ||
794 | val |= LNKW_X1 << 12; | ||
795 | utlset1 = 0x20000000; | ||
796 | } else { | ||
797 | val |= LNKW_X4 << 12; | ||
798 | utlset1 = 0x20101101; | ||
799 | } | ||
800 | |||
801 | mtdcri(SDR0, port->sdr_base + PESDRn_DLPSET, val); | ||
802 | mtdcri(SDR0, port->sdr_base + PESDRn_UTLSET1, utlset1); | ||
803 | mtdcri(SDR0, port->sdr_base + PESDRn_UTLSET2, 0x01210000); | ||
804 | |||
805 | switch (port->index) { | ||
806 | case 0: | ||
807 | mtdcri(SDR0, PESDR0_460EX_L0CDRCTL, 0x00003230); | ||
808 | mtdcri(SDR0, PESDR0_460EX_L0DRV, 0x00000136); | ||
809 | mtdcri(SDR0, PESDR0_460EX_L0CLK, 0x00000006); | ||
810 | |||
811 | mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST,0x10000000); | ||
812 | break; | ||
813 | |||
814 | case 1: | ||
815 | mtdcri(SDR0, PESDR1_460EX_L0CDRCTL, 0x00003230); | ||
816 | mtdcri(SDR0, PESDR1_460EX_L1CDRCTL, 0x00003230); | ||
817 | mtdcri(SDR0, PESDR1_460EX_L2CDRCTL, 0x00003230); | ||
818 | mtdcri(SDR0, PESDR1_460EX_L3CDRCTL, 0x00003230); | ||
819 | mtdcri(SDR0, PESDR1_460EX_L0DRV, 0x00000136); | ||
820 | mtdcri(SDR0, PESDR1_460EX_L1DRV, 0x00000136); | ||
821 | mtdcri(SDR0, PESDR1_460EX_L2DRV, 0x00000136); | ||
822 | mtdcri(SDR0, PESDR1_460EX_L3DRV, 0x00000136); | ||
823 | mtdcri(SDR0, PESDR1_460EX_L0CLK, 0x00000006); | ||
824 | mtdcri(SDR0, PESDR1_460EX_L1CLK, 0x00000006); | ||
825 | mtdcri(SDR0, PESDR1_460EX_L2CLK, 0x00000006); | ||
826 | mtdcri(SDR0, PESDR1_460EX_L3CLK, 0x00000006); | ||
827 | |||
828 | mtdcri(SDR0, PESDR1_460EX_PHY_CTL_RST,0x10000000); | ||
829 | break; | ||
830 | } | ||
831 | |||
832 | mtdcri(SDR0, port->sdr_base + PESDRn_RCSSET, | ||
833 | mfdcri(SDR0, port->sdr_base + PESDRn_RCSSET) | | ||
834 | (PESDRx_RCSSET_RSTGU | PESDRx_RCSSET_RSTPYN)); | ||
835 | |||
836 | /* Poll for PHY reset */ | ||
837 | /* XXX FIXME add timeout */ | ||
838 | switch (port->index) { | ||
839 | case 0: | ||
840 | while (!(mfdcri(SDR0, PESDR0_460EX_RSTSTA) & 0x1)) | ||
841 | udelay(10); | ||
842 | break; | ||
843 | case 1: | ||
844 | while (!(mfdcri(SDR0, PESDR1_460EX_RSTSTA) & 0x1)) | ||
845 | udelay(10); | ||
846 | break; | ||
847 | } | ||
848 | |||
849 | mtdcri(SDR0, port->sdr_base + PESDRn_RCSSET, | ||
850 | (mfdcri(SDR0, port->sdr_base + PESDRn_RCSSET) & | ||
851 | ~(PESDRx_RCSSET_RSTGU | PESDRx_RCSSET_RSTDL)) | | ||
852 | PESDRx_RCSSET_RSTPYN); | ||
853 | |||
854 | port->has_ibpre = 1; | ||
855 | |||
856 | return 0; | ||
857 | } | ||
858 | |||
859 | static int ppc460ex_pciex_init_utl(struct ppc4xx_pciex_port *port) | ||
860 | { | ||
861 | dcr_write(port->dcrs, DCRO_PEGPL_SPECIAL, 0x0); | ||
862 | |||
863 | /* | ||
864 | * Set buffer allocations and then assert VRB and TXE. | ||
865 | */ | ||
866 | out_be32(port->utl_base + PEUTL_PBCTL, 0x0800000c); | ||
867 | out_be32(port->utl_base + PEUTL_OUTTR, 0x08000000); | ||
868 | out_be32(port->utl_base + PEUTL_INTR, 0x02000000); | ||
869 | out_be32(port->utl_base + PEUTL_OPDBSZ, 0x04000000); | ||
870 | out_be32(port->utl_base + PEUTL_PBBSZ, 0x00000000); | ||
871 | out_be32(port->utl_base + PEUTL_IPHBSZ, 0x02000000); | ||
872 | out_be32(port->utl_base + PEUTL_IPDBSZ, 0x04000000); | ||
873 | out_be32(port->utl_base + PEUTL_RCIRQEN,0x00f00000); | ||
874 | out_be32(port->utl_base + PEUTL_PCTL, 0x80800066); | ||
875 | |||
876 | return 0; | ||
877 | } | ||
878 | |||
879 | static struct ppc4xx_pciex_hwops ppc460ex_pcie_hwops __initdata = | ||
880 | { | ||
881 | .core_init = ppc460ex_pciex_core_init, | ||
882 | .port_init_hw = ppc460ex_pciex_init_port_hw, | ||
883 | .setup_utl = ppc460ex_pciex_init_utl, | ||
884 | }; | ||
885 | |||
778 | #endif /* CONFIG_44x */ | 886 | #endif /* CONFIG_44x */ |
779 | 887 | ||
780 | #ifdef CONFIG_40x | 888 | #ifdef CONFIG_40x |
@@ -830,17 +938,9 @@ static int ppc405ex_pciex_init_port_hw(struct ppc4xx_pciex_port *port) | |||
830 | * PCIe boards don't show this problem. | 938 | * PCIe boards don't show this problem. |
831 | * This has to be re-tested and fixed in a later release! | 939 | * This has to be re-tested and fixed in a later release! |
832 | */ | 940 | */ |
833 | #if 0 /* XXX FIXME: Not resetting the PHY will leave all resources | ||
834 | * configured as done previously by U-Boot. Then Linux will currently | ||
835 | * not reassign them. So the PHY reset is now done always. This will | ||
836 | * lead to problems with the Atheros PCIe board again. | ||
837 | */ | ||
838 | val = mfdcri(SDR0, port->sdr_base + PESDRn_LOOP); | 941 | val = mfdcri(SDR0, port->sdr_base + PESDRn_LOOP); |
839 | if (!(val & 0x00001000)) | 942 | if (!(val & 0x00001000)) |
840 | ppc405ex_pcie_phy_reset(port); | 943 | ppc405ex_pcie_phy_reset(port); |
841 | #else | ||
842 | ppc405ex_pcie_phy_reset(port); | ||
843 | #endif | ||
844 | 944 | ||
845 | dcr_write(port->dcrs, DCRO_PEGPL_CFG, 0x10000000); /* guarded on */ | 945 | dcr_write(port->dcrs, DCRO_PEGPL_CFG, 0x10000000); /* guarded on */ |
846 | 946 | ||
@@ -896,6 +996,8 @@ static int __init ppc4xx_pciex_check_core_init(struct device_node *np) | |||
896 | else | 996 | else |
897 | ppc4xx_pciex_hwops = &ppc440speB_pcie_hwops; | 997 | ppc4xx_pciex_hwops = &ppc440speB_pcie_hwops; |
898 | } | 998 | } |
999 | if (of_device_is_compatible(np, "ibm,plb-pciex-460ex")) | ||
1000 | ppc4xx_pciex_hwops = &ppc460ex_pcie_hwops; | ||
899 | #endif /* CONFIG_44x */ | 1001 | #endif /* CONFIG_44x */ |
900 | #ifdef CONFIG_40x | 1002 | #ifdef CONFIG_40x |
901 | if (of_device_is_compatible(np, "ibm,plb-pciex-405ex")) | 1003 | if (of_device_is_compatible(np, "ibm,plb-pciex-405ex")) |
@@ -1042,8 +1144,7 @@ static int __init ppc4xx_pciex_port_init(struct ppc4xx_pciex_port *port) | |||
1042 | port->link = 0; | 1144 | port->link = 0; |
1043 | } | 1145 | } |
1044 | 1146 | ||
1045 | mtdcri(SDR0, port->sdr_base + PESDRn_RCSSET, | 1147 | dcri_clrset(SDR0, port->sdr_base + PESDRn_RCSSET, 0, 1 << 20); |
1046 | mfdcri(SDR0, port->sdr_base + PESDRn_RCSSET) | 1 << 20); | ||
1047 | msleep(100); | 1148 | msleep(100); |
1048 | 1149 | ||
1049 | return 0; | 1150 | return 0; |
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.h b/arch/powerpc/sysdev/ppc4xx_pci.h index 1c07908dc6ef..d04e40b306fb 100644 --- a/arch/powerpc/sysdev/ppc4xx_pci.h +++ b/arch/powerpc/sysdev/ppc4xx_pci.h | |||
@@ -271,6 +271,59 @@ | |||
271 | #define PESDR1_405EX_PHYSTA 0x044C | 271 | #define PESDR1_405EX_PHYSTA 0x044C |
272 | 272 | ||
273 | /* | 273 | /* |
274 | * 460EX additional DCRs | ||
275 | */ | ||
276 | #define PESDR0_460EX_L0BIST 0x0308 | ||
277 | #define PESDR0_460EX_L0BISTSTS 0x0309 | ||
278 | #define PESDR0_460EX_L0CDRCTL 0x030A | ||
279 | #define PESDR0_460EX_L0DRV 0x030B | ||
280 | #define PESDR0_460EX_L0REC 0x030C | ||
281 | #define PESDR0_460EX_L0LPB 0x030D | ||
282 | #define PESDR0_460EX_L0CLK 0x030E | ||
283 | #define PESDR0_460EX_PHY_CTL_RST 0x030F | ||
284 | #define PESDR0_460EX_RSTSTA 0x0310 | ||
285 | #define PESDR0_460EX_OBS 0x0311 | ||
286 | #define PESDR0_460EX_L0ERRC 0x0320 | ||
287 | |||
288 | #define PESDR1_460EX_L0BIST 0x0348 | ||
289 | #define PESDR1_460EX_L1BIST 0x0349 | ||
290 | #define PESDR1_460EX_L2BIST 0x034A | ||
291 | #define PESDR1_460EX_L3BIST 0x034B | ||
292 | #define PESDR1_460EX_L0BISTSTS 0x034C | ||
293 | #define PESDR1_460EX_L1BISTSTS 0x034D | ||
294 | #define PESDR1_460EX_L2BISTSTS 0x034E | ||
295 | #define PESDR1_460EX_L3BISTSTS 0x034F | ||
296 | #define PESDR1_460EX_L0CDRCTL 0x0350 | ||
297 | #define PESDR1_460EX_L1CDRCTL 0x0351 | ||
298 | #define PESDR1_460EX_L2CDRCTL 0x0352 | ||
299 | #define PESDR1_460EX_L3CDRCTL 0x0353 | ||
300 | #define PESDR1_460EX_L0DRV 0x0354 | ||
301 | #define PESDR1_460EX_L1DRV 0x0355 | ||
302 | #define PESDR1_460EX_L2DRV 0x0356 | ||
303 | #define PESDR1_460EX_L3DRV 0x0357 | ||
304 | #define PESDR1_460EX_L0REC 0x0358 | ||
305 | #define PESDR1_460EX_L1REC 0x0359 | ||
306 | #define PESDR1_460EX_L2REC 0x035A | ||
307 | #define PESDR1_460EX_L3REC 0x035B | ||
308 | #define PESDR1_460EX_L0LPB 0x035C | ||
309 | #define PESDR1_460EX_L1LPB 0x035D | ||
310 | #define PESDR1_460EX_L2LPB 0x035E | ||
311 | #define PESDR1_460EX_L3LPB 0x035F | ||
312 | #define PESDR1_460EX_L0CLK 0x0360 | ||
313 | #define PESDR1_460EX_L1CLK 0x0361 | ||
314 | #define PESDR1_460EX_L2CLK 0x0362 | ||
315 | #define PESDR1_460EX_L3CLK 0x0363 | ||
316 | #define PESDR1_460EX_PHY_CTL_RST 0x0364 | ||
317 | #define PESDR1_460EX_RSTSTA 0x0365 | ||
318 | #define PESDR1_460EX_OBS 0x0366 | ||
319 | #define PESDR1_460EX_L0ERRC 0x0368 | ||
320 | #define PESDR1_460EX_L1ERRC 0x0369 | ||
321 | #define PESDR1_460EX_L2ERRC 0x036A | ||
322 | #define PESDR1_460EX_L3ERRC 0x036B | ||
323 | #define PESDR0_460EX_IHS1 0x036C | ||
324 | #define PESDR0_460EX_IHS2 0x036D | ||
325 | |||
326 | /* | ||
274 | * Of the above, some are common offsets from the base | 327 | * Of the above, some are common offsets from the base |
275 | */ | 328 | */ |
276 | #define PESDRn_UTLSET1 0x00 | 329 | #define PESDRn_UTLSET1 0x00 |
@@ -353,6 +406,12 @@ | |||
353 | #define PECFG_POM2LAL 0x390 | 406 | #define PECFG_POM2LAL 0x390 |
354 | #define PECFG_POM2LAH 0x394 | 407 | #define PECFG_POM2LAH 0x394 |
355 | 408 | ||
409 | /* SDR Bit Mappings */ | ||
410 | #define PESDRx_RCSSET_HLDPLB 0x10000000 | ||
411 | #define PESDRx_RCSSET_RSTGU 0x01000000 | ||
412 | #define PESDRx_RCSSET_RDY 0x00100000 | ||
413 | #define PESDRx_RCSSET_RSTDL 0x00010000 | ||
414 | #define PESDRx_RCSSET_RSTPYN 0x00001000 | ||
356 | 415 | ||
357 | enum | 416 | enum |
358 | { | 417 | { |
diff --git a/arch/powerpc/sysdev/ppc4xx_soc.c b/arch/powerpc/sysdev/ppc4xx_soc.c new file mode 100644 index 000000000000..5b32adc9a9b2 --- /dev/null +++ b/arch/powerpc/sysdev/ppc4xx_soc.c | |||
@@ -0,0 +1,200 @@ | |||
1 | /* | ||
2 | * IBM/AMCC PPC4xx SoC setup code | ||
3 | * | ||
4 | * Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
5 | * | ||
6 | * L2 cache routines cloned from arch/ppc/syslib/ibm440gx_common.c which is: | ||
7 | * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> | ||
8 | * Copyright (c) 2003 - 2006 Zultys Technologies | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | |||
16 | #include <linux/stddef.h> | ||
17 | #include <linux/kernel.h> | ||
18 | #include <linux/init.h> | ||
19 | #include <linux/errno.h> | ||
20 | #include <linux/interrupt.h> | ||
21 | #include <linux/irq.h> | ||
22 | #include <linux/of_platform.h> | ||
23 | |||
24 | #include <asm/dcr.h> | ||
25 | #include <asm/dcr-regs.h> | ||
26 | #include <asm/reg.h> | ||
27 | |||
28 | static u32 dcrbase_l2c; | ||
29 | |||
30 | /* | ||
31 | * L2-cache | ||
32 | */ | ||
33 | |||
34 | /* Issue L2C diagnostic command */ | ||
35 | static inline u32 l2c_diag(u32 addr) | ||
36 | { | ||
37 | mtdcr(dcrbase_l2c + DCRN_L2C0_ADDR, addr); | ||
38 | mtdcr(dcrbase_l2c + DCRN_L2C0_CMD, L2C_CMD_DIAG); | ||
39 | while (!(mfdcr(dcrbase_l2c + DCRN_L2C0_SR) & L2C_SR_CC)) | ||
40 | ; | ||
41 | |||
42 | return mfdcr(dcrbase_l2c + DCRN_L2C0_DATA); | ||
43 | } | ||
44 | |||
45 | static irqreturn_t l2c_error_handler(int irq, void *dev) | ||
46 | { | ||
47 | u32 sr = mfdcr(dcrbase_l2c + DCRN_L2C0_SR); | ||
48 | |||
49 | if (sr & L2C_SR_CPE) { | ||
50 | /* Read cache trapped address */ | ||
51 | u32 addr = l2c_diag(0x42000000); | ||
52 | printk(KERN_EMERG "L2C: Cache Parity Error, addr[16:26] = 0x%08x\n", | ||
53 | addr); | ||
54 | } | ||
55 | if (sr & L2C_SR_TPE) { | ||
56 | /* Read tag trapped address */ | ||
57 | u32 addr = l2c_diag(0x82000000) >> 16; | ||
58 | printk(KERN_EMERG "L2C: Tag Parity Error, addr[16:26] = 0x%08x\n", | ||
59 | addr); | ||
60 | } | ||
61 | |||
62 | /* Clear parity errors */ | ||
63 | if (sr & (L2C_SR_CPE | L2C_SR_TPE)){ | ||
64 | mtdcr(dcrbase_l2c + DCRN_L2C0_ADDR, 0); | ||
65 | mtdcr(dcrbase_l2c + DCRN_L2C0_CMD, L2C_CMD_CCP | L2C_CMD_CTE); | ||
66 | } else { | ||
67 | printk(KERN_EMERG "L2C: LRU error\n"); | ||
68 | } | ||
69 | |||
70 | return IRQ_HANDLED; | ||
71 | } | ||
72 | |||
73 | static int __init ppc4xx_l2c_probe(void) | ||
74 | { | ||
75 | struct device_node *np; | ||
76 | u32 r; | ||
77 | unsigned long flags; | ||
78 | int irq; | ||
79 | const u32 *dcrreg; | ||
80 | u32 dcrbase_isram; | ||
81 | int len; | ||
82 | const u32 *prop; | ||
83 | u32 l2_size; | ||
84 | |||
85 | np = of_find_compatible_node(NULL, NULL, "ibm,l2-cache"); | ||
86 | if (!np) | ||
87 | return 0; | ||
88 | |||
89 | /* Get l2 cache size */ | ||
90 | prop = of_get_property(np, "cache-size", NULL); | ||
91 | if (prop == NULL) { | ||
92 | printk(KERN_ERR "%s: Can't get cache-size!\n", np->full_name); | ||
93 | of_node_put(np); | ||
94 | return -ENODEV; | ||
95 | } | ||
96 | l2_size = prop[0]; | ||
97 | |||
98 | /* Map DCRs */ | ||
99 | dcrreg = of_get_property(np, "dcr-reg", &len); | ||
100 | if (!dcrreg || (len != 4 * sizeof(u32))) { | ||
101 | printk(KERN_ERR "%s: Can't get DCR register base !", | ||
102 | np->full_name); | ||
103 | of_node_put(np); | ||
104 | return -ENODEV; | ||
105 | } | ||
106 | dcrbase_isram = dcrreg[0]; | ||
107 | dcrbase_l2c = dcrreg[2]; | ||
108 | |||
109 | /* Get and map irq number from device tree */ | ||
110 | irq = irq_of_parse_and_map(np, 0); | ||
111 | if (irq == NO_IRQ) { | ||
112 | printk(KERN_ERR "irq_of_parse_and_map failed\n"); | ||
113 | of_node_put(np); | ||
114 | return -ENODEV; | ||
115 | } | ||
116 | |||
117 | /* Install error handler */ | ||
118 | if (request_irq(irq, l2c_error_handler, IRQF_DISABLED, "L2C", 0) < 0) { | ||
119 | printk(KERN_ERR "Cannot install L2C error handler" | ||
120 | ", cache is not enabled\n"); | ||
121 | of_node_put(np); | ||
122 | return -ENODEV; | ||
123 | } | ||
124 | |||
125 | local_irq_save(flags); | ||
126 | asm volatile ("sync" ::: "memory"); | ||
127 | |||
128 | /* Disable SRAM */ | ||
129 | mtdcr(dcrbase_isram + DCRN_SRAM0_DPC, | ||
130 | mfdcr(dcrbase_isram + DCRN_SRAM0_DPC) & ~SRAM_DPC_ENABLE); | ||
131 | mtdcr(dcrbase_isram + DCRN_SRAM0_SB0CR, | ||
132 | mfdcr(dcrbase_isram + DCRN_SRAM0_SB0CR) & ~SRAM_SBCR_BU_MASK); | ||
133 | mtdcr(dcrbase_isram + DCRN_SRAM0_SB1CR, | ||
134 | mfdcr(dcrbase_isram + DCRN_SRAM0_SB1CR) & ~SRAM_SBCR_BU_MASK); | ||
135 | mtdcr(dcrbase_isram + DCRN_SRAM0_SB2CR, | ||
136 | mfdcr(dcrbase_isram + DCRN_SRAM0_SB2CR) & ~SRAM_SBCR_BU_MASK); | ||
137 | mtdcr(dcrbase_isram + DCRN_SRAM0_SB3CR, | ||
138 | mfdcr(dcrbase_isram + DCRN_SRAM0_SB3CR) & ~SRAM_SBCR_BU_MASK); | ||
139 | |||
140 | /* Enable L2_MODE without ICU/DCU */ | ||
141 | r = mfdcr(dcrbase_l2c + DCRN_L2C0_CFG) & | ||
142 | ~(L2C_CFG_ICU | L2C_CFG_DCU | L2C_CFG_SS_MASK); | ||
143 | r |= L2C_CFG_L2M | L2C_CFG_SS_256; | ||
144 | mtdcr(dcrbase_l2c + DCRN_L2C0_CFG, r); | ||
145 | |||
146 | mtdcr(dcrbase_l2c + DCRN_L2C0_ADDR, 0); | ||
147 | |||
148 | /* Hardware Clear Command */ | ||
149 | mtdcr(dcrbase_l2c + DCRN_L2C0_CMD, L2C_CMD_HCC); | ||
150 | while (!(mfdcr(dcrbase_l2c + DCRN_L2C0_SR) & L2C_SR_CC)) | ||
151 | ; | ||
152 | |||
153 | /* Clear Cache Parity and Tag Errors */ | ||
154 | mtdcr(dcrbase_l2c + DCRN_L2C0_CMD, L2C_CMD_CCP | L2C_CMD_CTE); | ||
155 | |||
156 | /* Enable 64G snoop region starting at 0 */ | ||
157 | r = mfdcr(dcrbase_l2c + DCRN_L2C0_SNP0) & | ||
158 | ~(L2C_SNP_BA_MASK | L2C_SNP_SSR_MASK); | ||
159 | r |= L2C_SNP_SSR_32G | L2C_SNP_ESR; | ||
160 | mtdcr(dcrbase_l2c + DCRN_L2C0_SNP0, r); | ||
161 | |||
162 | r = mfdcr(dcrbase_l2c + DCRN_L2C0_SNP1) & | ||
163 | ~(L2C_SNP_BA_MASK | L2C_SNP_SSR_MASK); | ||
164 | r |= 0x80000000 | L2C_SNP_SSR_32G | L2C_SNP_ESR; | ||
165 | mtdcr(dcrbase_l2c + DCRN_L2C0_SNP1, r); | ||
166 | |||
167 | asm volatile ("sync" ::: "memory"); | ||
168 | |||
169 | /* Enable ICU/DCU ports */ | ||
170 | r = mfdcr(dcrbase_l2c + DCRN_L2C0_CFG); | ||
171 | r &= ~(L2C_CFG_DCW_MASK | L2C_CFG_PMUX_MASK | L2C_CFG_PMIM | ||
172 | | L2C_CFG_TPEI | L2C_CFG_CPEI | L2C_CFG_NAM | L2C_CFG_NBRM); | ||
173 | r |= L2C_CFG_ICU | L2C_CFG_DCU | L2C_CFG_TPC | L2C_CFG_CPC | L2C_CFG_FRAN | ||
174 | | L2C_CFG_CPIM | L2C_CFG_TPIM | L2C_CFG_LIM | L2C_CFG_SMCM; | ||
175 | |||
176 | /* Check for 460EX/GT special handling */ | ||
177 | if (of_device_is_compatible(np, "ibm,l2-cache-460ex")) | ||
178 | r |= L2C_CFG_RDBW; | ||
179 | |||
180 | mtdcr(dcrbase_l2c + DCRN_L2C0_CFG, r); | ||
181 | |||
182 | asm volatile ("sync; isync" ::: "memory"); | ||
183 | local_irq_restore(flags); | ||
184 | |||
185 | printk(KERN_INFO "%dk L2-cache enabled\n", l2_size >> 10); | ||
186 | |||
187 | of_node_put(np); | ||
188 | return 0; | ||
189 | } | ||
190 | arch_initcall(ppc4xx_l2c_probe); | ||
191 | |||
192 | /* | ||
193 | * At present, this routine just applies a system reset. | ||
194 | */ | ||
195 | void ppc4xx_reset_system(char *cmd) | ||
196 | { | ||
197 | mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_RST_SYSTEM); | ||
198 | while (1) | ||
199 | ; /* Just in case the reset doesn't work */ | ||
200 | } | ||
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c index cc81fd1141b0..cff550eec7e8 100644 --- a/arch/powerpc/sysdev/qe_lib/qe.c +++ b/arch/powerpc/sysdev/qe_lib/qe.c | |||
@@ -55,7 +55,7 @@ struct qe_snum { | |||
55 | /* We allocate this here because it is used almost exclusively for | 55 | /* We allocate this here because it is used almost exclusively for |
56 | * the communication processor devices. | 56 | * the communication processor devices. |
57 | */ | 57 | */ |
58 | struct qe_immap *qe_immr = NULL; | 58 | struct qe_immap __iomem *qe_immr; |
59 | EXPORT_SYMBOL(qe_immr); | 59 | EXPORT_SYMBOL(qe_immr); |
60 | 60 | ||
61 | static struct qe_snum snums[QE_NUM_OF_SNUM]; /* Dynamically allocated SNUMs */ | 61 | static struct qe_snum snums[QE_NUM_OF_SNUM]; /* Dynamically allocated SNUMs */ |
@@ -156,7 +156,7 @@ EXPORT_SYMBOL(qe_issue_cmd); | |||
156 | */ | 156 | */ |
157 | static unsigned int brg_clk = 0; | 157 | static unsigned int brg_clk = 0; |
158 | 158 | ||
159 | unsigned int get_brg_clk(void) | 159 | unsigned int qe_get_brg_clk(void) |
160 | { | 160 | { |
161 | struct device_node *qe; | 161 | struct device_node *qe; |
162 | unsigned int size; | 162 | unsigned int size; |
@@ -180,6 +180,7 @@ unsigned int get_brg_clk(void) | |||
180 | 180 | ||
181 | return brg_clk; | 181 | return brg_clk; |
182 | } | 182 | } |
183 | EXPORT_SYMBOL(qe_get_brg_clk); | ||
183 | 184 | ||
184 | /* Program the BRG to the given sampling rate and multiplier | 185 | /* Program the BRG to the given sampling rate and multiplier |
185 | * | 186 | * |
@@ -197,7 +198,7 @@ int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier) | |||
197 | if ((brg < QE_BRG1) || (brg > QE_BRG16)) | 198 | if ((brg < QE_BRG1) || (brg > QE_BRG16)) |
198 | return -EINVAL; | 199 | return -EINVAL; |
199 | 200 | ||
200 | divisor = get_brg_clk() / (rate * multiplier); | 201 | divisor = qe_get_brg_clk() / (rate * multiplier); |
201 | 202 | ||
202 | if (divisor > QE_BRGC_DIVISOR_MAX + 1) { | 203 | if (divisor > QE_BRGC_DIVISOR_MAX + 1) { |
203 | div16 = QE_BRGC_DIV16; | 204 | div16 = QE_BRGC_DIV16; |
@@ -415,12 +416,6 @@ void qe_muram_dump(void) | |||
415 | } | 416 | } |
416 | EXPORT_SYMBOL(qe_muram_dump); | 417 | EXPORT_SYMBOL(qe_muram_dump); |
417 | 418 | ||
418 | void *qe_muram_addr(unsigned long offset) | ||
419 | { | ||
420 | return (void *)&qe_immr->muram[offset]; | ||
421 | } | ||
422 | EXPORT_SYMBOL(qe_muram_addr); | ||
423 | |||
424 | /* The maximum number of RISCs we support */ | 419 | /* The maximum number of RISCs we support */ |
425 | #define MAX_QE_RISC 2 | 420 | #define MAX_QE_RISC 2 |
426 | 421 | ||
diff --git a/arch/powerpc/sysdev/qe_lib/qe_io.c b/arch/powerpc/sysdev/qe_lib/qe_io.c index e53ea4d374a0..93916a48afec 100644 --- a/arch/powerpc/sysdev/qe_lib/qe_io.c +++ b/arch/powerpc/sysdev/qe_lib/qe_io.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/ioport.h> | 22 | #include <linux/ioport.h> |
23 | 23 | ||
24 | #include <asm/io.h> | 24 | #include <asm/io.h> |
25 | #include <asm/qe.h> | ||
25 | #include <asm/prom.h> | 26 | #include <asm/prom.h> |
26 | #include <sysdev/fsl_soc.h> | 27 | #include <sysdev/fsl_soc.h> |
27 | 28 | ||
@@ -41,7 +42,7 @@ struct port_regs { | |||
41 | #endif | 42 | #endif |
42 | }; | 43 | }; |
43 | 44 | ||
44 | static struct port_regs *par_io = NULL; | 45 | static struct port_regs __iomem *par_io; |
45 | static int num_par_io_ports = 0; | 46 | static int num_par_io_ports = 0; |
46 | 47 | ||
47 | int par_io_init(struct device_node *np) | 48 | int par_io_init(struct device_node *np) |
@@ -165,7 +166,7 @@ int par_io_of_config(struct device_node *np) | |||
165 | } | 166 | } |
166 | 167 | ||
167 | ph = of_get_property(np, "pio-handle", NULL); | 168 | ph = of_get_property(np, "pio-handle", NULL); |
168 | if (ph == 0) { | 169 | if (ph == NULL) { |
169 | printk(KERN_ERR "pio-handle not available \n"); | 170 | printk(KERN_ERR "pio-handle not available \n"); |
170 | return -1; | 171 | return -1; |
171 | } | 172 | } |
@@ -200,7 +201,7 @@ static void dump_par_io(void) | |||
200 | { | 201 | { |
201 | unsigned int i; | 202 | unsigned int i; |
202 | 203 | ||
203 | printk(KERN_INFO "%s: par_io=%p\n", __FUNCTION__, par_io); | 204 | printk(KERN_INFO "%s: par_io=%p\n", __func__, par_io); |
204 | for (i = 0; i < num_par_io_ports; i++) { | 205 | for (i = 0; i < num_par_io_ports; i++) { |
205 | printk(KERN_INFO " cpodr[%u]=%08x\n", i, | 206 | printk(KERN_INFO " cpodr[%u]=%08x\n", i, |
206 | in_be32(&par_io[i].cpodr)); | 207 | in_be32(&par_io[i].cpodr)); |
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_fast.c b/arch/powerpc/sysdev/qe_lib/ucc_fast.c index 3223acbc39e5..bcf88e6ce962 100644 --- a/arch/powerpc/sysdev/qe_lib/ucc_fast.c +++ b/arch/powerpc/sysdev/qe_lib/ucc_fast.c | |||
@@ -148,57 +148,57 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc | |||
148 | 148 | ||
149 | /* check if the UCC port number is in range. */ | 149 | /* check if the UCC port number is in range. */ |
150 | if ((uf_info->ucc_num < 0) || (uf_info->ucc_num > UCC_MAX_NUM - 1)) { | 150 | if ((uf_info->ucc_num < 0) || (uf_info->ucc_num > UCC_MAX_NUM - 1)) { |
151 | printk(KERN_ERR "%s: illegal UCC number\n", __FUNCTION__); | 151 | printk(KERN_ERR "%s: illegal UCC number\n", __func__); |
152 | return -EINVAL; | 152 | return -EINVAL; |
153 | } | 153 | } |
154 | 154 | ||
155 | /* Check that 'max_rx_buf_length' is properly aligned (4). */ | 155 | /* Check that 'max_rx_buf_length' is properly aligned (4). */ |
156 | if (uf_info->max_rx_buf_length & (UCC_FAST_MRBLR_ALIGNMENT - 1)) { | 156 | if (uf_info->max_rx_buf_length & (UCC_FAST_MRBLR_ALIGNMENT - 1)) { |
157 | printk(KERN_ERR "%s: max_rx_buf_length not aligned\n", | 157 | printk(KERN_ERR "%s: max_rx_buf_length not aligned\n", |
158 | __FUNCTION__); | 158 | __func__); |
159 | return -EINVAL; | 159 | return -EINVAL; |
160 | } | 160 | } |
161 | 161 | ||
162 | /* Validate Virtual Fifo register values */ | 162 | /* Validate Virtual Fifo register values */ |
163 | if (uf_info->urfs < UCC_FAST_URFS_MIN_VAL) { | 163 | if (uf_info->urfs < UCC_FAST_URFS_MIN_VAL) { |
164 | printk(KERN_ERR "%s: urfs is too small\n", __FUNCTION__); | 164 | printk(KERN_ERR "%s: urfs is too small\n", __func__); |
165 | return -EINVAL; | 165 | return -EINVAL; |
166 | } | 166 | } |
167 | 167 | ||
168 | if (uf_info->urfs & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { | 168 | if (uf_info->urfs & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { |
169 | printk(KERN_ERR "%s: urfs is not aligned\n", __FUNCTION__); | 169 | printk(KERN_ERR "%s: urfs is not aligned\n", __func__); |
170 | return -EINVAL; | 170 | return -EINVAL; |
171 | } | 171 | } |
172 | 172 | ||
173 | if (uf_info->urfet & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { | 173 | if (uf_info->urfet & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { |
174 | printk(KERN_ERR "%s: urfet is not aligned.\n", __FUNCTION__); | 174 | printk(KERN_ERR "%s: urfet is not aligned.\n", __func__); |
175 | return -EINVAL; | 175 | return -EINVAL; |
176 | } | 176 | } |
177 | 177 | ||
178 | if (uf_info->urfset & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { | 178 | if (uf_info->urfset & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { |
179 | printk(KERN_ERR "%s: urfset is not aligned\n", __FUNCTION__); | 179 | printk(KERN_ERR "%s: urfset is not aligned\n", __func__); |
180 | return -EINVAL; | 180 | return -EINVAL; |
181 | } | 181 | } |
182 | 182 | ||
183 | if (uf_info->utfs & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { | 183 | if (uf_info->utfs & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { |
184 | printk(KERN_ERR "%s: utfs is not aligned\n", __FUNCTION__); | 184 | printk(KERN_ERR "%s: utfs is not aligned\n", __func__); |
185 | return -EINVAL; | 185 | return -EINVAL; |
186 | } | 186 | } |
187 | 187 | ||
188 | if (uf_info->utfet & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { | 188 | if (uf_info->utfet & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { |
189 | printk(KERN_ERR "%s: utfet is not aligned\n", __FUNCTION__); | 189 | printk(KERN_ERR "%s: utfet is not aligned\n", __func__); |
190 | return -EINVAL; | 190 | return -EINVAL; |
191 | } | 191 | } |
192 | 192 | ||
193 | if (uf_info->utftt & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { | 193 | if (uf_info->utftt & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { |
194 | printk(KERN_ERR "%s: utftt is not aligned\n", __FUNCTION__); | 194 | printk(KERN_ERR "%s: utftt is not aligned\n", __func__); |
195 | return -EINVAL; | 195 | return -EINVAL; |
196 | } | 196 | } |
197 | 197 | ||
198 | uccf = kzalloc(sizeof(struct ucc_fast_private), GFP_KERNEL); | 198 | uccf = kzalloc(sizeof(struct ucc_fast_private), GFP_KERNEL); |
199 | if (!uccf) { | 199 | if (!uccf) { |
200 | printk(KERN_ERR "%s: Cannot allocate private data\n", | 200 | printk(KERN_ERR "%s: Cannot allocate private data\n", |
201 | __FUNCTION__); | 201 | __func__); |
202 | return -ENOMEM; | 202 | return -ENOMEM; |
203 | } | 203 | } |
204 | 204 | ||
@@ -207,7 +207,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc | |||
207 | /* Set the PHY base address */ | 207 | /* Set the PHY base address */ |
208 | uccf->uf_regs = ioremap(uf_info->regs, sizeof(struct ucc_fast)); | 208 | uccf->uf_regs = ioremap(uf_info->regs, sizeof(struct ucc_fast)); |
209 | if (uccf->uf_regs == NULL) { | 209 | if (uccf->uf_regs == NULL) { |
210 | printk(KERN_ERR "%s: Cannot map UCC registers\n", __FUNCTION__); | 210 | printk(KERN_ERR "%s: Cannot map UCC registers\n", __func__); |
211 | return -ENOMEM; | 211 | return -ENOMEM; |
212 | } | 212 | } |
213 | 213 | ||
@@ -230,7 +230,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc | |||
230 | /* Set UCC to fast type */ | 230 | /* Set UCC to fast type */ |
231 | ret = ucc_set_type(uf_info->ucc_num, UCC_SPEED_TYPE_FAST); | 231 | ret = ucc_set_type(uf_info->ucc_num, UCC_SPEED_TYPE_FAST); |
232 | if (ret) { | 232 | if (ret) { |
233 | printk(KERN_ERR "%s: cannot set UCC type\n", __FUNCTION__); | 233 | printk(KERN_ERR "%s: cannot set UCC type\n", __func__); |
234 | ucc_fast_free(uccf); | 234 | ucc_fast_free(uccf); |
235 | return ret; | 235 | return ret; |
236 | } | 236 | } |
@@ -270,7 +270,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc | |||
270 | qe_muram_alloc(uf_info->utfs, UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT); | 270 | qe_muram_alloc(uf_info->utfs, UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT); |
271 | if (IS_ERR_VALUE(uccf->ucc_fast_tx_virtual_fifo_base_offset)) { | 271 | if (IS_ERR_VALUE(uccf->ucc_fast_tx_virtual_fifo_base_offset)) { |
272 | printk(KERN_ERR "%s: cannot allocate MURAM for TX FIFO\n", | 272 | printk(KERN_ERR "%s: cannot allocate MURAM for TX FIFO\n", |
273 | __FUNCTION__); | 273 | __func__); |
274 | uccf->ucc_fast_tx_virtual_fifo_base_offset = 0; | 274 | uccf->ucc_fast_tx_virtual_fifo_base_offset = 0; |
275 | ucc_fast_free(uccf); | 275 | ucc_fast_free(uccf); |
276 | return -ENOMEM; | 276 | return -ENOMEM; |
@@ -283,7 +283,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc | |||
283 | UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT); | 283 | UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT); |
284 | if (IS_ERR_VALUE(uccf->ucc_fast_rx_virtual_fifo_base_offset)) { | 284 | if (IS_ERR_VALUE(uccf->ucc_fast_rx_virtual_fifo_base_offset)) { |
285 | printk(KERN_ERR "%s: cannot allocate MURAM for RX FIFO\n", | 285 | printk(KERN_ERR "%s: cannot allocate MURAM for RX FIFO\n", |
286 | __FUNCTION__); | 286 | __func__); |
287 | uccf->ucc_fast_rx_virtual_fifo_base_offset = 0; | 287 | uccf->ucc_fast_rx_virtual_fifo_base_offset = 0; |
288 | ucc_fast_free(uccf); | 288 | ucc_fast_free(uccf); |
289 | return -ENOMEM; | 289 | return -ENOMEM; |
@@ -314,7 +314,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc | |||
314 | ucc_set_qe_mux_rxtx(uf_info->ucc_num, uf_info->rx_clock, | 314 | ucc_set_qe_mux_rxtx(uf_info->ucc_num, uf_info->rx_clock, |
315 | COMM_DIR_RX)) { | 315 | COMM_DIR_RX)) { |
316 | printk(KERN_ERR "%s: illegal value for RX clock\n", | 316 | printk(KERN_ERR "%s: illegal value for RX clock\n", |
317 | __FUNCTION__); | 317 | __func__); |
318 | ucc_fast_free(uccf); | 318 | ucc_fast_free(uccf); |
319 | return -EINVAL; | 319 | return -EINVAL; |
320 | } | 320 | } |
@@ -323,7 +323,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc | |||
323 | ucc_set_qe_mux_rxtx(uf_info->ucc_num, uf_info->tx_clock, | 323 | ucc_set_qe_mux_rxtx(uf_info->ucc_num, uf_info->tx_clock, |
324 | COMM_DIR_TX)) { | 324 | COMM_DIR_TX)) { |
325 | printk(KERN_ERR "%s: illegal value for TX clock\n", | 325 | printk(KERN_ERR "%s: illegal value for TX clock\n", |
326 | __FUNCTION__); | 326 | __func__); |
327 | ucc_fast_free(uccf); | 327 | ucc_fast_free(uccf); |
328 | return -EINVAL; | 328 | return -EINVAL; |
329 | } | 329 | } |
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_slow.c b/arch/powerpc/sysdev/qe_lib/ucc_slow.c index b2870b208ddb..a578bc77b9d5 100644 --- a/arch/powerpc/sysdev/qe_lib/ucc_slow.c +++ b/arch/powerpc/sysdev/qe_lib/ucc_slow.c | |||
@@ -142,7 +142,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
142 | 142 | ||
143 | /* check if the UCC port number is in range. */ | 143 | /* check if the UCC port number is in range. */ |
144 | if ((us_info->ucc_num < 0) || (us_info->ucc_num > UCC_MAX_NUM - 1)) { | 144 | if ((us_info->ucc_num < 0) || (us_info->ucc_num > UCC_MAX_NUM - 1)) { |
145 | printk(KERN_ERR "%s: illegal UCC number\n", __FUNCTION__); | 145 | printk(KERN_ERR "%s: illegal UCC number\n", __func__); |
146 | return -EINVAL; | 146 | return -EINVAL; |
147 | } | 147 | } |
148 | 148 | ||
@@ -161,7 +161,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
161 | uccs = kzalloc(sizeof(struct ucc_slow_private), GFP_KERNEL); | 161 | uccs = kzalloc(sizeof(struct ucc_slow_private), GFP_KERNEL); |
162 | if (!uccs) { | 162 | if (!uccs) { |
163 | printk(KERN_ERR "%s: Cannot allocate private data\n", | 163 | printk(KERN_ERR "%s: Cannot allocate private data\n", |
164 | __FUNCTION__); | 164 | __func__); |
165 | return -ENOMEM; | 165 | return -ENOMEM; |
166 | } | 166 | } |
167 | 167 | ||
@@ -170,7 +170,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
170 | /* Set the PHY base address */ | 170 | /* Set the PHY base address */ |
171 | uccs->us_regs = ioremap(us_info->regs, sizeof(struct ucc_slow)); | 171 | uccs->us_regs = ioremap(us_info->regs, sizeof(struct ucc_slow)); |
172 | if (uccs->us_regs == NULL) { | 172 | if (uccs->us_regs == NULL) { |
173 | printk(KERN_ERR "%s: Cannot map UCC registers\n", __FUNCTION__); | 173 | printk(KERN_ERR "%s: Cannot map UCC registers\n", __func__); |
174 | return -ENOMEM; | 174 | return -ENOMEM; |
175 | } | 175 | } |
176 | 176 | ||
@@ -189,7 +189,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
189 | uccs->us_pram_offset = | 189 | uccs->us_pram_offset = |
190 | qe_muram_alloc(UCC_SLOW_PRAM_SIZE, ALIGNMENT_OF_UCC_SLOW_PRAM); | 190 | qe_muram_alloc(UCC_SLOW_PRAM_SIZE, ALIGNMENT_OF_UCC_SLOW_PRAM); |
191 | if (IS_ERR_VALUE(uccs->us_pram_offset)) { | 191 | if (IS_ERR_VALUE(uccs->us_pram_offset)) { |
192 | printk(KERN_ERR "%s: cannot allocate MURAM for PRAM", __FUNCTION__); | 192 | printk(KERN_ERR "%s: cannot allocate MURAM for PRAM", __func__); |
193 | ucc_slow_free(uccs); | 193 | ucc_slow_free(uccs); |
194 | return -ENOMEM; | 194 | return -ENOMEM; |
195 | } | 195 | } |
@@ -202,7 +202,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
202 | /* Set UCC to slow type */ | 202 | /* Set UCC to slow type */ |
203 | ret = ucc_set_type(us_info->ucc_num, UCC_SPEED_TYPE_SLOW); | 203 | ret = ucc_set_type(us_info->ucc_num, UCC_SPEED_TYPE_SLOW); |
204 | if (ret) { | 204 | if (ret) { |
205 | printk(KERN_ERR "%s: cannot set UCC type", __FUNCTION__); | 205 | printk(KERN_ERR "%s: cannot set UCC type", __func__); |
206 | ucc_slow_free(uccs); | 206 | ucc_slow_free(uccs); |
207 | return ret; | 207 | return ret; |
208 | } | 208 | } |
@@ -216,7 +216,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
216 | qe_muram_alloc(us_info->rx_bd_ring_len * sizeof(struct qe_bd), | 216 | qe_muram_alloc(us_info->rx_bd_ring_len * sizeof(struct qe_bd), |
217 | QE_ALIGNMENT_OF_BD); | 217 | QE_ALIGNMENT_OF_BD); |
218 | if (IS_ERR_VALUE(uccs->rx_base_offset)) { | 218 | if (IS_ERR_VALUE(uccs->rx_base_offset)) { |
219 | printk(KERN_ERR "%s: cannot allocate %u RX BDs\n", __FUNCTION__, | 219 | printk(KERN_ERR "%s: cannot allocate %u RX BDs\n", __func__, |
220 | us_info->rx_bd_ring_len); | 220 | us_info->rx_bd_ring_len); |
221 | uccs->rx_base_offset = 0; | 221 | uccs->rx_base_offset = 0; |
222 | ucc_slow_free(uccs); | 222 | ucc_slow_free(uccs); |
@@ -227,7 +227,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
227 | qe_muram_alloc(us_info->tx_bd_ring_len * sizeof(struct qe_bd), | 227 | qe_muram_alloc(us_info->tx_bd_ring_len * sizeof(struct qe_bd), |
228 | QE_ALIGNMENT_OF_BD); | 228 | QE_ALIGNMENT_OF_BD); |
229 | if (IS_ERR_VALUE(uccs->tx_base_offset)) { | 229 | if (IS_ERR_VALUE(uccs->tx_base_offset)) { |
230 | printk(KERN_ERR "%s: cannot allocate TX BDs", __FUNCTION__); | 230 | printk(KERN_ERR "%s: cannot allocate TX BDs", __func__); |
231 | uccs->tx_base_offset = 0; | 231 | uccs->tx_base_offset = 0; |
232 | ucc_slow_free(uccs); | 232 | ucc_slow_free(uccs); |
233 | return -ENOMEM; | 233 | return -ENOMEM; |
@@ -317,7 +317,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
317 | if (ucc_set_qe_mux_rxtx(us_info->ucc_num, us_info->rx_clock, | 317 | if (ucc_set_qe_mux_rxtx(us_info->ucc_num, us_info->rx_clock, |
318 | COMM_DIR_RX)) { | 318 | COMM_DIR_RX)) { |
319 | printk(KERN_ERR "%s: illegal value for RX clock\n", | 319 | printk(KERN_ERR "%s: illegal value for RX clock\n", |
320 | __FUNCTION__); | 320 | __func__); |
321 | ucc_slow_free(uccs); | 321 | ucc_slow_free(uccs); |
322 | return -EINVAL; | 322 | return -EINVAL; |
323 | } | 323 | } |
@@ -325,7 +325,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
325 | if (ucc_set_qe_mux_rxtx(us_info->ucc_num, us_info->tx_clock, | 325 | if (ucc_set_qe_mux_rxtx(us_info->ucc_num, us_info->tx_clock, |
326 | COMM_DIR_TX)) { | 326 | COMM_DIR_TX)) { |
327 | printk(KERN_ERR "%s: illegal value for TX clock\n", | 327 | printk(KERN_ERR "%s: illegal value for TX clock\n", |
328 | __FUNCTION__); | 328 | __func__); |
329 | ucc_slow_free(uccs); | 329 | ucc_slow_free(uccs); |
330 | return -EINVAL; | 330 | return -EINVAL; |
331 | } | 331 | } |
diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c b/arch/powerpc/sysdev/rtc_cmos_setup.c index 0c9ac7ee08fb..c09ddc0dbeb3 100644 --- a/arch/powerpc/sysdev/rtc_cmos_setup.c +++ b/arch/powerpc/sysdev/rtc_cmos_setup.c | |||
@@ -56,3 +56,5 @@ static int __init add_rtc(void) | |||
56 | return 0; | 56 | return 0; |
57 | } | 57 | } |
58 | fs_initcall(add_rtc); | 58 | fs_initcall(add_rtc); |
59 | |||
60 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/powerpc/sysdev/tsi108_dev.c b/arch/powerpc/sysdev/tsi108_dev.c index be2808a292f7..d4d15aaf18fa 100644 --- a/arch/powerpc/sysdev/tsi108_dev.c +++ b/arch/powerpc/sysdev/tsi108_dev.c | |||
@@ -84,7 +84,7 @@ static int __init tsi108_eth_of_init(void) | |||
84 | 84 | ||
85 | ret = of_address_to_resource(np, 0, &r[0]); | 85 | ret = of_address_to_resource(np, 0, &r[0]); |
86 | DBG("%s: name:start->end = %s:0x%lx-> 0x%lx\n", | 86 | DBG("%s: name:start->end = %s:0x%lx-> 0x%lx\n", |
87 | __FUNCTION__,r[0].name, r[0].start, r[0].end); | 87 | __func__,r[0].name, r[0].start, r[0].end); |
88 | if (ret) | 88 | if (ret) |
89 | goto err; | 89 | goto err; |
90 | 90 | ||
@@ -93,7 +93,7 @@ static int __init tsi108_eth_of_init(void) | |||
93 | r[1].end = irq_of_parse_and_map(np, 0); | 93 | r[1].end = irq_of_parse_and_map(np, 0); |
94 | r[1].flags = IORESOURCE_IRQ; | 94 | r[1].flags = IORESOURCE_IRQ; |
95 | DBG("%s: name:start->end = %s:0x%lx-> 0x%lx\n", | 95 | DBG("%s: name:start->end = %s:0x%lx-> 0x%lx\n", |
96 | __FUNCTION__,r[1].name, r[1].start, r[1].end); | 96 | __func__,r[1].name, r[1].start, r[1].end); |
97 | 97 | ||
98 | tsi_eth_dev = | 98 | tsi_eth_dev = |
99 | platform_device_register_simple("tsi-ethernet", i++, &r[0], | 99 | platform_device_register_simple("tsi-ethernet", i++, &r[0], |
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c index 31d3d33d91fc..ac1a72dc21e5 100644 --- a/arch/powerpc/sysdev/tsi108_pci.c +++ b/arch/powerpc/sysdev/tsi108_pci.c | |||
@@ -207,7 +207,7 @@ int __init tsi108_setup_pci(struct device_node *dev, u32 cfg_phys, int primary) | |||
207 | /* PCI Config mapping */ | 207 | /* PCI Config mapping */ |
208 | tsi108_pci_cfg_base = (u32)ioremap(cfg_phys, TSI108_PCI_CFG_SIZE); | 208 | tsi108_pci_cfg_base = (u32)ioremap(cfg_phys, TSI108_PCI_CFG_SIZE); |
209 | tsi108_pci_cfg_phys = cfg_phys; | 209 | tsi108_pci_cfg_phys = cfg_phys; |
210 | DBG("TSI_PCI: %s tsi108_pci_cfg_base=0x%x\n", __FUNCTION__, | 210 | DBG("TSI_PCI: %s tsi108_pci_cfg_base=0x%x\n", __func__, |
211 | tsi108_pci_cfg_base); | 211 | tsi108_pci_cfg_base); |
212 | 212 | ||
213 | /* Fetch host bridge registers address */ | 213 | /* Fetch host bridge registers address */ |
@@ -395,7 +395,7 @@ static int pci_irq_host_xlate(struct irq_host *h, struct device_node *ct, | |||
395 | static int pci_irq_host_map(struct irq_host *h, unsigned int virq, | 395 | static int pci_irq_host_map(struct irq_host *h, unsigned int virq, |
396 | irq_hw_number_t hw) | 396 | irq_hw_number_t hw) |
397 | { unsigned int irq; | 397 | { unsigned int irq; |
398 | DBG("%s(%d, 0x%lx)\n", __FUNCTION__, virq, hw); | 398 | DBG("%s(%d, 0x%lx)\n", __func__, virq, hw); |
399 | if ((virq >= 1) && (virq <= 4)){ | 399 | if ((virq >= 1) && (virq <= 4)){ |
400 | irq = virq + IRQ_PCI_INTAD_BASE - 1; | 400 | irq = virq + IRQ_PCI_INTAD_BASE - 1; |
401 | get_irq_desc(irq)->status |= IRQ_LEVEL; | 401 | get_irq_desc(irq)->status |= IRQ_LEVEL; |
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index a34172ddc468..52c74780f403 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c | |||
@@ -45,7 +45,6 @@ | |||
45 | #ifdef CONFIG_PPC64 | 45 | #ifdef CONFIG_PPC64 |
46 | #include <asm/hvcall.h> | 46 | #include <asm/hvcall.h> |
47 | #include <asm/paca.h> | 47 | #include <asm/paca.h> |
48 | #include <asm/iseries/it_lp_reg_save.h> | ||
49 | #endif | 48 | #endif |
50 | 49 | ||
51 | #include "nonstdio.h" | 50 | #include "nonstdio.h" |
@@ -1244,15 +1243,12 @@ static void get_function_bounds(unsigned long pc, unsigned long *startp, | |||
1244 | 1243 | ||
1245 | static int xmon_depth_to_print = 64; | 1244 | static int xmon_depth_to_print = 64; |
1246 | 1245 | ||
1247 | #ifdef CONFIG_PPC64 | 1246 | #define LRSAVE_OFFSET (STACK_FRAME_LR_SAVE * sizeof(unsigned long)) |
1248 | #define LRSAVE_OFFSET 0x10 | 1247 | #define MARKER_OFFSET (STACK_FRAME_MARKER * sizeof(unsigned long)) |
1249 | #define REG_FRAME_MARKER 0x7265677368657265ul /* "regshere" */ | 1248 | |
1250 | #define MARKER_OFFSET 0x60 | 1249 | #ifdef __powerpc64__ |
1251 | #define REGS_OFFSET 0x70 | 1250 | #define REGS_OFFSET 0x70 |
1252 | #else | 1251 | #else |
1253 | #define LRSAVE_OFFSET 4 | ||
1254 | #define REG_FRAME_MARKER 0x72656773 | ||
1255 | #define MARKER_OFFSET 8 | ||
1256 | #define REGS_OFFSET 16 | 1252 | #define REGS_OFFSET 16 |
1257 | #endif | 1253 | #endif |
1258 | 1254 | ||
@@ -1318,7 +1314,7 @@ static void xmon_show_stack(unsigned long sp, unsigned long lr, | |||
1318 | /* Look for "regshere" marker to see if this is | 1314 | /* Look for "regshere" marker to see if this is |
1319 | an exception frame. */ | 1315 | an exception frame. */ |
1320 | if (mread(sp + MARKER_OFFSET, &marker, sizeof(unsigned long)) | 1316 | if (mread(sp + MARKER_OFFSET, &marker, sizeof(unsigned long)) |
1321 | && marker == REG_FRAME_MARKER) { | 1317 | && marker == STACK_FRAME_REGS_MARKER) { |
1322 | if (mread(sp + REGS_OFFSET, ®s, sizeof(regs)) | 1318 | if (mread(sp + REGS_OFFSET, ®s, sizeof(regs)) |
1323 | != sizeof(regs)) { | 1319 | != sizeof(regs)) { |
1324 | printf("Couldn't read registers at %lx\n", | 1320 | printf("Couldn't read registers at %lx\n", |
@@ -1598,7 +1594,6 @@ void super_regs(void) | |||
1598 | if (firmware_has_feature(FW_FEATURE_ISERIES)) { | 1594 | if (firmware_has_feature(FW_FEATURE_ISERIES)) { |
1599 | struct paca_struct *ptrPaca; | 1595 | struct paca_struct *ptrPaca; |
1600 | struct lppaca *ptrLpPaca; | 1596 | struct lppaca *ptrLpPaca; |
1601 | struct ItLpRegSave *ptrLpRegSave; | ||
1602 | 1597 | ||
1603 | /* Dump out relevant Paca data areas. */ | 1598 | /* Dump out relevant Paca data areas. */ |
1604 | printf("Paca: \n"); | 1599 | printf("Paca: \n"); |
@@ -1611,15 +1606,6 @@ void super_regs(void) | |||
1611 | printf(" Saved Gpr3=%.16lx Saved Gpr4=%.16lx \n", | 1606 | printf(" Saved Gpr3=%.16lx Saved Gpr4=%.16lx \n", |
1612 | ptrLpPaca->saved_gpr3, ptrLpPaca->saved_gpr4); | 1607 | ptrLpPaca->saved_gpr3, ptrLpPaca->saved_gpr4); |
1613 | printf(" Saved Gpr5=%.16lx \n", ptrLpPaca->saved_gpr5); | 1608 | printf(" Saved Gpr5=%.16lx \n", ptrLpPaca->saved_gpr5); |
1614 | |||
1615 | printf(" Local Processor Register Save Area (LpRegSave): \n"); | ||
1616 | ptrLpRegSave = ptrPaca->reg_save_ptr; | ||
1617 | printf(" Saved Sprg0=%.16lx Saved Sprg1=%.16lx \n", | ||
1618 | ptrLpRegSave->xSPRG0, ptrLpRegSave->xSPRG0); | ||
1619 | printf(" Saved Sprg2=%.16lx Saved Sprg3=%.16lx \n", | ||
1620 | ptrLpRegSave->xSPRG2, ptrLpRegSave->xSPRG3); | ||
1621 | printf(" Saved Msr =%.16lx Saved Nia =%.16lx \n", | ||
1622 | ptrLpRegSave->xMSR, ptrLpRegSave->xNIA); | ||
1623 | } | 1609 | } |
1624 | #endif | 1610 | #endif |
1625 | 1611 | ||
diff --git a/arch/ppc/8xx_io/commproc.c b/arch/ppc/8xx_io/commproc.c index 9d656de0f0f1..752443df5ecf 100644 --- a/arch/ppc/8xx_io/commproc.c +++ b/arch/ppc/8xx_io/commproc.c | |||
@@ -43,7 +43,7 @@ | |||
43 | ({ \ | 43 | ({ \ |
44 | u32 offset = offsetof(immap_t, member); \ | 44 | u32 offset = offsetof(immap_t, member); \ |
45 | void *addr = ioremap (IMAP_ADDR + offset, \ | 45 | void *addr = ioremap (IMAP_ADDR + offset, \ |
46 | sizeof( ((immap_t*)0)->member)); \ | 46 | FIELD_SIZEOF(immap_t, member)); \ |
47 | addr; \ | 47 | addr; \ |
48 | }) | 48 | }) |
49 | 49 | ||
diff --git a/arch/ppc/8xx_io/fec.c b/arch/ppc/8xx_io/fec.c index 11b0aa6ca97e..1d4b49ad0d7f 100644 --- a/arch/ppc/8xx_io/fec.c +++ b/arch/ppc/8xx_io/fec.c | |||
@@ -520,7 +520,7 @@ fec_enet_interrupt(int irq, void * dev_id) | |||
520 | #ifdef CONFIG_USE_MDIO | 520 | #ifdef CONFIG_USE_MDIO |
521 | fec_enet_mii(dev); | 521 | fec_enet_mii(dev); |
522 | #else | 522 | #else |
523 | printk("%s[%d] %s: unexpected FEC_ENET_MII event\n", __FILE__,__LINE__,__FUNCTION__); | 523 | printk("%s[%d] %s: unexpected FEC_ENET_MII event\n", __FILE__, __LINE__, __func__); |
524 | #endif /* CONFIG_USE_MDIO */ | 524 | #endif /* CONFIG_USE_MDIO */ |
525 | } | 525 | } |
526 | 526 | ||
@@ -1441,7 +1441,7 @@ irqreturn_t mii_link_interrupt(int irq, void * dev_id) | |||
1441 | fecp->fec_ecntrl = ecntrl; /* restore old settings */ | 1441 | fecp->fec_ecntrl = ecntrl; /* restore old settings */ |
1442 | } | 1442 | } |
1443 | #else | 1443 | #else |
1444 | printk("%s[%d] %s: unexpected Link interrupt\n", __FILE__,__LINE__,__FUNCTION__); | 1444 | printk("%s[%d] %s: unexpected Link interrupt\n", __FILE__, __LINE__, __func__); |
1445 | #endif /* CONFIG_USE_MDIO */ | 1445 | #endif /* CONFIG_USE_MDIO */ |
1446 | 1446 | ||
1447 | #ifndef CONFIG_RPXCLASSIC | 1447 | #ifndef CONFIG_RPXCLASSIC |
diff --git a/arch/ppc/kernel/head.S b/arch/ppc/kernel/head.S index 1b0ec7202dd5..e7e642b95138 100644 --- a/arch/ppc/kernel/head.S +++ b/arch/ppc/kernel/head.S | |||
@@ -701,23 +701,6 @@ load_up_altivec: | |||
701 | b fast_exception_return | 701 | b fast_exception_return |
702 | 702 | ||
703 | /* | 703 | /* |
704 | * AltiVec unavailable trap from kernel - print a message, but let | ||
705 | * the task use AltiVec in the kernel until it returns to user mode. | ||
706 | */ | ||
707 | KernelAltiVec: | ||
708 | lwz r3,_MSR(r1) | ||
709 | oris r3,r3,MSR_VEC@h | ||
710 | stw r3,_MSR(r1) /* enable use of AltiVec after return */ | ||
711 | lis r3,87f@h | ||
712 | ori r3,r3,87f@l | ||
713 | mr r4,r2 /* current */ | ||
714 | lwz r5,_NIP(r1) | ||
715 | bl printk | ||
716 | b ret_from_except | ||
717 | 87: .string "AltiVec used in kernel (task=%p, pc=%x) \n" | ||
718 | .align 4,0 | ||
719 | |||
720 | /* | ||
721 | * giveup_altivec(tsk) | 704 | * giveup_altivec(tsk) |
722 | * Disable AltiVec for the task given as the argument, | 705 | * Disable AltiVec for the task given as the argument, |
723 | * and save the AltiVec registers in its thread_struct. | 706 | * and save the AltiVec registers in its thread_struct. |
diff --git a/arch/ppc/mm/init.c b/arch/ppc/mm/init.c index 7444df3889c5..1a63711081b5 100644 --- a/arch/ppc/mm/init.c +++ b/arch/ppc/mm/init.c | |||
@@ -109,7 +109,6 @@ void show_mem(void) | |||
109 | 109 | ||
110 | printk("Mem-info:\n"); | 110 | printk("Mem-info:\n"); |
111 | show_free_areas(); | 111 | show_free_areas(); |
112 | printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); | ||
113 | i = max_mapnr; | 112 | i = max_mapnr; |
114 | while (i-- > 0) { | 113 | while (i-- > 0) { |
115 | total++; | 114 | total++; |
diff --git a/arch/ppc/platforms/radstone_ppc7d.c b/arch/ppc/platforms/radstone_ppc7d.c index 179b4a99b5b5..f1dee1e87809 100644 --- a/arch/ppc/platforms/radstone_ppc7d.c +++ b/arch/ppc/platforms/radstone_ppc7d.c | |||
@@ -511,7 +511,7 @@ static void __init ppc7d_init_irq(void) | |||
511 | { | 511 | { |
512 | int irq; | 512 | int irq; |
513 | 513 | ||
514 | pr_debug("%s\n", __FUNCTION__); | 514 | pr_debug("%s\n", __func__); |
515 | i8259_init(0, 0); | 515 | i8259_init(0, 0); |
516 | mv64360_init_irq(); | 516 | mv64360_init_irq(); |
517 | 517 | ||
@@ -568,7 +568,7 @@ static int __init ppc7d_map_irq(struct pci_dev *dev, unsigned char idsel, | |||
568 | }; | 568 | }; |
569 | const long min_idsel = 10, max_idsel = 14, irqs_per_slot = 4; | 569 | const long min_idsel = 10, max_idsel = 14, irqs_per_slot = 4; |
570 | 570 | ||
571 | pr_debug("%s: %04x/%04x/%x: idsel=%hx pin=%hu\n", __FUNCTION__, | 571 | pr_debug("%s: %04x/%04x/%x: idsel=%hx pin=%hu\n", __func__, |
572 | dev->vendor, dev->device, PCI_FUNC(dev->devfn), idsel, pin); | 572 | dev->vendor, dev->device, PCI_FUNC(dev->devfn), idsel, pin); |
573 | 573 | ||
574 | return PCI_IRQ_TABLE_LOOKUP; | 574 | return PCI_IRQ_TABLE_LOOKUP; |
@@ -1299,7 +1299,7 @@ static void ppc7d_init2(void) | |||
1299 | u32 data; | 1299 | u32 data; |
1300 | u8 data8; | 1300 | u8 data8; |
1301 | 1301 | ||
1302 | pr_debug("%s: enter\n", __FUNCTION__); | 1302 | pr_debug("%s: enter\n", __func__); |
1303 | 1303 | ||
1304 | /* Wait for debugger? */ | 1304 | /* Wait for debugger? */ |
1305 | if (ppc7d_wait_debugger) { | 1305 | if (ppc7d_wait_debugger) { |
@@ -1332,7 +1332,7 @@ static void ppc7d_init2(void) | |||
1332 | ppc_md.set_rtc_time = ppc7d_set_rtc_time; | 1332 | ppc_md.set_rtc_time = ppc7d_set_rtc_time; |
1333 | ppc_md.get_rtc_time = ppc7d_get_rtc_time; | 1333 | ppc_md.get_rtc_time = ppc7d_get_rtc_time; |
1334 | 1334 | ||
1335 | pr_debug("%s: exit\n", __FUNCTION__); | 1335 | pr_debug("%s: exit\n", __func__); |
1336 | } | 1336 | } |
1337 | 1337 | ||
1338 | /* Called from machine_init(), early, before any of the __init functions | 1338 | /* Called from machine_init(), early, before any of the __init functions |
diff --git a/arch/ppc/syslib/mpc52xx_setup.c b/arch/ppc/syslib/mpc52xx_setup.c index 9f504fc7693e..ab0cf4ced9e5 100644 --- a/arch/ppc/syslib/mpc52xx_setup.c +++ b/arch/ppc/syslib/mpc52xx_setup.c | |||
@@ -279,7 +279,7 @@ int mpc52xx_match_psc_function(int psc_idx, const char *func) | |||
279 | 279 | ||
280 | int mpc52xx_set_psc_clkdiv(int psc_id, int clkdiv) | 280 | int mpc52xx_set_psc_clkdiv(int psc_id, int clkdiv) |
281 | { | 281 | { |
282 | static spinlock_t lock = SPIN_LOCK_UNLOCKED; | 282 | static DEFINE_SPINLOCK(lock); |
283 | struct mpc52xx_cdm __iomem *cdm; | 283 | struct mpc52xx_cdm __iomem *cdm; |
284 | unsigned long flags; | 284 | unsigned long flags; |
285 | u16 mclken_div; | 285 | u16 mclken_div; |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 463d1be32c98..2667a9dee11d 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -16,6 +16,7 @@ config SPARC64 | |||
16 | bool | 16 | bool |
17 | default y | 17 | default y |
18 | select HAVE_IDE | 18 | select HAVE_IDE |
19 | select HAVE_LMB | ||
19 | help | 20 | help |
20 | SPARC is a family of RISC microprocessors designed and marketed by | 21 | SPARC is a family of RISC microprocessors designed and marketed by |
21 | Sun Microsystems, incorporated. This port covers the newer 64-bit | 22 | Sun Microsystems, incorporated. This port covers the newer 64-bit |
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c index 41ca721d2523..ebfe038d859e 100644 --- a/drivers/block/viodasd.c +++ b/drivers/block/viodasd.c | |||
@@ -69,7 +69,7 @@ MODULE_LICENSE("GPL"); | |||
69 | enum { | 69 | enum { |
70 | PARTITION_SHIFT = 3, | 70 | PARTITION_SHIFT = 3, |
71 | MAX_DISKNO = HVMAXARCHITECTEDVIRTUALDISKS, | 71 | MAX_DISKNO = HVMAXARCHITECTEDVIRTUALDISKS, |
72 | MAX_DISK_NAME = sizeof(((struct gendisk *)0)->disk_name) | 72 | MAX_DISK_NAME = FIELD_SIZEOF(struct gendisk, disk_name) |
73 | }; | 73 | }; |
74 | 74 | ||
75 | static DEFINE_SPINLOCK(viodasd_spinlock); | 75 | static DEFINE_SPINLOCK(viodasd_spinlock); |
diff --git a/drivers/char/hvc_beat.c b/drivers/char/hvc_beat.c index e74bb949c289..91cdb35a9204 100644 --- a/drivers/char/hvc_beat.c +++ b/drivers/char/hvc_beat.c | |||
@@ -78,8 +78,8 @@ static int hvc_beat_put_chars(uint32_t vtermno, const char *buf, int cnt) | |||
78 | for (rest = cnt; rest > 0; rest -= nlen) { | 78 | for (rest = cnt; rest > 0; rest -= nlen) { |
79 | nlen = (rest > 16) ? 16 : rest; | 79 | nlen = (rest > 16) ? 16 : rest; |
80 | memcpy(kb, buf, nlen); | 80 | memcpy(kb, buf, nlen); |
81 | beat_put_term_char(vtermno, rest, kb[0], kb[1]); | 81 | beat_put_term_char(vtermno, nlen, kb[0], kb[1]); |
82 | rest -= nlen; | 82 | buf += nlen; |
83 | } | 83 | } |
84 | return cnt; | 84 | return cnt; |
85 | } | 85 | } |
diff --git a/drivers/char/xilinx_hwicap/buffer_icap.c b/drivers/char/xilinx_hwicap/buffer_icap.c index f577daedb630..aa7f7962a9a0 100644 --- a/drivers/char/xilinx_hwicap/buffer_icap.c +++ b/drivers/char/xilinx_hwicap/buffer_icap.c | |||
@@ -74,7 +74,7 @@ | |||
74 | 74 | ||
75 | /** | 75 | /** |
76 | * buffer_icap_get_status - Get the contents of the status register. | 76 | * buffer_icap_get_status - Get the contents of the status register. |
77 | * @base_address: is the base address of the device | 77 | * @drvdata: a pointer to the drvdata. |
78 | * | 78 | * |
79 | * The status register contains the ICAP status and the done bit. | 79 | * The status register contains the ICAP status and the done bit. |
80 | * | 80 | * |
@@ -88,9 +88,9 @@ | |||
88 | * D1 - Always 1 | 88 | * D1 - Always 1 |
89 | * D0 - Done bit | 89 | * D0 - Done bit |
90 | **/ | 90 | **/ |
91 | static inline u32 buffer_icap_get_status(void __iomem *base_address) | 91 | u32 buffer_icap_get_status(struct hwicap_drvdata *drvdata) |
92 | { | 92 | { |
93 | return in_be32(base_address + XHI_STATUS_REG_OFFSET); | 93 | return in_be32(drvdata->base_address + XHI_STATUS_REG_OFFSET); |
94 | } | 94 | } |
95 | 95 | ||
96 | /** | 96 | /** |
@@ -117,20 +117,8 @@ static inline u32 buffer_icap_get_bram(void __iomem *base_address, | |||
117 | **/ | 117 | **/ |
118 | static inline bool buffer_icap_busy(void __iomem *base_address) | 118 | static inline bool buffer_icap_busy(void __iomem *base_address) |
119 | { | 119 | { |
120 | return (buffer_icap_get_status(base_address) & 1) == XHI_NOT_FINISHED; | 120 | u32 status = in_be32(base_address + XHI_STATUS_REG_OFFSET); |
121 | } | 121 | return (status & 1) == XHI_NOT_FINISHED; |
122 | |||
123 | /** | ||
124 | * buffer_icap_busy - Return true if the icap device is not busy | ||
125 | * @base_address: is the base address of the device | ||
126 | * | ||
127 | * The queries the low order bit of the status register, which | ||
128 | * indicates whether the current configuration or readback operation | ||
129 | * has completed. | ||
130 | **/ | ||
131 | static inline bool buffer_icap_done(void __iomem *base_address) | ||
132 | { | ||
133 | return (buffer_icap_get_status(base_address) & 1) == XHI_FINISHED; | ||
134 | } | 122 | } |
135 | 123 | ||
136 | /** | 124 | /** |
diff --git a/drivers/char/xilinx_hwicap/buffer_icap.h b/drivers/char/xilinx_hwicap/buffer_icap.h index 03184959fa00..c5b1840906b2 100644 --- a/drivers/char/xilinx_hwicap/buffer_icap.h +++ b/drivers/char/xilinx_hwicap/buffer_icap.h | |||
@@ -44,8 +44,6 @@ | |||
44 | #include <asm/io.h> | 44 | #include <asm/io.h> |
45 | #include "xilinx_hwicap.h" | 45 | #include "xilinx_hwicap.h" |
46 | 46 | ||
47 | void buffer_icap_reset(struct hwicap_drvdata *drvdata); | ||
48 | |||
49 | /* Loads a partial bitstream from system memory. */ | 47 | /* Loads a partial bitstream from system memory. */ |
50 | int buffer_icap_set_configuration(struct hwicap_drvdata *drvdata, u32 *data, | 48 | int buffer_icap_set_configuration(struct hwicap_drvdata *drvdata, u32 *data, |
51 | u32 Size); | 49 | u32 Size); |
@@ -54,4 +52,7 @@ int buffer_icap_set_configuration(struct hwicap_drvdata *drvdata, u32 *data, | |||
54 | int buffer_icap_get_configuration(struct hwicap_drvdata *drvdata, u32 *data, | 52 | int buffer_icap_get_configuration(struct hwicap_drvdata *drvdata, u32 *data, |
55 | u32 Size); | 53 | u32 Size); |
56 | 54 | ||
55 | u32 buffer_icap_get_status(struct hwicap_drvdata *drvdata); | ||
56 | void buffer_icap_reset(struct hwicap_drvdata *drvdata); | ||
57 | |||
57 | #endif | 58 | #endif |
diff --git a/drivers/char/xilinx_hwicap/fifo_icap.c b/drivers/char/xilinx_hwicap/fifo_icap.c index 6f45dbd47125..776b50528478 100644 --- a/drivers/char/xilinx_hwicap/fifo_icap.c +++ b/drivers/char/xilinx_hwicap/fifo_icap.c | |||
@@ -78,13 +78,6 @@ | |||
78 | #define XHI_CR_READ_MASK 0x00000002 /* Read from ICAP to FIFO */ | 78 | #define XHI_CR_READ_MASK 0x00000002 /* Read from ICAP to FIFO */ |
79 | #define XHI_CR_WRITE_MASK 0x00000001 /* Write from FIFO to ICAP */ | 79 | #define XHI_CR_WRITE_MASK 0x00000001 /* Write from FIFO to ICAP */ |
80 | 80 | ||
81 | /* Status Register (SR) */ | ||
82 | #define XHI_SR_CFGERR_N_MASK 0x00000100 /* Config Error Mask */ | ||
83 | #define XHI_SR_DALIGN_MASK 0x00000080 /* Data Alignment Mask */ | ||
84 | #define XHI_SR_RIP_MASK 0x00000040 /* Read back Mask */ | ||
85 | #define XHI_SR_IN_ABORT_N_MASK 0x00000020 /* Select Map Abort Mask */ | ||
86 | #define XHI_SR_DONE_MASK 0x00000001 /* Done bit Mask */ | ||
87 | |||
88 | 81 | ||
89 | #define XHI_WFO_MAX_VACANCY 1024 /* Max Write FIFO Vacancy, in words */ | 82 | #define XHI_WFO_MAX_VACANCY 1024 /* Max Write FIFO Vacancy, in words */ |
90 | #define XHI_RFO_MAX_OCCUPANCY 256 /* Max Read FIFO Occupancy, in words */ | 83 | #define XHI_RFO_MAX_OCCUPANCY 256 /* Max Read FIFO Occupancy, in words */ |
@@ -152,13 +145,35 @@ static inline void fifo_icap_start_readback(struct hwicap_drvdata *drvdata) | |||
152 | } | 145 | } |
153 | 146 | ||
154 | /** | 147 | /** |
148 | * fifo_icap_get_status - Get the contents of the status register. | ||
149 | * @drvdata: a pointer to the drvdata. | ||
150 | * | ||
151 | * The status register contains the ICAP status and the done bit. | ||
152 | * | ||
153 | * D8 - cfgerr | ||
154 | * D7 - dalign | ||
155 | * D6 - rip | ||
156 | * D5 - in_abort_l | ||
157 | * D4 - Always 1 | ||
158 | * D3 - Always 1 | ||
159 | * D2 - Always 1 | ||
160 | * D1 - Always 1 | ||
161 | * D0 - Done bit | ||
162 | **/ | ||
163 | u32 fifo_icap_get_status(struct hwicap_drvdata *drvdata) | ||
164 | { | ||
165 | u32 status = in_be32(drvdata->base_address + XHI_SR_OFFSET); | ||
166 | dev_dbg(drvdata->dev, "Getting status = %x\n", status); | ||
167 | return status; | ||
168 | } | ||
169 | |||
170 | /** | ||
155 | * fifo_icap_busy - Return true if the ICAP is still processing a transaction. | 171 | * fifo_icap_busy - Return true if the ICAP is still processing a transaction. |
156 | * @drvdata: a pointer to the drvdata. | 172 | * @drvdata: a pointer to the drvdata. |
157 | **/ | 173 | **/ |
158 | static inline u32 fifo_icap_busy(struct hwicap_drvdata *drvdata) | 174 | static inline u32 fifo_icap_busy(struct hwicap_drvdata *drvdata) |
159 | { | 175 | { |
160 | u32 status = in_be32(drvdata->base_address + XHI_SR_OFFSET); | 176 | u32 status = in_be32(drvdata->base_address + XHI_SR_OFFSET); |
161 | dev_dbg(drvdata->dev, "Getting status = %x\n", status); | ||
162 | return (status & XHI_SR_DONE_MASK) ? 0 : 1; | 177 | return (status & XHI_SR_DONE_MASK) ? 0 : 1; |
163 | } | 178 | } |
164 | 179 | ||
diff --git a/drivers/char/xilinx_hwicap/fifo_icap.h b/drivers/char/xilinx_hwicap/fifo_icap.h index 4d3068dd0405..ffabd3ba2bd8 100644 --- a/drivers/char/xilinx_hwicap/fifo_icap.h +++ b/drivers/char/xilinx_hwicap/fifo_icap.h | |||
@@ -56,6 +56,7 @@ int fifo_icap_set_configuration( | |||
56 | u32 *FrameBuffer, | 56 | u32 *FrameBuffer, |
57 | u32 NumWords); | 57 | u32 NumWords); |
58 | 58 | ||
59 | u32 fifo_icap_get_status(struct hwicap_drvdata *drvdata); | ||
59 | void fifo_icap_reset(struct hwicap_drvdata *drvdata); | 60 | void fifo_icap_reset(struct hwicap_drvdata *drvdata); |
60 | void fifo_icap_flush_fifo(struct hwicap_drvdata *drvdata); | 61 | void fifo_icap_flush_fifo(struct hwicap_drvdata *drvdata); |
61 | 62 | ||
diff --git a/drivers/char/xilinx_hwicap/xilinx_hwicap.c b/drivers/char/xilinx_hwicap/xilinx_hwicap.c index 2284fa2a5a57..016f90567a52 100644 --- a/drivers/char/xilinx_hwicap/xilinx_hwicap.c +++ b/drivers/char/xilinx_hwicap/xilinx_hwicap.c | |||
@@ -36,7 +36,7 @@ | |||
36 | *****************************************************************************/ | 36 | *****************************************************************************/ |
37 | 37 | ||
38 | /* | 38 | /* |
39 | * This is the code behind /dev/xilinx_icap -- it allows a user-space | 39 | * This is the code behind /dev/icap* -- it allows a user-space |
40 | * application to use the Xilinx ICAP subsystem. | 40 | * application to use the Xilinx ICAP subsystem. |
41 | * | 41 | * |
42 | * The following operations are possible: | 42 | * The following operations are possible: |
@@ -67,7 +67,7 @@ | |||
67 | * user-space application code that uses this device. The simplest | 67 | * user-space application code that uses this device. The simplest |
68 | * way to use this interface is simply: | 68 | * way to use this interface is simply: |
69 | * | 69 | * |
70 | * cp foo.bit /dev/xilinx_icap | 70 | * cp foo.bit /dev/icap0 |
71 | * | 71 | * |
72 | * Note that unless foo.bit is an appropriately constructed partial | 72 | * Note that unless foo.bit is an appropriately constructed partial |
73 | * bitstream, this has a high likelyhood of overwriting the design | 73 | * bitstream, this has a high likelyhood of overwriting the design |
@@ -105,18 +105,14 @@ | |||
105 | #include "buffer_icap.h" | 105 | #include "buffer_icap.h" |
106 | #include "fifo_icap.h" | 106 | #include "fifo_icap.h" |
107 | 107 | ||
108 | #define DRIVER_NAME "xilinx_icap" | 108 | #define DRIVER_NAME "icap" |
109 | 109 | ||
110 | #define HWICAP_REGS (0x10000) | 110 | #define HWICAP_REGS (0x10000) |
111 | 111 | ||
112 | /* dynamically allocate device number */ | 112 | #define XHWICAP_MAJOR 259 |
113 | static int xhwicap_major; | 113 | #define XHWICAP_MINOR 0 |
114 | static int xhwicap_minor; | ||
115 | #define HWICAP_DEVICES 1 | 114 | #define HWICAP_DEVICES 1 |
116 | 115 | ||
117 | module_param(xhwicap_major, int, S_IRUGO); | ||
118 | module_param(xhwicap_minor, int, S_IRUGO); | ||
119 | |||
120 | /* An array, which is set to true when the device is registered. */ | 116 | /* An array, which is set to true when the device is registered. */ |
121 | static bool probed_devices[HWICAP_DEVICES]; | 117 | static bool probed_devices[HWICAP_DEVICES]; |
122 | static struct mutex icap_sem; | 118 | static struct mutex icap_sem; |
@@ -250,8 +246,26 @@ static int hwicap_get_configuration_register(struct hwicap_drvdata *drvdata, | |||
250 | * Create the data to be written to the ICAP. | 246 | * Create the data to be written to the ICAP. |
251 | */ | 247 | */ |
252 | buffer[index++] = XHI_DUMMY_PACKET; | 248 | buffer[index++] = XHI_DUMMY_PACKET; |
249 | buffer[index++] = XHI_NOOP_PACKET; | ||
253 | buffer[index++] = XHI_SYNC_PACKET; | 250 | buffer[index++] = XHI_SYNC_PACKET; |
254 | buffer[index++] = XHI_NOOP_PACKET; | 251 | buffer[index++] = XHI_NOOP_PACKET; |
252 | buffer[index++] = XHI_NOOP_PACKET; | ||
253 | |||
254 | /* | ||
255 | * Write the data to the FIFO and initiate the transfer of data present | ||
256 | * in the FIFO to the ICAP device. | ||
257 | */ | ||
258 | status = drvdata->config->set_configuration(drvdata, | ||
259 | &buffer[0], index); | ||
260 | if (status) | ||
261 | return status; | ||
262 | |||
263 | /* If the syncword was not found, then we need to start over. */ | ||
264 | status = drvdata->config->get_status(drvdata); | ||
265 | if ((status & XHI_SR_DALIGN_MASK) != XHI_SR_DALIGN_MASK) | ||
266 | return -EIO; | ||
267 | |||
268 | index = 0; | ||
255 | buffer[index++] = hwicap_type_1_read(reg) | 1; | 269 | buffer[index++] = hwicap_type_1_read(reg) | 1; |
256 | buffer[index++] = XHI_NOOP_PACKET; | 270 | buffer[index++] = XHI_NOOP_PACKET; |
257 | buffer[index++] = XHI_NOOP_PACKET; | 271 | buffer[index++] = XHI_NOOP_PACKET; |
@@ -587,7 +601,7 @@ static int __devinit hwicap_setup(struct device *dev, int id, | |||
587 | probed_devices[id] = 1; | 601 | probed_devices[id] = 1; |
588 | mutex_unlock(&icap_sem); | 602 | mutex_unlock(&icap_sem); |
589 | 603 | ||
590 | devt = MKDEV(xhwicap_major, xhwicap_minor + id); | 604 | devt = MKDEV(XHWICAP_MAJOR, XHWICAP_MINOR + id); |
591 | 605 | ||
592 | drvdata = kzalloc(sizeof(struct hwicap_drvdata), GFP_KERNEL); | 606 | drvdata = kzalloc(sizeof(struct hwicap_drvdata), GFP_KERNEL); |
593 | if (!drvdata) { | 607 | if (!drvdata) { |
@@ -664,12 +678,14 @@ static int __devinit hwicap_setup(struct device *dev, int id, | |||
664 | static struct hwicap_driver_config buffer_icap_config = { | 678 | static struct hwicap_driver_config buffer_icap_config = { |
665 | .get_configuration = buffer_icap_get_configuration, | 679 | .get_configuration = buffer_icap_get_configuration, |
666 | .set_configuration = buffer_icap_set_configuration, | 680 | .set_configuration = buffer_icap_set_configuration, |
681 | .get_status = buffer_icap_get_status, | ||
667 | .reset = buffer_icap_reset, | 682 | .reset = buffer_icap_reset, |
668 | }; | 683 | }; |
669 | 684 | ||
670 | static struct hwicap_driver_config fifo_icap_config = { | 685 | static struct hwicap_driver_config fifo_icap_config = { |
671 | .get_configuration = fifo_icap_get_configuration, | 686 | .get_configuration = fifo_icap_get_configuration, |
672 | .set_configuration = fifo_icap_set_configuration, | 687 | .set_configuration = fifo_icap_set_configuration, |
688 | .get_status = fifo_icap_get_status, | ||
673 | .reset = fifo_icap_reset, | 689 | .reset = fifo_icap_reset, |
674 | }; | 690 | }; |
675 | 691 | ||
@@ -690,7 +706,7 @@ static int __devexit hwicap_remove(struct device *dev) | |||
690 | dev_set_drvdata(dev, NULL); | 706 | dev_set_drvdata(dev, NULL); |
691 | 707 | ||
692 | mutex_lock(&icap_sem); | 708 | mutex_lock(&icap_sem); |
693 | probed_devices[MINOR(dev->devt)-xhwicap_minor] = 0; | 709 | probed_devices[MINOR(dev->devt)-XHWICAP_MINOR] = 0; |
694 | mutex_unlock(&icap_sem); | 710 | mutex_unlock(&icap_sem); |
695 | return 0; /* success */ | 711 | return 0; /* success */ |
696 | } | 712 | } |
@@ -830,23 +846,12 @@ static int __init hwicap_module_init(void) | |||
830 | icap_class = class_create(THIS_MODULE, "xilinx_config"); | 846 | icap_class = class_create(THIS_MODULE, "xilinx_config"); |
831 | mutex_init(&icap_sem); | 847 | mutex_init(&icap_sem); |
832 | 848 | ||
833 | if (xhwicap_major) { | 849 | devt = MKDEV(XHWICAP_MAJOR, XHWICAP_MINOR); |
834 | devt = MKDEV(xhwicap_major, xhwicap_minor); | 850 | retval = register_chrdev_region(devt, |
835 | retval = register_chrdev_region( | 851 | HWICAP_DEVICES, |
836 | devt, | 852 | DRIVER_NAME); |
837 | HWICAP_DEVICES, | 853 | if (retval < 0) |
838 | DRIVER_NAME); | 854 | return retval; |
839 | if (retval < 0) | ||
840 | return retval; | ||
841 | } else { | ||
842 | retval = alloc_chrdev_region(&devt, | ||
843 | xhwicap_minor, | ||
844 | HWICAP_DEVICES, | ||
845 | DRIVER_NAME); | ||
846 | if (retval < 0) | ||
847 | return retval; | ||
848 | xhwicap_major = MAJOR(devt); | ||
849 | } | ||
850 | 855 | ||
851 | retval = platform_driver_register(&hwicap_platform_driver); | 856 | retval = platform_driver_register(&hwicap_platform_driver); |
852 | 857 | ||
@@ -871,7 +876,7 @@ static int __init hwicap_module_init(void) | |||
871 | 876 | ||
872 | static void __exit hwicap_module_cleanup(void) | 877 | static void __exit hwicap_module_cleanup(void) |
873 | { | 878 | { |
874 | dev_t devt = MKDEV(xhwicap_major, xhwicap_minor); | 879 | dev_t devt = MKDEV(XHWICAP_MAJOR, XHWICAP_MINOR); |
875 | 880 | ||
876 | class_destroy(icap_class); | 881 | class_destroy(icap_class); |
877 | 882 | ||
diff --git a/drivers/char/xilinx_hwicap/xilinx_hwicap.h b/drivers/char/xilinx_hwicap/xilinx_hwicap.h index 405fee7e189b..1f9c8b082dbe 100644 --- a/drivers/char/xilinx_hwicap/xilinx_hwicap.h +++ b/drivers/char/xilinx_hwicap/xilinx_hwicap.h | |||
@@ -65,10 +65,27 @@ struct hwicap_drvdata { | |||
65 | }; | 65 | }; |
66 | 66 | ||
67 | struct hwicap_driver_config { | 67 | struct hwicap_driver_config { |
68 | /* Read configuration data given by size into the data buffer. | ||
69 | Return 0 if successful. */ | ||
68 | int (*get_configuration)(struct hwicap_drvdata *drvdata, u32 *data, | 70 | int (*get_configuration)(struct hwicap_drvdata *drvdata, u32 *data, |
69 | u32 size); | 71 | u32 size); |
72 | /* Write configuration data given by size from the data buffer. | ||
73 | Return 0 if successful. */ | ||
70 | int (*set_configuration)(struct hwicap_drvdata *drvdata, u32 *data, | 74 | int (*set_configuration)(struct hwicap_drvdata *drvdata, u32 *data, |
71 | u32 size); | 75 | u32 size); |
76 | /* Get the status register, bit pattern given by: | ||
77 | * D8 - 0 = configuration error | ||
78 | * D7 - 1 = alignment found | ||
79 | * D6 - 1 = readback in progress | ||
80 | * D5 - 0 = abort in progress | ||
81 | * D4 - Always 1 | ||
82 | * D3 - Always 1 | ||
83 | * D2 - Always 1 | ||
84 | * D1 - Always 1 | ||
85 | * D0 - 1 = operation completed | ||
86 | */ | ||
87 | u32 (*get_status)(struct hwicap_drvdata *drvdata); | ||
88 | /* Reset the hw */ | ||
72 | void (*reset)(struct hwicap_drvdata *drvdata); | 89 | void (*reset)(struct hwicap_drvdata *drvdata); |
73 | }; | 90 | }; |
74 | 91 | ||
@@ -163,6 +180,13 @@ struct config_registers { | |||
163 | /* Constant to use for CRC check when CRC has been disabled */ | 180 | /* Constant to use for CRC check when CRC has been disabled */ |
164 | #define XHI_DISABLED_AUTO_CRC 0x0000DEFCUL | 181 | #define XHI_DISABLED_AUTO_CRC 0x0000DEFCUL |
165 | 182 | ||
183 | /* Meanings of the bits returned by get_status */ | ||
184 | #define XHI_SR_CFGERR_N_MASK 0x00000100 /* Config Error Mask */ | ||
185 | #define XHI_SR_DALIGN_MASK 0x00000080 /* Data Alignment Mask */ | ||
186 | #define XHI_SR_RIP_MASK 0x00000040 /* Read back Mask */ | ||
187 | #define XHI_SR_IN_ABORT_N_MASK 0x00000020 /* Select Map Abort Mask */ | ||
188 | #define XHI_SR_DONE_MASK 0x00000001 /* Done bit Mask */ | ||
189 | |||
166 | /** | 190 | /** |
167 | * hwicap_type_1_read - Generates a Type 1 read packet header. | 191 | * hwicap_type_1_read - Generates a Type 1 read packet header. |
168 | * @reg: is the address of the register to be read back. | 192 | * @reg: is the address of the register to be read back. |
diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c index b025dfe0b274..378b7aa63812 100644 --- a/drivers/mtd/nand/fsl_elbc_nand.c +++ b/drivers/mtd/nand/fsl_elbc_nand.c | |||
@@ -36,207 +36,12 @@ | |||
36 | #include <linux/mtd/partitions.h> | 36 | #include <linux/mtd/partitions.h> |
37 | 37 | ||
38 | #include <asm/io.h> | 38 | #include <asm/io.h> |
39 | 39 | #include <asm/fsl_lbc.h> | |
40 | 40 | ||
41 | #define MAX_BANKS 8 | 41 | #define MAX_BANKS 8 |
42 | #define ERR_BYTE 0xFF /* Value returned for read bytes when read failed */ | 42 | #define ERR_BYTE 0xFF /* Value returned for read bytes when read failed */ |
43 | #define FCM_TIMEOUT_MSECS 500 /* Maximum number of mSecs to wait for FCM */ | 43 | #define FCM_TIMEOUT_MSECS 500 /* Maximum number of mSecs to wait for FCM */ |
44 | 44 | ||
45 | struct elbc_bank { | ||
46 | __be32 br; /**< Base Register */ | ||
47 | #define BR_BA 0xFFFF8000 | ||
48 | #define BR_BA_SHIFT 15 | ||
49 | #define BR_PS 0x00001800 | ||
50 | #define BR_PS_SHIFT 11 | ||
51 | #define BR_PS_8 0x00000800 /* Port Size 8 bit */ | ||
52 | #define BR_PS_16 0x00001000 /* Port Size 16 bit */ | ||
53 | #define BR_PS_32 0x00001800 /* Port Size 32 bit */ | ||
54 | #define BR_DECC 0x00000600 | ||
55 | #define BR_DECC_SHIFT 9 | ||
56 | #define BR_DECC_OFF 0x00000000 /* HW ECC checking and generation off */ | ||
57 | #define BR_DECC_CHK 0x00000200 /* HW ECC checking on, generation off */ | ||
58 | #define BR_DECC_CHK_GEN 0x00000400 /* HW ECC checking and generation on */ | ||
59 | #define BR_WP 0x00000100 | ||
60 | #define BR_WP_SHIFT 8 | ||
61 | #define BR_MSEL 0x000000E0 | ||
62 | #define BR_MSEL_SHIFT 5 | ||
63 | #define BR_MS_GPCM 0x00000000 /* GPCM */ | ||
64 | #define BR_MS_FCM 0x00000020 /* FCM */ | ||
65 | #define BR_MS_SDRAM 0x00000060 /* SDRAM */ | ||
66 | #define BR_MS_UPMA 0x00000080 /* UPMA */ | ||
67 | #define BR_MS_UPMB 0x000000A0 /* UPMB */ | ||
68 | #define BR_MS_UPMC 0x000000C0 /* UPMC */ | ||
69 | #define BR_V 0x00000001 | ||
70 | #define BR_V_SHIFT 0 | ||
71 | #define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_V) | ||
72 | |||
73 | __be32 or; /**< Base Register */ | ||
74 | #define OR0 0x5004 | ||
75 | #define OR1 0x500C | ||
76 | #define OR2 0x5014 | ||
77 | #define OR3 0x501C | ||
78 | #define OR4 0x5024 | ||
79 | #define OR5 0x502C | ||
80 | #define OR6 0x5034 | ||
81 | #define OR7 0x503C | ||
82 | |||
83 | #define OR_FCM_AM 0xFFFF8000 | ||
84 | #define OR_FCM_AM_SHIFT 15 | ||
85 | #define OR_FCM_BCTLD 0x00001000 | ||
86 | #define OR_FCM_BCTLD_SHIFT 12 | ||
87 | #define OR_FCM_PGS 0x00000400 | ||
88 | #define OR_FCM_PGS_SHIFT 10 | ||
89 | #define OR_FCM_CSCT 0x00000200 | ||
90 | #define OR_FCM_CSCT_SHIFT 9 | ||
91 | #define OR_FCM_CST 0x00000100 | ||
92 | #define OR_FCM_CST_SHIFT 8 | ||
93 | #define OR_FCM_CHT 0x00000080 | ||
94 | #define OR_FCM_CHT_SHIFT 7 | ||
95 | #define OR_FCM_SCY 0x00000070 | ||
96 | #define OR_FCM_SCY_SHIFT 4 | ||
97 | #define OR_FCM_SCY_1 0x00000010 | ||
98 | #define OR_FCM_SCY_2 0x00000020 | ||
99 | #define OR_FCM_SCY_3 0x00000030 | ||
100 | #define OR_FCM_SCY_4 0x00000040 | ||
101 | #define OR_FCM_SCY_5 0x00000050 | ||
102 | #define OR_FCM_SCY_6 0x00000060 | ||
103 | #define OR_FCM_SCY_7 0x00000070 | ||
104 | #define OR_FCM_RST 0x00000008 | ||
105 | #define OR_FCM_RST_SHIFT 3 | ||
106 | #define OR_FCM_TRLX 0x00000004 | ||
107 | #define OR_FCM_TRLX_SHIFT 2 | ||
108 | #define OR_FCM_EHTR 0x00000002 | ||
109 | #define OR_FCM_EHTR_SHIFT 1 | ||
110 | }; | ||
111 | |||
112 | struct elbc_regs { | ||
113 | struct elbc_bank bank[8]; | ||
114 | u8 res0[0x28]; | ||
115 | __be32 mar; /**< UPM Address Register */ | ||
116 | u8 res1[0x4]; | ||
117 | __be32 mamr; /**< UPMA Mode Register */ | ||
118 | __be32 mbmr; /**< UPMB Mode Register */ | ||
119 | __be32 mcmr; /**< UPMC Mode Register */ | ||
120 | u8 res2[0x8]; | ||
121 | __be32 mrtpr; /**< Memory Refresh Timer Prescaler Register */ | ||
122 | __be32 mdr; /**< UPM Data Register */ | ||
123 | u8 res3[0x4]; | ||
124 | __be32 lsor; /**< Special Operation Initiation Register */ | ||
125 | __be32 lsdmr; /**< SDRAM Mode Register */ | ||
126 | u8 res4[0x8]; | ||
127 | __be32 lurt; /**< UPM Refresh Timer */ | ||
128 | __be32 lsrt; /**< SDRAM Refresh Timer */ | ||
129 | u8 res5[0x8]; | ||
130 | __be32 ltesr; /**< Transfer Error Status Register */ | ||
131 | #define LTESR_BM 0x80000000 | ||
132 | #define LTESR_FCT 0x40000000 | ||
133 | #define LTESR_PAR 0x20000000 | ||
134 | #define LTESR_WP 0x04000000 | ||
135 | #define LTESR_ATMW 0x00800000 | ||
136 | #define LTESR_ATMR 0x00400000 | ||
137 | #define LTESR_CS 0x00080000 | ||
138 | #define LTESR_CC 0x00000001 | ||
139 | #define LTESR_NAND_MASK (LTESR_FCT | LTESR_PAR | LTESR_CC) | ||
140 | __be32 ltedr; /**< Transfer Error Disable Register */ | ||
141 | __be32 lteir; /**< Transfer Error Interrupt Register */ | ||
142 | __be32 lteatr; /**< Transfer Error Attributes Register */ | ||
143 | __be32 ltear; /**< Transfer Error Address Register */ | ||
144 | u8 res6[0xC]; | ||
145 | __be32 lbcr; /**< Configuration Register */ | ||
146 | #define LBCR_LDIS 0x80000000 | ||
147 | #define LBCR_LDIS_SHIFT 31 | ||
148 | #define LBCR_BCTLC 0x00C00000 | ||
149 | #define LBCR_BCTLC_SHIFT 22 | ||
150 | #define LBCR_AHD 0x00200000 | ||
151 | #define LBCR_LPBSE 0x00020000 | ||
152 | #define LBCR_LPBSE_SHIFT 17 | ||
153 | #define LBCR_EPAR 0x00010000 | ||
154 | #define LBCR_EPAR_SHIFT 16 | ||
155 | #define LBCR_BMT 0x0000FF00 | ||
156 | #define LBCR_BMT_SHIFT 8 | ||
157 | #define LBCR_INIT 0x00040000 | ||
158 | __be32 lcrr; /**< Clock Ratio Register */ | ||
159 | #define LCRR_DBYP 0x80000000 | ||
160 | #define LCRR_DBYP_SHIFT 31 | ||
161 | #define LCRR_BUFCMDC 0x30000000 | ||
162 | #define LCRR_BUFCMDC_SHIFT 28 | ||
163 | #define LCRR_ECL 0x03000000 | ||
164 | #define LCRR_ECL_SHIFT 24 | ||
165 | #define LCRR_EADC 0x00030000 | ||
166 | #define LCRR_EADC_SHIFT 16 | ||
167 | #define LCRR_CLKDIV 0x0000000F | ||
168 | #define LCRR_CLKDIV_SHIFT 0 | ||
169 | u8 res7[0x8]; | ||
170 | __be32 fmr; /**< Flash Mode Register */ | ||
171 | #define FMR_CWTO 0x0000F000 | ||
172 | #define FMR_CWTO_SHIFT 12 | ||
173 | #define FMR_BOOT 0x00000800 | ||
174 | #define FMR_ECCM 0x00000100 | ||
175 | #define FMR_AL 0x00000030 | ||
176 | #define FMR_AL_SHIFT 4 | ||
177 | #define FMR_OP 0x00000003 | ||
178 | #define FMR_OP_SHIFT 0 | ||
179 | __be32 fir; /**< Flash Instruction Register */ | ||
180 | #define FIR_OP0 0xF0000000 | ||
181 | #define FIR_OP0_SHIFT 28 | ||
182 | #define FIR_OP1 0x0F000000 | ||
183 | #define FIR_OP1_SHIFT 24 | ||
184 | #define FIR_OP2 0x00F00000 | ||
185 | #define FIR_OP2_SHIFT 20 | ||
186 | #define FIR_OP3 0x000F0000 | ||
187 | #define FIR_OP3_SHIFT 16 | ||
188 | #define FIR_OP4 0x0000F000 | ||
189 | #define FIR_OP4_SHIFT 12 | ||
190 | #define FIR_OP5 0x00000F00 | ||
191 | #define FIR_OP5_SHIFT 8 | ||
192 | #define FIR_OP6 0x000000F0 | ||
193 | #define FIR_OP6_SHIFT 4 | ||
194 | #define FIR_OP7 0x0000000F | ||
195 | #define FIR_OP7_SHIFT 0 | ||
196 | #define FIR_OP_NOP 0x0 /* No operation and end of sequence */ | ||
197 | #define FIR_OP_CA 0x1 /* Issue current column address */ | ||
198 | #define FIR_OP_PA 0x2 /* Issue current block+page address */ | ||
199 | #define FIR_OP_UA 0x3 /* Issue user defined address */ | ||
200 | #define FIR_OP_CM0 0x4 /* Issue command from FCR[CMD0] */ | ||
201 | #define FIR_OP_CM1 0x5 /* Issue command from FCR[CMD1] */ | ||
202 | #define FIR_OP_CM2 0x6 /* Issue command from FCR[CMD2] */ | ||
203 | #define FIR_OP_CM3 0x7 /* Issue command from FCR[CMD3] */ | ||
204 | #define FIR_OP_WB 0x8 /* Write FBCR bytes from FCM buffer */ | ||
205 | #define FIR_OP_WS 0x9 /* Write 1 or 2 bytes from MDR[AS] */ | ||
206 | #define FIR_OP_RB 0xA /* Read FBCR bytes to FCM buffer */ | ||
207 | #define FIR_OP_RS 0xB /* Read 1 or 2 bytes to MDR[AS] */ | ||
208 | #define FIR_OP_CW0 0xC /* Wait then issue FCR[CMD0] */ | ||
209 | #define FIR_OP_CW1 0xD /* Wait then issue FCR[CMD1] */ | ||
210 | #define FIR_OP_RBW 0xE /* Wait then read FBCR bytes */ | ||
211 | #define FIR_OP_RSW 0xE /* Wait then read 1 or 2 bytes */ | ||
212 | __be32 fcr; /**< Flash Command Register */ | ||
213 | #define FCR_CMD0 0xFF000000 | ||
214 | #define FCR_CMD0_SHIFT 24 | ||
215 | #define FCR_CMD1 0x00FF0000 | ||
216 | #define FCR_CMD1_SHIFT 16 | ||
217 | #define FCR_CMD2 0x0000FF00 | ||
218 | #define FCR_CMD2_SHIFT 8 | ||
219 | #define FCR_CMD3 0x000000FF | ||
220 | #define FCR_CMD3_SHIFT 0 | ||
221 | __be32 fbar; /**< Flash Block Address Register */ | ||
222 | #define FBAR_BLK 0x00FFFFFF | ||
223 | __be32 fpar; /**< Flash Page Address Register */ | ||
224 | #define FPAR_SP_PI 0x00007C00 | ||
225 | #define FPAR_SP_PI_SHIFT 10 | ||
226 | #define FPAR_SP_MS 0x00000200 | ||
227 | #define FPAR_SP_CI 0x000001FF | ||
228 | #define FPAR_SP_CI_SHIFT 0 | ||
229 | #define FPAR_LP_PI 0x0003F000 | ||
230 | #define FPAR_LP_PI_SHIFT 12 | ||
231 | #define FPAR_LP_MS 0x00000800 | ||
232 | #define FPAR_LP_CI 0x000007FF | ||
233 | #define FPAR_LP_CI_SHIFT 0 | ||
234 | __be32 fbcr; /**< Flash Byte Count Register */ | ||
235 | #define FBCR_BC 0x00000FFF | ||
236 | u8 res11[0x8]; | ||
237 | u8 res8[0xF00]; | ||
238 | }; | ||
239 | |||
240 | struct fsl_elbc_ctrl; | 45 | struct fsl_elbc_ctrl; |
241 | 46 | ||
242 | /* mtd information per set */ | 47 | /* mtd information per set */ |
@@ -261,7 +66,7 @@ struct fsl_elbc_ctrl { | |||
261 | 66 | ||
262 | /* device info */ | 67 | /* device info */ |
263 | struct device *dev; | 68 | struct device *dev; |
264 | struct elbc_regs __iomem *regs; | 69 | struct fsl_lbc_regs __iomem *regs; |
265 | int irq; | 70 | int irq; |
266 | wait_queue_head_t irq_wait; | 71 | wait_queue_head_t irq_wait; |
267 | unsigned int irq_status; /* status read from LTESR by irq handler */ | 72 | unsigned int irq_status; /* status read from LTESR by irq handler */ |
@@ -322,7 +127,7 @@ static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob) | |||
322 | struct nand_chip *chip = mtd->priv; | 127 | struct nand_chip *chip = mtd->priv; |
323 | struct fsl_elbc_mtd *priv = chip->priv; | 128 | struct fsl_elbc_mtd *priv = chip->priv; |
324 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; | 129 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; |
325 | struct elbc_regs __iomem *lbc = ctrl->regs; | 130 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
326 | int buf_num; | 131 | int buf_num; |
327 | 132 | ||
328 | ctrl->page = page_addr; | 133 | ctrl->page = page_addr; |
@@ -363,7 +168,7 @@ static int fsl_elbc_run_command(struct mtd_info *mtd) | |||
363 | struct nand_chip *chip = mtd->priv; | 168 | struct nand_chip *chip = mtd->priv; |
364 | struct fsl_elbc_mtd *priv = chip->priv; | 169 | struct fsl_elbc_mtd *priv = chip->priv; |
365 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; | 170 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; |
366 | struct elbc_regs __iomem *lbc = ctrl->regs; | 171 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
367 | 172 | ||
368 | /* Setup the FMR[OP] to execute without write protection */ | 173 | /* Setup the FMR[OP] to execute without write protection */ |
369 | out_be32(&lbc->fmr, priv->fmr | 3); | 174 | out_be32(&lbc->fmr, priv->fmr | 3); |
@@ -406,7 +211,7 @@ static void fsl_elbc_do_read(struct nand_chip *chip, int oob) | |||
406 | { | 211 | { |
407 | struct fsl_elbc_mtd *priv = chip->priv; | 212 | struct fsl_elbc_mtd *priv = chip->priv; |
408 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; | 213 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; |
409 | struct elbc_regs __iomem *lbc = ctrl->regs; | 214 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
410 | 215 | ||
411 | if (priv->page_size) { | 216 | if (priv->page_size) { |
412 | out_be32(&lbc->fir, | 217 | out_be32(&lbc->fir, |
@@ -439,7 +244,7 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command, | |||
439 | struct nand_chip *chip = mtd->priv; | 244 | struct nand_chip *chip = mtd->priv; |
440 | struct fsl_elbc_mtd *priv = chip->priv; | 245 | struct fsl_elbc_mtd *priv = chip->priv; |
441 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; | 246 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; |
442 | struct elbc_regs __iomem *lbc = ctrl->regs; | 247 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
443 | 248 | ||
444 | ctrl->use_mdr = 0; | 249 | ctrl->use_mdr = 0; |
445 | 250 | ||
@@ -775,7 +580,7 @@ static int fsl_elbc_wait(struct mtd_info *mtd, struct nand_chip *chip) | |||
775 | { | 580 | { |
776 | struct fsl_elbc_mtd *priv = chip->priv; | 581 | struct fsl_elbc_mtd *priv = chip->priv; |
777 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; | 582 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; |
778 | struct elbc_regs __iomem *lbc = ctrl->regs; | 583 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
779 | 584 | ||
780 | if (ctrl->status != LTESR_CC) | 585 | if (ctrl->status != LTESR_CC) |
781 | return NAND_STATUS_FAIL; | 586 | return NAND_STATUS_FAIL; |
@@ -807,7 +612,7 @@ static int fsl_elbc_chip_init_tail(struct mtd_info *mtd) | |||
807 | struct nand_chip *chip = mtd->priv; | 612 | struct nand_chip *chip = mtd->priv; |
808 | struct fsl_elbc_mtd *priv = chip->priv; | 613 | struct fsl_elbc_mtd *priv = chip->priv; |
809 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; | 614 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; |
810 | struct elbc_regs __iomem *lbc = ctrl->regs; | 615 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
811 | unsigned int al; | 616 | unsigned int al; |
812 | 617 | ||
813 | /* calculate FMR Address Length field */ | 618 | /* calculate FMR Address Length field */ |
@@ -922,7 +727,7 @@ static void fsl_elbc_write_page(struct mtd_info *mtd, | |||
922 | static int fsl_elbc_chip_init(struct fsl_elbc_mtd *priv) | 727 | static int fsl_elbc_chip_init(struct fsl_elbc_mtd *priv) |
923 | { | 728 | { |
924 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; | 729 | struct fsl_elbc_ctrl *ctrl = priv->ctrl; |
925 | struct elbc_regs __iomem *lbc = ctrl->regs; | 730 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
926 | struct nand_chip *chip = &priv->chip; | 731 | struct nand_chip *chip = &priv->chip; |
927 | 732 | ||
928 | dev_dbg(priv->dev, "eLBC Set Information for bank %d\n", priv->bank); | 733 | dev_dbg(priv->dev, "eLBC Set Information for bank %d\n", priv->bank); |
@@ -986,7 +791,7 @@ static int fsl_elbc_chip_remove(struct fsl_elbc_mtd *priv) | |||
986 | static int fsl_elbc_chip_probe(struct fsl_elbc_ctrl *ctrl, | 791 | static int fsl_elbc_chip_probe(struct fsl_elbc_ctrl *ctrl, |
987 | struct device_node *node) | 792 | struct device_node *node) |
988 | { | 793 | { |
989 | struct elbc_regs __iomem *lbc = ctrl->regs; | 794 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
990 | struct fsl_elbc_mtd *priv; | 795 | struct fsl_elbc_mtd *priv; |
991 | struct resource res; | 796 | struct resource res; |
992 | #ifdef CONFIG_MTD_PARTITIONS | 797 | #ifdef CONFIG_MTD_PARTITIONS |
@@ -1083,7 +888,7 @@ err: | |||
1083 | 888 | ||
1084 | static int __devinit fsl_elbc_ctrl_init(struct fsl_elbc_ctrl *ctrl) | 889 | static int __devinit fsl_elbc_ctrl_init(struct fsl_elbc_ctrl *ctrl) |
1085 | { | 890 | { |
1086 | struct elbc_regs __iomem *lbc = ctrl->regs; | 891 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
1087 | 892 | ||
1088 | /* clear event registers */ | 893 | /* clear event registers */ |
1089 | setbits32(&lbc->ltesr, LTESR_NAND_MASK); | 894 | setbits32(&lbc->ltesr, LTESR_NAND_MASK); |
@@ -1128,7 +933,7 @@ static int __devexit fsl_elbc_ctrl_remove(struct of_device *ofdev) | |||
1128 | static irqreturn_t fsl_elbc_ctrl_irq(int irqno, void *data) | 933 | static irqreturn_t fsl_elbc_ctrl_irq(int irqno, void *data) |
1129 | { | 934 | { |
1130 | struct fsl_elbc_ctrl *ctrl = data; | 935 | struct fsl_elbc_ctrl *ctrl = data; |
1131 | struct elbc_regs __iomem *lbc = ctrl->regs; | 936 | struct fsl_lbc_regs __iomem *lbc = ctrl->regs; |
1132 | __be32 status = in_be32(&lbc->ltesr) & LTESR_NAND_MASK; | 937 | __be32 status = in_be32(&lbc->ltesr) & LTESR_NAND_MASK; |
1133 | 938 | ||
1134 | if (status) { | 939 | if (status) { |
diff --git a/drivers/net/Makefile b/drivers/net/Makefile index 4d71729e85e5..2f1f3f2739fd 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile | |||
@@ -218,7 +218,8 @@ obj-$(CONFIG_SMC911X) += smc911x.o | |||
218 | obj-$(CONFIG_BFIN_MAC) += bfin_mac.o | 218 | obj-$(CONFIG_BFIN_MAC) += bfin_mac.o |
219 | obj-$(CONFIG_DM9000) += dm9000.o | 219 | obj-$(CONFIG_DM9000) += dm9000.o |
220 | obj-$(CONFIG_FEC_8XX) += fec_8xx/ | 220 | obj-$(CONFIG_FEC_8XX) += fec_8xx/ |
221 | obj-$(CONFIG_PASEMI_MAC) += pasemi_mac.o | 221 | obj-$(CONFIG_PASEMI_MAC) += pasemi_mac_driver.o |
222 | pasemi_mac_driver-objs := pasemi_mac.o pasemi_mac_ethtool.o | ||
222 | obj-$(CONFIG_MLX4_CORE) += mlx4/ | 223 | obj-$(CONFIG_MLX4_CORE) += mlx4/ |
223 | obj-$(CONFIG_ENC28J60) += enc28j60.o | 224 | obj-$(CONFIG_ENC28J60) += enc28j60.o |
224 | 225 | ||
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c index 58d3bb622da6..b8d0639c1cdf 100644 --- a/drivers/net/iseries_veth.c +++ b/drivers/net/iseries_veth.c | |||
@@ -308,7 +308,8 @@ static void veth_complete_allocation(void *parm, int number) | |||
308 | 308 | ||
309 | static int veth_allocate_events(HvLpIndex rlp, int number) | 309 | static int veth_allocate_events(HvLpIndex rlp, int number) |
310 | { | 310 | { |
311 | struct veth_allocation vc = { COMPLETION_INITIALIZER(vc.c), 0 }; | 311 | struct veth_allocation vc = |
312 | { COMPLETION_INITIALIZER_ONSTACK(vc.c), 0 }; | ||
312 | 313 | ||
313 | mf_allocate_lp_events(rlp, HvLpEvent_Type_VirtualLan, | 314 | mf_allocate_lp_events(rlp, HvLpEvent_Type_VirtualLan, |
314 | sizeof(struct veth_lpevent), number, | 315 | sizeof(struct veth_lpevent), number, |
diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c index bcd7f9814ed8..3b2a6c598088 100644 --- a/drivers/net/pasemi_mac.c +++ b/drivers/net/pasemi_mac.c | |||
@@ -55,15 +55,10 @@ | |||
55 | * - Multiqueue RX/TX | 55 | * - Multiqueue RX/TX |
56 | */ | 56 | */ |
57 | 57 | ||
58 | |||
59 | /* Must be a power of two */ | ||
60 | #define RX_RING_SIZE 2048 | ||
61 | #define TX_RING_SIZE 4096 | ||
62 | |||
63 | #define LRO_MAX_AGGR 64 | 58 | #define LRO_MAX_AGGR 64 |
64 | 59 | ||
65 | #define PE_MIN_MTU 64 | 60 | #define PE_MIN_MTU 64 |
66 | #define PE_MAX_MTU 1500 | 61 | #define PE_MAX_MTU 9000 |
67 | #define PE_DEF_MTU ETH_DATA_LEN | 62 | #define PE_DEF_MTU ETH_DATA_LEN |
68 | 63 | ||
69 | #define DEFAULT_MSG_ENABLE \ | 64 | #define DEFAULT_MSG_ENABLE \ |
@@ -76,16 +71,6 @@ | |||
76 | NETIF_MSG_RX_ERR | \ | 71 | NETIF_MSG_RX_ERR | \ |
77 | NETIF_MSG_TX_ERR) | 72 | NETIF_MSG_TX_ERR) |
78 | 73 | ||
79 | #define TX_DESC(tx, num) ((tx)->chan.ring_virt[(num) & (TX_RING_SIZE-1)]) | ||
80 | #define TX_DESC_INFO(tx, num) ((tx)->ring_info[(num) & (TX_RING_SIZE-1)]) | ||
81 | #define RX_DESC(rx, num) ((rx)->chan.ring_virt[(num) & (RX_RING_SIZE-1)]) | ||
82 | #define RX_DESC_INFO(rx, num) ((rx)->ring_info[(num) & (RX_RING_SIZE-1)]) | ||
83 | #define RX_BUFF(rx, num) ((rx)->buffers[(num) & (RX_RING_SIZE-1)]) | ||
84 | |||
85 | #define RING_USED(ring) (((ring)->next_to_fill - (ring)->next_to_clean) \ | ||
86 | & ((ring)->size - 1)) | ||
87 | #define RING_AVAIL(ring) ((ring->size) - RING_USED(ring)) | ||
88 | |||
89 | MODULE_LICENSE("GPL"); | 74 | MODULE_LICENSE("GPL"); |
90 | MODULE_AUTHOR ("Olof Johansson <olof@lixom.net>"); | 75 | MODULE_AUTHOR ("Olof Johansson <olof@lixom.net>"); |
91 | MODULE_DESCRIPTION("PA Semi PWRficient Ethernet driver"); | 76 | MODULE_DESCRIPTION("PA Semi PWRficient Ethernet driver"); |
@@ -94,6 +79,8 @@ static int debug = -1; /* -1 == use DEFAULT_MSG_ENABLE as value */ | |||
94 | module_param(debug, int, 0); | 79 | module_param(debug, int, 0); |
95 | MODULE_PARM_DESC(debug, "PA Semi MAC bitmapped debugging message enable value"); | 80 | MODULE_PARM_DESC(debug, "PA Semi MAC bitmapped debugging message enable value"); |
96 | 81 | ||
82 | extern const struct ethtool_ops pasemi_mac_ethtool_ops; | ||
83 | |||
97 | static int translation_enabled(void) | 84 | static int translation_enabled(void) |
98 | { | 85 | { |
99 | #if defined(CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE) | 86 | #if defined(CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE) |
@@ -322,6 +309,104 @@ static int pasemi_mac_unmap_tx_skb(struct pasemi_mac *mac, | |||
322 | return (nfrags + 3) & ~1; | 309 | return (nfrags + 3) & ~1; |
323 | } | 310 | } |
324 | 311 | ||
312 | static struct pasemi_mac_csring *pasemi_mac_setup_csring(struct pasemi_mac *mac) | ||
313 | { | ||
314 | struct pasemi_mac_csring *ring; | ||
315 | u32 val; | ||
316 | unsigned int cfg; | ||
317 | int chno; | ||
318 | |||
319 | ring = pasemi_dma_alloc_chan(TXCHAN, sizeof(struct pasemi_mac_csring), | ||
320 | offsetof(struct pasemi_mac_csring, chan)); | ||
321 | |||
322 | if (!ring) { | ||
323 | dev_err(&mac->pdev->dev, "Can't allocate checksum channel\n"); | ||
324 | goto out_chan; | ||
325 | } | ||
326 | |||
327 | chno = ring->chan.chno; | ||
328 | |||
329 | ring->size = CS_RING_SIZE; | ||
330 | ring->next_to_fill = 0; | ||
331 | |||
332 | /* Allocate descriptors */ | ||
333 | if (pasemi_dma_alloc_ring(&ring->chan, CS_RING_SIZE)) | ||
334 | goto out_ring_desc; | ||
335 | |||
336 | write_dma_reg(PAS_DMA_TXCHAN_BASEL(chno), | ||
337 | PAS_DMA_TXCHAN_BASEL_BRBL(ring->chan.ring_dma)); | ||
338 | val = PAS_DMA_TXCHAN_BASEU_BRBH(ring->chan.ring_dma >> 32); | ||
339 | val |= PAS_DMA_TXCHAN_BASEU_SIZ(CS_RING_SIZE >> 3); | ||
340 | |||
341 | write_dma_reg(PAS_DMA_TXCHAN_BASEU(chno), val); | ||
342 | |||
343 | ring->events[0] = pasemi_dma_alloc_flag(); | ||
344 | ring->events[1] = pasemi_dma_alloc_flag(); | ||
345 | if (ring->events[0] < 0 || ring->events[1] < 0) | ||
346 | goto out_flags; | ||
347 | |||
348 | pasemi_dma_clear_flag(ring->events[0]); | ||
349 | pasemi_dma_clear_flag(ring->events[1]); | ||
350 | |||
351 | ring->fun = pasemi_dma_alloc_fun(); | ||
352 | if (ring->fun < 0) | ||
353 | goto out_fun; | ||
354 | |||
355 | cfg = PAS_DMA_TXCHAN_CFG_TY_FUNC | PAS_DMA_TXCHAN_CFG_UP | | ||
356 | PAS_DMA_TXCHAN_CFG_TATTR(ring->fun) | | ||
357 | PAS_DMA_TXCHAN_CFG_LPSQ | PAS_DMA_TXCHAN_CFG_LPDQ; | ||
358 | |||
359 | if (translation_enabled()) | ||
360 | cfg |= PAS_DMA_TXCHAN_CFG_TRD | PAS_DMA_TXCHAN_CFG_TRR; | ||
361 | |||
362 | write_dma_reg(PAS_DMA_TXCHAN_CFG(chno), cfg); | ||
363 | |||
364 | /* enable channel */ | ||
365 | pasemi_dma_start_chan(&ring->chan, PAS_DMA_TXCHAN_TCMDSTA_SZ | | ||
366 | PAS_DMA_TXCHAN_TCMDSTA_DB | | ||
367 | PAS_DMA_TXCHAN_TCMDSTA_DE | | ||
368 | PAS_DMA_TXCHAN_TCMDSTA_DA); | ||
369 | |||
370 | return ring; | ||
371 | |||
372 | out_fun: | ||
373 | out_flags: | ||
374 | if (ring->events[0] >= 0) | ||
375 | pasemi_dma_free_flag(ring->events[0]); | ||
376 | if (ring->events[1] >= 0) | ||
377 | pasemi_dma_free_flag(ring->events[1]); | ||
378 | pasemi_dma_free_ring(&ring->chan); | ||
379 | out_ring_desc: | ||
380 | pasemi_dma_free_chan(&ring->chan); | ||
381 | out_chan: | ||
382 | |||
383 | return NULL; | ||
384 | } | ||
385 | |||
386 | static void pasemi_mac_setup_csrings(struct pasemi_mac *mac) | ||
387 | { | ||
388 | int i; | ||
389 | mac->cs[0] = pasemi_mac_setup_csring(mac); | ||
390 | if (mac->type == MAC_TYPE_XAUI) | ||
391 | mac->cs[1] = pasemi_mac_setup_csring(mac); | ||
392 | else | ||
393 | mac->cs[1] = 0; | ||
394 | |||
395 | for (i = 0; i < MAX_CS; i++) | ||
396 | if (mac->cs[i]) | ||
397 | mac->num_cs++; | ||
398 | } | ||
399 | |||
400 | static void pasemi_mac_free_csring(struct pasemi_mac_csring *csring) | ||
401 | { | ||
402 | pasemi_dma_stop_chan(&csring->chan); | ||
403 | pasemi_dma_free_flag(csring->events[0]); | ||
404 | pasemi_dma_free_flag(csring->events[1]); | ||
405 | pasemi_dma_free_ring(&csring->chan); | ||
406 | pasemi_dma_free_chan(&csring->chan); | ||
407 | pasemi_dma_free_fun(csring->fun); | ||
408 | } | ||
409 | |||
325 | static int pasemi_mac_setup_rx_resources(const struct net_device *dev) | 410 | static int pasemi_mac_setup_rx_resources(const struct net_device *dev) |
326 | { | 411 | { |
327 | struct pasemi_mac_rxring *ring; | 412 | struct pasemi_mac_rxring *ring; |
@@ -445,7 +530,7 @@ pasemi_mac_setup_tx_resources(const struct net_device *dev) | |||
445 | cfg = PAS_DMA_TXCHAN_CFG_TY_IFACE | | 530 | cfg = PAS_DMA_TXCHAN_CFG_TY_IFACE | |
446 | PAS_DMA_TXCHAN_CFG_TATTR(mac->dma_if) | | 531 | PAS_DMA_TXCHAN_CFG_TATTR(mac->dma_if) | |
447 | PAS_DMA_TXCHAN_CFG_UP | | 532 | PAS_DMA_TXCHAN_CFG_UP | |
448 | PAS_DMA_TXCHAN_CFG_WT(2); | 533 | PAS_DMA_TXCHAN_CFG_WT(4); |
449 | 534 | ||
450 | if (translation_enabled()) | 535 | if (translation_enabled()) |
451 | cfg |= PAS_DMA_TXCHAN_CFG_TRD | PAS_DMA_TXCHAN_CFG_TRR; | 536 | cfg |= PAS_DMA_TXCHAN_CFG_TRD | PAS_DMA_TXCHAN_CFG_TRR; |
@@ -810,13 +895,21 @@ restart: | |||
810 | u64 mactx = TX_DESC(txring, i); | 895 | u64 mactx = TX_DESC(txring, i); |
811 | struct sk_buff *skb; | 896 | struct sk_buff *skb; |
812 | 897 | ||
813 | skb = TX_DESC_INFO(txring, i+1).skb; | ||
814 | nr_frags = TX_DESC_INFO(txring, i).dma; | ||
815 | |||
816 | if ((mactx & XCT_MACTX_E) || | 898 | if ((mactx & XCT_MACTX_E) || |
817 | (*chan->status & PAS_STATUS_ERROR)) | 899 | (*chan->status & PAS_STATUS_ERROR)) |
818 | pasemi_mac_tx_error(mac, mactx); | 900 | pasemi_mac_tx_error(mac, mactx); |
819 | 901 | ||
902 | /* Skip over control descriptors */ | ||
903 | if (!(mactx & XCT_MACTX_LLEN_M)) { | ||
904 | TX_DESC(txring, i) = 0; | ||
905 | TX_DESC(txring, i+1) = 0; | ||
906 | buf_count = 2; | ||
907 | continue; | ||
908 | } | ||
909 | |||
910 | skb = TX_DESC_INFO(txring, i+1).skb; | ||
911 | nr_frags = TX_DESC_INFO(txring, i).dma; | ||
912 | |||
820 | if (unlikely(mactx & XCT_MACTX_O)) | 913 | if (unlikely(mactx & XCT_MACTX_O)) |
821 | /* Not yet transmitted */ | 914 | /* Not yet transmitted */ |
822 | break; | 915 | break; |
@@ -1041,13 +1134,7 @@ static int pasemi_mac_open(struct net_device *dev) | |||
1041 | { | 1134 | { |
1042 | struct pasemi_mac *mac = netdev_priv(dev); | 1135 | struct pasemi_mac *mac = netdev_priv(dev); |
1043 | unsigned int flags; | 1136 | unsigned int flags; |
1044 | int ret; | 1137 | int i, ret; |
1045 | |||
1046 | /* enable rx section */ | ||
1047 | write_dma_reg(PAS_DMA_COM_RXCMD, PAS_DMA_COM_RXCMD_EN); | ||
1048 | |||
1049 | /* enable tx section */ | ||
1050 | write_dma_reg(PAS_DMA_COM_TXCMD, PAS_DMA_COM_TXCMD_EN); | ||
1051 | 1138 | ||
1052 | flags = PAS_MAC_CFG_TXP_FCE | PAS_MAC_CFG_TXP_FPC(3) | | 1139 | flags = PAS_MAC_CFG_TXP_FCE | PAS_MAC_CFG_TXP_FPC(3) | |
1053 | PAS_MAC_CFG_TXP_SL(3) | PAS_MAC_CFG_TXP_COB(0xf) | | 1140 | PAS_MAC_CFG_TXP_SL(3) | PAS_MAC_CFG_TXP_COB(0xf) | |
@@ -1064,6 +1151,19 @@ static int pasemi_mac_open(struct net_device *dev) | |||
1064 | if (!mac->tx) | 1151 | if (!mac->tx) |
1065 | goto out_tx_ring; | 1152 | goto out_tx_ring; |
1066 | 1153 | ||
1154 | /* We might already have allocated rings in case mtu was changed | ||
1155 | * before interface was brought up. | ||
1156 | */ | ||
1157 | if (dev->mtu > 1500 && !mac->num_cs) { | ||
1158 | pasemi_mac_setup_csrings(mac); | ||
1159 | if (!mac->num_cs) | ||
1160 | goto out_tx_ring; | ||
1161 | } | ||
1162 | |||
1163 | /* Zero out rmon counters */ | ||
1164 | for (i = 0; i < 32; i++) | ||
1165 | write_mac_reg(mac, PAS_MAC_RMON(i), 0); | ||
1166 | |||
1067 | /* 0x3ff with 33MHz clock is about 31us */ | 1167 | /* 0x3ff with 33MHz clock is about 31us */ |
1068 | write_iob_reg(PAS_IOB_DMA_COM_TIMEOUTCFG, | 1168 | write_iob_reg(PAS_IOB_DMA_COM_TIMEOUTCFG, |
1069 | PAS_IOB_DMA_COM_TIMEOUTCFG_TCNT(0x3ff)); | 1169 | PAS_IOB_DMA_COM_TIMEOUTCFG_TCNT(0x3ff)); |
@@ -1247,7 +1347,7 @@ static int pasemi_mac_close(struct net_device *dev) | |||
1247 | { | 1347 | { |
1248 | struct pasemi_mac *mac = netdev_priv(dev); | 1348 | struct pasemi_mac *mac = netdev_priv(dev); |
1249 | unsigned int sta; | 1349 | unsigned int sta; |
1250 | int rxch, txch; | 1350 | int rxch, txch, i; |
1251 | 1351 | ||
1252 | rxch = rx_ring(mac)->chan.chno; | 1352 | rxch = rx_ring(mac)->chan.chno; |
1253 | txch = tx_ring(mac)->chan.chno; | 1353 | txch = tx_ring(mac)->chan.chno; |
@@ -1292,6 +1392,13 @@ static int pasemi_mac_close(struct net_device *dev) | |||
1292 | free_irq(mac->tx->chan.irq, mac->tx); | 1392 | free_irq(mac->tx->chan.irq, mac->tx); |
1293 | free_irq(mac->rx->chan.irq, mac->rx); | 1393 | free_irq(mac->rx->chan.irq, mac->rx); |
1294 | 1394 | ||
1395 | for (i = 0; i < mac->num_cs; i++) { | ||
1396 | pasemi_mac_free_csring(mac->cs[i]); | ||
1397 | mac->cs[i] = NULL; | ||
1398 | } | ||
1399 | |||
1400 | mac->num_cs = 0; | ||
1401 | |||
1295 | /* Free resources */ | 1402 | /* Free resources */ |
1296 | pasemi_mac_free_rx_resources(mac); | 1403 | pasemi_mac_free_rx_resources(mac); |
1297 | pasemi_mac_free_tx_resources(mac); | 1404 | pasemi_mac_free_tx_resources(mac); |
@@ -1299,35 +1406,113 @@ static int pasemi_mac_close(struct net_device *dev) | |||
1299 | return 0; | 1406 | return 0; |
1300 | } | 1407 | } |
1301 | 1408 | ||
1409 | static void pasemi_mac_queue_csdesc(const struct sk_buff *skb, | ||
1410 | const dma_addr_t *map, | ||
1411 | const unsigned int *map_size, | ||
1412 | struct pasemi_mac_txring *txring, | ||
1413 | struct pasemi_mac_csring *csring) | ||
1414 | { | ||
1415 | u64 fund; | ||
1416 | dma_addr_t cs_dest; | ||
1417 | const int nh_off = skb_network_offset(skb); | ||
1418 | const int nh_len = skb_network_header_len(skb); | ||
1419 | const int nfrags = skb_shinfo(skb)->nr_frags; | ||
1420 | int cs_size, i, fill, hdr, cpyhdr, evt; | ||
1421 | dma_addr_t csdma; | ||
1422 | |||
1423 | fund = XCT_FUN_ST | XCT_FUN_RR_8BRES | | ||
1424 | XCT_FUN_O | XCT_FUN_FUN(csring->fun) | | ||
1425 | XCT_FUN_CRM_SIG | XCT_FUN_LLEN(skb->len - nh_off) | | ||
1426 | XCT_FUN_SHL(nh_len >> 2) | XCT_FUN_SE; | ||
1427 | |||
1428 | switch (ip_hdr(skb)->protocol) { | ||
1429 | case IPPROTO_TCP: | ||
1430 | fund |= XCT_FUN_SIG_TCP4; | ||
1431 | /* TCP checksum is 16 bytes into the header */ | ||
1432 | cs_dest = map[0] + skb_transport_offset(skb) + 16; | ||
1433 | break; | ||
1434 | case IPPROTO_UDP: | ||
1435 | fund |= XCT_FUN_SIG_UDP4; | ||
1436 | /* UDP checksum is 6 bytes into the header */ | ||
1437 | cs_dest = map[0] + skb_transport_offset(skb) + 6; | ||
1438 | break; | ||
1439 | default: | ||
1440 | BUG(); | ||
1441 | } | ||
1442 | |||
1443 | /* Do the checksum offloaded */ | ||
1444 | fill = csring->next_to_fill; | ||
1445 | hdr = fill; | ||
1446 | |||
1447 | CS_DESC(csring, fill++) = fund; | ||
1448 | /* Room for 8BRES. Checksum result is really 2 bytes into it */ | ||
1449 | csdma = csring->chan.ring_dma + (fill & (CS_RING_SIZE-1)) * 8 + 2; | ||
1450 | CS_DESC(csring, fill++) = 0; | ||
1451 | |||
1452 | CS_DESC(csring, fill) = XCT_PTR_LEN(map_size[0]-nh_off) | XCT_PTR_ADDR(map[0]+nh_off); | ||
1453 | for (i = 1; i <= nfrags; i++) | ||
1454 | CS_DESC(csring, fill+i) = XCT_PTR_LEN(map_size[i]) | XCT_PTR_ADDR(map[i]); | ||
1455 | |||
1456 | fill += i; | ||
1457 | if (fill & 1) | ||
1458 | fill++; | ||
1459 | |||
1460 | /* Copy the result into the TCP packet */ | ||
1461 | cpyhdr = fill; | ||
1462 | CS_DESC(csring, fill++) = XCT_FUN_O | XCT_FUN_FUN(csring->fun) | | ||
1463 | XCT_FUN_LLEN(2) | XCT_FUN_SE; | ||
1464 | CS_DESC(csring, fill++) = XCT_PTR_LEN(2) | XCT_PTR_ADDR(cs_dest) | XCT_PTR_T; | ||
1465 | CS_DESC(csring, fill++) = XCT_PTR_LEN(2) | XCT_PTR_ADDR(csdma); | ||
1466 | fill++; | ||
1467 | |||
1468 | evt = !csring->last_event; | ||
1469 | csring->last_event = evt; | ||
1470 | |||
1471 | /* Event handshaking with MAC TX */ | ||
1472 | CS_DESC(csring, fill++) = CTRL_CMD_T | CTRL_CMD_META_EVT | CTRL_CMD_O | | ||
1473 | CTRL_CMD_ETYPE_SET | CTRL_CMD_REG(csring->events[evt]); | ||
1474 | CS_DESC(csring, fill++) = 0; | ||
1475 | CS_DESC(csring, fill++) = CTRL_CMD_T | CTRL_CMD_META_EVT | CTRL_CMD_O | | ||
1476 | CTRL_CMD_ETYPE_WCLR | CTRL_CMD_REG(csring->events[!evt]); | ||
1477 | CS_DESC(csring, fill++) = 0; | ||
1478 | csring->next_to_fill = fill & (CS_RING_SIZE-1); | ||
1479 | |||
1480 | cs_size = fill - hdr; | ||
1481 | write_dma_reg(PAS_DMA_TXCHAN_INCR(csring->chan.chno), (cs_size) >> 1); | ||
1482 | |||
1483 | /* TX-side event handshaking */ | ||
1484 | fill = txring->next_to_fill; | ||
1485 | TX_DESC(txring, fill++) = CTRL_CMD_T | CTRL_CMD_META_EVT | CTRL_CMD_O | | ||
1486 | CTRL_CMD_ETYPE_WSET | CTRL_CMD_REG(csring->events[evt]); | ||
1487 | TX_DESC(txring, fill++) = 0; | ||
1488 | TX_DESC(txring, fill++) = CTRL_CMD_T | CTRL_CMD_META_EVT | CTRL_CMD_O | | ||
1489 | CTRL_CMD_ETYPE_CLR | CTRL_CMD_REG(csring->events[!evt]); | ||
1490 | TX_DESC(txring, fill++) = 0; | ||
1491 | txring->next_to_fill = fill; | ||
1492 | |||
1493 | write_dma_reg(PAS_DMA_TXCHAN_INCR(txring->chan.chno), 2); | ||
1494 | |||
1495 | return; | ||
1496 | } | ||
1497 | |||
1302 | static int pasemi_mac_start_tx(struct sk_buff *skb, struct net_device *dev) | 1498 | static int pasemi_mac_start_tx(struct sk_buff *skb, struct net_device *dev) |
1303 | { | 1499 | { |
1304 | struct pasemi_mac *mac = netdev_priv(dev); | 1500 | struct pasemi_mac * const mac = netdev_priv(dev); |
1305 | struct pasemi_mac_txring *txring; | 1501 | struct pasemi_mac_txring * const txring = tx_ring(mac); |
1306 | u64 dflags, mactx; | 1502 | struct pasemi_mac_csring *csring; |
1503 | u64 dflags = 0; | ||
1504 | u64 mactx; | ||
1307 | dma_addr_t map[MAX_SKB_FRAGS+1]; | 1505 | dma_addr_t map[MAX_SKB_FRAGS+1]; |
1308 | unsigned int map_size[MAX_SKB_FRAGS+1]; | 1506 | unsigned int map_size[MAX_SKB_FRAGS+1]; |
1309 | unsigned long flags; | 1507 | unsigned long flags; |
1310 | int i, nfrags; | 1508 | int i, nfrags; |
1311 | int fill; | 1509 | int fill; |
1510 | const int nh_off = skb_network_offset(skb); | ||
1511 | const int nh_len = skb_network_header_len(skb); | ||
1312 | 1512 | ||
1313 | dflags = XCT_MACTX_O | XCT_MACTX_ST | XCT_MACTX_CRC_PAD; | 1513 | prefetch(&txring->ring_info); |
1314 | |||
1315 | if (skb->ip_summed == CHECKSUM_PARTIAL) { | ||
1316 | const unsigned char *nh = skb_network_header(skb); | ||
1317 | 1514 | ||
1318 | switch (ip_hdr(skb)->protocol) { | 1515 | dflags = XCT_MACTX_O | XCT_MACTX_ST | XCT_MACTX_CRC_PAD; |
1319 | case IPPROTO_TCP: | ||
1320 | dflags |= XCT_MACTX_CSUM_TCP; | ||
1321 | dflags |= XCT_MACTX_IPH(skb_network_header_len(skb) >> 2); | ||
1322 | dflags |= XCT_MACTX_IPO(nh - skb->data); | ||
1323 | break; | ||
1324 | case IPPROTO_UDP: | ||
1325 | dflags |= XCT_MACTX_CSUM_UDP; | ||
1326 | dflags |= XCT_MACTX_IPH(skb_network_header_len(skb) >> 2); | ||
1327 | dflags |= XCT_MACTX_IPO(nh - skb->data); | ||
1328 | break; | ||
1329 | } | ||
1330 | } | ||
1331 | 1516 | ||
1332 | nfrags = skb_shinfo(skb)->nr_frags; | 1517 | nfrags = skb_shinfo(skb)->nr_frags; |
1333 | 1518 | ||
@@ -1350,24 +1535,46 @@ static int pasemi_mac_start_tx(struct sk_buff *skb, struct net_device *dev) | |||
1350 | } | 1535 | } |
1351 | } | 1536 | } |
1352 | 1537 | ||
1353 | mactx = dflags | XCT_MACTX_LLEN(skb->len); | 1538 | if (skb->ip_summed == CHECKSUM_PARTIAL && skb->len <= 1540) { |
1539 | switch (ip_hdr(skb)->protocol) { | ||
1540 | case IPPROTO_TCP: | ||
1541 | dflags |= XCT_MACTX_CSUM_TCP; | ||
1542 | dflags |= XCT_MACTX_IPH(nh_len >> 2); | ||
1543 | dflags |= XCT_MACTX_IPO(nh_off); | ||
1544 | break; | ||
1545 | case IPPROTO_UDP: | ||
1546 | dflags |= XCT_MACTX_CSUM_UDP; | ||
1547 | dflags |= XCT_MACTX_IPH(nh_len >> 2); | ||
1548 | dflags |= XCT_MACTX_IPO(nh_off); | ||
1549 | break; | ||
1550 | default: | ||
1551 | WARN_ON(1); | ||
1552 | } | ||
1553 | } | ||
1354 | 1554 | ||
1355 | txring = tx_ring(mac); | 1555 | mactx = dflags | XCT_MACTX_LLEN(skb->len); |
1356 | 1556 | ||
1357 | spin_lock_irqsave(&txring->lock, flags); | 1557 | spin_lock_irqsave(&txring->lock, flags); |
1358 | 1558 | ||
1359 | fill = txring->next_to_fill; | ||
1360 | |||
1361 | /* Avoid stepping on the same cache line that the DMA controller | 1559 | /* Avoid stepping on the same cache line that the DMA controller |
1362 | * is currently about to send, so leave at least 8 words available. | 1560 | * is currently about to send, so leave at least 8 words available. |
1363 | * Total free space needed is mactx + fragments + 8 | 1561 | * Total free space needed is mactx + fragments + 8 |
1364 | */ | 1562 | */ |
1365 | if (RING_AVAIL(txring) < nfrags + 10) { | 1563 | if (RING_AVAIL(txring) < nfrags + 14) { |
1366 | /* no room -- stop the queue and wait for tx intr */ | 1564 | /* no room -- stop the queue and wait for tx intr */ |
1367 | netif_stop_queue(dev); | 1565 | netif_stop_queue(dev); |
1368 | goto out_err; | 1566 | goto out_err; |
1369 | } | 1567 | } |
1370 | 1568 | ||
1569 | /* Queue up checksum + event descriptors, if needed */ | ||
1570 | if (mac->num_cs && skb->ip_summed == CHECKSUM_PARTIAL && skb->len > 1540) { | ||
1571 | csring = mac->cs[mac->last_cs]; | ||
1572 | mac->last_cs = (mac->last_cs + 1) % mac->num_cs; | ||
1573 | |||
1574 | pasemi_mac_queue_csdesc(skb, map, map_size, txring, csring); | ||
1575 | } | ||
1576 | |||
1577 | fill = txring->next_to_fill; | ||
1371 | TX_DESC(txring, fill) = mactx; | 1578 | TX_DESC(txring, fill) = mactx; |
1372 | TX_DESC_INFO(txring, fill).dma = nfrags; | 1579 | TX_DESC_INFO(txring, fill).dma = nfrags; |
1373 | fill++; | 1580 | fill++; |
@@ -1441,12 +1648,33 @@ static int pasemi_mac_poll(struct napi_struct *napi, int budget) | |||
1441 | return pkts; | 1648 | return pkts; |
1442 | } | 1649 | } |
1443 | 1650 | ||
1651 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
1652 | /* | ||
1653 | * Polling 'interrupt' - used by things like netconsole to send skbs | ||
1654 | * without having to re-enable interrupts. It's not called while | ||
1655 | * the interrupt routine is executing. | ||
1656 | */ | ||
1657 | static void pasemi_mac_netpoll(struct net_device *dev) | ||
1658 | { | ||
1659 | const struct pasemi_mac *mac = netdev_priv(dev); | ||
1660 | |||
1661 | disable_irq(mac->tx->chan.irq); | ||
1662 | pasemi_mac_tx_intr(mac->tx->chan.irq, mac->tx); | ||
1663 | enable_irq(mac->tx->chan.irq); | ||
1664 | |||
1665 | disable_irq(mac->rx->chan.irq); | ||
1666 | pasemi_mac_rx_intr(mac->rx->chan.irq, mac->rx); | ||
1667 | enable_irq(mac->rx->chan.irq); | ||
1668 | } | ||
1669 | #endif | ||
1670 | |||
1444 | static int pasemi_mac_change_mtu(struct net_device *dev, int new_mtu) | 1671 | static int pasemi_mac_change_mtu(struct net_device *dev, int new_mtu) |
1445 | { | 1672 | { |
1446 | struct pasemi_mac *mac = netdev_priv(dev); | 1673 | struct pasemi_mac *mac = netdev_priv(dev); |
1447 | unsigned int reg; | 1674 | unsigned int reg; |
1448 | unsigned int rcmdsta; | 1675 | unsigned int rcmdsta = 0; |
1449 | int running; | 1676 | int running; |
1677 | int ret = 0; | ||
1450 | 1678 | ||
1451 | if (new_mtu < PE_MIN_MTU || new_mtu > PE_MAX_MTU) | 1679 | if (new_mtu < PE_MIN_MTU || new_mtu > PE_MAX_MTU) |
1452 | return -EINVAL; | 1680 | return -EINVAL; |
@@ -1468,6 +1696,16 @@ static int pasemi_mac_change_mtu(struct net_device *dev, int new_mtu) | |||
1468 | pasemi_mac_pause_rxint(mac); | 1696 | pasemi_mac_pause_rxint(mac); |
1469 | pasemi_mac_clean_rx(rx_ring(mac), RX_RING_SIZE); | 1697 | pasemi_mac_clean_rx(rx_ring(mac), RX_RING_SIZE); |
1470 | pasemi_mac_free_rx_buffers(mac); | 1698 | pasemi_mac_free_rx_buffers(mac); |
1699 | |||
1700 | } | ||
1701 | |||
1702 | /* Setup checksum channels if large MTU and none already allocated */ | ||
1703 | if (new_mtu > 1500 && !mac->num_cs) { | ||
1704 | pasemi_mac_setup_csrings(mac); | ||
1705 | if (!mac->num_cs) { | ||
1706 | ret = -ENOMEM; | ||
1707 | goto out; | ||
1708 | } | ||
1471 | } | 1709 | } |
1472 | 1710 | ||
1473 | /* Change maxf, i.e. what size frames are accepted. | 1711 | /* Change maxf, i.e. what size frames are accepted. |
@@ -1482,6 +1720,7 @@ static int pasemi_mac_change_mtu(struct net_device *dev, int new_mtu) | |||
1482 | /* MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */ | 1720 | /* MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */ |
1483 | mac->bufsz = new_mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128; | 1721 | mac->bufsz = new_mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128; |
1484 | 1722 | ||
1723 | out: | ||
1485 | if (running) { | 1724 | if (running) { |
1486 | write_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if), | 1725 | write_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if), |
1487 | rcmdsta | PAS_DMA_RXINT_RCMDSTA_EN); | 1726 | rcmdsta | PAS_DMA_RXINT_RCMDSTA_EN); |
@@ -1494,7 +1733,7 @@ static int pasemi_mac_change_mtu(struct net_device *dev, int new_mtu) | |||
1494 | pasemi_mac_intf_enable(mac); | 1733 | pasemi_mac_intf_enable(mac); |
1495 | } | 1734 | } |
1496 | 1735 | ||
1497 | return 0; | 1736 | return ret; |
1498 | } | 1737 | } |
1499 | 1738 | ||
1500 | static int __devinit | 1739 | static int __devinit |
@@ -1528,7 +1767,7 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1528 | netif_napi_add(dev, &mac->napi, pasemi_mac_poll, 64); | 1767 | netif_napi_add(dev, &mac->napi, pasemi_mac_poll, 64); |
1529 | 1768 | ||
1530 | dev->features = NETIF_F_IP_CSUM | NETIF_F_LLTX | NETIF_F_SG | | 1769 | dev->features = NETIF_F_IP_CSUM | NETIF_F_LLTX | NETIF_F_SG | |
1531 | NETIF_F_HIGHDMA; | 1770 | NETIF_F_HIGHDMA | NETIF_F_GSO; |
1532 | 1771 | ||
1533 | mac->lro_mgr.max_aggr = LRO_MAX_AGGR; | 1772 | mac->lro_mgr.max_aggr = LRO_MAX_AGGR; |
1534 | mac->lro_mgr.max_desc = MAX_LRO_DESCRIPTORS; | 1773 | mac->lro_mgr.max_desc = MAX_LRO_DESCRIPTORS; |
@@ -1588,8 +1827,12 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1588 | dev->mtu = PE_DEF_MTU; | 1827 | dev->mtu = PE_DEF_MTU; |
1589 | /* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */ | 1828 | /* 1500 MTU + ETH_HLEN + VLAN_HLEN + 2 64B cachelines */ |
1590 | mac->bufsz = dev->mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128; | 1829 | mac->bufsz = dev->mtu + ETH_HLEN + ETH_FCS_LEN + LOCAL_SKB_ALIGN + 128; |
1830 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
1831 | dev->poll_controller = pasemi_mac_netpoll; | ||
1832 | #endif | ||
1591 | 1833 | ||
1592 | dev->change_mtu = pasemi_mac_change_mtu; | 1834 | dev->change_mtu = pasemi_mac_change_mtu; |
1835 | dev->ethtool_ops = &pasemi_mac_ethtool_ops; | ||
1593 | 1836 | ||
1594 | if (err) | 1837 | if (err) |
1595 | goto out; | 1838 | goto out; |
diff --git a/drivers/net/pasemi_mac.h b/drivers/net/pasemi_mac.h index 99e7b9329a6f..1a115ec60b53 100644 --- a/drivers/net/pasemi_mac.h +++ b/drivers/net/pasemi_mac.h | |||
@@ -26,7 +26,14 @@ | |||
26 | #include <linux/spinlock.h> | 26 | #include <linux/spinlock.h> |
27 | #include <linux/phy.h> | 27 | #include <linux/phy.h> |
28 | 28 | ||
29 | /* Must be a power of two */ | ||
30 | #define RX_RING_SIZE 2048 | ||
31 | #define TX_RING_SIZE 4096 | ||
32 | #define CS_RING_SIZE (TX_RING_SIZE*2) | ||
33 | |||
34 | |||
29 | #define MAX_LRO_DESCRIPTORS 8 | 35 | #define MAX_LRO_DESCRIPTORS 8 |
36 | #define MAX_CS 2 | ||
30 | 37 | ||
31 | struct pasemi_mac_txring { | 38 | struct pasemi_mac_txring { |
32 | struct pasemi_dmachan chan; /* Must be first */ | 39 | struct pasemi_dmachan chan; /* Must be first */ |
@@ -51,6 +58,15 @@ struct pasemi_mac_rxring { | |||
51 | struct pasemi_mac *mac; /* Needed in intr handler */ | 58 | struct pasemi_mac *mac; /* Needed in intr handler */ |
52 | }; | 59 | }; |
53 | 60 | ||
61 | struct pasemi_mac_csring { | ||
62 | struct pasemi_dmachan chan; | ||
63 | unsigned int size; | ||
64 | unsigned int next_to_fill; | ||
65 | int events[2]; | ||
66 | int last_event; | ||
67 | int fun; | ||
68 | }; | ||
69 | |||
54 | struct pasemi_mac { | 70 | struct pasemi_mac { |
55 | struct net_device *netdev; | 71 | struct net_device *netdev; |
56 | struct pci_dev *pdev; | 72 | struct pci_dev *pdev; |
@@ -60,10 +76,12 @@ struct pasemi_mac { | |||
60 | struct napi_struct napi; | 76 | struct napi_struct napi; |
61 | 77 | ||
62 | int bufsz; /* RX ring buffer size */ | 78 | int bufsz; /* RX ring buffer size */ |
79 | int last_cs; | ||
80 | int num_cs; | ||
81 | u32 dma_if; | ||
63 | u8 type; | 82 | u8 type; |
64 | #define MAC_TYPE_GMAC 1 | 83 | #define MAC_TYPE_GMAC 1 |
65 | #define MAC_TYPE_XAUI 2 | 84 | #define MAC_TYPE_XAUI 2 |
66 | u32 dma_if; | ||
67 | 85 | ||
68 | u8 mac_addr[6]; | 86 | u8 mac_addr[6]; |
69 | 87 | ||
@@ -74,6 +92,7 @@ struct pasemi_mac { | |||
74 | 92 | ||
75 | struct pasemi_mac_txring *tx; | 93 | struct pasemi_mac_txring *tx; |
76 | struct pasemi_mac_rxring *rx; | 94 | struct pasemi_mac_rxring *rx; |
95 | struct pasemi_mac_csring *cs[MAX_CS]; | ||
77 | char tx_irq_name[10]; /* "eth%d tx" */ | 96 | char tx_irq_name[10]; /* "eth%d tx" */ |
78 | char rx_irq_name[10]; /* "eth%d rx" */ | 97 | char rx_irq_name[10]; /* "eth%d rx" */ |
79 | int link; | 98 | int link; |
@@ -90,6 +109,16 @@ struct pasemi_mac_buffer { | |||
90 | dma_addr_t dma; | 109 | dma_addr_t dma; |
91 | }; | 110 | }; |
92 | 111 | ||
112 | #define TX_DESC(tx, num) ((tx)->chan.ring_virt[(num) & (TX_RING_SIZE-1)]) | ||
113 | #define TX_DESC_INFO(tx, num) ((tx)->ring_info[(num) & (TX_RING_SIZE-1)]) | ||
114 | #define RX_DESC(rx, num) ((rx)->chan.ring_virt[(num) & (RX_RING_SIZE-1)]) | ||
115 | #define RX_DESC_INFO(rx, num) ((rx)->ring_info[(num) & (RX_RING_SIZE-1)]) | ||
116 | #define RX_BUFF(rx, num) ((rx)->buffers[(num) & (RX_RING_SIZE-1)]) | ||
117 | #define CS_DESC(cs, num) ((cs)->chan.ring_virt[(num) & (CS_RING_SIZE-1)]) | ||
118 | |||
119 | #define RING_USED(ring) (((ring)->next_to_fill - (ring)->next_to_clean) \ | ||
120 | & ((ring)->size - 1)) | ||
121 | #define RING_AVAIL(ring) ((ring->size) - RING_USED(ring)) | ||
93 | 122 | ||
94 | /* PCI register offsets and formats */ | 123 | /* PCI register offsets and formats */ |
95 | 124 | ||
@@ -101,6 +130,7 @@ enum { | |||
101 | PAS_MAC_CFG_ADR0 = 0x8c, | 130 | PAS_MAC_CFG_ADR0 = 0x8c, |
102 | PAS_MAC_CFG_ADR1 = 0x90, | 131 | PAS_MAC_CFG_ADR1 = 0x90, |
103 | PAS_MAC_CFG_TXP = 0x98, | 132 | PAS_MAC_CFG_TXP = 0x98, |
133 | PAS_MAC_CFG_RMON = 0x100, | ||
104 | PAS_MAC_IPC_CHNL = 0x208, | 134 | PAS_MAC_IPC_CHNL = 0x208, |
105 | }; | 135 | }; |
106 | 136 | ||
@@ -172,6 +202,8 @@ enum { | |||
172 | #define PAS_MAC_CFG_TXP_TIFG(x) (((x) << PAS_MAC_CFG_TXP_TIFG_S) & \ | 202 | #define PAS_MAC_CFG_TXP_TIFG(x) (((x) << PAS_MAC_CFG_TXP_TIFG_S) & \ |
173 | PAS_MAC_CFG_TXP_TIFG_M) | 203 | PAS_MAC_CFG_TXP_TIFG_M) |
174 | 204 | ||
205 | #define PAS_MAC_RMON(r) (0x100+(r)*4) | ||
206 | |||
175 | #define PAS_MAC_IPC_CHNL_DCHNO_M 0x003f0000 | 207 | #define PAS_MAC_IPC_CHNL_DCHNO_M 0x003f0000 |
176 | #define PAS_MAC_IPC_CHNL_DCHNO_S 16 | 208 | #define PAS_MAC_IPC_CHNL_DCHNO_S 16 |
177 | #define PAS_MAC_IPC_CHNL_DCHNO(x) (((x) << PAS_MAC_IPC_CHNL_DCHNO_S) & \ | 209 | #define PAS_MAC_IPC_CHNL_DCHNO(x) (((x) << PAS_MAC_IPC_CHNL_DCHNO_S) & \ |
@@ -181,4 +213,5 @@ enum { | |||
181 | #define PAS_MAC_IPC_CHNL_BCH(x) (((x) << PAS_MAC_IPC_CHNL_BCH_S) & \ | 213 | #define PAS_MAC_IPC_CHNL_BCH(x) (((x) << PAS_MAC_IPC_CHNL_BCH_S) & \ |
182 | PAS_MAC_IPC_CHNL_BCH_M) | 214 | PAS_MAC_IPC_CHNL_BCH_M) |
183 | 215 | ||
216 | |||
184 | #endif /* PASEMI_MAC_H */ | 217 | #endif /* PASEMI_MAC_H */ |
diff --git a/drivers/net/pasemi_mac_ethtool.c b/drivers/net/pasemi_mac_ethtool.c new file mode 100644 index 000000000000..5e8df3afea64 --- /dev/null +++ b/drivers/net/pasemi_mac_ethtool.c | |||
@@ -0,0 +1,159 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006-2008 PA Semi, Inc | ||
3 | * | ||
4 | * Ethtool hooks for the PA Semi PWRficient onchip 1G/10G Ethernet MACs | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
18 | */ | ||
19 | |||
20 | |||
21 | #include <linux/netdevice.h> | ||
22 | #include <linux/ethtool.h> | ||
23 | #include <linux/pci.h> | ||
24 | #include <linux/inet_lro.h> | ||
25 | |||
26 | #include <asm/pasemi_dma.h> | ||
27 | #include "pasemi_mac.h" | ||
28 | |||
29 | static struct { | ||
30 | const char str[ETH_GSTRING_LEN]; | ||
31 | } ethtool_stats_keys[] = { | ||
32 | { "rx-drops" }, | ||
33 | { "rx-bytes" }, | ||
34 | { "rx-packets" }, | ||
35 | { "rx-broadcast-packets" }, | ||
36 | { "rx-multicast-packets" }, | ||
37 | { "rx-crc-errors" }, | ||
38 | { "rx-undersize-errors" }, | ||
39 | { "rx-oversize-errors" }, | ||
40 | { "rx-short-fragment-errors" }, | ||
41 | { "rx-jabber-errors" }, | ||
42 | { "rx-64-byte-packets" }, | ||
43 | { "rx-65-127-byte-packets" }, | ||
44 | { "rx-128-255-byte-packets" }, | ||
45 | { "rx-256-511-byte-packets" }, | ||
46 | { "rx-512-1023-byte-packets" }, | ||
47 | { "rx-1024-1518-byte-packets" }, | ||
48 | { "rx-pause-frames" }, | ||
49 | { "tx-bytes" }, | ||
50 | { "tx-packets" }, | ||
51 | { "tx-broadcast-packets" }, | ||
52 | { "tx-multicast-packets" }, | ||
53 | { "tx-collisions" }, | ||
54 | { "tx-late-collisions" }, | ||
55 | { "tx-excessive-collisions" }, | ||
56 | { "tx-crc-errors" }, | ||
57 | { "tx-undersize-errors" }, | ||
58 | { "tx-oversize-errors" }, | ||
59 | { "tx-64-byte-packets" }, | ||
60 | { "tx-65-127-byte-packets" }, | ||
61 | { "tx-128-255-byte-packets" }, | ||
62 | { "tx-256-511-byte-packets" }, | ||
63 | { "tx-512-1023-byte-packets" }, | ||
64 | { "tx-1024-1518-byte-packets" }, | ||
65 | }; | ||
66 | |||
67 | static int | ||
68 | pasemi_mac_ethtool_get_settings(struct net_device *netdev, | ||
69 | struct ethtool_cmd *cmd) | ||
70 | { | ||
71 | struct pasemi_mac *mac = netdev_priv(netdev); | ||
72 | struct phy_device *phydev = mac->phydev; | ||
73 | |||
74 | return phy_ethtool_gset(phydev, cmd); | ||
75 | } | ||
76 | |||
77 | static void | ||
78 | pasemi_mac_ethtool_get_drvinfo(struct net_device *netdev, | ||
79 | struct ethtool_drvinfo *drvinfo) | ||
80 | { | ||
81 | struct pasemi_mac *mac; | ||
82 | mac = netdev_priv(netdev); | ||
83 | |||
84 | /* clear and fill out info */ | ||
85 | memset(drvinfo, 0, sizeof(struct ethtool_drvinfo)); | ||
86 | strncpy(drvinfo->driver, "pasemi_mac", 12); | ||
87 | strcpy(drvinfo->version, "N/A"); | ||
88 | strcpy(drvinfo->fw_version, "N/A"); | ||
89 | strncpy(drvinfo->bus_info, pci_name(mac->pdev), 32); | ||
90 | } | ||
91 | |||
92 | static u32 | ||
93 | pasemi_mac_ethtool_get_msglevel(struct net_device *netdev) | ||
94 | { | ||
95 | struct pasemi_mac *mac = netdev_priv(netdev); | ||
96 | return mac->msg_enable; | ||
97 | } | ||
98 | |||
99 | static void | ||
100 | pasemi_mac_ethtool_set_msglevel(struct net_device *netdev, | ||
101 | u32 level) | ||
102 | { | ||
103 | struct pasemi_mac *mac = netdev_priv(netdev); | ||
104 | mac->msg_enable = level; | ||
105 | } | ||
106 | |||
107 | |||
108 | static void | ||
109 | pasemi_mac_ethtool_get_ringparam(struct net_device *netdev, | ||
110 | struct ethtool_ringparam *ering) | ||
111 | { | ||
112 | struct pasemi_mac *mac = netdev->priv; | ||
113 | |||
114 | ering->tx_max_pending = TX_RING_SIZE/2; | ||
115 | ering->tx_pending = RING_USED(mac->tx)/2; | ||
116 | ering->rx_max_pending = RX_RING_SIZE/4; | ||
117 | ering->rx_pending = RING_USED(mac->rx)/4; | ||
118 | } | ||
119 | |||
120 | static int pasemi_mac_get_sset_count(struct net_device *netdev, int sset) | ||
121 | { | ||
122 | switch (sset) { | ||
123 | case ETH_SS_STATS: | ||
124 | return ARRAY_SIZE(ethtool_stats_keys); | ||
125 | default: | ||
126 | return -EOPNOTSUPP; | ||
127 | } | ||
128 | } | ||
129 | |||
130 | static void pasemi_mac_get_ethtool_stats(struct net_device *netdev, | ||
131 | struct ethtool_stats *stats, u64 *data) | ||
132 | { | ||
133 | struct pasemi_mac *mac = netdev->priv; | ||
134 | int i; | ||
135 | |||
136 | data[0] = pasemi_read_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if)) | ||
137 | >> PAS_DMA_RXINT_RCMDSTA_DROPS_S; | ||
138 | for (i = 0; i < 32; i++) | ||
139 | data[1+i] = pasemi_read_mac_reg(mac->dma_if, PAS_MAC_RMON(i)); | ||
140 | } | ||
141 | |||
142 | static void pasemi_mac_get_strings(struct net_device *netdev, u32 stringset, | ||
143 | u8 *data) | ||
144 | { | ||
145 | memcpy(data, ethtool_stats_keys, sizeof(ethtool_stats_keys)); | ||
146 | } | ||
147 | |||
148 | const struct ethtool_ops pasemi_mac_ethtool_ops = { | ||
149 | .get_settings = pasemi_mac_ethtool_get_settings, | ||
150 | .get_drvinfo = pasemi_mac_ethtool_get_drvinfo, | ||
151 | .get_msglevel = pasemi_mac_ethtool_get_msglevel, | ||
152 | .set_msglevel = pasemi_mac_ethtool_set_msglevel, | ||
153 | .get_link = ethtool_op_get_link, | ||
154 | .get_ringparam = pasemi_mac_ethtool_get_ringparam, | ||
155 | .get_strings = pasemi_mac_get_strings, | ||
156 | .get_sset_count = pasemi_mac_get_sset_count, | ||
157 | .get_ethtool_stats = pasemi_mac_get_ethtool_stats, | ||
158 | }; | ||
159 | |||
diff --git a/drivers/net/ps3_gelic_net.c b/drivers/net/ps3_gelic_net.c index 7eb6e7e848f4..e365efb3c627 100644 --- a/drivers/net/ps3_gelic_net.c +++ b/drivers/net/ps3_gelic_net.c | |||
@@ -1266,6 +1266,85 @@ int gelic_net_set_rx_csum(struct net_device *netdev, u32 data) | |||
1266 | return 0; | 1266 | return 0; |
1267 | } | 1267 | } |
1268 | 1268 | ||
1269 | static void gelic_net_get_wol(struct net_device *netdev, | ||
1270 | struct ethtool_wolinfo *wol) | ||
1271 | { | ||
1272 | if (0 <= ps3_compare_firmware_version(2, 2, 0)) | ||
1273 | wol->supported = WAKE_MAGIC; | ||
1274 | else | ||
1275 | wol->supported = 0; | ||
1276 | |||
1277 | wol->wolopts = ps3_sys_manager_get_wol() ? wol->supported : 0; | ||
1278 | memset(&wol->sopass, 0, sizeof(wol->sopass)); | ||
1279 | } | ||
1280 | static int gelic_net_set_wol(struct net_device *netdev, | ||
1281 | struct ethtool_wolinfo *wol) | ||
1282 | { | ||
1283 | int status; | ||
1284 | struct gelic_card *card; | ||
1285 | u64 v1, v2; | ||
1286 | |||
1287 | if (ps3_compare_firmware_version(2, 2, 0) < 0 || | ||
1288 | !capable(CAP_NET_ADMIN)) | ||
1289 | return -EPERM; | ||
1290 | |||
1291 | if (wol->wolopts & ~WAKE_MAGIC) | ||
1292 | return -EINVAL; | ||
1293 | |||
1294 | card = netdev_card(netdev); | ||
1295 | if (wol->wolopts & WAKE_MAGIC) { | ||
1296 | status = lv1_net_control(bus_id(card), dev_id(card), | ||
1297 | GELIC_LV1_SET_WOL, | ||
1298 | GELIC_LV1_WOL_MAGIC_PACKET, | ||
1299 | 0, GELIC_LV1_WOL_MP_ENABLE, | ||
1300 | &v1, &v2); | ||
1301 | if (status) { | ||
1302 | pr_info("%s: enabling WOL failed %d\n", __func__, | ||
1303 | status); | ||
1304 | status = -EIO; | ||
1305 | goto done; | ||
1306 | } | ||
1307 | status = lv1_net_control(bus_id(card), dev_id(card), | ||
1308 | GELIC_LV1_SET_WOL, | ||
1309 | GELIC_LV1_WOL_ADD_MATCH_ADDR, | ||
1310 | 0, GELIC_LV1_WOL_MATCH_ALL, | ||
1311 | &v1, &v2); | ||
1312 | if (!status) | ||
1313 | ps3_sys_manager_set_wol(1); | ||
1314 | else { | ||
1315 | pr_info("%s: enabling WOL filter failed %d\n", | ||
1316 | __func__, status); | ||
1317 | status = -EIO; | ||
1318 | } | ||
1319 | } else { | ||
1320 | status = lv1_net_control(bus_id(card), dev_id(card), | ||
1321 | GELIC_LV1_SET_WOL, | ||
1322 | GELIC_LV1_WOL_MAGIC_PACKET, | ||
1323 | 0, GELIC_LV1_WOL_MP_DISABLE, | ||
1324 | &v1, &v2); | ||
1325 | if (status) { | ||
1326 | pr_info("%s: disabling WOL failed %d\n", __func__, | ||
1327 | status); | ||
1328 | status = -EIO; | ||
1329 | goto done; | ||
1330 | } | ||
1331 | status = lv1_net_control(bus_id(card), dev_id(card), | ||
1332 | GELIC_LV1_SET_WOL, | ||
1333 | GELIC_LV1_WOL_DELETE_MATCH_ADDR, | ||
1334 | 0, GELIC_LV1_WOL_MATCH_ALL, | ||
1335 | &v1, &v2); | ||
1336 | if (!status) | ||
1337 | ps3_sys_manager_set_wol(0); | ||
1338 | else { | ||
1339 | pr_info("%s: removing WOL filter failed %d\n", | ||
1340 | __func__, status); | ||
1341 | status = -EIO; | ||
1342 | } | ||
1343 | } | ||
1344 | done: | ||
1345 | return status; | ||
1346 | } | ||
1347 | |||
1269 | static struct ethtool_ops gelic_ether_ethtool_ops = { | 1348 | static struct ethtool_ops gelic_ether_ethtool_ops = { |
1270 | .get_drvinfo = gelic_net_get_drvinfo, | 1349 | .get_drvinfo = gelic_net_get_drvinfo, |
1271 | .get_settings = gelic_ether_get_settings, | 1350 | .get_settings = gelic_ether_get_settings, |
@@ -1274,6 +1353,8 @@ static struct ethtool_ops gelic_ether_ethtool_ops = { | |||
1274 | .set_tx_csum = ethtool_op_set_tx_csum, | 1353 | .set_tx_csum = ethtool_op_set_tx_csum, |
1275 | .get_rx_csum = gelic_net_get_rx_csum, | 1354 | .get_rx_csum = gelic_net_get_rx_csum, |
1276 | .set_rx_csum = gelic_net_set_rx_csum, | 1355 | .set_rx_csum = gelic_net_set_rx_csum, |
1356 | .get_wol = gelic_net_get_wol, | ||
1357 | .set_wol = gelic_net_set_wol, | ||
1277 | }; | 1358 | }; |
1278 | 1359 | ||
1279 | /** | 1360 | /** |
diff --git a/drivers/net/ps3_gelic_net.h b/drivers/net/ps3_gelic_net.h index 1d39d06797e4..520f143c2c09 100644 --- a/drivers/net/ps3_gelic_net.h +++ b/drivers/net/ps3_gelic_net.h | |||
@@ -182,12 +182,32 @@ enum gelic_lv1_net_control_code { | |||
182 | GELIC_LV1_GET_ETH_PORT_STATUS = 2, | 182 | GELIC_LV1_GET_ETH_PORT_STATUS = 2, |
183 | GELIC_LV1_SET_NEGOTIATION_MODE = 3, | 183 | GELIC_LV1_SET_NEGOTIATION_MODE = 3, |
184 | GELIC_LV1_GET_VLAN_ID = 4, | 184 | GELIC_LV1_GET_VLAN_ID = 4, |
185 | GELIC_LV1_SET_WOL = 5, | ||
185 | GELIC_LV1_GET_CHANNEL = 6, | 186 | GELIC_LV1_GET_CHANNEL = 6, |
186 | GELIC_LV1_POST_WLAN_CMD = 9, | 187 | GELIC_LV1_POST_WLAN_CMD = 9, |
187 | GELIC_LV1_GET_WLAN_CMD_RESULT = 10, | 188 | GELIC_LV1_GET_WLAN_CMD_RESULT = 10, |
188 | GELIC_LV1_GET_WLAN_EVENT = 11 | 189 | GELIC_LV1_GET_WLAN_EVENT = 11 |
189 | }; | 190 | }; |
190 | 191 | ||
192 | /* for GELIC_LV1_SET_WOL */ | ||
193 | enum gelic_lv1_wol_command { | ||
194 | GELIC_LV1_WOL_MAGIC_PACKET = 1, | ||
195 | GELIC_LV1_WOL_ADD_MATCH_ADDR = 6, | ||
196 | GELIC_LV1_WOL_DELETE_MATCH_ADDR = 7, | ||
197 | }; | ||
198 | |||
199 | /* for GELIC_LV1_WOL_MAGIC_PACKET */ | ||
200 | enum gelic_lv1_wol_mp_arg { | ||
201 | GELIC_LV1_WOL_MP_DISABLE = 0, | ||
202 | GELIC_LV1_WOL_MP_ENABLE = 1, | ||
203 | }; | ||
204 | |||
205 | /* for GELIC_LV1_WOL_{ADD,DELETE}_MATCH_ADDR */ | ||
206 | enum gelic_lv1_wol_match_arg { | ||
207 | GELIC_LV1_WOL_MATCH_INDIVIDUAL = 0, | ||
208 | GELIC_LV1_WOL_MATCH_ALL = 1, | ||
209 | }; | ||
210 | |||
191 | /* status returened from GET_ETH_PORT_STATUS */ | 211 | /* status returened from GET_ETH_PORT_STATUS */ |
192 | enum gelic_lv1_ether_port_status { | 212 | enum gelic_lv1_ether_port_status { |
193 | GELIC_LV1_ETHER_LINK_UP = 0x0000000000000001L, | 213 | GELIC_LV1_ETHER_LINK_UP = 0x0000000000000001L, |
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index 29a4d650e8a8..2f11254bcc07 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c | |||
@@ -3853,7 +3853,13 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma | |||
3853 | 3853 | ||
3854 | ugeth_vdbg("%s: IN", __FUNCTION__); | 3854 | ugeth_vdbg("%s: IN", __FUNCTION__); |
3855 | 3855 | ||
3856 | prop = of_get_property(np, "device-id", NULL); | 3856 | prop = of_get_property(np, "cell-index", NULL); |
3857 | if (!prop) { | ||
3858 | prop = of_get_property(np, "device-id", NULL); | ||
3859 | if (!prop) | ||
3860 | return -ENODEV; | ||
3861 | } | ||
3862 | |||
3857 | ucc_num = *prop - 1; | 3863 | ucc_num = *prop - 1; |
3858 | if ((ucc_num < 0) || (ucc_num > 7)) | 3864 | if ((ucc_num < 0) || (ucc_num > 7)) |
3859 | return -ENODEV; | 3865 | return -ENODEV; |
diff --git a/drivers/net/ucc_geth_mii.c b/drivers/net/ucc_geth_mii.c index e4d3f330bac3..2af490781005 100644 --- a/drivers/net/ucc_geth_mii.c +++ b/drivers/net/ucc_geth_mii.c | |||
@@ -203,9 +203,14 @@ static int uec_mdio_probe(struct of_device *ofdev, const struct of_device_id *ma | |||
203 | if ((res.start >= tempres.start) && | 203 | if ((res.start >= tempres.start) && |
204 | (res.end <= tempres.end)) { | 204 | (res.end <= tempres.end)) { |
205 | /* set this UCC to be the MII master */ | 205 | /* set this UCC to be the MII master */ |
206 | const u32 *id = of_get_property(tempnp, "device-id", NULL); | 206 | const u32 *id; |
207 | if (id == NULL) | 207 | |
208 | goto bus_register_fail; | 208 | id = of_get_property(tempnp, "cell-index", NULL); |
209 | if (!id) { | ||
210 | id = of_get_property(tempnp, "device-id", NULL); | ||
211 | if (!id) | ||
212 | goto bus_register_fail; | ||
213 | } | ||
209 | 214 | ||
210 | ucc_set_qe_mux_mii_mng(*id - 1); | 215 | ucc_set_qe_mux_mii_mng(*id - 1); |
211 | 216 | ||
diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig index c03072b12f42..3a7a11a75fb4 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig | |||
@@ -1,3 +1,15 @@ | |||
1 | config OF_DEVICE | 1 | config OF_DEVICE |
2 | def_bool y | 2 | def_bool y |
3 | depends on OF && (SPARC || PPC_OF) | 3 | depends on OF && (SPARC || PPC_OF) |
4 | |||
5 | config OF_GPIO | ||
6 | def_bool y | ||
7 | depends on OF && PPC_OF && HAVE_GPIO_LIB | ||
8 | help | ||
9 | OpenFirmware GPIO accessors | ||
10 | |||
11 | config OF_I2C | ||
12 | def_tristate I2C | ||
13 | depends on PPC_OF && I2C | ||
14 | help | ||
15 | OpenFirmware I2C accessors | ||
diff --git a/drivers/of/Makefile b/drivers/of/Makefile index ab9be5d5255b..548772e871fd 100644 --- a/drivers/of/Makefile +++ b/drivers/of/Makefile | |||
@@ -1,2 +1,4 @@ | |||
1 | obj-y = base.o | 1 | obj-y = base.o |
2 | obj-$(CONFIG_OF_DEVICE) += device.o platform.o | 2 | obj-$(CONFIG_OF_DEVICE) += device.o platform.o |
3 | obj-$(CONFIG_OF_GPIO) += gpio.o | ||
4 | obj-$(CONFIG_OF_I2C) += of_i2c.o | ||
diff --git a/drivers/of/base.c b/drivers/of/base.c index 80c9deca5f35..9bd7c4a31253 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c | |||
@@ -117,6 +117,32 @@ int of_device_is_compatible(const struct device_node *device, | |||
117 | EXPORT_SYMBOL(of_device_is_compatible); | 117 | EXPORT_SYMBOL(of_device_is_compatible); |
118 | 118 | ||
119 | /** | 119 | /** |
120 | * of_device_is_available - check if a device is available for use | ||
121 | * | ||
122 | * @device: Node to check for availability | ||
123 | * | ||
124 | * Returns 1 if the status property is absent or set to "okay" or "ok", | ||
125 | * 0 otherwise | ||
126 | */ | ||
127 | int of_device_is_available(const struct device_node *device) | ||
128 | { | ||
129 | const char *status; | ||
130 | int statlen; | ||
131 | |||
132 | status = of_get_property(device, "status", &statlen); | ||
133 | if (status == NULL) | ||
134 | return 1; | ||
135 | |||
136 | if (statlen > 0) { | ||
137 | if (!strcmp(status, "okay") || !strcmp(status, "ok")) | ||
138 | return 1; | ||
139 | } | ||
140 | |||
141 | return 0; | ||
142 | } | ||
143 | EXPORT_SYMBOL(of_device_is_available); | ||
144 | |||
145 | /** | ||
120 | * of_get_parent - Get a node's parent if any | 146 | * of_get_parent - Get a node's parent if any |
121 | * @node: Node to get parent | 147 | * @node: Node to get parent |
122 | * | 148 | * |
diff --git a/drivers/of/gpio.c b/drivers/of/gpio.c new file mode 100644 index 000000000000..000681e98f2c --- /dev/null +++ b/drivers/of/gpio.c | |||
@@ -0,0 +1,242 @@ | |||
1 | /* | ||
2 | * OF helpers for the GPIO API | ||
3 | * | ||
4 | * Copyright (c) 2007-2008 MontaVista Software, Inc. | ||
5 | * | ||
6 | * Author: Anton Vorontsov <avorontsov@ru.mvista.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/errno.h> | ||
16 | #include <linux/io.h> | ||
17 | #include <linux/of.h> | ||
18 | #include <linux/of_gpio.h> | ||
19 | #include <asm/prom.h> | ||
20 | |||
21 | /** | ||
22 | * of_get_gpio - Get a GPIO number from the device tree to use with GPIO API | ||
23 | * @np: device node to get GPIO from | ||
24 | * @index: index of the GPIO | ||
25 | * | ||
26 | * Returns GPIO number to use with Linux generic GPIO API, or one of the errno | ||
27 | * value on the error condition. | ||
28 | */ | ||
29 | int of_get_gpio(struct device_node *np, int index) | ||
30 | { | ||
31 | int ret = -EINVAL; | ||
32 | struct device_node *gc; | ||
33 | struct of_gpio_chip *of_gc = NULL; | ||
34 | int size; | ||
35 | const u32 *gpios; | ||
36 | u32 nr_cells; | ||
37 | int i; | ||
38 | const void *gpio_spec; | ||
39 | const u32 *gpio_cells; | ||
40 | int gpio_index = 0; | ||
41 | |||
42 | gpios = of_get_property(np, "gpios", &size); | ||
43 | if (!gpios) { | ||
44 | ret = -ENOENT; | ||
45 | goto err0; | ||
46 | } | ||
47 | nr_cells = size / sizeof(u32); | ||
48 | |||
49 | for (i = 0; i < nr_cells; gpio_index++) { | ||
50 | const phandle *gpio_phandle; | ||
51 | |||
52 | gpio_phandle = gpios + i; | ||
53 | gpio_spec = gpio_phandle + 1; | ||
54 | |||
55 | /* one cell hole in the gpios = <>; */ | ||
56 | if (!*gpio_phandle) { | ||
57 | if (gpio_index == index) | ||
58 | return -ENOENT; | ||
59 | i++; | ||
60 | continue; | ||
61 | } | ||
62 | |||
63 | gc = of_find_node_by_phandle(*gpio_phandle); | ||
64 | if (!gc) { | ||
65 | pr_debug("%s: could not find phandle for gpios\n", | ||
66 | np->full_name); | ||
67 | goto err0; | ||
68 | } | ||
69 | |||
70 | of_gc = gc->data; | ||
71 | if (!of_gc) { | ||
72 | pr_debug("%s: gpio controller %s isn't registered\n", | ||
73 | np->full_name, gc->full_name); | ||
74 | goto err1; | ||
75 | } | ||
76 | |||
77 | gpio_cells = of_get_property(gc, "#gpio-cells", &size); | ||
78 | if (!gpio_cells || size != sizeof(*gpio_cells) || | ||
79 | *gpio_cells != of_gc->gpio_cells) { | ||
80 | pr_debug("%s: wrong #gpio-cells for %s\n", | ||
81 | np->full_name, gc->full_name); | ||
82 | goto err1; | ||
83 | } | ||
84 | |||
85 | /* Next phandle is at phandle cells + #gpio-cells */ | ||
86 | i += sizeof(*gpio_phandle) / sizeof(u32) + *gpio_cells; | ||
87 | if (i >= nr_cells + 1) { | ||
88 | pr_debug("%s: insufficient gpio-spec length\n", | ||
89 | np->full_name); | ||
90 | goto err1; | ||
91 | } | ||
92 | |||
93 | if (gpio_index == index) | ||
94 | break; | ||
95 | |||
96 | of_gc = NULL; | ||
97 | of_node_put(gc); | ||
98 | } | ||
99 | |||
100 | if (!of_gc) { | ||
101 | ret = -ENOENT; | ||
102 | goto err0; | ||
103 | } | ||
104 | |||
105 | ret = of_gc->xlate(of_gc, np, gpio_spec); | ||
106 | if (ret < 0) | ||
107 | goto err1; | ||
108 | |||
109 | ret += of_gc->gc.base; | ||
110 | err1: | ||
111 | of_node_put(gc); | ||
112 | err0: | ||
113 | pr_debug("%s exited with status %d\n", __func__, ret); | ||
114 | return ret; | ||
115 | } | ||
116 | EXPORT_SYMBOL(of_get_gpio); | ||
117 | |||
118 | /** | ||
119 | * of_gpio_simple_xlate - translate gpio_spec to the GPIO number | ||
120 | * @of_gc: pointer to the of_gpio_chip structure | ||
121 | * @np: device node of the GPIO chip | ||
122 | * @gpio_spec: gpio specifier as found in the device tree | ||
123 | * | ||
124 | * This is simple translation function, suitable for the most 1:1 mapped | ||
125 | * gpio chips. This function performs only one sanity check: whether gpio | ||
126 | * is less than ngpios (that is specified in the gpio_chip). | ||
127 | */ | ||
128 | int of_gpio_simple_xlate(struct of_gpio_chip *of_gc, struct device_node *np, | ||
129 | const void *gpio_spec) | ||
130 | { | ||
131 | const u32 *gpio = gpio_spec; | ||
132 | |||
133 | if (*gpio > of_gc->gc.ngpio) | ||
134 | return -EINVAL; | ||
135 | |||
136 | return *gpio; | ||
137 | } | ||
138 | EXPORT_SYMBOL(of_gpio_simple_xlate); | ||
139 | |||
140 | /* Should be sufficient for now, later we'll use dynamic bases. */ | ||
141 | #if defined(CONFIG_PPC32) || defined(CONFIG_SPARC32) | ||
142 | #define GPIOS_PER_CHIP 32 | ||
143 | #else | ||
144 | #define GPIOS_PER_CHIP 64 | ||
145 | #endif | ||
146 | |||
147 | static int of_get_gpiochip_base(struct device_node *np) | ||
148 | { | ||
149 | struct device_node *gc = NULL; | ||
150 | int gpiochip_base = 0; | ||
151 | |||
152 | while ((gc = of_find_all_nodes(gc))) { | ||
153 | if (!of_get_property(gc, "gpio-controller", NULL)) | ||
154 | continue; | ||
155 | |||
156 | if (gc != np) { | ||
157 | gpiochip_base += GPIOS_PER_CHIP; | ||
158 | continue; | ||
159 | } | ||
160 | |||
161 | of_node_put(gc); | ||
162 | |||
163 | if (gpiochip_base >= ARCH_NR_GPIOS) | ||
164 | return -ENOSPC; | ||
165 | |||
166 | return gpiochip_base; | ||
167 | } | ||
168 | |||
169 | return -ENOENT; | ||
170 | } | ||
171 | |||
172 | /** | ||
173 | * of_mm_gpiochip_add - Add memory mapped GPIO chip (bank) | ||
174 | * @np: device node of the GPIO chip | ||
175 | * @mm_gc: pointer to the of_mm_gpio_chip allocated structure | ||
176 | * | ||
177 | * To use this function you should allocate and fill mm_gc with: | ||
178 | * | ||
179 | * 1) In the gpio_chip structure: | ||
180 | * - all the callbacks | ||
181 | * | ||
182 | * 2) In the of_gpio_chip structure: | ||
183 | * - gpio_cells | ||
184 | * - xlate callback (optional) | ||
185 | * | ||
186 | * 3) In the of_mm_gpio_chip structure: | ||
187 | * - save_regs callback (optional) | ||
188 | * | ||
189 | * If succeeded, this function will map bank's memory and will | ||
190 | * do all necessary work for you. Then you'll able to use .regs | ||
191 | * to manage GPIOs from the callbacks. | ||
192 | */ | ||
193 | int of_mm_gpiochip_add(struct device_node *np, | ||
194 | struct of_mm_gpio_chip *mm_gc) | ||
195 | { | ||
196 | int ret = -ENOMEM; | ||
197 | struct of_gpio_chip *of_gc = &mm_gc->of_gc; | ||
198 | struct gpio_chip *gc = &of_gc->gc; | ||
199 | |||
200 | gc->label = kstrdup(np->full_name, GFP_KERNEL); | ||
201 | if (!gc->label) | ||
202 | goto err0; | ||
203 | |||
204 | mm_gc->regs = of_iomap(np, 0); | ||
205 | if (!mm_gc->regs) | ||
206 | goto err1; | ||
207 | |||
208 | gc->base = of_get_gpiochip_base(np); | ||
209 | if (gc->base < 0) { | ||
210 | ret = gc->base; | ||
211 | goto err1; | ||
212 | } | ||
213 | |||
214 | if (!of_gc->xlate) | ||
215 | of_gc->xlate = of_gpio_simple_xlate; | ||
216 | |||
217 | if (mm_gc->save_regs) | ||
218 | mm_gc->save_regs(mm_gc); | ||
219 | |||
220 | np->data = of_gc; | ||
221 | |||
222 | ret = gpiochip_add(gc); | ||
223 | if (ret) | ||
224 | goto err2; | ||
225 | |||
226 | /* We don't want to lose the node and its ->data */ | ||
227 | of_node_get(np); | ||
228 | |||
229 | pr_debug("%s: registered as generic GPIO chip, base is %d\n", | ||
230 | np->full_name, gc->base); | ||
231 | return 0; | ||
232 | err2: | ||
233 | np->data = NULL; | ||
234 | iounmap(mm_gc->regs); | ||
235 | err1: | ||
236 | kfree(gc->label); | ||
237 | err0: | ||
238 | pr_err("%s: GPIO chip registration failed with status %d\n", | ||
239 | np->full_name, ret); | ||
240 | return ret; | ||
241 | } | ||
242 | EXPORT_SYMBOL(of_mm_gpiochip_add); | ||
diff --git a/drivers/of/of_i2c.c b/drivers/of/of_i2c.c new file mode 100644 index 000000000000..631689171159 --- /dev/null +++ b/drivers/of/of_i2c.c | |||
@@ -0,0 +1,115 @@ | |||
1 | /* | ||
2 | * OF helpers for the I2C API | ||
3 | * | ||
4 | * Copyright (c) 2008 Jochen Friedrich <jochen@scram.de> | ||
5 | * | ||
6 | * Based on a previous patch from Jon Smirl <jonsmirl@gmail.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #include <linux/i2c.h> | ||
15 | #include <linux/of.h> | ||
16 | |||
17 | struct i2c_driver_device { | ||
18 | char *of_device; | ||
19 | char *i2c_type; | ||
20 | }; | ||
21 | |||
22 | static struct i2c_driver_device i2c_devices[] = { | ||
23 | { "dallas,ds1374", "rtc-ds1374" }, | ||
24 | }; | ||
25 | |||
26 | static int of_find_i2c_driver(struct device_node *node, | ||
27 | struct i2c_board_info *info) | ||
28 | { | ||
29 | int i, cplen; | ||
30 | const char *compatible; | ||
31 | const char *p; | ||
32 | |||
33 | /* 1. search for exception list entry */ | ||
34 | for (i = 0; i < ARRAY_SIZE(i2c_devices); i++) { | ||
35 | if (!of_device_is_compatible(node, i2c_devices[i].of_device)) | ||
36 | continue; | ||
37 | if (strlcpy(info->type, i2c_devices[i].i2c_type, | ||
38 | I2C_NAME_SIZE) >= I2C_NAME_SIZE) | ||
39 | return -ENOMEM; | ||
40 | |||
41 | return 0; | ||
42 | } | ||
43 | |||
44 | compatible = of_get_property(node, "compatible", &cplen); | ||
45 | if (!compatible) | ||
46 | return -ENODEV; | ||
47 | |||
48 | /* 2. search for linux,<i2c-type> entry */ | ||
49 | p = compatible; | ||
50 | while (cplen > 0) { | ||
51 | if (!strncmp(p, "linux,", 6)) { | ||
52 | p += 6; | ||
53 | if (strlcpy(info->type, p, | ||
54 | I2C_NAME_SIZE) >= I2C_NAME_SIZE) | ||
55 | return -ENOMEM; | ||
56 | return 0; | ||
57 | } | ||
58 | |||
59 | i = strlen(p) + 1; | ||
60 | p += i; | ||
61 | cplen -= i; | ||
62 | } | ||
63 | |||
64 | /* 3. take fist compatible entry and strip manufacturer */ | ||
65 | p = strchr(compatible, ','); | ||
66 | if (!p) | ||
67 | return -ENODEV; | ||
68 | p++; | ||
69 | if (strlcpy(info->type, p, I2C_NAME_SIZE) >= I2C_NAME_SIZE) | ||
70 | return -ENOMEM; | ||
71 | return 0; | ||
72 | } | ||
73 | |||
74 | void of_register_i2c_devices(struct i2c_adapter *adap, | ||
75 | struct device_node *adap_node) | ||
76 | { | ||
77 | void *result; | ||
78 | struct device_node *node; | ||
79 | |||
80 | for_each_child_of_node(adap_node, node) { | ||
81 | struct i2c_board_info info = {}; | ||
82 | const u32 *addr; | ||
83 | int len; | ||
84 | |||
85 | addr = of_get_property(node, "reg", &len); | ||
86 | if (!addr || len < sizeof(int) || *addr > (1 << 10) - 1) { | ||
87 | printk(KERN_ERR | ||
88 | "of-i2c: invalid i2c device entry\n"); | ||
89 | continue; | ||
90 | } | ||
91 | |||
92 | info.irq = irq_of_parse_and_map(node, 0); | ||
93 | if (info.irq == NO_IRQ) | ||
94 | info.irq = -1; | ||
95 | |||
96 | if (of_find_i2c_driver(node, &info) < 0) { | ||
97 | irq_dispose_mapping(info.irq); | ||
98 | continue; | ||
99 | } | ||
100 | |||
101 | info.addr = *addr; | ||
102 | |||
103 | request_module(info.type); | ||
104 | |||
105 | result = i2c_new_device(adap, &info); | ||
106 | if (result == NULL) { | ||
107 | printk(KERN_ERR | ||
108 | "of-i2c: Failed to load driver for %s\n", | ||
109 | info.type); | ||
110 | irq_dispose_mapping(info.irq); | ||
111 | continue; | ||
112 | } | ||
113 | } | ||
114 | } | ||
115 | EXPORT_SYMBOL(of_register_i2c_devices); | ||
diff --git a/drivers/ps3/ps3-sys-manager.c b/drivers/ps3/ps3-sys-manager.c index d4f6f960dd18..7605453b74fd 100644 --- a/drivers/ps3/ps3-sys-manager.c +++ b/drivers/ps3/ps3-sys-manager.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/reboot.h> | 24 | #include <linux/reboot.h> |
25 | 25 | ||
26 | #include <asm/firmware.h> | 26 | #include <asm/firmware.h> |
27 | #include <asm/lv1call.h> | ||
27 | #include <asm/ps3.h> | 28 | #include <asm/ps3.h> |
28 | 29 | ||
29 | #include "vuart.h" | 30 | #include "vuart.h" |
@@ -187,6 +188,7 @@ enum ps3_sys_manager_next_op { | |||
187 | * controller, and bluetooth controller. | 188 | * controller, and bluetooth controller. |
188 | * @PS3_SM_WAKE_RTC: | 189 | * @PS3_SM_WAKE_RTC: |
189 | * @PS3_SM_WAKE_RTC_ERROR: | 190 | * @PS3_SM_WAKE_RTC_ERROR: |
191 | * @PS3_SM_WAKE_W_O_L: Ether or wireless LAN. | ||
190 | * @PS3_SM_WAKE_P_O_R: Power on reset. | 192 | * @PS3_SM_WAKE_P_O_R: Power on reset. |
191 | * | 193 | * |
192 | * Additional wakeup sources when specifying PS3_SM_NEXT_OP_SYS_SHUTDOWN. | 194 | * Additional wakeup sources when specifying PS3_SM_NEXT_OP_SYS_SHUTDOWN. |
@@ -200,10 +202,19 @@ enum ps3_sys_manager_wake_source { | |||
200 | PS3_SM_WAKE_DEFAULT = 0, | 202 | PS3_SM_WAKE_DEFAULT = 0, |
201 | PS3_SM_WAKE_RTC = 0x00000040, | 203 | PS3_SM_WAKE_RTC = 0x00000040, |
202 | PS3_SM_WAKE_RTC_ERROR = 0x00000080, | 204 | PS3_SM_WAKE_RTC_ERROR = 0x00000080, |
205 | PS3_SM_WAKE_W_O_L = 0x00000400, | ||
203 | PS3_SM_WAKE_P_O_R = 0x80000000, | 206 | PS3_SM_WAKE_P_O_R = 0x80000000, |
204 | }; | 207 | }; |
205 | 208 | ||
206 | /** | 209 | /** |
210 | * user_wake_sources - User specified wakeup sources. | ||
211 | * | ||
212 | * Logical OR of enum ps3_sys_manager_wake_source types. | ||
213 | */ | ||
214 | |||
215 | static u32 user_wake_sources = PS3_SM_WAKE_DEFAULT; | ||
216 | |||
217 | /** | ||
207 | * enum ps3_sys_manager_cmd - Command from system manager to guest. | 218 | * enum ps3_sys_manager_cmd - Command from system manager to guest. |
208 | * | 219 | * |
209 | * The guest completes the actions needed, then acks or naks the command via | 220 | * The guest completes the actions needed, then acks or naks the command via |
@@ -581,6 +592,23 @@ fail_id: | |||
581 | return -EIO; | 592 | return -EIO; |
582 | } | 593 | } |
583 | 594 | ||
595 | static void ps3_sys_manager_fin(struct ps3_system_bus_device *dev) | ||
596 | { | ||
597 | ps3_sys_manager_send_request_shutdown(dev); | ||
598 | |||
599 | pr_emerg("System Halted, OK to turn off power\n"); | ||
600 | |||
601 | while (ps3_sys_manager_handle_msg(dev)) { | ||
602 | /* pause until next DEC interrupt */ | ||
603 | lv1_pause(0); | ||
604 | } | ||
605 | |||
606 | while (1) { | ||
607 | /* pause, ignoring DEC interrupt */ | ||
608 | lv1_pause(1); | ||
609 | } | ||
610 | } | ||
611 | |||
584 | /** | 612 | /** |
585 | * ps3_sys_manager_final_power_off - The final platform machine_power_off routine. | 613 | * ps3_sys_manager_final_power_off - The final platform machine_power_off routine. |
586 | * | 614 | * |
@@ -601,13 +629,9 @@ static void ps3_sys_manager_final_power_off(struct ps3_system_bus_device *dev) | |||
601 | ps3_vuart_cancel_async(dev); | 629 | ps3_vuart_cancel_async(dev); |
602 | 630 | ||
603 | ps3_sys_manager_send_next_op(dev, PS3_SM_NEXT_OP_SYS_SHUTDOWN, | 631 | ps3_sys_manager_send_next_op(dev, PS3_SM_NEXT_OP_SYS_SHUTDOWN, |
604 | PS3_SM_WAKE_DEFAULT); | 632 | user_wake_sources); |
605 | ps3_sys_manager_send_request_shutdown(dev); | ||
606 | |||
607 | pr_emerg("System Halted, OK to turn off power\n"); | ||
608 | 633 | ||
609 | while (1) | 634 | ps3_sys_manager_fin(dev); |
610 | ps3_sys_manager_handle_msg(dev); | ||
611 | } | 635 | } |
612 | 636 | ||
613 | /** | 637 | /** |
@@ -638,14 +662,42 @@ static void ps3_sys_manager_final_restart(struct ps3_system_bus_device *dev) | |||
638 | 662 | ||
639 | ps3_sys_manager_send_attr(dev, 0); | 663 | ps3_sys_manager_send_attr(dev, 0); |
640 | ps3_sys_manager_send_next_op(dev, PS3_SM_NEXT_OP_SYS_REBOOT, | 664 | ps3_sys_manager_send_next_op(dev, PS3_SM_NEXT_OP_SYS_REBOOT, |
641 | PS3_SM_WAKE_DEFAULT); | 665 | user_wake_sources); |
642 | ps3_sys_manager_send_request_shutdown(dev); | ||
643 | 666 | ||
644 | pr_emerg("System Halted, OK to turn off power\n"); | 667 | ps3_sys_manager_fin(dev); |
668 | } | ||
669 | |||
670 | /** | ||
671 | * ps3_sys_manager_get_wol - Get wake-on-lan setting. | ||
672 | */ | ||
673 | |||
674 | int ps3_sys_manager_get_wol(void) | ||
675 | { | ||
676 | pr_debug("%s:%d\n", __func__, __LINE__); | ||
677 | |||
678 | return (user_wake_sources & PS3_SM_WAKE_W_O_L) != 0; | ||
679 | } | ||
680 | EXPORT_SYMBOL_GPL(ps3_sys_manager_get_wol); | ||
681 | |||
682 | /** | ||
683 | * ps3_sys_manager_set_wol - Set wake-on-lan setting. | ||
684 | */ | ||
685 | |||
686 | void ps3_sys_manager_set_wol(int state) | ||
687 | { | ||
688 | static DEFINE_MUTEX(mutex); | ||
689 | |||
690 | mutex_lock(&mutex); | ||
691 | |||
692 | pr_debug("%s:%d: %d\n", __func__, __LINE__, state); | ||
645 | 693 | ||
646 | while (1) | 694 | if (state) |
647 | ps3_sys_manager_handle_msg(dev); | 695 | user_wake_sources |= PS3_SM_WAKE_W_O_L; |
696 | else | ||
697 | user_wake_sources &= ~PS3_SM_WAKE_W_O_L; | ||
698 | mutex_unlock(&mutex); | ||
648 | } | 699 | } |
700 | EXPORT_SYMBOL_GPL(ps3_sys_manager_set_wol); | ||
649 | 701 | ||
650 | /** | 702 | /** |
651 | * ps3_sys_manager_work - Asynchronous read handler. | 703 | * ps3_sys_manager_work - Asynchronous read handler. |
diff --git a/drivers/ps3/sys-manager-core.c b/drivers/ps3/sys-manager-core.c index 31648f7d9ae1..474225852b63 100644 --- a/drivers/ps3/sys-manager-core.c +++ b/drivers/ps3/sys-manager-core.c | |||
@@ -19,6 +19,7 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
22 | #include <asm/lv1call.h> | ||
22 | #include <asm/ps3.h> | 23 | #include <asm/ps3.h> |
23 | 24 | ||
24 | /** | 25 | /** |
@@ -50,10 +51,7 @@ void ps3_sys_manager_power_off(void) | |||
50 | if (ps3_sys_manager_ops.power_off) | 51 | if (ps3_sys_manager_ops.power_off) |
51 | ps3_sys_manager_ops.power_off(ps3_sys_manager_ops.dev); | 52 | ps3_sys_manager_ops.power_off(ps3_sys_manager_ops.dev); |
52 | 53 | ||
53 | printk(KERN_EMERG "System Halted, OK to turn off power\n"); | 54 | ps3_sys_manager_halt(); |
54 | local_irq_disable(); | ||
55 | while (1) | ||
56 | (void)0; | ||
57 | } | 55 | } |
58 | 56 | ||
59 | void ps3_sys_manager_restart(void) | 57 | void ps3_sys_manager_restart(void) |
@@ -61,8 +59,14 @@ void ps3_sys_manager_restart(void) | |||
61 | if (ps3_sys_manager_ops.restart) | 59 | if (ps3_sys_manager_ops.restart) |
62 | ps3_sys_manager_ops.restart(ps3_sys_manager_ops.dev); | 60 | ps3_sys_manager_ops.restart(ps3_sys_manager_ops.dev); |
63 | 61 | ||
64 | printk(KERN_EMERG "System Halted, OK to turn off power\n"); | 62 | ps3_sys_manager_halt(); |
63 | } | ||
64 | |||
65 | void ps3_sys_manager_halt(void) | ||
66 | { | ||
67 | pr_emerg("System Halted, OK to turn off power\n"); | ||
65 | local_irq_disable(); | 68 | local_irq_disable(); |
66 | while (1) | 69 | while (1) |
67 | (void)0; | 70 | lv1_pause(1); |
68 | } | 71 | } |
72 | |||
diff --git a/drivers/serial/cpm_uart/cpm_uart.h b/drivers/serial/cpm_uart/cpm_uart.h index 32b9737759c4..0cc39f82d7c5 100644 --- a/drivers/serial/cpm_uart/cpm_uart.h +++ b/drivers/serial/cpm_uart/cpm_uart.h | |||
@@ -92,6 +92,9 @@ extern struct uart_cpm_port cpm_uart_ports[UART_NR]; | |||
92 | 92 | ||
93 | /* these are located in their respective files */ | 93 | /* these are located in their respective files */ |
94 | void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd); | 94 | void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd); |
95 | void __iomem *cpm_uart_map_pram(struct uart_cpm_port *port, | ||
96 | struct device_node *np); | ||
97 | void cpm_uart_unmap_pram(struct uart_cpm_port *port, void __iomem *pram); | ||
95 | int cpm_uart_init_portdesc(void); | 98 | int cpm_uart_init_portdesc(void); |
96 | int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con); | 99 | int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con); |
97 | void cpm_uart_freebuf(struct uart_cpm_port *pinfo); | 100 | void cpm_uart_freebuf(struct uart_cpm_port *pinfo); |
diff --git a/drivers/serial/cpm_uart/cpm_uart_core.c b/drivers/serial/cpm_uart/cpm_uart_core.c index 236af9d33851..a638ba0679ac 100644 --- a/drivers/serial/cpm_uart/cpm_uart_core.c +++ b/drivers/serial/cpm_uart/cpm_uart_core.c | |||
@@ -966,24 +966,23 @@ static int cpm_uart_init_port(struct device_node *np, | |||
966 | if (!mem) | 966 | if (!mem) |
967 | return -ENOMEM; | 967 | return -ENOMEM; |
968 | 968 | ||
969 | pram = of_iomap(np, 1); | ||
970 | if (!pram) { | ||
971 | ret = -ENOMEM; | ||
972 | goto out_mem; | ||
973 | } | ||
974 | |||
975 | if (of_device_is_compatible(np, "fsl,cpm1-scc-uart") || | 969 | if (of_device_is_compatible(np, "fsl,cpm1-scc-uart") || |
976 | of_device_is_compatible(np, "fsl,cpm2-scc-uart")) { | 970 | of_device_is_compatible(np, "fsl,cpm2-scc-uart")) { |
977 | pinfo->sccp = mem; | 971 | pinfo->sccp = mem; |
978 | pinfo->sccup = pram; | 972 | pinfo->sccup = pram = cpm_uart_map_pram(pinfo, np); |
979 | } else if (of_device_is_compatible(np, "fsl,cpm1-smc-uart") || | 973 | } else if (of_device_is_compatible(np, "fsl,cpm1-smc-uart") || |
980 | of_device_is_compatible(np, "fsl,cpm2-smc-uart")) { | 974 | of_device_is_compatible(np, "fsl,cpm2-smc-uart")) { |
981 | pinfo->flags |= FLAG_SMC; | 975 | pinfo->flags |= FLAG_SMC; |
982 | pinfo->smcp = mem; | 976 | pinfo->smcp = mem; |
983 | pinfo->smcup = pram; | 977 | pinfo->smcup = pram = cpm_uart_map_pram(pinfo, np); |
984 | } else { | 978 | } else { |
985 | ret = -ENODEV; | 979 | ret = -ENODEV; |
986 | goto out_pram; | 980 | goto out_mem; |
981 | } | ||
982 | |||
983 | if (!pram) { | ||
984 | ret = -ENOMEM; | ||
985 | goto out_mem; | ||
987 | } | 986 | } |
988 | 987 | ||
989 | pinfo->tx_nrfifos = TX_NUM_FIFO; | 988 | pinfo->tx_nrfifos = TX_NUM_FIFO; |
@@ -1007,7 +1006,7 @@ static int cpm_uart_init_port(struct device_node *np, | |||
1007 | return cpm_uart_request_port(&pinfo->port); | 1006 | return cpm_uart_request_port(&pinfo->port); |
1008 | 1007 | ||
1009 | out_pram: | 1008 | out_pram: |
1010 | iounmap(pram); | 1009 | cpm_uart_unmap_pram(pinfo, pram); |
1011 | out_mem: | 1010 | out_mem: |
1012 | iounmap(mem); | 1011 | iounmap(mem); |
1013 | return ret; | 1012 | return ret; |
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm1.c b/drivers/serial/cpm_uart/cpm_uart_cpm1.c index 6ea0366e26ae..74f1432bb248 100644 --- a/drivers/serial/cpm_uart/cpm_uart_cpm1.c +++ b/drivers/serial/cpm_uart/cpm_uart_cpm1.c | |||
@@ -45,6 +45,8 @@ | |||
45 | #include <linux/serial_core.h> | 45 | #include <linux/serial_core.h> |
46 | #include <linux/kernel.h> | 46 | #include <linux/kernel.h> |
47 | 47 | ||
48 | #include <linux/of.h> | ||
49 | |||
48 | #include "cpm_uart.h" | 50 | #include "cpm_uart.h" |
49 | 51 | ||
50 | /**************************************************************/ | 52 | /**************************************************************/ |
@@ -54,6 +56,18 @@ void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd) | |||
54 | { | 56 | { |
55 | cpm_command(port->command, cmd); | 57 | cpm_command(port->command, cmd); |
56 | } | 58 | } |
59 | |||
60 | void __iomem *cpm_uart_map_pram(struct uart_cpm_port *port, | ||
61 | struct device_node *np) | ||
62 | { | ||
63 | return of_iomap(np, 1); | ||
64 | } | ||
65 | |||
66 | void cpm_uart_unmap_pram(struct uart_cpm_port *port, void __iomem *pram) | ||
67 | { | ||
68 | iounmap(pram); | ||
69 | } | ||
70 | |||
57 | #else | 71 | #else |
58 | void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd) | 72 | void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd) |
59 | { | 73 | { |
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm2.c b/drivers/serial/cpm_uart/cpm_uart_cpm2.c index d9af06a791ba..bb862e2f54cf 100644 --- a/drivers/serial/cpm_uart/cpm_uart_cpm2.c +++ b/drivers/serial/cpm_uart/cpm_uart_cpm2.c | |||
@@ -41,6 +41,9 @@ | |||
41 | #include <asm/io.h> | 41 | #include <asm/io.h> |
42 | #include <asm/irq.h> | 42 | #include <asm/irq.h> |
43 | #include <asm/fs_pd.h> | 43 | #include <asm/fs_pd.h> |
44 | #ifdef CONFIG_PPC_CPM_NEW_BINDING | ||
45 | #include <asm/prom.h> | ||
46 | #endif | ||
44 | 47 | ||
45 | #include <linux/serial_core.h> | 48 | #include <linux/serial_core.h> |
46 | #include <linux/kernel.h> | 49 | #include <linux/kernel.h> |
@@ -54,6 +57,55 @@ void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd) | |||
54 | { | 57 | { |
55 | cpm_command(port->command, cmd); | 58 | cpm_command(port->command, cmd); |
56 | } | 59 | } |
60 | |||
61 | void __iomem *cpm_uart_map_pram(struct uart_cpm_port *port, | ||
62 | struct device_node *np) | ||
63 | { | ||
64 | void __iomem *pram; | ||
65 | unsigned long offset; | ||
66 | struct resource res; | ||
67 | unsigned long len; | ||
68 | |||
69 | /* Don't remap parameter RAM if it has already been initialized | ||
70 | * during console setup. | ||
71 | */ | ||
72 | if (IS_SMC(port) && port->smcup) | ||
73 | return port->smcup; | ||
74 | else if (!IS_SMC(port) && port->sccup) | ||
75 | return port->sccup; | ||
76 | |||
77 | if (of_address_to_resource(np, 1, &res)) | ||
78 | return NULL; | ||
79 | |||
80 | len = 1 + res.end - res.start; | ||
81 | pram = ioremap(res.start, len); | ||
82 | if (!pram) | ||
83 | return NULL; | ||
84 | |||
85 | if (!IS_SMC(port)) | ||
86 | return pram; | ||
87 | |||
88 | if (len != 2) { | ||
89 | printk(KERN_WARNING "cpm_uart[%d]: device tree references " | ||
90 | "SMC pram, using boot loader/wrapper pram mapping. " | ||
91 | "Please fix your device tree to reference the pram " | ||
92 | "base register instead.\n", | ||
93 | port->port.line); | ||
94 | return pram; | ||
95 | } | ||
96 | |||
97 | offset = cpm_dpalloc(PROFF_SMC_SIZE, 64); | ||
98 | out_be16(pram, offset); | ||
99 | iounmap(pram); | ||
100 | return cpm_muram_addr(offset); | ||
101 | } | ||
102 | |||
103 | void cpm_uart_unmap_pram(struct uart_cpm_port *port, void __iomem *pram) | ||
104 | { | ||
105 | if (!IS_SMC(port)) | ||
106 | iounmap(pram); | ||
107 | } | ||
108 | |||
57 | #else | 109 | #else |
58 | void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd) | 110 | void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd) |
59 | { | 111 | { |
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c index c0e50a461055..8aacfb78deab 100644 --- a/drivers/serial/of_serial.c +++ b/drivers/serial/of_serial.c | |||
@@ -56,7 +56,9 @@ static int __devinit of_platform_serial_setup(struct of_device *ofdev, | |||
56 | port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP | 56 | port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP |
57 | | UPF_FIXED_PORT; | 57 | | UPF_FIXED_PORT; |
58 | port->dev = &ofdev->dev; | 58 | port->dev = &ofdev->dev; |
59 | port->custom_divisor = *clk / (16 * (*spd)); | 59 | /* If current-speed was set, then try not to change it. */ |
60 | if (spd) | ||
61 | port->custom_divisor = *clk / (16 * (*spd)); | ||
60 | 62 | ||
61 | return 0; | 63 | return 0; |
62 | } | 64 | } |
diff --git a/drivers/serial/ucc_uart.c b/drivers/serial/ucc_uart.c index e0994f061001..5e4310ccd591 100644 --- a/drivers/serial/ucc_uart.c +++ b/drivers/serial/ucc_uart.c | |||
@@ -1270,10 +1270,18 @@ static int ucc_uart_probe(struct of_device *ofdev, | |||
1270 | 1270 | ||
1271 | /* Get the UCC number (device ID) */ | 1271 | /* Get the UCC number (device ID) */ |
1272 | /* UCCs are numbered 1-7 */ | 1272 | /* UCCs are numbered 1-7 */ |
1273 | iprop = of_get_property(np, "device-id", NULL); | 1273 | iprop = of_get_property(np, "cell-index", NULL); |
1274 | if (!iprop || (*iprop < 1) || (*iprop > UCC_MAX_NUM)) { | 1274 | if (!iprop) { |
1275 | dev_err(&ofdev->dev, | 1275 | iprop = of_get_property(np, "device-id", NULL); |
1276 | "missing or invalid UCC specified in device tree\n"); | 1276 | if (!iprop) { |
1277 | dev_err(&ofdev->dev, "UCC is unspecified in " | ||
1278 | "device tree\n"); | ||
1279 | return -EINVAL; | ||
1280 | } | ||
1281 | } | ||
1282 | |||
1283 | if ((*iprop < 1) || (*iprop > UCC_MAX_NUM)) { | ||
1284 | dev_err(&ofdev->dev, "no support for UCC%u\n", *iprop); | ||
1277 | kfree(qe_port); | 1285 | kfree(qe_port); |
1278 | return -ENODEV; | 1286 | return -ENODEV; |
1279 | } | 1287 | } |
diff --git a/include/asm-powerpc/Kbuild b/include/asm-powerpc/Kbuild index 5f640e542475..7381916dfcbb 100644 --- a/include/asm-powerpc/Kbuild +++ b/include/asm-powerpc/Kbuild | |||
@@ -1,5 +1,6 @@ | |||
1 | include include/asm-generic/Kbuild.asm | 1 | include include/asm-generic/Kbuild.asm |
2 | 2 | ||
3 | header-y += a.out.h | ||
3 | header-y += auxvec.h | 4 | header-y += auxvec.h |
4 | header-y += ioctls.h | 5 | header-y += ioctls.h |
5 | header-y += mman.h | 6 | header-y += mman.h |
@@ -23,7 +24,6 @@ header-y += sigcontext.h | |||
23 | header-y += statfs.h | 24 | header-y += statfs.h |
24 | header-y += ps3fb.h | 25 | header-y += ps3fb.h |
25 | 26 | ||
26 | unifdef-y += a.out.h | ||
27 | unifdef-y += asm-compat.h | 27 | unifdef-y += asm-compat.h |
28 | unifdef-y += bootx.h | 28 | unifdef-y += bootx.h |
29 | unifdef-y += byteorder.h | 29 | unifdef-y += byteorder.h |
diff --git a/include/asm-powerpc/abs_addr.h b/include/asm-powerpc/abs_addr.h index 4aa220718b19..98324c5a8286 100644 --- a/include/asm-powerpc/abs_addr.h +++ b/include/asm-powerpc/abs_addr.h | |||
@@ -12,10 +12,11 @@ | |||
12 | * 2 of the License, or (at your option) any later version. | 12 | * 2 of the License, or (at your option) any later version. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/lmb.h> | ||
16 | |||
15 | #include <asm/types.h> | 17 | #include <asm/types.h> |
16 | #include <asm/page.h> | 18 | #include <asm/page.h> |
17 | #include <asm/prom.h> | 19 | #include <asm/prom.h> |
18 | #include <asm/lmb.h> | ||
19 | #include <asm/firmware.h> | 20 | #include <asm/firmware.h> |
20 | 21 | ||
21 | struct mschunks_map { | 22 | struct mschunks_map { |
diff --git a/include/asm-powerpc/bitops.h b/include/asm-powerpc/bitops.h index 220d9a781ab9..a99a74929475 100644 --- a/include/asm-powerpc/bitops.h +++ b/include/asm-powerpc/bitops.h | |||
@@ -312,24 +312,26 @@ static __inline__ int fls(unsigned int x) | |||
312 | asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x)); | 312 | asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x)); |
313 | return 32 - lz; | 313 | return 32 - lz; |
314 | } | 314 | } |
315 | |||
316 | /* | ||
317 | * 64-bit can do this using one cntlzd (count leading zeroes doubleword) | ||
318 | * instruction; for 32-bit we use the generic version, which does two | ||
319 | * 32-bit fls calls. | ||
320 | */ | ||
321 | #ifdef __powerpc64__ | ||
322 | static __inline__ int fls64(__u64 x) | ||
323 | { | ||
324 | int lz; | ||
325 | |||
326 | asm ("cntlzd %0,%1" : "=r" (lz) : "r" (x)); | ||
327 | return 64 - lz; | ||
328 | } | ||
329 | #else | ||
315 | #include <asm-generic/bitops/fls64.h> | 330 | #include <asm-generic/bitops/fls64.h> |
331 | #endif /* __powerpc64__ */ | ||
316 | 332 | ||
317 | #include <asm-generic/bitops/hweight.h> | 333 | #include <asm-generic/bitops/hweight.h> |
318 | 334 | #include <asm-generic/bitops/find.h> | |
319 | #define find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0) | ||
320 | unsigned long find_next_zero_bit(const unsigned long *addr, | ||
321 | unsigned long size, unsigned long offset); | ||
322 | /** | ||
323 | * find_first_bit - find the first set bit in a memory region | ||
324 | * @addr: The address to start the search at | ||
325 | * @size: The maximum size to search | ||
326 | * | ||
327 | * Returns the bit-number of the first set bit, not the number of the byte | ||
328 | * containing a bit. | ||
329 | */ | ||
330 | #define find_first_bit(addr, size) find_next_bit((addr), (size), 0) | ||
331 | unsigned long find_next_bit(const unsigned long *addr, | ||
332 | unsigned long size, unsigned long offset); | ||
333 | 335 | ||
334 | /* Little-endian versions */ | 336 | /* Little-endian versions */ |
335 | 337 | ||
diff --git a/include/asm-powerpc/cpm.h b/include/asm-powerpc/cpm.h index 77e39dad9728..ede38ffe466a 100644 --- a/include/asm-powerpc/cpm.h +++ b/include/asm-powerpc/cpm.h | |||
@@ -4,6 +4,20 @@ | |||
4 | #include <linux/compiler.h> | 4 | #include <linux/compiler.h> |
5 | #include <linux/types.h> | 5 | #include <linux/types.h> |
6 | 6 | ||
7 | /* Opcodes common to CPM1 and CPM2 | ||
8 | */ | ||
9 | #define CPM_CR_INIT_TRX ((ushort)0x0000) | ||
10 | #define CPM_CR_INIT_RX ((ushort)0x0001) | ||
11 | #define CPM_CR_INIT_TX ((ushort)0x0002) | ||
12 | #define CPM_CR_HUNT_MODE ((ushort)0x0003) | ||
13 | #define CPM_CR_STOP_TX ((ushort)0x0004) | ||
14 | #define CPM_CR_GRA_STOP_TX ((ushort)0x0005) | ||
15 | #define CPM_CR_RESTART_TX ((ushort)0x0006) | ||
16 | #define CPM_CR_CLOSE_RX_BD ((ushort)0x0007) | ||
17 | #define CPM_CR_SET_GADDR ((ushort)0x0008) | ||
18 | #define CPM_CR_SET_TIMER ((ushort)0x0008) | ||
19 | #define CPM_CR_STOP_IDMA ((ushort)0x000b) | ||
20 | |||
7 | /* Buffer descriptors used by many of the CPM protocols. */ | 21 | /* Buffer descriptors used by many of the CPM protocols. */ |
8 | typedef struct cpm_buf_desc { | 22 | typedef struct cpm_buf_desc { |
9 | ushort cbd_sc; /* Status and Control */ | 23 | ushort cbd_sc; /* Status and Control */ |
diff --git a/include/asm-powerpc/cpm1.h b/include/asm-powerpc/cpm1.h index b2ebd6ac6dae..3df439678006 100644 --- a/include/asm-powerpc/cpm1.h +++ b/include/asm-powerpc/cpm1.h | |||
@@ -28,19 +28,6 @@ | |||
28 | #define CPM_CR_CHAN ((ushort)0x00f0) | 28 | #define CPM_CR_CHAN ((ushort)0x00f0) |
29 | #define CPM_CR_FLG ((ushort)0x0001) | 29 | #define CPM_CR_FLG ((ushort)0x0001) |
30 | 30 | ||
31 | /* Some commands (there are more...later) | ||
32 | */ | ||
33 | #define CPM_CR_INIT_TRX ((ushort)0x0000) | ||
34 | #define CPM_CR_INIT_RX ((ushort)0x0001) | ||
35 | #define CPM_CR_INIT_TX ((ushort)0x0002) | ||
36 | #define CPM_CR_HUNT_MODE ((ushort)0x0003) | ||
37 | #define CPM_CR_STOP_TX ((ushort)0x0004) | ||
38 | #define CPM_CR_GRA_STOP_TX ((ushort)0x0005) | ||
39 | #define CPM_CR_RESTART_TX ((ushort)0x0006) | ||
40 | #define CPM_CR_CLOSE_RX_BD ((ushort)0x0007) | ||
41 | #define CPM_CR_SET_GADDR ((ushort)0x0008) | ||
42 | #define CPM_CR_SET_TIMER CPM_CR_SET_GADDR | ||
43 | |||
44 | /* Channel numbers. | 31 | /* Channel numbers. |
45 | */ | 32 | */ |
46 | #define CPM_CR_CH_SCC1 ((ushort)0x0000) | 33 | #define CPM_CR_CH_SCC1 ((ushort)0x0000) |
diff --git a/include/asm-powerpc/cpm2.h b/include/asm-powerpc/cpm2.h index b93a53eb55c1..4c85ed9cd43f 100644 --- a/include/asm-powerpc/cpm2.h +++ b/include/asm-powerpc/cpm2.h | |||
@@ -71,18 +71,9 @@ | |||
71 | 71 | ||
72 | #define CPM_CR_FCC_PAGE(x) (x + 0x04) | 72 | #define CPM_CR_FCC_PAGE(x) (x + 0x04) |
73 | 73 | ||
74 | /* Some opcodes (there are more...later) | 74 | /* CPM2-specific opcodes (see cpm.h for common opcodes) |
75 | */ | 75 | */ |
76 | #define CPM_CR_INIT_TRX ((ushort)0x0000) | ||
77 | #define CPM_CR_INIT_RX ((ushort)0x0001) | ||
78 | #define CPM_CR_INIT_TX ((ushort)0x0002) | ||
79 | #define CPM_CR_HUNT_MODE ((ushort)0x0003) | ||
80 | #define CPM_CR_STOP_TX ((ushort)0x0004) | ||
81 | #define CPM_CR_GRA_STOP_TX ((ushort)0x0005) | ||
82 | #define CPM_CR_RESTART_TX ((ushort)0x0006) | ||
83 | #define CPM_CR_SET_GADDR ((ushort)0x0008) | ||
84 | #define CPM_CR_START_IDMA ((ushort)0x0009) | 76 | #define CPM_CR_START_IDMA ((ushort)0x0009) |
85 | #define CPM_CR_STOP_IDMA ((ushort)0x000b) | ||
86 | 77 | ||
87 | #define mk_cr_cmd(PG, SBC, MCN, OP) \ | 78 | #define mk_cr_cmd(PG, SBC, MCN, OP) \ |
88 | ((PG << 26) | (SBC << 21) | (MCN << 6) | OP) | 79 | ((PG << 26) | (SBC << 21) | (MCN << 6) | OP) |
diff --git a/include/asm-powerpc/cputhreads.h b/include/asm-powerpc/cputhreads.h index 8485c28b5f47..fb11b0c459b8 100644 --- a/include/asm-powerpc/cputhreads.h +++ b/include/asm-powerpc/cputhreads.h | |||
@@ -35,7 +35,7 @@ static inline cpumask_t cpu_thread_mask_to_cores(cpumask_t threads) | |||
35 | 35 | ||
36 | res = CPU_MASK_NONE; | 36 | res = CPU_MASK_NONE; |
37 | for (i = 0; i < NR_CPUS; i += threads_per_core) { | 37 | for (i = 0; i < NR_CPUS; i += threads_per_core) { |
38 | cpus_shift_right(tmp, threads_core_mask, i); | 38 | cpus_shift_left(tmp, threads_core_mask, i); |
39 | if (cpus_intersects(threads, tmp)) | 39 | if (cpus_intersects(threads, tmp)) |
40 | cpu_set(i, res); | 40 | cpu_set(i, res); |
41 | } | 41 | } |
diff --git a/include/asm-powerpc/dcr-native.h b/include/asm-powerpc/dcr-native.h index be6c879e8760..f8398ce80372 100644 --- a/include/asm-powerpc/dcr-native.h +++ b/include/asm-powerpc/dcr-native.h | |||
@@ -82,6 +82,19 @@ static inline void __mtdcri(int base_addr, int base_data, int reg, | |||
82 | spin_unlock_irqrestore(&dcr_ind_lock, flags); | 82 | spin_unlock_irqrestore(&dcr_ind_lock, flags); |
83 | } | 83 | } |
84 | 84 | ||
85 | static inline void __dcri_clrset(int base_addr, int base_data, int reg, | ||
86 | unsigned clr, unsigned set) | ||
87 | { | ||
88 | unsigned long flags; | ||
89 | unsigned int val; | ||
90 | |||
91 | spin_lock_irqsave(&dcr_ind_lock, flags); | ||
92 | __mtdcr(base_addr, reg); | ||
93 | val = (__mfdcr(base_data) & ~clr) | set; | ||
94 | __mtdcr(base_data, val); | ||
95 | spin_unlock_irqrestore(&dcr_ind_lock, flags); | ||
96 | } | ||
97 | |||
85 | #define mfdcri(base, reg) __mfdcri(DCRN_ ## base ## _CONFIG_ADDR, \ | 98 | #define mfdcri(base, reg) __mfdcri(DCRN_ ## base ## _CONFIG_ADDR, \ |
86 | DCRN_ ## base ## _CONFIG_DATA, \ | 99 | DCRN_ ## base ## _CONFIG_DATA, \ |
87 | reg) | 100 | reg) |
@@ -90,6 +103,10 @@ static inline void __mtdcri(int base_addr, int base_data, int reg, | |||
90 | DCRN_ ## base ## _CONFIG_DATA, \ | 103 | DCRN_ ## base ## _CONFIG_DATA, \ |
91 | reg, data) | 104 | reg, data) |
92 | 105 | ||
106 | #define dcri_clrset(base, reg, clr, set) __dcri_clrset(DCRN_ ## base ## _CONFIG_ADDR, \ | ||
107 | DCRN_ ## base ## _CONFIG_DATA, \ | ||
108 | reg, clr, set) | ||
109 | |||
93 | #endif /* __ASSEMBLY__ */ | 110 | #endif /* __ASSEMBLY__ */ |
94 | #endif /* __KERNEL__ */ | 111 | #endif /* __KERNEL__ */ |
95 | #endif /* _ASM_POWERPC_DCR_NATIVE_H */ | 112 | #endif /* _ASM_POWERPC_DCR_NATIVE_H */ |
diff --git a/include/asm-powerpc/dcr-regs.h b/include/asm-powerpc/dcr-regs.h index 9f1fb98fcdc6..29b0ecef980a 100644 --- a/include/asm-powerpc/dcr-regs.h +++ b/include/asm-powerpc/dcr-regs.h | |||
@@ -68,4 +68,82 @@ | |||
68 | #define SDR0_UART3 0x0123 | 68 | #define SDR0_UART3 0x0123 |
69 | #define SDR0_CUST0 0x4000 | 69 | #define SDR0_CUST0 0x4000 |
70 | 70 | ||
71 | /* | ||
72 | * All those DCR register addresses are offsets from the base address | ||
73 | * for the SRAM0 controller (e.g. 0x20 on 440GX). The base address is | ||
74 | * excluded here and configured in the device tree. | ||
75 | */ | ||
76 | #define DCRN_SRAM0_SB0CR 0x00 | ||
77 | #define DCRN_SRAM0_SB1CR 0x01 | ||
78 | #define DCRN_SRAM0_SB2CR 0x02 | ||
79 | #define DCRN_SRAM0_SB3CR 0x03 | ||
80 | #define SRAM_SBCR_BU_MASK 0x00000180 | ||
81 | #define SRAM_SBCR_BS_64KB 0x00000800 | ||
82 | #define SRAM_SBCR_BU_RO 0x00000080 | ||
83 | #define SRAM_SBCR_BU_RW 0x00000180 | ||
84 | #define DCRN_SRAM0_BEAR 0x04 | ||
85 | #define DCRN_SRAM0_BESR0 0x05 | ||
86 | #define DCRN_SRAM0_BESR1 0x06 | ||
87 | #define DCRN_SRAM0_PMEG 0x07 | ||
88 | #define DCRN_SRAM0_CID 0x08 | ||
89 | #define DCRN_SRAM0_REVID 0x09 | ||
90 | #define DCRN_SRAM0_DPC 0x0a | ||
91 | #define SRAM_DPC_ENABLE 0x80000000 | ||
92 | |||
93 | /* | ||
94 | * All those DCR register addresses are offsets from the base address | ||
95 | * for the SRAM0 controller (e.g. 0x30 on 440GX). The base address is | ||
96 | * excluded here and configured in the device tree. | ||
97 | */ | ||
98 | #define DCRN_L2C0_CFG 0x00 | ||
99 | #define L2C_CFG_L2M 0x80000000 | ||
100 | #define L2C_CFG_ICU 0x40000000 | ||
101 | #define L2C_CFG_DCU 0x20000000 | ||
102 | #define L2C_CFG_DCW_MASK 0x1e000000 | ||
103 | #define L2C_CFG_TPC 0x01000000 | ||
104 | #define L2C_CFG_CPC 0x00800000 | ||
105 | #define L2C_CFG_FRAN 0x00200000 | ||
106 | #define L2C_CFG_SS_MASK 0x00180000 | ||
107 | #define L2C_CFG_SS_256 0x00000000 | ||
108 | #define L2C_CFG_CPIM 0x00040000 | ||
109 | #define L2C_CFG_TPIM 0x00020000 | ||
110 | #define L2C_CFG_LIM 0x00010000 | ||
111 | #define L2C_CFG_PMUX_MASK 0x00007000 | ||
112 | #define L2C_CFG_PMUX_SNP 0x00000000 | ||
113 | #define L2C_CFG_PMUX_IF 0x00001000 | ||
114 | #define L2C_CFG_PMUX_DF 0x00002000 | ||
115 | #define L2C_CFG_PMUX_DS 0x00003000 | ||
116 | #define L2C_CFG_PMIM 0x00000800 | ||
117 | #define L2C_CFG_TPEI 0x00000400 | ||
118 | #define L2C_CFG_CPEI 0x00000200 | ||
119 | #define L2C_CFG_NAM 0x00000100 | ||
120 | #define L2C_CFG_SMCM 0x00000080 | ||
121 | #define L2C_CFG_NBRM 0x00000040 | ||
122 | #define L2C_CFG_RDBW 0x00000008 /* only 460EX/GT */ | ||
123 | #define DCRN_L2C0_CMD 0x01 | ||
124 | #define L2C_CMD_CLR 0x80000000 | ||
125 | #define L2C_CMD_DIAG 0x40000000 | ||
126 | #define L2C_CMD_INV 0x20000000 | ||
127 | #define L2C_CMD_CCP 0x10000000 | ||
128 | #define L2C_CMD_CTE 0x08000000 | ||
129 | #define L2C_CMD_STRC 0x04000000 | ||
130 | #define L2C_CMD_STPC 0x02000000 | ||
131 | #define L2C_CMD_RPMC 0x01000000 | ||
132 | #define L2C_CMD_HCC 0x00800000 | ||
133 | #define DCRN_L2C0_ADDR 0x02 | ||
134 | #define DCRN_L2C0_DATA 0x03 | ||
135 | #define DCRN_L2C0_SR 0x04 | ||
136 | #define L2C_SR_CC 0x80000000 | ||
137 | #define L2C_SR_CPE 0x40000000 | ||
138 | #define L2C_SR_TPE 0x20000000 | ||
139 | #define L2C_SR_LRU 0x10000000 | ||
140 | #define L2C_SR_PCS 0x08000000 | ||
141 | #define DCRN_L2C0_REVID 0x05 | ||
142 | #define DCRN_L2C0_SNP0 0x06 | ||
143 | #define DCRN_L2C0_SNP1 0x07 | ||
144 | #define L2C_SNP_BA_MASK 0xffff0000 | ||
145 | #define L2C_SNP_SSR_MASK 0x0000f000 | ||
146 | #define L2C_SNP_SSR_32G 0x0000f000 | ||
147 | #define L2C_SNP_ESR 0x00000800 | ||
148 | |||
71 | #endif /* __DCR_REGS_H__ */ | 149 | #endif /* __DCR_REGS_H__ */ |
diff --git a/include/asm-powerpc/exception.h b/include/asm-powerpc/exception.h index 39abdb02fdef..329148b5acc6 100644 --- a/include/asm-powerpc/exception.h +++ b/include/asm-powerpc/exception.h | |||
@@ -228,18 +228,18 @@ label##_pSeries: \ | |||
228 | BEGIN_FW_FTR_SECTION; \ | 228 | BEGIN_FW_FTR_SECTION; \ |
229 | stb r11,PACAHARDIRQEN(r13); \ | 229 | stb r11,PACAHARDIRQEN(r13); \ |
230 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES); \ | 230 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES); \ |
231 | TRACE_DISABLE_INTS; \ | ||
231 | BEGIN_FW_FTR_SECTION; \ | 232 | BEGIN_FW_FTR_SECTION; \ |
232 | mfmsr r10; \ | 233 | mfmsr r10; \ |
233 | ori r10,r10,MSR_EE; \ | 234 | ori r10,r10,MSR_EE; \ |
234 | mtmsrd r10,1; \ | 235 | mtmsrd r10,1; \ |
235 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | 236 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) |
236 | |||
237 | #else | 237 | #else |
238 | #define DISABLE_INTS \ | 238 | #define DISABLE_INTS \ |
239 | li r11,0; \ | 239 | li r11,0; \ |
240 | stb r11,PACASOFTIRQEN(r13); \ | 240 | stb r11,PACASOFTIRQEN(r13); \ |
241 | stb r11,PACAHARDIRQEN(r13) | 241 | stb r11,PACAHARDIRQEN(r13); \ |
242 | 242 | TRACE_DISABLE_INTS | |
243 | #endif /* CONFIG_PPC_ISERIES */ | 243 | #endif /* CONFIG_PPC_ISERIES */ |
244 | 244 | ||
245 | #define ENABLE_INTS \ | 245 | #define ENABLE_INTS \ |
diff --git a/include/asm-powerpc/fsl_lbc.h b/include/asm-powerpc/fsl_lbc.h new file mode 100644 index 000000000000..303f5484c050 --- /dev/null +++ b/include/asm-powerpc/fsl_lbc.h | |||
@@ -0,0 +1,311 @@ | |||
1 | /* Freescale Local Bus Controller | ||
2 | * | ||
3 | * Copyright (c) 2006-2007 Freescale Semiconductor | ||
4 | * | ||
5 | * Authors: Nick Spence <nick.spence@freescale.com>, | ||
6 | * Scott Wood <scottwood@freescale.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | |||
23 | #ifndef __ASM_FSL_LBC_H | ||
24 | #define __ASM_FSL_LBC_H | ||
25 | |||
26 | #include <linux/types.h> | ||
27 | #include <linux/spinlock.h> | ||
28 | #include <asm/io.h> | ||
29 | |||
30 | struct fsl_lbc_bank { | ||
31 | __be32 br; /**< Base Register */ | ||
32 | #define BR_BA 0xFFFF8000 | ||
33 | #define BR_BA_SHIFT 15 | ||
34 | #define BR_PS 0x00001800 | ||
35 | #define BR_PS_SHIFT 11 | ||
36 | #define BR_PS_8 0x00000800 /* Port Size 8 bit */ | ||
37 | #define BR_PS_16 0x00001000 /* Port Size 16 bit */ | ||
38 | #define BR_PS_32 0x00001800 /* Port Size 32 bit */ | ||
39 | #define BR_DECC 0x00000600 | ||
40 | #define BR_DECC_SHIFT 9 | ||
41 | #define BR_DECC_OFF 0x00000000 /* HW ECC checking and generation off */ | ||
42 | #define BR_DECC_CHK 0x00000200 /* HW ECC checking on, generation off */ | ||
43 | #define BR_DECC_CHK_GEN 0x00000400 /* HW ECC checking and generation on */ | ||
44 | #define BR_WP 0x00000100 | ||
45 | #define BR_WP_SHIFT 8 | ||
46 | #define BR_MSEL 0x000000E0 | ||
47 | #define BR_MSEL_SHIFT 5 | ||
48 | #define BR_MS_GPCM 0x00000000 /* GPCM */ | ||
49 | #define BR_MS_FCM 0x00000020 /* FCM */ | ||
50 | #define BR_MS_SDRAM 0x00000060 /* SDRAM */ | ||
51 | #define BR_MS_UPMA 0x00000080 /* UPMA */ | ||
52 | #define BR_MS_UPMB 0x000000A0 /* UPMB */ | ||
53 | #define BR_MS_UPMC 0x000000C0 /* UPMC */ | ||
54 | #define BR_V 0x00000001 | ||
55 | #define BR_V_SHIFT 0 | ||
56 | #define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_V) | ||
57 | |||
58 | __be32 or; /**< Base Register */ | ||
59 | #define OR0 0x5004 | ||
60 | #define OR1 0x500C | ||
61 | #define OR2 0x5014 | ||
62 | #define OR3 0x501C | ||
63 | #define OR4 0x5024 | ||
64 | #define OR5 0x502C | ||
65 | #define OR6 0x5034 | ||
66 | #define OR7 0x503C | ||
67 | |||
68 | #define OR_FCM_AM 0xFFFF8000 | ||
69 | #define OR_FCM_AM_SHIFT 15 | ||
70 | #define OR_FCM_BCTLD 0x00001000 | ||
71 | #define OR_FCM_BCTLD_SHIFT 12 | ||
72 | #define OR_FCM_PGS 0x00000400 | ||
73 | #define OR_FCM_PGS_SHIFT 10 | ||
74 | #define OR_FCM_CSCT 0x00000200 | ||
75 | #define OR_FCM_CSCT_SHIFT 9 | ||
76 | #define OR_FCM_CST 0x00000100 | ||
77 | #define OR_FCM_CST_SHIFT 8 | ||
78 | #define OR_FCM_CHT 0x00000080 | ||
79 | #define OR_FCM_CHT_SHIFT 7 | ||
80 | #define OR_FCM_SCY 0x00000070 | ||
81 | #define OR_FCM_SCY_SHIFT 4 | ||
82 | #define OR_FCM_SCY_1 0x00000010 | ||
83 | #define OR_FCM_SCY_2 0x00000020 | ||
84 | #define OR_FCM_SCY_3 0x00000030 | ||
85 | #define OR_FCM_SCY_4 0x00000040 | ||
86 | #define OR_FCM_SCY_5 0x00000050 | ||
87 | #define OR_FCM_SCY_6 0x00000060 | ||
88 | #define OR_FCM_SCY_7 0x00000070 | ||
89 | #define OR_FCM_RST 0x00000008 | ||
90 | #define OR_FCM_RST_SHIFT 3 | ||
91 | #define OR_FCM_TRLX 0x00000004 | ||
92 | #define OR_FCM_TRLX_SHIFT 2 | ||
93 | #define OR_FCM_EHTR 0x00000002 | ||
94 | #define OR_FCM_EHTR_SHIFT 1 | ||
95 | }; | ||
96 | |||
97 | struct fsl_lbc_regs { | ||
98 | struct fsl_lbc_bank bank[8]; | ||
99 | u8 res0[0x28]; | ||
100 | __be32 mar; /**< UPM Address Register */ | ||
101 | u8 res1[0x4]; | ||
102 | __be32 mamr; /**< UPMA Mode Register */ | ||
103 | #define MxMR_OP_NO (0 << 28) /**< normal operation */ | ||
104 | #define MxMR_OP_WA (1 << 28) /**< write array */ | ||
105 | #define MxMR_OP_RA (2 << 28) /**< read array */ | ||
106 | #define MxMR_OP_RP (3 << 28) /**< run pattern */ | ||
107 | #define MxMR_MAD 0x3f /**< machine address */ | ||
108 | __be32 mbmr; /**< UPMB Mode Register */ | ||
109 | __be32 mcmr; /**< UPMC Mode Register */ | ||
110 | u8 res2[0x8]; | ||
111 | __be32 mrtpr; /**< Memory Refresh Timer Prescaler Register */ | ||
112 | __be32 mdr; /**< UPM Data Register */ | ||
113 | u8 res3[0x4]; | ||
114 | __be32 lsor; /**< Special Operation Initiation Register */ | ||
115 | __be32 lsdmr; /**< SDRAM Mode Register */ | ||
116 | u8 res4[0x8]; | ||
117 | __be32 lurt; /**< UPM Refresh Timer */ | ||
118 | __be32 lsrt; /**< SDRAM Refresh Timer */ | ||
119 | u8 res5[0x8]; | ||
120 | __be32 ltesr; /**< Transfer Error Status Register */ | ||
121 | #define LTESR_BM 0x80000000 | ||
122 | #define LTESR_FCT 0x40000000 | ||
123 | #define LTESR_PAR 0x20000000 | ||
124 | #define LTESR_WP 0x04000000 | ||
125 | #define LTESR_ATMW 0x00800000 | ||
126 | #define LTESR_ATMR 0x00400000 | ||
127 | #define LTESR_CS 0x00080000 | ||
128 | #define LTESR_CC 0x00000001 | ||
129 | #define LTESR_NAND_MASK (LTESR_FCT | LTESR_PAR | LTESR_CC) | ||
130 | __be32 ltedr; /**< Transfer Error Disable Register */ | ||
131 | __be32 lteir; /**< Transfer Error Interrupt Register */ | ||
132 | __be32 lteatr; /**< Transfer Error Attributes Register */ | ||
133 | __be32 ltear; /**< Transfer Error Address Register */ | ||
134 | u8 res6[0xC]; | ||
135 | __be32 lbcr; /**< Configuration Register */ | ||
136 | #define LBCR_LDIS 0x80000000 | ||
137 | #define LBCR_LDIS_SHIFT 31 | ||
138 | #define LBCR_BCTLC 0x00C00000 | ||
139 | #define LBCR_BCTLC_SHIFT 22 | ||
140 | #define LBCR_AHD 0x00200000 | ||
141 | #define LBCR_LPBSE 0x00020000 | ||
142 | #define LBCR_LPBSE_SHIFT 17 | ||
143 | #define LBCR_EPAR 0x00010000 | ||
144 | #define LBCR_EPAR_SHIFT 16 | ||
145 | #define LBCR_BMT 0x0000FF00 | ||
146 | #define LBCR_BMT_SHIFT 8 | ||
147 | #define LBCR_INIT 0x00040000 | ||
148 | __be32 lcrr; /**< Clock Ratio Register */ | ||
149 | #define LCRR_DBYP 0x80000000 | ||
150 | #define LCRR_DBYP_SHIFT 31 | ||
151 | #define LCRR_BUFCMDC 0x30000000 | ||
152 | #define LCRR_BUFCMDC_SHIFT 28 | ||
153 | #define LCRR_ECL 0x03000000 | ||
154 | #define LCRR_ECL_SHIFT 24 | ||
155 | #define LCRR_EADC 0x00030000 | ||
156 | #define LCRR_EADC_SHIFT 16 | ||
157 | #define LCRR_CLKDIV 0x0000000F | ||
158 | #define LCRR_CLKDIV_SHIFT 0 | ||
159 | u8 res7[0x8]; | ||
160 | __be32 fmr; /**< Flash Mode Register */ | ||
161 | #define FMR_CWTO 0x0000F000 | ||
162 | #define FMR_CWTO_SHIFT 12 | ||
163 | #define FMR_BOOT 0x00000800 | ||
164 | #define FMR_ECCM 0x00000100 | ||
165 | #define FMR_AL 0x00000030 | ||
166 | #define FMR_AL_SHIFT 4 | ||
167 | #define FMR_OP 0x00000003 | ||
168 | #define FMR_OP_SHIFT 0 | ||
169 | __be32 fir; /**< Flash Instruction Register */ | ||
170 | #define FIR_OP0 0xF0000000 | ||
171 | #define FIR_OP0_SHIFT 28 | ||
172 | #define FIR_OP1 0x0F000000 | ||
173 | #define FIR_OP1_SHIFT 24 | ||
174 | #define FIR_OP2 0x00F00000 | ||
175 | #define FIR_OP2_SHIFT 20 | ||
176 | #define FIR_OP3 0x000F0000 | ||
177 | #define FIR_OP3_SHIFT 16 | ||
178 | #define FIR_OP4 0x0000F000 | ||
179 | #define FIR_OP4_SHIFT 12 | ||
180 | #define FIR_OP5 0x00000F00 | ||
181 | #define FIR_OP5_SHIFT 8 | ||
182 | #define FIR_OP6 0x000000F0 | ||
183 | #define FIR_OP6_SHIFT 4 | ||
184 | #define FIR_OP7 0x0000000F | ||
185 | #define FIR_OP7_SHIFT 0 | ||
186 | #define FIR_OP_NOP 0x0 /* No operation and end of sequence */ | ||
187 | #define FIR_OP_CA 0x1 /* Issue current column address */ | ||
188 | #define FIR_OP_PA 0x2 /* Issue current block+page address */ | ||
189 | #define FIR_OP_UA 0x3 /* Issue user defined address */ | ||
190 | #define FIR_OP_CM0 0x4 /* Issue command from FCR[CMD0] */ | ||
191 | #define FIR_OP_CM1 0x5 /* Issue command from FCR[CMD1] */ | ||
192 | #define FIR_OP_CM2 0x6 /* Issue command from FCR[CMD2] */ | ||
193 | #define FIR_OP_CM3 0x7 /* Issue command from FCR[CMD3] */ | ||
194 | #define FIR_OP_WB 0x8 /* Write FBCR bytes from FCM buffer */ | ||
195 | #define FIR_OP_WS 0x9 /* Write 1 or 2 bytes from MDR[AS] */ | ||
196 | #define FIR_OP_RB 0xA /* Read FBCR bytes to FCM buffer */ | ||
197 | #define FIR_OP_RS 0xB /* Read 1 or 2 bytes to MDR[AS] */ | ||
198 | #define FIR_OP_CW0 0xC /* Wait then issue FCR[CMD0] */ | ||
199 | #define FIR_OP_CW1 0xD /* Wait then issue FCR[CMD1] */ | ||
200 | #define FIR_OP_RBW 0xE /* Wait then read FBCR bytes */ | ||
201 | #define FIR_OP_RSW 0xE /* Wait then read 1 or 2 bytes */ | ||
202 | __be32 fcr; /**< Flash Command Register */ | ||
203 | #define FCR_CMD0 0xFF000000 | ||
204 | #define FCR_CMD0_SHIFT 24 | ||
205 | #define FCR_CMD1 0x00FF0000 | ||
206 | #define FCR_CMD1_SHIFT 16 | ||
207 | #define FCR_CMD2 0x0000FF00 | ||
208 | #define FCR_CMD2_SHIFT 8 | ||
209 | #define FCR_CMD3 0x000000FF | ||
210 | #define FCR_CMD3_SHIFT 0 | ||
211 | __be32 fbar; /**< Flash Block Address Register */ | ||
212 | #define FBAR_BLK 0x00FFFFFF | ||
213 | __be32 fpar; /**< Flash Page Address Register */ | ||
214 | #define FPAR_SP_PI 0x00007C00 | ||
215 | #define FPAR_SP_PI_SHIFT 10 | ||
216 | #define FPAR_SP_MS 0x00000200 | ||
217 | #define FPAR_SP_CI 0x000001FF | ||
218 | #define FPAR_SP_CI_SHIFT 0 | ||
219 | #define FPAR_LP_PI 0x0003F000 | ||
220 | #define FPAR_LP_PI_SHIFT 12 | ||
221 | #define FPAR_LP_MS 0x00000800 | ||
222 | #define FPAR_LP_CI 0x000007FF | ||
223 | #define FPAR_LP_CI_SHIFT 0 | ||
224 | __be32 fbcr; /**< Flash Byte Count Register */ | ||
225 | #define FBCR_BC 0x00000FFF | ||
226 | u8 res11[0x8]; | ||
227 | u8 res8[0xF00]; | ||
228 | }; | ||
229 | |||
230 | extern struct fsl_lbc_regs __iomem *fsl_lbc_regs; | ||
231 | extern spinlock_t fsl_lbc_lock; | ||
232 | |||
233 | /* | ||
234 | * FSL UPM routines | ||
235 | */ | ||
236 | struct fsl_upm { | ||
237 | __be32 __iomem *mxmr; | ||
238 | int width; | ||
239 | }; | ||
240 | |||
241 | extern int fsl_lbc_find(phys_addr_t addr_base); | ||
242 | extern int fsl_upm_find(phys_addr_t addr_base, struct fsl_upm *upm); | ||
243 | |||
244 | /** | ||
245 | * fsl_upm_start_pattern - start UPM patterns execution | ||
246 | * @upm: pointer to the fsl_upm structure obtained via fsl_upm_find | ||
247 | * @pat_offset: UPM pattern offset for the command to be executed | ||
248 | * | ||
249 | * This routine programmes UPM so the next memory access that hits an UPM | ||
250 | * will trigger pattern execution, starting at pat_offset. | ||
251 | */ | ||
252 | static inline void fsl_upm_start_pattern(struct fsl_upm *upm, u8 pat_offset) | ||
253 | { | ||
254 | clrsetbits_be32(upm->mxmr, MxMR_MAD, MxMR_OP_RP | pat_offset); | ||
255 | } | ||
256 | |||
257 | /** | ||
258 | * fsl_upm_end_pattern - end UPM patterns execution | ||
259 | * @upm: pointer to the fsl_upm structure obtained via fsl_upm_find | ||
260 | * | ||
261 | * This routine reverts UPM to normal operation mode. | ||
262 | */ | ||
263 | static inline void fsl_upm_end_pattern(struct fsl_upm *upm) | ||
264 | { | ||
265 | clrbits32(upm->mxmr, MxMR_OP_RP); | ||
266 | |||
267 | while (in_be32(upm->mxmr) & MxMR_OP_RP) | ||
268 | cpu_relax(); | ||
269 | } | ||
270 | |||
271 | /** | ||
272 | * fsl_upm_run_pattern - actually run an UPM pattern | ||
273 | * @upm: pointer to the fsl_upm structure obtained via fsl_upm_find | ||
274 | * @io_base: remapped pointer to where memory access should happen | ||
275 | * @mar: MAR register content during pattern execution | ||
276 | * | ||
277 | * This function triggers dummy write to the memory specified by the io_base, | ||
278 | * thus UPM pattern actually executed. Note that mar usage depends on the | ||
279 | * pre-programmed AMX bits in the UPM RAM. | ||
280 | */ | ||
281 | static inline int fsl_upm_run_pattern(struct fsl_upm *upm, | ||
282 | void __iomem *io_base, u32 mar) | ||
283 | { | ||
284 | int ret = 0; | ||
285 | unsigned long flags; | ||
286 | |||
287 | spin_lock_irqsave(&fsl_lbc_lock, flags); | ||
288 | |||
289 | out_be32(&fsl_lbc_regs->mar, mar << (32 - upm->width)); | ||
290 | |||
291 | switch (upm->width) { | ||
292 | case 8: | ||
293 | out_8(io_base, 0x0); | ||
294 | break; | ||
295 | case 16: | ||
296 | out_be16(io_base, 0x0); | ||
297 | break; | ||
298 | case 32: | ||
299 | out_be32(io_base, 0x0); | ||
300 | break; | ||
301 | default: | ||
302 | ret = -EINVAL; | ||
303 | break; | ||
304 | } | ||
305 | |||
306 | spin_unlock_irqrestore(&fsl_lbc_lock, flags); | ||
307 | |||
308 | return ret; | ||
309 | } | ||
310 | |||
311 | #endif /* __ASM_FSL_LBC_H */ | ||
diff --git a/include/asm-powerpc/gpio.h b/include/asm-powerpc/gpio.h new file mode 100644 index 000000000000..77ad3a890f30 --- /dev/null +++ b/include/asm-powerpc/gpio.h | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * Generic GPIO API implementation for PowerPC. | ||
3 | * | ||
4 | * Copyright (c) 2007-2008 MontaVista Software, Inc. | ||
5 | * | ||
6 | * Author: Anton Vorontsov <avorontsov@ru.mvista.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #ifndef __ASM_POWERPC_GPIO_H | ||
15 | #define __ASM_POWERPC_GPIO_H | ||
16 | |||
17 | #include <linux/errno.h> | ||
18 | #include <asm-generic/gpio.h> | ||
19 | |||
20 | #ifdef CONFIG_HAVE_GPIO_LIB | ||
21 | |||
22 | /* | ||
23 | * We don't (yet) implement inlined/rapid versions for on-chip gpios. | ||
24 | * Just call gpiolib. | ||
25 | */ | ||
26 | static inline int gpio_get_value(unsigned int gpio) | ||
27 | { | ||
28 | return __gpio_get_value(gpio); | ||
29 | } | ||
30 | |||
31 | static inline void gpio_set_value(unsigned int gpio, int value) | ||
32 | { | ||
33 | __gpio_set_value(gpio, value); | ||
34 | } | ||
35 | |||
36 | static inline int gpio_cansleep(unsigned int gpio) | ||
37 | { | ||
38 | return __gpio_cansleep(gpio); | ||
39 | } | ||
40 | |||
41 | /* | ||
42 | * Not implemented, yet. | ||
43 | */ | ||
44 | static inline int gpio_to_irq(unsigned int gpio) | ||
45 | { | ||
46 | return -ENOSYS; | ||
47 | } | ||
48 | |||
49 | static inline int irq_to_gpio(unsigned int irq) | ||
50 | { | ||
51 | return -EINVAL; | ||
52 | } | ||
53 | |||
54 | #endif /* CONFIG_HAVE_GPIO_LIB */ | ||
55 | |||
56 | #endif /* __ASM_POWERPC_GPIO_H */ | ||
diff --git a/include/asm-powerpc/hw_irq.h b/include/asm-powerpc/hw_irq.h index a7b60bf639e0..ad8c9f7fd0e3 100644 --- a/include/asm-powerpc/hw_irq.h +++ b/include/asm-powerpc/hw_irq.h | |||
@@ -27,7 +27,7 @@ static inline unsigned long local_get_flags(void) | |||
27 | return flags; | 27 | return flags; |
28 | } | 28 | } |
29 | 29 | ||
30 | static inline unsigned long local_irq_disable(void) | 30 | static inline unsigned long raw_local_irq_disable(void) |
31 | { | 31 | { |
32 | unsigned long flags, zero; | 32 | unsigned long flags, zero; |
33 | 33 | ||
@@ -39,14 +39,15 @@ static inline unsigned long local_irq_disable(void) | |||
39 | return flags; | 39 | return flags; |
40 | } | 40 | } |
41 | 41 | ||
42 | extern void local_irq_restore(unsigned long); | 42 | extern void raw_local_irq_restore(unsigned long); |
43 | extern void iseries_handle_interrupts(void); | 43 | extern void iseries_handle_interrupts(void); |
44 | 44 | ||
45 | #define local_irq_enable() local_irq_restore(1) | 45 | #define raw_local_irq_enable() raw_local_irq_restore(1) |
46 | #define local_save_flags(flags) ((flags) = local_get_flags()) | 46 | #define raw_local_save_flags(flags) ((flags) = local_get_flags()) |
47 | #define local_irq_save(flags) ((flags) = local_irq_disable()) | 47 | #define raw_local_irq_save(flags) ((flags) = raw_local_irq_disable()) |
48 | 48 | ||
49 | #define irqs_disabled() (local_get_flags() == 0) | 49 | #define raw_irqs_disabled() (local_get_flags() == 0) |
50 | #define raw_irqs_disabled_flags(flags) ((flags) == 0) | ||
50 | 51 | ||
51 | #define __hard_irq_enable() __mtmsrd(mfmsr() | MSR_EE, 1) | 52 | #define __hard_irq_enable() __mtmsrd(mfmsr() | MSR_EE, 1) |
52 | #define __hard_irq_disable() __mtmsrd(mfmsr() & ~MSR_EE, 1) | 53 | #define __hard_irq_disable() __mtmsrd(mfmsr() & ~MSR_EE, 1) |
diff --git a/include/asm-powerpc/immap_qe.h b/include/asm-powerpc/immap_qe.h index 82a452615097..7b6f411db3e6 100644 --- a/include/asm-powerpc/immap_qe.h +++ b/include/asm-powerpc/immap_qe.h | |||
@@ -20,6 +20,7 @@ | |||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | 21 | ||
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <asm/io.h> | ||
23 | 24 | ||
24 | #define QE_IMMAP_SIZE (1024 * 1024) /* 1MB from 1MB+IMMR */ | 25 | #define QE_IMMAP_SIZE (1024 * 1024) /* 1MB from 1MB+IMMR */ |
25 | 26 | ||
@@ -468,7 +469,7 @@ struct qe_immap { | |||
468 | u8 res18[0xC0000]; /* 0x140000 - 0x200000 */ | 469 | u8 res18[0xC0000]; /* 0x140000 - 0x200000 */ |
469 | } __attribute__ ((packed)); | 470 | } __attribute__ ((packed)); |
470 | 471 | ||
471 | extern struct qe_immap *qe_immr; | 472 | extern struct qe_immap __iomem *qe_immr; |
472 | extern phys_addr_t get_qe_base(void); | 473 | extern phys_addr_t get_qe_base(void); |
473 | 474 | ||
474 | static inline unsigned long immrbar_virt_to_phys(void *address) | 475 | static inline unsigned long immrbar_virt_to_phys(void *address) |
diff --git a/include/asm-powerpc/irqflags.h b/include/asm-powerpc/irqflags.h index 7970cbaeaa54..cc6fdba33660 100644 --- a/include/asm-powerpc/irqflags.h +++ b/include/asm-powerpc/irqflags.h | |||
@@ -2,30 +2,43 @@ | |||
2 | * include/asm-powerpc/irqflags.h | 2 | * include/asm-powerpc/irqflags.h |
3 | * | 3 | * |
4 | * IRQ flags handling | 4 | * IRQ flags handling |
5 | * | ||
6 | * This file gets included from lowlevel asm headers too, to provide | ||
7 | * wrapped versions of the local_irq_*() APIs, based on the | ||
8 | * raw_local_irq_*() macros from the lowlevel headers. | ||
9 | */ | 5 | */ |
10 | #ifndef _ASM_IRQFLAGS_H | 6 | #ifndef _ASM_IRQFLAGS_H |
11 | #define _ASM_IRQFLAGS_H | 7 | #define _ASM_IRQFLAGS_H |
12 | 8 | ||
9 | #ifndef __ASSEMBLY__ | ||
13 | /* | 10 | /* |
14 | * Get definitions for raw_local_save_flags(x), etc. | 11 | * Get definitions for raw_local_save_flags(x), etc. |
15 | */ | 12 | */ |
16 | #include <asm-powerpc/hw_irq.h> | 13 | #include <asm-powerpc/hw_irq.h> |
17 | 14 | ||
15 | #else | ||
16 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
18 | /* | 17 | /* |
19 | * Do the CPU's IRQ-state tracing from assembly code. We call a | 18 | * Most of the CPU's IRQ-state tracing is done from assembly code; we |
20 | * C function, so save all the C-clobbered registers: | 19 | * have to call a C function so call a wrapper that saves all the |
20 | * C-clobbered registers. | ||
21 | */ | 21 | */ |
22 | #ifdef CONFIG_TRACE_IRQFLAGS | 22 | #define TRACE_ENABLE_INTS bl .trace_hardirqs_on |
23 | 23 | #define TRACE_DISABLE_INTS bl .trace_hardirqs_off | |
24 | #error No support on PowerPC yet for CONFIG_TRACE_IRQFLAGS | 24 | #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip) \ |
25 | 25 | cmpdi en, 0; \ | |
26 | bne 95f; \ | ||
27 | stb en,PACASOFTIRQEN(r13); \ | ||
28 | bl .trace_hardirqs_off; \ | ||
29 | b skip; \ | ||
30 | 95: bl .trace_hardirqs_on; \ | ||
31 | li en,1; | ||
32 | #define TRACE_AND_RESTORE_IRQ(en) \ | ||
33 | TRACE_AND_RESTORE_IRQ_PARTIAL(en,96f); \ | ||
34 | 96: stb en,PACASOFTIRQEN(r13) | ||
26 | #else | 35 | #else |
27 | # define TRACE_IRQS_ON | 36 | #define TRACE_ENABLE_INTS |
28 | # define TRACE_IRQS_OFF | 37 | #define TRACE_DISABLE_INTS |
38 | #define TRACE_AND_RESTORE_IRQ_PARTIAL(en,skip) | ||
39 | #define TRACE_AND_RESTORE_IRQ(en) \ | ||
40 | stb en,PACASOFTIRQEN(r13) | ||
41 | #endif | ||
29 | #endif | 42 | #endif |
30 | 43 | ||
31 | #endif | 44 | #endif |
diff --git a/include/asm-powerpc/iseries/alpaca.h b/include/asm-powerpc/iseries/alpaca.h new file mode 100644 index 000000000000..c0cce6727a69 --- /dev/null +++ b/include/asm-powerpc/iseries/alpaca.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * Copyright © 2008 Stephen Rothwell IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef _ASM_POWERPC_ISERIES_ALPACA_H | ||
19 | #define _ASM_POWERPC_ISERIES_ALPACA_H | ||
20 | |||
21 | /* | ||
22 | * This is the part of the paca that the iSeries hypervisor | ||
23 | * needs to be statically initialised. Immediately after boot | ||
24 | * we switch to the normal Linux paca. | ||
25 | */ | ||
26 | struct alpaca { | ||
27 | struct lppaca *lppaca_ptr; /* Pointer to LpPaca for PLIC */ | ||
28 | const void *reg_save_ptr; /* Pointer to LpRegSave for PLIC */ | ||
29 | }; | ||
30 | |||
31 | #endif /* _ASM_POWERPC_ISERIES_ALPACA_H */ | ||
diff --git a/include/asm-powerpc/iseries/it_lp_reg_save.h b/include/asm-powerpc/iseries/it_lp_reg_save.h deleted file mode 100644 index 5403b756f654..000000000000 --- a/include/asm-powerpc/iseries/it_lp_reg_save.h +++ /dev/null | |||
@@ -1,85 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Mike Corrigan IBM Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef _ASM_POWERPC_ISERIES_IT_LP_REG_SAVE_H | ||
19 | #define _ASM_POWERPC_ISERIES_IT_LP_REG_SAVE_H | ||
20 | |||
21 | /* | ||
22 | * This control block contains the data that is shared between PLIC | ||
23 | * and the OS | ||
24 | */ | ||
25 | |||
26 | struct ItLpRegSave { | ||
27 | u32 xDesc; // Eye catcher "LpRS" ebcdic 000-003 | ||
28 | u16 xSize; // Size of this class 004-005 | ||
29 | u8 xInUse; // Area is live 006-007 | ||
30 | u8 xRsvd1[9]; // Reserved 007-00F | ||
31 | |||
32 | u8 xFixedRegSave[352]; // Fixed Register Save Area 010-16F | ||
33 | u32 xCTRL; // Control Register 170-173 | ||
34 | u32 xDEC; // Decrementer 174-177 | ||
35 | u32 xFPSCR; // FP Status and Control Reg 178-17B | ||
36 | u32 xPVR; // Processor Version Number 17C-17F | ||
37 | |||
38 | u64 xMMCR0; // Monitor Mode Control Reg 0 180-187 | ||
39 | u32 xPMC1; // Perf Monitor Counter 1 188-18B | ||
40 | u32 xPMC2; // Perf Monitor Counter 2 18C-18F | ||
41 | u32 xPMC3; // Perf Monitor Counter 3 190-193 | ||
42 | u32 xPMC4; // Perf Monitor Counter 4 194-197 | ||
43 | u32 xPIR; // Processor ID Reg 198-19B | ||
44 | |||
45 | u32 xMMCR1; // Monitor Mode Control Reg 1 19C-19F | ||
46 | u32 xMMCRA; // Monitor Mode Control Reg A 1A0-1A3 | ||
47 | u32 xPMC5; // Perf Monitor Counter 5 1A4-1A7 | ||
48 | u32 xPMC6; // Perf Monitor Counter 6 1A8-1AB | ||
49 | u32 xPMC7; // Perf Monitor Counter 7 1AC-1AF | ||
50 | u32 xPMC8; // Perf Monitor Counter 8 1B0-1B3 | ||
51 | u32 xTSC; // Thread Switch Control 1B4-1B7 | ||
52 | u32 xTST; // Thread Switch Timeout 1B8-1BB | ||
53 | u32 xRsvd; // Reserved 1BC-1BF | ||
54 | |||
55 | u64 xACCR; // Address Compare Control Reg 1C0-1C7 | ||
56 | u64 xIMR; // Instruction Match Register 1C8-1CF | ||
57 | u64 xSDR1; // Storage Description Reg 1 1D0-1D7 | ||
58 | u64 xSPRG0; // Special Purpose Reg General0 1D8-1DF | ||
59 | u64 xSPRG1; // Special Purpose Reg General1 1E0-1E7 | ||
60 | u64 xSPRG2; // Special Purpose Reg General2 1E8-1EF | ||
61 | u64 xSPRG3; // Special Purpose Reg General3 1F0-1F7 | ||
62 | u64 xTB; // Time Base Register 1F8-1FF | ||
63 | |||
64 | u64 xFPR[32]; // Floating Point Registers 200-2FF | ||
65 | |||
66 | u64 xMSR; // Machine State Register 300-307 | ||
67 | u64 xNIA; // Next Instruction Address 308-30F | ||
68 | |||
69 | u64 xDABR; // Data Address Breakpoint Reg 310-317 | ||
70 | u64 xIABR; // Inst Address Breakpoint Reg 318-31F | ||
71 | |||
72 | u64 xHID0; // HW Implementation Dependent0 320-327 | ||
73 | |||
74 | u64 xHID4; // HW Implementation Dependent4 328-32F | ||
75 | u64 xSCOMd; // SCON Data Reg (SPRG4) 330-337 | ||
76 | u64 xSCOMc; // SCON Command Reg (SPRG5) 338-33F | ||
77 | u64 xSDAR; // Sample Data Address Register 340-347 | ||
78 | u64 xSIAR; // Sample Inst Address Register 348-34F | ||
79 | |||
80 | u8 xRsvd3[176]; // Reserved 350-3FF | ||
81 | }; | ||
82 | |||
83 | extern struct ItLpRegSave iseries_reg_save[]; | ||
84 | |||
85 | #endif /* _ASM_POWERPC_ISERIES_IT_LP_REG_SAVE_H */ | ||
diff --git a/include/asm-powerpc/lmb.h b/include/asm-powerpc/lmb.h index 5d1dc48a0bb8..6f5fdf0a19ae 100644 --- a/include/asm-powerpc/lmb.h +++ b/include/asm-powerpc/lmb.h | |||
@@ -1,81 +1,15 @@ | |||
1 | #ifndef _ASM_POWERPC_LMB_H | 1 | #ifndef _ASM_POWERPC_LMB_H |
2 | #define _ASM_POWERPC_LMB_H | 2 | #define _ASM_POWERPC_LMB_H |
3 | #ifdef __KERNEL__ | ||
4 | 3 | ||
5 | /* | 4 | #include <asm/udbg.h> |
6 | * Definitions for talking to the Open Firmware PROM on | ||
7 | * Power Macintosh computers. | ||
8 | * | ||
9 | * Copyright (C) 2001 Peter Bergner, IBM Corp. | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU General Public License | ||
13 | * as published by the Free Software Foundation; either version | ||
14 | * 2 of the License, or (at your option) any later version. | ||
15 | */ | ||
16 | 5 | ||
17 | #include <linux/init.h> | 6 | #define LMB_DBG(fmt...) udbg_printf(fmt) |
18 | #include <asm/prom.h> | ||
19 | 7 | ||
20 | #define MAX_LMB_REGIONS 128 | 8 | #ifdef CONFIG_PPC32 |
9 | extern phys_addr_t lowmem_end_addr; | ||
10 | #define LMB_REAL_LIMIT lowmem_end_addr | ||
11 | #else | ||
12 | #define LMB_REAL_LIMIT 0 | ||
13 | #endif | ||
21 | 14 | ||
22 | struct lmb_property { | ||
23 | unsigned long base; | ||
24 | unsigned long size; | ||
25 | }; | ||
26 | |||
27 | struct lmb_region { | ||
28 | unsigned long cnt; | ||
29 | unsigned long size; | ||
30 | struct lmb_property region[MAX_LMB_REGIONS+1]; | ||
31 | }; | ||
32 | |||
33 | struct lmb { | ||
34 | unsigned long debug; | ||
35 | unsigned long rmo_size; | ||
36 | struct lmb_region memory; | ||
37 | struct lmb_region reserved; | ||
38 | }; | ||
39 | |||
40 | extern struct lmb lmb; | ||
41 | |||
42 | extern void __init lmb_init(void); | ||
43 | extern void __init lmb_analyze(void); | ||
44 | extern long __init lmb_add(unsigned long base, unsigned long size); | ||
45 | extern long __init lmb_reserve(unsigned long base, unsigned long size); | ||
46 | extern unsigned long __init lmb_alloc(unsigned long size, unsigned long align); | ||
47 | extern unsigned long __init lmb_alloc_base(unsigned long size, | ||
48 | unsigned long align, unsigned long max_addr); | ||
49 | extern unsigned long __init __lmb_alloc_base(unsigned long size, | ||
50 | unsigned long align, unsigned long max_addr); | ||
51 | extern unsigned long __init lmb_phys_mem_size(void); | ||
52 | extern unsigned long __init lmb_end_of_DRAM(void); | ||
53 | extern void __init lmb_enforce_memory_limit(unsigned long memory_limit); | ||
54 | extern int __init lmb_is_reserved(unsigned long addr); | ||
55 | |||
56 | extern void lmb_dump_all(void); | ||
57 | |||
58 | static inline unsigned long | ||
59 | lmb_size_bytes(struct lmb_region *type, unsigned long region_nr) | ||
60 | { | ||
61 | return type->region[region_nr].size; | ||
62 | } | ||
63 | static inline unsigned long | ||
64 | lmb_size_pages(struct lmb_region *type, unsigned long region_nr) | ||
65 | { | ||
66 | return lmb_size_bytes(type, region_nr) >> PAGE_SHIFT; | ||
67 | } | ||
68 | static inline unsigned long | ||
69 | lmb_start_pfn(struct lmb_region *type, unsigned long region_nr) | ||
70 | { | ||
71 | return type->region[region_nr].base >> PAGE_SHIFT; | ||
72 | } | ||
73 | static inline unsigned long | ||
74 | lmb_end_pfn(struct lmb_region *type, unsigned long region_nr) | ||
75 | { | ||
76 | return lmb_start_pfn(type, region_nr) + | ||
77 | lmb_size_pages(type, region_nr); | ||
78 | } | ||
79 | |||
80 | #endif /* __KERNEL__ */ | ||
81 | #endif /* _ASM_POWERPC_LMB_H */ | 15 | #endif /* _ASM_POWERPC_LMB_H */ |
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h index 0872ec228c1e..54ed64df95b8 100644 --- a/include/asm-powerpc/machdep.h +++ b/include/asm-powerpc/machdep.h | |||
@@ -68,6 +68,8 @@ struct machdep_calls { | |||
68 | unsigned long vflags, | 68 | unsigned long vflags, |
69 | int psize, int ssize); | 69 | int psize, int ssize); |
70 | long (*hpte_remove)(unsigned long hpte_group); | 70 | long (*hpte_remove)(unsigned long hpte_group); |
71 | void (*hpte_removebolted)(unsigned long ea, | ||
72 | int psize, int ssize); | ||
71 | void (*flush_hash_range)(unsigned long number, int local); | 73 | void (*flush_hash_range)(unsigned long number, int local); |
72 | 74 | ||
73 | /* special for kexec, to be called in real mode, linar mapping is | 75 | /* special for kexec, to be called in real mode, linar mapping is |
@@ -196,9 +198,6 @@ struct machdep_calls { | |||
196 | May be NULL. */ | 198 | May be NULL. */ |
197 | void (*init)(void); | 199 | void (*init)(void); |
198 | 200 | ||
199 | void (*setup_io_mappings)(void); | ||
200 | |||
201 | void (*early_serial_map)(void); | ||
202 | void (*kgdb_map_scc)(void); | 201 | void (*kgdb_map_scc)(void); |
203 | 202 | ||
204 | /* | 203 | /* |
diff --git a/include/asm-powerpc/macio.h b/include/asm-powerpc/macio.h index 3a6cb1a513b7..079c06eae446 100644 --- a/include/asm-powerpc/macio.h +++ b/include/asm-powerpc/macio.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define __MACIO_ASIC_H__ | 2 | #define __MACIO_ASIC_H__ |
3 | #ifdef __KERNEL__ | 3 | #ifdef __KERNEL__ |
4 | 4 | ||
5 | #include <asm/of_device.h> | 5 | #include <linux/of_device.h> |
6 | 6 | ||
7 | extern struct bus_type macio_bus_type; | 7 | extern struct bus_type macio_bus_type; |
8 | 8 | ||
diff --git a/include/asm-powerpc/mmu-40x.h b/include/asm-powerpc/mmu-40x.h index 7d37f77043ac..3d108676584c 100644 --- a/include/asm-powerpc/mmu-40x.h +++ b/include/asm-powerpc/mmu-40x.h | |||
@@ -53,8 +53,6 @@ | |||
53 | 53 | ||
54 | #ifndef __ASSEMBLY__ | 54 | #ifndef __ASSEMBLY__ |
55 | 55 | ||
56 | typedef unsigned long phys_addr_t; | ||
57 | |||
58 | typedef struct { | 56 | typedef struct { |
59 | unsigned long id; | 57 | unsigned long id; |
60 | unsigned long vdso_base; | 58 | unsigned long vdso_base; |
diff --git a/include/asm-powerpc/mmu-44x.h b/include/asm-powerpc/mmu-44x.h index 62772ae839ca..c8b02d97f753 100644 --- a/include/asm-powerpc/mmu-44x.h +++ b/include/asm-powerpc/mmu-44x.h | |||
@@ -53,8 +53,6 @@ | |||
53 | 53 | ||
54 | #ifndef __ASSEMBLY__ | 54 | #ifndef __ASSEMBLY__ |
55 | 55 | ||
56 | typedef unsigned long long phys_addr_t; | ||
57 | |||
58 | typedef struct { | 56 | typedef struct { |
59 | unsigned long id; | 57 | unsigned long id; |
60 | unsigned long vdso_base; | 58 | unsigned long vdso_base; |
diff --git a/include/asm-powerpc/mmu-8xx.h b/include/asm-powerpc/mmu-8xx.h index 952bd8899f2f..9db877eb88db 100644 --- a/include/asm-powerpc/mmu-8xx.h +++ b/include/asm-powerpc/mmu-8xx.h | |||
@@ -136,8 +136,6 @@ | |||
136 | #define SPRN_M_TW 799 | 136 | #define SPRN_M_TW 799 |
137 | 137 | ||
138 | #ifndef __ASSEMBLY__ | 138 | #ifndef __ASSEMBLY__ |
139 | typedef unsigned long phys_addr_t; | ||
140 | |||
141 | typedef struct { | 139 | typedef struct { |
142 | unsigned long id; | 140 | unsigned long id; |
143 | unsigned long vdso_base; | 141 | unsigned long vdso_base; |
diff --git a/include/asm-powerpc/mmu-fsl-booke.h b/include/asm-powerpc/mmu-fsl-booke.h index 37580004cd7a..925d93cf64d8 100644 --- a/include/asm-powerpc/mmu-fsl-booke.h +++ b/include/asm-powerpc/mmu-fsl-booke.h | |||
@@ -73,12 +73,6 @@ | |||
73 | 73 | ||
74 | #ifndef __ASSEMBLY__ | 74 | #ifndef __ASSEMBLY__ |
75 | 75 | ||
76 | #ifndef CONFIG_PHYS_64BIT | ||
77 | typedef unsigned long phys_addr_t; | ||
78 | #else | ||
79 | typedef unsigned long long phys_addr_t; | ||
80 | #endif | ||
81 | |||
82 | typedef struct { | 76 | typedef struct { |
83 | unsigned long id; | 77 | unsigned long id; |
84 | unsigned long vdso_base; | 78 | unsigned long vdso_base; |
diff --git a/include/asm-powerpc/mmu-hash32.h b/include/asm-powerpc/mmu-hash32.h index 4bd735be3833..6e21ca618ec3 100644 --- a/include/asm-powerpc/mmu-hash32.h +++ b/include/asm-powerpc/mmu-hash32.h | |||
@@ -84,8 +84,6 @@ typedef struct { | |||
84 | unsigned long vdso_base; | 84 | unsigned long vdso_base; |
85 | } mm_context_t; | 85 | } mm_context_t; |
86 | 86 | ||
87 | typedef unsigned long phys_addr_t; | ||
88 | |||
89 | #endif /* !__ASSEMBLY__ */ | 87 | #endif /* !__ASSEMBLY__ */ |
90 | 88 | ||
91 | #endif /* _ASM_POWERPC_MMU_HASH32_H_ */ | 89 | #endif /* _ASM_POWERPC_MMU_HASH32_H_ */ |
diff --git a/include/asm-powerpc/mmu-hash64.h b/include/asm-powerpc/mmu-hash64.h index 2864fa3989ea..0dff76776044 100644 --- a/include/asm-powerpc/mmu-hash64.h +++ b/include/asm-powerpc/mmu-hash64.h | |||
@@ -469,9 +469,6 @@ static inline unsigned long get_vsid(unsigned long context, unsigned long ea, | |||
469 | VSID_MODULUS_256M) | 469 | VSID_MODULUS_256M) |
470 | #define KERNEL_VSID(ea) VSID_SCRAMBLE(GET_ESID(ea)) | 470 | #define KERNEL_VSID(ea) VSID_SCRAMBLE(GET_ESID(ea)) |
471 | 471 | ||
472 | /* Physical address used by some IO functions */ | ||
473 | typedef unsigned long phys_addr_t; | ||
474 | |||
475 | #endif /* __ASSEMBLY__ */ | 472 | #endif /* __ASSEMBLY__ */ |
476 | 473 | ||
477 | #endif /* _ASM_POWERPC_MMU_HASH64_H_ */ | 474 | #endif /* _ASM_POWERPC_MMU_HASH64_H_ */ |
diff --git a/include/asm-powerpc/paca.h b/include/asm-powerpc/paca.h index 748b35ab37b5..eb61b9c1edfd 100644 --- a/include/asm-powerpc/paca.h +++ b/include/asm-powerpc/paca.h | |||
@@ -42,10 +42,7 @@ struct task_struct; | |||
42 | * Defines the layout of the paca. | 42 | * Defines the layout of the paca. |
43 | * | 43 | * |
44 | * This structure is not directly accessed by firmware or the service | 44 | * This structure is not directly accessed by firmware or the service |
45 | * processor except for the first two pointers that point to the | 45 | * processor. |
46 | * lppaca area and the ItLpRegSave area for this CPU. The lppaca | ||
47 | * object is currently contained within the PACA but it doesn't need | ||
48 | * to be. | ||
49 | */ | 46 | */ |
50 | struct paca_struct { | 47 | struct paca_struct { |
51 | /* | 48 | /* |
@@ -55,14 +52,7 @@ struct paca_struct { | |||
55 | * avoid cacheline bouncing. | 52 | * avoid cacheline bouncing. |
56 | */ | 53 | */ |
57 | 54 | ||
58 | /* | ||
59 | * MAGIC: These first two pointers can't be moved - they're | ||
60 | * accessed by the firmware | ||
61 | */ | ||
62 | struct lppaca *lppaca_ptr; /* Pointer to LpPaca for PLIC */ | 55 | struct lppaca *lppaca_ptr; /* Pointer to LpPaca for PLIC */ |
63 | #ifdef CONFIG_PPC_ISERIES | ||
64 | void *reg_save_ptr; /* Pointer to LpRegSave for PLIC */ | ||
65 | #endif /* CONFIG_PPC_ISERIES */ | ||
66 | 56 | ||
67 | /* | 57 | /* |
68 | * MAGIC: the spinlock functions in arch/powerpc/lib/locks.c | 58 | * MAGIC: the spinlock functions in arch/powerpc/lib/locks.c |
diff --git a/include/asm-powerpc/page.h b/include/asm-powerpc/page.h index df47bbb6ea13..6c850609b847 100644 --- a/include/asm-powerpc/page.h +++ b/include/asm-powerpc/page.h | |||
@@ -53,6 +53,7 @@ | |||
53 | 53 | ||
54 | #define PAGE_OFFSET ASM_CONST(CONFIG_KERNEL_START) | 54 | #define PAGE_OFFSET ASM_CONST(CONFIG_KERNEL_START) |
55 | #define KERNELBASE (PAGE_OFFSET + PHYSICAL_START) | 55 | #define KERNELBASE (PAGE_OFFSET + PHYSICAL_START) |
56 | #define LOAD_OFFSET PAGE_OFFSET | ||
56 | 57 | ||
57 | #ifdef CONFIG_FLATMEM | 58 | #ifdef CONFIG_FLATMEM |
58 | #define pfn_valid(pfn) ((pfn) < max_mapnr) | 59 | #define pfn_valid(pfn) ((pfn) < max_mapnr) |
diff --git a/include/asm-powerpc/page_32.h b/include/asm-powerpc/page_32.h index 65ea19eec956..51f8134b5939 100644 --- a/include/asm-powerpc/page_32.h +++ b/include/asm-powerpc/page_32.h | |||
@@ -3,8 +3,6 @@ | |||
3 | 3 | ||
4 | #define VM_DATA_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS32 | 4 | #define VM_DATA_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS32 |
5 | 5 | ||
6 | #define PPC_MEMSTART 0 | ||
7 | |||
8 | #ifdef CONFIG_NOT_COHERENT_CACHE | 6 | #ifdef CONFIG_NOT_COHERENT_CACHE |
9 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES | 7 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES |
10 | #endif | 8 | #endif |
diff --git a/include/asm-powerpc/pasemi_dma.h b/include/asm-powerpc/pasemi_dma.h index b4526ff3a50d..19fd7933e2d9 100644 --- a/include/asm-powerpc/pasemi_dma.h +++ b/include/asm-powerpc/pasemi_dma.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2006 PA Semi, Inc | 2 | * Copyright (C) 2006-2008 PA Semi, Inc |
3 | * | 3 | * |
4 | * Hardware register layout and descriptor formats for the on-board | 4 | * Hardware register layout and descriptor formats for the on-board |
5 | * DMA engine on PA Semi PWRficient. Used by ethernet, function and security | 5 | * DMA engine on PA Semi PWRficient. Used by ethernet, function and security |
@@ -40,6 +40,11 @@ enum { | |||
40 | PAS_DMA_COM_TXSTA = 0x104, /* Transmit Status Register */ | 40 | PAS_DMA_COM_TXSTA = 0x104, /* Transmit Status Register */ |
41 | PAS_DMA_COM_RXCMD = 0x108, /* Receive Command Register */ | 41 | PAS_DMA_COM_RXCMD = 0x108, /* Receive Command Register */ |
42 | PAS_DMA_COM_RXSTA = 0x10c, /* Receive Status Register */ | 42 | PAS_DMA_COM_RXSTA = 0x10c, /* Receive Status Register */ |
43 | PAS_DMA_COM_CFG = 0x114, /* Common config reg */ | ||
44 | PAS_DMA_TXF_SFLG0 = 0x140, /* Set flags */ | ||
45 | PAS_DMA_TXF_SFLG1 = 0x144, /* Set flags */ | ||
46 | PAS_DMA_TXF_CFLG0 = 0x148, /* Set flags */ | ||
47 | PAS_DMA_TXF_CFLG1 = 0x14c, /* Set flags */ | ||
43 | }; | 48 | }; |
44 | 49 | ||
45 | 50 | ||
@@ -123,11 +128,16 @@ enum { | |||
123 | #define PAS_DMA_TXCHAN_TCMDSTA_DA 0x00000100 | 128 | #define PAS_DMA_TXCHAN_TCMDSTA_DA 0x00000100 |
124 | #define PAS_DMA_TXCHAN_CFG(c) (0x304+(c)*_PAS_DMA_TXCHAN_STRIDE) | 129 | #define PAS_DMA_TXCHAN_CFG(c) (0x304+(c)*_PAS_DMA_TXCHAN_STRIDE) |
125 | #define PAS_DMA_TXCHAN_CFG_TY_IFACE 0x00000000 /* Type = interface */ | 130 | #define PAS_DMA_TXCHAN_CFG_TY_IFACE 0x00000000 /* Type = interface */ |
131 | #define PAS_DMA_TXCHAN_CFG_TY_COPY 0x00000001 /* Type = copy only */ | ||
132 | #define PAS_DMA_TXCHAN_CFG_TY_FUNC 0x00000002 /* Type = function */ | ||
133 | #define PAS_DMA_TXCHAN_CFG_TY_XOR 0x00000003 /* Type = xor only */ | ||
126 | #define PAS_DMA_TXCHAN_CFG_TATTR_M 0x0000003c | 134 | #define PAS_DMA_TXCHAN_CFG_TATTR_M 0x0000003c |
127 | #define PAS_DMA_TXCHAN_CFG_TATTR_S 2 | 135 | #define PAS_DMA_TXCHAN_CFG_TATTR_S 2 |
128 | #define PAS_DMA_TXCHAN_CFG_TATTR(x) (((x) << PAS_DMA_TXCHAN_CFG_TATTR_S) & \ | 136 | #define PAS_DMA_TXCHAN_CFG_TATTR(x) (((x) << PAS_DMA_TXCHAN_CFG_TATTR_S) & \ |
129 | PAS_DMA_TXCHAN_CFG_TATTR_M) | 137 | PAS_DMA_TXCHAN_CFG_TATTR_M) |
130 | #define PAS_DMA_TXCHAN_CFG_WT_M 0x000001c0 | 138 | #define PAS_DMA_TXCHAN_CFG_LPDQ 0x00000800 |
139 | #define PAS_DMA_TXCHAN_CFG_LPSQ 0x00000400 | ||
140 | #define PAS_DMA_TXCHAN_CFG_WT_M 0x000003c0 | ||
131 | #define PAS_DMA_TXCHAN_CFG_WT_S 6 | 141 | #define PAS_DMA_TXCHAN_CFG_WT_S 6 |
132 | #define PAS_DMA_TXCHAN_CFG_WT(x) (((x) << PAS_DMA_TXCHAN_CFG_WT_S) & \ | 142 | #define PAS_DMA_TXCHAN_CFG_WT(x) (((x) << PAS_DMA_TXCHAN_CFG_WT_S) & \ |
133 | PAS_DMA_TXCHAN_CFG_WT_M) | 143 | PAS_DMA_TXCHAN_CFG_WT_M) |
@@ -394,11 +404,62 @@ enum { | |||
394 | XCT_COPY_LLEN_M) | 404 | XCT_COPY_LLEN_M) |
395 | #define XCT_COPY_SE 0x0000000000000001ull | 405 | #define XCT_COPY_SE 0x0000000000000001ull |
396 | 406 | ||
407 | /* Function descriptor fields */ | ||
408 | #define XCT_FUN_T 0x8000000000000000ull | ||
409 | #define XCT_FUN_ST 0x4000000000000000ull | ||
410 | #define XCT_FUN_RR_M 0x3000000000000000ull | ||
411 | #define XCT_FUN_RR_NORES 0x0000000000000000ull | ||
412 | #define XCT_FUN_RR_8BRES 0x1000000000000000ull | ||
413 | #define XCT_FUN_RR_24BRES 0x2000000000000000ull | ||
414 | #define XCT_FUN_RR_40BRES 0x3000000000000000ull | ||
415 | #define XCT_FUN_I 0x0800000000000000ull | ||
416 | #define XCT_FUN_O 0x0400000000000000ull | ||
417 | #define XCT_FUN_E 0x0200000000000000ull | ||
418 | #define XCT_FUN_FUN_M 0x01c0000000000000ull | ||
419 | #define XCT_FUN_FUN_S 54 | ||
420 | #define XCT_FUN_FUN(x) ((((long)(x)) << XCT_FUN_FUN_S) & XCT_FUN_FUN_M) | ||
421 | #define XCT_FUN_CRM_M 0x0038000000000000ull | ||
422 | #define XCT_FUN_CRM_NOP 0x0000000000000000ull | ||
423 | #define XCT_FUN_CRM_SIG 0x0008000000000000ull | ||
424 | #define XCT_FUN_LLEN_M 0x0007ffff00000000ull | ||
425 | #define XCT_FUN_LLEN_S 32 | ||
426 | #define XCT_FUN_LLEN(x) ((((long)(x)) << XCT_FUN_LLEN_S) & XCT_FUN_LLEN_M) | ||
427 | #define XCT_FUN_SHL_M 0x00000000f8000000ull | ||
428 | #define XCT_FUN_SHL_S 27 | ||
429 | #define XCT_FUN_SHL(x) ((((long)(x)) << XCT_FUN_SHL_S) & XCT_FUN_SHL_M) | ||
430 | #define XCT_FUN_CHL_M 0x0000000007c00000ull | ||
431 | #define XCT_FUN_HSZ_M 0x00000000003c0000ull | ||
432 | #define XCT_FUN_ALG_M 0x0000000000038000ull | ||
433 | #define XCT_FUN_HP 0x0000000000004000ull | ||
434 | #define XCT_FUN_BCM_M 0x0000000000003800ull | ||
435 | #define XCT_FUN_BCP_M 0x0000000000000600ull | ||
436 | #define XCT_FUN_SIG_M 0x00000000000001f0ull | ||
437 | #define XCT_FUN_SIG_TCP4 0x0000000000000140ull | ||
438 | #define XCT_FUN_SIG_TCP6 0x0000000000000150ull | ||
439 | #define XCT_FUN_SIG_UDP4 0x0000000000000160ull | ||
440 | #define XCT_FUN_SIG_UDP6 0x0000000000000170ull | ||
441 | #define XCT_FUN_A 0x0000000000000008ull | ||
442 | #define XCT_FUN_C 0x0000000000000004ull | ||
443 | #define XCT_FUN_AL2 0x0000000000000002ull | ||
444 | #define XCT_FUN_SE 0x0000000000000001ull | ||
445 | |||
446 | /* Function descriptor 8byte result fields */ | ||
447 | #define XCT_FUNRES_8B_CS_M 0x0000ffff00000000ull | ||
448 | #define XCT_FUNRES_8B_CS_S 32 | ||
449 | #define XCT_FUNRES_8B_CRC_M 0x00000000ffffffffull | ||
450 | #define XCT_FUNRES_8B_CRC_S 0 | ||
451 | |||
397 | /* Control descriptor fields */ | 452 | /* Control descriptor fields */ |
398 | #define CTRL_CMD_T 0x8000000000000000ull | 453 | #define CTRL_CMD_T 0x8000000000000000ull |
399 | #define CTRL_CMD_META_EVT 0x2000000000000000ull | 454 | #define CTRL_CMD_META_EVT 0x2000000000000000ull |
400 | #define CTRL_CMD_O 0x0400000000000000ull | 455 | #define CTRL_CMD_O 0x0400000000000000ull |
401 | #define CTRL_CMD_REG_M 0x000000000000000full | 456 | #define CTRL_CMD_ETYPE_M 0x0038000000000000ull |
457 | #define CTRL_CMD_ETYPE_EXT 0x0000000000000000ull | ||
458 | #define CTRL_CMD_ETYPE_WSET 0x0020000000000000ull | ||
459 | #define CTRL_CMD_ETYPE_WCLR 0x0028000000000000ull | ||
460 | #define CTRL_CMD_ETYPE_SET 0x0030000000000000ull | ||
461 | #define CTRL_CMD_ETYPE_CLR 0x0038000000000000ull | ||
462 | #define CTRL_CMD_REG_M 0x000000000000007full | ||
402 | #define CTRL_CMD_REG_S 0 | 463 | #define CTRL_CMD_REG_S 0 |
403 | #define CTRL_CMD_REG(x) ((((long)(x)) << CTRL_CMD_REG_S) & \ | 464 | #define CTRL_CMD_REG(x) ((((long)(x)) << CTRL_CMD_REG_S) & \ |
404 | CTRL_CMD_REG_M) | 465 | CTRL_CMD_REG_M) |
@@ -461,6 +522,16 @@ extern void *pasemi_dma_alloc_buf(struct pasemi_dmachan *chan, int size, | |||
461 | extern void pasemi_dma_free_buf(struct pasemi_dmachan *chan, int size, | 522 | extern void pasemi_dma_free_buf(struct pasemi_dmachan *chan, int size, |
462 | dma_addr_t *handle); | 523 | dma_addr_t *handle); |
463 | 524 | ||
525 | /* Routines to allocate flags (events) for channel syncronization */ | ||
526 | extern int pasemi_dma_alloc_flag(void); | ||
527 | extern void pasemi_dma_free_flag(int flag); | ||
528 | extern void pasemi_dma_set_flag(int flag); | ||
529 | extern void pasemi_dma_clear_flag(int flag); | ||
530 | |||
531 | /* Routines to allocate function engines */ | ||
532 | extern int pasemi_dma_alloc_fun(void); | ||
533 | extern void pasemi_dma_free_fun(int fun); | ||
534 | |||
464 | /* Initialize the library, must be called before any other functions */ | 535 | /* Initialize the library, must be called before any other functions */ |
465 | extern int pasemi_dma_init(void); | 536 | extern int pasemi_dma_init(void); |
466 | 537 | ||
diff --git a/include/asm-powerpc/pci-bridge.h b/include/asm-powerpc/pci-bridge.h index e5802c62f428..b95d033ae6e6 100644 --- a/include/asm-powerpc/pci-bridge.h +++ b/include/asm-powerpc/pci-bridge.h | |||
@@ -117,7 +117,7 @@ struct pci_controller { | |||
117 | 117 | ||
118 | #ifndef CONFIG_PPC64 | 118 | #ifndef CONFIG_PPC64 |
119 | 119 | ||
120 | static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus) | 120 | static inline struct pci_controller *pci_bus_to_host(const struct pci_bus *bus) |
121 | { | 121 | { |
122 | return bus->sysdata; | 122 | return bus->sysdata; |
123 | } | 123 | } |
@@ -235,7 +235,7 @@ extern void pcibios_fixup_new_pci_devices(struct pci_bus *bus); | |||
235 | 235 | ||
236 | extern int pcibios_remove_root_bus(struct pci_controller *phb); | 236 | extern int pcibios_remove_root_bus(struct pci_controller *phb); |
237 | 237 | ||
238 | static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus) | 238 | static inline struct pci_controller *pci_bus_to_host(const struct pci_bus *bus) |
239 | { | 239 | { |
240 | struct device_node *busdn = bus->sysdata; | 240 | struct device_node *busdn = bus->sysdata; |
241 | 241 | ||
diff --git a/include/asm-powerpc/pgtable-ppc32.h b/include/asm-powerpc/pgtable-ppc32.h index 2c79f550272b..daea7692d070 100644 --- a/include/asm-powerpc/pgtable-ppc32.h +++ b/include/asm-powerpc/pgtable-ppc32.h | |||
@@ -98,9 +98,6 @@ extern int icache_44x_need_flush; | |||
98 | #define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE) | 98 | #define USER_PTRS_PER_PGD (TASK_SIZE / PGDIR_SIZE) |
99 | #define FIRST_USER_ADDRESS 0 | 99 | #define FIRST_USER_ADDRESS 0 |
100 | 100 | ||
101 | #define USER_PGD_PTRS (PAGE_OFFSET >> PGDIR_SHIFT) | ||
102 | #define KERNEL_PGD_PTRS (PTRS_PER_PGD-USER_PGD_PTRS) | ||
103 | |||
104 | #define pte_ERROR(e) \ | 101 | #define pte_ERROR(e) \ |
105 | printk("%s:%d: bad pte %llx.\n", __FILE__, __LINE__, \ | 102 | printk("%s:%d: bad pte %llx.\n", __FILE__, __LINE__, \ |
106 | (unsigned long long)pte_val(e)) | 103 | (unsigned long long)pte_val(e)) |
@@ -420,7 +417,8 @@ extern int icache_44x_need_flush; | |||
420 | #define _PAGE_IO (_PAGE_KERNEL | _PAGE_NO_CACHE | _PAGE_GUARDED) | 417 | #define _PAGE_IO (_PAGE_KERNEL | _PAGE_NO_CACHE | _PAGE_GUARDED) |
421 | #define _PAGE_RAM (_PAGE_KERNEL | _PAGE_HWEXEC) | 418 | #define _PAGE_RAM (_PAGE_KERNEL | _PAGE_HWEXEC) |
422 | 419 | ||
423 | #if defined(CONFIG_KGDB) || defined(CONFIG_XMON) || defined(CONFIG_BDI_SWITCH) | 420 | #if defined(CONFIG_KGDB) || defined(CONFIG_XMON) || defined(CONFIG_BDI_SWITCH) ||\ |
421 | defined(CONFIG_KPROBES) | ||
424 | /* We want the debuggers to be able to set breakpoints anywhere, so | 422 | /* We want the debuggers to be able to set breakpoints anywhere, so |
425 | * don't write protect the kernel text */ | 423 | * don't write protect the kernel text */ |
426 | #define _PAGE_RAM_TEXT _PAGE_RAM | 424 | #define _PAGE_RAM_TEXT _PAGE_RAM |
@@ -692,7 +690,7 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, | |||
692 | #define pmd_page_vaddr(pmd) \ | 690 | #define pmd_page_vaddr(pmd) \ |
693 | ((unsigned long) (pmd_val(pmd) & PAGE_MASK)) | 691 | ((unsigned long) (pmd_val(pmd) & PAGE_MASK)) |
694 | #define pmd_page(pmd) \ | 692 | #define pmd_page(pmd) \ |
695 | (mem_map + (__pa(pmd_val(pmd)) >> PAGE_SHIFT)) | 693 | pfn_to_page((__pa(pmd_val(pmd)) >> PAGE_SHIFT)) |
696 | #endif | 694 | #endif |
697 | 695 | ||
698 | /* to find an entry in a kernel page-table-directory */ | 696 | /* to find an entry in a kernel page-table-directory */ |
diff --git a/include/asm-powerpc/phyp_dump.h b/include/asm-powerpc/phyp_dump.h new file mode 100644 index 000000000000..fa74c6c3e106 --- /dev/null +++ b/include/asm-powerpc/phyp_dump.h | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * Hypervisor-assisted dump | ||
3 | * | ||
4 | * Linas Vepstas, Manish Ahuja 2008 | ||
5 | * Copyright 2008 IBM Corp. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version | ||
10 | * 2 of the License, or (at your option) any later version. | ||
11 | */ | ||
12 | |||
13 | #ifndef _PPC64_PHYP_DUMP_H | ||
14 | #define _PPC64_PHYP_DUMP_H | ||
15 | |||
16 | #ifdef CONFIG_PHYP_DUMP | ||
17 | |||
18 | /* The RMR region will be saved for later dumping | ||
19 | * whenever the kernel crashes. Set this to 256MB. */ | ||
20 | #define PHYP_DUMP_RMR_START 0x0 | ||
21 | #define PHYP_DUMP_RMR_END (1UL<<28) | ||
22 | |||
23 | struct phyp_dump { | ||
24 | /* Memory that is reserved during very early boot. */ | ||
25 | unsigned long init_reserve_start; | ||
26 | unsigned long init_reserve_size; | ||
27 | /* cmd line options during boot */ | ||
28 | unsigned long reserve_bootvar; | ||
29 | unsigned long phyp_dump_at_boot; | ||
30 | /* Check status during boot if dump supported, active & present*/ | ||
31 | unsigned long phyp_dump_configured; | ||
32 | unsigned long phyp_dump_is_active; | ||
33 | /* store cpu & hpte size */ | ||
34 | unsigned long cpu_state_size; | ||
35 | unsigned long hpte_region_size; | ||
36 | /* previous scratch area values */ | ||
37 | unsigned long reserved_scratch_addr; | ||
38 | unsigned long reserved_scratch_size; | ||
39 | }; | ||
40 | |||
41 | extern struct phyp_dump *phyp_dump_info; | ||
42 | |||
43 | int early_init_dt_scan_phyp_dump(unsigned long node, | ||
44 | const char *uname, int depth, void *data); | ||
45 | |||
46 | #endif /* CONFIG_PHYP_DUMP */ | ||
47 | #endif /* _PPC64_PHYP_DUMP_H */ | ||
diff --git a/include/asm-powerpc/pmi.h b/include/asm-powerpc/pmi.h index 2259d4ce3846..e1dc090748df 100644 --- a/include/asm-powerpc/pmi.h +++ b/include/asm-powerpc/pmi.h | |||
@@ -29,8 +29,6 @@ | |||
29 | 29 | ||
30 | #ifdef __KERNEL__ | 30 | #ifdef __KERNEL__ |
31 | 31 | ||
32 | #include <asm/of_device.h> | ||
33 | |||
34 | #define PMI_TYPE_FREQ_CHANGE 0x01 | 32 | #define PMI_TYPE_FREQ_CHANGE 0x01 |
35 | #define PMI_READ_TYPE 0 | 33 | #define PMI_READ_TYPE 0 |
36 | #define PMI_READ_DATA0 1 | 34 | #define PMI_READ_DATA0 1 |
diff --git a/include/asm-powerpc/ppc4xx.h b/include/asm-powerpc/ppc4xx.h new file mode 100644 index 000000000000..033039a80c42 --- /dev/null +++ b/include/asm-powerpc/ppc4xx.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * PPC4xx Prototypes and definitions | ||
3 | * | ||
4 | * Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
5 | * | ||
6 | * This is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #ifndef __ASM_POWERPC_PPC4xx_H__ | ||
14 | #define __ASM_POWERPC_PPC4xx_H__ | ||
15 | |||
16 | extern void ppc4xx_reset_system(char *cmd); | ||
17 | |||
18 | #endif /* __ASM_POWERPC_PPC4xx_H__ */ | ||
diff --git a/include/asm-powerpc/ps3.h b/include/asm-powerpc/ps3.h index 2b693673eff4..9e8ed6824e15 100644 --- a/include/asm-powerpc/ps3.h +++ b/include/asm-powerpc/ps3.h | |||
@@ -434,8 +434,11 @@ struct ps3_sys_manager_ops { | |||
434 | }; | 434 | }; |
435 | 435 | ||
436 | void ps3_sys_manager_register_ops(const struct ps3_sys_manager_ops *ops); | 436 | void ps3_sys_manager_register_ops(const struct ps3_sys_manager_ops *ops); |
437 | void ps3_sys_manager_power_off(void); | 437 | void __noreturn ps3_sys_manager_power_off(void); |
438 | void ps3_sys_manager_restart(void); | 438 | void __noreturn ps3_sys_manager_restart(void); |
439 | void __noreturn ps3_sys_manager_halt(void); | ||
440 | int ps3_sys_manager_get_wol(void); | ||
441 | void ps3_sys_manager_set_wol(int state); | ||
439 | 442 | ||
440 | struct ps3_prealloc { | 443 | struct ps3_prealloc { |
441 | const char *name; | 444 | const char *name; |
diff --git a/include/asm-powerpc/ptrace.h b/include/asm-powerpc/ptrace.h index 891d68932f39..39023dde1cc4 100644 --- a/include/asm-powerpc/ptrace.h +++ b/include/asm-powerpc/ptrace.h | |||
@@ -58,6 +58,11 @@ struct pt_regs { | |||
58 | #define __ARCH_WANT_COMPAT_SYS_PTRACE | 58 | #define __ARCH_WANT_COMPAT_SYS_PTRACE |
59 | 59 | ||
60 | #define STACK_FRAME_OVERHEAD 112 /* size of minimum stack frame */ | 60 | #define STACK_FRAME_OVERHEAD 112 /* size of minimum stack frame */ |
61 | #define STACK_FRAME_LR_SAVE 2 /* Location of LR in stack frame */ | ||
62 | #define STACK_FRAME_REGS_MARKER ASM_CONST(0x7265677368657265) | ||
63 | #define STACK_INT_FRAME_SIZE (sizeof(struct pt_regs) + \ | ||
64 | STACK_FRAME_OVERHEAD + 288) | ||
65 | #define STACK_FRAME_MARKER 12 | ||
61 | 66 | ||
62 | /* Size of dummy stack frame allocated when calling signal handler. */ | 67 | /* Size of dummy stack frame allocated when calling signal handler. */ |
63 | #define __SIGNAL_FRAMESIZE 128 | 68 | #define __SIGNAL_FRAMESIZE 128 |
@@ -66,6 +71,10 @@ struct pt_regs { | |||
66 | #else /* __powerpc64__ */ | 71 | #else /* __powerpc64__ */ |
67 | 72 | ||
68 | #define STACK_FRAME_OVERHEAD 16 /* size of minimum stack frame */ | 73 | #define STACK_FRAME_OVERHEAD 16 /* size of minimum stack frame */ |
74 | #define STACK_FRAME_LR_SAVE 1 /* Location of LR in stack frame */ | ||
75 | #define STACK_FRAME_REGS_MARKER ASM_CONST(0x72656773) | ||
76 | #define STACK_INT_FRAME_SIZE (sizeof(struct pt_regs) + STACK_FRAME_OVERHEAD) | ||
77 | #define STACK_FRAME_MARKER 2 | ||
69 | 78 | ||
70 | /* Size of stack frame allocated when calling signal handler. */ | 79 | /* Size of stack frame allocated when calling signal handler. */ |
71 | #define __SIGNAL_FRAMESIZE 64 | 80 | #define __SIGNAL_FRAMESIZE 64 |
diff --git a/include/asm-powerpc/qe.h b/include/asm-powerpc/qe.h index 430dc77b35fc..c3be6e2e1490 100644 --- a/include/asm-powerpc/qe.h +++ b/include/asm-powerpc/qe.h | |||
@@ -85,6 +85,7 @@ extern int par_io_data_set(u8 port, u8 pin, u8 val); | |||
85 | /* QE internal API */ | 85 | /* QE internal API */ |
86 | int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input); | 86 | int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input); |
87 | enum qe_clock qe_clock_source(const char *source); | 87 | enum qe_clock qe_clock_source(const char *source); |
88 | unsigned int qe_get_brg_clk(void); | ||
88 | int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier); | 89 | int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier); |
89 | int qe_get_snum(void); | 90 | int qe_get_snum(void); |
90 | void qe_put_snum(u8 snum); | 91 | void qe_put_snum(u8 snum); |
@@ -92,7 +93,16 @@ unsigned long qe_muram_alloc(int size, int align); | |||
92 | int qe_muram_free(unsigned long offset); | 93 | int qe_muram_free(unsigned long offset); |
93 | unsigned long qe_muram_alloc_fixed(unsigned long offset, int size); | 94 | unsigned long qe_muram_alloc_fixed(unsigned long offset, int size); |
94 | void qe_muram_dump(void); | 95 | void qe_muram_dump(void); |
95 | void *qe_muram_addr(unsigned long offset); | 96 | |
97 | static inline void __iomem *qe_muram_addr(unsigned long offset) | ||
98 | { | ||
99 | return (void __iomem *)&qe_immr->muram[offset]; | ||
100 | } | ||
101 | |||
102 | static inline unsigned long qe_muram_offset(void __iomem *addr) | ||
103 | { | ||
104 | return addr - (void __iomem *)qe_immr->muram; | ||
105 | } | ||
96 | 106 | ||
97 | /* Structure that defines QE firmware binary files. | 107 | /* Structure that defines QE firmware binary files. |
98 | * | 108 | * |
diff --git a/include/asm-powerpc/rwsem.h b/include/asm-powerpc/rwsem.h index cefc14728cc5..a6cc93b78b98 100644 --- a/include/asm-powerpc/rwsem.h +++ b/include/asm-powerpc/rwsem.h | |||
@@ -32,11 +32,20 @@ struct rw_semaphore { | |||
32 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) | 32 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) |
33 | spinlock_t wait_lock; | 33 | spinlock_t wait_lock; |
34 | struct list_head wait_list; | 34 | struct list_head wait_list; |
35 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
36 | struct lockdep_map dep_map; | ||
37 | #endif | ||
35 | }; | 38 | }; |
36 | 39 | ||
40 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
41 | # define __RWSEM_DEP_MAP_INIT(lockname) , .dep_map = { .name = #lockname } | ||
42 | #else | ||
43 | # define __RWSEM_DEP_MAP_INIT(lockname) | ||
44 | #endif | ||
45 | |||
37 | #define __RWSEM_INITIALIZER(name) \ | 46 | #define __RWSEM_INITIALIZER(name) \ |
38 | { RWSEM_UNLOCKED_VALUE, SPIN_LOCK_UNLOCKED, \ | 47 | { RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED((name).wait_lock), \ |
39 | LIST_HEAD_INIT((name).wait_list) } | 48 | LIST_HEAD_INIT((name).wait_list) __RWSEM_DEP_MAP_INIT(name) } |
40 | 49 | ||
41 | #define DECLARE_RWSEM(name) \ | 50 | #define DECLARE_RWSEM(name) \ |
42 | struct rw_semaphore name = __RWSEM_INITIALIZER(name) | 51 | struct rw_semaphore name = __RWSEM_INITIALIZER(name) |
@@ -46,12 +55,15 @@ extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); | |||
46 | extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); | 55 | extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); |
47 | extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); | 56 | extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); |
48 | 57 | ||
49 | static inline void init_rwsem(struct rw_semaphore *sem) | 58 | extern void __init_rwsem(struct rw_semaphore *sem, const char *name, |
50 | { | 59 | struct lock_class_key *key); |
51 | sem->count = RWSEM_UNLOCKED_VALUE; | 60 | |
52 | spin_lock_init(&sem->wait_lock); | 61 | #define init_rwsem(sem) \ |
53 | INIT_LIST_HEAD(&sem->wait_list); | 62 | do { \ |
54 | } | 63 | static struct lock_class_key __key; \ |
64 | \ | ||
65 | __init_rwsem((sem), #sem, &__key); \ | ||
66 | } while (0) | ||
55 | 67 | ||
56 | /* | 68 | /* |
57 | * lock for reading | 69 | * lock for reading |
@@ -78,7 +90,7 @@ static inline int __down_read_trylock(struct rw_semaphore *sem) | |||
78 | /* | 90 | /* |
79 | * lock for writing | 91 | * lock for writing |
80 | */ | 92 | */ |
81 | static inline void __down_write(struct rw_semaphore *sem) | 93 | static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) |
82 | { | 94 | { |
83 | int tmp; | 95 | int tmp; |
84 | 96 | ||
@@ -88,6 +100,11 @@ static inline void __down_write(struct rw_semaphore *sem) | |||
88 | rwsem_down_write_failed(sem); | 100 | rwsem_down_write_failed(sem); |
89 | } | 101 | } |
90 | 102 | ||
103 | static inline void __down_write(struct rw_semaphore *sem) | ||
104 | { | ||
105 | __down_write_nested(sem, 0); | ||
106 | } | ||
107 | |||
91 | static inline int __down_write_trylock(struct rw_semaphore *sem) | 108 | static inline int __down_write_trylock(struct rw_semaphore *sem) |
92 | { | 109 | { |
93 | int tmp; | 110 | int tmp; |
diff --git a/include/asm-powerpc/sparsemem.h b/include/asm-powerpc/sparsemem.h index e8b493d52b4f..9aea8e9f0bd1 100644 --- a/include/asm-powerpc/sparsemem.h +++ b/include/asm-powerpc/sparsemem.h | |||
@@ -15,6 +15,7 @@ | |||
15 | 15 | ||
16 | #ifdef CONFIG_MEMORY_HOTPLUG | 16 | #ifdef CONFIG_MEMORY_HOTPLUG |
17 | extern void create_section_mapping(unsigned long start, unsigned long end); | 17 | extern void create_section_mapping(unsigned long start, unsigned long end); |
18 | extern int remove_section_mapping(unsigned long start, unsigned long end); | ||
18 | #ifdef CONFIG_NUMA | 19 | #ifdef CONFIG_NUMA |
19 | extern int hot_add_scn_to_nid(unsigned long scn_addr); | 20 | extern int hot_add_scn_to_nid(unsigned long scn_addr); |
20 | #else | 21 | #else |
diff --git a/include/asm-powerpc/spinlock.h b/include/asm-powerpc/spinlock.h index cc4cfceac67c..258c93993190 100644 --- a/include/asm-powerpc/spinlock.h +++ b/include/asm-powerpc/spinlock.h | |||
@@ -19,6 +19,7 @@ | |||
19 | * | 19 | * |
20 | * (the type definitions are in asm/spinlock_types.h) | 20 | * (the type definitions are in asm/spinlock_types.h) |
21 | */ | 21 | */ |
22 | #include <linux/irqflags.h> | ||
22 | #ifdef CONFIG_PPC64 | 23 | #ifdef CONFIG_PPC64 |
23 | #include <asm/paca.h> | 24 | #include <asm/paca.h> |
24 | #include <asm/hvcall.h> | 25 | #include <asm/hvcall.h> |
diff --git a/include/asm-powerpc/string.h b/include/asm-powerpc/string.h index aa40f92c298d..e40010abcaf1 100644 --- a/include/asm-powerpc/string.h +++ b/include/asm-powerpc/string.h | |||
@@ -7,6 +7,7 @@ | |||
7 | #define __HAVE_ARCH_STRNCPY | 7 | #define __HAVE_ARCH_STRNCPY |
8 | #define __HAVE_ARCH_STRLEN | 8 | #define __HAVE_ARCH_STRLEN |
9 | #define __HAVE_ARCH_STRCMP | 9 | #define __HAVE_ARCH_STRCMP |
10 | #define __HAVE_ARCH_STRNCMP | ||
10 | #define __HAVE_ARCH_STRCAT | 11 | #define __HAVE_ARCH_STRCAT |
11 | #define __HAVE_ARCH_MEMSET | 12 | #define __HAVE_ARCH_MEMSET |
12 | #define __HAVE_ARCH_MEMCPY | 13 | #define __HAVE_ARCH_MEMCPY |
@@ -18,6 +19,7 @@ extern char * strcpy(char *,const char *); | |||
18 | extern char * strncpy(char *,const char *, __kernel_size_t); | 19 | extern char * strncpy(char *,const char *, __kernel_size_t); |
19 | extern __kernel_size_t strlen(const char *); | 20 | extern __kernel_size_t strlen(const char *); |
20 | extern int strcmp(const char *,const char *); | 21 | extern int strcmp(const char *,const char *); |
22 | extern int strncmp(const char *, const char *, __kernel_size_t); | ||
21 | extern char * strcat(char *, const char *); | 23 | extern char * strcat(char *, const char *); |
22 | extern void * memset(void *,int,__kernel_size_t); | 24 | extern void * memset(void *,int,__kernel_size_t); |
23 | extern void * memcpy(void *,const void *,__kernel_size_t); | 25 | extern void * memcpy(void *,const void *,__kernel_size_t); |
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h index 29552ff182aa..fab1674b31b6 100644 --- a/include/asm-powerpc/system.h +++ b/include/asm-powerpc/system.h | |||
@@ -5,6 +5,7 @@ | |||
5 | #define _ASM_POWERPC_SYSTEM_H | 5 | #define _ASM_POWERPC_SYSTEM_H |
6 | 6 | ||
7 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
8 | #include <linux/irqflags.h> | ||
8 | 9 | ||
9 | #include <asm/hw_irq.h> | 10 | #include <asm/hw_irq.h> |
10 | 11 | ||
diff --git a/include/asm-powerpc/types.h b/include/asm-powerpc/types.h index 903fd1932436..c243a6ac60e5 100644 --- a/include/asm-powerpc/types.h +++ b/include/asm-powerpc/types.h | |||
@@ -84,6 +84,13 @@ typedef unsigned long long u64; | |||
84 | 84 | ||
85 | typedef __vector128 vector128; | 85 | typedef __vector128 vector128; |
86 | 86 | ||
87 | /* Physical address used by some IO functions */ | ||
88 | #if defined(CONFIG_PPC64) || defined(CONFIG_PHYS_64BIT) | ||
89 | typedef u64 phys_addr_t; | ||
90 | #else | ||
91 | typedef u32 phys_addr_t; | ||
92 | #endif | ||
93 | |||
87 | #ifdef __powerpc64__ | 94 | #ifdef __powerpc64__ |
88 | typedef u64 dma_addr_t; | 95 | typedef u64 dma_addr_t; |
89 | #else | 96 | #else |
diff --git a/include/asm-sparc64/lmb.h b/include/asm-sparc64/lmb.h new file mode 100644 index 000000000000..6a352cbcf520 --- /dev/null +++ b/include/asm-sparc64/lmb.h | |||
@@ -0,0 +1,10 @@ | |||
1 | #ifndef _SPARC64_LMB_H | ||
2 | #define _SPARC64_LMB_H | ||
3 | |||
4 | #include <asm/oplib.h> | ||
5 | |||
6 | #define LMB_DBG(fmt...) prom_printf(fmt) | ||
7 | |||
8 | #define LMB_REAL_LIMIT 0 | ||
9 | |||
10 | #endif /* !(_SPARC64_LMB_H) */ | ||
diff --git a/include/linux/lmb.h b/include/linux/lmb.h new file mode 100644 index 000000000000..271153d27fba --- /dev/null +++ b/include/linux/lmb.h | |||
@@ -0,0 +1,85 @@ | |||
1 | #ifndef _LINUX_LMB_H | ||
2 | #define _LINUX_LMB_H | ||
3 | #ifdef __KERNEL__ | ||
4 | |||
5 | /* | ||
6 | * Logical memory blocks. | ||
7 | * | ||
8 | * Copyright (C) 2001 Peter Bergner, IBM Corp. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or | ||
11 | * modify it under the terms of the GNU General Public License | ||
12 | * as published by the Free Software Foundation; either version | ||
13 | * 2 of the License, or (at your option) any later version. | ||
14 | */ | ||
15 | |||
16 | #include <linux/init.h> | ||
17 | #include <linux/mm.h> | ||
18 | |||
19 | #define MAX_LMB_REGIONS 128 | ||
20 | |||
21 | struct lmb_property { | ||
22 | u64 base; | ||
23 | u64 size; | ||
24 | }; | ||
25 | |||
26 | struct lmb_region { | ||
27 | unsigned long cnt; | ||
28 | u64 size; | ||
29 | struct lmb_property region[MAX_LMB_REGIONS+1]; | ||
30 | }; | ||
31 | |||
32 | struct lmb { | ||
33 | unsigned long debug; | ||
34 | u64 rmo_size; | ||
35 | struct lmb_region memory; | ||
36 | struct lmb_region reserved; | ||
37 | }; | ||
38 | |||
39 | extern struct lmb lmb; | ||
40 | |||
41 | extern void __init lmb_init(void); | ||
42 | extern void __init lmb_analyze(void); | ||
43 | extern long __init lmb_add(u64 base, u64 size); | ||
44 | extern long __init lmb_reserve(u64 base, u64 size); | ||
45 | extern u64 __init lmb_alloc_nid(u64 size, u64 align, int nid, | ||
46 | u64 (*nid_range)(u64, u64, int *)); | ||
47 | extern u64 __init lmb_alloc(u64 size, u64 align); | ||
48 | extern u64 __init lmb_alloc_base(u64 size, | ||
49 | u64, u64 max_addr); | ||
50 | extern u64 __init __lmb_alloc_base(u64 size, | ||
51 | u64 align, u64 max_addr); | ||
52 | extern u64 __init lmb_phys_mem_size(void); | ||
53 | extern u64 __init lmb_end_of_DRAM(void); | ||
54 | extern void __init lmb_enforce_memory_limit(u64 memory_limit); | ||
55 | extern int __init lmb_is_reserved(u64 addr); | ||
56 | |||
57 | extern void lmb_dump_all(void); | ||
58 | |||
59 | static inline u64 | ||
60 | lmb_size_bytes(struct lmb_region *type, unsigned long region_nr) | ||
61 | { | ||
62 | return type->region[region_nr].size; | ||
63 | } | ||
64 | static inline u64 | ||
65 | lmb_size_pages(struct lmb_region *type, unsigned long region_nr) | ||
66 | { | ||
67 | return lmb_size_bytes(type, region_nr) >> PAGE_SHIFT; | ||
68 | } | ||
69 | static inline u64 | ||
70 | lmb_start_pfn(struct lmb_region *type, unsigned long region_nr) | ||
71 | { | ||
72 | return type->region[region_nr].base >> PAGE_SHIFT; | ||
73 | } | ||
74 | static inline u64 | ||
75 | lmb_end_pfn(struct lmb_region *type, unsigned long region_nr) | ||
76 | { | ||
77 | return lmb_start_pfn(type, region_nr) + | ||
78 | lmb_size_pages(type, region_nr); | ||
79 | } | ||
80 | |||
81 | #include <asm/lmb.h> | ||
82 | |||
83 | #endif /* __KERNEL__ */ | ||
84 | |||
85 | #endif /* _LINUX_LMB_H */ | ||
diff --git a/include/linux/of.h b/include/linux/of.h index 6981016dcc25..59a61bdc98b6 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
@@ -62,6 +62,7 @@ extern struct property *of_find_property(const struct device_node *np, | |||
62 | int *lenp); | 62 | int *lenp); |
63 | extern int of_device_is_compatible(const struct device_node *device, | 63 | extern int of_device_is_compatible(const struct device_node *device, |
64 | const char *); | 64 | const char *); |
65 | extern int of_device_is_available(const struct device_node *device); | ||
65 | extern const void *of_get_property(const struct device_node *node, | 66 | extern const void *of_get_property(const struct device_node *node, |
66 | const char *name, | 67 | const char *name, |
67 | int *lenp); | 68 | int *lenp); |
diff --git a/include/linux/of_gpio.h b/include/linux/of_gpio.h new file mode 100644 index 000000000000..2ee97e9877a7 --- /dev/null +++ b/include/linux/of_gpio.h | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * OF helpers for the GPIO API | ||
3 | * | ||
4 | * Copyright (c) 2007-2008 MontaVista Software, Inc. | ||
5 | * | ||
6 | * Author: Anton Vorontsov <avorontsov@ru.mvista.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #ifndef __LINUX_OF_GPIO_H | ||
15 | #define __LINUX_OF_GPIO_H | ||
16 | |||
17 | #include <linux/errno.h> | ||
18 | #include <asm/gpio.h> | ||
19 | |||
20 | #ifdef CONFIG_OF_GPIO | ||
21 | |||
22 | /* | ||
23 | * Generic OF GPIO chip | ||
24 | */ | ||
25 | struct of_gpio_chip { | ||
26 | struct gpio_chip gc; | ||
27 | int gpio_cells; | ||
28 | int (*xlate)(struct of_gpio_chip *of_gc, struct device_node *np, | ||
29 | const void *gpio_spec); | ||
30 | }; | ||
31 | |||
32 | static inline struct of_gpio_chip *to_of_gpio_chip(struct gpio_chip *gc) | ||
33 | { | ||
34 | return container_of(gc, struct of_gpio_chip, gc); | ||
35 | } | ||
36 | |||
37 | /* | ||
38 | * OF GPIO chip for memory mapped banks | ||
39 | */ | ||
40 | struct of_mm_gpio_chip { | ||
41 | struct of_gpio_chip of_gc; | ||
42 | void (*save_regs)(struct of_mm_gpio_chip *mm_gc); | ||
43 | void __iomem *regs; | ||
44 | }; | ||
45 | |||
46 | static inline struct of_mm_gpio_chip *to_of_mm_gpio_chip(struct gpio_chip *gc) | ||
47 | { | ||
48 | struct of_gpio_chip *of_gc = to_of_gpio_chip(gc); | ||
49 | |||
50 | return container_of(of_gc, struct of_mm_gpio_chip, of_gc); | ||
51 | } | ||
52 | |||
53 | extern int of_get_gpio(struct device_node *np, int index); | ||
54 | extern int of_mm_gpiochip_add(struct device_node *np, | ||
55 | struct of_mm_gpio_chip *mm_gc); | ||
56 | extern int of_gpio_simple_xlate(struct of_gpio_chip *of_gc, | ||
57 | struct device_node *np, | ||
58 | const void *gpio_spec); | ||
59 | #else | ||
60 | |||
61 | /* Drivers may not strictly depend on the GPIO support, so let them link. */ | ||
62 | static inline int of_get_gpio(struct device_node *np, int index) | ||
63 | { | ||
64 | return -ENOSYS; | ||
65 | } | ||
66 | |||
67 | #endif /* CONFIG_OF_GPIO */ | ||
68 | |||
69 | #endif /* __LINUX_OF_GPIO_H */ | ||
diff --git a/include/linux/of_i2c.h b/include/linux/of_i2c.h new file mode 100644 index 000000000000..2e5a96732042 --- /dev/null +++ b/include/linux/of_i2c.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * Generic I2C API implementation for PowerPC. | ||
3 | * | ||
4 | * Copyright (c) 2008 Jochen Friedrich <jochen@scram.de> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #ifndef __LINUX_OF_I2C_H | ||
13 | #define __LINUX_OF_I2C_H | ||
14 | |||
15 | #include <linux/i2c.h> | ||
16 | |||
17 | #ifdef CONFIG_OF_I2C | ||
18 | |||
19 | void of_register_i2c_devices(struct i2c_adapter *adap, | ||
20 | struct device_node *adap_node); | ||
21 | |||
22 | #endif /* CONFIG_OF_I2C */ | ||
23 | |||
24 | #endif /* __LINUX_OF_I2C_H */ | ||
diff --git a/lib/Kconfig b/lib/Kconfig index ba3d104994d9..2d53dc092e8b 100644 --- a/lib/Kconfig +++ b/lib/Kconfig | |||
@@ -141,4 +141,7 @@ config HAS_DMA | |||
141 | config CHECK_SIGNATURE | 141 | config CHECK_SIGNATURE |
142 | bool | 142 | bool |
143 | 143 | ||
144 | config HAVE_LMB | ||
145 | boolean | ||
146 | |||
144 | endmenu | 147 | endmenu |
diff --git a/lib/Makefile b/lib/Makefile index 4d7649c326f6..bf8000fc7d48 100644 --- a/lib/Makefile +++ b/lib/Makefile | |||
@@ -68,6 +68,8 @@ obj-$(CONFIG_FAULT_INJECTION) += fault-inject.o | |||
68 | 68 | ||
69 | lib-$(CONFIG_GENERIC_BUG) += bug.o | 69 | lib-$(CONFIG_GENERIC_BUG) += bug.o |
70 | 70 | ||
71 | obj-$(CONFIG_HAVE_LMB) += lmb.o | ||
72 | |||
71 | hostprogs-y := gen_crc32table | 73 | hostprogs-y := gen_crc32table |
72 | clean-files := crc32table.h | 74 | clean-files := crc32table.h |
73 | 75 | ||
diff --git a/lib/lmb.c b/lib/lmb.c new file mode 100644 index 000000000000..896e2832099e --- /dev/null +++ b/lib/lmb.c | |||
@@ -0,0 +1,428 @@ | |||
1 | /* | ||
2 | * Procedures for maintaining information about logical memory blocks. | ||
3 | * | ||
4 | * Peter Bergner, IBM Corp. June 2001. | ||
5 | * Copyright (C) 2001 Peter Bergner. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version | ||
10 | * 2 of the License, or (at your option) any later version. | ||
11 | */ | ||
12 | |||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/bitops.h> | ||
16 | #include <linux/lmb.h> | ||
17 | |||
18 | #define LMB_ALLOC_ANYWHERE 0 | ||
19 | |||
20 | struct lmb lmb; | ||
21 | |||
22 | void lmb_dump_all(void) | ||
23 | { | ||
24 | #ifdef DEBUG | ||
25 | unsigned long i; | ||
26 | |||
27 | pr_debug("lmb_dump_all:\n"); | ||
28 | pr_debug(" memory.cnt = 0x%lx\n", lmb.memory.cnt); | ||
29 | pr_debug(" memory.size = 0x%llx\n", | ||
30 | (unsigned long long)lmb.memory.size); | ||
31 | for (i=0; i < lmb.memory.cnt ;i++) { | ||
32 | pr_debug(" memory.region[0x%x].base = 0x%llx\n", | ||
33 | i, (unsigned long long)lmb.memory.region[i].base); | ||
34 | pr_debug(" .size = 0x%llx\n", | ||
35 | (unsigned long long)lmb.memory.region[i].size); | ||
36 | } | ||
37 | |||
38 | pr_debug(" reserved.cnt = 0x%lx\n", lmb.reserved.cnt); | ||
39 | pr_debug(" reserved.size = 0x%lx\n", lmb.reserved.size); | ||
40 | for (i=0; i < lmb.reserved.cnt ;i++) { | ||
41 | pr_debug(" reserved.region[0x%x].base = 0x%llx\n", | ||
42 | i, (unsigned long long)lmb.reserved.region[i].base); | ||
43 | pr_debug(" .size = 0x%llx\n", | ||
44 | (unsigned long long)lmb.reserved.region[i].size); | ||
45 | } | ||
46 | #endif /* DEBUG */ | ||
47 | } | ||
48 | |||
49 | static unsigned long __init lmb_addrs_overlap(u64 base1, u64 size1, | ||
50 | u64 base2, u64 size2) | ||
51 | { | ||
52 | return ((base1 < (base2 + size2)) && (base2 < (base1 + size1))); | ||
53 | } | ||
54 | |||
55 | static long __init lmb_addrs_adjacent(u64 base1, u64 size1, | ||
56 | u64 base2, u64 size2) | ||
57 | { | ||
58 | if (base2 == base1 + size1) | ||
59 | return 1; | ||
60 | else if (base1 == base2 + size2) | ||
61 | return -1; | ||
62 | |||
63 | return 0; | ||
64 | } | ||
65 | |||
66 | static long __init lmb_regions_adjacent(struct lmb_region *rgn, | ||
67 | unsigned long r1, unsigned long r2) | ||
68 | { | ||
69 | u64 base1 = rgn->region[r1].base; | ||
70 | u64 size1 = rgn->region[r1].size; | ||
71 | u64 base2 = rgn->region[r2].base; | ||
72 | u64 size2 = rgn->region[r2].size; | ||
73 | |||
74 | return lmb_addrs_adjacent(base1, size1, base2, size2); | ||
75 | } | ||
76 | |||
77 | static void __init lmb_remove_region(struct lmb_region *rgn, unsigned long r) | ||
78 | { | ||
79 | unsigned long i; | ||
80 | |||
81 | for (i = r; i < rgn->cnt - 1; i++) { | ||
82 | rgn->region[i].base = rgn->region[i + 1].base; | ||
83 | rgn->region[i].size = rgn->region[i + 1].size; | ||
84 | } | ||
85 | rgn->cnt--; | ||
86 | } | ||
87 | |||
88 | /* Assumption: base addr of region 1 < base addr of region 2 */ | ||
89 | static void __init lmb_coalesce_regions(struct lmb_region *rgn, | ||
90 | unsigned long r1, unsigned long r2) | ||
91 | { | ||
92 | rgn->region[r1].size += rgn->region[r2].size; | ||
93 | lmb_remove_region(rgn, r2); | ||
94 | } | ||
95 | |||
96 | void __init lmb_init(void) | ||
97 | { | ||
98 | /* Create a dummy zero size LMB which will get coalesced away later. | ||
99 | * This simplifies the lmb_add() code below... | ||
100 | */ | ||
101 | lmb.memory.region[0].base = 0; | ||
102 | lmb.memory.region[0].size = 0; | ||
103 | lmb.memory.cnt = 1; | ||
104 | |||
105 | /* Ditto. */ | ||
106 | lmb.reserved.region[0].base = 0; | ||
107 | lmb.reserved.region[0].size = 0; | ||
108 | lmb.reserved.cnt = 1; | ||
109 | } | ||
110 | |||
111 | void __init lmb_analyze(void) | ||
112 | { | ||
113 | int i; | ||
114 | |||
115 | lmb.memory.size = 0; | ||
116 | |||
117 | for (i = 0; i < lmb.memory.cnt; i++) | ||
118 | lmb.memory.size += lmb.memory.region[i].size; | ||
119 | } | ||
120 | |||
121 | static long __init lmb_add_region(struct lmb_region *rgn, u64 base, u64 size) | ||
122 | { | ||
123 | unsigned long coalesced = 0; | ||
124 | long adjacent, i; | ||
125 | |||
126 | if ((rgn->cnt == 1) && (rgn->region[0].size == 0)) { | ||
127 | rgn->region[0].base = base; | ||
128 | rgn->region[0].size = size; | ||
129 | return 0; | ||
130 | } | ||
131 | |||
132 | /* First try and coalesce this LMB with another. */ | ||
133 | for (i = 0; i < rgn->cnt; i++) { | ||
134 | u64 rgnbase = rgn->region[i].base; | ||
135 | u64 rgnsize = rgn->region[i].size; | ||
136 | |||
137 | if ((rgnbase == base) && (rgnsize == size)) | ||
138 | /* Already have this region, so we're done */ | ||
139 | return 0; | ||
140 | |||
141 | adjacent = lmb_addrs_adjacent(base, size, rgnbase, rgnsize); | ||
142 | if (adjacent > 0) { | ||
143 | rgn->region[i].base -= size; | ||
144 | rgn->region[i].size += size; | ||
145 | coalesced++; | ||
146 | break; | ||
147 | } else if (adjacent < 0) { | ||
148 | rgn->region[i].size += size; | ||
149 | coalesced++; | ||
150 | break; | ||
151 | } | ||
152 | } | ||
153 | |||
154 | if ((i < rgn->cnt - 1) && lmb_regions_adjacent(rgn, i, i+1)) { | ||
155 | lmb_coalesce_regions(rgn, i, i+1); | ||
156 | coalesced++; | ||
157 | } | ||
158 | |||
159 | if (coalesced) | ||
160 | return coalesced; | ||
161 | if (rgn->cnt >= MAX_LMB_REGIONS) | ||
162 | return -1; | ||
163 | |||
164 | /* Couldn't coalesce the LMB, so add it to the sorted table. */ | ||
165 | for (i = rgn->cnt - 1; i >= 0; i--) { | ||
166 | if (base < rgn->region[i].base) { | ||
167 | rgn->region[i+1].base = rgn->region[i].base; | ||
168 | rgn->region[i+1].size = rgn->region[i].size; | ||
169 | } else { | ||
170 | rgn->region[i+1].base = base; | ||
171 | rgn->region[i+1].size = size; | ||
172 | break; | ||
173 | } | ||
174 | } | ||
175 | |||
176 | if (base < rgn->region[0].base) { | ||
177 | rgn->region[0].base = base; | ||
178 | rgn->region[0].size = size; | ||
179 | } | ||
180 | rgn->cnt++; | ||
181 | |||
182 | return 0; | ||
183 | } | ||
184 | |||
185 | long __init lmb_add(u64 base, u64 size) | ||
186 | { | ||
187 | struct lmb_region *_rgn = &lmb.memory; | ||
188 | |||
189 | /* On pSeries LPAR systems, the first LMB is our RMO region. */ | ||
190 | if (base == 0) | ||
191 | lmb.rmo_size = size; | ||
192 | |||
193 | return lmb_add_region(_rgn, base, size); | ||
194 | |||
195 | } | ||
196 | |||
197 | long __init lmb_reserve(u64 base, u64 size) | ||
198 | { | ||
199 | struct lmb_region *_rgn = &lmb.reserved; | ||
200 | |||
201 | BUG_ON(0 == size); | ||
202 | |||
203 | return lmb_add_region(_rgn, base, size); | ||
204 | } | ||
205 | |||
206 | long __init lmb_overlaps_region(struct lmb_region *rgn, u64 base, u64 size) | ||
207 | { | ||
208 | unsigned long i; | ||
209 | |||
210 | for (i = 0; i < rgn->cnt; i++) { | ||
211 | u64 rgnbase = rgn->region[i].base; | ||
212 | u64 rgnsize = rgn->region[i].size; | ||
213 | if (lmb_addrs_overlap(base, size, rgnbase, rgnsize)) | ||
214 | break; | ||
215 | } | ||
216 | |||
217 | return (i < rgn->cnt) ? i : -1; | ||
218 | } | ||
219 | |||
220 | static u64 lmb_align_down(u64 addr, u64 size) | ||
221 | { | ||
222 | return addr & ~(size - 1); | ||
223 | } | ||
224 | |||
225 | static u64 lmb_align_up(u64 addr, u64 size) | ||
226 | { | ||
227 | return (addr + (size - 1)) & ~(size - 1); | ||
228 | } | ||
229 | |||
230 | static u64 __init lmb_alloc_nid_unreserved(u64 start, u64 end, | ||
231 | u64 size, u64 align) | ||
232 | { | ||
233 | u64 base, res_base; | ||
234 | long j; | ||
235 | |||
236 | base = lmb_align_down((end - size), align); | ||
237 | while (start <= base) { | ||
238 | j = lmb_overlaps_region(&lmb.reserved, base, size); | ||
239 | if (j < 0) { | ||
240 | /* this area isn't reserved, take it */ | ||
241 | if (lmb_add_region(&lmb.reserved, base, | ||
242 | lmb_align_up(size, align)) < 0) | ||
243 | base = ~(u64)0; | ||
244 | return base; | ||
245 | } | ||
246 | res_base = lmb.reserved.region[j].base; | ||
247 | if (res_base < size) | ||
248 | break; | ||
249 | base = lmb_align_down(res_base - size, align); | ||
250 | } | ||
251 | |||
252 | return ~(u64)0; | ||
253 | } | ||
254 | |||
255 | static u64 __init lmb_alloc_nid_region(struct lmb_property *mp, | ||
256 | u64 (*nid_range)(u64, u64, int *), | ||
257 | u64 size, u64 align, int nid) | ||
258 | { | ||
259 | u64 start, end; | ||
260 | |||
261 | start = mp->base; | ||
262 | end = start + mp->size; | ||
263 | |||
264 | start = lmb_align_up(start, align); | ||
265 | while (start < end) { | ||
266 | u64 this_end; | ||
267 | int this_nid; | ||
268 | |||
269 | this_end = nid_range(start, end, &this_nid); | ||
270 | if (this_nid == nid) { | ||
271 | u64 ret = lmb_alloc_nid_unreserved(start, this_end, | ||
272 | size, align); | ||
273 | if (ret != ~(u64)0) | ||
274 | return ret; | ||
275 | } | ||
276 | start = this_end; | ||
277 | } | ||
278 | |||
279 | return ~(u64)0; | ||
280 | } | ||
281 | |||
282 | u64 __init lmb_alloc_nid(u64 size, u64 align, int nid, | ||
283 | u64 (*nid_range)(u64 start, u64 end, int *nid)) | ||
284 | { | ||
285 | struct lmb_region *mem = &lmb.memory; | ||
286 | int i; | ||
287 | |||
288 | for (i = 0; i < mem->cnt; i++) { | ||
289 | u64 ret = lmb_alloc_nid_region(&mem->region[i], | ||
290 | nid_range, | ||
291 | size, align, nid); | ||
292 | if (ret != ~(u64)0) | ||
293 | return ret; | ||
294 | } | ||
295 | |||
296 | return lmb_alloc(size, align); | ||
297 | } | ||
298 | |||
299 | u64 __init lmb_alloc(u64 size, u64 align) | ||
300 | { | ||
301 | return lmb_alloc_base(size, align, LMB_ALLOC_ANYWHERE); | ||
302 | } | ||
303 | |||
304 | u64 __init lmb_alloc_base(u64 size, u64 align, u64 max_addr) | ||
305 | { | ||
306 | u64 alloc; | ||
307 | |||
308 | alloc = __lmb_alloc_base(size, align, max_addr); | ||
309 | |||
310 | if (alloc == 0) | ||
311 | panic("ERROR: Failed to allocate 0x%llx bytes below 0x%llx.\n", | ||
312 | (unsigned long long) size, (unsigned long long) max_addr); | ||
313 | |||
314 | return alloc; | ||
315 | } | ||
316 | |||
317 | u64 __init __lmb_alloc_base(u64 size, u64 align, u64 max_addr) | ||
318 | { | ||
319 | long i, j; | ||
320 | u64 base = 0; | ||
321 | u64 res_base; | ||
322 | |||
323 | BUG_ON(0 == size); | ||
324 | |||
325 | /* On some platforms, make sure we allocate lowmem */ | ||
326 | /* Note that LMB_REAL_LIMIT may be LMB_ALLOC_ANYWHERE */ | ||
327 | if (max_addr == LMB_ALLOC_ANYWHERE) | ||
328 | max_addr = LMB_REAL_LIMIT; | ||
329 | |||
330 | for (i = lmb.memory.cnt - 1; i >= 0; i--) { | ||
331 | u64 lmbbase = lmb.memory.region[i].base; | ||
332 | u64 lmbsize = lmb.memory.region[i].size; | ||
333 | |||
334 | if (lmbsize < size) | ||
335 | continue; | ||
336 | if (max_addr == LMB_ALLOC_ANYWHERE) | ||
337 | base = lmb_align_down(lmbbase + lmbsize - size, align); | ||
338 | else if (lmbbase < max_addr) { | ||
339 | base = min(lmbbase + lmbsize, max_addr); | ||
340 | base = lmb_align_down(base - size, align); | ||
341 | } else | ||
342 | continue; | ||
343 | |||
344 | while (base && lmbbase <= base) { | ||
345 | j = lmb_overlaps_region(&lmb.reserved, base, size); | ||
346 | if (j < 0) { | ||
347 | /* this area isn't reserved, take it */ | ||
348 | if (lmb_add_region(&lmb.reserved, base, | ||
349 | size) < 0) | ||
350 | return 0; | ||
351 | return base; | ||
352 | } | ||
353 | res_base = lmb.reserved.region[j].base; | ||
354 | if (res_base < size) | ||
355 | break; | ||
356 | base = lmb_align_down(res_base - size, align); | ||
357 | } | ||
358 | } | ||
359 | return 0; | ||
360 | } | ||
361 | |||
362 | /* You must call lmb_analyze() before this. */ | ||
363 | u64 __init lmb_phys_mem_size(void) | ||
364 | { | ||
365 | return lmb.memory.size; | ||
366 | } | ||
367 | |||
368 | u64 __init lmb_end_of_DRAM(void) | ||
369 | { | ||
370 | int idx = lmb.memory.cnt - 1; | ||
371 | |||
372 | return (lmb.memory.region[idx].base + lmb.memory.region[idx].size); | ||
373 | } | ||
374 | |||
375 | /* You must call lmb_analyze() after this. */ | ||
376 | void __init lmb_enforce_memory_limit(u64 memory_limit) | ||
377 | { | ||
378 | unsigned long i; | ||
379 | u64 limit; | ||
380 | struct lmb_property *p; | ||
381 | |||
382 | if (!memory_limit) | ||
383 | return; | ||
384 | |||
385 | /* Truncate the lmb regions to satisfy the memory limit. */ | ||
386 | limit = memory_limit; | ||
387 | for (i = 0; i < lmb.memory.cnt; i++) { | ||
388 | if (limit > lmb.memory.region[i].size) { | ||
389 | limit -= lmb.memory.region[i].size; | ||
390 | continue; | ||
391 | } | ||
392 | |||
393 | lmb.memory.region[i].size = limit; | ||
394 | lmb.memory.cnt = i + 1; | ||
395 | break; | ||
396 | } | ||
397 | |||
398 | if (lmb.memory.region[0].size < lmb.rmo_size) | ||
399 | lmb.rmo_size = lmb.memory.region[0].size; | ||
400 | |||
401 | /* And truncate any reserves above the limit also. */ | ||
402 | for (i = 0; i < lmb.reserved.cnt; i++) { | ||
403 | p = &lmb.reserved.region[i]; | ||
404 | |||
405 | if (p->base > memory_limit) | ||
406 | p->size = 0; | ||
407 | else if ((p->base + p->size) > memory_limit) | ||
408 | p->size = memory_limit - p->base; | ||
409 | |||
410 | if (p->size == 0) { | ||
411 | lmb_remove_region(&lmb.reserved, i); | ||
412 | i--; | ||
413 | } | ||
414 | } | ||
415 | } | ||
416 | |||
417 | int __init lmb_is_reserved(u64 addr) | ||
418 | { | ||
419 | int i; | ||
420 | |||
421 | for (i = 0; i < lmb.reserved.cnt; i++) { | ||
422 | u64 upper = lmb.reserved.region[i].base + | ||
423 | lmb.reserved.region[i].size - 1; | ||
424 | if ((addr >= lmb.reserved.region[i].base) && (addr <= upper)) | ||
425 | return 1; | ||
426 | } | ||
427 | return 0; | ||
428 | } | ||