diff options
author | Paul Mackerras <paulus@samba.org> | 2008-01-23 23:29:14 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-01-23 23:29:14 -0500 |
commit | dcb571be2019ae677bc5ed64437dbc87ae1eb67f (patch) | |
tree | 1b93f9ea3568be4dcc49ffb2adc0d3ab0a02b47f | |
parent | 9156ad48338e0306e508ead5c0d9986050744475 (diff) | |
parent | 96f39c1718091d63dc1c5012d566737ea0d2a20c (diff) |
Merge branch 'for-2.6.25' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc into for-2.6.25
106 files changed, 9507 insertions, 672 deletions
diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX index 94a3c577b083..3be84aa38dfe 100644 --- a/Documentation/powerpc/00-INDEX +++ b/Documentation/powerpc/00-INDEX | |||
@@ -28,3 +28,6 @@ sound.txt | |||
28 | - info on sound support under Linux/PPC | 28 | - info on sound support under Linux/PPC |
29 | zImage_layout.txt | 29 | zImage_layout.txt |
30 | - info on the kernel images for Linux/PPC | 30 | - info on the kernel images for Linux/PPC |
31 | qe_firmware.txt | ||
32 | - describes the layout of firmware binaries for the Freescale QUICC | ||
33 | Engine and the code that parses and uploads the microcode therein. | ||
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index 6d1d0856063e..da98154328a0 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
@@ -52,7 +52,11 @@ Table of Contents | |||
52 | i) Freescale QUICC Engine module (QE) | 52 | i) Freescale QUICC Engine module (QE) |
53 | j) CFI or JEDEC memory-mapped NOR flash | 53 | j) CFI or JEDEC memory-mapped NOR flash |
54 | k) Global Utilities Block | 54 | k) Global Utilities Block |
55 | l) Xilinx IP cores | 55 | l) Freescale Communications Processor Module |
56 | m) Chipselect/Local Bus | ||
57 | n) 4xx/Axon EMAC ethernet nodes | ||
58 | o) Xilinx IP cores | ||
59 | p) Freescale Synchronous Serial Interface | ||
56 | 60 | ||
57 | VII - Specifying interrupt information for devices | 61 | VII - Specifying interrupt information for devices |
58 | 1) interrupts property | 62 | 1) interrupts property |
@@ -1257,6 +1261,10 @@ platforms are moved over to use the flattened-device-tree model. | |||
1257 | services interrupts for this device. | 1261 | services interrupts for this device. |
1258 | - phy-handle : The phandle for the PHY connected to this ethernet | 1262 | - phy-handle : The phandle for the PHY connected to this ethernet |
1259 | controller. | 1263 | controller. |
1264 | - fixed-link : <a b c d e> where a is emulated phy id - choose any, | ||
1265 | but unique to the all specified fixed-links, b is duplex - 0 half, | ||
1266 | 1 full, c is link speed - d#10/d#100/d#1000, d is pause - 0 no | ||
1267 | pause, 1 pause, e is asym_pause - 0 no asym_pause, 1 asym_pause. | ||
1260 | 1268 | ||
1261 | Recommended properties: | 1269 | Recommended properties: |
1262 | 1270 | ||
@@ -1411,7 +1419,6 @@ platforms are moved over to use the flattened-device-tree model. | |||
1411 | 1419 | ||
1412 | Example multi port host USB controller device node : | 1420 | Example multi port host USB controller device node : |
1413 | usb@22000 { | 1421 | usb@22000 { |
1414 | device_type = "usb"; | ||
1415 | compatible = "fsl-usb2-mph"; | 1422 | compatible = "fsl-usb2-mph"; |
1416 | reg = <22000 1000>; | 1423 | reg = <22000 1000>; |
1417 | #address-cells = <1>; | 1424 | #address-cells = <1>; |
@@ -1425,7 +1432,6 @@ platforms are moved over to use the flattened-device-tree model. | |||
1425 | 1432 | ||
1426 | Example dual role USB controller device node : | 1433 | Example dual role USB controller device node : |
1427 | usb@23000 { | 1434 | usb@23000 { |
1428 | device_type = "usb"; | ||
1429 | compatible = "fsl-usb2-dr"; | 1435 | compatible = "fsl-usb2-dr"; |
1430 | reg = <23000 1000>; | 1436 | reg = <23000 1000>; |
1431 | #address-cells = <1>; | 1437 | #address-cells = <1>; |
@@ -1589,7 +1595,6 @@ platforms are moved over to use the flattened-device-tree model. | |||
1589 | iii) USB (Universal Serial Bus Controller) | 1595 | iii) USB (Universal Serial Bus Controller) |
1590 | 1596 | ||
1591 | Required properties: | 1597 | Required properties: |
1592 | - device_type : should be "usb". | ||
1593 | - compatible : could be "qe_udc" or "fhci-hcd". | 1598 | - compatible : could be "qe_udc" or "fhci-hcd". |
1594 | - mode : the could be "host" or "slave". | 1599 | - mode : the could be "host" or "slave". |
1595 | - reg : Offset and length of the register set for the device | 1600 | - reg : Offset and length of the register set for the device |
@@ -1603,7 +1608,6 @@ platforms are moved over to use the flattened-device-tree model. | |||
1603 | 1608 | ||
1604 | Example(slave): | 1609 | Example(slave): |
1605 | usb@6c0 { | 1610 | usb@6c0 { |
1606 | device_type = "usb"; | ||
1607 | compatible = "qe_udc"; | 1611 | compatible = "qe_udc"; |
1608 | reg = <6c0 40>; | 1612 | reg = <6c0 40>; |
1609 | interrupts = <8b 0>; | 1613 | interrupts = <8b 0>; |
@@ -1616,7 +1620,7 @@ platforms are moved over to use the flattened-device-tree model. | |||
1616 | 1620 | ||
1617 | Required properties: | 1621 | Required properties: |
1618 | - device_type : should be "network", "hldc", "uart", "transparent" | 1622 | - device_type : should be "network", "hldc", "uart", "transparent" |
1619 | "bisync" or "atm". | 1623 | "bisync", "atm", or "serial". |
1620 | - compatible : could be "ucc_geth" or "fsl_atm" and so on. | 1624 | - compatible : could be "ucc_geth" or "fsl_atm" and so on. |
1621 | - model : should be "UCC". | 1625 | - model : should be "UCC". |
1622 | - device-id : the ucc number(1-8), corresponding to UCCx in UM. | 1626 | - device-id : the ucc number(1-8), corresponding to UCCx in UM. |
@@ -1629,6 +1633,13 @@ platforms are moved over to use the flattened-device-tree model. | |||
1629 | - interrupt-parent : the phandle for the interrupt controller that | 1633 | - interrupt-parent : the phandle for the interrupt controller that |
1630 | services interrupts for this device. | 1634 | services interrupts for this device. |
1631 | - pio-handle : The phandle for the Parallel I/O port configuration. | 1635 | - pio-handle : The phandle for the Parallel I/O port configuration. |
1636 | - port-number : for UART drivers, the port number to use, between 0 and 3. | ||
1637 | This usually corresponds to the /dev/ttyQE device, e.g. <0> = /dev/ttyQE0. | ||
1638 | The port number is added to the minor number of the device. Unlike the | ||
1639 | CPM UART driver, the port-number is required for the QE UART driver. | ||
1640 | - soft-uart : for UART drivers, if specified this means the QE UART device | ||
1641 | driver should use "Soft-UART" mode, which is needed on some SOCs that have | ||
1642 | broken UART hardware. Soft-UART is provided via a microcode upload. | ||
1632 | - rx-clock-name: the UCC receive clock source | 1643 | - rx-clock-name: the UCC receive clock source |
1633 | "none": clock source is disabled | 1644 | "none": clock source is disabled |
1634 | "brg1" through "brg16": clock source is BRG1-BRG16, respectively | 1645 | "brg1" through "brg16": clock source is BRG1-BRG16, respectively |
@@ -1788,6 +1799,32 @@ platforms are moved over to use the flattened-device-tree model. | |||
1788 | }; | 1799 | }; |
1789 | }; | 1800 | }; |
1790 | 1801 | ||
1802 | viii) Uploaded QE firmware | ||
1803 | |||
1804 | If a new firwmare has been uploaded to the QE (usually by the | ||
1805 | boot loader), then a 'firmware' child node should be added to the QE | ||
1806 | node. This node provides information on the uploaded firmware that | ||
1807 | device drivers may need. | ||
1808 | |||
1809 | Required properties: | ||
1810 | - id: The string name of the firmware. This is taken from the 'id' | ||
1811 | member of the qe_firmware structure of the uploaded firmware. | ||
1812 | Device drivers can search this string to determine if the | ||
1813 | firmware they want is already present. | ||
1814 | - extended-modes: The Extended Modes bitfield, taken from the | ||
1815 | firmware binary. It is a 64-bit number represented | ||
1816 | as an array of two 32-bit numbers. | ||
1817 | - virtual-traps: The virtual traps, taken from the firmware binary. | ||
1818 | It is an array of 8 32-bit numbers. | ||
1819 | |||
1820 | Example: | ||
1821 | |||
1822 | firmware { | ||
1823 | id = "Soft-UART"; | ||
1824 | extended-modes = <0 0>; | ||
1825 | virtual-traps = <0 0 0 0 0 0 0 0>; | ||
1826 | } | ||
1827 | |||
1791 | j) CFI or JEDEC memory-mapped NOR flash | 1828 | j) CFI or JEDEC memory-mapped NOR flash |
1792 | 1829 | ||
1793 | Flash chips (Memory Technology Devices) are often used for solid state | 1830 | Flash chips (Memory Technology Devices) are often used for solid state |
@@ -2269,7 +2306,7 @@ platforms are moved over to use the flattened-device-tree model. | |||
2269 | available. | 2306 | available. |
2270 | For Axon: 0x0000012a | 2307 | For Axon: 0x0000012a |
2271 | 2308 | ||
2272 | l) Xilinx IP cores | 2309 | o) Xilinx IP cores |
2273 | 2310 | ||
2274 | The Xilinx EDK toolchain ships with a set of IP cores (devices) for use | 2311 | The Xilinx EDK toolchain ships with a set of IP cores (devices) for use |
2275 | in Xilinx Spartan and Virtex FPGAs. The devices cover the whole range | 2312 | in Xilinx Spartan and Virtex FPGAs. The devices cover the whole range |
@@ -2539,6 +2576,46 @@ platforms are moved over to use the flattened-device-tree model. | |||
2539 | Requred properties: | 2576 | Requred properties: |
2540 | - current-speed : Baud rate of uartlite | 2577 | - current-speed : Baud rate of uartlite |
2541 | 2578 | ||
2579 | p) Freescale Synchronous Serial Interface | ||
2580 | |||
2581 | The SSI is a serial device that communicates with audio codecs. It can | ||
2582 | be programmed in AC97, I2S, left-justified, or right-justified modes. | ||
2583 | |||
2584 | Required properties: | ||
2585 | - compatible : compatible list, containing "fsl,ssi" | ||
2586 | - cell-index : the SSI, <0> = SSI1, <1> = SSI2, and so on | ||
2587 | - reg : offset and length of the register set for the device | ||
2588 | - interrupts : <a b> where a is the interrupt number and b is a | ||
2589 | field that represents an encoding of the sense and | ||
2590 | level information for the interrupt. This should be | ||
2591 | encoded based on the information in section 2) | ||
2592 | depending on the type of interrupt controller you | ||
2593 | have. | ||
2594 | - interrupt-parent : the phandle for the interrupt controller that | ||
2595 | services interrupts for this device. | ||
2596 | - fsl,mode : the operating mode for the SSI interface | ||
2597 | "i2s-slave" - I2S mode, SSI is clock slave | ||
2598 | "i2s-master" - I2S mode, SSI is clock master | ||
2599 | "lj-slave" - left-justified mode, SSI is clock slave | ||
2600 | "lj-master" - l.j. mode, SSI is clock master | ||
2601 | "rj-slave" - right-justified mode, SSI is clock slave | ||
2602 | "rj-master" - r.j., SSI is clock master | ||
2603 | "ac97-slave" - AC97 mode, SSI is clock slave | ||
2604 | "ac97-master" - AC97 mode, SSI is clock master | ||
2605 | |||
2606 | Optional properties: | ||
2607 | - codec-handle : phandle to a 'codec' node that defines an audio | ||
2608 | codec connected to this SSI. This node is typically | ||
2609 | a child of an I2C or other control node. | ||
2610 | |||
2611 | Child 'codec' node required properties: | ||
2612 | - compatible : compatible list, contains the name of the codec | ||
2613 | |||
2614 | Child 'codec' node optional properties: | ||
2615 | - clock-frequency : The frequency of the input clock, which typically | ||
2616 | comes from an on-board dedicated oscillator. | ||
2617 | |||
2618 | |||
2542 | More devices will be defined as this spec matures. | 2619 | More devices will be defined as this spec matures. |
2543 | 2620 | ||
2544 | VII - Specifying interrupt information for devices | 2621 | VII - Specifying interrupt information for devices |
diff --git a/Documentation/powerpc/qe_firmware.txt b/Documentation/powerpc/qe_firmware.txt new file mode 100644 index 000000000000..896266432d33 --- /dev/null +++ b/Documentation/powerpc/qe_firmware.txt | |||
@@ -0,0 +1,295 @@ | |||
1 | Freescale QUICC Engine Firmware Uploading | ||
2 | ----------------------------------------- | ||
3 | |||
4 | (c) 2007 Timur Tabi <timur at freescale.com>, | ||
5 | Freescale Semiconductor | ||
6 | |||
7 | Table of Contents | ||
8 | ================= | ||
9 | |||
10 | I - Software License for Firmware | ||
11 | |||
12 | II - Microcode Availability | ||
13 | |||
14 | III - Description and Terminology | ||
15 | |||
16 | IV - Microcode Programming Details | ||
17 | |||
18 | V - Firmware Structure Layout | ||
19 | |||
20 | VI - Sample Code for Creating Firmware Files | ||
21 | |||
22 | Revision Information | ||
23 | ==================== | ||
24 | |||
25 | November 30, 2007: Rev 1.0 - Initial version | ||
26 | |||
27 | I - Software License for Firmware | ||
28 | ================================= | ||
29 | |||
30 | Each firmware file comes with its own software license. For information on | ||
31 | the particular license, please see the license text that is distributed with | ||
32 | the firmware. | ||
33 | |||
34 | II - Microcode Availability | ||
35 | =========================== | ||
36 | |||
37 | Firmware files are distributed through various channels. Some are available on | ||
38 | http://opensource.freescale.com. For other firmware files, please contact | ||
39 | your Freescale representative or your operating system vendor. | ||
40 | |||
41 | III - Description and Terminology | ||
42 | ================================ | ||
43 | |||
44 | In this document, the term 'microcode' refers to the sequence of 32-bit | ||
45 | integers that compose the actual QE microcode. | ||
46 | |||
47 | The term 'firmware' refers to a binary blob that contains the microcode as | ||
48 | well as other data that | ||
49 | |||
50 | 1) describes the microcode's purpose | ||
51 | 2) describes how and where to upload the microcode | ||
52 | 3) specifies the values of various registers | ||
53 | 4) includes additional data for use by specific device drivers | ||
54 | |||
55 | Firmware files are binary files that contain only a firmware. | ||
56 | |||
57 | IV - Microcode Programming Details | ||
58 | =================================== | ||
59 | |||
60 | The QE architecture allows for only one microcode present in I-RAM for each | ||
61 | RISC processor. To replace any current microcode, a full QE reset (which | ||
62 | disables the microcode) must be performed first. | ||
63 | |||
64 | QE microcode is uploaded using the following procedure: | ||
65 | |||
66 | 1) The microcode is placed into I-RAM at a specific location, using the | ||
67 | IRAM.IADD and IRAM.IDATA registers. | ||
68 | |||
69 | 2) The CERCR.CIR bit is set to 0 or 1, depending on whether the firmware | ||
70 | needs split I-RAM. Split I-RAM is only meaningful for SOCs that have | ||
71 | QEs with multiple RISC processors, such as the 8360. Splitting the I-RAM | ||
72 | allows each processor to run a different microcode, effectively creating an | ||
73 | asymmetric multiprocessing (AMP) system. | ||
74 | |||
75 | 3) The TIBCR trap registers are loaded with the addresses of the trap handlers | ||
76 | in the microcode. | ||
77 | |||
78 | 4) The RSP.ECCR register is programmed with the value provided. | ||
79 | |||
80 | 5) If necessary, device drivers that need the virtual traps and extended mode | ||
81 | data will use them. | ||
82 | |||
83 | Virtual Microcode Traps | ||
84 | |||
85 | These virtual traps are conditional branches in the microcode. These are | ||
86 | "soft" provisional introduced in the ROMcode in order to enable higher | ||
87 | flexibility and save h/w traps If new features are activated or an issue is | ||
88 | being fixed in the RAM package utilizing they should be activated. This data | ||
89 | structure signals the microcode which of these virtual traps is active. | ||
90 | |||
91 | This structure contains 6 words that the application should copy to some | ||
92 | specific been defined. This table describes the structure. | ||
93 | |||
94 | --------------------------------------------------------------- | ||
95 | | Offset in | | Destination Offset | Size of | | ||
96 | | array | Protocol | within PRAM | Operand | | ||
97 | --------------------------------------------------------------| | ||
98 | | 0 | Ethernet | 0xF8 | 4 bytes | | ||
99 | | | interworking | | | | ||
100 | --------------------------------------------------------------- | ||
101 | | 4 | ATM | 0xF8 | 4 bytes | | ||
102 | | | interworking | | | | ||
103 | --------------------------------------------------------------- | ||
104 | | 8 | PPP | 0xF8 | 4 bytes | | ||
105 | | | interworking | | | | ||
106 | --------------------------------------------------------------- | ||
107 | | 12 | Ethernet RX | 0x22 | 1 byte | | ||
108 | | | Distributor Page | | | | ||
109 | --------------------------------------------------------------- | ||
110 | | 16 | ATM Globtal | 0x28 | 1 byte | | ||
111 | | | Params Table | | | | ||
112 | --------------------------------------------------------------- | ||
113 | | 20 | Insert Frame | 0xF8 | 4 bytes | | ||
114 | --------------------------------------------------------------- | ||
115 | |||
116 | |||
117 | Extended Modes | ||
118 | |||
119 | This is a double word bit array (64 bits) that defines special functionality | ||
120 | which has an impact on the softwarew drivers. Each bit has its own impact | ||
121 | and has special instructions for the s/w associated with it. This structure is | ||
122 | described in this table: | ||
123 | |||
124 | ----------------------------------------------------------------------- | ||
125 | | Bit # | Name | Description | | ||
126 | ----------------------------------------------------------------------- | ||
127 | | 0 | General | Indicates that prior to each host command | | ||
128 | | | push command | given by the application, the software must | | ||
129 | | | | assert a special host command (push command)| | ||
130 | | | | CECDR = 0x00800000. | | ||
131 | | | | CECR = 0x01c1000f. | | ||
132 | ----------------------------------------------------------------------- | ||
133 | | 1 | UCC ATM | Indicates that after issuing ATM RX INIT | | ||
134 | | | RX INIT | command, the host must issue another special| | ||
135 | | | push command | command (push command) and immediately | | ||
136 | | | | following that re-issue the ATM RX INIT | | ||
137 | | | | command. (This makes the sequence of | | ||
138 | | | | initializing the ATM receiver a sequence of | | ||
139 | | | | three host commands) | | ||
140 | | | | CECDR = 0x00800000. | | ||
141 | | | | CECR = 0x01c1000f. | | ||
142 | ----------------------------------------------------------------------- | ||
143 | | 2 | Add/remove | Indicates that following the specific host | | ||
144 | | | command | command: "Add/Remove entry in Hash Lookup | | ||
145 | | | validation | Table" used in Interworking setup, the user | | ||
146 | | | | must issue another command. | | ||
147 | | | | CECDR = 0xce000003. | | ||
148 | | | | CECR = 0x01c10f58. | | ||
149 | ----------------------------------------------------------------------- | ||
150 | | 3 | General push | Indicates that the s/w has to initialize | | ||
151 | | | command | some pointers in the Ethernet thread pages | | ||
152 | | | | which are used when Header Compression is | | ||
153 | | | | activated. The full details of these | | ||
154 | | | | pointers is located in the software drivers.| | ||
155 | ----------------------------------------------------------------------- | ||
156 | | 4 | General push | Indicates that after issuing Ethernet TX | | ||
157 | | | command | INIT command, user must issue this command | | ||
158 | | | | for each SNUM of Ethernet TX thread. | | ||
159 | | | | CECDR = 0x00800003. | | ||
160 | | | | CECR = 0x7'b{0}, 8'b{Enet TX thread SNUM}, | | ||
161 | | | | 1'b{1}, 12'b{0}, 4'b{1} | | ||
162 | ----------------------------------------------------------------------- | ||
163 | | 5 - 31 | N/A | Reserved, set to zero. | | ||
164 | ----------------------------------------------------------------------- | ||
165 | |||
166 | V - Firmware Structure Layout | ||
167 | ============================== | ||
168 | |||
169 | QE microcode from Freescale is typically provided as a header file. This | ||
170 | header file contains macros that define the microcode binary itself as well as | ||
171 | some other data used in uploading that microcode. The format of these files | ||
172 | do not lend themselves to simple inclusion into other code. Hence, | ||
173 | the need for a more portable format. This section defines that format. | ||
174 | |||
175 | Instead of distributing a header file, the microcode and related data are | ||
176 | embedded into a binary blob. This blob is passed to the qe_upload_firmware() | ||
177 | function, which parses the blob and performs everything necessary to upload | ||
178 | the microcode. | ||
179 | |||
180 | All integers are big-endian. See the comments for function | ||
181 | qe_upload_firmware() for up-to-date implementation information. | ||
182 | |||
183 | This structure supports versioning, where the version of the structure is | ||
184 | embedded into the structure itself. To ensure forward and backwards | ||
185 | compatibility, all versions of the structure must use the same 'qe_header' | ||
186 | structure at the beginning. | ||
187 | |||
188 | 'header' (type: struct qe_header): | ||
189 | The 'length' field is the size, in bytes, of the entire structure, | ||
190 | including all the microcode embedded in it, as well as the CRC (if | ||
191 | present). | ||
192 | |||
193 | The 'magic' field is an array of three bytes that contains the letters | ||
194 | 'Q', 'E', and 'F'. This is an identifier that indicates that this | ||
195 | structure is a QE Firmware structure. | ||
196 | |||
197 | The 'version' field is a single byte that indicates the version of this | ||
198 | structure. If the layout of the structure should ever need to be | ||
199 | changed to add support for additional types of microcode, then the | ||
200 | version number should also be changed. | ||
201 | |||
202 | The 'id' field is a null-terminated string(suitable for printing) that | ||
203 | identifies the firmware. | ||
204 | |||
205 | The 'count' field indicates the number of 'microcode' structures. There | ||
206 | must be one and only one 'microcode' structure for each RISC processor. | ||
207 | Therefore, this field also represents the number of RISC processors for this | ||
208 | SOC. | ||
209 | |||
210 | The 'soc' structure contains the SOC numbers and revisions used to match | ||
211 | the microcode to the SOC itself. Normally, the microcode loader should | ||
212 | check the data in this structure with the SOC number and revisions, and | ||
213 | only upload the microcode if there's a match. However, this check is not | ||
214 | made on all platforms. | ||
215 | |||
216 | Although it is not recommended, you can specify '0' in the soc.model | ||
217 | field to skip matching SOCs altogether. | ||
218 | |||
219 | The 'model' field is a 16-bit number that matches the actual SOC. The | ||
220 | 'major' and 'minor' fields are the major and minor revision numbrs, | ||
221 | respectively, of the SOC. | ||
222 | |||
223 | For example, to match the 8323, revision 1.0: | ||
224 | soc.model = 8323 | ||
225 | soc.major = 1 | ||
226 | soc.minor = 0 | ||
227 | |||
228 | 'padding' is neccessary for structure alignment. This field ensures that the | ||
229 | 'extended_modes' field is aligned on a 64-bit boundary. | ||
230 | |||
231 | 'extended_modes' is a bitfield that defines special functionality which has an | ||
232 | impact on the device drivers. Each bit has its own impact and has special | ||
233 | instructions for the driver associated with it. This field is stored in | ||
234 | the QE library and available to any driver that calles qe_get_firmware_info(). | ||
235 | |||
236 | 'vtraps' is an array of 8 words that contain virtual trap values for each | ||
237 | virtual traps. As with 'extended_modes', this field is stored in the QE | ||
238 | library and available to any driver that calles qe_get_firmware_info(). | ||
239 | |||
240 | 'microcode' (type: struct qe_microcode): | ||
241 | For each RISC processor there is one 'microcode' structure. The first | ||
242 | 'microcode' structure is for the first RISC, and so on. | ||
243 | |||
244 | The 'id' field is a null-terminated string suitable for printing that | ||
245 | identifies this particular microcode. | ||
246 | |||
247 | 'traps' is an array of 16 words that contain hardware trap values | ||
248 | for each of the 16 traps. If trap[i] is 0, then this particular | ||
249 | trap is to be ignored (i.e. not written to TIBCR[i]). The entire value | ||
250 | is written as-is to the TIBCR[i] register, so be sure to set the EN | ||
251 | and T_IBP bits if necessary. | ||
252 | |||
253 | 'eccr' is the value to program into the ECCR register. | ||
254 | |||
255 | 'iram_offset' is the offset into IRAM to start writing the | ||
256 | microcode. | ||
257 | |||
258 | 'count' is the number of 32-bit words in the microcode. | ||
259 | |||
260 | 'code_offset' is the offset, in bytes, from the beginning of this | ||
261 | structure where the microcode itself can be found. The first | ||
262 | microcode binary should be located immediately after the 'microcode' | ||
263 | array. | ||
264 | |||
265 | 'major', 'minor', and 'revision' are the major, minor, and revision | ||
266 | version numbers, respectively, of the microcode. If all values are 0, | ||
267 | then these fields are ignored. | ||
268 | |||
269 | 'reserved' is necessary for structure alignment. Since 'microcode' | ||
270 | is an array, the 64-bit 'extended_modes' field needs to be aligned | ||
271 | on a 64-bit boundary, and this can only happen if the size of | ||
272 | 'microcode' is a multiple of 8 bytes. To ensure that, we add | ||
273 | 'reserved'. | ||
274 | |||
275 | After the last microcode is a 32-bit CRC. It can be calculated using | ||
276 | this algorithm: | ||
277 | |||
278 | u32 crc32(const u8 *p, unsigned int len) | ||
279 | { | ||
280 | unsigned int i; | ||
281 | u32 crc = 0; | ||
282 | |||
283 | while (len--) { | ||
284 | crc ^= *p++; | ||
285 | for (i = 0; i < 8; i++) | ||
286 | crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0); | ||
287 | } | ||
288 | return crc; | ||
289 | } | ||
290 | |||
291 | VI - Sample Code for Creating Firmware Files | ||
292 | ============================================ | ||
293 | |||
294 | A Python program that creates firmware binaries from the header files normally | ||
295 | distributed by Freescale can be found on http://opensource.freescale.com. | ||
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 53d0955abf11..9ae800d81f89 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -140,6 +140,9 @@ config DEFAULT_UIMAGE | |||
140 | Used to allow a board to specify it wants a uImage built by default | 140 | Used to allow a board to specify it wants a uImage built by default |
141 | default n | 141 | default n |
142 | 142 | ||
143 | config REDBOOT | ||
144 | bool | ||
145 | |||
143 | config PPC64_SWSUSP | 146 | config PPC64_SWSUSP |
144 | bool | 147 | bool |
145 | depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL)) | 148 | depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL)) |
diff --git a/arch/powerpc/boot/.gitignore b/arch/powerpc/boot/.gitignore index b160322a87ad..5ef2bdf8d189 100644 --- a/arch/powerpc/boot/.gitignore +++ b/arch/powerpc/boot/.gitignore | |||
@@ -31,6 +31,7 @@ zImage.*lds | |||
31 | zImage.miboot | 31 | zImage.miboot |
32 | zImage.pmac | 32 | zImage.pmac |
33 | zImage.pseries | 33 | zImage.pseries |
34 | zImage.redboot* | ||
34 | zImage.sandpoint | 35 | zImage.sandpoint |
35 | zImage.vmode | 36 | zImage.vmode |
36 | zconf.h | 37 | zconf.h |
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index d1e625c073bb..1e20aca48f45 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -57,12 +57,12 @@ src-wlib := string.S crt0.S stdio.c main.c \ | |||
57 | 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ | 57 | 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ |
58 | cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ | 58 | cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ |
59 | fsl-soc.c mpc8xx.c pq2.c | 59 | fsl-soc.c mpc8xx.c pq2.c |
60 | src-plat := of.c cuboot-52xx.c cuboot-83xx.c cuboot-85xx.c holly.c \ | 60 | src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c \ |
61 | cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ | 61 | cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ |
62 | ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ | 62 | ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ |
63 | cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c \ | 63 | cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c \ |
64 | fixed-head.S ep88xc.c cuboot-hpc2.c ep405.c cuboot-taishan.c \ | 64 | fixed-head.S ep88xc.c cuboot-hpc2.c ep405.c cuboot-taishan.c \ |
65 | cuboot-katmai.c cuboot-rainier.c | 65 | cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c |
66 | src-boot := $(src-wlib) $(src-plat) empty.c | 66 | src-boot := $(src-wlib) $(src-plat) empty.c |
67 | 67 | ||
68 | src-boot := $(addprefix $(obj)/, $(src-boot)) | 68 | src-boot := $(addprefix $(obj)/, $(src-boot)) |
@@ -195,7 +195,9 @@ image-$(CONFIG_PPC_8xx) += cuImage.8xx | |||
195 | image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc | 195 | image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc |
196 | image-$(CONFIG_EP405) += zImage.ep405 | 196 | image-$(CONFIG_EP405) += zImage.ep405 |
197 | image-$(CONFIG_8260) += cuImage.pq2 | 197 | image-$(CONFIG_8260) += cuImage.pq2 |
198 | image-$(CONFIG_EP8248E) += zImage.ep8248e | ||
198 | image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx | 199 | image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx |
200 | image-$(CONFIG_STORCENTER) += cuImage.824x | ||
199 | image-$(CONFIG_PPC_83xx) += cuImage.83xx | 201 | image-$(CONFIG_PPC_83xx) += cuImage.83xx |
200 | image-$(CONFIG_PPC_85xx) += cuImage.85xx | 202 | image-$(CONFIG_PPC_85xx) += cuImage.85xx |
201 | image-$(CONFIG_MPC7448HPC2) += cuImage.hpc2 | 203 | image-$(CONFIG_MPC7448HPC2) += cuImage.hpc2 |
@@ -208,6 +210,10 @@ image-$(CONFIG_TAISHAN) += cuImage.taishan | |||
208 | image-$(CONFIG_KATMAI) += cuImage.katmai | 210 | image-$(CONFIG_KATMAI) += cuImage.katmai |
209 | endif | 211 | endif |
210 | 212 | ||
213 | ifneq ($(CONFIG_REDBOOT),"") | ||
214 | image-$(CONFIG_PPC_8xx) += zImage.redboot-8xx | ||
215 | endif | ||
216 | |||
211 | # For 32-bit powermacs, build the COFF and miboot images | 217 | # For 32-bit powermacs, build the COFF and miboot images |
212 | # as well as the ELF images. | 218 | # as well as the ELF images. |
213 | ifeq ($(CONFIG_PPC32),y) | 219 | ifeq ($(CONFIG_PPC32),y) |
diff --git a/arch/powerpc/boot/cuboot-824x.c b/arch/powerpc/boot/cuboot-824x.c new file mode 100644 index 000000000000..ced90c53de48 --- /dev/null +++ b/arch/powerpc/boot/cuboot-824x.c | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for 824x | ||
3 | * | ||
4 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License version 2 as published | ||
8 | * by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #include "ops.h" | ||
12 | #include "stdio.h" | ||
13 | #include "cuboot.h" | ||
14 | |||
15 | #define TARGET_824x | ||
16 | #include "ppcboot.h" | ||
17 | |||
18 | static bd_t bd; | ||
19 | |||
20 | |||
21 | static void platform_fixups(void) | ||
22 | { | ||
23 | void *soc; | ||
24 | |||
25 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); | ||
26 | dt_fixup_mac_addresses(bd.bi_enetaddr); | ||
27 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); | ||
28 | |||
29 | soc = find_node_by_devtype(NULL, "soc"); | ||
30 | if (soc) { | ||
31 | void *serial = NULL; | ||
32 | |||
33 | setprop(soc, "bus-frequency", &bd.bi_busfreq, | ||
34 | sizeof(bd.bi_busfreq)); | ||
35 | |||
36 | while ((serial = find_node_by_devtype(serial, "serial"))) { | ||
37 | if (get_parent(serial) != soc) | ||
38 | continue; | ||
39 | |||
40 | setprop(serial, "clock-frequency", &bd.bi_busfreq, | ||
41 | sizeof(bd.bi_busfreq)); | ||
42 | } | ||
43 | } | ||
44 | } | ||
45 | |||
46 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
47 | unsigned long r6, unsigned long r7) | ||
48 | { | ||
49 | CUBOOT_INIT(); | ||
50 | fdt_init(_dtb_start); | ||
51 | serial_console_init(); | ||
52 | platform_ops.fixups = platform_fixups; | ||
53 | } | ||
diff --git a/arch/powerpc/boot/cuboot-83xx.c b/arch/powerpc/boot/cuboot-83xx.c index acd860ed7393..61af1c1e8255 100644 --- a/arch/powerpc/boot/cuboot-83xx.c +++ b/arch/powerpc/boot/cuboot-83xx.c | |||
@@ -24,7 +24,8 @@ static void platform_fixups(void) | |||
24 | void *soc; | 24 | void *soc; |
25 | 25 | ||
26 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); | 26 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); |
27 | dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr); | 27 | dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); |
28 | dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); | ||
28 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); | 29 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); |
29 | 30 | ||
30 | /* Unfortunately, the specific model number is encoded in the | 31 | /* Unfortunately, the specific model number is encoded in the |
diff --git a/arch/powerpc/boot/cuboot-85xx.c b/arch/powerpc/boot/cuboot-85xx.c index 943779ed19be..6776a1a29f13 100644 --- a/arch/powerpc/boot/cuboot-85xx.c +++ b/arch/powerpc/boot/cuboot-85xx.c | |||
@@ -24,8 +24,9 @@ static void platform_fixups(void) | |||
24 | void *soc; | 24 | void *soc; |
25 | 25 | ||
26 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); | 26 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); |
27 | dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr, | 27 | dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); |
28 | bd.bi_enet2addr); | 28 | dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); |
29 | dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr); | ||
29 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); | 30 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); |
30 | 31 | ||
31 | /* Unfortunately, the specific model number is encoded in the | 32 | /* Unfortunately, the specific model number is encoded in the |
diff --git a/arch/powerpc/boot/devtree.c b/arch/powerpc/boot/devtree.c index e5dfe4497313..60f561e307a9 100644 --- a/arch/powerpc/boot/devtree.c +++ b/arch/powerpc/boot/devtree.c | |||
@@ -88,6 +88,20 @@ void dt_fixup_clock(const char *path, u32 freq) | |||
88 | } | 88 | } |
89 | } | 89 | } |
90 | 90 | ||
91 | void dt_fixup_mac_address_by_alias(const char *alias, const u8 *addr) | ||
92 | { | ||
93 | void *devp = find_node_by_alias(alias); | ||
94 | |||
95 | if (devp) { | ||
96 | printf("%s: local-mac-address <-" | ||
97 | " %02x:%02x:%02x:%02x:%02x:%02x\n\r", alias, | ||
98 | addr[0], addr[1], addr[2], | ||
99 | addr[3], addr[4], addr[5]); | ||
100 | |||
101 | setprop(devp, "local-mac-address", addr, 6); | ||
102 | } | ||
103 | } | ||
104 | |||
91 | void dt_fixup_mac_address(u32 index, const u8 *addr) | 105 | void dt_fixup_mac_address(u32 index, const u8 *addr) |
92 | { | 106 | { |
93 | void *devp = find_node_by_prop_value(NULL, "linux,network-index", | 107 | void *devp = find_node_by_prop_value(NULL, "linux,network-index", |
diff --git a/arch/powerpc/boot/dts/adder875-redboot.dts b/arch/powerpc/boot/dts/adder875-redboot.dts new file mode 100644 index 000000000000..930bfb3894eb --- /dev/null +++ b/arch/powerpc/boot/dts/adder875-redboot.dts | |||
@@ -0,0 +1,184 @@ | |||
1 | /* | ||
2 | * Device Tree Source for MPC885 ADS running RedBoot | ||
3 | * | ||
4 | * Copyright 2006 MontaVista Software, Inc. | ||
5 | * Copyright 2007 Freescale Semiconductor, Inc. | ||
6 | * | ||
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 | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /dts-v1/; | ||
14 | / { | ||
15 | model = "Analogue & Micro Adder MPC875"; | ||
16 | compatible = "analogue-and-micro,adder875"; | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <1>; | ||
19 | |||
20 | aliases { | ||
21 | console = &console; | ||
22 | ethernet0 = ð0; | ||
23 | ethernet1 = ð1; | ||
24 | }; | ||
25 | |||
26 | cpus { | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <0>; | ||
29 | |||
30 | PowerPC,875@0 { | ||
31 | device_type = "cpu"; | ||
32 | reg = <0>; | ||
33 | d-cache-line-size = <16>; | ||
34 | i-cache-line-size = <16>; | ||
35 | d-cache-size = <8192>; | ||
36 | i-cache-size = <8192>; | ||
37 | timebase-frequency = <0>; | ||
38 | bus-frequency = <0>; | ||
39 | clock-frequency = <0>; | ||
40 | interrupts = <15 2>; // decrementer interrupt | ||
41 | interrupt-parent = <&PIC>; | ||
42 | }; | ||
43 | }; | ||
44 | |||
45 | memory { | ||
46 | device_type = "memory"; | ||
47 | reg = <0 0x01000000>; | ||
48 | }; | ||
49 | |||
50 | localbus@fa200100 { | ||
51 | compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus", | ||
52 | "simple-bus"; | ||
53 | #address-cells = <2>; | ||
54 | #size-cells = <1>; | ||
55 | reg = <0xfa200100 0x40>; | ||
56 | |||
57 | ranges = < | ||
58 | 0 0 0xfe000000 0x00800000 | ||
59 | 2 0 0xfa100000 0x00008000 | ||
60 | >; | ||
61 | |||
62 | flash@0,0 { | ||
63 | compatible = "cfi-flash"; | ||
64 | reg = <0 0 0x800000>; | ||
65 | bank-width = <2>; | ||
66 | device-width = <2>; | ||
67 | }; | ||
68 | }; | ||
69 | |||
70 | soc@fa200000 { | ||
71 | compatible = "fsl,mpc875-immr", "fsl,pq1-soc", "simple-bus"; | ||
72 | #address-cells = <1>; | ||
73 | #size-cells = <1>; | ||
74 | ranges = <0 0xfa200000 0x00004000>; | ||
75 | |||
76 | // Temporary until code stops depending on it. | ||
77 | device_type = "soc"; | ||
78 | |||
79 | // Temporary until get_immrbase() is fixed. | ||
80 | reg = <0xfa200000 0x4000>; | ||
81 | |||
82 | mdio@e00 { | ||
83 | compatible = "fsl,mpc875-fec-mdio", "fsl,pq1-fec-mdio"; | ||
84 | reg = <0xe00 0x188>; | ||
85 | #address-cells = <1>; | ||
86 | #size-cells = <0>; | ||
87 | |||
88 | PHY0: ethernet-phy@0 { | ||
89 | reg = <0>; | ||
90 | device_type = "ethernet-phy"; | ||
91 | }; | ||
92 | |||
93 | PHY1: ethernet-phy@1 { | ||
94 | reg = <1>; | ||
95 | device_type = "ethernet-phy"; | ||
96 | }; | ||
97 | }; | ||
98 | |||
99 | eth0: ethernet@e00 { | ||
100 | device_type = "network"; | ||
101 | compatible = "fsl,mpc875-fec-enet", | ||
102 | "fsl,pq1-fec-enet"; | ||
103 | reg = <0xe00 0x188>; | ||
104 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
105 | interrupts = <3 1>; | ||
106 | interrupt-parent = <&PIC>; | ||
107 | phy-handle = <&PHY0>; | ||
108 | linux,network-index = <0>; | ||
109 | }; | ||
110 | |||
111 | eth1: ethernet@1e00 { | ||
112 | device_type = "network"; | ||
113 | compatible = "fsl,mpc875-fec-enet", | ||
114 | "fsl,pq1-fec-enet"; | ||
115 | reg = <0x1e00 0x188>; | ||
116 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
117 | interrupts = <7 1>; | ||
118 | interrupt-parent = <&PIC>; | ||
119 | phy-handle = <&PHY1>; | ||
120 | linux,network-index = <1>; | ||
121 | }; | ||
122 | |||
123 | PIC: interrupt-controller@0 { | ||
124 | interrupt-controller; | ||
125 | #interrupt-cells = <2>; | ||
126 | reg = <0 0x24>; | ||
127 | compatible = "fsl,mpc875-pic", "fsl,pq1-pic"; | ||
128 | }; | ||
129 | |||
130 | cpm@9c0 { | ||
131 | #address-cells = <1>; | ||
132 | #size-cells = <1>; | ||
133 | compatible = "fsl,mpc875-cpm", "fsl,cpm1", "simple-bus"; | ||
134 | interrupts = <0>; // cpm error interrupt | ||
135 | interrupt-parent = <&CPM_PIC>; | ||
136 | reg = <0x9c0 0x40>; | ||
137 | ranges; | ||
138 | |||
139 | muram { | ||
140 | #address-cells = <1>; | ||
141 | #size-cells = <1>; | ||
142 | ranges = <0 0x2000 0x2000>; | ||
143 | |||
144 | data@0 { | ||
145 | compatible = "fsl,cpm-muram-data"; | ||
146 | reg = <0 0x1c00>; | ||
147 | }; | ||
148 | }; | ||
149 | |||
150 | brg@9f0 { | ||
151 | compatible = "fsl,mpc875-brg", | ||
152 | "fsl,cpm1-brg", | ||
153 | "fsl,cpm-brg"; | ||
154 | reg = <0x9f0 0x10>; | ||
155 | }; | ||
156 | |||
157 | CPM_PIC: interrupt-controller@930 { | ||
158 | interrupt-controller; | ||
159 | #interrupt-cells = <1>; | ||
160 | interrupts = <5 2 0 2>; | ||
161 | interrupt-parent = <&PIC>; | ||
162 | reg = <0x930 0x20>; | ||
163 | compatible = "fsl,mpc875-cpm-pic", | ||
164 | "fsl,cpm1-pic"; | ||
165 | }; | ||
166 | |||
167 | console: serial@a80 { | ||
168 | device_type = "serial"; | ||
169 | compatible = "fsl,mpc875-smc-uart", | ||
170 | "fsl,cpm1-smc-uart"; | ||
171 | reg = <0xa80 0x10 0x3e80 0x40>; | ||
172 | interrupts = <4>; | ||
173 | interrupt-parent = <&CPM_PIC>; | ||
174 | fsl,cpm-brg = <1>; | ||
175 | fsl,cpm-command = <0x0090>; | ||
176 | current-speed = <115200>; | ||
177 | }; | ||
178 | }; | ||
179 | }; | ||
180 | |||
181 | chosen { | ||
182 | linux,stdout-path = &console; | ||
183 | }; | ||
184 | }; | ||
diff --git a/arch/powerpc/boot/dts/adder875-uboot.dts b/arch/powerpc/boot/dts/adder875-uboot.dts new file mode 100644 index 000000000000..0197242dacfb --- /dev/null +++ b/arch/powerpc/boot/dts/adder875-uboot.dts | |||
@@ -0,0 +1,183 @@ | |||
1 | /* | ||
2 | * Device Tree Source for MPC885 ADS running U-Boot | ||
3 | * | ||
4 | * Copyright 2006 MontaVista Software, Inc. | ||
5 | * Copyright 2007 Freescale Semiconductor, Inc. | ||
6 | * | ||
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 | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /dts-v1/; | ||
14 | / { | ||
15 | model = "Analogue & Micro Adder MPC875"; | ||
16 | compatible = "analogue-and-micro,adder875"; | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <1>; | ||
19 | |||
20 | aliases { | ||
21 | console = &console; | ||
22 | ethernet0 = ð0; | ||
23 | ethernet1 = ð1; | ||
24 | }; | ||
25 | |||
26 | cpus { | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <0>; | ||
29 | |||
30 | PowerPC,875@0 { | ||
31 | device_type = "cpu"; | ||
32 | reg = <0>; | ||
33 | d-cache-line-size = <16>; | ||
34 | i-cache-line-size = <16>; | ||
35 | d-cache-size = <8192>; | ||
36 | i-cache-size = <8192>; | ||
37 | timebase-frequency = <0>; | ||
38 | bus-frequency = <0>; | ||
39 | clock-frequency = <0>; | ||
40 | interrupts = <15 2>; // decrementer interrupt | ||
41 | interrupt-parent = <&PIC>; | ||
42 | }; | ||
43 | }; | ||
44 | |||
45 | memory { | ||
46 | device_type = "memory"; | ||
47 | reg = <0 0x01000000>; | ||
48 | }; | ||
49 | |||
50 | localbus@ff000100 { | ||
51 | compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus", | ||
52 | "simple-bus"; | ||
53 | #address-cells = <2>; | ||
54 | #size-cells = <1>; | ||
55 | reg = <0xff000100 0x40>; | ||
56 | |||
57 | ranges = < | ||
58 | 0 0 0xfe000000 0x01000000 | ||
59 | >; | ||
60 | |||
61 | flash@0,0 { | ||
62 | compatible = "cfi-flash"; | ||
63 | reg = <0 0 0x800000>; | ||
64 | bank-width = <2>; | ||
65 | device-width = <2>; | ||
66 | }; | ||
67 | }; | ||
68 | |||
69 | soc@ff000000 { | ||
70 | compatible = "fsl,mpc875-immr", "fsl,pq1-soc", "simple-bus"; | ||
71 | #address-cells = <1>; | ||
72 | #size-cells = <1>; | ||
73 | ranges = <0 0xff000000 0x00004000>; | ||
74 | |||
75 | // Temporary until code stops depending on it. | ||
76 | device_type = "soc"; | ||
77 | |||
78 | // Temporary until get_immrbase() is fixed. | ||
79 | reg = <0xff000000 0x4000>; | ||
80 | |||
81 | mdio@e00 { | ||
82 | compatible = "fsl,mpc875-fec-mdio", "fsl,pq1-fec-mdio"; | ||
83 | reg = <0xe00 0x188>; | ||
84 | #address-cells = <1>; | ||
85 | #size-cells = <0>; | ||
86 | |||
87 | PHY0: ethernet-phy@0 { | ||
88 | reg = <0>; | ||
89 | device_type = "ethernet-phy"; | ||
90 | }; | ||
91 | |||
92 | PHY1: ethernet-phy@1 { | ||
93 | reg = <1>; | ||
94 | device_type = "ethernet-phy"; | ||
95 | }; | ||
96 | }; | ||
97 | |||
98 | eth0: ethernet@e00 { | ||
99 | device_type = "network"; | ||
100 | compatible = "fsl,mpc875-fec-enet", | ||
101 | "fsl,pq1-fec-enet"; | ||
102 | reg = <0xe00 0x188>; | ||
103 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
104 | interrupts = <3 1>; | ||
105 | interrupt-parent = <&PIC>; | ||
106 | phy-handle = <&PHY0>; | ||
107 | linux,network-index = <0>; | ||
108 | }; | ||
109 | |||
110 | eth1: ethernet@1e00 { | ||
111 | device_type = "network"; | ||
112 | compatible = "fsl,mpc875-fec-enet", | ||
113 | "fsl,pq1-fec-enet"; | ||
114 | reg = <0x1e00 0x188>; | ||
115 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
116 | interrupts = <7 1>; | ||
117 | interrupt-parent = <&PIC>; | ||
118 | phy-handle = <&PHY1>; | ||
119 | linux,network-index = <1>; | ||
120 | }; | ||
121 | |||
122 | PIC: interrupt-controller@0 { | ||
123 | interrupt-controller; | ||
124 | #interrupt-cells = <2>; | ||
125 | reg = <0 0x24>; | ||
126 | compatible = "fsl,mpc875-pic", "fsl,pq1-pic"; | ||
127 | }; | ||
128 | |||
129 | cpm@9c0 { | ||
130 | #address-cells = <1>; | ||
131 | #size-cells = <1>; | ||
132 | compatible = "fsl,mpc875-cpm", "fsl,cpm1", "simple-bus"; | ||
133 | interrupts = <0>; // cpm error interrupt | ||
134 | interrupt-parent = <&CPM_PIC>; | ||
135 | reg = <0x9c0 0x40>; | ||
136 | ranges; | ||
137 | |||
138 | muram { | ||
139 | #address-cells = <1>; | ||
140 | #size-cells = <1>; | ||
141 | ranges = <0 0x2000 0x2000>; | ||
142 | |||
143 | data@0 { | ||
144 | compatible = "fsl,cpm-muram-data"; | ||
145 | reg = <0 0x1c00>; | ||
146 | }; | ||
147 | }; | ||
148 | |||
149 | brg@9f0 { | ||
150 | compatible = "fsl,mpc875-brg", | ||
151 | "fsl,cpm1-brg", | ||
152 | "fsl,cpm-brg"; | ||
153 | reg = <0x9f0 0x10>; | ||
154 | }; | ||
155 | |||
156 | CPM_PIC: interrupt-controller@930 { | ||
157 | interrupt-controller; | ||
158 | #interrupt-cells = <1>; | ||
159 | interrupts = <5 2 0 2>; | ||
160 | interrupt-parent = <&PIC>; | ||
161 | reg = <0x930 0x20>; | ||
162 | compatible = "fsl,mpc875-cpm-pic", | ||
163 | "fsl,cpm1-pic"; | ||
164 | }; | ||
165 | |||
166 | console: serial@a80 { | ||
167 | device_type = "serial"; | ||
168 | compatible = "fsl,mpc875-smc-uart", | ||
169 | "fsl,cpm1-smc-uart"; | ||
170 | reg = <0xa80 0x10 0x3e80 0x40>; | ||
171 | interrupts = <4>; | ||
172 | interrupt-parent = <&CPM_PIC>; | ||
173 | fsl,cpm-brg = <1>; | ||
174 | fsl,cpm-command = <0x0090>; | ||
175 | current-speed = <115200>; | ||
176 | }; | ||
177 | }; | ||
178 | }; | ||
179 | |||
180 | chosen { | ||
181 | linux,stdout-path = &console; | ||
182 | }; | ||
183 | }; | ||
diff --git a/arch/powerpc/boot/dts/ep8248e.dts b/arch/powerpc/boot/dts/ep8248e.dts new file mode 100644 index 000000000000..5d2fb76a72c1 --- /dev/null +++ b/arch/powerpc/boot/dts/ep8248e.dts | |||
@@ -0,0 +1,207 @@ | |||
1 | /* | ||
2 | * Device Tree for the Embedded Planet EP8248E board running PlanetCore. | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
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 | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | / { | ||
14 | model = "EP8248E"; | ||
15 | compatible = "fsl,ep8248e"; | ||
16 | #address-cells = <1>; | ||
17 | #size-cells = <1>; | ||
18 | |||
19 | aliases { | ||
20 | planetcore-SMC1 = &smc1; | ||
21 | planetcore-SCC1 = &scc1; | ||
22 | ethernet0 = ð0; | ||
23 | ethernet1 = ð1; | ||
24 | serial0 = &smc1; | ||
25 | serial1 = &scc1; | ||
26 | }; | ||
27 | |||
28 | cpus { | ||
29 | #address-cells = <1>; | ||
30 | #size-cells = <0>; | ||
31 | |||
32 | PowerPC,8248@0 { | ||
33 | device_type = "cpu"; | ||
34 | reg = <0>; | ||
35 | d-cache-line-size = <32>; | ||
36 | i-cache-line-size = <32>; | ||
37 | d-cache-size = <16384>; | ||
38 | i-cache-size = <16384>; | ||
39 | timebase-frequency = <0>; | ||
40 | clock-frequency = <0>; | ||
41 | }; | ||
42 | }; | ||
43 | |||
44 | localbus@f0010100 { | ||
45 | compatible = "fsl,mpc8248-localbus", | ||
46 | "fsl,pq2-localbus", | ||
47 | "simple-bus"; | ||
48 | #address-cells = <2>; | ||
49 | #size-cells = <1>; | ||
50 | reg = <0xf0010100 0x40>; | ||
51 | |||
52 | ranges = <0 0 0xfc000000 0x04000000 | ||
53 | 1 0 0xfa000000 0x00008000>; | ||
54 | |||
55 | flash@0,3800000 { | ||
56 | compatible = "cfi-flash"; | ||
57 | reg = <0 0x3800000 0x800000>; | ||
58 | bank-width = <4>; | ||
59 | device-width = <2>; | ||
60 | }; | ||
61 | |||
62 | bcsr@1,0 { | ||
63 | #address-cells = <2>; | ||
64 | #size-cells = <1>; | ||
65 | reg = <1 0 0x10>; | ||
66 | compatible = "fsl,ep8248e-bcsr"; | ||
67 | ranges; | ||
68 | |||
69 | mdio { | ||
70 | device_type = "mdio"; | ||
71 | compatible = "fsl,ep8248e-mdio-bitbang"; | ||
72 | #address-cells = <1>; | ||
73 | #size-cells = <0>; | ||
74 | reg = <1 8 1>; | ||
75 | |||
76 | PHY0: ethernet-phy@0 { | ||
77 | interrupt-parent = <&PIC>; | ||
78 | reg = <0>; | ||
79 | device_type = "ethernet-phy"; | ||
80 | }; | ||
81 | |||
82 | PHY1: ethernet-phy@1 { | ||
83 | interrupt-parent = <&PIC>; | ||
84 | reg = <1>; | ||
85 | device_type = "ethernet-phy"; | ||
86 | }; | ||
87 | }; | ||
88 | }; | ||
89 | }; | ||
90 | |||
91 | memory { | ||
92 | device_type = "memory"; | ||
93 | reg = <0 0>; | ||
94 | }; | ||
95 | |||
96 | soc@f0000000 { | ||
97 | #address-cells = <1>; | ||
98 | #size-cells = <1>; | ||
99 | compatible = "fsl,mpc8248-immr", "fsl,pq2-soc", "simple-bus"; | ||
100 | ranges = <0x00000000 0xf0000000 0x00053000>; | ||
101 | |||
102 | // Temporary until code stops depending on it. | ||
103 | device_type = "soc"; | ||
104 | |||
105 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). | ||
106 | reg = <0xf0000000 0x00053000>; | ||
107 | |||
108 | cpm@119c0 { | ||
109 | #address-cells = <1>; | ||
110 | #size-cells = <1>; | ||
111 | #interrupt-cells = <2>; | ||
112 | compatible = "fsl,mpc8248-cpm", "fsl,cpm2", | ||
113 | "simple-bus"; | ||
114 | reg = <0x119c0 0x30>; | ||
115 | ranges; | ||
116 | |||
117 | muram { | ||
118 | #address-cells = <1>; | ||
119 | #size-cells = <1>; | ||
120 | ranges = <0 0 0x10000>; | ||
121 | |||
122 | data@0 { | ||
123 | compatible = "fsl,cpm-muram-data"; | ||
124 | reg = <0 0x1100 0x1140 | ||
125 | 0xec0 0x9800 0x800>; | ||
126 | }; | ||
127 | }; | ||
128 | |||
129 | brg@119f0 { | ||
130 | compatible = "fsl,mpc8248-brg", | ||
131 | "fsl,cpm2-brg", | ||
132 | "fsl,cpm-brg"; | ||
133 | reg = <0x119f0 0x10 0x115f0 0x10>; | ||
134 | }; | ||
135 | |||
136 | /* Monitor port/SMC1 */ | ||
137 | smc1: serial@11a80 { | ||
138 | device_type = "serial"; | ||
139 | compatible = "fsl,mpc8248-smc-uart", | ||
140 | "fsl,cpm2-smc-uart"; | ||
141 | reg = <0x11a80 0x20 0x1100 0x40>; | ||
142 | interrupts = <4 8>; | ||
143 | interrupt-parent = <&PIC>; | ||
144 | fsl,cpm-brg = <7>; | ||
145 | fsl,cpm-command = <0x1d000000>; | ||
146 | linux,planetcore-label = "SMC1"; | ||
147 | }; | ||
148 | |||
149 | /* "Serial" port/SCC1 */ | ||
150 | scc1: serial@11a00 { | ||
151 | device_type = "serial"; | ||
152 | compatible = "fsl,mpc8248-scc-uart", | ||
153 | "fsl,cpm2-scc-uart"; | ||
154 | reg = <0x11a00 0x20 0x8000 0x100>; | ||
155 | interrupts = <40 8>; | ||
156 | interrupt-parent = <&PIC>; | ||
157 | fsl,cpm-brg = <1>; | ||
158 | fsl,cpm-command = <0x00800000>; | ||
159 | linux,planetcore-label = "SCC1"; | ||
160 | }; | ||
161 | |||
162 | eth0: ethernet@11300 { | ||
163 | device_type = "network"; | ||
164 | compatible = "fsl,mpc8248-fcc-enet", | ||
165 | "fsl,cpm2-fcc-enet"; | ||
166 | reg = <0x11300 0x20 0x8400 0x100 0x11390 1>; | ||
167 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
168 | interrupts = <32 8>; | ||
169 | interrupt-parent = <&PIC>; | ||
170 | phy-handle = <&PHY0>; | ||
171 | linux,network-index = <0>; | ||
172 | fsl,cpm-command = <0x12000300>; | ||
173 | }; | ||
174 | |||
175 | eth1: ethernet@11320 { | ||
176 | device_type = "network"; | ||
177 | compatible = "fsl,mpc8248-fcc-enet", | ||
178 | "fsl,cpm2-fcc-enet"; | ||
179 | reg = <0x11320 0x20 0x8500 0x100 0x113b0 1>; | ||
180 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
181 | interrupts = <33 8>; | ||
182 | interrupt-parent = <&PIC>; | ||
183 | phy-handle = <&PHY1>; | ||
184 | linux,network-index = <1>; | ||
185 | fsl,cpm-command = <0x16200300>; | ||
186 | }; | ||
187 | |||
188 | usb@11b60 { | ||
189 | #address-cells = <1>; | ||
190 | #size-cells = <0>; | ||
191 | compatible = "fsl,mpc8248-usb", | ||
192 | "fsl,cpm2-usb"; | ||
193 | reg = <0x11b60 0x18 0x8b00 0x100>; | ||
194 | interrupt-parent = <&PIC>; | ||
195 | interrupts = <11 8>; | ||
196 | fsl,cpm-command = <0x2e600000>; | ||
197 | }; | ||
198 | }; | ||
199 | |||
200 | PIC: interrupt-controller@10c00 { | ||
201 | #interrupt-cells = <2>; | ||
202 | interrupt-controller; | ||
203 | reg = <0x10c00 0x80>; | ||
204 | compatible = "fsl,mpc8248-pic", "fsl,pq2-pic"; | ||
205 | }; | ||
206 | }; | ||
207 | }; | ||
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts index c5b6665a8209..9bcf2c92541f 100644 --- a/arch/powerpc/boot/dts/mpc8313erdb.dts +++ b/arch/powerpc/boot/dts/mpc8313erdb.dts | |||
@@ -45,10 +45,58 @@ | |||
45 | reg = <00000000 08000000>; // 128MB at 0 | 45 | reg = <00000000 08000000>; // 128MB at 0 |
46 | }; | 46 | }; |
47 | 47 | ||
48 | localbus@e0005000 { | ||
49 | #address-cells = <2>; | ||
50 | #size-cells = <1>; | ||
51 | compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus"; | ||
52 | reg = <e0005000 1000>; | ||
53 | interrupts = <d#77 8>; | ||
54 | interrupt-parent = <&ipic>; | ||
55 | |||
56 | // CS0 and CS1 are swapped when | ||
57 | // booting from nand, but the | ||
58 | // addresses are the same. | ||
59 | ranges = <0 0 fe000000 00800000 | ||
60 | 1 0 e2800000 00008000 | ||
61 | 2 0 f0000000 00020000 | ||
62 | 3 0 fa000000 00008000>; | ||
63 | |||
64 | flash@0,0 { | ||
65 | #address-cells = <1>; | ||
66 | #size-cells = <1>; | ||
67 | compatible = "cfi-flash"; | ||
68 | reg = <0 0 800000>; | ||
69 | bank-width = <2>; | ||
70 | device-width = <1>; | ||
71 | }; | ||
72 | |||
73 | nand@1,0 { | ||
74 | #address-cells = <1>; | ||
75 | #size-cells = <1>; | ||
76 | compatible = "fsl,mpc8313-fcm-nand", | ||
77 | "fsl,elbc-fcm-nand"; | ||
78 | reg = <1 0 2000>; | ||
79 | |||
80 | u-boot@0 { | ||
81 | reg = <0 100000>; | ||
82 | read-only; | ||
83 | }; | ||
84 | |||
85 | kernel@100000 { | ||
86 | reg = <100000 300000>; | ||
87 | }; | ||
88 | |||
89 | fs@400000 { | ||
90 | reg = <400000 1c00000>; | ||
91 | }; | ||
92 | }; | ||
93 | }; | ||
94 | |||
48 | soc8313@e0000000 { | 95 | soc8313@e0000000 { |
49 | #address-cells = <1>; | 96 | #address-cells = <1>; |
50 | #size-cells = <1>; | 97 | #size-cells = <1>; |
51 | device_type = "soc"; | 98 | device_type = "soc"; |
99 | compatible = "simple-bus"; | ||
52 | ranges = <0 e0000000 00100000>; | 100 | ranges = <0 e0000000 00100000>; |
53 | reg = <e0000000 00000200>; | 101 | reg = <e0000000 00000200>; |
54 | bus-frequency = <0>; | 102 | bus-frequency = <0>; |
@@ -92,7 +140,6 @@ | |||
92 | 140 | ||
93 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | 141 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ |
94 | usb@23000 { | 142 | usb@23000 { |
95 | device_type = "usb"; | ||
96 | compatible = "fsl-usb2-dr"; | 143 | compatible = "fsl-usb2-dr"; |
97 | reg = <23000 1000>; | 144 | reg = <23000 1000>; |
98 | #address-cells = <1>; | 145 | #address-cells = <1>; |
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts index 26ac467b10ea..690252456d3d 100644 --- a/arch/powerpc/boot/dts/mpc832x_mds.dts +++ b/arch/powerpc/boot/dts/mpc832x_mds.dts | |||
@@ -7,6 +7,18 @@ | |||
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 |
8 | * Free Software Foundation; either version 2 of the License, or (at your | 8 | * Free Software Foundation; either version 2 of the License, or (at your |
9 | * option) any later version. | 9 | * option) any later version. |
10 | |||
11 | * To enable external serial I/O on a Freescale MPC 8323 SYS/MDS board, do | ||
12 | * this: | ||
13 | * | ||
14 | * 1) On chip U61, lift (disconnect) pins 21 (TXD) and 22 (RXD) from the board. | ||
15 | * 2) Solder a wire from U61-21 to P19A-23. P19 is a grid of pins on the board | ||
16 | * next to the serial ports. | ||
17 | * 3) Solder a wire from U61-22 to P19K-22. | ||
18 | * | ||
19 | * Note that there's a typo in the schematic. The board labels the last column | ||
20 | * of pins "P19K", but in the schematic, that column is called "P19J". So if | ||
21 | * you're going by the schematic, the pin is called "P19J-K22". | ||
10 | */ | 22 | */ |
11 | 23 | ||
12 | / { | 24 | / { |
@@ -169,6 +181,23 @@ | |||
169 | 1 1e 1 0 1 0 /* TX_EN */ | 181 | 1 1e 1 0 1 0 /* TX_EN */ |
170 | 1 1f 2 0 1 0>;/* CRS */ | 182 | 1 1f 2 0 1 0>;/* CRS */ |
171 | }; | 183 | }; |
184 | pio5: ucc_pin@05 { | ||
185 | pio-map = < | ||
186 | /* | ||
187 | * open has | ||
188 | * port pin dir drain sel irq | ||
189 | */ | ||
190 | 2 0 1 0 2 0 /* TxD5 */ | ||
191 | 2 8 2 0 2 0 /* RxD5 */ | ||
192 | |||
193 | 2 1d 2 0 0 0 /* CTS5 */ | ||
194 | 2 1f 1 0 2 0 /* RTS5 */ | ||
195 | |||
196 | 2 18 2 0 0 0 /* CD */ | ||
197 | |||
198 | >; | ||
199 | }; | ||
200 | |||
172 | }; | 201 | }; |
173 | }; | 202 | }; |
174 | 203 | ||
@@ -176,6 +205,7 @@ | |||
176 | #address-cells = <1>; | 205 | #address-cells = <1>; |
177 | #size-cells = <1>; | 206 | #size-cells = <1>; |
178 | device_type = "qe"; | 207 | device_type = "qe"; |
208 | compatible = "fsl,qe"; | ||
179 | model = "QE"; | 209 | model = "QE"; |
180 | ranges = <0 e0100000 00100000>; | 210 | ranges = <0 e0100000 00100000>; |
181 | reg = <e0100000 480>; | 211 | reg = <e0100000 480>; |
@@ -210,7 +240,6 @@ | |||
210 | }; | 240 | }; |
211 | 241 | ||
212 | usb@6c0 { | 242 | usb@6c0 { |
213 | device_type = "usb"; | ||
214 | compatible = "qe_udc"; | 243 | compatible = "qe_udc"; |
215 | reg = <6c0 40 8B00 100>; | 244 | reg = <6c0 40 8B00 100>; |
216 | interrupts = <b>; | 245 | interrupts = <b>; |
@@ -250,6 +279,26 @@ | |||
250 | pio-handle = < &pio4 >; | 279 | pio-handle = < &pio4 >; |
251 | }; | 280 | }; |
252 | 281 | ||
282 | ucc@2400 { | ||
283 | device_type = "serial"; | ||
284 | compatible = "ucc_uart"; | ||
285 | model = "UCC"; | ||
286 | device-id = <5>; /* The UCC number, 1-7*/ | ||
287 | port-number = <0>; /* Which ttyQEx device */ | ||
288 | soft-uart; /* We need Soft-UART */ | ||
289 | reg = <2400 200>; | ||
290 | interrupts = <28>; /* From Table 18-12 */ | ||
291 | interrupt-parent = < &qeic >; | ||
292 | /* | ||
293 | * For Soft-UART, we need to set TX to 1X, which | ||
294 | * means specifying separate clock sources. | ||
295 | */ | ||
296 | rx-clock-name = "brg5"; | ||
297 | tx-clock-name = "brg6"; | ||
298 | pio-handle = < &pio5 >; | ||
299 | }; | ||
300 | |||
301 | |||
253 | mdio@2320 { | 302 | mdio@2320 { |
254 | #address-cells = <1>; | 303 | #address-cells = <1>; |
255 | #size-cells = <0>; | 304 | #size-cells = <0>; |
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts index e354f2634246..04b8da4deb60 100644 --- a/arch/powerpc/boot/dts/mpc8349emitx.dts +++ b/arch/powerpc/boot/dts/mpc8349emitx.dts | |||
@@ -91,7 +91,6 @@ | |||
91 | }; | 91 | }; |
92 | 92 | ||
93 | usb@22000 { | 93 | usb@22000 { |
94 | device_type = "usb"; | ||
95 | compatible = "fsl-usb2-mph"; | 94 | compatible = "fsl-usb2-mph"; |
96 | reg = <22000 1000>; | 95 | reg = <22000 1000>; |
97 | #address-cells = <1>; | 96 | #address-cells = <1>; |
@@ -103,7 +102,6 @@ | |||
103 | }; | 102 | }; |
104 | 103 | ||
105 | usb@23000 { | 104 | usb@23000 { |
106 | device_type = "usb"; | ||
107 | compatible = "fsl-usb2-dr"; | 105 | compatible = "fsl-usb2-dr"; |
108 | reg = <23000 1000>; | 106 | reg = <23000 1000>; |
109 | #address-cells = <1>; | 107 | #address-cells = <1>; |
@@ -127,14 +125,6 @@ | |||
127 | reg = <1c>; | 125 | reg = <1c>; |
128 | device_type = "ethernet-phy"; | 126 | device_type = "ethernet-phy"; |
129 | }; | 127 | }; |
130 | |||
131 | /* Vitesse 7385 */ | ||
132 | phy1f: ethernet-phy@1f { | ||
133 | interrupt-parent = < &ipic >; | ||
134 | interrupts = <12 8>; | ||
135 | reg = <1f>; | ||
136 | device_type = "ethernet-phy"; | ||
137 | }; | ||
138 | }; | 128 | }; |
139 | 129 | ||
140 | enet0: ethernet@24000 { | 130 | enet0: ethernet@24000 { |
@@ -159,7 +149,8 @@ | |||
159 | local-mac-address = [ 00 00 00 00 00 00 ]; | 149 | local-mac-address = [ 00 00 00 00 00 00 ]; |
160 | interrupts = <23 8 24 8 25 8>; | 150 | interrupts = <23 8 24 8 25 8>; |
161 | interrupt-parent = < &ipic >; | 151 | interrupt-parent = < &ipic >; |
162 | phy-handle = < &phy1f >; | 152 | /* Vitesse 7385 isn't on the MDIO bus */ |
153 | fixed-link = <1 1 d#1000 0 0>; | ||
163 | linux,network-index = <1>; | 154 | linux,network-index = <1>; |
164 | }; | 155 | }; |
165 | 156 | ||
@@ -253,6 +244,21 @@ | |||
253 | device_type = "pci"; | 244 | device_type = "pci"; |
254 | }; | 245 | }; |
255 | 246 | ||
247 | localbus@e0005000 { | ||
248 | #address-cells = <2>; | ||
249 | #size-cells = <1>; | ||
250 | compatible = "fsl,mpc8349e-localbus", | ||
251 | "fsl,pq2pro-localbus"; | ||
252 | reg = <e0005000 d8>; | ||
253 | ranges = <3 0 f0000000 210>; | ||
256 | 254 | ||
257 | 255 | pata@3,0 { | |
256 | compatible = "fsl,mpc8349emitx-pata", "ata-generic"; | ||
257 | reg = <3 0 10 3 20c 4>; | ||
258 | reg-shift = <1>; | ||
259 | pio-mode = <6>; | ||
260 | interrupts = <17 8>; | ||
261 | interrupt-parent = <&ipic>; | ||
262 | }; | ||
263 | }; | ||
258 | }; | 264 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts index ebdf0b750086..a06ff92cf0b1 100644 --- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts +++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts | |||
@@ -89,7 +89,6 @@ | |||
89 | }; | 89 | }; |
90 | 90 | ||
91 | usb@23000 { | 91 | usb@23000 { |
92 | device_type = "usb"; | ||
93 | compatible = "fsl-usb2-dr"; | 92 | compatible = "fsl-usb2-dr"; |
94 | reg = <23000 1000>; | 93 | reg = <23000 1000>; |
95 | #address-cells = <1>; | 94 | #address-cells = <1>; |
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts index 0ba13ebcea68..4120e92fcecf 100644 --- a/arch/powerpc/boot/dts/mpc834x_mds.dts +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts | |||
@@ -104,7 +104,6 @@ | |||
104 | /* phy type (ULPI or SERIAL) are only types supportted for MPH */ | 104 | /* phy type (ULPI or SERIAL) are only types supportted for MPH */ |
105 | /* port = 0 or 1 */ | 105 | /* port = 0 or 1 */ |
106 | usb@22000 { | 106 | usb@22000 { |
107 | device_type = "usb"; | ||
108 | compatible = "fsl-usb2-mph"; | 107 | compatible = "fsl-usb2-mph"; |
109 | reg = <22000 1000>; | 108 | reg = <22000 1000>; |
110 | #address-cells = <1>; | 109 | #address-cells = <1>; |
@@ -116,7 +115,6 @@ | |||
116 | }; | 115 | }; |
117 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | 116 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ |
118 | usb@23000 { | 117 | usb@23000 { |
119 | device_type = "usb"; | ||
120 | compatible = "fsl-usb2-dr"; | 118 | compatible = "fsl-usb2-dr"; |
121 | reg = <23000 1000>; | 119 | reg = <23000 1000>; |
122 | #address-cells = <1>; | 120 | #address-cells = <1>; |
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts index fd841b2fddd0..2181d2cdbff2 100644 --- a/arch/powerpc/boot/dts/mpc836x_mds.dts +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts | |||
@@ -241,7 +241,6 @@ | |||
241 | }; | 241 | }; |
242 | 242 | ||
243 | usb@6c0 { | 243 | usb@6c0 { |
244 | device_type = "usb"; | ||
245 | compatible = "qe_udc"; | 244 | compatible = "qe_udc"; |
246 | reg = <6c0 40 8B00 100>; | 245 | reg = <6c0 40 8B00 100>; |
247 | interrupts = <b>; | 246 | interrupts = <b>; |
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts new file mode 100644 index 000000000000..98b46065f45a --- /dev/null +++ b/arch/powerpc/boot/dts/mpc8377_mds.dts | |||
@@ -0,0 +1,279 @@ | |||
1 | /* | ||
2 | * MPC8377E MDS Device Tree Source | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
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 | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | |||
14 | / { | ||
15 | model = "fsl,mpc8377emds"; | ||
16 | compatible = "fsl,mpc8377emds","fsl,mpc837xmds"; | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <1>; | ||
19 | |||
20 | aliases { | ||
21 | ethernet0 = &enet0; | ||
22 | ethernet1 = &enet1; | ||
23 | serial0 = &serial0; | ||
24 | serial1 = &serial1; | ||
25 | pci0 = &pci0; | ||
26 | }; | ||
27 | |||
28 | cpus { | ||
29 | #address-cells = <1>; | ||
30 | #size-cells = <0>; | ||
31 | |||
32 | PowerPC,8377@0 { | ||
33 | device_type = "cpu"; | ||
34 | reg = <0>; | ||
35 | d-cache-line-size = <0x20>; | ||
36 | i-cache-line-size = <0x20>; | ||
37 | d-cache-size = <0x8000>; // L1, 32K | ||
38 | i-cache-size = <0x8000>; // L1, 32K | ||
39 | timebase-frequency = <0>; | ||
40 | bus-frequency = <0>; | ||
41 | clock-frequency = <0>; | ||
42 | }; | ||
43 | }; | ||
44 | |||
45 | memory { | ||
46 | device_type = "memory"; | ||
47 | reg = <0x00000000 0x20000000>; // 512MB at 0 | ||
48 | }; | ||
49 | |||
50 | soc@e0000000 { | ||
51 | #address-cells = <1>; | ||
52 | #size-cells = <1>; | ||
53 | device_type = "soc"; | ||
54 | ranges = <0x0 0xe0000000 0x00100000>; | ||
55 | reg = <0xe0000000 0x00000200>; | ||
56 | bus-frequency = <0>; | ||
57 | |||
58 | wdt@200 { | ||
59 | compatible = "mpc83xx_wdt"; | ||
60 | reg = <0x200 0x100>; | ||
61 | }; | ||
62 | |||
63 | i2c@3000 { | ||
64 | #address-cells = <1>; | ||
65 | #size-cells = <0>; | ||
66 | cell-index = <0>; | ||
67 | compatible = "fsl-i2c"; | ||
68 | reg = <0x3000 0x100>; | ||
69 | interrupts = <0xe 0x8>; | ||
70 | interrupt-parent = < &ipic >; | ||
71 | dfsrr; | ||
72 | }; | ||
73 | |||
74 | i2c@3100 { | ||
75 | #address-cells = <1>; | ||
76 | #size-cells = <0>; | ||
77 | cell-index = <1>; | ||
78 | compatible = "fsl-i2c"; | ||
79 | reg = <0x3100 0x100>; | ||
80 | interrupts = <0xf 0x8>; | ||
81 | interrupt-parent = < &ipic >; | ||
82 | dfsrr; | ||
83 | }; | ||
84 | |||
85 | spi@7000 { | ||
86 | compatible = "fsl_spi"; | ||
87 | reg = <0x7000 0x1000>; | ||
88 | interrupts = <0x10 0x8>; | ||
89 | interrupt-parent = < &ipic >; | ||
90 | mode = "cpu"; | ||
91 | }; | ||
92 | |||
93 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
94 | usb@23000 { | ||
95 | compatible = "fsl-usb2-dr"; | ||
96 | reg = <0x23000 0x1000>; | ||
97 | #address-cells = <1>; | ||
98 | #size-cells = <0>; | ||
99 | interrupt-parent = < &ipic >; | ||
100 | interrupts = <0x26 0x8>; | ||
101 | phy_type = "utmi_wide"; | ||
102 | }; | ||
103 | |||
104 | mdio@24520 { | ||
105 | #address-cells = <1>; | ||
106 | #size-cells = <0>; | ||
107 | compatible = "fsl,gianfar-mdio"; | ||
108 | reg = <0x24520 0x20>; | ||
109 | phy2: ethernet-phy@2 { | ||
110 | interrupt-parent = < &ipic >; | ||
111 | interrupts = <0x11 0x8>; | ||
112 | reg = <2>; | ||
113 | device_type = "ethernet-phy"; | ||
114 | }; | ||
115 | phy3: ethernet-phy@3 { | ||
116 | interrupt-parent = < &ipic >; | ||
117 | interrupts = <0x12 0x8>; | ||
118 | reg = <3>; | ||
119 | device_type = "ethernet-phy"; | ||
120 | }; | ||
121 | }; | ||
122 | |||
123 | enet0: ethernet@24000 { | ||
124 | cell-index = <0>; | ||
125 | device_type = "network"; | ||
126 | model = "eTSEC"; | ||
127 | compatible = "gianfar"; | ||
128 | reg = <0x24000 0x1000>; | ||
129 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
130 | interrupts = <0x20 0x8 0x21 0x8 0x22 0x8>; | ||
131 | phy-connection-type = "mii"; | ||
132 | interrupt-parent = < &ipic >; | ||
133 | phy-handle = < &phy2 >; | ||
134 | }; | ||
135 | |||
136 | enet1: ethernet@25000 { | ||
137 | cell-index = <1>; | ||
138 | device_type = "network"; | ||
139 | model = "eTSEC"; | ||
140 | compatible = "gianfar"; | ||
141 | reg = <0x25000 0x1000>; | ||
142 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
143 | interrupts = <0x23 0x8 0x24 0x8 0x25 0x8>; | ||
144 | phy-connection-type = "mii"; | ||
145 | interrupt-parent = < &ipic >; | ||
146 | phy-handle = < &phy3 >; | ||
147 | }; | ||
148 | |||
149 | serial0: serial@4500 { | ||
150 | cell-index = <0>; | ||
151 | device_type = "serial"; | ||
152 | compatible = "ns16550"; | ||
153 | reg = <0x4500 0x100>; | ||
154 | clock-frequency = <0>; | ||
155 | interrupts = <0x9 0x8>; | ||
156 | interrupt-parent = < &ipic >; | ||
157 | }; | ||
158 | |||
159 | serial1: serial@4600 { | ||
160 | cell-index = <1>; | ||
161 | device_type = "serial"; | ||
162 | compatible = "ns16550"; | ||
163 | reg = <0x4600 0x100>; | ||
164 | clock-frequency = <0>; | ||
165 | interrupts = <0xa 0x8>; | ||
166 | interrupt-parent = < &ipic >; | ||
167 | }; | ||
168 | |||
169 | crypto@30000 { | ||
170 | model = "SEC3"; | ||
171 | compatible = "talitos"; | ||
172 | reg = <0x30000 0x10000>; | ||
173 | interrupts = <0xb 0x8>; | ||
174 | interrupt-parent = < &ipic >; | ||
175 | /* Rev. 3.0 geometry */ | ||
176 | num-channels = <4>; | ||
177 | channel-fifo-len = <0x18>; | ||
178 | exec-units-mask = <0x000001fe>; | ||
179 | descriptor-types-mask = <0x03ab0ebf>; | ||
180 | }; | ||
181 | |||
182 | sdhc@2e000 { | ||
183 | model = "eSDHC"; | ||
184 | compatible = "fsl,esdhc"; | ||
185 | reg = <0x2e000 0x1000>; | ||
186 | interrupts = <0x2a 0x8>; | ||
187 | interrupt-parent = < &ipic >; | ||
188 | }; | ||
189 | |||
190 | sata@18000 { | ||
191 | compatible = "fsl,mpc8379-sata"; | ||
192 | reg = <0x18000 0x1000>; | ||
193 | interrupts = <0x2c 0x8>; | ||
194 | interrupt-parent = < &ipic >; | ||
195 | }; | ||
196 | |||
197 | sata@19000 { | ||
198 | compatible = "fsl,mpc8379-sata"; | ||
199 | reg = <0x19000 0x1000>; | ||
200 | interrupts = <0x2d 0x8>; | ||
201 | interrupt-parent = < &ipic >; | ||
202 | }; | ||
203 | |||
204 | /* IPIC | ||
205 | * interrupts cell = <intr #, sense> | ||
206 | * sense values match linux IORESOURCE_IRQ_* defines: | ||
207 | * sense == 8: Level, low assertion | ||
208 | * sense == 2: Edge, high-to-low change | ||
209 | */ | ||
210 | ipic: pic@700 { | ||
211 | compatible = "fsl,ipic"; | ||
212 | interrupt-controller; | ||
213 | #address-cells = <0>; | ||
214 | #interrupt-cells = <2>; | ||
215 | reg = <0x700 0x100>; | ||
216 | }; | ||
217 | }; | ||
218 | |||
219 | pci0: pci@e0008500 { | ||
220 | cell-index = <0>; | ||
221 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; | ||
222 | interrupt-map = < | ||
223 | |||
224 | /* IDSEL 0x11 */ | ||
225 | 0x8800 0x0 0x0 0x1 &ipic 0x14 0x8 | ||
226 | 0x8800 0x0 0x0 0x2 &ipic 0x15 0x8 | ||
227 | 0x8800 0x0 0x0 0x3 &ipic 0x16 0x8 | ||
228 | 0x8800 0x0 0x0 0x4 &ipic 0x17 0x8 | ||
229 | |||
230 | /* IDSEL 0x12 */ | ||
231 | 0x9000 0x0 0x0 0x1 &ipic 0x16 0x8 | ||
232 | 0x9000 0x0 0x0 0x2 &ipic 0x17 0x8 | ||
233 | 0x9000 0x0 0x0 0x3 &ipic 0x14 0x8 | ||
234 | 0x9000 0x0 0x0 0x4 &ipic 0x15 0x8 | ||
235 | |||
236 | /* IDSEL 0x13 */ | ||
237 | 0x9800 0x0 0x0 0x1 &ipic 0x17 0x8 | ||
238 | 0x9800 0x0 0x0 0x2 &ipic 0x14 0x8 | ||
239 | 0x9800 0x0 0x0 0x3 &ipic 0x15 0x8 | ||
240 | 0x9800 0x0 0x0 0x4 &ipic 0x16 0x8 | ||
241 | |||
242 | /* IDSEL 0x15 */ | ||
243 | 0xa800 0x0 0x0 0x1 &ipic 0x14 0x8 | ||
244 | 0xa800 0x0 0x0 0x2 &ipic 0x15 0x8 | ||
245 | 0xa800 0x0 0x0 0x3 &ipic 0x16 0x8 | ||
246 | 0xa800 0x0 0x0 0x4 &ipic 0x17 0x8 | ||
247 | |||
248 | /* IDSEL 0x16 */ | ||
249 | 0xb000 0x0 0x0 0x1 &ipic 0x17 0x8 | ||
250 | 0xb000 0x0 0x0 0x2 &ipic 0x14 0x8 | ||
251 | 0xb000 0x0 0x0 0x3 &ipic 0x15 0x8 | ||
252 | 0xb000 0x0 0x0 0x4 &ipic 0x16 0x8 | ||
253 | |||
254 | /* IDSEL 0x17 */ | ||
255 | 0xb800 0x0 0x0 0x1 &ipic 0x16 0x8 | ||
256 | 0xb800 0x0 0x0 0x2 &ipic 0x17 0x8 | ||
257 | 0xb800 0x0 0x0 0x3 &ipic 0x14 0x8 | ||
258 | 0xb800 0x0 0x0 0x4 &ipic 0x15 0x8 | ||
259 | |||
260 | /* IDSEL 0x18 */ | ||
261 | 0xc000 0x0 0x0 0x1 &ipic 0x15 0x8 | ||
262 | 0xc000 0x0 0x0 0x2 &ipic 0x16 0x8 | ||
263 | 0xc000 0x0 0x0 0x3 &ipic 0x17 0x8 | ||
264 | 0xc000 0x0 0x0 0x4 &ipic 0x14 0x8>; | ||
265 | interrupt-parent = < &ipic >; | ||
266 | interrupts = <0x42 0x8>; | ||
267 | bus-range = <0 0>; | ||
268 | ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000 | ||
269 | 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000 | ||
270 | 0x01000000 0x0 0x00000000 0xe0300000 0x0 0x00100000>; | ||
271 | clock-frequency = <0>; | ||
272 | #interrupt-cells = <1>; | ||
273 | #size-cells = <2>; | ||
274 | #address-cells = <3>; | ||
275 | reg = <0xe0008500 0x100>; | ||
276 | compatible = "fsl,mpc8349-pci"; | ||
277 | device_type = "pci"; | ||
278 | }; | ||
279 | }; | ||
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts new file mode 100644 index 000000000000..c117a6a3a8e6 --- /dev/null +++ b/arch/powerpc/boot/dts/mpc8378_mds.dts | |||
@@ -0,0 +1,265 @@ | |||
1 | /* | ||
2 | * MPC8378E MDS Device Tree Source | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
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 | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | |||
14 | / { | ||
15 | model = "fsl,mpc8378emds"; | ||
16 | compatible = "fsl,mpc8378emds","fsl,mpc837xmds"; | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <1>; | ||
19 | |||
20 | aliases { | ||
21 | ethernet0 = &enet0; | ||
22 | ethernet1 = &enet1; | ||
23 | serial0 = &serial0; | ||
24 | serial1 = &serial1; | ||
25 | pci0 = &pci0; | ||
26 | }; | ||
27 | |||
28 | cpus { | ||
29 | #address-cells = <1>; | ||
30 | #size-cells = <0>; | ||
31 | |||
32 | PowerPC,8378@0 { | ||
33 | device_type = "cpu"; | ||
34 | reg = <0>; | ||
35 | d-cache-line-size = <0x20>; | ||
36 | i-cache-line-size = <0x20>; | ||
37 | d-cache-size = <0x8000>; // L1, 32K | ||
38 | i-cache-size = <0x8000>; // L1, 32K | ||
39 | timebase-frequency = <0>; | ||
40 | bus-frequency = <0>; | ||
41 | clock-frequency = <0>; | ||
42 | }; | ||
43 | }; | ||
44 | |||
45 | memory { | ||
46 | device_type = "memory"; | ||
47 | reg = <0x00000000 0x20000000>; // 512MB at 0 | ||
48 | }; | ||
49 | |||
50 | soc@e0000000 { | ||
51 | #address-cells = <1>; | ||
52 | #size-cells = <1>; | ||
53 | device_type = "soc"; | ||
54 | ranges = <0x0 0xe0000000 0x00100000>; | ||
55 | reg = <0xe0000000 0x00000200>; | ||
56 | bus-frequency = <0>; | ||
57 | |||
58 | wdt@200 { | ||
59 | compatible = "mpc83xx_wdt"; | ||
60 | reg = <0x200 0x100>; | ||
61 | }; | ||
62 | |||
63 | i2c@3000 { | ||
64 | #address-cells = <1>; | ||
65 | #size-cells = <0>; | ||
66 | cell-index = <0>; | ||
67 | compatible = "fsl-i2c"; | ||
68 | reg = <0x3000 0x100>; | ||
69 | interrupts = <0xe 0x8>; | ||
70 | interrupt-parent = < &ipic >; | ||
71 | dfsrr; | ||
72 | }; | ||
73 | |||
74 | i2c@3100 { | ||
75 | #address-cells = <1>; | ||
76 | #size-cells = <0>; | ||
77 | cell-index = <1>; | ||
78 | compatible = "fsl-i2c"; | ||
79 | reg = <0x3100 0x100>; | ||
80 | interrupts = <0xf 0x8>; | ||
81 | interrupt-parent = < &ipic >; | ||
82 | dfsrr; | ||
83 | }; | ||
84 | |||
85 | spi@7000 { | ||
86 | compatible = "fsl_spi"; | ||
87 | reg = <0x7000 0x1000>; | ||
88 | interrupts = <0x10 0x8>; | ||
89 | interrupt-parent = < &ipic >; | ||
90 | mode = "cpu"; | ||
91 | }; | ||
92 | |||
93 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
94 | usb@23000 { | ||
95 | compatible = "fsl-usb2-dr"; | ||
96 | reg = <0x23000 0x1000>; | ||
97 | #address-cells = <1>; | ||
98 | #size-cells = <0>; | ||
99 | interrupt-parent = < &ipic >; | ||
100 | interrupts = <0x26 0x8>; | ||
101 | phy_type = "utmi_wide"; | ||
102 | }; | ||
103 | |||
104 | mdio@24520 { | ||
105 | #address-cells = <1>; | ||
106 | #size-cells = <0>; | ||
107 | compatible = "fsl,gianfar-mdio"; | ||
108 | reg = <0x24520 0x20>; | ||
109 | phy2: ethernet-phy@2 { | ||
110 | interrupt-parent = < &ipic >; | ||
111 | interrupts = <0x11 0x8>; | ||
112 | reg = <2>; | ||
113 | device_type = "ethernet-phy"; | ||
114 | }; | ||
115 | phy3: ethernet-phy@3 { | ||
116 | interrupt-parent = < &ipic >; | ||
117 | interrupts = <0x12 0x8>; | ||
118 | reg = <3>; | ||
119 | device_type = "ethernet-phy"; | ||
120 | }; | ||
121 | }; | ||
122 | |||
123 | enet0: ethernet@24000 { | ||
124 | cell-index = <0>; | ||
125 | device_type = "network"; | ||
126 | model = "eTSEC"; | ||
127 | compatible = "gianfar"; | ||
128 | reg = <0x24000 0x1000>; | ||
129 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
130 | interrupts = <0x20 0x8 0x21 0x8 0x22 0x8>; | ||
131 | phy-connection-type = "mii"; | ||
132 | interrupt-parent = < &ipic >; | ||
133 | phy-handle = < &phy2 >; | ||
134 | }; | ||
135 | |||
136 | enet1: ethernet@25000 { | ||
137 | cell-index = <1>; | ||
138 | device_type = "network"; | ||
139 | model = "eTSEC"; | ||
140 | compatible = "gianfar"; | ||
141 | reg = <0x25000 0x1000>; | ||
142 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
143 | interrupts = <0x23 0x8 0x24 0x8 0x25 0x8>; | ||
144 | phy-connection-type = "mii"; | ||
145 | interrupt-parent = < &ipic >; | ||
146 | phy-handle = < &phy3 >; | ||
147 | }; | ||
148 | |||
149 | serial0: serial@4500 { | ||
150 | cell-index = <0>; | ||
151 | device_type = "serial"; | ||
152 | compatible = "ns16550"; | ||
153 | reg = <0x4500 0x100>; | ||
154 | clock-frequency = <0>; | ||
155 | interrupts = <0x9 0x8>; | ||
156 | interrupt-parent = < &ipic >; | ||
157 | }; | ||
158 | |||
159 | serial1: serial@4600 { | ||
160 | cell-index = <1>; | ||
161 | device_type = "serial"; | ||
162 | compatible = "ns16550"; | ||
163 | reg = <0x4600 0x100>; | ||
164 | clock-frequency = <0>; | ||
165 | interrupts = <0xa 0x8>; | ||
166 | interrupt-parent = < &ipic >; | ||
167 | }; | ||
168 | |||
169 | crypto@30000 { | ||
170 | model = "SEC3"; | ||
171 | compatible = "talitos"; | ||
172 | reg = <0x30000 0x10000>; | ||
173 | interrupts = <0xb 0x8>; | ||
174 | interrupt-parent = < &ipic >; | ||
175 | /* Rev. 3.0 geometry */ | ||
176 | num-channels = <4>; | ||
177 | channel-fifo-len = <0x18>; | ||
178 | exec-units-mask = <0x000001fe>; | ||
179 | descriptor-types-mask = <0x03ab0ebf>; | ||
180 | }; | ||
181 | |||
182 | sdhc@2e000 { | ||
183 | model = "eSDHC"; | ||
184 | compatible = "fsl,esdhc"; | ||
185 | reg = <0x2e000 0x1000>; | ||
186 | interrupts = <0x2a 0x8>; | ||
187 | interrupt-parent = < &ipic >; | ||
188 | }; | ||
189 | |||
190 | /* IPIC | ||
191 | * interrupts cell = <intr #, sense> | ||
192 | * sense values match linux IORESOURCE_IRQ_* defines: | ||
193 | * sense == 8: Level, low assertion | ||
194 | * sense == 2: Edge, high-to-low change | ||
195 | */ | ||
196 | ipic: pic@700 { | ||
197 | compatible = "fsl,ipic"; | ||
198 | interrupt-controller; | ||
199 | #address-cells = <0>; | ||
200 | #interrupt-cells = <2>; | ||
201 | reg = <0x700 0x100>; | ||
202 | }; | ||
203 | }; | ||
204 | |||
205 | pci0: pci@e0008500 { | ||
206 | cell-index = <0>; | ||
207 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; | ||
208 | interrupt-map = < | ||
209 | |||
210 | /* IDSEL 0x11 */ | ||
211 | 0x8800 0x0 0x0 0x1 &ipic 0x14 0x8 | ||
212 | 0x8800 0x0 0x0 0x2 &ipic 0x15 0x8 | ||
213 | 0x8800 0x0 0x0 0x3 &ipic 0x16 0x8 | ||
214 | 0x8800 0x0 0x0 0x4 &ipic 0x17 0x8 | ||
215 | |||
216 | /* IDSEL 0x12 */ | ||
217 | 0x9000 0x0 0x0 0x1 &ipic 0x16 0x8 | ||
218 | 0x9000 0x0 0x0 0x2 &ipic 0x17 0x8 | ||
219 | 0x9000 0x0 0x0 0x3 &ipic 0x14 0x8 | ||
220 | 0x9000 0x0 0x0 0x4 &ipic 0x15 0x8 | ||
221 | |||
222 | /* IDSEL 0x13 */ | ||
223 | 0x9800 0x0 0x0 0x1 &ipic 0x17 0x8 | ||
224 | 0x9800 0x0 0x0 0x2 &ipic 0x14 0x8 | ||
225 | 0x9800 0x0 0x0 0x3 &ipic 0x15 0x8 | ||
226 | 0x9800 0x0 0x0 0x4 &ipic 0x16 0x8 | ||
227 | |||
228 | /* IDSEL 0x15 */ | ||
229 | 0xa800 0x0 0x0 0x1 &ipic 0x14 0x8 | ||
230 | 0xa800 0x0 0x0 0x2 &ipic 0x15 0x8 | ||
231 | 0xa800 0x0 0x0 0x3 &ipic 0x16 0x8 | ||
232 | 0xa800 0x0 0x0 0x4 &ipic 0x17 0x8 | ||
233 | |||
234 | /* IDSEL 0x16 */ | ||
235 | 0xb000 0x0 0x0 0x1 &ipic 0x17 0x8 | ||
236 | 0xb000 0x0 0x0 0x2 &ipic 0x14 0x8 | ||
237 | 0xb000 0x0 0x0 0x3 &ipic 0x15 0x8 | ||
238 | 0xb000 0x0 0x0 0x4 &ipic 0x16 0x8 | ||
239 | |||
240 | /* IDSEL 0x17 */ | ||
241 | 0xb800 0x0 0x0 0x1 &ipic 0x16 0x8 | ||
242 | 0xb800 0x0 0x0 0x2 &ipic 0x17 0x8 | ||
243 | 0xb800 0x0 0x0 0x3 &ipic 0x14 0x8 | ||
244 | 0xb800 0x0 0x0 0x4 &ipic 0x15 0x8 | ||
245 | |||
246 | /* IDSEL 0x18 */ | ||
247 | 0xc000 0x0 0x0 0x1 &ipic 0x15 0x8 | ||
248 | 0xc000 0x0 0x0 0x2 &ipic 0x16 0x8 | ||
249 | 0xc000 0x0 0x0 0x3 &ipic 0x17 0x8 | ||
250 | 0xc000 0x0 0x0 0x4 &ipic 0x14 0x8>; | ||
251 | interrupt-parent = < &ipic >; | ||
252 | interrupts = <0x42 0x8>; | ||
253 | bus-range = <0 0>; | ||
254 | ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000 | ||
255 | 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000 | ||
256 | 0x01000000 0x0 0x00000000 0xe0300000 0x0 0x00100000>; | ||
257 | clock-frequency = <0>; | ||
258 | #interrupt-cells = <1>; | ||
259 | #size-cells = <2>; | ||
260 | #address-cells = <3>; | ||
261 | reg = <0xe0008500 0x100>; | ||
262 | compatible = "fsl,mpc8349-pci"; | ||
263 | device_type = "pci"; | ||
264 | }; | ||
265 | }; | ||
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts new file mode 100644 index 000000000000..fc3ba79fb684 --- /dev/null +++ b/arch/powerpc/boot/dts/mpc8379_mds.dts | |||
@@ -0,0 +1,293 @@ | |||
1 | /* | ||
2 | * MPC8379E MDS Device Tree Source | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
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 | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | |||
14 | / { | ||
15 | model = "fsl,mpc8379emds"; | ||
16 | compatible = "fsl,mpc8379emds","fsl,mpc837xmds"; | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <1>; | ||
19 | |||
20 | aliases { | ||
21 | ethernet0 = &enet0; | ||
22 | ethernet1 = &enet1; | ||
23 | serial0 = &serial0; | ||
24 | serial1 = &serial1; | ||
25 | pci0 = &pci0; | ||
26 | }; | ||
27 | |||
28 | cpus { | ||
29 | #address-cells = <1>; | ||
30 | #size-cells = <0>; | ||
31 | |||
32 | PowerPC,8379@0 { | ||
33 | device_type = "cpu"; | ||
34 | reg = <0>; | ||
35 | d-cache-line-size = <0x20>; | ||
36 | i-cache-line-size = <0x20>; | ||
37 | d-cache-size = <0x8000>; // L1, 32K | ||
38 | i-cache-size = <0x8000>; // L1, 32K | ||
39 | timebase-frequency = <0>; | ||
40 | bus-frequency = <0>; | ||
41 | clock-frequency = <0>; | ||
42 | }; | ||
43 | }; | ||
44 | |||
45 | memory { | ||
46 | device_type = "memory"; | ||
47 | reg = <0x00000000 0x20000000>; // 512MB at 0 | ||
48 | }; | ||
49 | |||
50 | soc@e0000000 { | ||
51 | #address-cells = <1>; | ||
52 | #size-cells = <1>; | ||
53 | device_type = "soc"; | ||
54 | ranges = <0x0 0xe0000000 0x00100000>; | ||
55 | reg = <0xe0000000 0x00000200>; | ||
56 | bus-frequency = <0>; | ||
57 | |||
58 | wdt@200 { | ||
59 | compatible = "mpc83xx_wdt"; | ||
60 | reg = <0x200 0x100>; | ||
61 | }; | ||
62 | |||
63 | i2c@3000 { | ||
64 | #address-cells = <1>; | ||
65 | #size-cells = <0>; | ||
66 | cell-index = <0>; | ||
67 | compatible = "fsl-i2c"; | ||
68 | reg = <0x3000 0x100>; | ||
69 | interrupts = <0xe 0x8>; | ||
70 | interrupt-parent = < &ipic >; | ||
71 | dfsrr; | ||
72 | }; | ||
73 | |||
74 | i2c@3100 { | ||
75 | #address-cells = <1>; | ||
76 | #size-cells = <0>; | ||
77 | cell-index = <1>; | ||
78 | compatible = "fsl-i2c"; | ||
79 | reg = <0x3100 0x100>; | ||
80 | interrupts = <0xf 0x8>; | ||
81 | interrupt-parent = < &ipic >; | ||
82 | dfsrr; | ||
83 | }; | ||
84 | |||
85 | spi@7000 { | ||
86 | compatible = "fsl_spi"; | ||
87 | reg = <0x7000 0x1000>; | ||
88 | interrupts = <0x10 0x8>; | ||
89 | interrupt-parent = < &ipic >; | ||
90 | mode = "cpu"; | ||
91 | }; | ||
92 | |||
93 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
94 | usb@23000 { | ||
95 | compatible = "fsl-usb2-dr"; | ||
96 | reg = <0x23000 0x1000>; | ||
97 | #address-cells = <1>; | ||
98 | #size-cells = <0>; | ||
99 | interrupt-parent = < &ipic >; | ||
100 | interrupts = <0x26 0x8>; | ||
101 | phy_type = "utmi_wide"; | ||
102 | }; | ||
103 | |||
104 | mdio@24520 { | ||
105 | #address-cells = <1>; | ||
106 | #size-cells = <0>; | ||
107 | compatible = "fsl,gianfar-mdio"; | ||
108 | reg = <0x24520 0x20>; | ||
109 | phy2: ethernet-phy@2 { | ||
110 | interrupt-parent = < &ipic >; | ||
111 | interrupts = <0x11 0x8>; | ||
112 | reg = <2>; | ||
113 | device_type = "ethernet-phy"; | ||
114 | }; | ||
115 | phy3: ethernet-phy@3 { | ||
116 | interrupt-parent = < &ipic >; | ||
117 | interrupts = <0x12 0x8>; | ||
118 | reg = <3>; | ||
119 | device_type = "ethernet-phy"; | ||
120 | }; | ||
121 | }; | ||
122 | |||
123 | enet0: ethernet@24000 { | ||
124 | cell-index = <0>; | ||
125 | device_type = "network"; | ||
126 | model = "eTSEC"; | ||
127 | compatible = "gianfar"; | ||
128 | reg = <0x24000 0x1000>; | ||
129 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
130 | interrupts = <0x20 0x8 0x21 0x8 0x22 0x8>; | ||
131 | phy-connection-type = "mii"; | ||
132 | interrupt-parent = < &ipic >; | ||
133 | phy-handle = < &phy2 >; | ||
134 | }; | ||
135 | |||
136 | enet1: ethernet@25000 { | ||
137 | cell-index = <1>; | ||
138 | device_type = "network"; | ||
139 | model = "eTSEC"; | ||
140 | compatible = "gianfar"; | ||
141 | reg = <0x25000 0x1000>; | ||
142 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
143 | interrupts = <0x23 0x8 0x24 0x8 0x25 0x8>; | ||
144 | phy-connection-type = "mii"; | ||
145 | interrupt-parent = < &ipic >; | ||
146 | phy-handle = < &phy3 >; | ||
147 | }; | ||
148 | |||
149 | serial0: serial@4500 { | ||
150 | cell-index = <0>; | ||
151 | device_type = "serial"; | ||
152 | compatible = "ns16550"; | ||
153 | reg = <0x4500 0x100>; | ||
154 | clock-frequency = <0>; | ||
155 | interrupts = <0x9 0x8>; | ||
156 | interrupt-parent = < &ipic >; | ||
157 | }; | ||
158 | |||
159 | serial1: serial@4600 { | ||
160 | cell-index = <1>; | ||
161 | device_type = "serial"; | ||
162 | compatible = "ns16550"; | ||
163 | reg = <0x4600 0x100>; | ||
164 | clock-frequency = <0>; | ||
165 | interrupts = <0xa 0x8>; | ||
166 | interrupt-parent = < &ipic >; | ||
167 | }; | ||
168 | |||
169 | crypto@30000 { | ||
170 | model = "SEC3"; | ||
171 | compatible = "talitos"; | ||
172 | reg = <0x30000 0x10000>; | ||
173 | interrupts = <0xb 0x8>; | ||
174 | interrupt-parent = < &ipic >; | ||
175 | /* Rev. 3.0 geometry */ | ||
176 | num-channels = <4>; | ||
177 | channel-fifo-len = <0x18>; | ||
178 | exec-units-mask = <0x000001fe>; | ||
179 | descriptor-types-mask = <0x03ab0ebf>; | ||
180 | }; | ||
181 | |||
182 | sdhc@2e000 { | ||
183 | model = "eSDHC"; | ||
184 | compatible = "fsl,esdhc"; | ||
185 | reg = <0x2e000 0x1000>; | ||
186 | interrupts = <0x2a 0x8>; | ||
187 | interrupt-parent = < &ipic >; | ||
188 | }; | ||
189 | |||
190 | sata@18000 { | ||
191 | compatible = "fsl,mpc8379-sata"; | ||
192 | reg = <0x18000 0x1000>; | ||
193 | interrupts = <0x2c 0x8>; | ||
194 | interrupt-parent = < &ipic >; | ||
195 | }; | ||
196 | |||
197 | sata@19000 { | ||
198 | compatible = "fsl,mpc8379-sata"; | ||
199 | reg = <0x19000 0x1000>; | ||
200 | interrupts = <0x2d 0x8>; | ||
201 | interrupt-parent = < &ipic >; | ||
202 | }; | ||
203 | |||
204 | sata@1a000 { | ||
205 | compatible = "fsl,mpc8379-sata"; | ||
206 | reg = <0x1a000 0x1000>; | ||
207 | interrupts = <0x2e 0x8>; | ||
208 | interrupt-parent = < &ipic >; | ||
209 | }; | ||
210 | |||
211 | sata@1b000 { | ||
212 | compatible = "fsl,mpc8379-sata"; | ||
213 | reg = <0x1b000 0x1000>; | ||
214 | interrupts = <0x2f 0x8>; | ||
215 | interrupt-parent = < &ipic >; | ||
216 | }; | ||
217 | |||
218 | /* IPIC | ||
219 | * interrupts cell = <intr #, sense> | ||
220 | * sense values match linux IORESOURCE_IRQ_* defines: | ||
221 | * sense == 8: Level, low assertion | ||
222 | * sense == 2: Edge, high-to-low change | ||
223 | */ | ||
224 | ipic: pic@700 { | ||
225 | compatible = "fsl,ipic"; | ||
226 | interrupt-controller; | ||
227 | #address-cells = <0>; | ||
228 | #interrupt-cells = <2>; | ||
229 | reg = <0x700 0x100>; | ||
230 | }; | ||
231 | }; | ||
232 | |||
233 | pci0: pci@e0008500 { | ||
234 | cell-index = <0>; | ||
235 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; | ||
236 | interrupt-map = < | ||
237 | |||
238 | /* IDSEL 0x11 */ | ||
239 | 0x8800 0x0 0x0 0x1 &ipic 0x14 0x8 | ||
240 | 0x8800 0x0 0x0 0x2 &ipic 0x15 0x8 | ||
241 | 0x8800 0x0 0x0 0x3 &ipic 0x16 0x8 | ||
242 | 0x8800 0x0 0x0 0x4 &ipic 0x17 0x8 | ||
243 | |||
244 | /* IDSEL 0x12 */ | ||
245 | 0x9000 0x0 0x0 0x1 &ipic 0x16 0x8 | ||
246 | 0x9000 0x0 0x0 0x2 &ipic 0x17 0x8 | ||
247 | 0x9000 0x0 0x0 0x3 &ipic 0x14 0x8 | ||
248 | 0x9000 0x0 0x0 0x4 &ipic 0x15 0x8 | ||
249 | |||
250 | /* IDSEL 0x13 */ | ||
251 | 0x9800 0x0 0x0 0x1 &ipic 0x17 0x8 | ||
252 | 0x9800 0x0 0x0 0x2 &ipic 0x14 0x8 | ||
253 | 0x9800 0x0 0x0 0x3 &ipic 0x15 0x8 | ||
254 | 0x9800 0x0 0x0 0x4 &ipic 0x16 0x8 | ||
255 | |||
256 | /* IDSEL 0x15 */ | ||
257 | 0xa800 0x0 0x0 0x1 &ipic 0x14 0x8 | ||
258 | 0xa800 0x0 0x0 0x2 &ipic 0x15 0x8 | ||
259 | 0xa800 0x0 0x0 0x3 &ipic 0x16 0x8 | ||
260 | 0xa800 0x0 0x0 0x4 &ipic 0x17 0x8 | ||
261 | |||
262 | /* IDSEL 0x16 */ | ||
263 | 0xb000 0x0 0x0 0x1 &ipic 0x17 0x8 | ||
264 | 0xb000 0x0 0x0 0x2 &ipic 0x14 0x8 | ||
265 | 0xb000 0x0 0x0 0x3 &ipic 0x15 0x8 | ||
266 | 0xb000 0x0 0x0 0x4 &ipic 0x16 0x8 | ||
267 | |||
268 | /* IDSEL 0x17 */ | ||
269 | 0xb800 0x0 0x0 0x1 &ipic 0x16 0x8 | ||
270 | 0xb800 0x0 0x0 0x2 &ipic 0x17 0x8 | ||
271 | 0xb800 0x0 0x0 0x3 &ipic 0x14 0x8 | ||
272 | 0xb800 0x0 0x0 0x4 &ipic 0x15 0x8 | ||
273 | |||
274 | /* IDSEL 0x18 */ | ||
275 | 0xc000 0x0 0x0 0x1 &ipic 0x15 0x8 | ||
276 | 0xc000 0x0 0x0 0x2 &ipic 0x16 0x8 | ||
277 | 0xc000 0x0 0x0 0x3 &ipic 0x17 0x8 | ||
278 | 0xc000 0x0 0x0 0x4 &ipic 0x14 0x8>; | ||
279 | interrupt-parent = < &ipic >; | ||
280 | interrupts = <0x42 0x8>; | ||
281 | bus-range = <0 0>; | ||
282 | ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000 | ||
283 | 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000 | ||
284 | 0x01000000 0x0 0x00000000 0xe0300000 0x0 0x00100000>; | ||
285 | clock-frequency = <0>; | ||
286 | #interrupt-cells = <1>; | ||
287 | #size-cells = <2>; | ||
288 | #address-cells = <3>; | ||
289 | reg = <0xe0008500 0x100>; | ||
290 | compatible = "fsl,mpc8349-pci"; | ||
291 | device_type = "pci"; | ||
292 | }; | ||
293 | }; | ||
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts index 54b3bdf7fc97..688af9d06382 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dts +++ b/arch/powerpc/boot/dts/mpc8544ds.dts | |||
@@ -304,9 +304,9 @@ | |||
304 | interrupt-map = < | 304 | interrupt-map = < |
305 | // IDSEL 0x1c USB | 305 | // IDSEL 0x1c USB |
306 | e000 0 0 1 &i8259 c 2 | 306 | e000 0 0 1 &i8259 c 2 |
307 | e100 0 0 1 &i8259 9 2 | 307 | e100 0 0 2 &i8259 9 2 |
308 | e200 0 0 1 &i8259 a 2 | 308 | e200 0 0 3 &i8259 a 2 |
309 | e300 0 0 1 &i8259 b 2 | 309 | e300 0 0 4 &i8259 b 2 |
310 | 310 | ||
311 | // IDSEL 0x1d Audio | 311 | // IDSEL 0x1d Audio |
312 | e800 0 0 1 &i8259 6 2 | 312 | e800 0 0 1 &i8259 6 2 |
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts index 233e0d5a8b9d..813c259abbe5 100644 --- a/arch/powerpc/boot/dts/mpc8572ds.dts +++ b/arch/powerpc/boot/dts/mpc8572ds.dts | |||
@@ -334,9 +334,9 @@ | |||
334 | 334 | ||
335 | // IDSEL 0x1c USB | 335 | // IDSEL 0x1c USB |
336 | e000 0 0 1 &i8259 c 2 | 336 | e000 0 0 1 &i8259 c 2 |
337 | e100 0 0 1 &i8259 9 2 | 337 | e100 0 0 2 &i8259 9 2 |
338 | e200 0 0 1 &i8259 a 2 | 338 | e200 0 0 3 &i8259 a 2 |
339 | e300 0 0 1 &i8259 b 2 | 339 | e300 0 0 4 &i8259 b 2 |
340 | 340 | ||
341 | // IDSEL 0x1d Audio | 341 | // IDSEL 0x1d Audio |
342 | e800 0 0 1 &i8259 6 2 | 342 | e800 0 0 1 &i8259 6 2 |
@@ -481,6 +481,7 @@ | |||
481 | clock-frequency = <1fca055>; | 481 | clock-frequency = <1fca055>; |
482 | interrupt-parent = <&mpic>; | 482 | interrupt-parent = <&mpic>; |
483 | interrupts = <1b 2>; | 483 | interrupts = <1b 2>; |
484 | interrupt-map-mask = <f800 0 0 7>; | ||
484 | interrupt-map = < | 485 | interrupt-map = < |
485 | /* IDSEL 0x0 */ | 486 | /* IDSEL 0x0 */ |
486 | 0000 0 0 1 &mpic 0 1 | 487 | 0000 0 0 1 &mpic 0 1 |
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts index 01040a752c82..d98715cbda28 100644 --- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts +++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MPC8610 HPCD Device Tree Source | 2 | * MPC8610 HPCD 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 Version 2 as published | 7 | * under the terms of the GNU General Public License Version 2 as published |
@@ -49,6 +49,7 @@ | |||
49 | #size-cells = <1>; | 49 | #size-cells = <1>; |
50 | #interrupt-cells = <2>; | 50 | #interrupt-cells = <2>; |
51 | device_type = "soc"; | 51 | device_type = "soc"; |
52 | compatible = "fsl,mpc8610-immr", "simple-bus"; | ||
52 | ranges = <0 e0000000 00100000>; | 53 | ranges = <0 e0000000 00100000>; |
53 | reg = <e0000000 1000>; | 54 | reg = <e0000000 1000>; |
54 | bus-frequency = <0>; | 55 | bus-frequency = <0>; |
@@ -62,6 +63,13 @@ | |||
62 | interrupts = <2b 2>; | 63 | interrupts = <2b 2>; |
63 | interrupt-parent = <&mpic>; | 64 | interrupt-parent = <&mpic>; |
64 | dfsrr; | 65 | dfsrr; |
66 | |||
67 | cs4270:codec@4f { | ||
68 | compatible = "cirrus,cs4270"; | ||
69 | reg = <4f>; | ||
70 | /* MCLK source is a stand-alone oscillator */ | ||
71 | clock-frequency = <bb8000>; | ||
72 | }; | ||
65 | }; | 73 | }; |
66 | 74 | ||
67 | i2c@3100 { | 75 | i2c@3100 { |
@@ -111,6 +119,109 @@ | |||
111 | reg = <e0000 1000>; | 119 | reg = <e0000 1000>; |
112 | fsl,has-rstcr; | 120 | fsl,has-rstcr; |
113 | }; | 121 | }; |
122 | |||
123 | i2s@16000 { | ||
124 | compatible = "fsl,mpc8610-ssi"; | ||
125 | cell-index = <0>; | ||
126 | reg = <16000 100>; | ||
127 | interrupt-parent = <&mpic>; | ||
128 | interrupts = <3e 2>; | ||
129 | fsl,mode = "i2s-slave"; | ||
130 | codec-handle = <&cs4270>; | ||
131 | }; | ||
132 | |||
133 | ssi@16100 { | ||
134 | compatible = "fsl,mpc8610-ssi"; | ||
135 | cell-index = <1>; | ||
136 | reg = <16100 100>; | ||
137 | interrupt-parent = <&mpic>; | ||
138 | interrupts = <3f 2>; | ||
139 | }; | ||
140 | |||
141 | dma@21300 { | ||
142 | #address-cells = <1>; | ||
143 | #size-cells = <1>; | ||
144 | compatible = "fsl,mpc8610-dma", "fsl,eloplus-dma"; | ||
145 | cell-index = <0>; | ||
146 | reg = <21300 4>; /* DMA general status register */ | ||
147 | ranges = <0 21100 200>; | ||
148 | |||
149 | dma-channel@0 { | ||
150 | compatible = "fsl,mpc8610-dma-channel", | ||
151 | "fsl,eloplus-dma-channel"; | ||
152 | cell-index = <0>; | ||
153 | reg = <0 80>; | ||
154 | interrupt-parent = <&mpic>; | ||
155 | interrupts = <14 2>; | ||
156 | }; | ||
157 | dma-channel@1 { | ||
158 | compatible = "fsl,mpc8610-dma-channel", | ||
159 | "fsl,eloplus-dma-channel"; | ||
160 | cell-index = <1>; | ||
161 | reg = <80 80>; | ||
162 | interrupt-parent = <&mpic>; | ||
163 | interrupts = <15 2>; | ||
164 | }; | ||
165 | dma-channel@2 { | ||
166 | compatible = "fsl,mpc8610-dma-channel", | ||
167 | "fsl,eloplus-dma-channel"; | ||
168 | cell-index = <2>; | ||
169 | reg = <100 80>; | ||
170 | interrupt-parent = <&mpic>; | ||
171 | interrupts = <16 2>; | ||
172 | }; | ||
173 | dma-channel@3 { | ||
174 | compatible = "fsl,mpc8610-dma-channel", | ||
175 | "fsl,eloplus-dma-channel"; | ||
176 | cell-index = <3>; | ||
177 | reg = <180 80>; | ||
178 | interrupt-parent = <&mpic>; | ||
179 | interrupts = <17 2>; | ||
180 | }; | ||
181 | }; | ||
182 | |||
183 | dma@c300 { | ||
184 | #address-cells = <1>; | ||
185 | #size-cells = <1>; | ||
186 | compatible = "fsl,mpc8610-dma", "fsl,mpc8540-dma"; | ||
187 | cell-index = <1>; | ||
188 | reg = <c300 4>; /* DMA general status register */ | ||
189 | ranges = <0 c100 200>; | ||
190 | |||
191 | dma-channel@0 { | ||
192 | compatible = "fsl,mpc8610-dma-channel", | ||
193 | "fsl,mpc8540-dma-channel"; | ||
194 | cell-index = <0>; | ||
195 | reg = <0 80>; | ||
196 | interrupt-parent = <&mpic>; | ||
197 | interrupts = <3c 2>; | ||
198 | }; | ||
199 | dma-channel@1 { | ||
200 | compatible = "fsl,mpc8610-dma-channel", | ||
201 | "fsl,mpc8540-dma-channel"; | ||
202 | cell-index = <1>; | ||
203 | reg = <80 80>; | ||
204 | interrupt-parent = <&mpic>; | ||
205 | interrupts = <3d 2>; | ||
206 | }; | ||
207 | dma-channel@2 { | ||
208 | compatible = "fsl,mpc8610-dma-channel", | ||
209 | "fsl,mpc8540-dma-channel"; | ||
210 | cell-index = <2>; | ||
211 | reg = <100 80>; | ||
212 | interrupt-parent = <&mpic>; | ||
213 | interrupts = <3e 2>; | ||
214 | }; | ||
215 | dma-channel@3 { | ||
216 | compatible = "fsl,mpc8610-dma-channel", | ||
217 | "fsl,mpc8540-dma-channel"; | ||
218 | cell-index = <3>; | ||
219 | reg = <180 80>; | ||
220 | interrupt-parent = <&mpic>; | ||
221 | interrupts = <3f 2>; | ||
222 | }; | ||
223 | }; | ||
224 | |||
114 | }; | 225 | }; |
115 | 226 | ||
116 | pci0: pci@e0008000 { | 227 | pci0: pci@e0008000 { |
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index 86fc2280c16d..556a9cac0793 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts | |||
@@ -60,10 +60,52 @@ | |||
60 | reg = <00000000 40000000>; // 1G at 0x0 | 60 | reg = <00000000 40000000>; // 1G at 0x0 |
61 | }; | 61 | }; |
62 | 62 | ||
63 | localbus@f8005000 { | ||
64 | #address-cells = <2>; | ||
65 | #size-cells = <1>; | ||
66 | compatible = "fsl,mpc8641-localbus", "simple-bus"; | ||
67 | reg = <f8005000 1000>; | ||
68 | interrupts = <13 2>; | ||
69 | interrupt-parent = <&mpic>; | ||
70 | |||
71 | ranges = <0 0 ff800000 00800000 | ||
72 | 1 0 fe000000 01000000 | ||
73 | 2 0 f8200000 00100000 | ||
74 | 3 0 f8100000 00100000>; | ||
75 | |||
76 | flash@0,0 { | ||
77 | compatible = "cfi-flash"; | ||
78 | reg = <0 0 00800000>; | ||
79 | bank-width = <2>; | ||
80 | device-width = <2>; | ||
81 | #address-cells = <1>; | ||
82 | #size-cells = <1>; | ||
83 | partition@0 { | ||
84 | label = "kernel"; | ||
85 | reg = <00000000 00300000>; | ||
86 | }; | ||
87 | partition@300000 { | ||
88 | label = "firmware b"; | ||
89 | reg = <00300000 00100000>; | ||
90 | read-only; | ||
91 | }; | ||
92 | partition@400000 { | ||
93 | label = "fs"; | ||
94 | reg = <00400000 00300000>; | ||
95 | }; | ||
96 | partition@700000 { | ||
97 | label = "firmware a"; | ||
98 | reg = <00700000 00100000>; | ||
99 | read-only; | ||
100 | }; | ||
101 | }; | ||
102 | }; | ||
103 | |||
63 | soc8641@f8000000 { | 104 | soc8641@f8000000 { |
64 | #address-cells = <1>; | 105 | #address-cells = <1>; |
65 | #size-cells = <1>; | 106 | #size-cells = <1>; |
66 | device_type = "soc"; | 107 | device_type = "soc"; |
108 | compatible = "simple-bus"; | ||
67 | ranges = <00000000 f8000000 00100000>; | 109 | ranges = <00000000 f8000000 00100000>; |
68 | reg = <f8000000 00001000>; // CCSRBAR | 110 | reg = <f8000000 00001000>; // CCSRBAR |
69 | bus-frequency = <0>; | 111 | bus-frequency = <0>; |
@@ -326,9 +368,9 @@ | |||
326 | 368 | ||
327 | // IDSEL 0x1c USB | 369 | // IDSEL 0x1c USB |
328 | e000 0 0 1 &i8259 c 2 | 370 | e000 0 0 1 &i8259 c 2 |
329 | e100 0 0 1 &i8259 9 2 | 371 | e100 0 0 2 &i8259 9 2 |
330 | e200 0 0 1 &i8259 a 2 | 372 | e200 0 0 3 &i8259 a 2 |
331 | e300 0 0 1 &i8259 b 2 | 373 | e300 0 0 4 &i8259 b 2 |
332 | 374 | ||
333 | // IDSEL 0x1d Audio | 375 | // IDSEL 0x1d Audio |
334 | e800 0 0 1 &i8259 6 2 | 376 | e800 0 0 1 &i8259 6 2 |
diff --git a/arch/powerpc/boot/dts/storcenter.dts b/arch/powerpc/boot/dts/storcenter.dts new file mode 100644 index 000000000000..6aa1d695e644 --- /dev/null +++ b/arch/powerpc/boot/dts/storcenter.dts | |||
@@ -0,0 +1,138 @@ | |||
1 | /* | ||
2 | * Device Tree Source for IOMEGA StorCenter | ||
3 | * | ||
4 | * Copyright 2007 Oyvind Repvik | ||
5 | * Copyright 2007 Jon Loeliger | ||
6 | * | ||
7 | * Based on the Kurobox DTS by G. Liakhovetski <g.liakhovetski@gmx.de> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | / { | ||
15 | model = "StorCenter"; | ||
16 | compatible = "storcenter"; | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <1>; | ||
19 | |||
20 | aliases { | ||
21 | serial0 = &serial0; | ||
22 | serial1 = &serial1; | ||
23 | pci0 = &pci0; | ||
24 | }; | ||
25 | |||
26 | cpus { | ||
27 | #address-cells = <1>; | ||
28 | #size-cells = <0>; | ||
29 | |||
30 | PowerPC,8241@0 { | ||
31 | device_type = "cpu"; | ||
32 | reg = <0>; | ||
33 | clock-frequency = <d# 200000000>; /* Hz */ | ||
34 | timebase-frequency = <d# 25000000>; /* Hz */ | ||
35 | bus-frequency = <0>; /* from bootwrapper */ | ||
36 | i-cache-line-size = <d# 32>; /* bytes */ | ||
37 | d-cache-line-size = <d# 32>; /* bytes */ | ||
38 | i-cache-size = <4000>; | ||
39 | d-cache-size = <4000>; | ||
40 | }; | ||
41 | }; | ||
42 | |||
43 | memory { | ||
44 | device_type = "memory"; | ||
45 | reg = <00000000 04000000>; /* 64MB @ 0x0 */ | ||
46 | }; | ||
47 | |||
48 | soc@fc000000 { | ||
49 | #address-cells = <1>; | ||
50 | #size-cells = <1>; | ||
51 | device_type = "soc"; | ||
52 | compatible = "fsl,mpc8241", "mpc10x"; | ||
53 | store-gathering = <0>; /* 0 == off, !0 == on */ | ||
54 | ranges = <0 fc000000 100000>; | ||
55 | reg = <fc000000 100000>; /* EUMB */ | ||
56 | bus-frequency = <0>; /* fixed by loader */ | ||
57 | |||
58 | i2c@3000 { | ||
59 | #address-cells = <1>; | ||
60 | #size-cells = <0>; | ||
61 | compatible = "fsl-i2c"; | ||
62 | reg = <3000 100>; | ||
63 | interrupts = <5 2>; | ||
64 | interrupt-parent = <&mpic>; | ||
65 | |||
66 | rtc@68 { | ||
67 | compatible = "dallas,ds1337"; | ||
68 | reg = <68>; | ||
69 | }; | ||
70 | }; | ||
71 | |||
72 | serial0: serial@4500 { | ||
73 | cell-index = <0>; | ||
74 | device_type = "serial"; | ||
75 | compatible = "ns16550"; | ||
76 | reg = <4500 20>; | ||
77 | clock-frequency = <d# 97553800>; /* Hz */ | ||
78 | current-speed = <d# 115200>; | ||
79 | interrupts = <9 2>; | ||
80 | interrupt-parent = <&mpic>; | ||
81 | }; | ||
82 | |||
83 | serial1: serial@4600 { | ||
84 | cell-index = <1>; | ||
85 | device_type = "serial"; | ||
86 | compatible = "ns16550"; | ||
87 | reg = <4600 20>; | ||
88 | clock-frequency = <d# 97553800>; /* Hz */ | ||
89 | current-speed = <d# 9600>; | ||
90 | interrupts = <a 2>; | ||
91 | interrupt-parent = <&mpic>; | ||
92 | }; | ||
93 | |||
94 | mpic: interrupt-controller@40000 { | ||
95 | #interrupt-cells = <2>; | ||
96 | device_type = "open-pic"; | ||
97 | compatible = "chrp,open-pic"; | ||
98 | interrupt-controller; | ||
99 | reg = <40000 40000>; | ||
100 | }; | ||
101 | |||
102 | }; | ||
103 | |||
104 | pci0: pci@fe800000 { | ||
105 | #address-cells = <3>; | ||
106 | #size-cells = <2>; | ||
107 | #interrupt-cells = <1>; | ||
108 | device_type = "pci"; | ||
109 | compatible = "mpc10x-pci"; | ||
110 | reg = <fe800000 1000>; | ||
111 | ranges = <01000000 0 0 fe000000 0 00c00000 | ||
112 | 02000000 0 80000000 80000000 0 70000000>; | ||
113 | bus-range = <0 ff>; | ||
114 | clock-frequency = <d# 97553800>; /* Hz */ | ||
115 | interrupt-parent = <&mpic>; | ||
116 | interrupt-map-mask = <f800 0 0 7>; | ||
117 | interrupt-map = < | ||
118 | /* IDSEL 13 - IDE */ | ||
119 | 6800 0 0 1 &mpic 0 1 | ||
120 | 6800 0 0 2 &mpic 0 1 | ||
121 | 6800 0 0 3 &mpic 0 1 | ||
122 | /* IDSEL 14 - USB */ | ||
123 | 7000 0 0 1 &mpic 0 1 | ||
124 | 7000 0 0 2 &mpic 0 1 | ||
125 | 7000 0 0 3 &mpic 0 1 | ||
126 | 7000 0 0 4 &mpic 0 1 | ||
127 | /* IDSEL 15 - ETH */ | ||
128 | 7800 0 0 1 &mpic 0 1 | ||
129 | 7800 0 0 2 &mpic 0 1 | ||
130 | 7800 0 0 3 &mpic 0 1 | ||
131 | 7800 0 0 4 &mpic 0 1 | ||
132 | >; | ||
133 | }; | ||
134 | |||
135 | chosen { | ||
136 | linux,stdout-path = "/soc/serial@4500"; | ||
137 | }; | ||
138 | }; | ||
diff --git a/arch/powerpc/boot/ep8248e.c b/arch/powerpc/boot/ep8248e.c new file mode 100644 index 000000000000..f57d14d0272b --- /dev/null +++ b/arch/powerpc/boot/ep8248e.c | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | * Embedded Planet EP8248E with PlanetCore firmware | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
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 "planetcore.h" | ||
16 | #include "pq2.h" | ||
17 | |||
18 | static char *table; | ||
19 | static u64 mem_size; | ||
20 | |||
21 | #include <io.h> | ||
22 | |||
23 | static void platform_fixups(void) | ||
24 | { | ||
25 | u64 val; | ||
26 | |||
27 | dt_fixup_memory(0, mem_size); | ||
28 | planetcore_set_mac_addrs(table); | ||
29 | |||
30 | if (!planetcore_get_decimal(table, PLANETCORE_KEY_CRYSTAL_HZ, &val)) { | ||
31 | printf("No PlanetCore crystal frequency key.\r\n"); | ||
32 | return; | ||
33 | } | ||
34 | |||
35 | pq2_fixup_clocks(val); | ||
36 | } | ||
37 | |||
38 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
39 | unsigned long r6, unsigned long r7) | ||
40 | { | ||
41 | table = (char *)r3; | ||
42 | planetcore_prepare_table(table); | ||
43 | |||
44 | if (!planetcore_get_decimal(table, PLANETCORE_KEY_MB_RAM, &mem_size)) | ||
45 | return; | ||
46 | |||
47 | mem_size *= 1024 * 1024; | ||
48 | simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64); | ||
49 | |||
50 | fdt_init(_dtb_start); | ||
51 | |||
52 | planetcore_set_stdout_path(table); | ||
53 | serial_console_init(); | ||
54 | platform_ops.fixups = platform_fixups; | ||
55 | } | ||
diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h index 6036a98e646a..5872ef1779ae 100644 --- a/arch/powerpc/boot/ops.h +++ b/arch/powerpc/boot/ops.h | |||
@@ -159,9 +159,23 @@ static inline void *find_node_by_devtype(const void *prev, | |||
159 | return find_node_by_prop_value_str(prev, "device_type", type); | 159 | return find_node_by_prop_value_str(prev, "device_type", type); |
160 | } | 160 | } |
161 | 161 | ||
162 | static inline void *find_node_by_alias(const char *alias) | ||
163 | { | ||
164 | void *devp = finddevice("/aliases"); | ||
165 | |||
166 | if (devp) { | ||
167 | char path[MAX_PATH_LEN]; | ||
168 | if (getprop(devp, alias, path, MAX_PATH_LEN) > 0) | ||
169 | return finddevice(path); | ||
170 | } | ||
171 | |||
172 | return NULL; | ||
173 | } | ||
174 | |||
162 | void dt_fixup_memory(u64 start, u64 size); | 175 | void dt_fixup_memory(u64 start, u64 size); |
163 | void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq); | 176 | void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq); |
164 | void dt_fixup_clock(const char *path, u32 freq); | 177 | void dt_fixup_clock(const char *path, u32 freq); |
178 | void dt_fixup_mac_address_by_alias(const char *alias, const u8 *addr); | ||
165 | void dt_fixup_mac_address(u32 index, const u8 *addr); | 179 | void dt_fixup_mac_address(u32 index, const u8 *addr); |
166 | void __dt_fixup_mac_addresses(u32 startindex, ...); | 180 | void __dt_fixup_mac_addresses(u32 startindex, ...); |
167 | #define dt_fixup_mac_addresses(...) \ | 181 | #define dt_fixup_mac_addresses(...) \ |
diff --git a/arch/powerpc/boot/redboot-8xx.c b/arch/powerpc/boot/redboot-8xx.c new file mode 100644 index 000000000000..f7945adc8004 --- /dev/null +++ b/arch/powerpc/boot/redboot-8xx.c | |||
@@ -0,0 +1,58 @@ | |||
1 | /* | ||
2 | * RedBoot firmware support | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
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 "redboot.h" | ||
16 | #include "fsl-soc.h" | ||
17 | #include "io.h" | ||
18 | |||
19 | static bd_t bd; | ||
20 | BSS_STACK(4096); | ||
21 | |||
22 | #define MHZ(x) ((x + 500000) / 1000000) | ||
23 | |||
24 | static void platform_fixups(void) | ||
25 | { | ||
26 | void *node; | ||
27 | |||
28 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); | ||
29 | dt_fixup_mac_addresses(bd.bi_enetaddr); | ||
30 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 16, bd.bi_busfreq); | ||
31 | |||
32 | node = finddevice("/soc/cpm/brg"); | ||
33 | if (node) { | ||
34 | printf("BRG clock-frequency <- 0x%x (%dMHz)\r\n", | ||
35 | bd.bi_busfreq, MHZ(bd.bi_busfreq)); | ||
36 | setprop(node, "clock-frequency", &bd.bi_busfreq, 4); | ||
37 | } | ||
38 | } | ||
39 | |||
40 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
41 | unsigned long r6, unsigned long r7) | ||
42 | { | ||
43 | memcpy(&bd, (char *)r3, sizeof(bd)); | ||
44 | |||
45 | if (bd.bi_tag != 0x42444944) | ||
46 | return; | ||
47 | |||
48 | simple_alloc_init(_end, | ||
49 | bd.bi_memstart + bd.bi_memsize - (unsigned long)_end, | ||
50 | 32, 64); | ||
51 | |||
52 | fdt_init(_dtb_start); | ||
53 | serial_console_init(); | ||
54 | platform_ops.fixups = platform_fixups; | ||
55 | |||
56 | loader_info.cmdline = (char *)bd.bi_cmdline; | ||
57 | loader_info.cmdline_len = strlen((char *)bd.bi_cmdline); | ||
58 | } | ||
diff --git a/arch/powerpc/boot/redboot.h b/arch/powerpc/boot/redboot.h new file mode 100644 index 000000000000..ace0b7fed8eb --- /dev/null +++ b/arch/powerpc/boot/redboot.h | |||
@@ -0,0 +1,56 @@ | |||
1 | #ifndef _PPC_REDBOOT_H | ||
2 | #define _PPC_REDBOOT_H | ||
3 | |||
4 | //========================================================================= | ||
5 | // include/asm-ppc/redboot.h | ||
6 | // Copyright (c) 2002, 2003 Gary Thomas (<gary@mlbassoc.com> | ||
7 | // Copyright (c) 1997 Dan Malek (dmalek@jlc.net) | ||
8 | |||
9 | // | ||
10 | // Board specific details, as provided by RedBoot | ||
11 | // | ||
12 | |||
13 | /* A Board Information structure that is given to a program when | ||
14 | * RedBoot starts it up. Note: not all fields make sense for all | ||
15 | * architectures and it's up to the platform specific code to fill | ||
16 | * in the details. | ||
17 | */ | ||
18 | typedef struct bd_info { | ||
19 | unsigned int bi_tag; /* Should be 0x42444944 "BDID" */ | ||
20 | unsigned int bi_size; /* Size of this structure */ | ||
21 | unsigned int bi_revision; /* revision of this structure */ | ||
22 | unsigned int bi_bdate; /* bootstrap date, i.e. 0x19971106 */ | ||
23 | unsigned int bi_memstart; /* Memory start address */ | ||
24 | unsigned int bi_memsize; /* Memory (end) size in bytes */ | ||
25 | unsigned int bi_intfreq; /* Internal Freq, in Hz */ | ||
26 | unsigned int bi_busfreq; /* Bus Freq, in Hz */ | ||
27 | unsigned int bi_cpmfreq; /* CPM Freq, in Hz */ | ||
28 | unsigned int bi_brgfreq; /* BRG Freq, in Hz */ | ||
29 | unsigned int bi_vco; /* VCO Out from PLL */ | ||
30 | unsigned int bi_pci_freq; /* PCI Freq, in Hz */ | ||
31 | unsigned int bi_baudrate; /* Default console baud rate */ | ||
32 | unsigned int bi_immr; /* IMMR when called from boot rom */ | ||
33 | unsigned char bi_enetaddr[6]; | ||
34 | unsigned int bi_flashbase; /* Physical address of FLASH memory */ | ||
35 | unsigned int bi_flashsize; /* Length of FLASH memory */ | ||
36 | int bi_flashwidth; /* Width (8,16,32,64) */ | ||
37 | unsigned char *bi_cmdline; /* Pointer to command line */ | ||
38 | unsigned char bi_esa[3][6]; /* Ethernet station addresses */ | ||
39 | unsigned int bi_ramdisk_begin, bi_ramdisk_end; | ||
40 | struct { /* Information about [main] video screen */ | ||
41 | short x_res; /* Horizontal resolution in pixels */ | ||
42 | short y_res; /* Vertical resolution in pixels */ | ||
43 | short bpp; /* Bits/pixel */ | ||
44 | short mode; /* Type of pixels (packed, indexed) */ | ||
45 | unsigned long fb; /* Pointer to frame buffer (pixel) memory */ | ||
46 | } bi_video; | ||
47 | void (*bi_cputc)(char); /* Write a character to the RedBoot console */ | ||
48 | char (*bi_cgetc)(void); /* Read a character from the RedBoot console */ | ||
49 | int (*bi_ctstc)(void); /* Test for input on the RedBoot console */ | ||
50 | } bd_t; | ||
51 | |||
52 | #define BI_REV 0x0102 /* Version 1.02 */ | ||
53 | |||
54 | #define bi_pci_busfreq bi_pci_freq | ||
55 | #define bi_immr_base bi_immr | ||
56 | #endif | ||
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index 154df055aad2..763a0c46f441 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
@@ -168,7 +168,7 @@ ps3) | |||
168 | ksection=.kernel:vmlinux.bin | 168 | ksection=.kernel:vmlinux.bin |
169 | isection=.kernel:initrd | 169 | isection=.kernel:initrd |
170 | ;; | 170 | ;; |
171 | ep88xc|ep405) | 171 | ep88xc|ep405|redboot*|ep8248e) |
172 | platformo="$object/fixed-head.o $object/$platform.o" | 172 | platformo="$object/fixed-head.o $object/$platform.o" |
173 | binary=y | 173 | binary=y |
174 | ;; | 174 | ;; |
diff --git a/arch/powerpc/configs/adder875-redboot_defconfig b/arch/powerpc/configs/adder875-redboot_defconfig new file mode 100644 index 000000000000..cab5f9b64567 --- /dev/null +++ b/arch/powerpc/configs/adder875-redboot_defconfig | |||
@@ -0,0 +1,798 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.24-rc6 | ||
4 | # Thu Jan 17 16:17:38 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=y | ||
14 | # CONFIG_40x is not set | ||
15 | # CONFIG_44x is not set | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_8xx=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_IRQ_PER_CPU=y | ||
30 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
31 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
32 | CONFIG_GENERIC_HWEIGHT=y | ||
33 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
34 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
35 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
36 | CONFIG_PPC=y | ||
37 | CONFIG_EARLY_PRINTK=y | ||
38 | CONFIG_GENERIC_NVRAM=y | ||
39 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
40 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
41 | CONFIG_PPC_OF=y | ||
42 | CONFIG_OF=y | ||
43 | # CONFIG_PPC_UDBG_16550 is not set | ||
44 | # CONFIG_GENERIC_TBSYNC is not set | ||
45 | CONFIG_AUDIT_ARCH=y | ||
46 | CONFIG_GENERIC_BUG=y | ||
47 | # CONFIG_DEFAULT_UIMAGE is not set | ||
48 | CONFIG_REDBOOT=y | ||
49 | # CONFIG_PPC_DCR_NATIVE is not set | ||
50 | # CONFIG_PPC_DCR_MMIO is not set | ||
51 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
52 | |||
53 | # | ||
54 | # General setup | ||
55 | # | ||
56 | CONFIG_EXPERIMENTAL=y | ||
57 | CONFIG_BROKEN_ON_SMP=y | ||
58 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
59 | CONFIG_LOCALVERSION="" | ||
60 | CONFIG_LOCALVERSION_AUTO=y | ||
61 | # CONFIG_SWAP is not set | ||
62 | CONFIG_SYSVIPC=y | ||
63 | CONFIG_SYSVIPC_SYSCTL=y | ||
64 | # CONFIG_POSIX_MQUEUE is not set | ||
65 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
66 | # CONFIG_TASKSTATS is not set | ||
67 | # CONFIG_USER_NS is not set | ||
68 | # CONFIG_PID_NS is not set | ||
69 | # CONFIG_AUDIT is not set | ||
70 | # CONFIG_IKCONFIG is not set | ||
71 | CONFIG_LOG_BUF_SHIFT=14 | ||
72 | # CONFIG_CGROUPS is not set | ||
73 | CONFIG_FAIR_GROUP_SCHED=y | ||
74 | CONFIG_FAIR_USER_SCHED=y | ||
75 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
76 | CONFIG_SYSFS_DEPRECATED=y | ||
77 | # CONFIG_RELAY is not set | ||
78 | # CONFIG_BLK_DEV_INITRD is not set | ||
79 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
80 | CONFIG_SYSCTL=y | ||
81 | CONFIG_EMBEDDED=y | ||
82 | # CONFIG_SYSCTL_SYSCALL is not set | ||
83 | CONFIG_KALLSYMS=y | ||
84 | # CONFIG_KALLSYMS_ALL is not set | ||
85 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
86 | CONFIG_HOTPLUG=y | ||
87 | CONFIG_PRINTK=y | ||
88 | CONFIG_BUG=y | ||
89 | # CONFIG_ELF_CORE is not set | ||
90 | # CONFIG_BASE_FULL is not set | ||
91 | # CONFIG_FUTEX is not set | ||
92 | CONFIG_ANON_INODES=y | ||
93 | CONFIG_EPOLL=y | ||
94 | CONFIG_SIGNALFD=y | ||
95 | CONFIG_EVENTFD=y | ||
96 | CONFIG_SHMEM=y | ||
97 | # CONFIG_VM_EVENT_COUNTERS is not set | ||
98 | CONFIG_SLUB_DEBUG=y | ||
99 | # CONFIG_SLAB is not set | ||
100 | CONFIG_SLUB=y | ||
101 | # CONFIG_SLOB is not set | ||
102 | # CONFIG_TINY_SHMEM is not set | ||
103 | CONFIG_BASE_SMALL=1 | ||
104 | # CONFIG_MODULES is not set | ||
105 | CONFIG_BLOCK=y | ||
106 | # CONFIG_LBD is not set | ||
107 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
108 | # CONFIG_LSF is not set | ||
109 | # CONFIG_BLK_DEV_BSG is not set | ||
110 | |||
111 | # | ||
112 | # IO Schedulers | ||
113 | # | ||
114 | CONFIG_IOSCHED_NOOP=y | ||
115 | # CONFIG_IOSCHED_AS is not set | ||
116 | CONFIG_IOSCHED_DEADLINE=y | ||
117 | # CONFIG_IOSCHED_CFQ is not set | ||
118 | # CONFIG_DEFAULT_AS is not set | ||
119 | CONFIG_DEFAULT_DEADLINE=y | ||
120 | # CONFIG_DEFAULT_CFQ is not set | ||
121 | # CONFIG_DEFAULT_NOOP is not set | ||
122 | CONFIG_DEFAULT_IOSCHED="deadline" | ||
123 | |||
124 | # | ||
125 | # Platform support | ||
126 | # | ||
127 | # CONFIG_PPC_MPC52xx is not set | ||
128 | # CONFIG_PPC_MPC5200 is not set | ||
129 | # CONFIG_PPC_CELL is not set | ||
130 | # CONFIG_PPC_CELL_NATIVE is not set | ||
131 | CONFIG_CPM1=y | ||
132 | # CONFIG_MPC8XXFADS is not set | ||
133 | # CONFIG_MPC86XADS is not set | ||
134 | # CONFIG_MPC885ADS is not set | ||
135 | # CONFIG_PPC_EP88XC is not set | ||
136 | CONFIG_PPC_ADDER875=y | ||
137 | |||
138 | # | ||
139 | # MPC8xx CPM Options | ||
140 | # | ||
141 | |||
142 | # | ||
143 | # Generic MPC8xx Options | ||
144 | # | ||
145 | CONFIG_8xx_COPYBACK=y | ||
146 | # CONFIG_8xx_CPU6 is not set | ||
147 | CONFIG_8xx_CPU15=y | ||
148 | CONFIG_NO_UCODE_PATCH=y | ||
149 | # CONFIG_USB_SOF_UCODE_PATCH is not set | ||
150 | # CONFIG_I2C_SPI_UCODE_PATCH is not set | ||
151 | # CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set | ||
152 | # CONFIG_PQ2ADS is not set | ||
153 | # CONFIG_MPIC is not set | ||
154 | # CONFIG_MPIC_WEIRD is not set | ||
155 | # CONFIG_PPC_I8259 is not set | ||
156 | # CONFIG_PPC_RTAS is not set | ||
157 | # CONFIG_MMIO_NVRAM is not set | ||
158 | # CONFIG_PPC_MPC106 is not set | ||
159 | # CONFIG_PPC_970_NAP is not set | ||
160 | # CONFIG_PPC_INDIRECT_IO is not set | ||
161 | # CONFIG_GENERIC_IOMAP is not set | ||
162 | # CONFIG_CPU_FREQ is not set | ||
163 | # CONFIG_CPM2 is not set | ||
164 | CONFIG_PPC_CPM_NEW_BINDING=y | ||
165 | # CONFIG_FSL_ULI1575 is not set | ||
166 | CONFIG_CPM=y | ||
167 | |||
168 | # | ||
169 | # Kernel options | ||
170 | # | ||
171 | # CONFIG_HIGHMEM is not set | ||
172 | # CONFIG_TICK_ONESHOT is not set | ||
173 | # CONFIG_NO_HZ is not set | ||
174 | # CONFIG_HIGH_RES_TIMERS is not set | ||
175 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
176 | # CONFIG_HZ_100 is not set | ||
177 | # CONFIG_HZ_250 is not set | ||
178 | # CONFIG_HZ_300 is not set | ||
179 | CONFIG_HZ_1000=y | ||
180 | CONFIG_HZ=1000 | ||
181 | CONFIG_PREEMPT_NONE=y | ||
182 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
183 | # CONFIG_PREEMPT is not set | ||
184 | CONFIG_BINFMT_ELF=y | ||
185 | # CONFIG_BINFMT_MISC is not set | ||
186 | # CONFIG_MATH_EMULATION is not set | ||
187 | # CONFIG_8XX_MINIMAL_FPEMU is not set | ||
188 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
189 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
190 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
191 | CONFIG_SELECT_MEMORY_MODEL=y | ||
192 | CONFIG_FLATMEM_MANUAL=y | ||
193 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
194 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
195 | CONFIG_FLATMEM=y | ||
196 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
197 | # CONFIG_SPARSEMEM_STATIC is not set | ||
198 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
199 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
200 | # CONFIG_RESOURCES_64BIT is not set | ||
201 | CONFIG_ZONE_DMA_FLAG=1 | ||
202 | CONFIG_BOUNCE=y | ||
203 | CONFIG_VIRT_TO_BUS=y | ||
204 | # CONFIG_PROC_DEVICETREE is not set | ||
205 | # CONFIG_CMDLINE_BOOL is not set | ||
206 | # CONFIG_PM is not set | ||
207 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
208 | CONFIG_HIBERNATION_UP_POSSIBLE=y | ||
209 | # CONFIG_SECCOMP is not set | ||
210 | CONFIG_WANT_DEVICE_TREE=y | ||
211 | CONFIG_DEVICE_TREE="adder875-redboot.dts" | ||
212 | CONFIG_ISA_DMA_API=y | ||
213 | |||
214 | # | ||
215 | # Bus options | ||
216 | # | ||
217 | CONFIG_ZONE_DMA=y | ||
218 | CONFIG_FSL_SOC=y | ||
219 | # CONFIG_PCI is not set | ||
220 | # CONFIG_PCI_DOMAINS is not set | ||
221 | # CONFIG_PCI_SYSCALL is not set | ||
222 | # CONFIG_PCI_QSPAN is not set | ||
223 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
224 | # CONFIG_PCCARD is not set | ||
225 | |||
226 | # | ||
227 | # Advanced setup | ||
228 | # | ||
229 | # CONFIG_ADVANCED_OPTIONS is not set | ||
230 | |||
231 | # | ||
232 | # Default settings for advanced configuration options are used | ||
233 | # | ||
234 | CONFIG_HIGHMEM_START=0xfe000000 | ||
235 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
236 | CONFIG_KERNEL_START=0xc0000000 | ||
237 | CONFIG_TASK_SIZE=0x80000000 | ||
238 | CONFIG_CONSISTENT_START=0xfd000000 | ||
239 | CONFIG_CONSISTENT_SIZE=0x00200000 | ||
240 | CONFIG_BOOT_LOAD=0x00400000 | ||
241 | |||
242 | # | ||
243 | # Networking | ||
244 | # | ||
245 | CONFIG_NET=y | ||
246 | |||
247 | # | ||
248 | # Networking options | ||
249 | # | ||
250 | CONFIG_PACKET=y | ||
251 | # CONFIG_PACKET_MMAP is not set | ||
252 | CONFIG_UNIX=y | ||
253 | # CONFIG_NET_KEY is not set | ||
254 | CONFIG_INET=y | ||
255 | CONFIG_IP_MULTICAST=y | ||
256 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
257 | CONFIG_IP_FIB_HASH=y | ||
258 | CONFIG_IP_PNP=y | ||
259 | # CONFIG_IP_PNP_DHCP is not set | ||
260 | # CONFIG_IP_PNP_BOOTP is not set | ||
261 | # CONFIG_IP_PNP_RARP is not set | ||
262 | # CONFIG_NET_IPIP is not set | ||
263 | # CONFIG_NET_IPGRE is not set | ||
264 | # CONFIG_IP_MROUTE is not set | ||
265 | # CONFIG_ARPD is not set | ||
266 | CONFIG_SYN_COOKIES=y | ||
267 | # CONFIG_INET_AH is not set | ||
268 | # CONFIG_INET_ESP is not set | ||
269 | # CONFIG_INET_IPCOMP is not set | ||
270 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
271 | # CONFIG_INET_TUNNEL is not set | ||
272 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
273 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
274 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
275 | # CONFIG_INET_LRO is not set | ||
276 | CONFIG_INET_DIAG=y | ||
277 | CONFIG_INET_TCP_DIAG=y | ||
278 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
279 | CONFIG_TCP_CONG_CUBIC=y | ||
280 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
281 | # CONFIG_TCP_MD5SIG is not set | ||
282 | # CONFIG_IPV6 is not set | ||
283 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
284 | # CONFIG_INET6_TUNNEL is not set | ||
285 | # CONFIG_NETWORK_SECMARK is not set | ||
286 | # CONFIG_NETFILTER is not set | ||
287 | # CONFIG_IP_DCCP is not set | ||
288 | # CONFIG_IP_SCTP is not set | ||
289 | # CONFIG_TIPC is not set | ||
290 | # CONFIG_ATM is not set | ||
291 | # CONFIG_BRIDGE is not set | ||
292 | # CONFIG_VLAN_8021Q is not set | ||
293 | # CONFIG_DECNET is not set | ||
294 | # CONFIG_LLC2 is not set | ||
295 | # CONFIG_IPX is not set | ||
296 | # CONFIG_ATALK is not set | ||
297 | # CONFIG_X25 is not set | ||
298 | # CONFIG_LAPB is not set | ||
299 | # CONFIG_ECONET is not set | ||
300 | # CONFIG_WAN_ROUTER is not set | ||
301 | # CONFIG_NET_SCHED is not set | ||
302 | |||
303 | # | ||
304 | # Network testing | ||
305 | # | ||
306 | # CONFIG_NET_PKTGEN is not set | ||
307 | # CONFIG_HAMRADIO is not set | ||
308 | # CONFIG_IRDA is not set | ||
309 | # CONFIG_BT is not set | ||
310 | # CONFIG_AF_RXRPC is not set | ||
311 | |||
312 | # | ||
313 | # Wireless | ||
314 | # | ||
315 | # CONFIG_CFG80211 is not set | ||
316 | # CONFIG_WIRELESS_EXT is not set | ||
317 | # CONFIG_MAC80211 is not set | ||
318 | # CONFIG_IEEE80211 is not set | ||
319 | # CONFIG_RFKILL is not set | ||
320 | # CONFIG_NET_9P is not set | ||
321 | |||
322 | # | ||
323 | # Device Drivers | ||
324 | # | ||
325 | |||
326 | # | ||
327 | # Generic Driver Options | ||
328 | # | ||
329 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
330 | CONFIG_STANDALONE=y | ||
331 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
332 | # CONFIG_FW_LOADER is not set | ||
333 | # CONFIG_DEBUG_DRIVER is not set | ||
334 | # CONFIG_DEBUG_DEVRES is not set | ||
335 | # CONFIG_SYS_HYPERVISOR is not set | ||
336 | # CONFIG_CONNECTOR is not set | ||
337 | CONFIG_MTD=y | ||
338 | # CONFIG_MTD_DEBUG is not set | ||
339 | # CONFIG_MTD_CONCAT is not set | ||
340 | # CONFIG_MTD_PARTITIONS is not set | ||
341 | |||
342 | # | ||
343 | # User Modules And Translation Layers | ||
344 | # | ||
345 | CONFIG_MTD_CHAR=y | ||
346 | CONFIG_MTD_BLKDEVS=y | ||
347 | CONFIG_MTD_BLOCK=y | ||
348 | # CONFIG_FTL is not set | ||
349 | # CONFIG_NFTL is not set | ||
350 | # CONFIG_INFTL is not set | ||
351 | # CONFIG_RFD_FTL is not set | ||
352 | # CONFIG_SSFDC is not set | ||
353 | # CONFIG_MTD_OOPS is not set | ||
354 | |||
355 | # | ||
356 | # RAM/ROM/Flash chip drivers | ||
357 | # | ||
358 | CONFIG_MTD_CFI=y | ||
359 | # CONFIG_MTD_JEDECPROBE is not set | ||
360 | CONFIG_MTD_GEN_PROBE=y | ||
361 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
362 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
363 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
364 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
365 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
366 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
367 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
368 | CONFIG_MTD_CFI_I1=y | ||
369 | CONFIG_MTD_CFI_I2=y | ||
370 | # CONFIG_MTD_CFI_I4 is not set | ||
371 | # CONFIG_MTD_CFI_I8 is not set | ||
372 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
373 | CONFIG_MTD_CFI_AMDSTD=y | ||
374 | # CONFIG_MTD_CFI_STAA is not set | ||
375 | CONFIG_MTD_CFI_UTIL=y | ||
376 | # CONFIG_MTD_RAM is not set | ||
377 | # CONFIG_MTD_ROM is not set | ||
378 | # CONFIG_MTD_ABSENT is not set | ||
379 | |||
380 | # | ||
381 | # Mapping drivers for chip access | ||
382 | # | ||
383 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
384 | # CONFIG_MTD_PHYSMAP is not set | ||
385 | CONFIG_MTD_PHYSMAP_OF=y | ||
386 | # CONFIG_MTD_CFI_FLAGADM is not set | ||
387 | # CONFIG_MTD_PLATRAM is not set | ||
388 | |||
389 | # | ||
390 | # Self-contained MTD device drivers | ||
391 | # | ||
392 | # CONFIG_MTD_SLRAM is not set | ||
393 | # CONFIG_MTD_PHRAM is not set | ||
394 | # CONFIG_MTD_MTDRAM is not set | ||
395 | # CONFIG_MTD_BLOCK2MTD is not set | ||
396 | |||
397 | # | ||
398 | # Disk-On-Chip Device Drivers | ||
399 | # | ||
400 | # CONFIG_MTD_DOC2000 is not set | ||
401 | # CONFIG_MTD_DOC2001 is not set | ||
402 | # CONFIG_MTD_DOC2001PLUS is not set | ||
403 | # CONFIG_MTD_NAND is not set | ||
404 | # CONFIG_MTD_ONENAND is not set | ||
405 | |||
406 | # | ||
407 | # UBI - Unsorted block images | ||
408 | # | ||
409 | # CONFIG_MTD_UBI is not set | ||
410 | CONFIG_OF_DEVICE=y | ||
411 | # CONFIG_PARPORT is not set | ||
412 | # CONFIG_BLK_DEV is not set | ||
413 | # CONFIG_MISC_DEVICES is not set | ||
414 | # CONFIG_IDE is not set | ||
415 | |||
416 | # | ||
417 | # SCSI device support | ||
418 | # | ||
419 | # CONFIG_RAID_ATTRS is not set | ||
420 | # CONFIG_SCSI is not set | ||
421 | # CONFIG_SCSI_DMA is not set | ||
422 | # CONFIG_SCSI_NETLINK is not set | ||
423 | # CONFIG_ATA is not set | ||
424 | # CONFIG_MD is not set | ||
425 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
426 | CONFIG_NETDEVICES=y | ||
427 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
428 | # CONFIG_DUMMY is not set | ||
429 | # CONFIG_BONDING is not set | ||
430 | # CONFIG_MACVLAN is not set | ||
431 | # CONFIG_EQUALIZER is not set | ||
432 | # CONFIG_TUN is not set | ||
433 | # CONFIG_VETH is not set | ||
434 | CONFIG_PHYLIB=y | ||
435 | |||
436 | # | ||
437 | # MII PHY device drivers | ||
438 | # | ||
439 | # CONFIG_MARVELL_PHY is not set | ||
440 | CONFIG_DAVICOM_PHY=y | ||
441 | # CONFIG_QSEMI_PHY is not set | ||
442 | # CONFIG_LXT_PHY is not set | ||
443 | # CONFIG_CICADA_PHY is not set | ||
444 | # CONFIG_VITESSE_PHY is not set | ||
445 | # CONFIG_SMSC_PHY is not set | ||
446 | # CONFIG_BROADCOM_PHY is not set | ||
447 | # CONFIG_ICPLUS_PHY is not set | ||
448 | # CONFIG_FIXED_PHY is not set | ||
449 | # CONFIG_MDIO_BITBANG is not set | ||
450 | CONFIG_NET_ETHERNET=y | ||
451 | CONFIG_MII=y | ||
452 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
453 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
454 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
455 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
456 | # CONFIG_B44 is not set | ||
457 | CONFIG_FS_ENET=y | ||
458 | # CONFIG_FS_ENET_HAS_SCC is not set | ||
459 | CONFIG_FS_ENET_HAS_FEC=y | ||
460 | CONFIG_FS_ENET_MDIO_FEC=y | ||
461 | # CONFIG_NETDEV_1000 is not set | ||
462 | # CONFIG_NETDEV_10000 is not set | ||
463 | |||
464 | # | ||
465 | # Wireless LAN | ||
466 | # | ||
467 | # CONFIG_WLAN_PRE80211 is not set | ||
468 | # CONFIG_WLAN_80211 is not set | ||
469 | # CONFIG_WAN is not set | ||
470 | # CONFIG_PPP is not set | ||
471 | # CONFIG_SLIP is not set | ||
472 | # CONFIG_SHAPER is not set | ||
473 | # CONFIG_NETCONSOLE is not set | ||
474 | # CONFIG_NETPOLL is not set | ||
475 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
476 | # CONFIG_ISDN is not set | ||
477 | # CONFIG_PHONE is not set | ||
478 | |||
479 | # | ||
480 | # Input device support | ||
481 | # | ||
482 | CONFIG_INPUT=y | ||
483 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
484 | # CONFIG_INPUT_POLLDEV is not set | ||
485 | |||
486 | # | ||
487 | # Userland interfaces | ||
488 | # | ||
489 | CONFIG_INPUT_MOUSEDEV=y | ||
490 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
491 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
492 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
493 | # CONFIG_INPUT_JOYDEV is not set | ||
494 | # CONFIG_INPUT_EVDEV is not set | ||
495 | # CONFIG_INPUT_EVBUG is not set | ||
496 | |||
497 | # | ||
498 | # Input Device Drivers | ||
499 | # | ||
500 | CONFIG_INPUT_KEYBOARD=y | ||
501 | CONFIG_KEYBOARD_ATKBD=y | ||
502 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
503 | # CONFIG_KEYBOARD_LKKBD is not set | ||
504 | # CONFIG_KEYBOARD_XTKBD is not set | ||
505 | # CONFIG_KEYBOARD_NEWTON is not set | ||
506 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
507 | CONFIG_INPUT_MOUSE=y | ||
508 | CONFIG_MOUSE_PS2=y | ||
509 | CONFIG_MOUSE_PS2_ALPS=y | ||
510 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
511 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
512 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
513 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
514 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
515 | # CONFIG_MOUSE_SERIAL is not set | ||
516 | # CONFIG_MOUSE_VSXXXAA is not set | ||
517 | # CONFIG_INPUT_JOYSTICK is not set | ||
518 | # CONFIG_INPUT_TABLET is not set | ||
519 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
520 | # CONFIG_INPUT_MISC is not set | ||
521 | |||
522 | # | ||
523 | # Hardware I/O ports | ||
524 | # | ||
525 | CONFIG_SERIO=y | ||
526 | CONFIG_SERIO_I8042=y | ||
527 | CONFIG_SERIO_SERPORT=y | ||
528 | CONFIG_SERIO_LIBPS2=y | ||
529 | # CONFIG_SERIO_RAW is not set | ||
530 | # CONFIG_GAMEPORT is not set | ||
531 | |||
532 | # | ||
533 | # Character devices | ||
534 | # | ||
535 | # CONFIG_VT is not set | ||
536 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
537 | |||
538 | # | ||
539 | # Serial drivers | ||
540 | # | ||
541 | # CONFIG_SERIAL_8250 is not set | ||
542 | |||
543 | # | ||
544 | # Non-8250 serial port support | ||
545 | # | ||
546 | # CONFIG_SERIAL_UARTLITE is not set | ||
547 | CONFIG_SERIAL_CORE=y | ||
548 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
549 | CONFIG_SERIAL_CPM=y | ||
550 | CONFIG_SERIAL_CPM_CONSOLE=y | ||
551 | # CONFIG_SERIAL_CPM_SCC1 is not set | ||
552 | # CONFIG_SERIAL_CPM_SCC2 is not set | ||
553 | # CONFIG_SERIAL_CPM_SCC3 is not set | ||
554 | # CONFIG_SERIAL_CPM_SCC4 is not set | ||
555 | CONFIG_SERIAL_CPM_SMC1=y | ||
556 | CONFIG_SERIAL_CPM_SMC2=y | ||
557 | CONFIG_UNIX98_PTYS=y | ||
558 | # CONFIG_LEGACY_PTYS is not set | ||
559 | # CONFIG_IPMI_HANDLER is not set | ||
560 | CONFIG_HW_RANDOM=y | ||
561 | # CONFIG_NVRAM is not set | ||
562 | CONFIG_GEN_RTC=y | ||
563 | # CONFIG_GEN_RTC_X is not set | ||
564 | # CONFIG_R3964 is not set | ||
565 | # CONFIG_RAW_DRIVER is not set | ||
566 | # CONFIG_TCG_TPM is not set | ||
567 | # CONFIG_I2C is not set | ||
568 | |||
569 | # | ||
570 | # SPI support | ||
571 | # | ||
572 | # CONFIG_SPI is not set | ||
573 | # CONFIG_SPI_MASTER is not set | ||
574 | # CONFIG_W1 is not set | ||
575 | # CONFIG_POWER_SUPPLY is not set | ||
576 | # CONFIG_HWMON is not set | ||
577 | # CONFIG_WATCHDOG is not set | ||
578 | |||
579 | # | ||
580 | # Sonics Silicon Backplane | ||
581 | # | ||
582 | CONFIG_SSB_POSSIBLE=y | ||
583 | # CONFIG_SSB is not set | ||
584 | |||
585 | # | ||
586 | # Multifunction device drivers | ||
587 | # | ||
588 | # CONFIG_MFD_SM501 is not set | ||
589 | |||
590 | # | ||
591 | # Multimedia devices | ||
592 | # | ||
593 | # CONFIG_VIDEO_DEV is not set | ||
594 | # CONFIG_DVB_CORE is not set | ||
595 | CONFIG_DAB=y | ||
596 | |||
597 | # | ||
598 | # Graphics support | ||
599 | # | ||
600 | # CONFIG_VGASTATE is not set | ||
601 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
602 | # CONFIG_FB is not set | ||
603 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
604 | |||
605 | # | ||
606 | # Display device support | ||
607 | # | ||
608 | # CONFIG_DISPLAY_SUPPORT is not set | ||
609 | |||
610 | # | ||
611 | # Sound | ||
612 | # | ||
613 | # CONFIG_SOUND is not set | ||
614 | # CONFIG_HID_SUPPORT is not set | ||
615 | # CONFIG_USB_SUPPORT is not set | ||
616 | # CONFIG_MMC is not set | ||
617 | # CONFIG_NEW_LEDS is not set | ||
618 | # CONFIG_EDAC is not set | ||
619 | # CONFIG_RTC_CLASS is not set | ||
620 | |||
621 | # | ||
622 | # Userspace I/O | ||
623 | # | ||
624 | # CONFIG_UIO is not set | ||
625 | |||
626 | # | ||
627 | # File systems | ||
628 | # | ||
629 | # CONFIG_EXT2_FS is not set | ||
630 | # CONFIG_EXT3_FS is not set | ||
631 | # CONFIG_EXT4DEV_FS is not set | ||
632 | # CONFIG_REISERFS_FS is not set | ||
633 | # CONFIG_JFS_FS is not set | ||
634 | # CONFIG_FS_POSIX_ACL is not set | ||
635 | # CONFIG_XFS_FS is not set | ||
636 | # CONFIG_GFS2_FS is not set | ||
637 | # CONFIG_OCFS2_FS is not set | ||
638 | # CONFIG_MINIX_FS is not set | ||
639 | # CONFIG_ROMFS_FS is not set | ||
640 | # CONFIG_INOTIFY is not set | ||
641 | # CONFIG_QUOTA is not set | ||
642 | # CONFIG_DNOTIFY is not set | ||
643 | # CONFIG_AUTOFS_FS is not set | ||
644 | # CONFIG_AUTOFS4_FS is not set | ||
645 | # CONFIG_FUSE_FS is not set | ||
646 | |||
647 | # | ||
648 | # CD-ROM/DVD Filesystems | ||
649 | # | ||
650 | # CONFIG_ISO9660_FS is not set | ||
651 | # CONFIG_UDF_FS is not set | ||
652 | |||
653 | # | ||
654 | # DOS/FAT/NT Filesystems | ||
655 | # | ||
656 | # CONFIG_MSDOS_FS is not set | ||
657 | # CONFIG_VFAT_FS is not set | ||
658 | # CONFIG_NTFS_FS is not set | ||
659 | |||
660 | # | ||
661 | # Pseudo filesystems | ||
662 | # | ||
663 | CONFIG_PROC_FS=y | ||
664 | # CONFIG_PROC_KCORE is not set | ||
665 | CONFIG_PROC_SYSCTL=y | ||
666 | CONFIG_SYSFS=y | ||
667 | CONFIG_TMPFS=y | ||
668 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
669 | # CONFIG_HUGETLB_PAGE is not set | ||
670 | # CONFIG_CONFIGFS_FS is not set | ||
671 | |||
672 | # | ||
673 | # Miscellaneous filesystems | ||
674 | # | ||
675 | # CONFIG_ADFS_FS is not set | ||
676 | # CONFIG_AFFS_FS is not set | ||
677 | # CONFIG_HFS_FS is not set | ||
678 | # CONFIG_HFSPLUS_FS is not set | ||
679 | # CONFIG_BEFS_FS is not set | ||
680 | # CONFIG_BFS_FS is not set | ||
681 | # CONFIG_EFS_FS is not set | ||
682 | # CONFIG_JFFS2_FS is not set | ||
683 | CONFIG_CRAMFS=y | ||
684 | # CONFIG_VXFS_FS is not set | ||
685 | # CONFIG_HPFS_FS is not set | ||
686 | # CONFIG_QNX4FS_FS is not set | ||
687 | # CONFIG_SYSV_FS is not set | ||
688 | # CONFIG_UFS_FS is not set | ||
689 | CONFIG_NETWORK_FILESYSTEMS=y | ||
690 | CONFIG_NFS_FS=y | ||
691 | CONFIG_NFS_V3=y | ||
692 | # CONFIG_NFS_V3_ACL is not set | ||
693 | # CONFIG_NFS_V4 is not set | ||
694 | # CONFIG_NFS_DIRECTIO is not set | ||
695 | # CONFIG_NFSD is not set | ||
696 | CONFIG_ROOT_NFS=y | ||
697 | CONFIG_LOCKD=y | ||
698 | CONFIG_LOCKD_V4=y | ||
699 | CONFIG_NFS_COMMON=y | ||
700 | CONFIG_SUNRPC=y | ||
701 | # CONFIG_SUNRPC_BIND34 is not set | ||
702 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
703 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
704 | # CONFIG_SMB_FS is not set | ||
705 | # CONFIG_CIFS is not set | ||
706 | # CONFIG_NCP_FS is not set | ||
707 | # CONFIG_CODA_FS is not set | ||
708 | # CONFIG_AFS_FS is not set | ||
709 | |||
710 | # | ||
711 | # Partition Types | ||
712 | # | ||
713 | CONFIG_PARTITION_ADVANCED=y | ||
714 | # CONFIG_ACORN_PARTITION is not set | ||
715 | # CONFIG_OSF_PARTITION is not set | ||
716 | # CONFIG_AMIGA_PARTITION is not set | ||
717 | # CONFIG_ATARI_PARTITION is not set | ||
718 | # CONFIG_MAC_PARTITION is not set | ||
719 | CONFIG_MSDOS_PARTITION=y | ||
720 | # CONFIG_BSD_DISKLABEL is not set | ||
721 | # CONFIG_MINIX_SUBPARTITION is not set | ||
722 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
723 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
724 | # CONFIG_LDM_PARTITION is not set | ||
725 | # CONFIG_SGI_PARTITION is not set | ||
726 | # CONFIG_ULTRIX_PARTITION is not set | ||
727 | # CONFIG_SUN_PARTITION is not set | ||
728 | # CONFIG_KARMA_PARTITION is not set | ||
729 | # CONFIG_EFI_PARTITION is not set | ||
730 | # CONFIG_SYSV68_PARTITION is not set | ||
731 | # CONFIG_NLS is not set | ||
732 | # CONFIG_DLM is not set | ||
733 | # CONFIG_UCC_SLOW is not set | ||
734 | |||
735 | # | ||
736 | # Library routines | ||
737 | # | ||
738 | # CONFIG_CRC_CCITT is not set | ||
739 | # CONFIG_CRC16 is not set | ||
740 | # CONFIG_CRC_ITU_T is not set | ||
741 | # CONFIG_CRC32 is not set | ||
742 | # CONFIG_CRC7 is not set | ||
743 | # CONFIG_LIBCRC32C is not set | ||
744 | CONFIG_ZLIB_INFLATE=y | ||
745 | CONFIG_HAS_IOMEM=y | ||
746 | CONFIG_HAS_IOPORT=y | ||
747 | CONFIG_HAS_DMA=y | ||
748 | CONFIG_INSTRUMENTATION=y | ||
749 | # CONFIG_PROFILING is not set | ||
750 | # CONFIG_MARKERS is not set | ||
751 | |||
752 | # | ||
753 | # Kernel hacking | ||
754 | # | ||
755 | # CONFIG_PRINTK_TIME is not set | ||
756 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
757 | CONFIG_ENABLE_MUST_CHECK=y | ||
758 | CONFIG_MAGIC_SYSRQ=y | ||
759 | # CONFIG_UNUSED_SYMBOLS is not set | ||
760 | # CONFIG_DEBUG_FS is not set | ||
761 | # CONFIG_HEADERS_CHECK is not set | ||
762 | CONFIG_DEBUG_KERNEL=y | ||
763 | # CONFIG_DEBUG_SHIRQ is not set | ||
764 | CONFIG_DETECT_SOFTLOCKUP=y | ||
765 | CONFIG_SCHED_DEBUG=y | ||
766 | # CONFIG_SCHEDSTATS is not set | ||
767 | # CONFIG_TIMER_STATS is not set | ||
768 | # CONFIG_SLUB_DEBUG_ON is not set | ||
769 | # CONFIG_DEBUG_SPINLOCK is not set | ||
770 | # CONFIG_DEBUG_MUTEXES is not set | ||
771 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
772 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
773 | # CONFIG_DEBUG_KOBJECT is not set | ||
774 | CONFIG_DEBUG_BUGVERBOSE=y | ||
775 | CONFIG_DEBUG_INFO=y | ||
776 | # CONFIG_DEBUG_VM is not set | ||
777 | # CONFIG_DEBUG_LIST is not set | ||
778 | # CONFIG_DEBUG_SG is not set | ||
779 | CONFIG_FORCED_INLINING=y | ||
780 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
781 | # CONFIG_FAULT_INJECTION is not set | ||
782 | # CONFIG_SAMPLES is not set | ||
783 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
784 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
785 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
786 | # CONFIG_DEBUGGER is not set | ||
787 | # CONFIG_BDI_SWITCH is not set | ||
788 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
789 | |||
790 | # | ||
791 | # Security options | ||
792 | # | ||
793 | # CONFIG_KEYS is not set | ||
794 | # CONFIG_SECURITY is not set | ||
795 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
796 | # CONFIG_CRYPTO is not set | ||
797 | # CONFIG_PPC_CLOCK is not set | ||
798 | CONFIG_PPC_LIB_RHEAP=y | ||
diff --git a/arch/powerpc/configs/adder875-uboot_defconfig b/arch/powerpc/configs/adder875-uboot_defconfig new file mode 100644 index 000000000000..1faf7ef59a23 --- /dev/null +++ b/arch/powerpc/configs/adder875-uboot_defconfig | |||
@@ -0,0 +1,798 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.24-rc6 | ||
4 | # Thu Jan 17 16:17:18 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=y | ||
14 | # CONFIG_40x is not set | ||
15 | # CONFIG_44x is not set | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_8xx=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_IRQ_PER_CPU=y | ||
30 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
31 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
32 | CONFIG_GENERIC_HWEIGHT=y | ||
33 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
34 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
35 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
36 | CONFIG_PPC=y | ||
37 | CONFIG_EARLY_PRINTK=y | ||
38 | CONFIG_GENERIC_NVRAM=y | ||
39 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
40 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
41 | CONFIG_PPC_OF=y | ||
42 | CONFIG_OF=y | ||
43 | # CONFIG_PPC_UDBG_16550 is not set | ||
44 | # CONFIG_GENERIC_TBSYNC is not set | ||
45 | CONFIG_AUDIT_ARCH=y | ||
46 | CONFIG_GENERIC_BUG=y | ||
47 | # CONFIG_DEFAULT_UIMAGE is not set | ||
48 | CONFIG_REDBOOT=y | ||
49 | # CONFIG_PPC_DCR_NATIVE is not set | ||
50 | # CONFIG_PPC_DCR_MMIO is not set | ||
51 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
52 | |||
53 | # | ||
54 | # General setup | ||
55 | # | ||
56 | CONFIG_EXPERIMENTAL=y | ||
57 | CONFIG_BROKEN_ON_SMP=y | ||
58 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
59 | CONFIG_LOCALVERSION="" | ||
60 | CONFIG_LOCALVERSION_AUTO=y | ||
61 | # CONFIG_SWAP is not set | ||
62 | CONFIG_SYSVIPC=y | ||
63 | CONFIG_SYSVIPC_SYSCTL=y | ||
64 | # CONFIG_POSIX_MQUEUE is not set | ||
65 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
66 | # CONFIG_TASKSTATS is not set | ||
67 | # CONFIG_USER_NS is not set | ||
68 | # CONFIG_PID_NS is not set | ||
69 | # CONFIG_AUDIT is not set | ||
70 | # CONFIG_IKCONFIG is not set | ||
71 | CONFIG_LOG_BUF_SHIFT=14 | ||
72 | # CONFIG_CGROUPS is not set | ||
73 | CONFIG_FAIR_GROUP_SCHED=y | ||
74 | CONFIG_FAIR_USER_SCHED=y | ||
75 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
76 | CONFIG_SYSFS_DEPRECATED=y | ||
77 | # CONFIG_RELAY is not set | ||
78 | # CONFIG_BLK_DEV_INITRD is not set | ||
79 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
80 | CONFIG_SYSCTL=y | ||
81 | CONFIG_EMBEDDED=y | ||
82 | # CONFIG_SYSCTL_SYSCALL is not set | ||
83 | CONFIG_KALLSYMS=y | ||
84 | # CONFIG_KALLSYMS_ALL is not set | ||
85 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
86 | CONFIG_HOTPLUG=y | ||
87 | CONFIG_PRINTK=y | ||
88 | CONFIG_BUG=y | ||
89 | # CONFIG_ELF_CORE is not set | ||
90 | # CONFIG_BASE_FULL is not set | ||
91 | # CONFIG_FUTEX is not set | ||
92 | CONFIG_ANON_INODES=y | ||
93 | CONFIG_EPOLL=y | ||
94 | CONFIG_SIGNALFD=y | ||
95 | CONFIG_EVENTFD=y | ||
96 | CONFIG_SHMEM=y | ||
97 | # CONFIG_VM_EVENT_COUNTERS is not set | ||
98 | CONFIG_SLUB_DEBUG=y | ||
99 | # CONFIG_SLAB is not set | ||
100 | CONFIG_SLUB=y | ||
101 | # CONFIG_SLOB is not set | ||
102 | # CONFIG_TINY_SHMEM is not set | ||
103 | CONFIG_BASE_SMALL=1 | ||
104 | # CONFIG_MODULES is not set | ||
105 | CONFIG_BLOCK=y | ||
106 | # CONFIG_LBD is not set | ||
107 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
108 | # CONFIG_LSF is not set | ||
109 | # CONFIG_BLK_DEV_BSG is not set | ||
110 | |||
111 | # | ||
112 | # IO Schedulers | ||
113 | # | ||
114 | CONFIG_IOSCHED_NOOP=y | ||
115 | # CONFIG_IOSCHED_AS is not set | ||
116 | CONFIG_IOSCHED_DEADLINE=y | ||
117 | # CONFIG_IOSCHED_CFQ is not set | ||
118 | # CONFIG_DEFAULT_AS is not set | ||
119 | CONFIG_DEFAULT_DEADLINE=y | ||
120 | # CONFIG_DEFAULT_CFQ is not set | ||
121 | # CONFIG_DEFAULT_NOOP is not set | ||
122 | CONFIG_DEFAULT_IOSCHED="deadline" | ||
123 | |||
124 | # | ||
125 | # Platform support | ||
126 | # | ||
127 | # CONFIG_PPC_MPC52xx is not set | ||
128 | # CONFIG_PPC_MPC5200 is not set | ||
129 | # CONFIG_PPC_CELL is not set | ||
130 | # CONFIG_PPC_CELL_NATIVE is not set | ||
131 | CONFIG_CPM1=y | ||
132 | # CONFIG_MPC8XXFADS is not set | ||
133 | # CONFIG_MPC86XADS is not set | ||
134 | # CONFIG_MPC885ADS is not set | ||
135 | # CONFIG_PPC_EP88XC is not set | ||
136 | CONFIG_PPC_ADDER875=y | ||
137 | |||
138 | # | ||
139 | # MPC8xx CPM Options | ||
140 | # | ||
141 | |||
142 | # | ||
143 | # Generic MPC8xx Options | ||
144 | # | ||
145 | CONFIG_8xx_COPYBACK=y | ||
146 | # CONFIG_8xx_CPU6 is not set | ||
147 | CONFIG_8xx_CPU15=y | ||
148 | CONFIG_NO_UCODE_PATCH=y | ||
149 | # CONFIG_USB_SOF_UCODE_PATCH is not set | ||
150 | # CONFIG_I2C_SPI_UCODE_PATCH is not set | ||
151 | # CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set | ||
152 | # CONFIG_PQ2ADS is not set | ||
153 | # CONFIG_MPIC is not set | ||
154 | # CONFIG_MPIC_WEIRD is not set | ||
155 | # CONFIG_PPC_I8259 is not set | ||
156 | # CONFIG_PPC_RTAS is not set | ||
157 | # CONFIG_MMIO_NVRAM is not set | ||
158 | # CONFIG_PPC_MPC106 is not set | ||
159 | # CONFIG_PPC_970_NAP is not set | ||
160 | # CONFIG_PPC_INDIRECT_IO is not set | ||
161 | # CONFIG_GENERIC_IOMAP is not set | ||
162 | # CONFIG_CPU_FREQ is not set | ||
163 | # CONFIG_CPM2 is not set | ||
164 | CONFIG_PPC_CPM_NEW_BINDING=y | ||
165 | # CONFIG_FSL_ULI1575 is not set | ||
166 | CONFIG_CPM=y | ||
167 | |||
168 | # | ||
169 | # Kernel options | ||
170 | # | ||
171 | # CONFIG_HIGHMEM is not set | ||
172 | # CONFIG_TICK_ONESHOT is not set | ||
173 | # CONFIG_NO_HZ is not set | ||
174 | # CONFIG_HIGH_RES_TIMERS is not set | ||
175 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
176 | # CONFIG_HZ_100 is not set | ||
177 | # CONFIG_HZ_250 is not set | ||
178 | # CONFIG_HZ_300 is not set | ||
179 | CONFIG_HZ_1000=y | ||
180 | CONFIG_HZ=1000 | ||
181 | CONFIG_PREEMPT_NONE=y | ||
182 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
183 | # CONFIG_PREEMPT is not set | ||
184 | CONFIG_BINFMT_ELF=y | ||
185 | # CONFIG_BINFMT_MISC is not set | ||
186 | # CONFIG_MATH_EMULATION is not set | ||
187 | # CONFIG_8XX_MINIMAL_FPEMU is not set | ||
188 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
189 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
190 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
191 | CONFIG_SELECT_MEMORY_MODEL=y | ||
192 | CONFIG_FLATMEM_MANUAL=y | ||
193 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
194 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
195 | CONFIG_FLATMEM=y | ||
196 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
197 | # CONFIG_SPARSEMEM_STATIC is not set | ||
198 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
199 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
200 | # CONFIG_RESOURCES_64BIT is not set | ||
201 | CONFIG_ZONE_DMA_FLAG=1 | ||
202 | CONFIG_BOUNCE=y | ||
203 | CONFIG_VIRT_TO_BUS=y | ||
204 | # CONFIG_PROC_DEVICETREE is not set | ||
205 | # CONFIG_CMDLINE_BOOL is not set | ||
206 | # CONFIG_PM is not set | ||
207 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
208 | CONFIG_HIBERNATION_UP_POSSIBLE=y | ||
209 | # CONFIG_SECCOMP is not set | ||
210 | CONFIG_WANT_DEVICE_TREE=y | ||
211 | CONFIG_DEVICE_TREE="adder875-uboot.dts" | ||
212 | CONFIG_ISA_DMA_API=y | ||
213 | |||
214 | # | ||
215 | # Bus options | ||
216 | # | ||
217 | CONFIG_ZONE_DMA=y | ||
218 | CONFIG_FSL_SOC=y | ||
219 | # CONFIG_PCI is not set | ||
220 | # CONFIG_PCI_DOMAINS is not set | ||
221 | # CONFIG_PCI_SYSCALL is not set | ||
222 | # CONFIG_PCI_QSPAN is not set | ||
223 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
224 | # CONFIG_PCCARD is not set | ||
225 | |||
226 | # | ||
227 | # Advanced setup | ||
228 | # | ||
229 | # CONFIG_ADVANCED_OPTIONS is not set | ||
230 | |||
231 | # | ||
232 | # Default settings for advanced configuration options are used | ||
233 | # | ||
234 | CONFIG_HIGHMEM_START=0xfe000000 | ||
235 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
236 | CONFIG_KERNEL_START=0xc0000000 | ||
237 | CONFIG_TASK_SIZE=0x80000000 | ||
238 | CONFIG_CONSISTENT_START=0xfd000000 | ||
239 | CONFIG_CONSISTENT_SIZE=0x00200000 | ||
240 | CONFIG_BOOT_LOAD=0x00400000 | ||
241 | |||
242 | # | ||
243 | # Networking | ||
244 | # | ||
245 | CONFIG_NET=y | ||
246 | |||
247 | # | ||
248 | # Networking options | ||
249 | # | ||
250 | CONFIG_PACKET=y | ||
251 | # CONFIG_PACKET_MMAP is not set | ||
252 | CONFIG_UNIX=y | ||
253 | # CONFIG_NET_KEY is not set | ||
254 | CONFIG_INET=y | ||
255 | CONFIG_IP_MULTICAST=y | ||
256 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
257 | CONFIG_IP_FIB_HASH=y | ||
258 | CONFIG_IP_PNP=y | ||
259 | # CONFIG_IP_PNP_DHCP is not set | ||
260 | # CONFIG_IP_PNP_BOOTP is not set | ||
261 | # CONFIG_IP_PNP_RARP is not set | ||
262 | # CONFIG_NET_IPIP is not set | ||
263 | # CONFIG_NET_IPGRE is not set | ||
264 | # CONFIG_IP_MROUTE is not set | ||
265 | # CONFIG_ARPD is not set | ||
266 | CONFIG_SYN_COOKIES=y | ||
267 | # CONFIG_INET_AH is not set | ||
268 | # CONFIG_INET_ESP is not set | ||
269 | # CONFIG_INET_IPCOMP is not set | ||
270 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
271 | # CONFIG_INET_TUNNEL is not set | ||
272 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
273 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
274 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
275 | # CONFIG_INET_LRO is not set | ||
276 | CONFIG_INET_DIAG=y | ||
277 | CONFIG_INET_TCP_DIAG=y | ||
278 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
279 | CONFIG_TCP_CONG_CUBIC=y | ||
280 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
281 | # CONFIG_TCP_MD5SIG is not set | ||
282 | # CONFIG_IPV6 is not set | ||
283 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
284 | # CONFIG_INET6_TUNNEL is not set | ||
285 | # CONFIG_NETWORK_SECMARK is not set | ||
286 | # CONFIG_NETFILTER is not set | ||
287 | # CONFIG_IP_DCCP is not set | ||
288 | # CONFIG_IP_SCTP is not set | ||
289 | # CONFIG_TIPC is not set | ||
290 | # CONFIG_ATM is not set | ||
291 | # CONFIG_BRIDGE is not set | ||
292 | # CONFIG_VLAN_8021Q is not set | ||
293 | # CONFIG_DECNET is not set | ||
294 | # CONFIG_LLC2 is not set | ||
295 | # CONFIG_IPX is not set | ||
296 | # CONFIG_ATALK is not set | ||
297 | # CONFIG_X25 is not set | ||
298 | # CONFIG_LAPB is not set | ||
299 | # CONFIG_ECONET is not set | ||
300 | # CONFIG_WAN_ROUTER is not set | ||
301 | # CONFIG_NET_SCHED is not set | ||
302 | |||
303 | # | ||
304 | # Network testing | ||
305 | # | ||
306 | # CONFIG_NET_PKTGEN is not set | ||
307 | # CONFIG_HAMRADIO is not set | ||
308 | # CONFIG_IRDA is not set | ||
309 | # CONFIG_BT is not set | ||
310 | # CONFIG_AF_RXRPC is not set | ||
311 | |||
312 | # | ||
313 | # Wireless | ||
314 | # | ||
315 | # CONFIG_CFG80211 is not set | ||
316 | # CONFIG_WIRELESS_EXT is not set | ||
317 | # CONFIG_MAC80211 is not set | ||
318 | # CONFIG_IEEE80211 is not set | ||
319 | # CONFIG_RFKILL is not set | ||
320 | # CONFIG_NET_9P is not set | ||
321 | |||
322 | # | ||
323 | # Device Drivers | ||
324 | # | ||
325 | |||
326 | # | ||
327 | # Generic Driver Options | ||
328 | # | ||
329 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
330 | CONFIG_STANDALONE=y | ||
331 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
332 | # CONFIG_FW_LOADER is not set | ||
333 | # CONFIG_DEBUG_DRIVER is not set | ||
334 | # CONFIG_DEBUG_DEVRES is not set | ||
335 | # CONFIG_SYS_HYPERVISOR is not set | ||
336 | # CONFIG_CONNECTOR is not set | ||
337 | CONFIG_MTD=y | ||
338 | # CONFIG_MTD_DEBUG is not set | ||
339 | # CONFIG_MTD_CONCAT is not set | ||
340 | # CONFIG_MTD_PARTITIONS is not set | ||
341 | |||
342 | # | ||
343 | # User Modules And Translation Layers | ||
344 | # | ||
345 | CONFIG_MTD_CHAR=y | ||
346 | CONFIG_MTD_BLKDEVS=y | ||
347 | CONFIG_MTD_BLOCK=y | ||
348 | # CONFIG_FTL is not set | ||
349 | # CONFIG_NFTL is not set | ||
350 | # CONFIG_INFTL is not set | ||
351 | # CONFIG_RFD_FTL is not set | ||
352 | # CONFIG_SSFDC is not set | ||
353 | # CONFIG_MTD_OOPS is not set | ||
354 | |||
355 | # | ||
356 | # RAM/ROM/Flash chip drivers | ||
357 | # | ||
358 | CONFIG_MTD_CFI=y | ||
359 | # CONFIG_MTD_JEDECPROBE is not set | ||
360 | CONFIG_MTD_GEN_PROBE=y | ||
361 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
362 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
363 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
364 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
365 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
366 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
367 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
368 | CONFIG_MTD_CFI_I1=y | ||
369 | CONFIG_MTD_CFI_I2=y | ||
370 | # CONFIG_MTD_CFI_I4 is not set | ||
371 | # CONFIG_MTD_CFI_I8 is not set | ||
372 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
373 | CONFIG_MTD_CFI_AMDSTD=y | ||
374 | # CONFIG_MTD_CFI_STAA is not set | ||
375 | CONFIG_MTD_CFI_UTIL=y | ||
376 | # CONFIG_MTD_RAM is not set | ||
377 | # CONFIG_MTD_ROM is not set | ||
378 | # CONFIG_MTD_ABSENT is not set | ||
379 | |||
380 | # | ||
381 | # Mapping drivers for chip access | ||
382 | # | ||
383 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
384 | # CONFIG_MTD_PHYSMAP is not set | ||
385 | CONFIG_MTD_PHYSMAP_OF=y | ||
386 | # CONFIG_MTD_CFI_FLAGADM is not set | ||
387 | # CONFIG_MTD_PLATRAM is not set | ||
388 | |||
389 | # | ||
390 | # Self-contained MTD device drivers | ||
391 | # | ||
392 | # CONFIG_MTD_SLRAM is not set | ||
393 | # CONFIG_MTD_PHRAM is not set | ||
394 | # CONFIG_MTD_MTDRAM is not set | ||
395 | # CONFIG_MTD_BLOCK2MTD is not set | ||
396 | |||
397 | # | ||
398 | # Disk-On-Chip Device Drivers | ||
399 | # | ||
400 | # CONFIG_MTD_DOC2000 is not set | ||
401 | # CONFIG_MTD_DOC2001 is not set | ||
402 | # CONFIG_MTD_DOC2001PLUS is not set | ||
403 | # CONFIG_MTD_NAND is not set | ||
404 | # CONFIG_MTD_ONENAND is not set | ||
405 | |||
406 | # | ||
407 | # UBI - Unsorted block images | ||
408 | # | ||
409 | # CONFIG_MTD_UBI is not set | ||
410 | CONFIG_OF_DEVICE=y | ||
411 | # CONFIG_PARPORT is not set | ||
412 | # CONFIG_BLK_DEV is not set | ||
413 | # CONFIG_MISC_DEVICES is not set | ||
414 | # CONFIG_IDE is not set | ||
415 | |||
416 | # | ||
417 | # SCSI device support | ||
418 | # | ||
419 | # CONFIG_RAID_ATTRS is not set | ||
420 | # CONFIG_SCSI is not set | ||
421 | # CONFIG_SCSI_DMA is not set | ||
422 | # CONFIG_SCSI_NETLINK is not set | ||
423 | # CONFIG_ATA is not set | ||
424 | # CONFIG_MD is not set | ||
425 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
426 | CONFIG_NETDEVICES=y | ||
427 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
428 | # CONFIG_DUMMY is not set | ||
429 | # CONFIG_BONDING is not set | ||
430 | # CONFIG_MACVLAN is not set | ||
431 | # CONFIG_EQUALIZER is not set | ||
432 | # CONFIG_TUN is not set | ||
433 | # CONFIG_VETH is not set | ||
434 | CONFIG_PHYLIB=y | ||
435 | |||
436 | # | ||
437 | # MII PHY device drivers | ||
438 | # | ||
439 | # CONFIG_MARVELL_PHY is not set | ||
440 | CONFIG_DAVICOM_PHY=y | ||
441 | # CONFIG_QSEMI_PHY is not set | ||
442 | # CONFIG_LXT_PHY is not set | ||
443 | # CONFIG_CICADA_PHY is not set | ||
444 | # CONFIG_VITESSE_PHY is not set | ||
445 | # CONFIG_SMSC_PHY is not set | ||
446 | # CONFIG_BROADCOM_PHY is not set | ||
447 | # CONFIG_ICPLUS_PHY is not set | ||
448 | # CONFIG_FIXED_PHY is not set | ||
449 | # CONFIG_MDIO_BITBANG is not set | ||
450 | CONFIG_NET_ETHERNET=y | ||
451 | CONFIG_MII=y | ||
452 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
453 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
454 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
455 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
456 | # CONFIG_B44 is not set | ||
457 | CONFIG_FS_ENET=y | ||
458 | # CONFIG_FS_ENET_HAS_SCC is not set | ||
459 | CONFIG_FS_ENET_HAS_FEC=y | ||
460 | CONFIG_FS_ENET_MDIO_FEC=y | ||
461 | # CONFIG_NETDEV_1000 is not set | ||
462 | # CONFIG_NETDEV_10000 is not set | ||
463 | |||
464 | # | ||
465 | # Wireless LAN | ||
466 | # | ||
467 | # CONFIG_WLAN_PRE80211 is not set | ||
468 | # CONFIG_WLAN_80211 is not set | ||
469 | # CONFIG_WAN is not set | ||
470 | # CONFIG_PPP is not set | ||
471 | # CONFIG_SLIP is not set | ||
472 | # CONFIG_SHAPER is not set | ||
473 | # CONFIG_NETCONSOLE is not set | ||
474 | # CONFIG_NETPOLL is not set | ||
475 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
476 | # CONFIG_ISDN is not set | ||
477 | # CONFIG_PHONE is not set | ||
478 | |||
479 | # | ||
480 | # Input device support | ||
481 | # | ||
482 | CONFIG_INPUT=y | ||
483 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
484 | # CONFIG_INPUT_POLLDEV is not set | ||
485 | |||
486 | # | ||
487 | # Userland interfaces | ||
488 | # | ||
489 | CONFIG_INPUT_MOUSEDEV=y | ||
490 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
491 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
492 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
493 | # CONFIG_INPUT_JOYDEV is not set | ||
494 | # CONFIG_INPUT_EVDEV is not set | ||
495 | # CONFIG_INPUT_EVBUG is not set | ||
496 | |||
497 | # | ||
498 | # Input Device Drivers | ||
499 | # | ||
500 | CONFIG_INPUT_KEYBOARD=y | ||
501 | CONFIG_KEYBOARD_ATKBD=y | ||
502 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
503 | # CONFIG_KEYBOARD_LKKBD is not set | ||
504 | # CONFIG_KEYBOARD_XTKBD is not set | ||
505 | # CONFIG_KEYBOARD_NEWTON is not set | ||
506 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
507 | CONFIG_INPUT_MOUSE=y | ||
508 | CONFIG_MOUSE_PS2=y | ||
509 | CONFIG_MOUSE_PS2_ALPS=y | ||
510 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
511 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
512 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
513 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
514 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
515 | # CONFIG_MOUSE_SERIAL is not set | ||
516 | # CONFIG_MOUSE_VSXXXAA is not set | ||
517 | # CONFIG_INPUT_JOYSTICK is not set | ||
518 | # CONFIG_INPUT_TABLET is not set | ||
519 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
520 | # CONFIG_INPUT_MISC is not set | ||
521 | |||
522 | # | ||
523 | # Hardware I/O ports | ||
524 | # | ||
525 | CONFIG_SERIO=y | ||
526 | CONFIG_SERIO_I8042=y | ||
527 | CONFIG_SERIO_SERPORT=y | ||
528 | CONFIG_SERIO_LIBPS2=y | ||
529 | # CONFIG_SERIO_RAW is not set | ||
530 | # CONFIG_GAMEPORT is not set | ||
531 | |||
532 | # | ||
533 | # Character devices | ||
534 | # | ||
535 | # CONFIG_VT is not set | ||
536 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
537 | |||
538 | # | ||
539 | # Serial drivers | ||
540 | # | ||
541 | # CONFIG_SERIAL_8250 is not set | ||
542 | |||
543 | # | ||
544 | # Non-8250 serial port support | ||
545 | # | ||
546 | # CONFIG_SERIAL_UARTLITE is not set | ||
547 | CONFIG_SERIAL_CORE=y | ||
548 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
549 | CONFIG_SERIAL_CPM=y | ||
550 | CONFIG_SERIAL_CPM_CONSOLE=y | ||
551 | # CONFIG_SERIAL_CPM_SCC1 is not set | ||
552 | # CONFIG_SERIAL_CPM_SCC2 is not set | ||
553 | # CONFIG_SERIAL_CPM_SCC3 is not set | ||
554 | # CONFIG_SERIAL_CPM_SCC4 is not set | ||
555 | CONFIG_SERIAL_CPM_SMC1=y | ||
556 | CONFIG_SERIAL_CPM_SMC2=y | ||
557 | CONFIG_UNIX98_PTYS=y | ||
558 | # CONFIG_LEGACY_PTYS is not set | ||
559 | # CONFIG_IPMI_HANDLER is not set | ||
560 | CONFIG_HW_RANDOM=y | ||
561 | # CONFIG_NVRAM is not set | ||
562 | CONFIG_GEN_RTC=y | ||
563 | # CONFIG_GEN_RTC_X is not set | ||
564 | # CONFIG_R3964 is not set | ||
565 | # CONFIG_RAW_DRIVER is not set | ||
566 | # CONFIG_TCG_TPM is not set | ||
567 | # CONFIG_I2C is not set | ||
568 | |||
569 | # | ||
570 | # SPI support | ||
571 | # | ||
572 | # CONFIG_SPI is not set | ||
573 | # CONFIG_SPI_MASTER is not set | ||
574 | # CONFIG_W1 is not set | ||
575 | # CONFIG_POWER_SUPPLY is not set | ||
576 | # CONFIG_HWMON is not set | ||
577 | # CONFIG_WATCHDOG is not set | ||
578 | |||
579 | # | ||
580 | # Sonics Silicon Backplane | ||
581 | # | ||
582 | CONFIG_SSB_POSSIBLE=y | ||
583 | # CONFIG_SSB is not set | ||
584 | |||
585 | # | ||
586 | # Multifunction device drivers | ||
587 | # | ||
588 | # CONFIG_MFD_SM501 is not set | ||
589 | |||
590 | # | ||
591 | # Multimedia devices | ||
592 | # | ||
593 | # CONFIG_VIDEO_DEV is not set | ||
594 | # CONFIG_DVB_CORE is not set | ||
595 | CONFIG_DAB=y | ||
596 | |||
597 | # | ||
598 | # Graphics support | ||
599 | # | ||
600 | # CONFIG_VGASTATE is not set | ||
601 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
602 | # CONFIG_FB is not set | ||
603 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
604 | |||
605 | # | ||
606 | # Display device support | ||
607 | # | ||
608 | # CONFIG_DISPLAY_SUPPORT is not set | ||
609 | |||
610 | # | ||
611 | # Sound | ||
612 | # | ||
613 | # CONFIG_SOUND is not set | ||
614 | # CONFIG_HID_SUPPORT is not set | ||
615 | # CONFIG_USB_SUPPORT is not set | ||
616 | # CONFIG_MMC is not set | ||
617 | # CONFIG_NEW_LEDS is not set | ||
618 | # CONFIG_EDAC is not set | ||
619 | # CONFIG_RTC_CLASS is not set | ||
620 | |||
621 | # | ||
622 | # Userspace I/O | ||
623 | # | ||
624 | # CONFIG_UIO is not set | ||
625 | |||
626 | # | ||
627 | # File systems | ||
628 | # | ||
629 | # CONFIG_EXT2_FS is not set | ||
630 | # CONFIG_EXT3_FS is not set | ||
631 | # CONFIG_EXT4DEV_FS is not set | ||
632 | # CONFIG_REISERFS_FS is not set | ||
633 | # CONFIG_JFS_FS is not set | ||
634 | # CONFIG_FS_POSIX_ACL is not set | ||
635 | # CONFIG_XFS_FS is not set | ||
636 | # CONFIG_GFS2_FS is not set | ||
637 | # CONFIG_OCFS2_FS is not set | ||
638 | # CONFIG_MINIX_FS is not set | ||
639 | # CONFIG_ROMFS_FS is not set | ||
640 | # CONFIG_INOTIFY is not set | ||
641 | # CONFIG_QUOTA is not set | ||
642 | # CONFIG_DNOTIFY is not set | ||
643 | # CONFIG_AUTOFS_FS is not set | ||
644 | # CONFIG_AUTOFS4_FS is not set | ||
645 | # CONFIG_FUSE_FS is not set | ||
646 | |||
647 | # | ||
648 | # CD-ROM/DVD Filesystems | ||
649 | # | ||
650 | # CONFIG_ISO9660_FS is not set | ||
651 | # CONFIG_UDF_FS is not set | ||
652 | |||
653 | # | ||
654 | # DOS/FAT/NT Filesystems | ||
655 | # | ||
656 | # CONFIG_MSDOS_FS is not set | ||
657 | # CONFIG_VFAT_FS is not set | ||
658 | # CONFIG_NTFS_FS is not set | ||
659 | |||
660 | # | ||
661 | # Pseudo filesystems | ||
662 | # | ||
663 | CONFIG_PROC_FS=y | ||
664 | # CONFIG_PROC_KCORE is not set | ||
665 | CONFIG_PROC_SYSCTL=y | ||
666 | CONFIG_SYSFS=y | ||
667 | CONFIG_TMPFS=y | ||
668 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
669 | # CONFIG_HUGETLB_PAGE is not set | ||
670 | # CONFIG_CONFIGFS_FS is not set | ||
671 | |||
672 | # | ||
673 | # Miscellaneous filesystems | ||
674 | # | ||
675 | # CONFIG_ADFS_FS is not set | ||
676 | # CONFIG_AFFS_FS is not set | ||
677 | # CONFIG_HFS_FS is not set | ||
678 | # CONFIG_HFSPLUS_FS is not set | ||
679 | # CONFIG_BEFS_FS is not set | ||
680 | # CONFIG_BFS_FS is not set | ||
681 | # CONFIG_EFS_FS is not set | ||
682 | # CONFIG_JFFS2_FS is not set | ||
683 | CONFIG_CRAMFS=y | ||
684 | # CONFIG_VXFS_FS is not set | ||
685 | # CONFIG_HPFS_FS is not set | ||
686 | # CONFIG_QNX4FS_FS is not set | ||
687 | # CONFIG_SYSV_FS is not set | ||
688 | # CONFIG_UFS_FS is not set | ||
689 | CONFIG_NETWORK_FILESYSTEMS=y | ||
690 | CONFIG_NFS_FS=y | ||
691 | CONFIG_NFS_V3=y | ||
692 | # CONFIG_NFS_V3_ACL is not set | ||
693 | # CONFIG_NFS_V4 is not set | ||
694 | # CONFIG_NFS_DIRECTIO is not set | ||
695 | # CONFIG_NFSD is not set | ||
696 | CONFIG_ROOT_NFS=y | ||
697 | CONFIG_LOCKD=y | ||
698 | CONFIG_LOCKD_V4=y | ||
699 | CONFIG_NFS_COMMON=y | ||
700 | CONFIG_SUNRPC=y | ||
701 | # CONFIG_SUNRPC_BIND34 is not set | ||
702 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
703 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
704 | # CONFIG_SMB_FS is not set | ||
705 | # CONFIG_CIFS is not set | ||
706 | # CONFIG_NCP_FS is not set | ||
707 | # CONFIG_CODA_FS is not set | ||
708 | # CONFIG_AFS_FS is not set | ||
709 | |||
710 | # | ||
711 | # Partition Types | ||
712 | # | ||
713 | CONFIG_PARTITION_ADVANCED=y | ||
714 | # CONFIG_ACORN_PARTITION is not set | ||
715 | # CONFIG_OSF_PARTITION is not set | ||
716 | # CONFIG_AMIGA_PARTITION is not set | ||
717 | # CONFIG_ATARI_PARTITION is not set | ||
718 | # CONFIG_MAC_PARTITION is not set | ||
719 | CONFIG_MSDOS_PARTITION=y | ||
720 | # CONFIG_BSD_DISKLABEL is not set | ||
721 | # CONFIG_MINIX_SUBPARTITION is not set | ||
722 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
723 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
724 | # CONFIG_LDM_PARTITION is not set | ||
725 | # CONFIG_SGI_PARTITION is not set | ||
726 | # CONFIG_ULTRIX_PARTITION is not set | ||
727 | # CONFIG_SUN_PARTITION is not set | ||
728 | # CONFIG_KARMA_PARTITION is not set | ||
729 | # CONFIG_EFI_PARTITION is not set | ||
730 | # CONFIG_SYSV68_PARTITION is not set | ||
731 | # CONFIG_NLS is not set | ||
732 | # CONFIG_DLM is not set | ||
733 | # CONFIG_UCC_SLOW is not set | ||
734 | |||
735 | # | ||
736 | # Library routines | ||
737 | # | ||
738 | # CONFIG_CRC_CCITT is not set | ||
739 | # CONFIG_CRC16 is not set | ||
740 | # CONFIG_CRC_ITU_T is not set | ||
741 | # CONFIG_CRC32 is not set | ||
742 | # CONFIG_CRC7 is not set | ||
743 | # CONFIG_LIBCRC32C is not set | ||
744 | CONFIG_ZLIB_INFLATE=y | ||
745 | CONFIG_HAS_IOMEM=y | ||
746 | CONFIG_HAS_IOPORT=y | ||
747 | CONFIG_HAS_DMA=y | ||
748 | CONFIG_INSTRUMENTATION=y | ||
749 | # CONFIG_PROFILING is not set | ||
750 | # CONFIG_MARKERS is not set | ||
751 | |||
752 | # | ||
753 | # Kernel hacking | ||
754 | # | ||
755 | # CONFIG_PRINTK_TIME is not set | ||
756 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
757 | CONFIG_ENABLE_MUST_CHECK=y | ||
758 | CONFIG_MAGIC_SYSRQ=y | ||
759 | # CONFIG_UNUSED_SYMBOLS is not set | ||
760 | # CONFIG_DEBUG_FS is not set | ||
761 | # CONFIG_HEADERS_CHECK is not set | ||
762 | CONFIG_DEBUG_KERNEL=y | ||
763 | # CONFIG_DEBUG_SHIRQ is not set | ||
764 | CONFIG_DETECT_SOFTLOCKUP=y | ||
765 | CONFIG_SCHED_DEBUG=y | ||
766 | # CONFIG_SCHEDSTATS is not set | ||
767 | # CONFIG_TIMER_STATS is not set | ||
768 | # CONFIG_SLUB_DEBUG_ON is not set | ||
769 | # CONFIG_DEBUG_SPINLOCK is not set | ||
770 | # CONFIG_DEBUG_MUTEXES is not set | ||
771 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
772 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
773 | # CONFIG_DEBUG_KOBJECT is not set | ||
774 | CONFIG_DEBUG_BUGVERBOSE=y | ||
775 | CONFIG_DEBUG_INFO=y | ||
776 | # CONFIG_DEBUG_VM is not set | ||
777 | # CONFIG_DEBUG_LIST is not set | ||
778 | # CONFIG_DEBUG_SG is not set | ||
779 | CONFIG_FORCED_INLINING=y | ||
780 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
781 | # CONFIG_FAULT_INJECTION is not set | ||
782 | # CONFIG_SAMPLES is not set | ||
783 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
784 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
785 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
786 | # CONFIG_DEBUGGER is not set | ||
787 | # CONFIG_BDI_SWITCH is not set | ||
788 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
789 | |||
790 | # | ||
791 | # Security options | ||
792 | # | ||
793 | # CONFIG_KEYS is not set | ||
794 | # CONFIG_SECURITY is not set | ||
795 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
796 | # CONFIG_CRYPTO is not set | ||
797 | # CONFIG_PPC_CLOCK is not set | ||
798 | CONFIG_PPC_LIB_RHEAP=y | ||
diff --git a/arch/powerpc/configs/ep8248e_defconfig b/arch/powerpc/configs/ep8248e_defconfig new file mode 100644 index 000000000000..01ad5951ade9 --- /dev/null +++ b/arch/powerpc/configs/ep8248e_defconfig | |||
@@ -0,0 +1,821 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.24-rc6 | ||
4 | # Fri Jan 11 14:02:06 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_PPC_STD_MMU=y | ||
19 | CONFIG_PPC_STD_MMU_32=y | ||
20 | # CONFIG_PPC_MM_SLICES is not set | ||
21 | # CONFIG_SMP is not set | ||
22 | CONFIG_PPC32=y | ||
23 | CONFIG_WORD_SIZE=32 | ||
24 | CONFIG_PPC_MERGE=y | ||
25 | CONFIG_MMU=y | ||
26 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
27 | CONFIG_GENERIC_TIME=y | ||
28 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
29 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
30 | CONFIG_GENERIC_HARDIRQS=y | ||
31 | CONFIG_IRQ_PER_CPU=y | ||
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
34 | CONFIG_GENERIC_HWEIGHT=y | ||
35 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
36 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
37 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
38 | CONFIG_PPC=y | ||
39 | CONFIG_EARLY_PRINTK=y | ||
40 | CONFIG_GENERIC_NVRAM=y | ||
41 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
42 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
43 | CONFIG_PPC_OF=y | ||
44 | CONFIG_OF=y | ||
45 | # CONFIG_PPC_UDBG_16550 is not set | ||
46 | # CONFIG_GENERIC_TBSYNC is not set | ||
47 | CONFIG_AUDIT_ARCH=y | ||
48 | CONFIG_GENERIC_BUG=y | ||
49 | # CONFIG_DEFAULT_UIMAGE is not set | ||
50 | # CONFIG_PPC_DCR_NATIVE is not set | ||
51 | # CONFIG_PPC_DCR_MMIO is not set | ||
52 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
53 | |||
54 | # | ||
55 | # General setup | ||
56 | # | ||
57 | # CONFIG_EXPERIMENTAL is not set | ||
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_BSD_PROCESS_ACCT is not set | ||
66 | # CONFIG_TASKSTATS is not set | ||
67 | # CONFIG_AUDIT is not set | ||
68 | CONFIG_IKCONFIG=y | ||
69 | CONFIG_IKCONFIG_PROC=y | ||
70 | CONFIG_LOG_BUF_SHIFT=14 | ||
71 | # CONFIG_CGROUPS is not set | ||
72 | CONFIG_FAIR_GROUP_SCHED=y | ||
73 | CONFIG_FAIR_USER_SCHED=y | ||
74 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
75 | CONFIG_SYSFS_DEPRECATED=y | ||
76 | # CONFIG_RELAY is not set | ||
77 | # CONFIG_BLK_DEV_INITRD is not set | ||
78 | CONFIG_SYSCTL=y | ||
79 | CONFIG_EMBEDDED=y | ||
80 | CONFIG_SYSCTL_SYSCALL=y | ||
81 | CONFIG_KALLSYMS=y | ||
82 | CONFIG_KALLSYMS_ALL=y | ||
83 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
84 | CONFIG_HOTPLUG=y | ||
85 | CONFIG_PRINTK=y | ||
86 | CONFIG_BUG=y | ||
87 | CONFIG_ELF_CORE=y | ||
88 | CONFIG_BASE_FULL=y | ||
89 | CONFIG_FUTEX=y | ||
90 | CONFIG_ANON_INODES=y | ||
91 | CONFIG_EPOLL=y | ||
92 | CONFIG_SIGNALFD=y | ||
93 | CONFIG_EVENTFD=y | ||
94 | CONFIG_SHMEM=y | ||
95 | CONFIG_VM_EVENT_COUNTERS=y | ||
96 | CONFIG_SLAB=y | ||
97 | # CONFIG_SLUB is not set | ||
98 | # CONFIG_SLOB is not set | ||
99 | CONFIG_RT_MUTEXES=y | ||
100 | # CONFIG_TINY_SHMEM is not set | ||
101 | CONFIG_BASE_SMALL=0 | ||
102 | # CONFIG_MODULES is not set | ||
103 | CONFIG_BLOCK=y | ||
104 | # CONFIG_LBD is not set | ||
105 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
106 | # CONFIG_LSF is not set | ||
107 | |||
108 | # | ||
109 | # IO Schedulers | ||
110 | # | ||
111 | CONFIG_IOSCHED_NOOP=y | ||
112 | # CONFIG_IOSCHED_AS is not set | ||
113 | CONFIG_IOSCHED_DEADLINE=y | ||
114 | # CONFIG_IOSCHED_CFQ is not set | ||
115 | # CONFIG_DEFAULT_AS is not set | ||
116 | CONFIG_DEFAULT_DEADLINE=y | ||
117 | # CONFIG_DEFAULT_CFQ is not set | ||
118 | # CONFIG_DEFAULT_NOOP is not set | ||
119 | CONFIG_DEFAULT_IOSCHED="deadline" | ||
120 | |||
121 | # | ||
122 | # Platform support | ||
123 | # | ||
124 | # CONFIG_PPC_MULTIPLATFORM is not set | ||
125 | CONFIG_PPC_82xx=y | ||
126 | # CONFIG_PPC_83xx is not set | ||
127 | # CONFIG_PPC_86xx is not set | ||
128 | # CONFIG_PPC_MPC52xx is not set | ||
129 | # CONFIG_PPC_MPC5200 is not set | ||
130 | # CONFIG_PPC_CELL is not set | ||
131 | # CONFIG_PPC_CELL_NATIVE is not set | ||
132 | # CONFIG_MPC8272_ADS is not set | ||
133 | # CONFIG_PQ2FADS is not set | ||
134 | CONFIG_EP8248E=y | ||
135 | # CONFIG_PQ2ADS is not set | ||
136 | CONFIG_8260=y | ||
137 | CONFIG_8272=y | ||
138 | # CONFIG_MPIC is not set | ||
139 | # CONFIG_MPIC_WEIRD is not set | ||
140 | # CONFIG_PPC_I8259 is not set | ||
141 | # CONFIG_PPC_RTAS is not set | ||
142 | # CONFIG_MMIO_NVRAM is not set | ||
143 | # CONFIG_PPC_MPC106 is not set | ||
144 | # CONFIG_PPC_970_NAP is not set | ||
145 | # CONFIG_PPC_INDIRECT_IO is not set | ||
146 | # CONFIG_GENERIC_IOMAP is not set | ||
147 | # CONFIG_CPU_FREQ is not set | ||
148 | CONFIG_CPM2=y | ||
149 | CONFIG_PPC_CPM_NEW_BINDING=y | ||
150 | # CONFIG_FSL_ULI1575 is not set | ||
151 | CONFIG_CPM=y | ||
152 | |||
153 | # | ||
154 | # Kernel options | ||
155 | # | ||
156 | # CONFIG_HIGHMEM is not set | ||
157 | # CONFIG_TICK_ONESHOT is not set | ||
158 | # CONFIG_NO_HZ is not set | ||
159 | # CONFIG_HIGH_RES_TIMERS is not set | ||
160 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
161 | # CONFIG_HZ_100 is not set | ||
162 | CONFIG_HZ_250=y | ||
163 | # CONFIG_HZ_300 is not set | ||
164 | # CONFIG_HZ_1000 is not set | ||
165 | CONFIG_HZ=250 | ||
166 | CONFIG_PREEMPT_NONE=y | ||
167 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
168 | # CONFIG_PREEMPT is not set | ||
169 | CONFIG_BINFMT_ELF=y | ||
170 | CONFIG_BINFMT_MISC=y | ||
171 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
172 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
173 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
174 | CONFIG_FLATMEM=y | ||
175 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
176 | # CONFIG_SPARSEMEM_STATIC is not set | ||
177 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
178 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
179 | # CONFIG_RESOURCES_64BIT is not set | ||
180 | CONFIG_ZONE_DMA_FLAG=1 | ||
181 | CONFIG_BOUNCE=y | ||
182 | CONFIG_VIRT_TO_BUS=y | ||
183 | CONFIG_PROC_DEVICETREE=y | ||
184 | # CONFIG_CMDLINE_BOOL is not set | ||
185 | # CONFIG_PM is not set | ||
186 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
187 | CONFIG_HIBERNATION_UP_POSSIBLE=y | ||
188 | # CONFIG_SECCOMP is not set | ||
189 | CONFIG_WANT_DEVICE_TREE=y | ||
190 | CONFIG_DEVICE_TREE="ep8248e.dts" | ||
191 | CONFIG_ISA_DMA_API=y | ||
192 | |||
193 | # | ||
194 | # Bus options | ||
195 | # | ||
196 | CONFIG_ZONE_DMA=y | ||
197 | CONFIG_FSL_SOC=y | ||
198 | # CONFIG_PCI is not set | ||
199 | # CONFIG_PCI_DOMAINS is not set | ||
200 | # CONFIG_PCI_SYSCALL is not set | ||
201 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
202 | # CONFIG_PCCARD is not set | ||
203 | |||
204 | # | ||
205 | # Advanced setup | ||
206 | # | ||
207 | # CONFIG_ADVANCED_OPTIONS is not set | ||
208 | |||
209 | # | ||
210 | # Default settings for advanced configuration options are used | ||
211 | # | ||
212 | CONFIG_HIGHMEM_START=0xfe000000 | ||
213 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
214 | CONFIG_KERNEL_START=0xc0000000 | ||
215 | CONFIG_TASK_SIZE=0xc0000000 | ||
216 | CONFIG_BOOT_LOAD=0x00400000 | ||
217 | |||
218 | # | ||
219 | # Networking | ||
220 | # | ||
221 | CONFIG_NET=y | ||
222 | |||
223 | # | ||
224 | # Networking options | ||
225 | # | ||
226 | CONFIG_PACKET=y | ||
227 | # CONFIG_PACKET_MMAP is not set | ||
228 | CONFIG_UNIX=y | ||
229 | CONFIG_XFRM=y | ||
230 | # CONFIG_XFRM_USER is not set | ||
231 | # CONFIG_NET_KEY is not set | ||
232 | CONFIG_INET=y | ||
233 | CONFIG_IP_MULTICAST=y | ||
234 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
235 | CONFIG_IP_FIB_HASH=y | ||
236 | CONFIG_IP_PNP=y | ||
237 | CONFIG_IP_PNP_DHCP=y | ||
238 | CONFIG_IP_PNP_BOOTP=y | ||
239 | # CONFIG_IP_PNP_RARP is not set | ||
240 | # CONFIG_NET_IPIP is not set | ||
241 | # CONFIG_NET_IPGRE is not set | ||
242 | # CONFIG_IP_MROUTE is not set | ||
243 | CONFIG_SYN_COOKIES=y | ||
244 | # CONFIG_INET_AH is not set | ||
245 | # CONFIG_INET_ESP is not set | ||
246 | # CONFIG_INET_IPCOMP is not set | ||
247 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
248 | CONFIG_INET_TUNNEL=y | ||
249 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
250 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
251 | CONFIG_INET_XFRM_MODE_BEET=y | ||
252 | # CONFIG_INET_LRO is not set | ||
253 | CONFIG_INET_DIAG=y | ||
254 | CONFIG_INET_TCP_DIAG=y | ||
255 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
256 | CONFIG_TCP_CONG_CUBIC=y | ||
257 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
258 | # CONFIG_IP_VS is not set | ||
259 | CONFIG_IPV6=y | ||
260 | # CONFIG_IPV6_PRIVACY is not set | ||
261 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
262 | # CONFIG_INET6_AH is not set | ||
263 | # CONFIG_INET6_ESP is not set | ||
264 | # CONFIG_INET6_IPCOMP is not set | ||
265 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
266 | # CONFIG_INET6_TUNNEL is not set | ||
267 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
268 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
269 | CONFIG_INET6_XFRM_MODE_BEET=y | ||
270 | CONFIG_IPV6_SIT=y | ||
271 | # CONFIG_IPV6_TUNNEL is not set | ||
272 | # CONFIG_NETWORK_SECMARK is not set | ||
273 | CONFIG_NETFILTER=y | ||
274 | # CONFIG_NETFILTER_DEBUG is not set | ||
275 | |||
276 | # | ||
277 | # Core Netfilter Configuration | ||
278 | # | ||
279 | # CONFIG_NETFILTER_NETLINK is not set | ||
280 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
281 | # CONFIG_NF_CONNTRACK is not set | ||
282 | # CONFIG_NETFILTER_XTABLES is not set | ||
283 | |||
284 | # | ||
285 | # IP: Netfilter Configuration | ||
286 | # | ||
287 | # CONFIG_IP_NF_QUEUE is not set | ||
288 | # CONFIG_IP_NF_IPTABLES is not set | ||
289 | # CONFIG_IP_NF_ARPTABLES is not set | ||
290 | # CONFIG_BRIDGE is not set | ||
291 | # CONFIG_VLAN_8021Q is not set | ||
292 | # CONFIG_DECNET is not set | ||
293 | # CONFIG_LLC2 is not set | ||
294 | # CONFIG_IPX is not set | ||
295 | # CONFIG_ATALK is not set | ||
296 | # CONFIG_NET_SCHED is not set | ||
297 | |||
298 | # | ||
299 | # Network testing | ||
300 | # | ||
301 | # CONFIG_NET_PKTGEN is not set | ||
302 | # CONFIG_HAMRADIO is not set | ||
303 | # CONFIG_IRDA is not set | ||
304 | # CONFIG_BT is not set | ||
305 | |||
306 | # | ||
307 | # Wireless | ||
308 | # | ||
309 | # CONFIG_CFG80211 is not set | ||
310 | # CONFIG_WIRELESS_EXT is not set | ||
311 | # CONFIG_IEEE80211 is not set | ||
312 | # CONFIG_RFKILL is not set | ||
313 | |||
314 | # | ||
315 | # Device Drivers | ||
316 | # | ||
317 | |||
318 | # | ||
319 | # Generic Driver Options | ||
320 | # | ||
321 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
322 | CONFIG_STANDALONE=y | ||
323 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
324 | # CONFIG_FW_LOADER is not set | ||
325 | # CONFIG_DEBUG_DRIVER is not set | ||
326 | # CONFIG_DEBUG_DEVRES is not set | ||
327 | # CONFIG_SYS_HYPERVISOR is not set | ||
328 | # CONFIG_CONNECTOR is not set | ||
329 | CONFIG_MTD=y | ||
330 | # CONFIG_MTD_DEBUG is not set | ||
331 | # CONFIG_MTD_CONCAT is not set | ||
332 | # CONFIG_MTD_PARTITIONS is not set | ||
333 | |||
334 | # | ||
335 | # User Modules And Translation Layers | ||
336 | # | ||
337 | CONFIG_MTD_CHAR=y | ||
338 | CONFIG_MTD_BLKDEVS=y | ||
339 | CONFIG_MTD_BLOCK=y | ||
340 | # CONFIG_FTL is not set | ||
341 | # CONFIG_NFTL is not set | ||
342 | # CONFIG_INFTL is not set | ||
343 | # CONFIG_RFD_FTL is not set | ||
344 | # CONFIG_SSFDC is not set | ||
345 | # CONFIG_MTD_OOPS is not set | ||
346 | |||
347 | # | ||
348 | # RAM/ROM/Flash chip drivers | ||
349 | # | ||
350 | CONFIG_MTD_CFI=y | ||
351 | # CONFIG_MTD_JEDECPROBE is not set | ||
352 | CONFIG_MTD_GEN_PROBE=y | ||
353 | CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
354 | CONFIG_MTD_CFI_NOSWAP=y | ||
355 | # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set | ||
356 | # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set | ||
357 | CONFIG_MTD_CFI_GEOMETRY=y | ||
358 | # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set | ||
359 | # CONFIG_MTD_MAP_BANK_WIDTH_2 is not set | ||
360 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
361 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
362 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
363 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
364 | # CONFIG_MTD_CFI_I1 is not set | ||
365 | CONFIG_MTD_CFI_I2=y | ||
366 | # CONFIG_MTD_CFI_I4 is not set | ||
367 | # CONFIG_MTD_CFI_I8 is not set | ||
368 | # CONFIG_MTD_OTP is not set | ||
369 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
370 | CONFIG_MTD_CFI_AMDSTD=y | ||
371 | # CONFIG_MTD_CFI_STAA is not set | ||
372 | CONFIG_MTD_CFI_UTIL=y | ||
373 | # CONFIG_MTD_RAM is not set | ||
374 | # CONFIG_MTD_ROM is not set | ||
375 | # CONFIG_MTD_ABSENT is not set | ||
376 | |||
377 | # | ||
378 | # Mapping drivers for chip access | ||
379 | # | ||
380 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
381 | # CONFIG_MTD_PHYSMAP is not set | ||
382 | CONFIG_MTD_PHYSMAP_OF=y | ||
383 | # CONFIG_MTD_PLATRAM is not set | ||
384 | |||
385 | # | ||
386 | # Self-contained MTD device drivers | ||
387 | # | ||
388 | # CONFIG_MTD_SLRAM is not set | ||
389 | # CONFIG_MTD_PHRAM is not set | ||
390 | # CONFIG_MTD_MTDRAM is not set | ||
391 | # CONFIG_MTD_BLOCK2MTD is not set | ||
392 | |||
393 | # | ||
394 | # Disk-On-Chip Device Drivers | ||
395 | # | ||
396 | # CONFIG_MTD_DOC2000 is not set | ||
397 | # CONFIG_MTD_DOC2001 is not set | ||
398 | # CONFIG_MTD_DOC2001PLUS is not set | ||
399 | # CONFIG_MTD_NAND is not set | ||
400 | # CONFIG_MTD_ONENAND is not set | ||
401 | |||
402 | # | ||
403 | # UBI - Unsorted block images | ||
404 | # | ||
405 | # CONFIG_MTD_UBI is not set | ||
406 | CONFIG_OF_DEVICE=y | ||
407 | # CONFIG_PARPORT is not set | ||
408 | CONFIG_BLK_DEV=y | ||
409 | # CONFIG_BLK_DEV_FD is not set | ||
410 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
411 | CONFIG_BLK_DEV_LOOP=y | ||
412 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
413 | # CONFIG_BLK_DEV_NBD is not set | ||
414 | # CONFIG_BLK_DEV_RAM is not set | ||
415 | # CONFIG_CDROM_PKTCDVD is not set | ||
416 | # CONFIG_ATA_OVER_ETH is not set | ||
417 | # CONFIG_MISC_DEVICES is not set | ||
418 | # CONFIG_IDE is not set | ||
419 | |||
420 | # | ||
421 | # SCSI device support | ||
422 | # | ||
423 | # CONFIG_RAID_ATTRS is not set | ||
424 | # CONFIG_SCSI is not set | ||
425 | # CONFIG_SCSI_DMA is not set | ||
426 | # CONFIG_SCSI_NETLINK is not set | ||
427 | # CONFIG_ATA is not set | ||
428 | # CONFIG_MD is not set | ||
429 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
430 | CONFIG_NETDEVICES=y | ||
431 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
432 | # CONFIG_DUMMY is not set | ||
433 | # CONFIG_BONDING is not set | ||
434 | # CONFIG_EQUALIZER is not set | ||
435 | # CONFIG_TUN is not set | ||
436 | # CONFIG_VETH is not set | ||
437 | CONFIG_PHYLIB=y | ||
438 | |||
439 | # | ||
440 | # MII PHY device drivers | ||
441 | # | ||
442 | # CONFIG_MARVELL_PHY is not set | ||
443 | CONFIG_DAVICOM_PHY=y | ||
444 | # CONFIG_QSEMI_PHY is not set | ||
445 | # CONFIG_LXT_PHY is not set | ||
446 | # CONFIG_CICADA_PHY is not set | ||
447 | # CONFIG_VITESSE_PHY is not set | ||
448 | # CONFIG_SMSC_PHY is not set | ||
449 | # CONFIG_BROADCOM_PHY is not set | ||
450 | # CONFIG_ICPLUS_PHY is not set | ||
451 | # CONFIG_FIXED_PHY is not set | ||
452 | CONFIG_MDIO_BITBANG=y | ||
453 | CONFIG_NET_ETHERNET=y | ||
454 | CONFIG_MII=y | ||
455 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
456 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
457 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
458 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
459 | # CONFIG_B44 is not set | ||
460 | CONFIG_FS_ENET=y | ||
461 | # CONFIG_FS_ENET_HAS_SCC is not set | ||
462 | CONFIG_FS_ENET_HAS_FCC=y | ||
463 | # CONFIG_FS_ENET_MDIO_FCC is not set | ||
464 | CONFIG_NETDEV_1000=y | ||
465 | CONFIG_NETDEV_10000=y | ||
466 | |||
467 | # | ||
468 | # Wireless LAN | ||
469 | # | ||
470 | # CONFIG_WLAN_PRE80211 is not set | ||
471 | # CONFIG_WLAN_80211 is not set | ||
472 | # CONFIG_WAN is not set | ||
473 | # CONFIG_PPP is not set | ||
474 | # CONFIG_SLIP is not set | ||
475 | # CONFIG_NETPOLL is not set | ||
476 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
477 | # CONFIG_ISDN is not set | ||
478 | # CONFIG_PHONE is not set | ||
479 | |||
480 | # | ||
481 | # Input device support | ||
482 | # | ||
483 | # CONFIG_INPUT is not set | ||
484 | |||
485 | # | ||
486 | # Hardware I/O ports | ||
487 | # | ||
488 | # CONFIG_SERIO is not set | ||
489 | # CONFIG_GAMEPORT is not set | ||
490 | |||
491 | # | ||
492 | # Character devices | ||
493 | # | ||
494 | # CONFIG_VT is not set | ||
495 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
496 | |||
497 | # | ||
498 | # Serial drivers | ||
499 | # | ||
500 | # CONFIG_SERIAL_8250 is not set | ||
501 | |||
502 | # | ||
503 | # Non-8250 serial port support | ||
504 | # | ||
505 | # CONFIG_SERIAL_UARTLITE is not set | ||
506 | CONFIG_SERIAL_CORE=y | ||
507 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
508 | CONFIG_SERIAL_CPM=y | ||
509 | CONFIG_SERIAL_CPM_CONSOLE=y | ||
510 | CONFIG_SERIAL_CPM_SCC1=y | ||
511 | # CONFIG_SERIAL_CPM_SCC2 is not set | ||
512 | # CONFIG_SERIAL_CPM_SCC3 is not set | ||
513 | CONFIG_SERIAL_CPM_SCC4=y | ||
514 | # CONFIG_SERIAL_CPM_SMC1 is not set | ||
515 | # CONFIG_SERIAL_CPM_SMC2 is not set | ||
516 | CONFIG_UNIX98_PTYS=y | ||
517 | CONFIG_LEGACY_PTYS=y | ||
518 | CONFIG_LEGACY_PTY_COUNT=256 | ||
519 | # CONFIG_IPMI_HANDLER is not set | ||
520 | CONFIG_HW_RANDOM=y | ||
521 | # CONFIG_NVRAM is not set | ||
522 | # CONFIG_GEN_RTC is not set | ||
523 | # CONFIG_R3964 is not set | ||
524 | # CONFIG_RAW_DRIVER is not set | ||
525 | # CONFIG_I2C is not set | ||
526 | |||
527 | # | ||
528 | # SPI support | ||
529 | # | ||
530 | # CONFIG_SPI is not set | ||
531 | # CONFIG_SPI_MASTER is not set | ||
532 | # CONFIG_W1 is not set | ||
533 | # CONFIG_POWER_SUPPLY is not set | ||
534 | # CONFIG_HWMON is not set | ||
535 | # CONFIG_WATCHDOG is not set | ||
536 | |||
537 | # | ||
538 | # Sonics Silicon Backplane | ||
539 | # | ||
540 | CONFIG_SSB_POSSIBLE=y | ||
541 | # CONFIG_SSB is not set | ||
542 | |||
543 | # | ||
544 | # Multifunction device drivers | ||
545 | # | ||
546 | # CONFIG_MFD_SM501 is not set | ||
547 | |||
548 | # | ||
549 | # Multimedia devices | ||
550 | # | ||
551 | # CONFIG_VIDEO_DEV is not set | ||
552 | # CONFIG_DVB_CORE is not set | ||
553 | CONFIG_DAB=y | ||
554 | |||
555 | # | ||
556 | # Graphics support | ||
557 | # | ||
558 | # CONFIG_VGASTATE is not set | ||
559 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
560 | # CONFIG_FB is not set | ||
561 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
562 | |||
563 | # | ||
564 | # Display device support | ||
565 | # | ||
566 | # CONFIG_DISPLAY_SUPPORT is not set | ||
567 | |||
568 | # | ||
569 | # Sound | ||
570 | # | ||
571 | # CONFIG_SOUND is not set | ||
572 | # CONFIG_USB_SUPPORT is not set | ||
573 | # CONFIG_MMC is not set | ||
574 | # CONFIG_NEW_LEDS is not set | ||
575 | # CONFIG_RTC_CLASS is not set | ||
576 | |||
577 | # | ||
578 | # Userspace I/O | ||
579 | # | ||
580 | # CONFIG_UIO is not set | ||
581 | |||
582 | # | ||
583 | # File systems | ||
584 | # | ||
585 | CONFIG_EXT2_FS=y | ||
586 | # CONFIG_EXT2_FS_XATTR is not set | ||
587 | # CONFIG_EXT2_FS_XIP is not set | ||
588 | CONFIG_EXT3_FS=y | ||
589 | # CONFIG_EXT3_FS_XATTR is not set | ||
590 | CONFIG_JBD=y | ||
591 | # CONFIG_REISERFS_FS is not set | ||
592 | # CONFIG_JFS_FS is not set | ||
593 | # CONFIG_FS_POSIX_ACL is not set | ||
594 | # CONFIG_XFS_FS is not set | ||
595 | # CONFIG_OCFS2_FS is not set | ||
596 | # CONFIG_MINIX_FS is not set | ||
597 | # CONFIG_ROMFS_FS is not set | ||
598 | CONFIG_INOTIFY=y | ||
599 | CONFIG_INOTIFY_USER=y | ||
600 | # CONFIG_QUOTA is not set | ||
601 | CONFIG_DNOTIFY=y | ||
602 | # CONFIG_AUTOFS_FS is not set | ||
603 | CONFIG_AUTOFS4_FS=y | ||
604 | # CONFIG_FUSE_FS is not set | ||
605 | |||
606 | # | ||
607 | # CD-ROM/DVD Filesystems | ||
608 | # | ||
609 | # CONFIG_ISO9660_FS is not set | ||
610 | # CONFIG_UDF_FS is not set | ||
611 | |||
612 | # | ||
613 | # DOS/FAT/NT Filesystems | ||
614 | # | ||
615 | # CONFIG_MSDOS_FS is not set | ||
616 | # CONFIG_VFAT_FS is not set | ||
617 | # CONFIG_NTFS_FS is not set | ||
618 | |||
619 | # | ||
620 | # Pseudo filesystems | ||
621 | # | ||
622 | CONFIG_PROC_FS=y | ||
623 | CONFIG_PROC_KCORE=y | ||
624 | CONFIG_PROC_SYSCTL=y | ||
625 | CONFIG_SYSFS=y | ||
626 | CONFIG_TMPFS=y | ||
627 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
628 | # CONFIG_HUGETLB_PAGE is not set | ||
629 | |||
630 | # | ||
631 | # Miscellaneous filesystems | ||
632 | # | ||
633 | # CONFIG_HFSPLUS_FS is not set | ||
634 | # CONFIG_JFFS2_FS is not set | ||
635 | CONFIG_CRAMFS=y | ||
636 | # CONFIG_VXFS_FS is not set | ||
637 | # CONFIG_HPFS_FS is not set | ||
638 | # CONFIG_QNX4FS_FS is not set | ||
639 | # CONFIG_SYSV_FS is not set | ||
640 | # CONFIG_UFS_FS is not set | ||
641 | CONFIG_NETWORK_FILESYSTEMS=y | ||
642 | CONFIG_NFS_FS=y | ||
643 | CONFIG_NFS_V3=y | ||
644 | # CONFIG_NFS_V3_ACL is not set | ||
645 | # CONFIG_NFS_DIRECTIO is not set | ||
646 | # CONFIG_NFSD is not set | ||
647 | CONFIG_ROOT_NFS=y | ||
648 | CONFIG_LOCKD=y | ||
649 | CONFIG_LOCKD_V4=y | ||
650 | CONFIG_NFS_COMMON=y | ||
651 | CONFIG_SUNRPC=y | ||
652 | # CONFIG_SMB_FS is not set | ||
653 | # CONFIG_CIFS is not set | ||
654 | # CONFIG_NCP_FS is not set | ||
655 | # CONFIG_CODA_FS is not set | ||
656 | |||
657 | # | ||
658 | # Partition Types | ||
659 | # | ||
660 | CONFIG_PARTITION_ADVANCED=y | ||
661 | # CONFIG_ACORN_PARTITION is not set | ||
662 | # CONFIG_OSF_PARTITION is not set | ||
663 | # CONFIG_AMIGA_PARTITION is not set | ||
664 | # CONFIG_ATARI_PARTITION is not set | ||
665 | # CONFIG_MAC_PARTITION is not set | ||
666 | CONFIG_MSDOS_PARTITION=y | ||
667 | # CONFIG_BSD_DISKLABEL is not set | ||
668 | # CONFIG_MINIX_SUBPARTITION is not set | ||
669 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
670 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
671 | # CONFIG_LDM_PARTITION is not set | ||
672 | # CONFIG_SGI_PARTITION is not set | ||
673 | # CONFIG_ULTRIX_PARTITION is not set | ||
674 | # CONFIG_SUN_PARTITION is not set | ||
675 | # CONFIG_KARMA_PARTITION is not set | ||
676 | # CONFIG_EFI_PARTITION is not set | ||
677 | # CONFIG_SYSV68_PARTITION is not set | ||
678 | CONFIG_NLS=y | ||
679 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
680 | CONFIG_NLS_CODEPAGE_437=y | ||
681 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
682 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
683 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
684 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
685 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
686 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
687 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
688 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
689 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
690 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
691 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
692 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
693 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
694 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
695 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
696 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
697 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
698 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
699 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
700 | # CONFIG_NLS_ISO8859_8 is not set | ||
701 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
702 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
703 | CONFIG_NLS_ASCII=y | ||
704 | CONFIG_NLS_ISO8859_1=y | ||
705 | # CONFIG_NLS_ISO8859_2 is not set | ||
706 | # CONFIG_NLS_ISO8859_3 is not set | ||
707 | # CONFIG_NLS_ISO8859_4 is not set | ||
708 | # CONFIG_NLS_ISO8859_5 is not set | ||
709 | # CONFIG_NLS_ISO8859_6 is not set | ||
710 | # CONFIG_NLS_ISO8859_7 is not set | ||
711 | # CONFIG_NLS_ISO8859_9 is not set | ||
712 | # CONFIG_NLS_ISO8859_13 is not set | ||
713 | # CONFIG_NLS_ISO8859_14 is not set | ||
714 | # CONFIG_NLS_ISO8859_15 is not set | ||
715 | # CONFIG_NLS_KOI8_R is not set | ||
716 | # CONFIG_NLS_KOI8_U is not set | ||
717 | CONFIG_NLS_UTF8=y | ||
718 | # CONFIG_UCC_SLOW is not set | ||
719 | |||
720 | # | ||
721 | # Library routines | ||
722 | # | ||
723 | # CONFIG_CRC_CCITT is not set | ||
724 | # CONFIG_CRC16 is not set | ||
725 | # CONFIG_CRC_ITU_T is not set | ||
726 | # CONFIG_CRC32 is not set | ||
727 | # CONFIG_CRC7 is not set | ||
728 | # CONFIG_LIBCRC32C is not set | ||
729 | CONFIG_ZLIB_INFLATE=y | ||
730 | CONFIG_PLIST=y | ||
731 | CONFIG_HAS_IOMEM=y | ||
732 | CONFIG_HAS_IOPORT=y | ||
733 | CONFIG_HAS_DMA=y | ||
734 | CONFIG_INSTRUMENTATION=y | ||
735 | # CONFIG_PROFILING is not set | ||
736 | # CONFIG_MARKERS is not set | ||
737 | |||
738 | # | ||
739 | # Kernel hacking | ||
740 | # | ||
741 | # CONFIG_PRINTK_TIME is not set | ||
742 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
743 | CONFIG_ENABLE_MUST_CHECK=y | ||
744 | CONFIG_MAGIC_SYSRQ=y | ||
745 | # CONFIG_UNUSED_SYMBOLS is not set | ||
746 | # CONFIG_DEBUG_FS is not set | ||
747 | # CONFIG_HEADERS_CHECK is not set | ||
748 | CONFIG_DEBUG_KERNEL=y | ||
749 | # CONFIG_DEBUG_SHIRQ is not set | ||
750 | # CONFIG_DETECT_SOFTLOCKUP is not set | ||
751 | # CONFIG_SCHED_DEBUG is not set | ||
752 | # CONFIG_SCHEDSTATS is not set | ||
753 | # CONFIG_TIMER_STATS is not set | ||
754 | # CONFIG_DEBUG_SLAB is not set | ||
755 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
756 | # CONFIG_RT_MUTEX_TESTER is not set | ||
757 | # CONFIG_DEBUG_SPINLOCK is not set | ||
758 | # CONFIG_DEBUG_MUTEXES is not set | ||
759 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
760 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
761 | # CONFIG_DEBUG_KOBJECT is not set | ||
762 | CONFIG_DEBUG_BUGVERBOSE=y | ||
763 | CONFIG_DEBUG_INFO=y | ||
764 | # CONFIG_DEBUG_VM is not set | ||
765 | # CONFIG_DEBUG_LIST is not set | ||
766 | # CONFIG_DEBUG_SG is not set | ||
767 | CONFIG_FORCED_INLINING=y | ||
768 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
769 | # CONFIG_FAULT_INJECTION is not set | ||
770 | # CONFIG_SAMPLES is not set | ||
771 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
772 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
773 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
774 | # CONFIG_DEBUGGER is not set | ||
775 | # CONFIG_KGDB_CONSOLE is not set | ||
776 | CONFIG_BDI_SWITCH=y | ||
777 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
778 | |||
779 | # | ||
780 | # Security options | ||
781 | # | ||
782 | # CONFIG_KEYS is not set | ||
783 | # CONFIG_SECURITY is not set | ||
784 | CONFIG_CRYPTO=y | ||
785 | CONFIG_CRYPTO_ALGAPI=y | ||
786 | CONFIG_CRYPTO_BLKCIPHER=y | ||
787 | CONFIG_CRYPTO_MANAGER=y | ||
788 | # CONFIG_CRYPTO_HMAC is not set | ||
789 | # CONFIG_CRYPTO_NULL is not set | ||
790 | # CONFIG_CRYPTO_MD4 is not set | ||
791 | CONFIG_CRYPTO_MD5=y | ||
792 | # CONFIG_CRYPTO_SHA1 is not set | ||
793 | # CONFIG_CRYPTO_SHA256 is not set | ||
794 | # CONFIG_CRYPTO_SHA512 is not set | ||
795 | # CONFIG_CRYPTO_WP512 is not set | ||
796 | # CONFIG_CRYPTO_TGR192 is not set | ||
797 | CONFIG_CRYPTO_ECB=y | ||
798 | CONFIG_CRYPTO_CBC=y | ||
799 | CONFIG_CRYPTO_PCBC=y | ||
800 | # CONFIG_CRYPTO_CRYPTD is not set | ||
801 | CONFIG_CRYPTO_DES=y | ||
802 | # CONFIG_CRYPTO_FCRYPT is not set | ||
803 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
804 | # CONFIG_CRYPTO_TWOFISH is not set | ||
805 | # CONFIG_CRYPTO_SERPENT is not set | ||
806 | # CONFIG_CRYPTO_AES is not set | ||
807 | # CONFIG_CRYPTO_CAST5 is not set | ||
808 | # CONFIG_CRYPTO_CAST6 is not set | ||
809 | # CONFIG_CRYPTO_TEA is not set | ||
810 | # CONFIG_CRYPTO_ARC4 is not set | ||
811 | # CONFIG_CRYPTO_KHAZAD is not set | ||
812 | # CONFIG_CRYPTO_ANUBIS is not set | ||
813 | # CONFIG_CRYPTO_SEED is not set | ||
814 | # CONFIG_CRYPTO_DEFLATE is not set | ||
815 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
816 | # CONFIG_CRYPTO_CRC32C is not set | ||
817 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
818 | # CONFIG_CRYPTO_AUTHENC is not set | ||
819 | # CONFIG_CRYPTO_HW is not set | ||
820 | # CONFIG_PPC_CLOCK is not set | ||
821 | CONFIG_PPC_LIB_RHEAP=y | ||
diff --git a/arch/powerpc/configs/mpc8313_rdb_defconfig b/arch/powerpc/configs/mpc8313_rdb_defconfig index c9af905bbb1d..db08e736c0ac 100644 --- a/arch/powerpc/configs/mpc8313_rdb_defconfig +++ b/arch/powerpc/configs/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.24-rc4 | 3 | # Linux kernel version: 2.6.24-rc6 |
4 | # Thu Dec 6 16:48:31 2007 | 4 | # Thu Jan 17 16:35:55 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -144,6 +144,7 @@ CONFIG_MPC8313_RDB=y | |||
144 | # CONFIG_MPC834x_MDS is not set | 144 | # CONFIG_MPC834x_MDS is not set |
145 | # CONFIG_MPC834x_ITX is not set | 145 | # CONFIG_MPC834x_ITX is not set |
146 | # CONFIG_MPC836x_MDS is not set | 146 | # CONFIG_MPC836x_MDS is not set |
147 | # CONFIG_MPC837x_MDS is not set | ||
147 | CONFIG_PPC_MPC831x=y | 148 | CONFIG_PPC_MPC831x=y |
148 | # CONFIG_MPIC is not set | 149 | # CONFIG_MPIC is not set |
149 | # CONFIG_MPIC_WEIRD is not set | 150 | # CONFIG_MPIC_WEIRD is not set |
@@ -336,15 +337,16 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
336 | CONFIG_MTD=y | 337 | CONFIG_MTD=y |
337 | # CONFIG_MTD_DEBUG is not set | 338 | # CONFIG_MTD_DEBUG is not set |
338 | # CONFIG_MTD_CONCAT is not set | 339 | # CONFIG_MTD_CONCAT is not set |
339 | # CONFIG_MTD_PARTITIONS is not set | 340 | CONFIG_MTD_PARTITIONS=y |
341 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
342 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
340 | 343 | ||
341 | # | 344 | # |
342 | # User Modules And Translation Layers | 345 | # User Modules And Translation Layers |
343 | # | 346 | # |
344 | CONFIG_MTD_CHAR=y | 347 | CONFIG_MTD_CHAR=y |
345 | # CONFIG_MTD_BLKDEVS is not set | 348 | CONFIG_MTD_BLKDEVS=y |
346 | # CONFIG_MTD_BLOCK is not set | 349 | CONFIG_MTD_BLOCK=y |
347 | # CONFIG_MTD_BLOCK_RO is not set | ||
348 | # CONFIG_FTL is not set | 350 | # CONFIG_FTL is not set |
349 | # CONFIG_NFTL is not set | 351 | # CONFIG_NFTL is not set |
350 | # CONFIG_INFTL is not set | 352 | # CONFIG_INFTL is not set |
@@ -381,11 +383,8 @@ CONFIG_MTD_CFI_UTIL=y | |||
381 | # Mapping drivers for chip access | 383 | # Mapping drivers for chip access |
382 | # | 384 | # |
383 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 385 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
384 | CONFIG_MTD_PHYSMAP=y | 386 | # CONFIG_MTD_PHYSMAP is not set |
385 | CONFIG_MTD_PHYSMAP_START=0xfe000000 | 387 | CONFIG_MTD_PHYSMAP_OF=y |
386 | CONFIG_MTD_PHYSMAP_LEN=0x1000000 | ||
387 | CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | ||
388 | # CONFIG_MTD_PHYSMAP_OF is not set | ||
389 | # CONFIG_MTD_INTEL_VR_NOR is not set | 388 | # CONFIG_MTD_INTEL_VR_NOR is not set |
390 | # CONFIG_MTD_PLATRAM is not set | 389 | # CONFIG_MTD_PLATRAM is not set |
391 | 390 | ||
@@ -406,7 +405,16 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |||
406 | # CONFIG_MTD_DOC2000 is not set | 405 | # CONFIG_MTD_DOC2000 is not set |
407 | # CONFIG_MTD_DOC2001 is not set | 406 | # CONFIG_MTD_DOC2001 is not set |
408 | # CONFIG_MTD_DOC2001PLUS is not set | 407 | # CONFIG_MTD_DOC2001PLUS is not set |
409 | # CONFIG_MTD_NAND is not set | 408 | CONFIG_MTD_NAND=y |
409 | CONFIG_MTD_NAND_VERIFY_WRITE=y | ||
410 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
411 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
412 | CONFIG_MTD_NAND_IDS=y | ||
413 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
414 | # CONFIG_MTD_NAND_CAFE is not set | ||
415 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
416 | # CONFIG_MTD_NAND_PLATFORM is not set | ||
417 | # CONFIG_MTD_ALAUDA is not set | ||
410 | # CONFIG_MTD_ONENAND is not set | 418 | # CONFIG_MTD_ONENAND is not set |
411 | 419 | ||
412 | # | 420 | # |
@@ -1178,7 +1186,17 @@ CONFIG_TMPFS=y | |||
1178 | # CONFIG_BEFS_FS is not set | 1186 | # CONFIG_BEFS_FS is not set |
1179 | # CONFIG_BFS_FS is not set | 1187 | # CONFIG_BFS_FS is not set |
1180 | # CONFIG_EFS_FS is not set | 1188 | # CONFIG_EFS_FS is not set |
1181 | # CONFIG_JFFS2_FS is not set | 1189 | CONFIG_JFFS2_FS=y |
1190 | CONFIG_JFFS2_FS_DEBUG=0 | ||
1191 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
1192 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
1193 | # CONFIG_JFFS2_SUMMARY is not set | ||
1194 | # CONFIG_JFFS2_FS_XATTR is not set | ||
1195 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
1196 | CONFIG_JFFS2_ZLIB=y | ||
1197 | # CONFIG_JFFS2_LZO is not set | ||
1198 | CONFIG_JFFS2_RTIME=y | ||
1199 | # CONFIG_JFFS2_RUBIN is not set | ||
1182 | # CONFIG_CRAMFS is not set | 1200 | # CONFIG_CRAMFS is not set |
1183 | # CONFIG_VXFS_FS is not set | 1201 | # CONFIG_VXFS_FS is not set |
1184 | # CONFIG_HPFS_FS is not set | 1202 | # CONFIG_HPFS_FS is not set |
@@ -1242,6 +1260,8 @@ CONFIG_BITREVERSE=y | |||
1242 | CONFIG_CRC32=y | 1260 | CONFIG_CRC32=y |
1243 | # CONFIG_CRC7 is not set | 1261 | # CONFIG_CRC7 is not set |
1244 | # CONFIG_LIBCRC32C is not set | 1262 | # CONFIG_LIBCRC32C is not set |
1263 | CONFIG_ZLIB_INFLATE=y | ||
1264 | CONFIG_ZLIB_DEFLATE=y | ||
1245 | CONFIG_PLIST=y | 1265 | CONFIG_PLIST=y |
1246 | CONFIG_HAS_IOMEM=y | 1266 | CONFIG_HAS_IOMEM=y |
1247 | CONFIG_HAS_IOPORT=y | 1267 | CONFIG_HAS_IOPORT=y |
diff --git a/arch/powerpc/configs/mpc834x_itx_defconfig b/arch/powerpc/configs/mpc834x_itx_defconfig index 6feb86e2b786..2fbe4e5344f7 100644 --- a/arch/powerpc/configs/mpc834x_itx_defconfig +++ b/arch/powerpc/configs/mpc834x_itx_defconfig | |||
@@ -570,7 +570,8 @@ CONFIG_SATA_SIL=y | |||
570 | # CONFIG_PATA_SIS is not set | 570 | # CONFIG_PATA_SIS is not set |
571 | # CONFIG_PATA_VIA is not set | 571 | # CONFIG_PATA_VIA is not set |
572 | # CONFIG_PATA_WINBOND is not set | 572 | # CONFIG_PATA_WINBOND is not set |
573 | # CONFIG_PATA_PLATFORM is not set | 573 | CONFIG_PATA_PLATFORM=y |
574 | CONFIG_PATA_OF_PLATFORM=y | ||
574 | CONFIG_MD=y | 575 | CONFIG_MD=y |
575 | CONFIG_BLK_DEV_MD=y | 576 | CONFIG_BLK_DEV_MD=y |
576 | CONFIG_MD_LINEAR=y | 577 | CONFIG_MD_LINEAR=y |
diff --git a/arch/powerpc/configs/mpc8610_hpcd_defconfig b/arch/powerpc/configs/mpc8610_hpcd_defconfig index 9614d24f832a..2500ef42959d 100644 --- a/arch/powerpc/configs/mpc8610_hpcd_defconfig +++ b/arch/powerpc/configs/mpc8610_hpcd_defconfig | |||
@@ -696,7 +696,7 @@ CONFIG_SERIAL_8250_RSA=y | |||
696 | CONFIG_SERIAL_CORE=y | 696 | CONFIG_SERIAL_CORE=y |
697 | CONFIG_SERIAL_CORE_CONSOLE=y | 697 | CONFIG_SERIAL_CORE_CONSOLE=y |
698 | # CONFIG_SERIAL_JSM is not set | 698 | # CONFIG_SERIAL_JSM is not set |
699 | CONFIG_SERIAL_OF_PLATFORM=y | 699 | # CONFIG_SERIAL_OF_PLATFORM is not set |
700 | CONFIG_UNIX98_PTYS=y | 700 | CONFIG_UNIX98_PTYS=y |
701 | # CONFIG_LEGACY_PTYS is not set | 701 | # CONFIG_LEGACY_PTYS is not set |
702 | # CONFIG_IPMI_HANDLER is not set | 702 | # CONFIG_IPMI_HANDLER is not set |
@@ -708,7 +708,60 @@ CONFIG_UNIX98_PTYS=y | |||
708 | # CONFIG_RAW_DRIVER is not set | 708 | # CONFIG_RAW_DRIVER is not set |
709 | # CONFIG_TCG_TPM is not set | 709 | # CONFIG_TCG_TPM is not set |
710 | CONFIG_DEVPORT=y | 710 | CONFIG_DEVPORT=y |
711 | # CONFIG_I2C is not set | 711 | CONFIG_I2C=y |
712 | CONFIG_I2C_BOARDINFO=y | ||
713 | # CONFIG_I2C_CHARDEV is not set | ||
714 | |||
715 | # | ||
716 | # I2C Algorithms | ||
717 | # | ||
718 | # CONFIG_I2C_ALGOBIT is not set | ||
719 | # CONFIG_I2C_ALGOPCF is not set | ||
720 | # CONFIG_I2C_ALGOPCA is not set | ||
721 | |||
722 | # | ||
723 | # I2C Hardware Bus support | ||
724 | # | ||
725 | # CONFIG_I2C_ALI1535 is not set | ||
726 | # CONFIG_I2C_ALI1563 is not set | ||
727 | # CONFIG_I2C_ALI15X3 is not set | ||
728 | # CONFIG_I2C_AMD756 is not set | ||
729 | # CONFIG_I2C_AMD8111 is not set | ||
730 | # CONFIG_I2C_I801 is not set | ||
731 | # CONFIG_I2C_I810 is not set | ||
732 | # CONFIG_I2C_PIIX4 is not set | ||
733 | CONFIG_I2C_MPC=y | ||
734 | # CONFIG_I2C_NFORCE2 is not set | ||
735 | # CONFIG_I2C_OCORES is not set | ||
736 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
737 | # CONFIG_I2C_PROSAVAGE is not set | ||
738 | # CONFIG_I2C_SAVAGE4 is not set | ||
739 | # CONFIG_I2C_SIMTEC is not set | ||
740 | # CONFIG_I2C_SIS5595 is not set | ||
741 | # CONFIG_I2C_SIS630 is not set | ||
742 | # CONFIG_I2C_SIS96X is not set | ||
743 | # CONFIG_I2C_TAOS_EVM is not set | ||
744 | # CONFIG_I2C_VIA is not set | ||
745 | # CONFIG_I2C_VIAPRO is not set | ||
746 | # CONFIG_I2C_VOODOO3 is not set | ||
747 | |||
748 | # | ||
749 | # Miscellaneous I2C Chip support | ||
750 | # | ||
751 | # CONFIG_SENSORS_DS1337 is not set | ||
752 | # CONFIG_SENSORS_DS1374 is not set | ||
753 | # CONFIG_DS1682 is not set | ||
754 | # CONFIG_SENSORS_EEPROM is not set | ||
755 | # CONFIG_SENSORS_PCF8574 is not set | ||
756 | # CONFIG_SENSORS_PCA9539 is not set | ||
757 | # CONFIG_SENSORS_PCF8591 is not set | ||
758 | # CONFIG_SENSORS_M41T00 is not set | ||
759 | # CONFIG_SENSORS_MAX6875 is not set | ||
760 | # CONFIG_SENSORS_TSL2550 is not set | ||
761 | # CONFIG_I2C_DEBUG_CORE is not set | ||
762 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
763 | # CONFIG_I2C_DEBUG_BUS is not set | ||
764 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
712 | 765 | ||
713 | # | 766 | # |
714 | # SPI support | 767 | # SPI support |
@@ -763,7 +816,119 @@ CONFIG_DUMMY_CONSOLE=y | |||
763 | # | 816 | # |
764 | # Sound | 817 | # Sound |
765 | # | 818 | # |
766 | # CONFIG_SOUND is not set | 819 | CONFIG_SOUND=y |
820 | |||
821 | # | ||
822 | # Advanced Linux Sound Architecture | ||
823 | # | ||
824 | CONFIG_SND=y | ||
825 | CONFIG_SND_TIMER=y | ||
826 | CONFIG_SND_PCM=y | ||
827 | # CONFIG_SND_SEQUENCER is not set | ||
828 | CONFIG_SND_OSSEMUL=y | ||
829 | CONFIG_SND_MIXER_OSS=y | ||
830 | CONFIG_SND_PCM_OSS=y | ||
831 | # CONFIG_SND_PCM_OSS_PLUGINS is not set | ||
832 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
833 | # CONFIG_SND_SUPPORT_OLD_API is not set | ||
834 | CONFIG_SND_VERBOSE_PROCFS=y | ||
835 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
836 | # CONFIG_SND_DEBUG is not set | ||
837 | |||
838 | # | ||
839 | # Generic devices | ||
840 | # | ||
841 | # CONFIG_SND_DUMMY is not set | ||
842 | # CONFIG_SND_MTPAV is not set | ||
843 | # CONFIG_SND_SERIAL_U16550 is not set | ||
844 | # CONFIG_SND_MPU401 is not set | ||
845 | |||
846 | # | ||
847 | # PCI devices | ||
848 | # | ||
849 | # CONFIG_SND_AD1889 is not set | ||
850 | # CONFIG_SND_ALS300 is not set | ||
851 | # CONFIG_SND_ALS4000 is not set | ||
852 | # CONFIG_SND_ALI5451 is not set | ||
853 | # CONFIG_SND_ATIIXP is not set | ||
854 | # CONFIG_SND_ATIIXP_MODEM is not set | ||
855 | # CONFIG_SND_AU8810 is not set | ||
856 | # CONFIG_SND_AU8820 is not set | ||
857 | # CONFIG_SND_AU8830 is not set | ||
858 | # CONFIG_SND_AZT3328 is not set | ||
859 | # CONFIG_SND_BT87X is not set | ||
860 | # CONFIG_SND_CA0106 is not set | ||
861 | # CONFIG_SND_CMIPCI is not set | ||
862 | # CONFIG_SND_CS4281 is not set | ||
863 | # CONFIG_SND_CS46XX is not set | ||
864 | # CONFIG_SND_CS5530 is not set | ||
865 | # CONFIG_SND_DARLA20 is not set | ||
866 | # CONFIG_SND_GINA20 is not set | ||
867 | # CONFIG_SND_LAYLA20 is not set | ||
868 | # CONFIG_SND_DARLA24 is not set | ||
869 | # CONFIG_SND_GINA24 is not set | ||
870 | # CONFIG_SND_LAYLA24 is not set | ||
871 | # CONFIG_SND_MONA is not set | ||
872 | # CONFIG_SND_MIA is not set | ||
873 | # CONFIG_SND_ECHO3G is not set | ||
874 | # CONFIG_SND_INDIGO is not set | ||
875 | # CONFIG_SND_INDIGOIO is not set | ||
876 | # CONFIG_SND_INDIGODJ is not set | ||
877 | # CONFIG_SND_EMU10K1 is not set | ||
878 | # CONFIG_SND_EMU10K1X is not set | ||
879 | # CONFIG_SND_ENS1370 is not set | ||
880 | # CONFIG_SND_ENS1371 is not set | ||
881 | # CONFIG_SND_ES1938 is not set | ||
882 | # CONFIG_SND_ES1968 is not set | ||
883 | # CONFIG_SND_FM801 is not set | ||
884 | # CONFIG_SND_HDA_INTEL is not set | ||
885 | # CONFIG_SND_HDSP is not set | ||
886 | # CONFIG_SND_HDSPM is not set | ||
887 | # CONFIG_SND_ICE1712 is not set | ||
888 | # CONFIG_SND_ICE1724 is not set | ||
889 | # CONFIG_SND_INTEL8X0 is not set | ||
890 | # CONFIG_SND_INTEL8X0M is not set | ||
891 | # CONFIG_SND_KORG1212 is not set | ||
892 | # CONFIG_SND_MAESTRO3 is not set | ||
893 | # CONFIG_SND_MIXART is not set | ||
894 | # CONFIG_SND_NM256 is not set | ||
895 | # CONFIG_SND_PCXHR is not set | ||
896 | # CONFIG_SND_RIPTIDE is not set | ||
897 | # CONFIG_SND_RME32 is not set | ||
898 | # CONFIG_SND_RME96 is not set | ||
899 | # CONFIG_SND_RME9652 is not set | ||
900 | # CONFIG_SND_SONICVIBES is not set | ||
901 | # CONFIG_SND_TRIDENT is not set | ||
902 | # CONFIG_SND_VIA82XX is not set | ||
903 | # CONFIG_SND_VIA82XX_MODEM is not set | ||
904 | # CONFIG_SND_VX222 is not set | ||
905 | # CONFIG_SND_YMFPCI is not set | ||
906 | |||
907 | # | ||
908 | # ALSA PowerMac devices | ||
909 | # | ||
910 | |||
911 | # | ||
912 | # ALSA PowerPC devices | ||
913 | # | ||
914 | |||
915 | # | ||
916 | # System on Chip audio support | ||
917 | # | ||
918 | CONFIG_SND_SOC=y | ||
919 | |||
920 | # | ||
921 | # SoC Audio support for SuperH | ||
922 | # | ||
923 | |||
924 | # | ||
925 | # ALSA SoC audio for Freescale SOCs | ||
926 | # | ||
927 | CONFIG_SND_SOC_MPC8610=y | ||
928 | CONFIG_SND_SOC_MPC8610_HPCD=y | ||
929 | CONFIG_SND_SOC_CS4270=y | ||
930 | CONFIG_SND_SOC_CS4270_VD33_ERRATA=y | ||
931 | |||
767 | CONFIG_HID_SUPPORT=y | 932 | CONFIG_HID_SUPPORT=y |
768 | CONFIG_HID=y | 933 | CONFIG_HID=y |
769 | # CONFIG_HID_DEBUG is not set | 934 | # CONFIG_HID_DEBUG is not set |
diff --git a/arch/powerpc/configs/storcenter_defconfig b/arch/powerpc/configs/storcenter_defconfig new file mode 100644 index 000000000000..a034a5e452ef --- /dev/null +++ b/arch/powerpc/configs/storcenter_defconfig | |||
@@ -0,0 +1,1174 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.24-rc6 | ||
4 | # Tue Jan 8 09:33:54 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 is not set | ||
19 | CONFIG_PPC_STD_MMU=y | ||
20 | CONFIG_PPC_STD_MMU_32=y | ||
21 | # CONFIG_PPC_MM_SLICES is not set | ||
22 | # CONFIG_SMP is not set | ||
23 | CONFIG_PPC32=y | ||
24 | CONFIG_WORD_SIZE=32 | ||
25 | CONFIG_PPC_MERGE=y | ||
26 | CONFIG_MMU=y | ||
27 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
28 | CONFIG_GENERIC_TIME=y | ||
29 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
30 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
31 | CONFIG_GENERIC_HARDIRQS=y | ||
32 | CONFIG_IRQ_PER_CPU=y | ||
33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
34 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
35 | CONFIG_GENERIC_HWEIGHT=y | ||
36 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
37 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
38 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
39 | CONFIG_PPC=y | ||
40 | CONFIG_EARLY_PRINTK=y | ||
41 | CONFIG_GENERIC_NVRAM=y | ||
42 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
43 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
44 | CONFIG_PPC_OF=y | ||
45 | CONFIG_OF=y | ||
46 | CONFIG_PPC_UDBG_16550=y | ||
47 | # CONFIG_GENERIC_TBSYNC is not set | ||
48 | CONFIG_AUDIT_ARCH=y | ||
49 | CONFIG_GENERIC_BUG=y | ||
50 | # CONFIG_DEFAULT_UIMAGE is not set | ||
51 | # CONFIG_PPC_DCR_NATIVE is not set | ||
52 | # CONFIG_PPC_DCR_MMIO is not set | ||
53 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
54 | |||
55 | # | ||
56 | # General setup | ||
57 | # | ||
58 | CONFIG_EXPERIMENTAL=y | ||
59 | CONFIG_BROKEN_ON_SMP=y | ||
60 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
61 | CONFIG_LOCALVERSION="" | ||
62 | CONFIG_LOCALVERSION_AUTO=y | ||
63 | CONFIG_SWAP=y | ||
64 | CONFIG_SYSVIPC=y | ||
65 | CONFIG_SYSVIPC_SYSCTL=y | ||
66 | # CONFIG_POSIX_MQUEUE is not set | ||
67 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
68 | # CONFIG_TASKSTATS is not set | ||
69 | # CONFIG_USER_NS is not set | ||
70 | # CONFIG_PID_NS is not set | ||
71 | # CONFIG_AUDIT is not set | ||
72 | # CONFIG_IKCONFIG is not set | ||
73 | CONFIG_LOG_BUF_SHIFT=14 | ||
74 | # CONFIG_CGROUPS is not set | ||
75 | CONFIG_FAIR_GROUP_SCHED=y | ||
76 | CONFIG_FAIR_USER_SCHED=y | ||
77 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
78 | CONFIG_SYSFS_DEPRECATED=y | ||
79 | # CONFIG_RELAY is not set | ||
80 | # CONFIG_BLK_DEV_INITRD is not set | ||
81 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
82 | CONFIG_SYSCTL=y | ||
83 | CONFIG_EMBEDDED=y | ||
84 | CONFIG_SYSCTL_SYSCALL=y | ||
85 | # CONFIG_KALLSYMS is not set | ||
86 | CONFIG_HOTPLUG=y | ||
87 | CONFIG_PRINTK=y | ||
88 | CONFIG_BUG=y | ||
89 | CONFIG_ELF_CORE=y | ||
90 | CONFIG_BASE_FULL=y | ||
91 | CONFIG_FUTEX=y | ||
92 | CONFIG_ANON_INODES=y | ||
93 | CONFIG_EPOLL=y | ||
94 | CONFIG_SIGNALFD=y | ||
95 | CONFIG_EVENTFD=y | ||
96 | CONFIG_SHMEM=y | ||
97 | CONFIG_VM_EVENT_COUNTERS=y | ||
98 | CONFIG_SLUB_DEBUG=y | ||
99 | # CONFIG_SLAB is not set | ||
100 | CONFIG_SLUB=y | ||
101 | # CONFIG_SLOB is not set | ||
102 | CONFIG_RT_MUTEXES=y | ||
103 | # CONFIG_TINY_SHMEM is not set | ||
104 | CONFIG_BASE_SMALL=0 | ||
105 | CONFIG_MODULES=y | ||
106 | CONFIG_MODULE_UNLOAD=y | ||
107 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
108 | # CONFIG_MODVERSIONS is not set | ||
109 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
110 | CONFIG_KMOD=y | ||
111 | CONFIG_BLOCK=y | ||
112 | CONFIG_LBD=y | ||
113 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
114 | # CONFIG_LSF is not set | ||
115 | # CONFIG_BLK_DEV_BSG is not set | ||
116 | |||
117 | # | ||
118 | # IO Schedulers | ||
119 | # | ||
120 | CONFIG_IOSCHED_NOOP=y | ||
121 | CONFIG_IOSCHED_AS=y | ||
122 | CONFIG_IOSCHED_DEADLINE=y | ||
123 | CONFIG_IOSCHED_CFQ=y | ||
124 | # CONFIG_DEFAULT_AS is not set | ||
125 | # CONFIG_DEFAULT_DEADLINE is not set | ||
126 | CONFIG_DEFAULT_CFQ=y | ||
127 | # CONFIG_DEFAULT_NOOP is not set | ||
128 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
129 | |||
130 | # | ||
131 | # Platform support | ||
132 | # | ||
133 | CONFIG_PPC_MULTIPLATFORM=y | ||
134 | # CONFIG_PPC_82xx is not set | ||
135 | # CONFIG_PPC_83xx is not set | ||
136 | # CONFIG_PPC_86xx is not set | ||
137 | CONFIG_CLASSIC32=y | ||
138 | # CONFIG_PPC_CHRP is not set | ||
139 | # CONFIG_PPC_MPC52xx is not set | ||
140 | # CONFIG_PPC_MPC5200 is not set | ||
141 | # CONFIG_PPC_EFIKA is not set | ||
142 | # CONFIG_PPC_LITE5200 is not set | ||
143 | # CONFIG_PPC_PMAC 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_EMBEDDED6xx=y | ||
148 | # CONFIG_LINKSTATION is not set | ||
149 | CONFIG_STORCENTER=y | ||
150 | # CONFIG_MPC7448HPC2 is not set | ||
151 | # CONFIG_PPC_HOLLY is not set | ||
152 | # CONFIG_PPC_PRPMC2800 is not set | ||
153 | CONFIG_MPC10X_BRIDGE=y | ||
154 | CONFIG_MPC10X_OPENPIC=y | ||
155 | # CONFIG_MPC10X_STORE_GATHERING is not set | ||
156 | CONFIG_MPIC=y | ||
157 | # CONFIG_MPIC_WEIRD is not set | ||
158 | # CONFIG_PPC_I8259 is not set | ||
159 | # CONFIG_PPC_RTAS is not set | ||
160 | # CONFIG_MMIO_NVRAM is not set | ||
161 | # CONFIG_PPC_MPC106 is not set | ||
162 | # CONFIG_PPC_970_NAP is not set | ||
163 | # CONFIG_PPC_INDIRECT_IO is not set | ||
164 | # CONFIG_GENERIC_IOMAP is not set | ||
165 | # CONFIG_CPU_FREQ is not set | ||
166 | # CONFIG_TAU is not set | ||
167 | # CONFIG_CPM2 is not set | ||
168 | # CONFIG_FSL_ULI1575 is not set | ||
169 | |||
170 | # | ||
171 | # Kernel options | ||
172 | # | ||
173 | # CONFIG_HIGHMEM is not set | ||
174 | # CONFIG_TICK_ONESHOT is not set | ||
175 | # CONFIG_NO_HZ is not set | ||
176 | # CONFIG_HIGH_RES_TIMERS is not set | ||
177 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
178 | CONFIG_HZ_100=y | ||
179 | # CONFIG_HZ_250 is not set | ||
180 | # CONFIG_HZ_300 is not set | ||
181 | # CONFIG_HZ_1000 is not set | ||
182 | CONFIG_HZ=100 | ||
183 | CONFIG_PREEMPT_NONE=y | ||
184 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
185 | # CONFIG_PREEMPT is not set | ||
186 | CONFIG_BINFMT_ELF=y | ||
187 | CONFIG_BINFMT_MISC=y | ||
188 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
189 | # CONFIG_KEXEC is not set | ||
190 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
191 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
192 | CONFIG_SELECT_MEMORY_MODEL=y | ||
193 | CONFIG_FLATMEM_MANUAL=y | ||
194 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
195 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
196 | CONFIG_FLATMEM=y | ||
197 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
198 | # CONFIG_SPARSEMEM_STATIC is not set | ||
199 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
200 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
201 | # CONFIG_RESOURCES_64BIT is not set | ||
202 | CONFIG_ZONE_DMA_FLAG=1 | ||
203 | CONFIG_BOUNCE=y | ||
204 | CONFIG_VIRT_TO_BUS=y | ||
205 | CONFIG_PROC_DEVICETREE=y | ||
206 | CONFIG_CMDLINE_BOOL=y | ||
207 | CONFIG_CMDLINE="console=ttyS0,115200" | ||
208 | # CONFIG_PM is not set | ||
209 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
210 | CONFIG_HIBERNATION_UP_POSSIBLE=y | ||
211 | # CONFIG_SECCOMP is not set | ||
212 | CONFIG_WANT_DEVICE_TREE=y | ||
213 | CONFIG_DEVICE_TREE="storcenter.dts" | ||
214 | CONFIG_ISA_DMA_API=y | ||
215 | |||
216 | # | ||
217 | # Bus options | ||
218 | # | ||
219 | CONFIG_ZONE_DMA=y | ||
220 | CONFIG_GENERIC_ISA_DMA=y | ||
221 | CONFIG_PPC_INDIRECT_PCI=y | ||
222 | CONFIG_FSL_SOC=y | ||
223 | CONFIG_PCI=y | ||
224 | CONFIG_PCI_DOMAINS=y | ||
225 | CONFIG_PCI_SYSCALL=y | ||
226 | # CONFIG_PCIEPORTBUS is not set | ||
227 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
228 | # CONFIG_PCI_MSI is not set | ||
229 | CONFIG_PCI_LEGACY=y | ||
230 | # CONFIG_PCCARD is not set | ||
231 | # CONFIG_HOTPLUG_PCI 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=m | ||
256 | # CONFIG_PACKET_MMAP is not set | ||
257 | CONFIG_UNIX=y | ||
258 | # CONFIG_NET_KEY is not set | ||
259 | CONFIG_INET=y | ||
260 | CONFIG_IP_MULTICAST=y | ||
261 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
262 | CONFIG_IP_FIB_HASH=y | ||
263 | CONFIG_IP_PNP=y | ||
264 | CONFIG_IP_PNP_DHCP=y | ||
265 | # CONFIG_IP_PNP_BOOTP is not set | ||
266 | # CONFIG_IP_PNP_RARP is not set | ||
267 | # CONFIG_NET_IPIP is not set | ||
268 | # CONFIG_NET_IPGRE is not set | ||
269 | # CONFIG_IP_MROUTE is not set | ||
270 | # CONFIG_ARPD is not set | ||
271 | # CONFIG_SYN_COOKIES is not set | ||
272 | # CONFIG_INET_AH is not set | ||
273 | # CONFIG_INET_ESP is not set | ||
274 | # CONFIG_INET_IPCOMP is not set | ||
275 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
276 | # CONFIG_INET_TUNNEL is not set | ||
277 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
278 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
279 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
280 | # CONFIG_INET_LRO is not set | ||
281 | CONFIG_INET_DIAG=y | ||
282 | CONFIG_INET_TCP_DIAG=y | ||
283 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
284 | CONFIG_TCP_CONG_CUBIC=y | ||
285 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
286 | # CONFIG_TCP_MD5SIG is not set | ||
287 | # CONFIG_IPV6 is not set | ||
288 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
289 | # CONFIG_INET6_TUNNEL is not set | ||
290 | # CONFIG_NETWORK_SECMARK is not set | ||
291 | # CONFIG_NETFILTER is not set | ||
292 | # CONFIG_IP_DCCP is not set | ||
293 | # CONFIG_IP_SCTP is not set | ||
294 | # CONFIG_TIPC is not set | ||
295 | # CONFIG_ATM is not set | ||
296 | # CONFIG_BRIDGE is not set | ||
297 | # CONFIG_VLAN_8021Q is not set | ||
298 | # CONFIG_DECNET is not set | ||
299 | # CONFIG_LLC2 is not set | ||
300 | # CONFIG_IPX is not set | ||
301 | # CONFIG_ATALK is not set | ||
302 | # CONFIG_X25 is not set | ||
303 | # CONFIG_LAPB is not set | ||
304 | # CONFIG_ECONET is not set | ||
305 | # CONFIG_WAN_ROUTER is not set | ||
306 | # CONFIG_NET_SCHED is not set | ||
307 | |||
308 | # | ||
309 | # Network testing | ||
310 | # | ||
311 | # CONFIG_NET_PKTGEN is not set | ||
312 | # CONFIG_HAMRADIO is not set | ||
313 | # CONFIG_IRDA is not set | ||
314 | # CONFIG_BT is not set | ||
315 | # CONFIG_AF_RXRPC is not set | ||
316 | |||
317 | # | ||
318 | # Wireless | ||
319 | # | ||
320 | # CONFIG_CFG80211 is not set | ||
321 | # CONFIG_WIRELESS_EXT is not set | ||
322 | # CONFIG_MAC80211 is not set | ||
323 | # CONFIG_IEEE80211 is not set | ||
324 | # CONFIG_RFKILL is not set | ||
325 | # CONFIG_NET_9P is not set | ||
326 | |||
327 | # | ||
328 | # Device Drivers | ||
329 | # | ||
330 | |||
331 | # | ||
332 | # Generic Driver Options | ||
333 | # | ||
334 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
335 | CONFIG_STANDALONE=y | ||
336 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
337 | # CONFIG_FW_LOADER is not set | ||
338 | # CONFIG_SYS_HYPERVISOR is not set | ||
339 | # CONFIG_CONNECTOR is not set | ||
340 | CONFIG_MTD=y | ||
341 | # CONFIG_MTD_DEBUG is not set | ||
342 | # CONFIG_MTD_CONCAT is not set | ||
343 | CONFIG_MTD_PARTITIONS=y | ||
344 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
345 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
346 | |||
347 | # | ||
348 | # User Modules And Translation Layers | ||
349 | # | ||
350 | CONFIG_MTD_CHAR=y | ||
351 | CONFIG_MTD_BLKDEVS=y | ||
352 | CONFIG_MTD_BLOCK=y | ||
353 | CONFIG_FTL=y | ||
354 | CONFIG_NFTL=y | ||
355 | CONFIG_NFTL_RW=y | ||
356 | # CONFIG_INFTL is not set | ||
357 | # CONFIG_RFD_FTL is not set | ||
358 | # CONFIG_SSFDC is not set | ||
359 | # CONFIG_MTD_OOPS is not set | ||
360 | |||
361 | # | ||
362 | # RAM/ROM/Flash chip drivers | ||
363 | # | ||
364 | CONFIG_MTD_CFI=y | ||
365 | # CONFIG_MTD_JEDECPROBE is not set | ||
366 | CONFIG_MTD_GEN_PROBE=y | ||
367 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
368 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
369 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
370 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
371 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
372 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
373 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
374 | CONFIG_MTD_CFI_I1=y | ||
375 | CONFIG_MTD_CFI_I2=y | ||
376 | # CONFIG_MTD_CFI_I4 is not set | ||
377 | # CONFIG_MTD_CFI_I8 is not set | ||
378 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
379 | CONFIG_MTD_CFI_AMDSTD=y | ||
380 | # CONFIG_MTD_CFI_STAA is not set | ||
381 | CONFIG_MTD_CFI_UTIL=y | ||
382 | # CONFIG_MTD_RAM is not set | ||
383 | # CONFIG_MTD_ROM is not set | ||
384 | # CONFIG_MTD_ABSENT is not set | ||
385 | |||
386 | # | ||
387 | # Mapping drivers for chip access | ||
388 | # | ||
389 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
390 | CONFIG_MTD_PHYSMAP=y | ||
391 | CONFIG_MTD_PHYSMAP_START=0xFF800000 | ||
392 | CONFIG_MTD_PHYSMAP_LEN=0x00800000 | ||
393 | CONFIG_MTD_PHYSMAP_BANKWIDTH=1 | ||
394 | # CONFIG_MTD_PHYSMAP_OF is not set | ||
395 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
396 | # CONFIG_MTD_PLATRAM is not set | ||
397 | |||
398 | # | ||
399 | # Self-contained MTD device drivers | ||
400 | # | ||
401 | # CONFIG_MTD_PMC551 is not set | ||
402 | # CONFIG_MTD_SLRAM is not set | ||
403 | # CONFIG_MTD_PHRAM is not set | ||
404 | # CONFIG_MTD_MTDRAM is not set | ||
405 | # CONFIG_MTD_BLOCK2MTD is not set | ||
406 | |||
407 | # | ||
408 | # Disk-On-Chip Device Drivers | ||
409 | # | ||
410 | # CONFIG_MTD_DOC2000 is not set | ||
411 | # CONFIG_MTD_DOC2001 is not set | ||
412 | # CONFIG_MTD_DOC2001PLUS is not set | ||
413 | # CONFIG_MTD_NAND is not set | ||
414 | # CONFIG_MTD_ONENAND is not set | ||
415 | |||
416 | # | ||
417 | # UBI - Unsorted block images | ||
418 | # | ||
419 | # CONFIG_MTD_UBI is not set | ||
420 | CONFIG_OF_DEVICE=y | ||
421 | # CONFIG_PARPORT is not set | ||
422 | CONFIG_BLK_DEV=y | ||
423 | # CONFIG_BLK_DEV_FD is not set | ||
424 | # CONFIG_BLK_CPQ_DA is not set | ||
425 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
426 | # CONFIG_BLK_DEV_DAC960 is not set | ||
427 | # CONFIG_BLK_DEV_UMEM is not set | ||
428 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
429 | # CONFIG_BLK_DEV_LOOP is not set | ||
430 | # CONFIG_BLK_DEV_NBD is not set | ||
431 | # CONFIG_BLK_DEV_SX8 is not set | ||
432 | # CONFIG_BLK_DEV_UB is not set | ||
433 | # CONFIG_BLK_DEV_RAM is not set | ||
434 | # CONFIG_CDROM_PKTCDVD is not set | ||
435 | # CONFIG_ATA_OVER_ETH is not set | ||
436 | CONFIG_MISC_DEVICES=y | ||
437 | # CONFIG_PHANTOM is not set | ||
438 | # CONFIG_EEPROM_93CX6 is not set | ||
439 | # CONFIG_SGI_IOC4 is not set | ||
440 | # CONFIG_TIFM_CORE is not set | ||
441 | CONFIG_IDE=y | ||
442 | CONFIG_IDE_MAX_HWIFS=4 | ||
443 | CONFIG_BLK_DEV_IDE=y | ||
444 | |||
445 | # | ||
446 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
447 | # | ||
448 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
449 | CONFIG_BLK_DEV_IDEDISK=y | ||
450 | CONFIG_IDEDISK_MULTI_MODE=y | ||
451 | # CONFIG_BLK_DEV_IDECD is not set | ||
452 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
453 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
454 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
455 | # CONFIG_IDE_TASK_IOCTL is not set | ||
456 | CONFIG_IDE_PROC_FS=y | ||
457 | |||
458 | # | ||
459 | # IDE chipset support/bugfixes | ||
460 | # | ||
461 | CONFIG_IDE_GENERIC=y | ||
462 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
463 | |||
464 | # | ||
465 | # PCI IDE chipsets support | ||
466 | # | ||
467 | CONFIG_BLK_DEV_IDEPCI=y | ||
468 | # CONFIG_IDEPCI_SHARE_IRQ is not set | ||
469 | CONFIG_IDEPCI_PCIBUS_ORDER=y | ||
470 | # CONFIG_BLK_DEV_GENERIC is not set | ||
471 | # CONFIG_BLK_DEV_OPTI621 is not set | ||
472 | CONFIG_BLK_DEV_IDEDMA_PCI=y | ||
473 | # CONFIG_BLK_DEV_AEC62XX is not set | ||
474 | # CONFIG_BLK_DEV_ALI15X3 is not set | ||
475 | # CONFIG_BLK_DEV_AMD74XX is not set | ||
476 | # CONFIG_BLK_DEV_CMD64X is not set | ||
477 | # CONFIG_BLK_DEV_TRIFLEX is not set | ||
478 | # CONFIG_BLK_DEV_CY82C693 is not set | ||
479 | # CONFIG_BLK_DEV_CS5520 is not set | ||
480 | # CONFIG_BLK_DEV_CS5530 is not set | ||
481 | # CONFIG_BLK_DEV_HPT34X is not set | ||
482 | # CONFIG_BLK_DEV_HPT366 is not set | ||
483 | # CONFIG_BLK_DEV_JMICRON is not set | ||
484 | # CONFIG_BLK_DEV_SC1200 is not set | ||
485 | # CONFIG_BLK_DEV_PIIX is not set | ||
486 | # CONFIG_BLK_DEV_IT8213 is not set | ||
487 | # CONFIG_BLK_DEV_IT821X is not set | ||
488 | # CONFIG_BLK_DEV_NS87415 is not set | ||
489 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | ||
490 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | ||
491 | # CONFIG_BLK_DEV_SVWKS is not set | ||
492 | # CONFIG_BLK_DEV_SIIMAGE is not set | ||
493 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
494 | # CONFIG_BLK_DEV_SLC90E66 is not set | ||
495 | # CONFIG_BLK_DEV_TRM290 is not set | ||
496 | CONFIG_BLK_DEV_VIA82CXXX=y | ||
497 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
498 | # CONFIG_IDE_ARM is not set | ||
499 | CONFIG_BLK_DEV_IDEDMA=y | ||
500 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | ||
501 | # CONFIG_BLK_DEV_HD is not set | ||
502 | |||
503 | # | ||
504 | # SCSI device support | ||
505 | # | ||
506 | # CONFIG_RAID_ATTRS is not set | ||
507 | CONFIG_SCSI=y | ||
508 | CONFIG_SCSI_DMA=y | ||
509 | # CONFIG_SCSI_TGT is not set | ||
510 | # CONFIG_SCSI_NETLINK is not set | ||
511 | CONFIG_SCSI_PROC_FS=y | ||
512 | |||
513 | # | ||
514 | # SCSI support type (disk, tape, CD-ROM) | ||
515 | # | ||
516 | CONFIG_BLK_DEV_SD=y | ||
517 | # CONFIG_CHR_DEV_ST is not set | ||
518 | # CONFIG_CHR_DEV_OSST is not set | ||
519 | CONFIG_BLK_DEV_SR=y | ||
520 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
521 | # CONFIG_CHR_DEV_SG is not set | ||
522 | # CONFIG_CHR_DEV_SCH is not set | ||
523 | |||
524 | # | ||
525 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
526 | # | ||
527 | # CONFIG_SCSI_MULTI_LUN is not set | ||
528 | # CONFIG_SCSI_CONSTANTS is not set | ||
529 | # CONFIG_SCSI_LOGGING is not set | ||
530 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
531 | CONFIG_SCSI_WAIT_SCAN=m | ||
532 | |||
533 | # | ||
534 | # SCSI Transports | ||
535 | # | ||
536 | CONFIG_SCSI_SPI_ATTRS=y | ||
537 | # CONFIG_SCSI_FC_ATTRS is not set | ||
538 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
539 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
540 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
541 | CONFIG_SCSI_LOWLEVEL=y | ||
542 | # CONFIG_ISCSI_TCP is not set | ||
543 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
544 | # CONFIG_SCSI_3W_9XXX is not set | ||
545 | # CONFIG_SCSI_ACARD is not set | ||
546 | # CONFIG_SCSI_AACRAID is not set | ||
547 | # CONFIG_SCSI_AIC7XXX is not set | ||
548 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
549 | # CONFIG_SCSI_AIC79XX is not set | ||
550 | # CONFIG_SCSI_AIC94XX is not set | ||
551 | # CONFIG_SCSI_DPT_I2O is not set | ||
552 | # CONFIG_SCSI_ADVANSYS is not set | ||
553 | # CONFIG_SCSI_ARCMSR is not set | ||
554 | # CONFIG_MEGARAID_NEWGEN is not set | ||
555 | # CONFIG_MEGARAID_LEGACY is not set | ||
556 | # CONFIG_MEGARAID_SAS is not set | ||
557 | # CONFIG_SCSI_HPTIOP is not set | ||
558 | # CONFIG_SCSI_BUSLOGIC is not set | ||
559 | # CONFIG_SCSI_DMX3191D is not set | ||
560 | # CONFIG_SCSI_EATA is not set | ||
561 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
562 | # CONFIG_SCSI_GDTH is not set | ||
563 | # CONFIG_SCSI_IPS is not set | ||
564 | # CONFIG_SCSI_INITIO is not set | ||
565 | # CONFIG_SCSI_INIA100 is not set | ||
566 | # CONFIG_SCSI_STEX is not set | ||
567 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
568 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
569 | # CONFIG_SCSI_QLA_FC is not set | ||
570 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
571 | # CONFIG_SCSI_LPFC is not set | ||
572 | # CONFIG_SCSI_DC395x is not set | ||
573 | # CONFIG_SCSI_DC390T is not set | ||
574 | # CONFIG_SCSI_NSP32 is not set | ||
575 | # CONFIG_SCSI_DEBUG is not set | ||
576 | # CONFIG_SCSI_SRP is not set | ||
577 | # CONFIG_ATA is not set | ||
578 | CONFIG_MD=y | ||
579 | CONFIG_BLK_DEV_MD=y | ||
580 | CONFIG_MD_LINEAR=y | ||
581 | CONFIG_MD_RAID0=y | ||
582 | CONFIG_MD_RAID1=y | ||
583 | # CONFIG_MD_RAID10 is not set | ||
584 | CONFIG_MD_RAID456=y | ||
585 | CONFIG_MD_RAID5_RESHAPE=y | ||
586 | # CONFIG_MD_MULTIPATH is not set | ||
587 | # CONFIG_MD_FAULTY is not set | ||
588 | # CONFIG_BLK_DEV_DM is not set | ||
589 | # CONFIG_FUSION is not set | ||
590 | |||
591 | # | ||
592 | # IEEE 1394 (FireWire) support | ||
593 | # | ||
594 | # CONFIG_FIREWIRE is not set | ||
595 | # CONFIG_IEEE1394 is not set | ||
596 | # CONFIG_I2O is not set | ||
597 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
598 | CONFIG_NETDEVICES=y | ||
599 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
600 | CONFIG_DUMMY=m | ||
601 | # CONFIG_BONDING is not set | ||
602 | # CONFIG_MACVLAN is not set | ||
603 | # CONFIG_EQUALIZER is not set | ||
604 | # CONFIG_TUN is not set | ||
605 | # CONFIG_VETH is not set | ||
606 | # CONFIG_IP1000 is not set | ||
607 | # CONFIG_ARCNET is not set | ||
608 | # CONFIG_NET_ETHERNET is not set | ||
609 | CONFIG_NETDEV_1000=y | ||
610 | # CONFIG_ACENIC is not set | ||
611 | # CONFIG_DL2K is not set | ||
612 | # CONFIG_E1000 is not set | ||
613 | # CONFIG_E1000E is not set | ||
614 | # CONFIG_NS83820 is not set | ||
615 | # CONFIG_HAMACHI is not set | ||
616 | # CONFIG_YELLOWFIN is not set | ||
617 | CONFIG_R8169=y | ||
618 | # CONFIG_R8169_NAPI is not set | ||
619 | # CONFIG_SIS190 is not set | ||
620 | # CONFIG_SKGE is not set | ||
621 | # CONFIG_SKY2 is not set | ||
622 | # CONFIG_SK98LIN is not set | ||
623 | # CONFIG_VIA_VELOCITY is not set | ||
624 | # CONFIG_TIGON3 is not set | ||
625 | # CONFIG_BNX2 is not set | ||
626 | # CONFIG_MV643XX_ETH is not set | ||
627 | # CONFIG_QLA3XXX is not set | ||
628 | # CONFIG_ATL1 is not set | ||
629 | # CONFIG_NETDEV_10000 is not set | ||
630 | # CONFIG_TR is not set | ||
631 | |||
632 | # | ||
633 | # Wireless LAN | ||
634 | # | ||
635 | # CONFIG_WLAN_PRE80211 is not set | ||
636 | # CONFIG_WLAN_80211 is not set | ||
637 | |||
638 | # | ||
639 | # USB Network Adapters | ||
640 | # | ||
641 | # CONFIG_USB_CATC is not set | ||
642 | # CONFIG_USB_KAWETH is not set | ||
643 | # CONFIG_USB_PEGASUS is not set | ||
644 | # CONFIG_USB_RTL8150 is not set | ||
645 | # CONFIG_USB_USBNET is not set | ||
646 | # CONFIG_WAN is not set | ||
647 | # CONFIG_FDDI is not set | ||
648 | # CONFIG_HIPPI is not set | ||
649 | # CONFIG_PPP is not set | ||
650 | # CONFIG_SLIP is not set | ||
651 | # CONFIG_NET_FC is not set | ||
652 | # CONFIG_SHAPER is not set | ||
653 | # CONFIG_NETCONSOLE is not set | ||
654 | # CONFIG_NETPOLL is not set | ||
655 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
656 | # CONFIG_ISDN is not set | ||
657 | # CONFIG_PHONE is not set | ||
658 | |||
659 | # | ||
660 | # Input device support | ||
661 | # | ||
662 | # CONFIG_INPUT is not set | ||
663 | |||
664 | # | ||
665 | # Hardware I/O ports | ||
666 | # | ||
667 | # CONFIG_SERIO is not set | ||
668 | # CONFIG_GAMEPORT is not set | ||
669 | |||
670 | # | ||
671 | # Character devices | ||
672 | # | ||
673 | # CONFIG_VT is not set | ||
674 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
675 | |||
676 | # | ||
677 | # Serial drivers | ||
678 | # | ||
679 | CONFIG_SERIAL_8250=y | ||
680 | CONFIG_SERIAL_8250_CONSOLE=y | ||
681 | # CONFIG_SERIAL_8250_PCI is not set | ||
682 | CONFIG_SERIAL_8250_NR_UARTS=2 | ||
683 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 | ||
684 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
685 | |||
686 | # | ||
687 | # Non-8250 serial port support | ||
688 | # | ||
689 | # CONFIG_SERIAL_UARTLITE is not set | ||
690 | CONFIG_SERIAL_CORE=y | ||
691 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
692 | # CONFIG_SERIAL_JSM is not set | ||
693 | # CONFIG_SERIAL_OF_PLATFORM is not set | ||
694 | CONFIG_UNIX98_PTYS=y | ||
695 | CONFIG_LEGACY_PTYS=y | ||
696 | CONFIG_LEGACY_PTY_COUNT=256 | ||
697 | # CONFIG_IPMI_HANDLER is not set | ||
698 | CONFIG_HW_RANDOM=m | ||
699 | CONFIG_NVRAM=y | ||
700 | CONFIG_GEN_RTC=y | ||
701 | # CONFIG_GEN_RTC_X is not set | ||
702 | # CONFIG_R3964 is not set | ||
703 | # CONFIG_APPLICOM is not set | ||
704 | # CONFIG_RAW_DRIVER is not set | ||
705 | # CONFIG_TCG_TPM is not set | ||
706 | CONFIG_DEVPORT=y | ||
707 | CONFIG_I2C=y | ||
708 | CONFIG_I2C_BOARDINFO=y | ||
709 | CONFIG_I2C_CHARDEV=y | ||
710 | |||
711 | # | ||
712 | # I2C Algorithms | ||
713 | # | ||
714 | # CONFIG_I2C_ALGOBIT is not set | ||
715 | # CONFIG_I2C_ALGOPCF is not set | ||
716 | # CONFIG_I2C_ALGOPCA is not set | ||
717 | |||
718 | # | ||
719 | # I2C Hardware Bus support | ||
720 | # | ||
721 | # CONFIG_I2C_ALI1535 is not set | ||
722 | # CONFIG_I2C_ALI1563 is not set | ||
723 | # CONFIG_I2C_ALI15X3 is not set | ||
724 | # CONFIG_I2C_AMD756 is not set | ||
725 | # CONFIG_I2C_AMD8111 is not set | ||
726 | # CONFIG_I2C_I801 is not set | ||
727 | # CONFIG_I2C_I810 is not set | ||
728 | # CONFIG_I2C_PIIX4 is not set | ||
729 | CONFIG_I2C_MPC=y | ||
730 | # CONFIG_I2C_NFORCE2 is not set | ||
731 | # CONFIG_I2C_OCORES is not set | ||
732 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
733 | # CONFIG_I2C_PROSAVAGE is not set | ||
734 | # CONFIG_I2C_SAVAGE4 is not set | ||
735 | # CONFIG_I2C_SIMTEC is not set | ||
736 | # CONFIG_I2C_SIS5595 is not set | ||
737 | # CONFIG_I2C_SIS630 is not set | ||
738 | # CONFIG_I2C_SIS96X is not set | ||
739 | # CONFIG_I2C_TAOS_EVM is not set | ||
740 | # CONFIG_I2C_STUB is not set | ||
741 | # CONFIG_I2C_TINY_USB is not set | ||
742 | # CONFIG_I2C_VIA is not set | ||
743 | # CONFIG_I2C_VIAPRO is not set | ||
744 | # CONFIG_I2C_VOODOO3 is not set | ||
745 | |||
746 | # | ||
747 | # Miscellaneous I2C Chip support | ||
748 | # | ||
749 | # CONFIG_SENSORS_DS1337 is not set | ||
750 | # CONFIG_SENSORS_DS1374 is not set | ||
751 | # CONFIG_DS1682 is not set | ||
752 | # CONFIG_SENSORS_EEPROM is not set | ||
753 | # CONFIG_SENSORS_PCF8574 is not set | ||
754 | # CONFIG_SENSORS_PCA9539 is not set | ||
755 | # CONFIG_SENSORS_PCF8591 is not set | ||
756 | # CONFIG_SENSORS_M41T00 is not set | ||
757 | # CONFIG_SENSORS_MAX6875 is not set | ||
758 | # CONFIG_SENSORS_TSL2550 is not set | ||
759 | # CONFIG_I2C_DEBUG_CORE is not set | ||
760 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
761 | # CONFIG_I2C_DEBUG_BUS is not set | ||
762 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
763 | |||
764 | # | ||
765 | # SPI support | ||
766 | # | ||
767 | # CONFIG_SPI is not set | ||
768 | # CONFIG_SPI_MASTER is not set | ||
769 | # CONFIG_W1 is not set | ||
770 | # CONFIG_POWER_SUPPLY is not set | ||
771 | # CONFIG_HWMON is not set | ||
772 | # CONFIG_WATCHDOG is not set | ||
773 | |||
774 | # | ||
775 | # Sonics Silicon Backplane | ||
776 | # | ||
777 | CONFIG_SSB_POSSIBLE=y | ||
778 | # CONFIG_SSB is not set | ||
779 | |||
780 | # | ||
781 | # Multifunction device drivers | ||
782 | # | ||
783 | # CONFIG_MFD_SM501 is not set | ||
784 | |||
785 | # | ||
786 | # Multimedia devices | ||
787 | # | ||
788 | # CONFIG_VIDEO_DEV is not set | ||
789 | # CONFIG_DVB_CORE is not set | ||
790 | # CONFIG_DAB is not set | ||
791 | |||
792 | # | ||
793 | # Graphics support | ||
794 | # | ||
795 | # CONFIG_AGP is not set | ||
796 | # CONFIG_DRM is not set | ||
797 | # CONFIG_VGASTATE is not set | ||
798 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
799 | # CONFIG_FB is not set | ||
800 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
801 | |||
802 | # | ||
803 | # Display device support | ||
804 | # | ||
805 | # CONFIG_DISPLAY_SUPPORT is not set | ||
806 | |||
807 | # | ||
808 | # Sound | ||
809 | # | ||
810 | # CONFIG_SOUND is not set | ||
811 | CONFIG_USB_SUPPORT=y | ||
812 | CONFIG_USB_ARCH_HAS_HCD=y | ||
813 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
814 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
815 | CONFIG_USB=y | ||
816 | # CONFIG_USB_DEBUG is not set | ||
817 | |||
818 | # | ||
819 | # Miscellaneous USB options | ||
820 | # | ||
821 | CONFIG_USB_DEVICEFS=y | ||
822 | CONFIG_USB_DEVICE_CLASS=y | ||
823 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
824 | # CONFIG_USB_OTG is not set | ||
825 | |||
826 | # | ||
827 | # USB Host Controller Drivers | ||
828 | # | ||
829 | CONFIG_USB_EHCI_HCD=y | ||
830 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
831 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | ||
832 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
833 | # CONFIG_USB_ISP116X_HCD is not set | ||
834 | CONFIG_USB_OHCI_HCD=y | ||
835 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | ||
836 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | ||
837 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
838 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
839 | # CONFIG_USB_UHCI_HCD is not set | ||
840 | # CONFIG_USB_SL811_HCD is not set | ||
841 | # CONFIG_USB_R8A66597_HCD is not set | ||
842 | |||
843 | # | ||
844 | # USB Device Class drivers | ||
845 | # | ||
846 | # CONFIG_USB_ACM is not set | ||
847 | # CONFIG_USB_PRINTER is not set | ||
848 | |||
849 | # | ||
850 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
851 | # | ||
852 | |||
853 | # | ||
854 | # may also be needed; see USB_STORAGE Help for more information | ||
855 | # | ||
856 | CONFIG_USB_STORAGE=y | ||
857 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
858 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
859 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
860 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
861 | # CONFIG_USB_STORAGE_DPCM is not set | ||
862 | # CONFIG_USB_STORAGE_USBAT is not set | ||
863 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
864 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
865 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
866 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
867 | # CONFIG_USB_STORAGE_KARMA is not set | ||
868 | # CONFIG_USB_LIBUSUAL is not set | ||
869 | |||
870 | # | ||
871 | # USB Imaging devices | ||
872 | # | ||
873 | # CONFIG_USB_MDC800 is not set | ||
874 | # CONFIG_USB_MICROTEK is not set | ||
875 | # CONFIG_USB_MON is not set | ||
876 | |||
877 | # | ||
878 | # USB port drivers | ||
879 | # | ||
880 | |||
881 | # | ||
882 | # USB Serial Converter support | ||
883 | # | ||
884 | # CONFIG_USB_SERIAL is not set | ||
885 | |||
886 | # | ||
887 | # USB Miscellaneous drivers | ||
888 | # | ||
889 | # CONFIG_USB_EMI62 is not set | ||
890 | # CONFIG_USB_EMI26 is not set | ||
891 | # CONFIG_USB_ADUTUX is not set | ||
892 | # CONFIG_USB_AUERSWALD is not set | ||
893 | # CONFIG_USB_RIO500 is not set | ||
894 | # CONFIG_USB_LEGOTOWER is not set | ||
895 | # CONFIG_USB_LCD is not set | ||
896 | # CONFIG_USB_BERRY_CHARGE is not set | ||
897 | # CONFIG_USB_LED is not set | ||
898 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
899 | # CONFIG_USB_CYTHERM is not set | ||
900 | # CONFIG_USB_PHIDGET is not set | ||
901 | # CONFIG_USB_IDMOUSE is not set | ||
902 | # CONFIG_USB_FTDI_ELAN is not set | ||
903 | # CONFIG_USB_APPLEDISPLAY is not set | ||
904 | # CONFIG_USB_SISUSBVGA is not set | ||
905 | # CONFIG_USB_LD is not set | ||
906 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
907 | # CONFIG_USB_IOWARRIOR is not set | ||
908 | # CONFIG_USB_TEST is not set | ||
909 | |||
910 | # | ||
911 | # USB DSL modem support | ||
912 | # | ||
913 | |||
914 | # | ||
915 | # USB Gadget Support | ||
916 | # | ||
917 | # CONFIG_USB_GADGET is not set | ||
918 | # CONFIG_MMC is not set | ||
919 | # CONFIG_NEW_LEDS is not set | ||
920 | # CONFIG_INFINIBAND is not set | ||
921 | # CONFIG_EDAC is not set | ||
922 | CONFIG_RTC_LIB=y | ||
923 | CONFIG_RTC_CLASS=y | ||
924 | CONFIG_RTC_HCTOSYS=y | ||
925 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
926 | # CONFIG_RTC_DEBUG is not set | ||
927 | |||
928 | # | ||
929 | # RTC interfaces | ||
930 | # | ||
931 | CONFIG_RTC_INTF_SYSFS=y | ||
932 | CONFIG_RTC_INTF_PROC=y | ||
933 | CONFIG_RTC_INTF_DEV=y | ||
934 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
935 | # CONFIG_RTC_DRV_TEST is not set | ||
936 | |||
937 | # | ||
938 | # I2C RTC drivers | ||
939 | # | ||
940 | CONFIG_RTC_DRV_DS1307=y | ||
941 | # CONFIG_RTC_DRV_DS1374 is not set | ||
942 | # CONFIG_RTC_DRV_DS1672 is not set | ||
943 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
944 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
945 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
946 | # CONFIG_RTC_DRV_X1205 is not set | ||
947 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
948 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
949 | # CONFIG_RTC_DRV_M41T80 is not set | ||
950 | |||
951 | # | ||
952 | # SPI RTC drivers | ||
953 | # | ||
954 | |||
955 | # | ||
956 | # Platform RTC drivers | ||
957 | # | ||
958 | # CONFIG_RTC_DRV_CMOS is not set | ||
959 | # CONFIG_RTC_DRV_DS1553 is not set | ||
960 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
961 | # CONFIG_RTC_DRV_DS1742 is not set | ||
962 | # CONFIG_RTC_DRV_M48T86 is not set | ||
963 | # CONFIG_RTC_DRV_M48T59 is not set | ||
964 | # CONFIG_RTC_DRV_V3020 is not set | ||
965 | |||
966 | # | ||
967 | # on-CPU RTC drivers | ||
968 | # | ||
969 | |||
970 | # | ||
971 | # Userspace I/O | ||
972 | # | ||
973 | # CONFIG_UIO is not set | ||
974 | |||
975 | # | ||
976 | # File systems | ||
977 | # | ||
978 | CONFIG_EXT2_FS=y | ||
979 | # CONFIG_EXT2_FS_XATTR is not set | ||
980 | # CONFIG_EXT2_FS_XIP is not set | ||
981 | CONFIG_EXT3_FS=y | ||
982 | CONFIG_EXT3_FS_XATTR=y | ||
983 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
984 | # CONFIG_EXT3_FS_SECURITY is not set | ||
985 | # CONFIG_EXT4DEV_FS is not set | ||
986 | CONFIG_JBD=y | ||
987 | CONFIG_FS_MBCACHE=y | ||
988 | # CONFIG_REISERFS_FS is not set | ||
989 | # CONFIG_JFS_FS is not set | ||
990 | # CONFIG_FS_POSIX_ACL is not set | ||
991 | CONFIG_XFS_FS=m | ||
992 | # CONFIG_XFS_QUOTA is not set | ||
993 | # CONFIG_XFS_SECURITY is not set | ||
994 | # CONFIG_XFS_POSIX_ACL is not set | ||
995 | # CONFIG_XFS_RT is not set | ||
996 | # CONFIG_GFS2_FS is not set | ||
997 | # CONFIG_OCFS2_FS is not set | ||
998 | # CONFIG_MINIX_FS is not set | ||
999 | # CONFIG_ROMFS_FS is not set | ||
1000 | CONFIG_INOTIFY=y | ||
1001 | CONFIG_INOTIFY_USER=y | ||
1002 | # CONFIG_QUOTA is not set | ||
1003 | CONFIG_DNOTIFY=y | ||
1004 | # CONFIG_AUTOFS_FS is not set | ||
1005 | # CONFIG_AUTOFS4_FS is not set | ||
1006 | # CONFIG_FUSE_FS is not set | ||
1007 | |||
1008 | # | ||
1009 | # CD-ROM/DVD Filesystems | ||
1010 | # | ||
1011 | # CONFIG_ISO9660_FS is not set | ||
1012 | # CONFIG_UDF_FS is not set | ||
1013 | |||
1014 | # | ||
1015 | # DOS/FAT/NT Filesystems | ||
1016 | # | ||
1017 | # CONFIG_MSDOS_FS is not set | ||
1018 | # CONFIG_VFAT_FS is not set | ||
1019 | # CONFIG_NTFS_FS is not set | ||
1020 | |||
1021 | # | ||
1022 | # Pseudo filesystems | ||
1023 | # | ||
1024 | CONFIG_PROC_FS=y | ||
1025 | CONFIG_PROC_KCORE=y | ||
1026 | CONFIG_PROC_SYSCTL=y | ||
1027 | CONFIG_SYSFS=y | ||
1028 | CONFIG_TMPFS=y | ||
1029 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1030 | # CONFIG_HUGETLB_PAGE is not set | ||
1031 | # CONFIG_CONFIGFS_FS is not set | ||
1032 | |||
1033 | # | ||
1034 | # Miscellaneous filesystems | ||
1035 | # | ||
1036 | # CONFIG_ADFS_FS is not set | ||
1037 | # CONFIG_AFFS_FS is not set | ||
1038 | # CONFIG_HFS_FS is not set | ||
1039 | # CONFIG_HFSPLUS_FS is not set | ||
1040 | # CONFIG_BEFS_FS is not set | ||
1041 | # CONFIG_BFS_FS is not set | ||
1042 | # CONFIG_EFS_FS is not set | ||
1043 | CONFIG_JFFS2_FS=y | ||
1044 | CONFIG_JFFS2_FS_DEBUG=0 | ||
1045 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
1046 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
1047 | # CONFIG_JFFS2_SUMMARY is not set | ||
1048 | # CONFIG_JFFS2_FS_XATTR is not set | ||
1049 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
1050 | CONFIG_JFFS2_ZLIB=y | ||
1051 | # CONFIG_JFFS2_LZO is not set | ||
1052 | CONFIG_JFFS2_RTIME=y | ||
1053 | # CONFIG_JFFS2_RUBIN is not set | ||
1054 | # CONFIG_CRAMFS is not set | ||
1055 | # CONFIG_VXFS_FS is not set | ||
1056 | # CONFIG_HPFS_FS is not set | ||
1057 | # CONFIG_QNX4FS_FS is not set | ||
1058 | # CONFIG_SYSV_FS is not set | ||
1059 | # CONFIG_UFS_FS is not set | ||
1060 | # CONFIG_NETWORK_FILESYSTEMS is not set | ||
1061 | |||
1062 | # | ||
1063 | # Partition Types | ||
1064 | # | ||
1065 | CONFIG_PARTITION_ADVANCED=y | ||
1066 | # CONFIG_ACORN_PARTITION is not set | ||
1067 | # CONFIG_OSF_PARTITION is not set | ||
1068 | # CONFIG_AMIGA_PARTITION is not set | ||
1069 | # CONFIG_ATARI_PARTITION is not set | ||
1070 | # CONFIG_MAC_PARTITION is not set | ||
1071 | CONFIG_MSDOS_PARTITION=y | ||
1072 | # CONFIG_BSD_DISKLABEL is not set | ||
1073 | # CONFIG_MINIX_SUBPARTITION is not set | ||
1074 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
1075 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
1076 | # CONFIG_LDM_PARTITION is not set | ||
1077 | # CONFIG_SGI_PARTITION is not set | ||
1078 | # CONFIG_ULTRIX_PARTITION is not set | ||
1079 | # CONFIG_SUN_PARTITION is not set | ||
1080 | # CONFIG_KARMA_PARTITION is not set | ||
1081 | # CONFIG_EFI_PARTITION is not set | ||
1082 | # CONFIG_SYSV68_PARTITION is not set | ||
1083 | CONFIG_NLS=y | ||
1084 | CONFIG_NLS_DEFAULT="utf8" | ||
1085 | CONFIG_NLS_CODEPAGE_437=y | ||
1086 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
1087 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
1088 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
1089 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
1090 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
1091 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
1092 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
1093 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
1094 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
1095 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
1096 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
1097 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
1098 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
1099 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
1100 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
1101 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
1102 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
1103 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
1104 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
1105 | # CONFIG_NLS_ISO8859_8 is not set | ||
1106 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
1107 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
1108 | # CONFIG_NLS_ASCII is not set | ||
1109 | CONFIG_NLS_ISO8859_1=y | ||
1110 | # CONFIG_NLS_ISO8859_2 is not set | ||
1111 | # CONFIG_NLS_ISO8859_3 is not set | ||
1112 | # CONFIG_NLS_ISO8859_4 is not set | ||
1113 | # CONFIG_NLS_ISO8859_5 is not set | ||
1114 | # CONFIG_NLS_ISO8859_6 is not set | ||
1115 | # CONFIG_NLS_ISO8859_7 is not set | ||
1116 | # CONFIG_NLS_ISO8859_9 is not set | ||
1117 | # CONFIG_NLS_ISO8859_13 is not set | ||
1118 | # CONFIG_NLS_ISO8859_14 is not set | ||
1119 | # CONFIG_NLS_ISO8859_15 is not set | ||
1120 | # CONFIG_NLS_KOI8_R is not set | ||
1121 | # CONFIG_NLS_KOI8_U is not set | ||
1122 | CONFIG_NLS_UTF8=y | ||
1123 | # CONFIG_DLM is not set | ||
1124 | # CONFIG_UCC_SLOW is not set | ||
1125 | |||
1126 | # | ||
1127 | # Library routines | ||
1128 | # | ||
1129 | CONFIG_BITREVERSE=y | ||
1130 | # CONFIG_CRC_CCITT is not set | ||
1131 | # CONFIG_CRC16 is not set | ||
1132 | # CONFIG_CRC_ITU_T is not set | ||
1133 | CONFIG_CRC32=y | ||
1134 | # CONFIG_CRC7 is not set | ||
1135 | # CONFIG_LIBCRC32C is not set | ||
1136 | CONFIG_ZLIB_INFLATE=y | ||
1137 | CONFIG_ZLIB_DEFLATE=y | ||
1138 | CONFIG_PLIST=y | ||
1139 | CONFIG_HAS_IOMEM=y | ||
1140 | CONFIG_HAS_IOPORT=y | ||
1141 | CONFIG_HAS_DMA=y | ||
1142 | CONFIG_INSTRUMENTATION=y | ||
1143 | # CONFIG_PROFILING is not set | ||
1144 | # CONFIG_MARKERS is not set | ||
1145 | |||
1146 | # | ||
1147 | # Kernel hacking | ||
1148 | # | ||
1149 | # CONFIG_PRINTK_TIME is not set | ||
1150 | # CONFIG_ENABLE_WARN_DEPRECATED is not set | ||
1151 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
1152 | # CONFIG_MAGIC_SYSRQ is not set | ||
1153 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1154 | # CONFIG_DEBUG_FS is not set | ||
1155 | # CONFIG_HEADERS_CHECK is not set | ||
1156 | # CONFIG_DEBUG_KERNEL is not set | ||
1157 | # CONFIG_SLUB_DEBUG_ON is not set | ||
1158 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1159 | # CONFIG_SAMPLES is not set | ||
1160 | # CONFIG_BOOTX_TEXT is not set | ||
1161 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
1162 | |||
1163 | # | ||
1164 | # Security options | ||
1165 | # | ||
1166 | # CONFIG_KEYS is not set | ||
1167 | # CONFIG_SECURITY is not set | ||
1168 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1169 | CONFIG_XOR_BLOCKS=y | ||
1170 | CONFIG_ASYNC_CORE=y | ||
1171 | CONFIG_ASYNC_MEMCPY=y | ||
1172 | CONFIG_ASYNC_XOR=y | ||
1173 | # CONFIG_CRYPTO is not set | ||
1174 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index d9b377070caa..58dbfeff9b4d 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile | |||
@@ -70,6 +70,7 @@ pci64-$(CONFIG_PPC64) += pci_dn.o isa-bridge.o | |||
70 | obj-$(CONFIG_PCI) += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \ | 70 | obj-$(CONFIG_PCI) += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \ |
71 | pci-common.o | 71 | pci-common.o |
72 | obj-$(CONFIG_PCI_MSI) += msi.o | 72 | obj-$(CONFIG_PCI_MSI) += msi.o |
73 | obj-$(CONFIG_RAPIDIO) += rio.o | ||
73 | obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o \ | 74 | obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o \ |
74 | machine_kexec_$(CONFIG_WORD_SIZE).o | 75 | machine_kexec_$(CONFIG_WORD_SIZE).o |
75 | obj-$(CONFIG_AUDIT) += audit.o | 76 | obj-$(CONFIG_AUDIT) += audit.o |
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S index 7aecb39a5a45..d9cc2c288d9e 100644 --- a/arch/powerpc/kernel/head_fsl_booke.S +++ b/arch/powerpc/kernel/head_fsl_booke.S | |||
@@ -73,8 +73,8 @@ _ENTRY(_start); | |||
73 | /* We try to not make any assumptions about how the boot loader | 73 | /* We try to not make any assumptions about how the boot loader |
74 | * setup or used the TLBs. We invalidate all mappings from the | 74 | * setup or used the TLBs. We invalidate all mappings from the |
75 | * boot loader and load a single entry in TLB1[0] to map the | 75 | * boot loader and load a single entry in TLB1[0] to map the |
76 | * first 16M of kernel memory. Any boot info passed from the | 76 | * first 64M of kernel memory. Any boot info passed from the |
77 | * bootloader needs to live in this first 16M. | 77 | * bootloader needs to live in this first 64M. |
78 | * | 78 | * |
79 | * Requirement on bootloader: | 79 | * Requirement on bootloader: |
80 | * - The page we're executing in needs to reside in TLB1 and | 80 | * - The page we're executing in needs to reside in TLB1 and |
@@ -167,7 +167,7 @@ skpinv: addi r6,r6,1 /* Increment */ | |||
167 | mtspr SPRN_MAS0,r7 | 167 | mtspr SPRN_MAS0,r7 |
168 | tlbre | 168 | tlbre |
169 | 169 | ||
170 | /* Just modify the entry ID and EPN for the temp mapping */ | 170 | /* Just modify the entry ID, EPN and RPN for the temp mapping */ |
171 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | 171 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ |
172 | rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ | 172 | rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ |
173 | mtspr SPRN_MAS0,r7 | 173 | mtspr SPRN_MAS0,r7 |
@@ -177,9 +177,12 @@ skpinv: addi r6,r6,1 /* Increment */ | |||
177 | ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l | 177 | ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l |
178 | mtspr SPRN_MAS1,r6 | 178 | mtspr SPRN_MAS1,r6 |
179 | mfspr r6,SPRN_MAS2 | 179 | mfspr r6,SPRN_MAS2 |
180 | li r7,0 /* temp EPN = 0 */ | 180 | lis r7,PHYSICAL_START@h |
181 | rlwimi r7,r6,0,20,31 | 181 | rlwimi r7,r6,0,20,31 |
182 | mtspr SPRN_MAS2,r7 | 182 | mtspr SPRN_MAS2,r7 |
183 | mfspr r6,SPRN_MAS3 | ||
184 | rlwimi r7,r6,0,20,31 | ||
185 | mtspr SPRN_MAS3,r7 | ||
183 | tlbwe | 186 | tlbwe |
184 | 187 | ||
185 | xori r6,r4,1 | 188 | xori r6,r4,1 |
@@ -222,11 +225,11 @@ skpinv: addi r6,r6,1 /* Increment */ | |||
222 | lis r6,0x1000 /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */ | 225 | lis r6,0x1000 /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */ |
223 | mtspr SPRN_MAS0,r6 | 226 | mtspr SPRN_MAS0,r6 |
224 | lis r6,(MAS1_VALID|MAS1_IPROT)@h | 227 | lis r6,(MAS1_VALID|MAS1_IPROT)@h |
225 | ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_16M))@l | 228 | ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_64M))@l |
226 | mtspr SPRN_MAS1,r6 | 229 | mtspr SPRN_MAS1,r6 |
227 | li r7,0 | 230 | li r7,0 |
228 | lis r6,KERNELBASE@h | 231 | lis r6,PAGE_OFFSET@h |
229 | ori r6,r6,KERNELBASE@l | 232 | ori r6,r6,PAGE_OFFSET@l |
230 | rlwimi r6,r7,0,20,31 | 233 | rlwimi r6,r7,0,20,31 |
231 | mtspr SPRN_MAS2,r6 | 234 | mtspr SPRN_MAS2,r6 |
232 | li r7,(MAS3_SX|MAS3_SW|MAS3_SR) | 235 | li r7,(MAS3_SX|MAS3_SW|MAS3_SR) |
@@ -234,6 +237,9 @@ skpinv: addi r6,r6,1 /* Increment */ | |||
234 | tlbwe | 237 | tlbwe |
235 | 238 | ||
236 | /* 7. Jump to KERNELBASE mapping */ | 239 | /* 7. Jump to KERNELBASE mapping */ |
240 | lis r6,KERNELBASE@h | ||
241 | ori r6,r6,KERNELBASE@l | ||
242 | rlwimi r6,r7,0,20,31 | ||
237 | lis r7,MSR_KERNEL@h | 243 | lis r7,MSR_KERNEL@h |
238 | ori r7,r7,MSR_KERNEL@l | 244 | ori r7,r7,MSR_KERNEL@l |
239 | bl 1f /* Find our address */ | 245 | bl 1f /* Find our address */ |
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index d394d41b61d5..980fe32895c0 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
@@ -792,9 +792,10 @@ static void __devinit __pcibios_fixup_bus(struct pci_bus *bus) | |||
792 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) { | 792 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) { |
793 | if ((res = bus->resource[i]) == NULL) | 793 | if ((res = bus->resource[i]) == NULL) |
794 | continue; | 794 | continue; |
795 | if (!res->flags || bus->self->transparent) | 795 | if (!res->flags) |
796 | continue; | ||
797 | if (i >= 3 && bus->self->transparent) | ||
796 | continue; | 798 | continue; |
797 | |||
798 | /* On PowerMac, Apple leaves bridge windows open over | 799 | /* On PowerMac, Apple leaves bridge windows open over |
799 | * an inaccessible region of memory space (0...fffff) | 800 | * an inaccessible region of memory space (0...fffff) |
800 | * which is somewhat bogus, but that's what they think | 801 | * which is somewhat bogus, but that's what they think |
@@ -806,7 +807,8 @@ static void __devinit __pcibios_fixup_bus(struct pci_bus *bus) | |||
806 | * equal to the pci_mem_offset of the host bridge and | 807 | * equal to the pci_mem_offset of the host bridge and |
807 | * their size is smaller than 1M. | 808 | * their size is smaller than 1M. |
808 | */ | 809 | */ |
809 | if (res->start == hose->pci_mem_offset && | 810 | if (res->flags & IORESOURCE_MEM && |
811 | res->start == hose->pci_mem_offset && | ||
810 | res->end < 0x100000) { | 812 | res->end < 0x100000) { |
811 | printk(KERN_INFO | 813 | printk(KERN_INFO |
812 | "PCI: Closing bogus Apple Firmware" | 814 | "PCI: Closing bogus Apple Firmware" |
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index 14e300f85ce4..88db4ffaf11c 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c | |||
@@ -94,64 +94,6 @@ fixup_cpc710_pci64(struct pci_dev* dev) | |||
94 | } | 94 | } |
95 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CPC710_PCI64, fixup_cpc710_pci64); | 95 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CPC710_PCI64, fixup_cpc710_pci64); |
96 | 96 | ||
97 | |||
98 | void __init | ||
99 | update_bridge_resource(struct pci_dev *dev, struct resource *res) | ||
100 | { | ||
101 | u8 io_base_lo, io_limit_lo; | ||
102 | u16 mem_base, mem_limit; | ||
103 | u16 cmd; | ||
104 | resource_size_t start, end, off; | ||
105 | struct pci_controller *hose = dev->sysdata; | ||
106 | |||
107 | if (!hose) { | ||
108 | printk("update_bridge_base: no hose?\n"); | ||
109 | return; | ||
110 | } | ||
111 | pci_read_config_word(dev, PCI_COMMAND, &cmd); | ||
112 | pci_write_config_word(dev, PCI_COMMAND, | ||
113 | cmd & ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY)); | ||
114 | if (res->flags & IORESOURCE_IO) { | ||
115 | off = (unsigned long) hose->io_base_virt - isa_io_base; | ||
116 | start = res->start - off; | ||
117 | end = res->end - off; | ||
118 | io_base_lo = (start >> 8) & PCI_IO_RANGE_MASK; | ||
119 | io_limit_lo = (end >> 8) & PCI_IO_RANGE_MASK; | ||
120 | if (end > 0xffff) | ||
121 | io_base_lo |= PCI_IO_RANGE_TYPE_32; | ||
122 | else | ||
123 | io_base_lo |= PCI_IO_RANGE_TYPE_16; | ||
124 | pci_write_config_word(dev, PCI_IO_BASE_UPPER16, | ||
125 | start >> 16); | ||
126 | pci_write_config_word(dev, PCI_IO_LIMIT_UPPER16, | ||
127 | end >> 16); | ||
128 | pci_write_config_byte(dev, PCI_IO_BASE, io_base_lo); | ||
129 | pci_write_config_byte(dev, PCI_IO_LIMIT, io_limit_lo); | ||
130 | |||
131 | } else if ((res->flags & (IORESOURCE_MEM | IORESOURCE_PREFETCH)) | ||
132 | == IORESOURCE_MEM) { | ||
133 | off = hose->pci_mem_offset; | ||
134 | mem_base = ((res->start - off) >> 16) & PCI_MEMORY_RANGE_MASK; | ||
135 | mem_limit = ((res->end - off) >> 16) & PCI_MEMORY_RANGE_MASK; | ||
136 | pci_write_config_word(dev, PCI_MEMORY_BASE, mem_base); | ||
137 | pci_write_config_word(dev, PCI_MEMORY_LIMIT, mem_limit); | ||
138 | |||
139 | } else if ((res->flags & (IORESOURCE_MEM | IORESOURCE_PREFETCH)) | ||
140 | == (IORESOURCE_MEM | IORESOURCE_PREFETCH)) { | ||
141 | off = hose->pci_mem_offset; | ||
142 | mem_base = ((res->start - off) >> 16) & PCI_PREF_RANGE_MASK; | ||
143 | mem_limit = ((res->end - off) >> 16) & PCI_PREF_RANGE_MASK; | ||
144 | pci_write_config_word(dev, PCI_PREF_MEMORY_BASE, mem_base); | ||
145 | pci_write_config_word(dev, PCI_PREF_MEMORY_LIMIT, mem_limit); | ||
146 | |||
147 | } else { | ||
148 | DBG(KERN_ERR "PCI: ugh, bridge %s res has flags=%lx\n", | ||
149 | pci_name(dev), res->flags); | ||
150 | } | ||
151 | pci_write_config_word(dev, PCI_COMMAND, cmd); | ||
152 | } | ||
153 | |||
154 | |||
155 | #ifdef CONFIG_PPC_OF | 97 | #ifdef CONFIG_PPC_OF |
156 | /* | 98 | /* |
157 | * Functions below are used on OpenFirmware machines. | 99 | * Functions below are used on OpenFirmware machines. |
diff --git a/arch/ppc/kernel/rio.c b/arch/powerpc/kernel/rio.c index 29487fedfc76..29487fedfc76 100644 --- a/arch/ppc/kernel/rio.c +++ b/arch/powerpc/kernel/rio.c | |||
diff --git a/arch/powerpc/math-emu/op-4.h b/arch/powerpc/math-emu/op-4.h index fcdd6d064c54..c9ae626070da 100644 --- a/arch/powerpc/math-emu/op-4.h +++ b/arch/powerpc/math-emu/op-4.h | |||
@@ -194,19 +194,39 @@ | |||
194 | (X##_f[3] = I3, X##_f[2] = I2, X##_f[1] = I1, X##_f[0] = I0) | 194 | (X##_f[3] = I3, X##_f[2] = I2, X##_f[1] = I1, X##_f[0] = I0) |
195 | 195 | ||
196 | #ifndef __FP_FRAC_ADD_4 | 196 | #ifndef __FP_FRAC_ADD_4 |
197 | #define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ | 197 | #define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ |
198 | (r0 = x0 + y0, \ | 198 | do { \ |
199 | r1 = x1 + y1 + (r0 < x0), \ | 199 | int _c1, _c2, _c3; \ |
200 | r2 = x2 + y2 + (r1 < x1), \ | 200 | r0 = x0 + y0; \ |
201 | r3 = x3 + y3 + (r2 < x2)) | 201 | _c1 = r0 < x0; \ |
202 | r1 = x1 + y1; \ | ||
203 | _c2 = r1 < x1; \ | ||
204 | r1 += _c1; \ | ||
205 | _c2 |= r1 < _c1; \ | ||
206 | r2 = x2 + y2; \ | ||
207 | _c3 = r2 < x2; \ | ||
208 | r2 += _c2; \ | ||
209 | _c3 |= r2 < _c2; \ | ||
210 | r3 = x3 + y3 + _c3; \ | ||
211 | } while (0) | ||
202 | #endif | 212 | #endif |
203 | 213 | ||
204 | #ifndef __FP_FRAC_SUB_4 | 214 | #ifndef __FP_FRAC_SUB_4 |
205 | #define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ | 215 | #define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ |
206 | (r0 = x0 - y0, \ | 216 | do { \ |
207 | r1 = x1 - y1 - (r0 > x0), \ | 217 | int _c1, _c2, _c3; \ |
208 | r2 = x2 - y2 - (r1 > x1), \ | 218 | r0 = x0 - y0; \ |
209 | r3 = x3 - y3 - (r2 > x2)) | 219 | _c1 = r0 > x0; \ |
220 | r1 = x1 - y1; \ | ||
221 | _c2 = r1 > x1; \ | ||
222 | r1 -= _c1; \ | ||
223 | _c2 |= r1 > _c1; \ | ||
224 | r2 = x2 - y2; \ | ||
225 | _c3 = r2 > x2; \ | ||
226 | r2 -= _c2; \ | ||
227 | _c3 |= r2 > _c2; \ | ||
228 | r3 = x3 - y3 - _c3; \ | ||
229 | } while (0) | ||
210 | #endif | 230 | #endif |
211 | 231 | ||
212 | #ifndef __FP_FRAC_ADDI_4 | 232 | #ifndef __FP_FRAC_ADDI_4 |
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c index 17139daeaff4..c93a966b7e4b 100644 --- a/arch/powerpc/mm/fsl_booke_mmu.c +++ b/arch/powerpc/mm/fsl_booke_mmu.c | |||
@@ -165,15 +165,15 @@ void invalidate_tlbcam_entry(int index) | |||
165 | void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1, | 165 | void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1, |
166 | unsigned long cam2) | 166 | unsigned long cam2) |
167 | { | 167 | { |
168 | settlbcam(0, KERNELBASE, PPC_MEMSTART, cam0, _PAGE_KERNEL, 0); | 168 | settlbcam(0, PAGE_OFFSET, PPC_MEMSTART, cam0, _PAGE_KERNEL, 0); |
169 | tlbcam_index++; | 169 | tlbcam_index++; |
170 | if (cam1) { | 170 | if (cam1) { |
171 | tlbcam_index++; | 171 | tlbcam_index++; |
172 | settlbcam(1, KERNELBASE+cam0, PPC_MEMSTART+cam0, cam1, _PAGE_KERNEL, 0); | 172 | settlbcam(1, PAGE_OFFSET+cam0, PPC_MEMSTART+cam0, cam1, _PAGE_KERNEL, 0); |
173 | } | 173 | } |
174 | if (cam2) { | 174 | if (cam2) { |
175 | tlbcam_index++; | 175 | tlbcam_index++; |
176 | settlbcam(2, KERNELBASE+cam0+cam1, PPC_MEMSTART+cam0+cam1, cam2, _PAGE_KERNEL, 0); | 176 | settlbcam(2, PAGE_OFFSET+cam0+cam1, PPC_MEMSTART+cam0+cam1, cam2, _PAGE_KERNEL, 0); |
177 | } | 177 | } |
178 | } | 178 | } |
179 | 179 | ||
diff --git a/arch/powerpc/mm/lmb.c b/arch/powerpc/mm/lmb.c index 8f4d2dc4cafb..4ce23bcf8a57 100644 --- a/arch/powerpc/mm/lmb.c +++ b/arch/powerpc/mm/lmb.c | |||
@@ -342,3 +342,16 @@ void __init lmb_enforce_memory_limit(unsigned long memory_limit) | |||
342 | } | 342 | } |
343 | } | 343 | } |
344 | } | 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 5402fb6b3aae..e8122447f019 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -213,15 +213,30 @@ void __init do_init_bootmem(void) | |||
213 | */ | 213 | */ |
214 | #ifdef CONFIG_HIGHMEM | 214 | #ifdef CONFIG_HIGHMEM |
215 | free_bootmem_with_active_regions(0, total_lowmem >> PAGE_SHIFT); | 215 | free_bootmem_with_active_regions(0, total_lowmem >> PAGE_SHIFT); |
216 | |||
217 | /* reserve the sections we're already using */ | ||
218 | for (i = 0; i < lmb.reserved.cnt; i++) { | ||
219 | unsigned long addr = lmb.reserved.region[i].base + | ||
220 | lmb_size_bytes(&lmb.reserved, i) - 1; | ||
221 | if (addr < total_lowmem) | ||
222 | reserve_bootmem(lmb.reserved.region[i].base, | ||
223 | lmb_size_bytes(&lmb.reserved, i)); | ||
224 | else if (lmb.reserved.region[i].base < total_lowmem) { | ||
225 | unsigned long adjusted_size = total_lowmem - | ||
226 | lmb.reserved.region[i].base; | ||
227 | reserve_bootmem(lmb.reserved.region[i].base, | ||
228 | adjusted_size); | ||
229 | } | ||
230 | } | ||
216 | #else | 231 | #else |
217 | free_bootmem_with_active_regions(0, max_pfn); | 232 | free_bootmem_with_active_regions(0, max_pfn); |
218 | #endif | ||
219 | 233 | ||
220 | /* reserve the sections we're already using */ | 234 | /* reserve the sections we're already using */ |
221 | for (i = 0; i < lmb.reserved.cnt; i++) | 235 | for (i = 0; i < lmb.reserved.cnt; i++) |
222 | reserve_bootmem(lmb.reserved.region[i].base, | 236 | reserve_bootmem(lmb.reserved.region[i].base, |
223 | lmb_size_bytes(&lmb.reserved, i)); | 237 | lmb_size_bytes(&lmb.reserved, i)); |
224 | 238 | ||
239 | #endif | ||
225 | /* XXX need to clip this if using highmem? */ | 240 | /* XXX need to clip this if using highmem? */ |
226 | sparse_memory_present_with_active_regions(0); | 241 | sparse_memory_present_with_active_regions(0); |
227 | 242 | ||
@@ -334,11 +349,13 @@ void __init mem_init(void) | |||
334 | highmem_mapnr = total_lowmem >> PAGE_SHIFT; | 349 | highmem_mapnr = total_lowmem >> PAGE_SHIFT; |
335 | for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { | 350 | for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { |
336 | struct page *page = pfn_to_page(pfn); | 351 | struct page *page = pfn_to_page(pfn); |
337 | 352 | if (lmb_is_reserved(pfn << PAGE_SHIFT)) | |
353 | continue; | ||
338 | ClearPageReserved(page); | 354 | ClearPageReserved(page); |
339 | init_page_count(page); | 355 | init_page_count(page); |
340 | __free_page(page); | 356 | __free_page(page); |
341 | totalhigh_pages++; | 357 | totalhigh_pages++; |
358 | reservedpages--; | ||
342 | } | 359 | } |
343 | totalram_pages += totalhigh_pages; | 360 | totalram_pages += totalhigh_pages; |
344 | printk(KERN_DEBUG "High memory: %luk\n", | 361 | printk(KERN_DEBUG "High memory: %luk\n", |
diff --git a/arch/powerpc/platforms/82xx/Kconfig b/arch/powerpc/platforms/82xx/Kconfig index 541fbb815631..4fad6c7bf9f1 100644 --- a/arch/powerpc/platforms/82xx/Kconfig +++ b/arch/powerpc/platforms/82xx/Kconfig | |||
@@ -26,6 +26,19 @@ config PQ2FADS | |||
26 | help | 26 | help |
27 | This option enables support for the PQ2FADS board | 27 | This option enables support for the PQ2FADS board |
28 | 28 | ||
29 | config EP8248E | ||
30 | bool "Embedded Planet EP8248E (a.k.a. CWH-PPC-8248N-VE)" | ||
31 | select 8272 | ||
32 | select 8260 | ||
33 | select FSL_SOC | ||
34 | select PPC_CPM_NEW_BINDING | ||
35 | select MDIO_BITBANG | ||
36 | help | ||
37 | This enables support for the Embedded Planet EP8248E board. | ||
38 | |||
39 | This board is also resold by Freescale as the QUICCStart | ||
40 | MPC8248 Evaluation System and/or the CWH-PPC-8248N-VE. | ||
41 | |||
29 | endchoice | 42 | endchoice |
30 | 43 | ||
31 | config PQ2ADS | 44 | config PQ2ADS |
diff --git a/arch/powerpc/platforms/82xx/Makefile b/arch/powerpc/platforms/82xx/Makefile index 68c8b0c9772b..6cd5cd59bf2a 100644 --- a/arch/powerpc/platforms/82xx/Makefile +++ b/arch/powerpc/platforms/82xx/Makefile | |||
@@ -5,3 +5,4 @@ obj-$(CONFIG_MPC8272_ADS) += mpc8272_ads.o | |||
5 | obj-$(CONFIG_CPM2) += pq2.o | 5 | obj-$(CONFIG_CPM2) += pq2.o |
6 | obj-$(CONFIG_PQ2_ADS_PCI_PIC) += pq2ads-pci-pic.o | 6 | obj-$(CONFIG_PQ2_ADS_PCI_PIC) += pq2ads-pci-pic.o |
7 | obj-$(CONFIG_PQ2FADS) += pq2fads.o | 7 | obj-$(CONFIG_PQ2FADS) += pq2fads.o |
8 | obj-$(CONFIG_EP8248E) += ep8248e.o | ||
diff --git a/arch/powerpc/platforms/82xx/ep8248e.c b/arch/powerpc/platforms/82xx/ep8248e.c new file mode 100644 index 000000000000..ba93d8ae9b0c --- /dev/null +++ b/arch/powerpc/platforms/82xx/ep8248e.c | |||
@@ -0,0 +1,324 @@ | |||
1 | /* | ||
2 | * Embedded Planet EP8248E support | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor, Inc. | ||
5 | * Author: Scott Wood <scottwood@freescale.com> | ||
6 | * | ||
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 | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/interrupt.h> | ||
15 | #include <linux/fsl_devices.h> | ||
16 | #include <linux/mdio-bitbang.h> | ||
17 | #include <linux/of_platform.h> | ||
18 | |||
19 | #include <asm/io.h> | ||
20 | #include <asm/cpm2.h> | ||
21 | #include <asm/udbg.h> | ||
22 | #include <asm/machdep.h> | ||
23 | #include <asm/time.h> | ||
24 | #include <asm/mpc8260.h> | ||
25 | #include <asm/prom.h> | ||
26 | |||
27 | #include <sysdev/fsl_soc.h> | ||
28 | #include <sysdev/cpm2_pic.h> | ||
29 | |||
30 | #include "pq2.h" | ||
31 | |||
32 | static u8 __iomem *ep8248e_bcsr; | ||
33 | static struct device_node *ep8248e_bcsr_node; | ||
34 | |||
35 | #define BCSR7_SCC2_ENABLE 0x10 | ||
36 | |||
37 | #define BCSR8_PHY1_ENABLE 0x80 | ||
38 | #define BCSR8_PHY1_POWER 0x40 | ||
39 | #define BCSR8_PHY2_ENABLE 0x20 | ||
40 | #define BCSR8_PHY2_POWER 0x10 | ||
41 | #define BCSR8_MDIO_READ 0x04 | ||
42 | #define BCSR8_MDIO_CLOCK 0x02 | ||
43 | #define BCSR8_MDIO_DATA 0x01 | ||
44 | |||
45 | #define BCSR9_USB_ENABLE 0x80 | ||
46 | #define BCSR9_USB_POWER 0x40 | ||
47 | #define BCSR9_USB_HOST 0x20 | ||
48 | #define BCSR9_USB_FULL_SPEED_TARGET 0x10 | ||
49 | |||
50 | static void __init ep8248e_pic_init(void) | ||
51 | { | ||
52 | struct device_node *np = of_find_compatible_node(NULL, NULL, "fsl,pq2-pic"); | ||
53 | if (!np) { | ||
54 | printk(KERN_ERR "PIC init: can not find cpm-pic node\n"); | ||
55 | return; | ||
56 | } | ||
57 | |||
58 | cpm2_pic_init(np); | ||
59 | of_node_put(np); | ||
60 | } | ||
61 | |||
62 | static void ep8248e_set_mdc(struct mdiobb_ctrl *ctrl, int level) | ||
63 | { | ||
64 | if (level) | ||
65 | setbits8(&ep8248e_bcsr[8], BCSR8_MDIO_CLOCK); | ||
66 | else | ||
67 | clrbits8(&ep8248e_bcsr[8], BCSR8_MDIO_CLOCK); | ||
68 | |||
69 | /* Read back to flush the write. */ | ||
70 | in_8(&ep8248e_bcsr[8]); | ||
71 | } | ||
72 | |||
73 | static void ep8248e_set_mdio_dir(struct mdiobb_ctrl *ctrl, int output) | ||
74 | { | ||
75 | if (output) | ||
76 | clrbits8(&ep8248e_bcsr[8], BCSR8_MDIO_READ); | ||
77 | else | ||
78 | setbits8(&ep8248e_bcsr[8], BCSR8_MDIO_READ); | ||
79 | |||
80 | /* Read back to flush the write. */ | ||
81 | in_8(&ep8248e_bcsr[8]); | ||
82 | } | ||
83 | |||
84 | static void ep8248e_set_mdio_data(struct mdiobb_ctrl *ctrl, int data) | ||
85 | { | ||
86 | if (data) | ||
87 | setbits8(&ep8248e_bcsr[8], BCSR8_MDIO_DATA); | ||
88 | else | ||
89 | clrbits8(&ep8248e_bcsr[8], BCSR8_MDIO_DATA); | ||
90 | |||
91 | /* Read back to flush the write. */ | ||
92 | in_8(&ep8248e_bcsr[8]); | ||
93 | } | ||
94 | |||
95 | static int ep8248e_get_mdio_data(struct mdiobb_ctrl *ctrl) | ||
96 | { | ||
97 | return in_8(&ep8248e_bcsr[8]) & BCSR8_MDIO_DATA; | ||
98 | } | ||
99 | |||
100 | static const struct mdiobb_ops ep8248e_mdio_ops = { | ||
101 | .set_mdc = ep8248e_set_mdc, | ||
102 | .set_mdio_dir = ep8248e_set_mdio_dir, | ||
103 | .set_mdio_data = ep8248e_set_mdio_data, | ||
104 | .get_mdio_data = ep8248e_get_mdio_data, | ||
105 | .owner = THIS_MODULE, | ||
106 | }; | ||
107 | |||
108 | static struct mdiobb_ctrl ep8248e_mdio_ctrl = { | ||
109 | .ops = &ep8248e_mdio_ops, | ||
110 | }; | ||
111 | |||
112 | static int __devinit ep8248e_mdio_probe(struct of_device *ofdev, | ||
113 | const struct of_device_id *match) | ||
114 | { | ||
115 | struct mii_bus *bus; | ||
116 | struct resource res; | ||
117 | struct device_node *node; | ||
118 | int ret, i; | ||
119 | |||
120 | node = of_get_parent(ofdev->node); | ||
121 | of_node_put(node); | ||
122 | if (node != ep8248e_bcsr_node) | ||
123 | return -ENODEV; | ||
124 | |||
125 | ret = of_address_to_resource(ofdev->node, 0, &res); | ||
126 | if (ret) | ||
127 | return ret; | ||
128 | |||
129 | bus = alloc_mdio_bitbang(&ep8248e_mdio_ctrl); | ||
130 | if (!bus) | ||
131 | return -ENOMEM; | ||
132 | |||
133 | bus->phy_mask = 0; | ||
134 | bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL); | ||
135 | |||
136 | for (i = 0; i < PHY_MAX_ADDR; i++) | ||
137 | bus->irq[i] = -1; | ||
138 | |||
139 | bus->name = "ep8248e-mdio-bitbang"; | ||
140 | bus->dev = &ofdev->dev; | ||
141 | bus->id = res.start; | ||
142 | |||
143 | return mdiobus_register(bus); | ||
144 | } | ||
145 | |||
146 | static int ep8248e_mdio_remove(struct of_device *ofdev) | ||
147 | { | ||
148 | BUG(); | ||
149 | return 0; | ||
150 | } | ||
151 | |||
152 | static const struct of_device_id ep8248e_mdio_match[] = { | ||
153 | { | ||
154 | .compatible = "fsl,ep8248e-mdio-bitbang", | ||
155 | }, | ||
156 | {}, | ||
157 | }; | ||
158 | |||
159 | static struct of_platform_driver ep8248e_mdio_driver = { | ||
160 | .driver = { | ||
161 | .name = "ep8248e-mdio-bitbang", | ||
162 | }, | ||
163 | .match_table = ep8248e_mdio_match, | ||
164 | .probe = ep8248e_mdio_probe, | ||
165 | .remove = ep8248e_mdio_remove, | ||
166 | }; | ||
167 | |||
168 | struct cpm_pin { | ||
169 | int port, pin, flags; | ||
170 | }; | ||
171 | |||
172 | static __initdata struct cpm_pin ep8248e_pins[] = { | ||
173 | /* SMC1 */ | ||
174 | {2, 4, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
175 | {2, 5, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
176 | |||
177 | /* SCC1 */ | ||
178 | {2, 14, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
179 | {2, 15, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
180 | {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
181 | {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
182 | {3, 31, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
183 | |||
184 | /* FCC1 */ | ||
185 | {0, 14, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
186 | {0, 15, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
187 | {0, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
188 | {0, 17, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
189 | {0, 18, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
190 | {0, 19, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
191 | {0, 20, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
192 | {0, 21, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
193 | {0, 26, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
194 | {0, 27, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
195 | {0, 28, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
196 | {0, 29, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
197 | {0, 30, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
198 | {0, 31, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
199 | {2, 21, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
200 | {2, 22, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
201 | |||
202 | /* FCC2 */ | ||
203 | {1, 18, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
204 | {1, 19, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
205 | {1, 20, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
206 | {1, 21, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
207 | {1, 22, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
208 | {1, 23, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
209 | {1, 24, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
210 | {1, 25, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
211 | {1, 26, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
212 | {1, 27, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
213 | {1, 28, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
214 | {1, 29, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
215 | {1, 30, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
216 | {1, 31, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
217 | {2, 18, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
218 | {2, 19, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
219 | |||
220 | /* I2C */ | ||
221 | {4, 14, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
222 | {4, 15, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, | ||
223 | |||
224 | /* USB */ | ||
225 | {2, 10, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
226 | {2, 11, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
227 | {2, 20, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
228 | {2, 24, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
229 | {3, 23, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
230 | {3, 24, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | ||
231 | {3, 25, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, | ||
232 | }; | ||
233 | |||
234 | static void __init init_ioports(void) | ||
235 | { | ||
236 | int i; | ||
237 | |||
238 | for (i = 0; i < ARRAY_SIZE(ep8248e_pins); i++) { | ||
239 | const struct cpm_pin *pin = &ep8248e_pins[i]; | ||
240 | cpm2_set_pin(pin->port, pin->pin, pin->flags); | ||
241 | } | ||
242 | |||
243 | cpm2_smc_clk_setup(CPM_CLK_SMC1, CPM_BRG7); | ||
244 | cpm2_clk_setup(CPM_CLK_SCC1, CPM_BRG1, CPM_CLK_RX); | ||
245 | cpm2_clk_setup(CPM_CLK_SCC1, CPM_BRG1, CPM_CLK_TX); | ||
246 | cpm2_clk_setup(CPM_CLK_SCC3, CPM_CLK8, CPM_CLK_TX); /* USB */ | ||
247 | cpm2_clk_setup(CPM_CLK_FCC1, CPM_CLK11, CPM_CLK_RX); | ||
248 | cpm2_clk_setup(CPM_CLK_FCC1, CPM_CLK10, CPM_CLK_TX); | ||
249 | cpm2_clk_setup(CPM_CLK_FCC2, CPM_CLK13, CPM_CLK_RX); | ||
250 | cpm2_clk_setup(CPM_CLK_FCC2, CPM_CLK14, CPM_CLK_TX); | ||
251 | } | ||
252 | |||
253 | static void __init ep8248e_setup_arch(void) | ||
254 | { | ||
255 | if (ppc_md.progress) | ||
256 | ppc_md.progress("ep8248e_setup_arch()", 0); | ||
257 | |||
258 | cpm2_reset(); | ||
259 | |||
260 | /* When this is set, snooping CPM DMA from RAM causes | ||
261 | * machine checks. See erratum SIU18. | ||
262 | */ | ||
263 | clrbits32(&cpm2_immr->im_siu_conf.siu_82xx.sc_bcr, MPC82XX_BCR_PLDP); | ||
264 | |||
265 | ep8248e_bcsr_node = | ||
266 | of_find_compatible_node(NULL, NULL, "fsl,ep8248e-bcsr"); | ||
267 | if (!ep8248e_bcsr_node) { | ||
268 | printk(KERN_ERR "No bcsr in device tree\n"); | ||
269 | return; | ||
270 | } | ||
271 | |||
272 | ep8248e_bcsr = of_iomap(ep8248e_bcsr_node, 0); | ||
273 | if (!ep8248e_bcsr) { | ||
274 | printk(KERN_ERR "Cannot map BCSR registers\n"); | ||
275 | of_node_put(ep8248e_bcsr_node); | ||
276 | ep8248e_bcsr_node = NULL; | ||
277 | return; | ||
278 | } | ||
279 | |||
280 | setbits8(&ep8248e_bcsr[7], BCSR7_SCC2_ENABLE); | ||
281 | setbits8(&ep8248e_bcsr[8], BCSR8_PHY1_ENABLE | BCSR8_PHY1_POWER | | ||
282 | BCSR8_PHY2_ENABLE | BCSR8_PHY2_POWER); | ||
283 | |||
284 | init_ioports(); | ||
285 | |||
286 | if (ppc_md.progress) | ||
287 | ppc_md.progress("ep8248e_setup_arch(), finish", 0); | ||
288 | } | ||
289 | |||
290 | static __initdata struct of_device_id of_bus_ids[] = { | ||
291 | { .compatible = "simple-bus", }, | ||
292 | { .compatible = "fsl,ep8248e-bcsr", }, | ||
293 | {}, | ||
294 | }; | ||
295 | |||
296 | static int __init declare_of_platform_devices(void) | ||
297 | { | ||
298 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
299 | of_register_platform_driver(&ep8248e_mdio_driver); | ||
300 | |||
301 | return 0; | ||
302 | } | ||
303 | machine_device_initcall(ep8248e, declare_of_platform_devices); | ||
304 | |||
305 | /* | ||
306 | * Called very early, device-tree isn't unflattened | ||
307 | */ | ||
308 | static int __init ep8248e_probe(void) | ||
309 | { | ||
310 | unsigned long root = of_get_flat_dt_root(); | ||
311 | return of_flat_dt_is_compatible(root, "fsl,ep8248e"); | ||
312 | } | ||
313 | |||
314 | define_machine(ep8248e) | ||
315 | { | ||
316 | .name = "Embedded Planet EP8248E", | ||
317 | .probe = ep8248e_probe, | ||
318 | .setup_arch = ep8248e_setup_arch, | ||
319 | .init_IRQ = ep8248e_pic_init, | ||
320 | .get_irq = cpm2_get_irq, | ||
321 | .calibrate_decr = generic_calibrate_decr, | ||
322 | .restart = pq2_restart, | ||
323 | .progress = udbg_progress, | ||
324 | }; | ||
diff --git a/arch/powerpc/platforms/83xx/mpc8313_rdb.c b/arch/powerpc/platforms/83xx/mpc8313_rdb.c index 6fb82993967c..4996b7dfdf1d 100644 --- a/arch/powerpc/platforms/83xx/mpc8313_rdb.c +++ b/arch/powerpc/platforms/83xx/mpc8313_rdb.c | |||
@@ -14,6 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/pci.h> | 16 | #include <linux/pci.h> |
17 | #include <linux/of_platform.h> | ||
17 | 18 | ||
18 | #include <asm/time.h> | 19 | #include <asm/time.h> |
19 | #include <asm/ipic.h> | 20 | #include <asm/ipic.h> |
@@ -75,6 +76,18 @@ static int __init mpc8313_rdb_probe(void) | |||
75 | return of_flat_dt_is_compatible(root, "MPC8313ERDB"); | 76 | return of_flat_dt_is_compatible(root, "MPC8313ERDB"); |
76 | } | 77 | } |
77 | 78 | ||
79 | static struct of_device_id __initdata of_bus_ids[] = { | ||
80 | { .compatible = "simple-bus" }, | ||
81 | {}, | ||
82 | }; | ||
83 | |||
84 | static int __init declare_of_platform_devices(void) | ||
85 | { | ||
86 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
87 | return 0; | ||
88 | } | ||
89 | machine_device_initcall(mpc8313_rdb, declare_of_platform_devices); | ||
90 | |||
78 | define_machine(mpc8313_rdb) { | 91 | define_machine(mpc8313_rdb) { |
79 | .name = "MPC8313 RDB", | 92 | .name = "MPC8313 RDB", |
80 | .probe = mpc8313_rdb_probe, | 93 | .probe = mpc8313_rdb_probe, |
diff --git a/arch/powerpc/platforms/83xx/mpc832x_mds.c b/arch/powerpc/platforms/83xx/mpc832x_mds.c index 1e570bb947fc..dbdd4adef645 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc832x_mds.c | |||
@@ -110,15 +110,12 @@ static struct of_device_id mpc832x_ids[] = { | |||
110 | 110 | ||
111 | static int __init mpc832x_declare_of_platform_devices(void) | 111 | static int __init mpc832x_declare_of_platform_devices(void) |
112 | { | 112 | { |
113 | if (!machine_is(mpc832x_mds)) | ||
114 | return 0; | ||
115 | |||
116 | /* Publish the QE devices */ | 113 | /* Publish the QE devices */ |
117 | of_platform_bus_probe(NULL, mpc832x_ids, NULL); | 114 | of_platform_bus_probe(NULL, mpc832x_ids, NULL); |
118 | 115 | ||
119 | return 0; | 116 | return 0; |
120 | } | 117 | } |
121 | device_initcall(mpc832x_declare_of_platform_devices); | 118 | machine_device_initcall(mpc832x_mds, mpc832x_declare_of_platform_devices); |
122 | 119 | ||
123 | static void __init mpc832x_sys_init_IRQ(void) | 120 | static void __init mpc832x_sys_init_IRQ(void) |
124 | { | 121 | { |
diff --git a/arch/powerpc/platforms/83xx/mpc832x_rdb.c b/arch/powerpc/platforms/83xx/mpc832x_rdb.c index ffb2e9361ce3..5fddd2285abb 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_rdb.c +++ b/arch/powerpc/platforms/83xx/mpc832x_rdb.c | |||
@@ -63,9 +63,6 @@ static struct spi_board_info mpc832x_spi_boardinfo = { | |||
63 | 63 | ||
64 | static int __init mpc832x_spi_init(void) | 64 | static int __init mpc832x_spi_init(void) |
65 | { | 65 | { |
66 | if (!machine_is(mpc832x_rdb)) | ||
67 | return 0; | ||
68 | |||
69 | par_io_config_pin(3, 0, 3, 0, 1, 0); /* SPI1 MOSI, I/O */ | 66 | par_io_config_pin(3, 0, 3, 0, 1, 0); /* SPI1 MOSI, I/O */ |
70 | par_io_config_pin(3, 1, 3, 0, 1, 0); /* SPI1 MISO, I/O */ | 67 | par_io_config_pin(3, 1, 3, 0, 1, 0); /* SPI1 MISO, I/O */ |
71 | par_io_config_pin(3, 2, 3, 0, 1, 0); /* SPI1 CLK, I/O */ | 68 | par_io_config_pin(3, 2, 3, 0, 1, 0); /* SPI1 CLK, I/O */ |
@@ -80,7 +77,7 @@ static int __init mpc832x_spi_init(void) | |||
80 | mpc83xx_spi_deactivate_cs); | 77 | mpc83xx_spi_deactivate_cs); |
81 | } | 78 | } |
82 | 79 | ||
83 | device_initcall(mpc832x_spi_init); | 80 | machine_device_initcall(mpc832x_rdb, mpc832x_spi_init); |
84 | 81 | ||
85 | /* ************************************************************************ | 82 | /* ************************************************************************ |
86 | * | 83 | * |
@@ -123,15 +120,12 @@ static struct of_device_id mpc832x_ids[] = { | |||
123 | 120 | ||
124 | static int __init mpc832x_declare_of_platform_devices(void) | 121 | static int __init mpc832x_declare_of_platform_devices(void) |
125 | { | 122 | { |
126 | if (!machine_is(mpc832x_rdb)) | ||
127 | return 0; | ||
128 | |||
129 | /* Publish the QE devices */ | 123 | /* Publish the QE devices */ |
130 | of_platform_bus_probe(NULL, mpc832x_ids, NULL); | 124 | of_platform_bus_probe(NULL, mpc832x_ids, NULL); |
131 | 125 | ||
132 | return 0; | 126 | return 0; |
133 | } | 127 | } |
134 | device_initcall(mpc832x_declare_of_platform_devices); | 128 | machine_device_initcall(mpc832x_rdb, mpc832x_declare_of_platform_devices); |
135 | 129 | ||
136 | void __init mpc832x_rdb_init_IRQ(void) | 130 | void __init mpc832x_rdb_init_IRQ(void) |
137 | { | 131 | { |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_itx.c b/arch/powerpc/platforms/83xx/mpc834x_itx.c index aa768199432d..50e8f632061c 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_itx.c +++ b/arch/powerpc/platforms/83xx/mpc834x_itx.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
24 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
25 | #include <linux/root_dev.h> | 25 | #include <linux/root_dev.h> |
26 | #include <linux/of_platform.h> | ||
26 | 27 | ||
27 | #include <asm/system.h> | 28 | #include <asm/system.h> |
28 | #include <asm/atomic.h> | 29 | #include <asm/atomic.h> |
@@ -37,6 +38,17 @@ | |||
37 | 38 | ||
38 | #include "mpc83xx.h" | 39 | #include "mpc83xx.h" |
39 | 40 | ||
41 | static struct of_device_id __initdata mpc834x_itx_ids[] = { | ||
42 | { .compatible = "fsl,pq2pro-localbus", }, | ||
43 | {}, | ||
44 | }; | ||
45 | |||
46 | static int __init mpc834x_itx_declare_of_platform_devices(void) | ||
47 | { | ||
48 | return of_platform_bus_probe(NULL, mpc834x_itx_ids, NULL); | ||
49 | } | ||
50 | machine_device_initcall(mpc834x_itx, mpc834x_itx_declare_of_platform_devices); | ||
51 | |||
40 | /* ************************************************************************ | 52 | /* ************************************************************************ |
41 | * | 53 | * |
42 | * Setup the architecture | 54 | * Setup the architecture |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_mds.c b/arch/powerpc/platforms/83xx/mpc834x_mds.c index 459fb7227e76..2b8a0a3f8557 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc834x_mds.c | |||
@@ -115,13 +115,10 @@ static struct of_device_id mpc834x_ids[] = { | |||
115 | 115 | ||
116 | static int __init mpc834x_declare_of_platform_devices(void) | 116 | static int __init mpc834x_declare_of_platform_devices(void) |
117 | { | 117 | { |
118 | if (!machine_is(mpc834x_mds)) | ||
119 | return 0; | ||
120 | |||
121 | of_platform_bus_probe(NULL, mpc834x_ids, NULL); | 118 | of_platform_bus_probe(NULL, mpc834x_ids, NULL); |
122 | return 0; | 119 | return 0; |
123 | } | 120 | } |
124 | device_initcall(mpc834x_declare_of_platform_devices); | 121 | machine_device_initcall(mpc834x_mds, mpc834x_declare_of_platform_devices); |
125 | 122 | ||
126 | /* | 123 | /* |
127 | * Called very early, MMU is off, device-tree isn't unflattened | 124 | * Called very early, MMU is off, device-tree isn't unflattened |
diff --git a/arch/powerpc/platforms/83xx/mpc836x_mds.c b/arch/powerpc/platforms/83xx/mpc836x_mds.c index 2ac9890b763c..db491ec006e0 100644 --- a/arch/powerpc/platforms/83xx/mpc836x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc836x_mds.c | |||
@@ -141,15 +141,12 @@ static struct of_device_id mpc836x_ids[] = { | |||
141 | 141 | ||
142 | static int __init mpc836x_declare_of_platform_devices(void) | 142 | static int __init mpc836x_declare_of_platform_devices(void) |
143 | { | 143 | { |
144 | if (!machine_is(mpc836x_mds)) | ||
145 | return 0; | ||
146 | |||
147 | /* Publish the QE devices */ | 144 | /* Publish the QE devices */ |
148 | of_platform_bus_probe(NULL, mpc836x_ids, NULL); | 145 | of_platform_bus_probe(NULL, mpc836x_ids, NULL); |
149 | 146 | ||
150 | return 0; | 147 | return 0; |
151 | } | 148 | } |
152 | device_initcall(mpc836x_declare_of_platform_devices); | 149 | machine_device_initcall(mpc836x_mds, mpc836x_declare_of_platform_devices); |
153 | 150 | ||
154 | static void __init mpc836x_mds_init_IRQ(void) | 151 | static void __init mpc836x_mds_init_IRQ(void) |
155 | { | 152 | { |
diff --git a/arch/powerpc/platforms/83xx/mpc837x_mds.c b/arch/powerpc/platforms/83xx/mpc837x_mds.c index 9cdc32b4fa18..8a9c26973605 100644 --- a/arch/powerpc/platforms/83xx/mpc837x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc837x_mds.c | |||
@@ -22,6 +22,56 @@ | |||
22 | 22 | ||
23 | #include "mpc83xx.h" | 23 | #include "mpc83xx.h" |
24 | 24 | ||
25 | #define BCSR12_USB_SER_MASK 0x8a | ||
26 | #define BCSR12_USB_SER_PIN 0x80 | ||
27 | #define BCSR12_USB_SER_DEVICE 0x02 | ||
28 | extern int mpc837x_usb_cfg(void); | ||
29 | |||
30 | static int mpc837xmds_usb_cfg(void) | ||
31 | { | ||
32 | struct device_node *np; | ||
33 | const void *phy_type, *mode; | ||
34 | void __iomem *bcsr_regs = NULL; | ||
35 | u8 bcsr12; | ||
36 | int ret; | ||
37 | |||
38 | ret = mpc837x_usb_cfg(); | ||
39 | if (ret) | ||
40 | return ret; | ||
41 | /* Map BCSR area */ | ||
42 | np = of_find_node_by_name(NULL, "bcsr"); | ||
43 | if (np) { | ||
44 | struct resource res; | ||
45 | |||
46 | of_address_to_resource(np, 0, &res); | ||
47 | bcsr_regs = ioremap(res.start, res.end - res.start + 1); | ||
48 | of_node_put(np); | ||
49 | } | ||
50 | if (!bcsr_regs) | ||
51 | return -1; | ||
52 | |||
53 | np = of_find_node_by_name(NULL, "usb"); | ||
54 | if (!np) | ||
55 | return -ENODEV; | ||
56 | phy_type = of_get_property(np, "phy_type", NULL); | ||
57 | if (phy_type && !strcmp(phy_type, "ulpi")) { | ||
58 | clrbits8(bcsr_regs + 12, BCSR12_USB_SER_PIN); | ||
59 | } else if (phy_type && !strcmp(phy_type, "serial")) { | ||
60 | mode = of_get_property(np, "dr_mode", NULL); | ||
61 | bcsr12 = in_8(bcsr_regs + 12) & ~BCSR12_USB_SER_MASK; | ||
62 | bcsr12 |= BCSR12_USB_SER_PIN; | ||
63 | if (mode && !strcmp(mode, "peripheral")) | ||
64 | bcsr12 |= BCSR12_USB_SER_DEVICE; | ||
65 | out_8(bcsr_regs + 12, bcsr12); | ||
66 | } else { | ||
67 | printk(KERN_ERR "USB DR: unsupported PHY\n"); | ||
68 | } | ||
69 | |||
70 | of_node_put(np); | ||
71 | iounmap(bcsr_regs); | ||
72 | return 0; | ||
73 | } | ||
74 | |||
25 | /* ************************************************************************ | 75 | /* ************************************************************************ |
26 | * | 76 | * |
27 | * Setup the architecture | 77 | * Setup the architecture |
@@ -40,6 +90,7 @@ static void __init mpc837x_mds_setup_arch(void) | |||
40 | for_each_compatible_node(np, "pci", "fsl,mpc8349-pci") | 90 | for_each_compatible_node(np, "pci", "fsl,mpc8349-pci") |
41 | mpc83xx_add_bridge(np); | 91 | mpc83xx_add_bridge(np); |
42 | #endif | 92 | #endif |
93 | mpc837xmds_usb_cfg(); | ||
43 | } | 94 | } |
44 | 95 | ||
45 | static struct of_device_id mpc837x_ids[] = { | 96 | static struct of_device_id mpc837x_ids[] = { |
@@ -50,15 +101,12 @@ static struct of_device_id mpc837x_ids[] = { | |||
50 | 101 | ||
51 | static int __init mpc837x_declare_of_platform_devices(void) | 102 | static int __init mpc837x_declare_of_platform_devices(void) |
52 | { | 103 | { |
53 | if (!machine_is(mpc837x_mds)) | ||
54 | return 0; | ||
55 | |||
56 | /* Publish of_device */ | 104 | /* Publish of_device */ |
57 | of_platform_bus_probe(NULL, mpc837x_ids, NULL); | 105 | of_platform_bus_probe(NULL, mpc837x_ids, NULL); |
58 | 106 | ||
59 | return 0; | 107 | return 0; |
60 | } | 108 | } |
61 | device_initcall(mpc837x_declare_of_platform_devices); | 109 | machine_device_initcall(mpc837x_mds, mpc837x_declare_of_platform_devices); |
62 | 110 | ||
63 | static void __init mpc837x_mds_init_IRQ(void) | 111 | static void __init mpc837x_mds_init_IRQ(void) |
64 | { | 112 | { |
diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h index b778cb4f3fb5..88bb748aff0d 100644 --- a/arch/powerpc/platforms/83xx/mpc83xx.h +++ b/arch/powerpc/platforms/83xx/mpc83xx.h | |||
@@ -14,6 +14,7 @@ | |||
14 | #define MPC83XX_SCCR_USB_DRCM_11 0x00300000 | 14 | #define MPC83XX_SCCR_USB_DRCM_11 0x00300000 |
15 | #define MPC83XX_SCCR_USB_DRCM_01 0x00100000 | 15 | #define MPC83XX_SCCR_USB_DRCM_01 0x00100000 |
16 | #define MPC83XX_SCCR_USB_DRCM_10 0x00200000 | 16 | #define MPC83XX_SCCR_USB_DRCM_10 0x00200000 |
17 | #define MPC837X_SCCR_USB_DRCM_11 0x00c00000 | ||
17 | 18 | ||
18 | /* system i/o configuration register low */ | 19 | /* system i/o configuration register low */ |
19 | #define MPC83XX_SICRL_OFFS 0x114 | 20 | #define MPC83XX_SICRL_OFFS 0x114 |
@@ -22,6 +23,8 @@ | |||
22 | #define MPC834X_SICRL_USB1 0x20000000 | 23 | #define MPC834X_SICRL_USB1 0x20000000 |
23 | #define MPC831X_SICRL_USB_MASK 0x00000c00 | 24 | #define MPC831X_SICRL_USB_MASK 0x00000c00 |
24 | #define MPC831X_SICRL_USB_ULPI 0x00000800 | 25 | #define MPC831X_SICRL_USB_ULPI 0x00000800 |
26 | #define MPC837X_SICRL_USB_MASK 0xf0000000 | ||
27 | #define MPC837X_SICRL_USB_ULPI 0x50000000 | ||
25 | 28 | ||
26 | /* system i/o configuration register high */ | 29 | /* system i/o configuration register high */ |
27 | #define MPC83XX_SICRH_OFFS 0x118 | 30 | #define MPC83XX_SICRH_OFFS 0x118 |
diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c index b45160f8d084..6a454a4087c8 100644 --- a/arch/powerpc/platforms/83xx/usb.c +++ b/arch/powerpc/platforms/83xx/usb.c | |||
@@ -41,7 +41,7 @@ int mpc834x_usb_cfg(void) | |||
41 | sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK; | 41 | sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK; |
42 | sicrh = in_be32(immap + MPC83XX_SICRH_OFFS) & ~MPC834X_SICRH_USB_UTMI; | 42 | sicrh = in_be32(immap + MPC83XX_SICRH_OFFS) & ~MPC834X_SICRH_USB_UTMI; |
43 | 43 | ||
44 | np = of_find_compatible_node(NULL, "usb", "fsl-usb2-dr"); | 44 | np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr"); |
45 | if (np) { | 45 | if (np) { |
46 | sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ | 46 | sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ |
47 | 47 | ||
@@ -67,7 +67,7 @@ int mpc834x_usb_cfg(void) | |||
67 | port0_is_dr = 1; | 67 | port0_is_dr = 1; |
68 | of_node_put(np); | 68 | of_node_put(np); |
69 | } | 69 | } |
70 | np = of_find_compatible_node(NULL, "usb", "fsl-usb2-mph"); | 70 | np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph"); |
71 | if (np) { | 71 | if (np) { |
72 | sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */ | 72 | sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */ |
73 | 73 | ||
@@ -111,7 +111,7 @@ int mpc831x_usb_cfg(void) | |||
111 | const void *dr_mode; | 111 | const void *dr_mode; |
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | np = of_find_compatible_node(NULL, "usb", "fsl-usb2-dr"); | 114 | np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr"); |
115 | if (!np) | 115 | if (!np) |
116 | return -ENODEV; | 116 | return -ENODEV; |
117 | prop = of_get_property(np, "phy_type", NULL); | 117 | prop = of_get_property(np, "phy_type", NULL); |
@@ -179,3 +179,43 @@ int mpc831x_usb_cfg(void) | |||
179 | return ret; | 179 | return ret; |
180 | } | 180 | } |
181 | #endif /* CONFIG_PPC_MPC831x */ | 181 | #endif /* CONFIG_PPC_MPC831x */ |
182 | |||
183 | #ifdef CONFIG_PPC_MPC837x | ||
184 | int mpc837x_usb_cfg(void) | ||
185 | { | ||
186 | void __iomem *immap; | ||
187 | struct device_node *np = NULL; | ||
188 | const void *prop; | ||
189 | int ret = 0; | ||
190 | |||
191 | np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr"); | ||
192 | if (!np) | ||
193 | return -ENODEV; | ||
194 | prop = of_get_property(np, "phy_type", NULL); | ||
195 | |||
196 | if (!prop || (strcmp(prop, "ulpi") && strcmp(prop, "serial"))) { | ||
197 | printk(KERN_WARNING "837x USB PHY type not supported\n"); | ||
198 | of_node_put(np); | ||
199 | return -EINVAL; | ||
200 | } | ||
201 | |||
202 | /* Map IMMR space for pin and clock settings */ | ||
203 | immap = ioremap(get_immrbase(), 0x1000); | ||
204 | if (!immap) { | ||
205 | of_node_put(np); | ||
206 | return -ENOMEM; | ||
207 | } | ||
208 | |||
209 | /* Configure clock */ | ||
210 | clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, MPC837X_SCCR_USB_DRCM_11, | ||
211 | MPC837X_SCCR_USB_DRCM_11); | ||
212 | |||
213 | /* Configure pin mux for ULPI/serial */ | ||
214 | clrsetbits_be32(immap + MPC83XX_SICRL_OFFS, MPC837X_SICRL_USB_MASK, | ||
215 | MPC837X_SICRL_USB_ULPI); | ||
216 | |||
217 | iounmap(immap); | ||
218 | of_node_put(np); | ||
219 | return ret; | ||
220 | } | ||
221 | #endif /* CONFIG_PPC_MPC837x */ | ||
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c index bccdc25f83a2..4e0305096114 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c | |||
@@ -52,9 +52,9 @@ static void cpm2_cascade(unsigned int irq, struct irq_desc *desc) | |||
52 | { | 52 | { |
53 | int cascade_irq; | 53 | int cascade_irq; |
54 | 54 | ||
55 | while ((cascade_irq = cpm2_get_irq()) >= 0) { | 55 | while ((cascade_irq = cpm2_get_irq()) >= 0) |
56 | generic_handle_irq(cascade_irq); | 56 | generic_handle_irq(cascade_irq); |
57 | } | 57 | |
58 | desc->chip->eoi(irq); | 58 | desc->chip->eoi(irq); |
59 | } | 59 | } |
60 | 60 | ||
@@ -70,13 +70,12 @@ static void __init mpc85xx_ads_pic_init(void) | |||
70 | #endif | 70 | #endif |
71 | 71 | ||
72 | np = of_find_node_by_type(np, "open-pic"); | 72 | np = of_find_node_by_type(np, "open-pic"); |
73 | 73 | if (!np) { | |
74 | if (np == NULL) { | ||
75 | printk(KERN_ERR "Could not find open-pic node\n"); | 74 | printk(KERN_ERR "Could not find open-pic node\n"); |
76 | return; | 75 | return; |
77 | } | 76 | } |
78 | 77 | ||
79 | if(of_address_to_resource(np, 0, &r)) { | 78 | if (of_address_to_resource(np, 0, &r)) { |
80 | printk(KERN_ERR "Could not map mpic register space\n"); | 79 | printk(KERN_ERR "Could not map mpic register space\n"); |
81 | of_node_put(np); | 80 | of_node_put(np); |
82 | return; | 81 | return; |
@@ -100,6 +99,7 @@ static void __init mpc85xx_ads_pic_init(void) | |||
100 | irq = irq_of_parse_and_map(np, 0); | 99 | irq = irq_of_parse_and_map(np, 0); |
101 | 100 | ||
102 | cpm2_pic_init(np); | 101 | cpm2_pic_init(np); |
102 | of_node_put(np); | ||
103 | set_irq_chained_handler(irq, cpm2_cascade); | 103 | set_irq_chained_handler(irq, cpm2_cascade); |
104 | #endif | 104 | #endif |
105 | } | 105 | } |
@@ -112,7 +112,7 @@ struct cpm_pin { | |||
112 | int port, pin, flags; | 112 | int port, pin, flags; |
113 | }; | 113 | }; |
114 | 114 | ||
115 | static struct cpm_pin mpc8560_ads_pins[] = { | 115 | static const struct cpm_pin mpc8560_ads_pins[] = { |
116 | /* SCC1 */ | 116 | /* SCC1 */ |
117 | {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, | 117 | {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, |
118 | {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | 118 | {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, |
@@ -233,13 +233,11 @@ static struct of_device_id __initdata of_bus_ids[] = { | |||
233 | 233 | ||
234 | static int __init declare_of_platform_devices(void) | 234 | static int __init declare_of_platform_devices(void) |
235 | { | 235 | { |
236 | if (!machine_is(mpc85xx_ads)) | ||
237 | return 0; | ||
238 | |||
239 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | 236 | of_platform_bus_probe(NULL, of_bus_ids, NULL); |
237 | |||
240 | return 0; | 238 | return 0; |
241 | } | 239 | } |
242 | device_initcall(declare_of_platform_devices); | 240 | machine_device_initcall(mpc85xx_ads, declare_of_platform_devices); |
243 | 241 | ||
244 | /* | 242 | /* |
245 | * Called very early, device-tree isn't unflattened | 243 | * Called very early, device-tree isn't unflattened |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c index 4d063eec6210..8b1de7884be6 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c | |||
@@ -222,9 +222,6 @@ static int mpc85xx_cds_8259_attach(void) | |||
222 | struct device_node *cascade_node = NULL; | 222 | struct device_node *cascade_node = NULL; |
223 | int cascade_irq; | 223 | int cascade_irq; |
224 | 224 | ||
225 | if (!machine_is(mpc85xx_cds)) | ||
226 | return 0; | ||
227 | |||
228 | /* Initialize the i8259 controller */ | 225 | /* Initialize the i8259 controller */ |
229 | for_each_node_by_type(np, "interrupt-controller") | 226 | for_each_node_by_type(np, "interrupt-controller") |
230 | if (of_device_is_compatible(np, "chrp,iic")) { | 227 | if (of_device_is_compatible(np, "chrp,iic")) { |
@@ -262,8 +259,7 @@ static int mpc85xx_cds_8259_attach(void) | |||
262 | 259 | ||
263 | return 0; | 260 | return 0; |
264 | } | 261 | } |
265 | 262 | machine_device_initcall(mpc85xx_cds, mpc85xx_cds_8259_attach); | |
266 | device_initcall(mpc85xx_cds_8259_attach); | ||
267 | 263 | ||
268 | #endif /* CONFIG_PPC_I8259 */ | 264 | #endif /* CONFIG_PPC_I8259 */ |
269 | 265 | ||
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c index e6c63a5b1efb..4fdf5abefffd 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c | |||
@@ -144,15 +144,12 @@ static struct of_device_id mpc85xx_ids[] = { | |||
144 | 144 | ||
145 | static int __init mpc85xx_publish_devices(void) | 145 | static int __init mpc85xx_publish_devices(void) |
146 | { | 146 | { |
147 | if (!machine_is(mpc85xx_mds)) | ||
148 | return 0; | ||
149 | |||
150 | /* Publish the QE devices */ | 147 | /* Publish the QE devices */ |
151 | of_platform_bus_probe(NULL,mpc85xx_ids,NULL); | 148 | of_platform_bus_probe(NULL, mpc85xx_ids, NULL); |
152 | 149 | ||
153 | return 0; | 150 | return 0; |
154 | } | 151 | } |
155 | device_initcall(mpc85xx_publish_devices); | 152 | machine_device_initcall(mpc85xx_mds, mpc85xx_publish_devices); |
156 | 153 | ||
157 | static void __init mpc85xx_mds_pic_init(void) | 154 | static void __init mpc85xx_mds_pic_init(void) |
158 | { | 155 | { |
diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c index c6d2f48f8f3d..0b07485641fe 100644 --- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c +++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c | |||
@@ -34,9 +34,24 @@ | |||
34 | 34 | ||
35 | #include <asm/mpic.h> | 35 | #include <asm/mpic.h> |
36 | 36 | ||
37 | #include <linux/of_platform.h> | ||
37 | #include <sysdev/fsl_pci.h> | 38 | #include <sysdev/fsl_pci.h> |
38 | #include <sysdev/fsl_soc.h> | 39 | #include <sysdev/fsl_soc.h> |
39 | 40 | ||
41 | static struct of_device_id __initdata mpc8610_ids[] = { | ||
42 | { .compatible = "fsl,mpc8610-immr", }, | ||
43 | {} | ||
44 | }; | ||
45 | |||
46 | static int __init mpc8610_declare_of_platform_devices(void) | ||
47 | { | ||
48 | /* Without this call, the SSI device driver won't get probed. */ | ||
49 | of_platform_bus_probe(NULL, mpc8610_ids, NULL); | ||
50 | |||
51 | return 0; | ||
52 | } | ||
53 | machine_device_initcall(mpc86xx_hpcd, mpc8610_declare_of_platform_devices); | ||
54 | |||
40 | void __init | 55 | void __init |
41 | mpc86xx_hpcd_init_irq(void) | 56 | mpc86xx_hpcd_init_irq(void) |
42 | { | 57 | { |
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c index 14f4e527e7ac..cfbe8c52e263 100644 --- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c +++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/kdev_t.h> | 18 | #include <linux/kdev_t.h> |
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/of_platform.h> | ||
21 | 22 | ||
22 | #include <asm/system.h> | 23 | #include <asm/system.h> |
23 | #include <asm/time.h> | 24 | #include <asm/time.h> |
@@ -212,6 +213,19 @@ mpc86xx_time_init(void) | |||
212 | return 0; | 213 | return 0; |
213 | } | 214 | } |
214 | 215 | ||
216 | static __initdata struct of_device_id of_bus_ids[] = { | ||
217 | { .compatible = "simple-bus", }, | ||
218 | {}, | ||
219 | }; | ||
220 | |||
221 | static int __init declare_of_platform_devices(void) | ||
222 | { | ||
223 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
224 | |||
225 | return 0; | ||
226 | } | ||
227 | machine_device_initcall(mpc86xx_hpcn, declare_of_platform_devices); | ||
228 | |||
215 | define_machine(mpc86xx_hpcn) { | 229 | define_machine(mpc86xx_hpcn) { |
216 | .name = "MPC86xx HPCN", | 230 | .name = "MPC86xx HPCN", |
217 | .probe = mpc86xx_hpcn_probe, | 231 | .probe = mpc86xx_hpcn_probe, |
diff --git a/arch/powerpc/platforms/8xx/Kconfig b/arch/powerpc/platforms/8xx/Kconfig index 91fbe4241918..7fd224ca233d 100644 --- a/arch/powerpc/platforms/8xx/Kconfig +++ b/arch/powerpc/platforms/8xx/Kconfig | |||
@@ -44,6 +44,15 @@ config PPC_EP88XC | |||
44 | This board is also resold by Freescale as the QUICCStart | 44 | This board is also resold by Freescale as the QUICCStart |
45 | MPC885 Evaluation System and/or the CWH-PPC-885XN-VE. | 45 | MPC885 Evaluation System and/or the CWH-PPC-885XN-VE. |
46 | 46 | ||
47 | config PPC_ADDER875 | ||
48 | bool "Analogue & Micro Adder 875" | ||
49 | select CPM1 | ||
50 | select PPC_CPM_NEW_BINDING | ||
51 | select REDBOOT | ||
52 | help | ||
53 | This enables support for the Analogue & Micro Adder 875 | ||
54 | board. | ||
55 | |||
47 | endchoice | 56 | endchoice |
48 | 57 | ||
49 | menu "Freescale Ethernet driver platform-specific options" | 58 | menu "Freescale Ethernet driver platform-specific options" |
diff --git a/arch/powerpc/platforms/8xx/Makefile b/arch/powerpc/platforms/8xx/Makefile index 8b7098018b59..7b71d9c8fb45 100644 --- a/arch/powerpc/platforms/8xx/Makefile +++ b/arch/powerpc/platforms/8xx/Makefile | |||
@@ -5,3 +5,4 @@ obj-$(CONFIG_PPC_8xx) += m8xx_setup.o | |||
5 | obj-$(CONFIG_MPC885ADS) += mpc885ads_setup.o | 5 | obj-$(CONFIG_MPC885ADS) += mpc885ads_setup.o |
6 | obj-$(CONFIG_MPC86XADS) += mpc86xads_setup.o | 6 | obj-$(CONFIG_MPC86XADS) += mpc86xads_setup.o |
7 | obj-$(CONFIG_PPC_EP88XC) += ep88xc.o | 7 | obj-$(CONFIG_PPC_EP88XC) += ep88xc.o |
8 | obj-$(CONFIG_PPC_ADDER875) += adder875.o | ||
diff --git a/arch/powerpc/platforms/8xx/adder875.c b/arch/powerpc/platforms/8xx/adder875.c new file mode 100644 index 000000000000..c6bc0783c3b0 --- /dev/null +++ b/arch/powerpc/platforms/8xx/adder875.c | |||
@@ -0,0 +1,118 @@ | |||
1 | /* Analogue & Micro Adder MPC875 board support | ||
2 | * | ||
3 | * Author: Scott Wood <scottwood@freescale.com> | ||
4 | * | ||
5 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License, version 2, as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #include <linux/init.h> | ||
13 | #include <linux/fs_enet_pd.h> | ||
14 | #include <linux/of_platform.h> | ||
15 | |||
16 | #include <asm/time.h> | ||
17 | #include <asm/machdep.h> | ||
18 | #include <asm/commproc.h> | ||
19 | #include <asm/fs_pd.h> | ||
20 | #include <asm/udbg.h> | ||
21 | #include <asm/prom.h> | ||
22 | |||
23 | #include <sysdev/commproc.h> | ||
24 | |||
25 | struct cpm_pin { | ||
26 | int port, pin, flags; | ||
27 | }; | ||
28 | |||
29 | static __initdata struct cpm_pin adder875_pins[] = { | ||
30 | /* SMC1 */ | ||
31 | {CPM_PORTB, 24, CPM_PIN_INPUT}, /* RX */ | ||
32 | {CPM_PORTB, 25, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, /* TX */ | ||
33 | |||
34 | /* MII1 */ | ||
35 | {CPM_PORTA, 0, CPM_PIN_INPUT}, | ||
36 | {CPM_PORTA, 1, CPM_PIN_INPUT}, | ||
37 | {CPM_PORTA, 2, CPM_PIN_INPUT}, | ||
38 | {CPM_PORTA, 3, CPM_PIN_INPUT}, | ||
39 | {CPM_PORTA, 4, CPM_PIN_OUTPUT}, | ||
40 | {CPM_PORTA, 10, CPM_PIN_OUTPUT}, | ||
41 | {CPM_PORTA, 11, CPM_PIN_OUTPUT}, | ||
42 | {CPM_PORTB, 19, CPM_PIN_INPUT}, | ||
43 | {CPM_PORTB, 31, CPM_PIN_INPUT}, | ||
44 | {CPM_PORTC, 12, CPM_PIN_INPUT}, | ||
45 | {CPM_PORTC, 13, CPM_PIN_INPUT}, | ||
46 | {CPM_PORTE, 30, CPM_PIN_OUTPUT}, | ||
47 | {CPM_PORTE, 31, CPM_PIN_OUTPUT}, | ||
48 | |||
49 | /* MII2 */ | ||
50 | {CPM_PORTE, 14, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
51 | {CPM_PORTE, 15, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
52 | {CPM_PORTE, 16, CPM_PIN_OUTPUT}, | ||
53 | {CPM_PORTE, 17, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
54 | {CPM_PORTE, 18, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
55 | {CPM_PORTE, 19, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
56 | {CPM_PORTE, 20, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, | ||
57 | {CPM_PORTE, 21, CPM_PIN_OUTPUT}, | ||
58 | {CPM_PORTE, 22, CPM_PIN_OUTPUT}, | ||
59 | {CPM_PORTE, 23, CPM_PIN_OUTPUT}, | ||
60 | {CPM_PORTE, 24, CPM_PIN_OUTPUT}, | ||
61 | {CPM_PORTE, 25, CPM_PIN_OUTPUT}, | ||
62 | {CPM_PORTE, 26, CPM_PIN_OUTPUT}, | ||
63 | {CPM_PORTE, 27, CPM_PIN_OUTPUT}, | ||
64 | {CPM_PORTE, 28, CPM_PIN_OUTPUT}, | ||
65 | {CPM_PORTE, 29, CPM_PIN_OUTPUT}, | ||
66 | }; | ||
67 | |||
68 | static void __init init_ioports(void) | ||
69 | { | ||
70 | int i; | ||
71 | |||
72 | for (i = 0; i < ARRAY_SIZE(adder875_pins); i++) { | ||
73 | const struct cpm_pin *pin = &adder875_pins[i]; | ||
74 | cpm1_set_pin(pin->port, pin->pin, pin->flags); | ||
75 | } | ||
76 | |||
77 | cpm1_clk_setup(CPM_CLK_SMC1, CPM_BRG1, CPM_CLK_RTX); | ||
78 | |||
79 | /* Set FEC1 and FEC2 to MII mode */ | ||
80 | clrbits32(&mpc8xx_immr->im_cpm.cp_cptr, 0x00000180); | ||
81 | } | ||
82 | |||
83 | static void __init adder875_setup(void) | ||
84 | { | ||
85 | cpm_reset(); | ||
86 | init_ioports(); | ||
87 | } | ||
88 | |||
89 | static int __init adder875_probe(void) | ||
90 | { | ||
91 | unsigned long root = of_get_flat_dt_root(); | ||
92 | return of_flat_dt_is_compatible(root, "analogue-and-micro,adder875"); | ||
93 | } | ||
94 | |||
95 | static __initdata struct of_device_id of_bus_ids[] = { | ||
96 | { .compatible = "simple-bus", }, | ||
97 | {}, | ||
98 | }; | ||
99 | |||
100 | static int __init declare_of_platform_devices(void) | ||
101 | { | ||
102 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
103 | return 0; | ||
104 | } | ||
105 | machine_device_initcall(adder875, declare_of_platform_devices); | ||
106 | |||
107 | define_machine(adder875) { | ||
108 | .name = "Adder MPC875", | ||
109 | .probe = adder875_probe, | ||
110 | .setup_arch = adder875_setup, | ||
111 | .init_IRQ = m8xx_pic_init, | ||
112 | .get_irq = mpc8xx_get_irq, | ||
113 | .restart = mpc8xx_restart, | ||
114 | .calibrate_decr = generic_calibrate_decr, | ||
115 | .set_rtc_time = mpc8xx_set_rtc_time, | ||
116 | .get_rtc_time = mpc8xx_get_rtc_time, | ||
117 | .progress = udbg_progress, | ||
118 | }; | ||
diff --git a/arch/powerpc/platforms/8xx/ep88xc.c b/arch/powerpc/platforms/8xx/ep88xc.c index c518b6cc5fab..88afa353f1d2 100644 --- a/arch/powerpc/platforms/8xx/ep88xc.c +++ b/arch/powerpc/platforms/8xx/ep88xc.c | |||
@@ -155,12 +155,11 @@ static struct of_device_id __initdata of_bus_ids[] = { | |||
155 | static int __init declare_of_platform_devices(void) | 155 | static int __init declare_of_platform_devices(void) |
156 | { | 156 | { |
157 | /* Publish the QE devices */ | 157 | /* Publish the QE devices */ |
158 | if (machine_is(ep88xc)) | 158 | of_platform_bus_probe(NULL, of_bus_ids, NULL); |
159 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
160 | 159 | ||
161 | return 0; | 160 | return 0; |
162 | } | 161 | } |
163 | device_initcall(declare_of_platform_devices); | 162 | machine_device_initcall(ep88xc, declare_of_platform_devices); |
164 | 163 | ||
165 | define_machine(ep88xc) { | 164 | define_machine(ep88xc) { |
166 | .name = "Embedded Planet EP88xC", | 165 | .name = "Embedded Planet EP88xC", |
diff --git a/arch/powerpc/platforms/8xx/mpc86xads_setup.c b/arch/powerpc/platforms/8xx/mpc86xads_setup.c index d2927a434aef..d7965f885209 100644 --- a/arch/powerpc/platforms/8xx/mpc86xads_setup.c +++ b/arch/powerpc/platforms/8xx/mpc86xads_setup.c | |||
@@ -128,12 +128,11 @@ static struct of_device_id __initdata of_bus_ids[] = { | |||
128 | 128 | ||
129 | static int __init declare_of_platform_devices(void) | 129 | static int __init declare_of_platform_devices(void) |
130 | { | 130 | { |
131 | if (machine_is(mpc86x_ads)) | 131 | of_platform_bus_probe(NULL, of_bus_ids, NULL); |
132 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
133 | 132 | ||
134 | return 0; | 133 | return 0; |
135 | } | 134 | } |
136 | device_initcall(declare_of_platform_devices); | 135 | machine_device_initcall(mpc86x_ads, declare_of_platform_devices); |
137 | 136 | ||
138 | define_machine(mpc86x_ads) { | 137 | define_machine(mpc86x_ads) { |
139 | .name = "MPC86x ADS", | 138 | .name = "MPC86x ADS", |
diff --git a/arch/powerpc/platforms/8xx/mpc885ads_setup.c b/arch/powerpc/platforms/8xx/mpc885ads_setup.c index 2cf1b6a75173..6ef8e9e6b8c3 100644 --- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c +++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c | |||
@@ -264,12 +264,11 @@ static struct of_device_id __initdata of_bus_ids[] = { | |||
264 | static int __init declare_of_platform_devices(void) | 264 | static int __init declare_of_platform_devices(void) |
265 | { | 265 | { |
266 | /* Publish the QE devices */ | 266 | /* Publish the QE devices */ |
267 | if (machine_is(mpc885_ads)) | 267 | of_platform_bus_probe(NULL, of_bus_ids, NULL); |
268 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
269 | 268 | ||
270 | return 0; | 269 | return 0; |
271 | } | 270 | } |
272 | device_initcall(declare_of_platform_devices); | 271 | machine_device_initcall(mpc885_ads, declare_of_platform_devices); |
273 | 272 | ||
274 | define_machine(mpc885_ads) { | 273 | define_machine(mpc885_ads) { |
275 | .name = "Freescale MPC885 ADS", | 274 | .name = "Freescale MPC885 ADS", |
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig index ea22cad2cd0a..2cec34314d2e 100644 --- a/arch/powerpc/platforms/Kconfig +++ b/arch/powerpc/platforms/Kconfig | |||
@@ -22,6 +22,7 @@ config PPC_83xx | |||
22 | depends on 6xx | 22 | depends on 6xx |
23 | select FSL_SOC | 23 | select FSL_SOC |
24 | select 83xx | 24 | select 83xx |
25 | select IPIC | ||
25 | select WANT_DEVICE_TREE | 26 | select WANT_DEVICE_TREE |
26 | 27 | ||
27 | config PPC_86xx | 28 | config PPC_86xx |
@@ -80,6 +81,10 @@ config XICS | |||
80 | bool | 81 | bool |
81 | default y | 82 | default y |
82 | 83 | ||
84 | config IPIC | ||
85 | bool | ||
86 | default n | ||
87 | |||
83 | config MPIC | 88 | config MPIC |
84 | bool | 89 | bool |
85 | default n | 90 | default n |
@@ -265,6 +270,7 @@ config TAU_AVERAGE | |||
265 | config QUICC_ENGINE | 270 | config QUICC_ENGINE |
266 | bool | 271 | bool |
267 | select PPC_LIB_RHEAP | 272 | select PPC_LIB_RHEAP |
273 | select CRC32 | ||
268 | help | 274 | help |
269 | The QUICC Engine (QE) is a new generation of communications | 275 | The QUICC Engine (QE) is a new generation of communications |
270 | coprocessors on Freescale embedded CPUs (akin to CPM in older chips). | 276 | coprocessors on Freescale embedded CPUs (akin to CPM in older chips). |
diff --git a/arch/powerpc/platforms/embedded6xx/Kconfig b/arch/powerpc/platforms/embedded6xx/Kconfig index 8924095a7928..6c8083757938 100644 --- a/arch/powerpc/platforms/embedded6xx/Kconfig +++ b/arch/powerpc/platforms/embedded6xx/Kconfig | |||
@@ -9,6 +9,8 @@ config LINKSTATION | |||
9 | select FSL_SOC | 9 | select FSL_SOC |
10 | select PPC_UDBG_16550 if SERIAL_8250 | 10 | select PPC_UDBG_16550 if SERIAL_8250 |
11 | select DEFAULT_UIMAGE | 11 | select DEFAULT_UIMAGE |
12 | select MPC10X_OPENPIC | ||
13 | select MPC10X_BRIDGE | ||
12 | help | 14 | help |
13 | Select LINKSTATION if configuring for one of PPC- (MPC8241) | 15 | Select LINKSTATION if configuring for one of PPC- (MPC8241) |
14 | based NAS systems from Buffalo Technology. So far only | 16 | based NAS systems from Buffalo Technology. So far only |
@@ -16,6 +18,19 @@ config LINKSTATION | |||
16 | Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based | 18 | Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based |
17 | Terastation systems should be supported too. | 19 | Terastation systems should be supported too. |
18 | 20 | ||
21 | config STORCENTER | ||
22 | bool "IOMEGA StorCenter" | ||
23 | depends on EMBEDDED6xx | ||
24 | select MPIC | ||
25 | select FSL_SOC | ||
26 | select PPC_UDBG_16550 if SERIAL_8250 | ||
27 | select WANT_DEVICE_TREE | ||
28 | select MPC10X_OPENPIC | ||
29 | select MPC10X_BRIDGE | ||
30 | help | ||
31 | Select STORCENTER if configuring for the iomega StorCenter | ||
32 | with an 8241 CPU in it. | ||
33 | |||
19 | config MPC7448HPC2 | 34 | config MPC7448HPC2 |
20 | bool "Freescale MPC7448HPC2(Taiga)" | 35 | bool "Freescale MPC7448HPC2(Taiga)" |
21 | depends on EMBEDDED6xx | 36 | depends on EMBEDDED6xx |
@@ -23,6 +38,7 @@ config MPC7448HPC2 | |||
23 | select DEFAULT_UIMAGE | 38 | select DEFAULT_UIMAGE |
24 | select PPC_UDBG_16550 | 39 | select PPC_UDBG_16550 |
25 | select WANT_DEVICE_TREE | 40 | select WANT_DEVICE_TREE |
41 | select TSI108_BRIDGE | ||
26 | help | 42 | help |
27 | Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga) | 43 | Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga) |
28 | platform | 44 | platform |
@@ -33,6 +49,7 @@ config PPC_HOLLY | |||
33 | select TSI108_BRIDGE | 49 | select TSI108_BRIDGE |
34 | select PPC_UDBG_16550 | 50 | select PPC_UDBG_16550 |
35 | select WANT_DEVICE_TREE | 51 | select WANT_DEVICE_TREE |
52 | select TSI108_BRIDGE | ||
36 | help | 53 | help |
37 | Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval | 54 | Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval |
38 | Board with TSI108/9 bridge (Hickory/Holly) | 55 | Board with TSI108/9 bridge (Hickory/Holly) |
@@ -48,17 +65,13 @@ config PPC_PRPMC2800 | |||
48 | 65 | ||
49 | config TSI108_BRIDGE | 66 | config TSI108_BRIDGE |
50 | bool | 67 | bool |
51 | depends on MPC7448HPC2 || PPC_HOLLY | ||
52 | select PCI | 68 | select PCI |
53 | select MPIC | 69 | select MPIC |
54 | select MPIC_WEIRD | 70 | select MPIC_WEIRD |
55 | default y | ||
56 | 71 | ||
57 | config MPC10X_BRIDGE | 72 | config MPC10X_BRIDGE |
58 | bool | 73 | bool |
59 | depends on LINKSTATION | ||
60 | select PPC_INDIRECT_PCI | 74 | select PPC_INDIRECT_PCI |
61 | default y | ||
62 | 75 | ||
63 | config MV64X60 | 76 | config MV64X60 |
64 | bool | 77 | bool |
@@ -67,8 +80,6 @@ config MV64X60 | |||
67 | 80 | ||
68 | config MPC10X_OPENPIC | 81 | config MPC10X_OPENPIC |
69 | bool | 82 | bool |
70 | depends on LINKSTATION | ||
71 | default y | ||
72 | 83 | ||
73 | config MPC10X_STORE_GATHERING | 84 | config MPC10X_STORE_GATHERING |
74 | bool "Enable MPC10x store gathering" | 85 | bool "Enable MPC10x store gathering" |
diff --git a/arch/powerpc/platforms/embedded6xx/Makefile b/arch/powerpc/platforms/embedded6xx/Makefile index 844947cfc5db..06524d3ffd2e 100644 --- a/arch/powerpc/platforms/embedded6xx/Makefile +++ b/arch/powerpc/platforms/embedded6xx/Makefile | |||
@@ -3,5 +3,6 @@ | |||
3 | # | 3 | # |
4 | obj-$(CONFIG_MPC7448HPC2) += mpc7448_hpc2.o | 4 | obj-$(CONFIG_MPC7448HPC2) += mpc7448_hpc2.o |
5 | obj-$(CONFIG_LINKSTATION) += linkstation.o ls_uart.o | 5 | obj-$(CONFIG_LINKSTATION) += linkstation.o ls_uart.o |
6 | obj-$(CONFIG_STORCENTER) += storcenter.o | ||
6 | obj-$(CONFIG_PPC_HOLLY) += holly.o | 7 | obj-$(CONFIG_PPC_HOLLY) += holly.o |
7 | obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o | 8 | obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o |
diff --git a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c index a2c04b9d42b1..d4f8bf581e3a 100644 --- a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c +++ b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c | |||
@@ -53,8 +53,6 @@ | |||
53 | 53 | ||
54 | #define MPC7448HPC2_PCI_CFG_PHYS 0xfb000000 | 54 | #define MPC7448HPC2_PCI_CFG_PHYS 0xfb000000 |
55 | 55 | ||
56 | extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); | ||
57 | |||
58 | int mpc7448_hpc2_exclude_device(struct pci_controller *hose, | 56 | int mpc7448_hpc2_exclude_device(struct pci_controller *hose, |
59 | u_char bus, u_char devfn) | 57 | u_char bus, u_char devfn) |
60 | { | 58 | { |
diff --git a/arch/powerpc/platforms/embedded6xx/storcenter.c b/arch/powerpc/platforms/embedded6xx/storcenter.c new file mode 100644 index 000000000000..e12e9d298716 --- /dev/null +++ b/arch/powerpc/platforms/embedded6xx/storcenter.c | |||
@@ -0,0 +1,192 @@ | |||
1 | /* | ||
2 | * Board setup routines for the storcenter | ||
3 | * | ||
4 | * Copyright 2007 (C) Oyvind Repvik (nail@nslu2-linux.org) | ||
5 | * Copyright 2007 Andy Wilcox, Jon Loeliger | ||
6 | * | ||
7 | * Based on linkstation.c by G. Liakhovetski | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public License | ||
10 | * version 2. This program is licensed "as is" without any warranty of | ||
11 | * any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/pci.h> | ||
16 | #include <linux/initrd.h> | ||
17 | #include <linux/mtd/physmap.h> | ||
18 | #include <linux/of_platform.h> | ||
19 | |||
20 | #include <asm/system.h> | ||
21 | #include <asm/time.h> | ||
22 | #include <asm/prom.h> | ||
23 | #include <asm/mpic.h> | ||
24 | #include <asm/pci-bridge.h> | ||
25 | |||
26 | #include "mpc10x.h" | ||
27 | |||
28 | |||
29 | #ifdef CONFIG_MTD_PHYSMAP | ||
30 | static struct mtd_partition storcenter_physmap_partitions[] = { | ||
31 | { | ||
32 | .name = "kernel", | ||
33 | .offset = 0x000000, | ||
34 | .size = 0x170000, | ||
35 | }, | ||
36 | { | ||
37 | .name = "rootfs", | ||
38 | .offset = 0x170000, | ||
39 | .size = 0x590000, | ||
40 | }, | ||
41 | { | ||
42 | .name = "uboot", | ||
43 | .offset = 0x700000, | ||
44 | .size = 0x040000, | ||
45 | }, | ||
46 | { | ||
47 | .name = "config", | ||
48 | .offset = 0x740000, | ||
49 | .size = 0x0c0000, | ||
50 | }, | ||
51 | }; | ||
52 | #endif | ||
53 | |||
54 | |||
55 | static __initdata struct of_device_id storcenter_of_bus[] = { | ||
56 | { .name = "soc", }, | ||
57 | {}, | ||
58 | }; | ||
59 | |||
60 | static int __init storcenter_device_probe(void) | ||
61 | { | ||
62 | of_platform_bus_probe(NULL, storcenter_of_bus, NULL); | ||
63 | return 0; | ||
64 | } | ||
65 | machine_device_initcall(storcenter, storcenter_device_probe); | ||
66 | |||
67 | |||
68 | static int __init storcenter_add_bridge(struct device_node *dev) | ||
69 | { | ||
70 | #ifdef CONFIG_PCI | ||
71 | int len; | ||
72 | struct pci_controller *hose; | ||
73 | const int *bus_range; | ||
74 | |||
75 | printk("Adding PCI host bridge %s\n", dev->full_name); | ||
76 | |||
77 | hose = pcibios_alloc_controller(dev); | ||
78 | if (hose == NULL) | ||
79 | return -ENOMEM; | ||
80 | |||
81 | bus_range = of_get_property(dev, "bus-range", &len); | ||
82 | hose->first_busno = bus_range ? bus_range[0] : 0; | ||
83 | hose->last_busno = bus_range ? bus_range[1] : 0xff; | ||
84 | |||
85 | setup_indirect_pci(hose, MPC10X_MAPB_CNFG_ADDR, MPC10X_MAPB_CNFG_DATA, 0); | ||
86 | |||
87 | /* Interpret the "ranges" property */ | ||
88 | /* This also maps the I/O region and sets isa_io/mem_base */ | ||
89 | pci_process_bridge_OF_ranges(hose, dev, 1); | ||
90 | #endif | ||
91 | |||
92 | return 0; | ||
93 | } | ||
94 | |||
95 | static void __init storcenter_setup_arch(void) | ||
96 | { | ||
97 | struct device_node *np; | ||
98 | |||
99 | #ifdef CONFIG_MTD_PHYSMAP | ||
100 | physmap_set_partitions(storcenter_physmap_partitions, | ||
101 | ARRAY_SIZE(storcenter_physmap_partitions)); | ||
102 | #endif | ||
103 | |||
104 | /* Lookup PCI host bridges */ | ||
105 | for_each_compatible_node(np, "pci", "mpc10x-pci") | ||
106 | storcenter_add_bridge(np); | ||
107 | |||
108 | printk(KERN_INFO "IOMEGA StorCenter\n"); | ||
109 | } | ||
110 | |||
111 | /* | ||
112 | * Interrupt setup and service. Interrrupts on the turbostation come | ||
113 | * from the four PCI slots plus onboard 8241 devices: I2C, DUART. | ||
114 | */ | ||
115 | static void __init storcenter_init_IRQ(void) | ||
116 | { | ||
117 | struct mpic *mpic; | ||
118 | struct device_node *dnp; | ||
119 | const void *prop; | ||
120 | int size; | ||
121 | phys_addr_t paddr; | ||
122 | |||
123 | dnp = of_find_node_by_type(NULL, "open-pic"); | ||
124 | if (dnp == NULL) | ||
125 | return; | ||
126 | |||
127 | prop = of_get_property(dnp, "reg", &size); | ||
128 | if (prop == NULL) { | ||
129 | of_node_put(dnp); | ||
130 | return; | ||
131 | } | ||
132 | |||
133 | paddr = (phys_addr_t)of_translate_address(dnp, prop); | ||
134 | mpic = mpic_alloc(dnp, paddr, MPIC_PRIMARY | MPIC_WANTS_RESET, | ||
135 | 4, 32, " EPIC "); | ||
136 | |||
137 | of_node_put(dnp); | ||
138 | |||
139 | BUG_ON(mpic == NULL); | ||
140 | |||
141 | /* PCI IRQs */ | ||
142 | /* | ||
143 | * 2.6.12 patch: | ||
144 | * openpic_set_sources(0, 5, OpenPIC_Addr + 0x10200); | ||
145 | * openpic_set_sources(5, 2, OpenPIC_Addr + 0x11120); | ||
146 | * first_irq, num_irqs, __iomem first_ISR | ||
147 | * o_ss: i, src: 0, fdf50200 | ||
148 | * o_ss: i, src: 1, fdf50220 | ||
149 | * o_ss: i, src: 2, fdf50240 | ||
150 | * o_ss: i, src: 3, fdf50260 | ||
151 | * o_ss: i, src: 4, fdf50280 | ||
152 | * o_ss: i, src: 5, fdf51120 | ||
153 | * o_ss: i, src: 6, fdf51140 | ||
154 | */ | ||
155 | mpic_assign_isu(mpic, 0, paddr + 0x10200); | ||
156 | mpic_assign_isu(mpic, 1, paddr + 0x10220); | ||
157 | mpic_assign_isu(mpic, 2, paddr + 0x10240); | ||
158 | mpic_assign_isu(mpic, 3, paddr + 0x10260); | ||
159 | mpic_assign_isu(mpic, 4, paddr + 0x10280); | ||
160 | mpic_assign_isu(mpic, 5, paddr + 0x11120); | ||
161 | mpic_assign_isu(mpic, 6, paddr + 0x11140); | ||
162 | |||
163 | mpic_init(mpic); | ||
164 | } | ||
165 | |||
166 | static void storcenter_restart(char *cmd) | ||
167 | { | ||
168 | local_irq_disable(); | ||
169 | |||
170 | /* Set exception prefix high - to the firmware */ | ||
171 | _nmask_and_or_msr(0, MSR_IP); | ||
172 | |||
173 | /* Wait for reset to happen */ | ||
174 | for (;;) ; | ||
175 | } | ||
176 | |||
177 | static int __init storcenter_probe(void) | ||
178 | { | ||
179 | unsigned long root = of_get_flat_dt_root(); | ||
180 | |||
181 | return of_flat_dt_is_compatible(root, "storcenter"); | ||
182 | } | ||
183 | |||
184 | define_machine(storcenter){ | ||
185 | .name = "IOMEGA StorCenter", | ||
186 | .probe = storcenter_probe, | ||
187 | .setup_arch = storcenter_setup_arch, | ||
188 | .init_IRQ = storcenter_init_IRQ, | ||
189 | .get_irq = mpic_get_irq, | ||
190 | .restart = storcenter_restart, | ||
191 | .calibrate_decr = generic_calibrate_decr, | ||
192 | }; | ||
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile index 9a20ef4f0ea4..f17e7b885f60 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_RAPIDIO) += fsl_rio.o | ||
15 | obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o | 16 | obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o |
16 | obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ | 17 | obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ |
17 | obj-$(CONFIG_PPC_BESTCOMM) += bestcomm/ | 18 | obj-$(CONFIG_PPC_BESTCOMM) += bestcomm/ |
@@ -24,7 +25,7 @@ obj-$(CONFIG_AXON_RAM) += axonram.o | |||
24 | ifeq ($(CONFIG_PPC_MERGE),y) | 25 | ifeq ($(CONFIG_PPC_MERGE),y) |
25 | obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o | 26 | obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o |
26 | obj-$(CONFIG_PPC_I8259) += i8259.o | 27 | obj-$(CONFIG_PPC_I8259) += i8259.o |
27 | obj-$(CONFIG_PPC_83xx) += ipic.o | 28 | obj-$(CONFIG_IPIC) += ipic.o |
28 | obj-$(CONFIG_4xx) += uic.o | 29 | obj-$(CONFIG_4xx) += uic.o |
29 | obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o | 30 | obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o |
30 | ifeq ($(CONFIG_PCI),y) | 31 | ifeq ($(CONFIG_PCI),y) |
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index 4b1d5120c122..bf13c2174a4e 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c | |||
@@ -33,8 +33,8 @@ void __init setup_pci_atmu(struct pci_controller *hose, struct resource *rsrc) | |||
33 | struct ccsr_pci __iomem *pci; | 33 | struct ccsr_pci __iomem *pci; |
34 | int i; | 34 | int i; |
35 | 35 | ||
36 | pr_debug("PCI memory map start 0x%x, size 0x%x\n", rsrc->start, | 36 | pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n", |
37 | rsrc->end - rsrc->start + 1); | 37 | (u64)rsrc->start, (u64)rsrc->end - (u64)rsrc->start + 1); |
38 | pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1); | 38 | pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1); |
39 | 39 | ||
40 | /* Disable all windows (except powar0 since its ignored) */ | 40 | /* Disable all windows (except powar0 since its ignored) */ |
@@ -46,17 +46,17 @@ void __init setup_pci_atmu(struct pci_controller *hose, struct resource *rsrc) | |||
46 | /* Setup outbound MEM window */ | 46 | /* Setup outbound MEM window */ |
47 | for(i = 0; i < 3; i++) | 47 | for(i = 0; i < 3; i++) |
48 | if (hose->mem_resources[i].flags & IORESOURCE_MEM){ | 48 | if (hose->mem_resources[i].flags & IORESOURCE_MEM){ |
49 | pr_debug("PCI MEM resource start 0x%08x, size 0x%08x.\n", | 49 | resource_size_t pci_addr_start = |
50 | hose->mem_resources[i].start, | 50 | hose->mem_resources[i].start - |
51 | hose->mem_resources[i].end | 51 | hose->pci_mem_offset; |
52 | - hose->mem_resources[i].start + 1); | 52 | pr_debug("PCI MEM resource start 0x%016llx, size 0x%016llx.\n", |
53 | out_be32(&pci->pow[i+1].potar, | 53 | (u64)hose->mem_resources[i].start, |
54 | (hose->mem_resources[i].start >> 12) | 54 | (u64)hose->mem_resources[i].end |
55 | & 0x000fffff); | 55 | - (u64)hose->mem_resources[i].start + 1); |
56 | out_be32(&pci->pow[i+1].potar, (pci_addr_start >> 12)); | ||
56 | out_be32(&pci->pow[i+1].potear, 0); | 57 | out_be32(&pci->pow[i+1].potear, 0); |
57 | out_be32(&pci->pow[i+1].powbar, | 58 | out_be32(&pci->pow[i+1].powbar, |
58 | (hose->mem_resources[i].start >> 12) | 59 | (hose->mem_resources[i].start >> 12)); |
59 | & 0x000fffff); | ||
60 | /* Enable, Mem R/W */ | 60 | /* Enable, Mem R/W */ |
61 | out_be32(&pci->pow[i+1].powar, 0x80044000 | 61 | out_be32(&pci->pow[i+1].powar, 0x80044000 |
62 | | (__ilog2(hose->mem_resources[i].end | 62 | | (__ilog2(hose->mem_resources[i].end |
@@ -65,15 +65,14 @@ void __init setup_pci_atmu(struct pci_controller *hose, struct resource *rsrc) | |||
65 | 65 | ||
66 | /* Setup outbound IO window */ | 66 | /* Setup outbound IO window */ |
67 | if (hose->io_resource.flags & IORESOURCE_IO){ | 67 | if (hose->io_resource.flags & IORESOURCE_IO){ |
68 | pr_debug("PCI IO resource start 0x%08x, size 0x%08x, phy base 0x%08x.\n", | 68 | pr_debug("PCI IO resource start 0x%016llx, size 0x%016llx, " |
69 | hose->io_resource.start, | 69 | "phy base 0x%016llx.\n", |
70 | hose->io_resource.end - hose->io_resource.start + 1, | 70 | (u64)hose->io_resource.start, |
71 | hose->io_base_phys); | 71 | (u64)hose->io_resource.end - (u64)hose->io_resource.start + 1, |
72 | out_be32(&pci->pow[i+1].potar, (hose->io_resource.start >> 12) | 72 | (u64)hose->io_base_phys); |
73 | & 0x000fffff); | 73 | out_be32(&pci->pow[i+1].potar, (hose->io_resource.start >> 12)); |
74 | out_be32(&pci->pow[i+1].potear, 0); | 74 | out_be32(&pci->pow[i+1].potear, 0); |
75 | out_be32(&pci->pow[i+1].powbar, (hose->io_base_phys >> 12) | 75 | out_be32(&pci->pow[i+1].powbar, (hose->io_base_phys >> 12)); |
76 | & 0x000fffff); | ||
77 | /* Enable, IO R/W */ | 76 | /* Enable, IO R/W */ |
78 | out_be32(&pci->pow[i+1].powar, 0x80088000 | 77 | out_be32(&pci->pow[i+1].powar, 0x80088000 |
79 | | (__ilog2(hose->io_resource.end | 78 | | (__ilog2(hose->io_resource.end |
@@ -107,55 +106,17 @@ void __init setup_pci_cmd(struct pci_controller *hose) | |||
107 | } | 106 | } |
108 | } | 107 | } |
109 | 108 | ||
110 | static void __init quirk_fsl_pcie_transparent(struct pci_dev *dev) | 109 | static int fsl_pcie_bus_fixup; |
111 | { | ||
112 | struct resource *res; | ||
113 | int i, res_idx = PCI_BRIDGE_RESOURCES; | ||
114 | struct pci_controller *hose; | ||
115 | 110 | ||
111 | static void __init quirk_fsl_pcie_header(struct pci_dev *dev) | ||
112 | { | ||
116 | /* if we aren't a PCIe don't bother */ | 113 | /* if we aren't a PCIe don't bother */ |
117 | if (!pci_find_capability(dev, PCI_CAP_ID_EXP)) | 114 | if (!pci_find_capability(dev, PCI_CAP_ID_EXP)) |
118 | return ; | 115 | return ; |
119 | 116 | ||
120 | /* | 117 | dev->class = PCI_CLASS_BRIDGE_PCI << 8; |
121 | * Make the bridge be transparent. | 118 | fsl_pcie_bus_fixup = 1; |
122 | */ | 119 | return ; |
123 | dev->transparent = 1; | ||
124 | |||
125 | hose = pci_bus_to_host(dev->bus); | ||
126 | if (!hose) { | ||
127 | printk(KERN_ERR "Can't find hose for bus %d\n", | ||
128 | dev->bus->number); | ||
129 | return; | ||
130 | } | ||
131 | |||
132 | /* Clear out any of the virtual P2P bridge registers */ | ||
133 | pci_write_config_word(dev, PCI_IO_BASE_UPPER16, 0); | ||
134 | pci_write_config_word(dev, PCI_IO_LIMIT_UPPER16, 0); | ||
135 | pci_write_config_byte(dev, PCI_IO_BASE, 0x10); | ||
136 | pci_write_config_byte(dev, PCI_IO_LIMIT, 0); | ||
137 | pci_write_config_word(dev, PCI_MEMORY_BASE, 0x10); | ||
138 | pci_write_config_word(dev, PCI_MEMORY_LIMIT, 0); | ||
139 | pci_write_config_word(dev, PCI_PREF_BASE_UPPER32, 0x0); | ||
140 | pci_write_config_word(dev, PCI_PREF_LIMIT_UPPER32, 0x0); | ||
141 | pci_write_config_word(dev, PCI_PREF_MEMORY_BASE, 0x10); | ||
142 | pci_write_config_word(dev, PCI_PREF_MEMORY_LIMIT, 0); | ||
143 | |||
144 | if (hose->io_resource.flags) { | ||
145 | res = &dev->resource[res_idx++]; | ||
146 | res->start = hose->io_resource.start; | ||
147 | res->end = hose->io_resource.end; | ||
148 | res->flags = hose->io_resource.flags; | ||
149 | update_bridge_resource(dev, res); | ||
150 | } | ||
151 | |||
152 | for (i = 0; i < 3; i++) { | ||
153 | res = &dev->resource[res_idx + i]; | ||
154 | res->start = hose->mem_resources[i].start; | ||
155 | res->end = hose->mem_resources[i].end; | ||
156 | res->flags = hose->mem_resources[i].flags; | ||
157 | update_bridge_resource(dev, res); | ||
158 | } | ||
159 | } | 120 | } |
160 | 121 | ||
161 | int __init fsl_pcie_check_link(struct pci_controller *hose) | 122 | int __init fsl_pcie_check_link(struct pci_controller *hose) |
@@ -172,11 +133,24 @@ void fsl_pcibios_fixup_bus(struct pci_bus *bus) | |||
172 | struct pci_controller *hose = (struct pci_controller *) bus->sysdata; | 133 | struct pci_controller *hose = (struct pci_controller *) bus->sysdata; |
173 | int i; | 134 | int i; |
174 | 135 | ||
175 | /* deal with bogus pci_bus when we don't have anything connected on PCIe */ | 136 | if ((bus->parent == hose->bus) && |
176 | if (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK) { | 137 | ((fsl_pcie_bus_fixup && |
177 | if (bus->parent) { | 138 | early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) || |
178 | for (i = 0; i < 4; ++i) | 139 | (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK))) |
179 | bus->resource[i] = bus->parent->resource[i]; | 140 | { |
141 | for (i = 0; i < 4; ++i) { | ||
142 | struct resource *res = bus->resource[i]; | ||
143 | struct resource *par = bus->parent->resource[i]; | ||
144 | if (res) { | ||
145 | res->start = 0; | ||
146 | res->end = 0; | ||
147 | res->flags = 0; | ||
148 | } | ||
149 | if (res && par) { | ||
150 | res->start = par->start; | ||
151 | res->end = par->end; | ||
152 | res->flags = par->flags; | ||
153 | } | ||
180 | } | 154 | } |
181 | } | 155 | } |
182 | } | 156 | } |
@@ -240,23 +214,23 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary) | |||
240 | return 0; | 214 | return 0; |
241 | } | 215 | } |
242 | 216 | ||
243 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8548E, quirk_fsl_pcie_transparent); | 217 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8548E, quirk_fsl_pcie_header); |
244 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8548, quirk_fsl_pcie_transparent); | 218 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8548, quirk_fsl_pcie_header); |
245 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8543E, quirk_fsl_pcie_transparent); | 219 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8543E, quirk_fsl_pcie_header); |
246 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8543, quirk_fsl_pcie_transparent); | 220 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8543, quirk_fsl_pcie_header); |
247 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8547E, quirk_fsl_pcie_transparent); | 221 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8547E, quirk_fsl_pcie_header); |
248 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8545E, quirk_fsl_pcie_transparent); | 222 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8545E, quirk_fsl_pcie_header); |
249 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8545, quirk_fsl_pcie_transparent); | 223 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8545, quirk_fsl_pcie_header); |
250 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568E, quirk_fsl_pcie_transparent); | 224 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8568E, quirk_fsl_pcie_header); |
251 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_transparent); | 225 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_header); |
252 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_transparent); | 226 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_header); |
253 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_transparent); | 227 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_header); |
254 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_transparent); | 228 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_header); |
255 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent); | 229 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_header); |
256 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); | 230 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_header); |
257 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); | 231 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_header); |
258 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_transparent); | 232 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_header); |
259 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_transparent); | 233 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_header); |
260 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); | 234 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_header); |
261 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_transparent); | 235 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_header); |
262 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8610, quirk_fsl_pcie_transparent); | 236 | DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8610, quirk_fsl_pcie_header); |
diff --git a/arch/ppc/syslib/ppc85xx_rio.c b/arch/powerpc/sysdev/fsl_rio.c index af2425e4655f..af2425e4655f 100644 --- a/arch/ppc/syslib/ppc85xx_rio.c +++ b/arch/powerpc/sysdev/fsl_rio.c | |||
diff --git a/arch/ppc/syslib/ppc85xx_rio.h b/arch/powerpc/sysdev/fsl_rio.h index 6d3ff30b1579..6d3ff30b1579 100644 --- a/arch/ppc/syslib/ppc85xx_rio.h +++ b/arch/powerpc/sysdev/fsl_rio.h | |||
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index 217bcc2e8f86..f2c0988a03b8 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/of_platform.h> | 25 | #include <linux/of_platform.h> |
26 | #include <linux/phy.h> | 26 | #include <linux/phy.h> |
27 | #include <linux/phy_fixed.h> | ||
27 | #include <linux/spi/spi.h> | 28 | #include <linux/spi/spi.h> |
28 | #include <linux/fsl_devices.h> | 29 | #include <linux/fsl_devices.h> |
29 | #include <linux/fs_enet_pd.h> | 30 | #include <linux/fs_enet_pd.h> |
@@ -54,10 +55,18 @@ phys_addr_t get_immrbase(void) | |||
54 | soc = of_find_node_by_type(NULL, "soc"); | 55 | soc = of_find_node_by_type(NULL, "soc"); |
55 | if (soc) { | 56 | if (soc) { |
56 | int size; | 57 | int size; |
57 | const void *prop = of_get_property(soc, "reg", &size); | 58 | u32 naddr; |
59 | const u32 *prop = of_get_property(soc, "#address-cells", &size); | ||
58 | 60 | ||
61 | if (prop && size == 4) | ||
62 | naddr = *prop; | ||
63 | else | ||
64 | naddr = 2; | ||
65 | |||
66 | prop = of_get_property(soc, "ranges", &size); | ||
59 | if (prop) | 67 | if (prop) |
60 | immrbase = of_translate_address(soc, prop); | 68 | immrbase = of_translate_address(soc, prop + naddr); |
69 | |||
61 | of_node_put(soc); | 70 | of_node_put(soc); |
62 | } | 71 | } |
63 | 72 | ||
@@ -130,6 +139,37 @@ u32 get_baudrate(void) | |||
130 | EXPORT_SYMBOL(get_baudrate); | 139 | EXPORT_SYMBOL(get_baudrate); |
131 | #endif /* CONFIG_CPM2 */ | 140 | #endif /* CONFIG_CPM2 */ |
132 | 141 | ||
142 | #ifdef CONFIG_FIXED_PHY | ||
143 | static int __init of_add_fixed_phys(void) | ||
144 | { | ||
145 | int ret; | ||
146 | struct device_node *np; | ||
147 | u32 *fixed_link; | ||
148 | struct fixed_phy_status status = {}; | ||
149 | |||
150 | for_each_node_by_name(np, "ethernet") { | ||
151 | fixed_link = (u32 *)of_get_property(np, "fixed-link", NULL); | ||
152 | if (!fixed_link) | ||
153 | continue; | ||
154 | |||
155 | status.link = 1; | ||
156 | status.duplex = fixed_link[1]; | ||
157 | status.speed = fixed_link[2]; | ||
158 | status.pause = fixed_link[3]; | ||
159 | status.asym_pause = fixed_link[4]; | ||
160 | |||
161 | ret = fixed_phy_add(PHY_POLL, fixed_link[0], &status); | ||
162 | if (ret) { | ||
163 | of_node_put(np); | ||
164 | return ret; | ||
165 | } | ||
166 | } | ||
167 | |||
168 | return 0; | ||
169 | } | ||
170 | arch_initcall(of_add_fixed_phys); | ||
171 | #endif /* CONFIG_FIXED_PHY */ | ||
172 | |||
133 | static int __init gfar_mdio_of_init(void) | 173 | static int __init gfar_mdio_of_init(void) |
134 | { | 174 | { |
135 | struct device_node *np = NULL; | 175 | struct device_node *np = NULL; |
@@ -198,7 +238,6 @@ static const char *gfar_tx_intr = "tx"; | |||
198 | static const char *gfar_rx_intr = "rx"; | 238 | static const char *gfar_rx_intr = "rx"; |
199 | static const char *gfar_err_intr = "error"; | 239 | static const char *gfar_err_intr = "error"; |
200 | 240 | ||
201 | |||
202 | static int __init gfar_of_init(void) | 241 | static int __init gfar_of_init(void) |
203 | { | 242 | { |
204 | struct device_node *np; | 243 | struct device_node *np; |
@@ -282,29 +321,43 @@ static int __init gfar_of_init(void) | |||
282 | gfar_data.interface = PHY_INTERFACE_MODE_MII; | 321 | gfar_data.interface = PHY_INTERFACE_MODE_MII; |
283 | 322 | ||
284 | ph = of_get_property(np, "phy-handle", NULL); | 323 | ph = of_get_property(np, "phy-handle", NULL); |
285 | phy = of_find_node_by_phandle(*ph); | 324 | if (ph == NULL) { |
325 | u32 *fixed_link; | ||
286 | 326 | ||
287 | if (phy == NULL) { | 327 | fixed_link = (u32 *)of_get_property(np, "fixed-link", |
288 | ret = -ENODEV; | 328 | NULL); |
289 | goto unreg; | 329 | if (!fixed_link) { |
290 | } | 330 | ret = -ENODEV; |
331 | goto unreg; | ||
332 | } | ||
291 | 333 | ||
292 | mdio = of_get_parent(phy); | 334 | gfar_data.bus_id = 0; |
335 | gfar_data.phy_id = fixed_link[0]; | ||
336 | } else { | ||
337 | phy = of_find_node_by_phandle(*ph); | ||
338 | |||
339 | if (phy == NULL) { | ||
340 | ret = -ENODEV; | ||
341 | goto unreg; | ||
342 | } | ||
343 | |||
344 | mdio = of_get_parent(phy); | ||
345 | |||
346 | id = of_get_property(phy, "reg", NULL); | ||
347 | ret = of_address_to_resource(mdio, 0, &res); | ||
348 | if (ret) { | ||
349 | of_node_put(phy); | ||
350 | of_node_put(mdio); | ||
351 | goto unreg; | ||
352 | } | ||
353 | |||
354 | gfar_data.phy_id = *id; | ||
355 | gfar_data.bus_id = res.start; | ||
293 | 356 | ||
294 | id = of_get_property(phy, "reg", NULL); | ||
295 | ret = of_address_to_resource(mdio, 0, &res); | ||
296 | if (ret) { | ||
297 | of_node_put(phy); | 357 | of_node_put(phy); |
298 | of_node_put(mdio); | 358 | of_node_put(mdio); |
299 | goto unreg; | ||
300 | } | 359 | } |
301 | 360 | ||
302 | gfar_data.phy_id = *id; | ||
303 | gfar_data.bus_id = res.start; | ||
304 | |||
305 | of_node_put(phy); | ||
306 | of_node_put(mdio); | ||
307 | |||
308 | ret = | 361 | ret = |
309 | platform_device_add_data(gfar_dev, &gfar_data, | 362 | platform_device_add_data(gfar_dev, &gfar_data, |
310 | sizeof(struct | 363 | sizeof(struct |
@@ -531,14 +584,12 @@ static enum fsl_usb2_phy_modes determine_usb_phy(const char *phy_type) | |||
531 | static int __init fsl_usb_of_init(void) | 584 | static int __init fsl_usb_of_init(void) |
532 | { | 585 | { |
533 | struct device_node *np; | 586 | struct device_node *np; |
534 | unsigned int i; | 587 | unsigned int i = 0; |
535 | struct platform_device *usb_dev_mph = NULL, *usb_dev_dr_host = NULL, | 588 | struct platform_device *usb_dev_mph = NULL, *usb_dev_dr_host = NULL, |
536 | *usb_dev_dr_client = NULL; | 589 | *usb_dev_dr_client = NULL; |
537 | int ret; | 590 | int ret; |
538 | 591 | ||
539 | for (np = NULL, i = 0; | 592 | for_each_compatible_node(np, NULL, "fsl-usb2-mph") { |
540 | (np = of_find_compatible_node(np, "usb", "fsl-usb2-mph")) != NULL; | ||
541 | i++) { | ||
542 | struct resource r[2]; | 593 | struct resource r[2]; |
543 | struct fsl_usb2_platform_data usb_data; | 594 | struct fsl_usb2_platform_data usb_data; |
544 | const unsigned char *prop = NULL; | 595 | const unsigned char *prop = NULL; |
@@ -581,11 +632,10 @@ static int __init fsl_usb_of_init(void) | |||
581 | fsl_usb2_platform_data)); | 632 | fsl_usb2_platform_data)); |
582 | if (ret) | 633 | if (ret) |
583 | goto unreg_mph; | 634 | goto unreg_mph; |
635 | i++; | ||
584 | } | 636 | } |
585 | 637 | ||
586 | for (np = NULL; | 638 | for_each_compatible_node(np, NULL, "fsl-usb2-dr") { |
587 | (np = of_find_compatible_node(np, "usb", "fsl-usb2-dr")) != NULL; | ||
588 | i++) { | ||
589 | struct resource r[2]; | 639 | struct resource r[2]; |
590 | struct fsl_usb2_platform_data usb_data; | 640 | struct fsl_usb2_platform_data usb_data; |
591 | const unsigned char *prop = NULL; | 641 | const unsigned char *prop = NULL; |
@@ -657,6 +707,7 @@ static int __init fsl_usb_of_init(void) | |||
657 | fsl_usb2_platform_data)))) | 707 | fsl_usb2_platform_data)))) |
658 | goto unreg_dr; | 708 | goto unreg_dr; |
659 | } | 709 | } |
710 | i++; | ||
660 | } | 711 | } |
661 | return 0; | 712 | return 0; |
662 | 713 | ||
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c index 7274750fd9c6..4c016da68426 100644 --- a/arch/powerpc/sysdev/ipic.c +++ b/arch/powerpc/sysdev/ipic.c | |||
@@ -48,6 +48,13 @@ static struct ipic_info ipic_info[] = { | |||
48 | .bit = 17, | 48 | .bit = 17, |
49 | .prio_mask = 1, | 49 | .prio_mask = 1, |
50 | }, | 50 | }, |
51 | [3] = { | ||
52 | .mask = IPIC_SIMSR_H, | ||
53 | .prio = IPIC_SIPRR_C, | ||
54 | .force = IPIC_SIFCR_H, | ||
55 | .bit = 18, | ||
56 | .prio_mask = 2, | ||
57 | }, | ||
51 | [4] = { | 58 | [4] = { |
52 | .mask = IPIC_SIMSR_H, | 59 | .mask = IPIC_SIMSR_H, |
53 | .prio = IPIC_SIPRR_C, | 60 | .prio = IPIC_SIPRR_C, |
@@ -55,6 +62,34 @@ static struct ipic_info ipic_info[] = { | |||
55 | .bit = 19, | 62 | .bit = 19, |
56 | .prio_mask = 3, | 63 | .prio_mask = 3, |
57 | }, | 64 | }, |
65 | [5] = { | ||
66 | .mask = IPIC_SIMSR_H, | ||
67 | .prio = IPIC_SIPRR_C, | ||
68 | .force = IPIC_SIFCR_H, | ||
69 | .bit = 20, | ||
70 | .prio_mask = 4, | ||
71 | }, | ||
72 | [6] = { | ||
73 | .mask = IPIC_SIMSR_H, | ||
74 | .prio = IPIC_SIPRR_C, | ||
75 | .force = IPIC_SIFCR_H, | ||
76 | .bit = 21, | ||
77 | .prio_mask = 5, | ||
78 | }, | ||
79 | [7] = { | ||
80 | .mask = IPIC_SIMSR_H, | ||
81 | .prio = IPIC_SIPRR_C, | ||
82 | .force = IPIC_SIFCR_H, | ||
83 | .bit = 22, | ||
84 | .prio_mask = 6, | ||
85 | }, | ||
86 | [8] = { | ||
87 | .mask = IPIC_SIMSR_H, | ||
88 | .prio = IPIC_SIPRR_C, | ||
89 | .force = IPIC_SIFCR_H, | ||
90 | .bit = 23, | ||
91 | .prio_mask = 7, | ||
92 | }, | ||
58 | [9] = { | 93 | [9] = { |
59 | .mask = IPIC_SIMSR_H, | 94 | .mask = IPIC_SIMSR_H, |
60 | .prio = IPIC_SIPRR_D, | 95 | .prio = IPIC_SIPRR_D, |
@@ -223,6 +258,20 @@ static struct ipic_info ipic_info[] = { | |||
223 | .bit = 7, | 258 | .bit = 7, |
224 | .prio_mask = 7, | 259 | .prio_mask = 7, |
225 | }, | 260 | }, |
261 | [40] = { | ||
262 | .mask = IPIC_SIMSR_H, | ||
263 | .prio = IPIC_SIPRR_B, | ||
264 | .force = IPIC_SIFCR_H, | ||
265 | .bit = 8, | ||
266 | .prio_mask = 0, | ||
267 | }, | ||
268 | [41] = { | ||
269 | .mask = IPIC_SIMSR_H, | ||
270 | .prio = IPIC_SIPRR_B, | ||
271 | .force = IPIC_SIFCR_H, | ||
272 | .bit = 9, | ||
273 | .prio_mask = 1, | ||
274 | }, | ||
226 | [42] = { | 275 | [42] = { |
227 | .mask = IPIC_SIMSR_H, | 276 | .mask = IPIC_SIMSR_H, |
228 | .prio = IPIC_SIPRR_B, | 277 | .prio = IPIC_SIPRR_B, |
@@ -230,6 +279,13 @@ static struct ipic_info ipic_info[] = { | |||
230 | .bit = 10, | 279 | .bit = 10, |
231 | .prio_mask = 2, | 280 | .prio_mask = 2, |
232 | }, | 281 | }, |
282 | [43] = { | ||
283 | .mask = IPIC_SIMSR_H, | ||
284 | .prio = IPIC_SIPRR_B, | ||
285 | .force = IPIC_SIFCR_H, | ||
286 | .bit = 11, | ||
287 | .prio_mask = 3, | ||
288 | }, | ||
233 | [44] = { | 289 | [44] = { |
234 | .mask = IPIC_SIMSR_H, | 290 | .mask = IPIC_SIMSR_H, |
235 | .prio = IPIC_SIPRR_B, | 291 | .prio = IPIC_SIPRR_B, |
@@ -387,6 +443,12 @@ static struct ipic_info ipic_info[] = { | |||
387 | .force = IPIC_SIFCR_L, | 443 | .force = IPIC_SIFCR_L, |
388 | .bit = 18, | 444 | .bit = 18, |
389 | }, | 445 | }, |
446 | [83] = { | ||
447 | .mask = IPIC_SIMSR_L, | ||
448 | .prio = 0, | ||
449 | .force = IPIC_SIFCR_L, | ||
450 | .bit = 19, | ||
451 | }, | ||
390 | [84] = { | 452 | [84] = { |
391 | .mask = IPIC_SIMSR_L, | 453 | .mask = IPIC_SIMSR_L, |
392 | .prio = 0, | 454 | .prio = 0, |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index f88ff09c4711..0da7069c7c62 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -267,7 +267,7 @@ static inline void _mpic_irq_write(struct mpic *mpic, unsigned int src_no, | |||
267 | */ | 267 | */ |
268 | 268 | ||
269 | 269 | ||
270 | static void _mpic_map_mmio(struct mpic *mpic, unsigned long phys_addr, | 270 | static void _mpic_map_mmio(struct mpic *mpic, phys_addr_t phys_addr, |
271 | struct mpic_reg_bank *rb, unsigned int offset, | 271 | struct mpic_reg_bank *rb, unsigned int offset, |
272 | unsigned int size) | 272 | unsigned int size) |
273 | { | 273 | { |
@@ -287,7 +287,7 @@ static void _mpic_map_dcr(struct mpic *mpic, struct mpic_reg_bank *rb, | |||
287 | BUG_ON(!DCR_MAP_OK(rb->dhost)); | 287 | BUG_ON(!DCR_MAP_OK(rb->dhost)); |
288 | } | 288 | } |
289 | 289 | ||
290 | static inline void mpic_map(struct mpic *mpic, unsigned long phys_addr, | 290 | static inline void mpic_map(struct mpic *mpic, phys_addr_t phys_addr, |
291 | struct mpic_reg_bank *rb, unsigned int offset, | 291 | struct mpic_reg_bank *rb, unsigned int offset, |
292 | unsigned int size) | 292 | unsigned int size) |
293 | { | 293 | { |
diff --git a/arch/powerpc/sysdev/qe_lib/Kconfig b/arch/powerpc/sysdev/qe_lib/Kconfig index f611d344a126..adc66212a419 100644 --- a/arch/powerpc/sysdev/qe_lib/Kconfig +++ b/arch/powerpc/sysdev/qe_lib/Kconfig | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | config UCC_SLOW | 5 | config UCC_SLOW |
6 | bool | 6 | bool |
7 | default n | 7 | default y if SERIAL_QE |
8 | help | 8 | help |
9 | This option provides qe_lib support to UCC slow | 9 | This option provides qe_lib support to UCC slow |
10 | protocols: UART, BISYNC, QMC | 10 | protocols: UART, BISYNC, QMC |
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c index 21e01061aca9..3925eae9b0f5 100644 --- a/arch/powerpc/sysdev/qe_lib/qe.c +++ b/arch/powerpc/sysdev/qe_lib/qe.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/delay.h> | 26 | #include <linux/delay.h> |
27 | #include <linux/ioport.h> | 27 | #include <linux/ioport.h> |
28 | #include <linux/crc32.h> | ||
28 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
29 | #include <asm/page.h> | 30 | #include <asm/page.h> |
30 | #include <asm/pgtable.h> | 31 | #include <asm/pgtable.h> |
@@ -394,3 +395,249 @@ void *qe_muram_addr(unsigned long offset) | |||
394 | return (void *)&qe_immr->muram[offset]; | 395 | return (void *)&qe_immr->muram[offset]; |
395 | } | 396 | } |
396 | EXPORT_SYMBOL(qe_muram_addr); | 397 | EXPORT_SYMBOL(qe_muram_addr); |
398 | |||
399 | /* The maximum number of RISCs we support */ | ||
400 | #define MAX_QE_RISC 2 | ||
401 | |||
402 | /* Firmware information stored here for qe_get_firmware_info() */ | ||
403 | static struct qe_firmware_info qe_firmware_info; | ||
404 | |||
405 | /* | ||
406 | * Set to 1 if QE firmware has been uploaded, and therefore | ||
407 | * qe_firmware_info contains valid data. | ||
408 | */ | ||
409 | static int qe_firmware_uploaded; | ||
410 | |||
411 | /* | ||
412 | * Upload a QE microcode | ||
413 | * | ||
414 | * This function is a worker function for qe_upload_firmware(). It does | ||
415 | * the actual uploading of the microcode. | ||
416 | */ | ||
417 | static void qe_upload_microcode(const void *base, | ||
418 | const struct qe_microcode *ucode) | ||
419 | { | ||
420 | const __be32 *code = base + be32_to_cpu(ucode->code_offset); | ||
421 | unsigned int i; | ||
422 | |||
423 | if (ucode->major || ucode->minor || ucode->revision) | ||
424 | printk(KERN_INFO "qe-firmware: " | ||
425 | "uploading microcode '%s' version %u.%u.%u\n", | ||
426 | ucode->id, ucode->major, ucode->minor, ucode->revision); | ||
427 | else | ||
428 | printk(KERN_INFO "qe-firmware: " | ||
429 | "uploading microcode '%s'\n", ucode->id); | ||
430 | |||
431 | /* Use auto-increment */ | ||
432 | out_be32(&qe_immr->iram.iadd, be32_to_cpu(ucode->iram_offset) | | ||
433 | QE_IRAM_IADD_AIE | QE_IRAM_IADD_BADDR); | ||
434 | |||
435 | for (i = 0; i < be32_to_cpu(ucode->count); i++) | ||
436 | out_be32(&qe_immr->iram.idata, be32_to_cpu(code[i])); | ||
437 | } | ||
438 | |||
439 | /* | ||
440 | * Upload a microcode to the I-RAM at a specific address. | ||
441 | * | ||
442 | * See Documentation/powerpc/qe-firmware.txt for information on QE microcode | ||
443 | * uploading. | ||
444 | * | ||
445 | * Currently, only version 1 is supported, so the 'version' field must be | ||
446 | * set to 1. | ||
447 | * | ||
448 | * The SOC model and revision are not validated, they are only displayed for | ||
449 | * informational purposes. | ||
450 | * | ||
451 | * 'calc_size' is the calculated size, in bytes, of the firmware structure and | ||
452 | * all of the microcode structures, minus the CRC. | ||
453 | * | ||
454 | * 'length' is the size that the structure says it is, including the CRC. | ||
455 | */ | ||
456 | int qe_upload_firmware(const struct qe_firmware *firmware) | ||
457 | { | ||
458 | unsigned int i; | ||
459 | unsigned int j; | ||
460 | u32 crc; | ||
461 | size_t calc_size = sizeof(struct qe_firmware); | ||
462 | size_t length; | ||
463 | const struct qe_header *hdr; | ||
464 | |||
465 | if (!firmware) { | ||
466 | printk(KERN_ERR "qe-firmware: invalid pointer\n"); | ||
467 | return -EINVAL; | ||
468 | } | ||
469 | |||
470 | hdr = &firmware->header; | ||
471 | length = be32_to_cpu(hdr->length); | ||
472 | |||
473 | /* Check the magic */ | ||
474 | if ((hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') || | ||
475 | (hdr->magic[2] != 'F')) { | ||
476 | printk(KERN_ERR "qe-firmware: not a microcode\n"); | ||
477 | return -EPERM; | ||
478 | } | ||
479 | |||
480 | /* Check the version */ | ||
481 | if (hdr->version != 1) { | ||
482 | printk(KERN_ERR "qe-firmware: unsupported version\n"); | ||
483 | return -EPERM; | ||
484 | } | ||
485 | |||
486 | /* Validate some of the fields */ | ||
487 | if ((firmware->count < 1) || (firmware->count >= MAX_QE_RISC)) { | ||
488 | printk(KERN_ERR "qe-firmware: invalid data\n"); | ||
489 | return -EINVAL; | ||
490 | } | ||
491 | |||
492 | /* Validate the length and check if there's a CRC */ | ||
493 | calc_size += (firmware->count - 1) * sizeof(struct qe_microcode); | ||
494 | |||
495 | for (i = 0; i < firmware->count; i++) | ||
496 | /* | ||
497 | * For situations where the second RISC uses the same microcode | ||
498 | * as the first, the 'code_offset' and 'count' fields will be | ||
499 | * zero, so it's okay to add those. | ||
500 | */ | ||
501 | calc_size += sizeof(__be32) * | ||
502 | be32_to_cpu(firmware->microcode[i].count); | ||
503 | |||
504 | /* Validate the length */ | ||
505 | if (length != calc_size + sizeof(__be32)) { | ||
506 | printk(KERN_ERR "qe-firmware: invalid length\n"); | ||
507 | return -EPERM; | ||
508 | } | ||
509 | |||
510 | /* Validate the CRC */ | ||
511 | crc = be32_to_cpu(*(__be32 *)((void *)firmware + calc_size)); | ||
512 | if (crc != crc32(0, firmware, calc_size)) { | ||
513 | printk(KERN_ERR "qe-firmware: firmware CRC is invalid\n"); | ||
514 | return -EIO; | ||
515 | } | ||
516 | |||
517 | /* | ||
518 | * If the microcode calls for it, split the I-RAM. | ||
519 | */ | ||
520 | if (!firmware->split) | ||
521 | setbits16(&qe_immr->cp.cercr, QE_CP_CERCR_CIR); | ||
522 | |||
523 | if (firmware->soc.model) | ||
524 | printk(KERN_INFO | ||
525 | "qe-firmware: firmware '%s' for %u V%u.%u\n", | ||
526 | firmware->id, be16_to_cpu(firmware->soc.model), | ||
527 | firmware->soc.major, firmware->soc.minor); | ||
528 | else | ||
529 | printk(KERN_INFO "qe-firmware: firmware '%s'\n", | ||
530 | firmware->id); | ||
531 | |||
532 | /* | ||
533 | * The QE only supports one microcode per RISC, so clear out all the | ||
534 | * saved microcode information and put in the new. | ||
535 | */ | ||
536 | memset(&qe_firmware_info, 0, sizeof(qe_firmware_info)); | ||
537 | strcpy(qe_firmware_info.id, firmware->id); | ||
538 | qe_firmware_info.extended_modes = firmware->extended_modes; | ||
539 | memcpy(qe_firmware_info.vtraps, firmware->vtraps, | ||
540 | sizeof(firmware->vtraps)); | ||
541 | |||
542 | /* Loop through each microcode. */ | ||
543 | for (i = 0; i < firmware->count; i++) { | ||
544 | const struct qe_microcode *ucode = &firmware->microcode[i]; | ||
545 | |||
546 | /* Upload a microcode if it's present */ | ||
547 | if (ucode->code_offset) | ||
548 | qe_upload_microcode(firmware, ucode); | ||
549 | |||
550 | /* Program the traps for this processor */ | ||
551 | for (j = 0; j < 16; j++) { | ||
552 | u32 trap = be32_to_cpu(ucode->traps[j]); | ||
553 | |||
554 | if (trap) | ||
555 | out_be32(&qe_immr->rsp[i].tibcr[j], trap); | ||
556 | } | ||
557 | |||
558 | /* Enable traps */ | ||
559 | out_be32(&qe_immr->rsp[i].eccr, be32_to_cpu(ucode->eccr)); | ||
560 | } | ||
561 | |||
562 | qe_firmware_uploaded = 1; | ||
563 | |||
564 | return 0; | ||
565 | } | ||
566 | EXPORT_SYMBOL(qe_upload_firmware); | ||
567 | |||
568 | /* | ||
569 | * Get info on the currently-loaded firmware | ||
570 | * | ||
571 | * This function also checks the device tree to see if the boot loader has | ||
572 | * uploaded a firmware already. | ||
573 | */ | ||
574 | struct qe_firmware_info *qe_get_firmware_info(void) | ||
575 | { | ||
576 | static int initialized; | ||
577 | struct property *prop; | ||
578 | struct device_node *qe; | ||
579 | struct device_node *fw = NULL; | ||
580 | const char *sprop; | ||
581 | unsigned int i; | ||
582 | |||
583 | /* | ||
584 | * If we haven't checked yet, and a driver hasn't uploaded a firmware | ||
585 | * yet, then check the device tree for information. | ||
586 | */ | ||
587 | if (initialized || qe_firmware_uploaded) | ||
588 | return NULL; | ||
589 | |||
590 | initialized = 1; | ||
591 | |||
592 | /* | ||
593 | * Newer device trees have an "fsl,qe" compatible property for the QE | ||
594 | * node, but we still need to support older device trees. | ||
595 | */ | ||
596 | qe = of_find_compatible_node(NULL, NULL, "fsl,qe"); | ||
597 | if (!qe) { | ||
598 | qe = of_find_node_by_type(NULL, "qe"); | ||
599 | if (!qe) | ||
600 | return NULL; | ||
601 | } | ||
602 | |||
603 | /* Find the 'firmware' child node */ | ||
604 | for_each_child_of_node(qe, fw) { | ||
605 | if (strcmp(fw->name, "firmware") == 0) | ||
606 | break; | ||
607 | } | ||
608 | |||
609 | of_node_put(qe); | ||
610 | |||
611 | /* Did we find the 'firmware' node? */ | ||
612 | if (!fw) | ||
613 | return NULL; | ||
614 | |||
615 | qe_firmware_uploaded = 1; | ||
616 | |||
617 | /* Copy the data into qe_firmware_info*/ | ||
618 | sprop = of_get_property(fw, "id", NULL); | ||
619 | if (sprop) | ||
620 | strncpy(qe_firmware_info.id, sprop, | ||
621 | sizeof(qe_firmware_info.id) - 1); | ||
622 | |||
623 | prop = of_find_property(fw, "extended-modes", NULL); | ||
624 | if (prop && (prop->length == sizeof(u64))) { | ||
625 | const u64 *iprop = prop->value; | ||
626 | |||
627 | qe_firmware_info.extended_modes = *iprop; | ||
628 | } | ||
629 | |||
630 | prop = of_find_property(fw, "virtual-traps", NULL); | ||
631 | if (prop && (prop->length == 32)) { | ||
632 | const u32 *iprop = prop->value; | ||
633 | |||
634 | for (i = 0; i < ARRAY_SIZE(qe_firmware_info.vtraps); i++) | ||
635 | qe_firmware_info.vtraps[i] = iprop[i]; | ||
636 | } | ||
637 | |||
638 | of_node_put(fw); | ||
639 | |||
640 | return &qe_firmware_info; | ||
641 | } | ||
642 | EXPORT_SYMBOL(qe_get_firmware_info); | ||
643 | |||
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_slow.c b/arch/powerpc/sysdev/qe_lib/ucc_slow.c index 0174b3aeef8f..b2870b208ddb 100644 --- a/arch/powerpc/sysdev/qe_lib/ucc_slow.c +++ b/arch/powerpc/sysdev/qe_lib/ucc_slow.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/stddef.h> | 19 | #include <linux/stddef.h> |
20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
22 | #include <linux/module.h> | ||
22 | 23 | ||
23 | #include <asm/io.h> | 24 | #include <asm/io.h> |
24 | #include <asm/immap_qe.h> | 25 | #include <asm/immap_qe.h> |
@@ -41,6 +42,7 @@ u32 ucc_slow_get_qe_cr_subblock(int uccs_num) | |||
41 | default: return QE_CR_SUBBLOCK_INVALID; | 42 | default: return QE_CR_SUBBLOCK_INVALID; |
42 | } | 43 | } |
43 | } | 44 | } |
45 | EXPORT_SYMBOL(ucc_slow_get_qe_cr_subblock); | ||
44 | 46 | ||
45 | void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs) | 47 | void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs) |
46 | { | 48 | { |
@@ -56,6 +58,7 @@ void ucc_slow_graceful_stop_tx(struct ucc_slow_private * uccs) | |||
56 | qe_issue_cmd(QE_GRACEFUL_STOP_TX, id, | 58 | qe_issue_cmd(QE_GRACEFUL_STOP_TX, id, |
57 | QE_CR_PROTOCOL_UNSPECIFIED, 0); | 59 | QE_CR_PROTOCOL_UNSPECIFIED, 0); |
58 | } | 60 | } |
61 | EXPORT_SYMBOL(ucc_slow_graceful_stop_tx); | ||
59 | 62 | ||
60 | void ucc_slow_stop_tx(struct ucc_slow_private * uccs) | 63 | void ucc_slow_stop_tx(struct ucc_slow_private * uccs) |
61 | { | 64 | { |
@@ -65,6 +68,7 @@ void ucc_slow_stop_tx(struct ucc_slow_private * uccs) | |||
65 | id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num); | 68 | id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num); |
66 | qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0); | 69 | qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0); |
67 | } | 70 | } |
71 | EXPORT_SYMBOL(ucc_slow_stop_tx); | ||
68 | 72 | ||
69 | void ucc_slow_restart_tx(struct ucc_slow_private * uccs) | 73 | void ucc_slow_restart_tx(struct ucc_slow_private * uccs) |
70 | { | 74 | { |
@@ -74,6 +78,7 @@ void ucc_slow_restart_tx(struct ucc_slow_private * uccs) | |||
74 | id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num); | 78 | id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num); |
75 | qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0); | 79 | qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0); |
76 | } | 80 | } |
81 | EXPORT_SYMBOL(ucc_slow_restart_tx); | ||
77 | 82 | ||
78 | void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode) | 83 | void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode) |
79 | { | 84 | { |
@@ -94,6 +99,7 @@ void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode) | |||
94 | } | 99 | } |
95 | out_be32(&us_regs->gumr_l, gumr_l); | 100 | out_be32(&us_regs->gumr_l, gumr_l); |
96 | } | 101 | } |
102 | EXPORT_SYMBOL(ucc_slow_enable); | ||
97 | 103 | ||
98 | void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode) | 104 | void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode) |
99 | { | 105 | { |
@@ -114,6 +120,7 @@ void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode) | |||
114 | } | 120 | } |
115 | out_be32(&us_regs->gumr_l, gumr_l); | 121 | out_be32(&us_regs->gumr_l, gumr_l); |
116 | } | 122 | } |
123 | EXPORT_SYMBOL(ucc_slow_disable); | ||
117 | 124 | ||
118 | /* Initialize the UCC for Slow operations | 125 | /* Initialize the UCC for Slow operations |
119 | * | 126 | * |
@@ -347,6 +354,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc | |||
347 | *uccs_ret = uccs; | 354 | *uccs_ret = uccs; |
348 | return 0; | 355 | return 0; |
349 | } | 356 | } |
357 | EXPORT_SYMBOL(ucc_slow_init); | ||
350 | 358 | ||
351 | void ucc_slow_free(struct ucc_slow_private * uccs) | 359 | void ucc_slow_free(struct ucc_slow_private * uccs) |
352 | { | 360 | { |
@@ -366,5 +374,5 @@ void ucc_slow_free(struct ucc_slow_private * uccs) | |||
366 | 374 | ||
367 | kfree(uccs); | 375 | kfree(uccs); |
368 | } | 376 | } |
369 | 377 | EXPORT_SYMBOL(ucc_slow_free); | |
370 | 378 | ||
diff --git a/arch/ppc/kernel/Makefile b/arch/ppc/kernel/Makefile index 6b4f022111e7..5da0ca7c302f 100644 --- a/arch/ppc/kernel/Makefile +++ b/arch/ppc/kernel/Makefile | |||
@@ -13,7 +13,6 @@ obj-y := entry.o traps.o time.o misc.o \ | |||
13 | ppc_htab.o | 13 | ppc_htab.o |
14 | obj-$(CONFIG_MODULES) += ppc_ksyms.o | 14 | obj-$(CONFIG_MODULES) += ppc_ksyms.o |
15 | obj-$(CONFIG_PCI) += pci.o | 15 | obj-$(CONFIG_PCI) += pci.o |
16 | obj-$(CONFIG_RAPIDIO) += rio.o | ||
17 | obj-$(CONFIG_KGDB) += ppc-stub.o | 16 | obj-$(CONFIG_KGDB) += ppc-stub.o |
18 | obj-$(CONFIG_SMP) += smp.o smp-tbsync.o | 17 | obj-$(CONFIG_SMP) += smp.o smp-tbsync.o |
19 | obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o | 18 | obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o |
diff --git a/arch/ppc/platforms/85xx/mpc85xx_ads_common.c b/arch/ppc/platforms/85xx/mpc85xx_ads_common.c index 674806e001f6..0706dca5a8ea 100644 --- a/arch/ppc/platforms/85xx/mpc85xx_ads_common.c +++ b/arch/ppc/platforms/85xx/mpc85xx_ads_common.c | |||
@@ -42,8 +42,6 @@ | |||
42 | 42 | ||
43 | #include <mm/mmu_decl.h> | 43 | #include <mm/mmu_decl.h> |
44 | 44 | ||
45 | #include <syslib/ppc85xx_rio.h> | ||
46 | |||
47 | #include <platforms/85xx/mpc85xx_ads_common.h> | 45 | #include <platforms/85xx/mpc85xx_ads_common.h> |
48 | 46 | ||
49 | #ifndef CONFIG_PCI | 47 | #ifndef CONFIG_PCI |
@@ -190,6 +188,7 @@ mpc85xx_exclude_device(u_char bus, u_char devfn) | |||
190 | #endif /* CONFIG_PCI */ | 188 | #endif /* CONFIG_PCI */ |
191 | 189 | ||
192 | #ifdef CONFIG_RAPIDIO | 190 | #ifdef CONFIG_RAPIDIO |
191 | extern void mpc85xx_rio_setup(int law_start, int law_size); | ||
193 | void platform_rio_init(void) | 192 | void platform_rio_init(void) |
194 | { | 193 | { |
195 | /* 512MB RIO LAW at 0xc0000000 */ | 194 | /* 512MB RIO LAW at 0xc0000000 */ |
diff --git a/arch/ppc/platforms/85xx/stx_gp3.c b/arch/ppc/platforms/85xx/stx_gp3.c index 731b40eacfdb..8748da3b3e0e 100644 --- a/arch/ppc/platforms/85xx/stx_gp3.c +++ b/arch/ppc/platforms/85xx/stx_gp3.c | |||
@@ -54,7 +54,6 @@ | |||
54 | 54 | ||
55 | #include <syslib/cpm2_pic.h> | 55 | #include <syslib/cpm2_pic.h> |
56 | #include <syslib/ppc85xx_common.h> | 56 | #include <syslib/ppc85xx_common.h> |
57 | #include <syslib/ppc85xx_rio.h> | ||
58 | 57 | ||
59 | 58 | ||
60 | unsigned char __res[sizeof(bd_t)]; | 59 | unsigned char __res[sizeof(bd_t)]; |
@@ -270,6 +269,7 @@ int mpc85xx_exclude_device(u_char bus, u_char devfn) | |||
270 | #endif /* CONFIG_PCI */ | 269 | #endif /* CONFIG_PCI */ |
271 | 270 | ||
272 | #ifdef CONFIG_RAPIDIO | 271 | #ifdef CONFIG_RAPIDIO |
272 | extern void mpc85xx_rio_setup(int law_start, int law_size); | ||
273 | void | 273 | void |
274 | platform_rio_init(void) | 274 | platform_rio_init(void) |
275 | { | 275 | { |
diff --git a/arch/ppc/platforms/85xx/tqm85xx.c b/arch/ppc/platforms/85xx/tqm85xx.c index 4ee2bd156dc5..2a863a83d4c8 100644 --- a/arch/ppc/platforms/85xx/tqm85xx.c +++ b/arch/ppc/platforms/85xx/tqm85xx.c | |||
@@ -54,7 +54,6 @@ | |||
54 | #include <syslib/ppc85xx_setup.h> | 54 | #include <syslib/ppc85xx_setup.h> |
55 | #include <syslib/cpm2_pic.h> | 55 | #include <syslib/cpm2_pic.h> |
56 | #include <syslib/ppc85xx_common.h> | 56 | #include <syslib/ppc85xx_common.h> |
57 | #include <syslib/ppc85xx_rio.h> | ||
58 | 57 | ||
59 | #ifndef CONFIG_PCI | 58 | #ifndef CONFIG_PCI |
60 | unsigned long isa_io_base = 0; | 59 | unsigned long isa_io_base = 0; |
@@ -309,6 +308,7 @@ int mpc85xx_exclude_device(u_char bus, u_char devfn) | |||
309 | #endif /* CONFIG_PCI */ | 308 | #endif /* CONFIG_PCI */ |
310 | 309 | ||
311 | #ifdef CONFIG_RAPIDIO | 310 | #ifdef CONFIG_RAPIDIO |
311 | extern void mpc85xx_rio_setup(int law_start, int law_size); | ||
312 | void platform_rio_init(void) | 312 | void platform_rio_init(void) |
313 | { | 313 | { |
314 | /* 512MB RIO LAW at 0xc0000000 */ | 314 | /* 512MB RIO LAW at 0xc0000000 */ |
diff --git a/arch/ppc/syslib/Makefile b/arch/ppc/syslib/Makefile index 543795be58c8..5e16228f7645 100644 --- a/arch/ppc/syslib/Makefile +++ b/arch/ppc/syslib/Makefile | |||
@@ -93,7 +93,6 @@ obj-$(CONFIG_85xx) += open_pic.o ppc85xx_common.o ppc85xx_setup.o \ | |||
93 | ifeq ($(CONFIG_85xx),y) | 93 | ifeq ($(CONFIG_85xx),y) |
94 | obj-$(CONFIG_PCI) += pci_auto.o | 94 | obj-$(CONFIG_PCI) += pci_auto.o |
95 | endif | 95 | endif |
96 | obj-$(CONFIG_RAPIDIO) += ppc85xx_rio.o | ||
97 | obj-$(CONFIG_83xx) += ppc83xx_setup.o ppc_sys.o \ | 96 | obj-$(CONFIG_83xx) += ppc83xx_setup.o ppc_sys.o \ |
98 | mpc83xx_sys.o mpc83xx_devices.o ipic.o | 97 | mpc83xx_sys.o mpc83xx_devices.o ipic.o |
99 | ifeq ($(CONFIG_83xx),y) | 98 | ifeq ($(CONFIG_83xx),y) |
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c index c83bd6560088..42d94edeee26 100644 --- a/drivers/net/fs_enet/fs_enet-main.c +++ b/drivers/net/fs_enet/fs_enet-main.c | |||
@@ -1178,8 +1178,15 @@ static int __devinit find_phy(struct device_node *np, | |||
1178 | struct device_node *phynode, *mdionode; | 1178 | struct device_node *phynode, *mdionode; |
1179 | struct resource res; | 1179 | struct resource res; |
1180 | int ret = 0, len; | 1180 | int ret = 0, len; |
1181 | const u32 *data; | ||
1182 | |||
1183 | data = of_get_property(np, "fixed-link", NULL); | ||
1184 | if (data) { | ||
1185 | snprintf(fpi->bus_id, 16, PHY_ID_FMT, 0, *data); | ||
1186 | return 0; | ||
1187 | } | ||
1181 | 1188 | ||
1182 | const u32 *data = of_get_property(np, "phy-handle", &len); | 1189 | data = of_get_property(np, "phy-handle", &len); |
1183 | if (!data || len != 4) | 1190 | if (!data || len != 4) |
1184 | return -EINVAL; | 1191 | return -EINVAL; |
1185 | 1192 | ||
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig index 54b2ba996640..7fe03ce774b1 100644 --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig | |||
@@ -61,34 +61,12 @@ config ICPLUS_PHY | |||
61 | Currently supports the IP175C PHY. | 61 | Currently supports the IP175C PHY. |
62 | 62 | ||
63 | config FIXED_PHY | 63 | config FIXED_PHY |
64 | tristate "Drivers for PHY emulation on fixed speed/link" | 64 | bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs" |
65 | ---help--- | 65 | ---help--- |
66 | Adds the driver to PHY layer to cover the boards that do not have any PHY bound, | 66 | Adds the platform "fixed" MDIO Bus to cover the boards that use |
67 | but with the ability to manipulate the speed/link in software. The relevant MII | 67 | PHYs that are not connected to the real MDIO bus. |
68 | speed/duplex parameters could be effectively handled in a user-specified function. | 68 | |
69 | Currently tested with mpc866ads. | 69 | Currently tested with mpc866ads and mpc8349e-mitx. |
70 | |||
71 | config FIXED_MII_10_FDX | ||
72 | bool "Emulation for 10M Fdx fixed PHY behavior" | ||
73 | depends on FIXED_PHY | ||
74 | |||
75 | config FIXED_MII_100_FDX | ||
76 | bool "Emulation for 100M Fdx fixed PHY behavior" | ||
77 | depends on FIXED_PHY | ||
78 | |||
79 | config FIXED_MII_1000_FDX | ||
80 | bool "Emulation for 1000M Fdx fixed PHY behavior" | ||
81 | depends on FIXED_PHY | ||
82 | |||
83 | config FIXED_MII_AMNT | ||
84 | int "Number of emulated PHYs to allocate " | ||
85 | depends on FIXED_PHY | ||
86 | default "1" | ||
87 | ---help--- | ||
88 | Sometimes it is required to have several independent emulated | ||
89 | PHYs on the bus (in case of multi-eth but phy-less HW for instance). | ||
90 | This control will have specified number allocated for each fixed | ||
91 | PHY type enabled. | ||
92 | 70 | ||
93 | config MDIO_BITBANG | 71 | config MDIO_BITBANG |
94 | tristate "Support for bitbanged MDIO buses" | 72 | tristate "Support for bitbanged MDIO buses" |
diff --git a/drivers/net/phy/fixed.c b/drivers/net/phy/fixed.c index 56191822fa26..73b6d39ef6b0 100644 --- a/drivers/net/phy/fixed.c +++ b/drivers/net/phy/fixed.c | |||
@@ -1,362 +1,253 @@ | |||
1 | /* | 1 | /* |
2 | * drivers/net/phy/fixed.c | 2 | * Fixed MDIO bus (MDIO bus emulation with fixed PHYs) |
3 | * | 3 | * |
4 | * Driver for fixed PHYs, when transceiver is able to operate in one fixed mode. | 4 | * Author: Vitaly Bordug <vbordug@ru.mvista.com> |
5 | * Anton Vorontsov <avorontsov@ru.mvista.com> | ||
5 | * | 6 | * |
6 | * Author: Vitaly Bordug | 7 | * Copyright (c) 2006-2007 MontaVista Software, Inc. |
7 | * | ||
8 | * Copyright (c) 2006 MontaVista Software, Inc. | ||
9 | * | 8 | * |
10 | * This program is free software; you can redistribute it and/or modify it | 9 | * 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 | 10 | * 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 | 11 | * Free Software Foundation; either version 2 of the License, or (at your |
13 | * option) any later version. | 12 | * option) any later version. |
14 | * | ||
15 | */ | 13 | */ |
14 | |||
16 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
17 | #include <linux/string.h> | ||
18 | #include <linux/errno.h> | ||
19 | #include <linux/unistd.h> | ||
20 | #include <linux/slab.h> | ||
21 | #include <linux/interrupt.h> | ||
22 | #include <linux/init.h> | ||
23 | #include <linux/delay.h> | ||
24 | #include <linux/netdevice.h> | ||
25 | #include <linux/etherdevice.h> | ||
26 | #include <linux/skbuff.h> | ||
27 | #include <linux/spinlock.h> | ||
28 | #include <linux/mm.h> | ||
29 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <linux/platform_device.h> | ||
18 | #include <linux/list.h> | ||
30 | #include <linux/mii.h> | 19 | #include <linux/mii.h> |
31 | #include <linux/ethtool.h> | ||
32 | #include <linux/phy.h> | 20 | #include <linux/phy.h> |
33 | #include <linux/phy_fixed.h> | 21 | #include <linux/phy_fixed.h> |
34 | 22 | ||
35 | #include <asm/io.h> | 23 | #define MII_REGS_NUM 29 |
36 | #include <asm/irq.h> | ||
37 | #include <asm/uaccess.h> | ||
38 | 24 | ||
39 | /* we need to track the allocated pointers in order to free them on exit */ | 25 | struct fixed_mdio_bus { |
40 | static struct fixed_info *fixed_phy_ptrs[CONFIG_FIXED_MII_AMNT*MAX_PHY_AMNT]; | 26 | int irqs[PHY_MAX_ADDR]; |
41 | 27 | struct mii_bus mii_bus; | |
42 | /*----------------------------------------------------------------------------- | 28 | struct list_head phys; |
43 | * If something weird is required to be done with link/speed, | 29 | }; |
44 | * network driver is able to assign a function to implement this. | ||
45 | * May be useful for PHY's that need to be software-driven. | ||
46 | *-----------------------------------------------------------------------------*/ | ||
47 | int fixed_mdio_set_link_update(struct phy_device *phydev, | ||
48 | int (*link_update) (struct net_device *, | ||
49 | struct fixed_phy_status *)) | ||
50 | { | ||
51 | struct fixed_info *fixed; | ||
52 | |||
53 | if (link_update == NULL) | ||
54 | return -EINVAL; | ||
55 | |||
56 | if (phydev) { | ||
57 | if (phydev->bus) { | ||
58 | fixed = phydev->bus->priv; | ||
59 | fixed->link_update = link_update; | ||
60 | return 0; | ||
61 | } | ||
62 | } | ||
63 | return -EINVAL; | ||
64 | } | ||
65 | |||
66 | EXPORT_SYMBOL(fixed_mdio_set_link_update); | ||
67 | 30 | ||
68 | struct fixed_info *fixed_mdio_get_phydev (int phydev_ind) | 31 | struct fixed_phy { |
69 | { | 32 | int id; |
70 | if (phydev_ind >= MAX_PHY_AMNT) | 33 | u16 regs[MII_REGS_NUM]; |
71 | return NULL; | 34 | struct phy_device *phydev; |
72 | return fixed_phy_ptrs[phydev_ind]; | 35 | struct fixed_phy_status status; |
73 | } | 36 | int (*link_update)(struct net_device *, struct fixed_phy_status *); |
37 | struct list_head node; | ||
38 | }; | ||
74 | 39 | ||
75 | EXPORT_SYMBOL(fixed_mdio_get_phydev); | 40 | static struct platform_device *pdev; |
41 | static struct fixed_mdio_bus platform_fmb = { | ||
42 | .phys = LIST_HEAD_INIT(platform_fmb.phys), | ||
43 | }; | ||
76 | 44 | ||
77 | /*----------------------------------------------------------------------------- | 45 | static int fixed_phy_update_regs(struct fixed_phy *fp) |
78 | * This is used for updating internal mii regs from the status | ||
79 | *-----------------------------------------------------------------------------*/ | ||
80 | #if defined(CONFIG_FIXED_MII_100_FDX) || defined(CONFIG_FIXED_MII_10_FDX) || defined(CONFIG_FIXED_MII_1000_FDX) | ||
81 | static int fixed_mdio_update_regs(struct fixed_info *fixed) | ||
82 | { | 46 | { |
83 | u16 *regs = fixed->regs; | 47 | u16 bmsr = BMSR_ANEGCAPABLE; |
84 | u16 bmsr = 0; | ||
85 | u16 bmcr = 0; | 48 | u16 bmcr = 0; |
49 | u16 lpagb = 0; | ||
50 | u16 lpa = 0; | ||
86 | 51 | ||
87 | if (!regs) { | 52 | if (fp->status.duplex) { |
88 | printk(KERN_ERR "%s: regs not set up", __FUNCTION__); | ||
89 | return -EINVAL; | ||
90 | } | ||
91 | |||
92 | if (fixed->phy_status.link) | ||
93 | bmsr |= BMSR_LSTATUS; | ||
94 | |||
95 | if (fixed->phy_status.duplex) { | ||
96 | bmcr |= BMCR_FULLDPLX; | 53 | bmcr |= BMCR_FULLDPLX; |
97 | 54 | ||
98 | switch (fixed->phy_status.speed) { | 55 | switch (fp->status.speed) { |
56 | case 1000: | ||
57 | bmsr |= BMSR_ESTATEN; | ||
58 | bmcr |= BMCR_SPEED1000; | ||
59 | lpagb |= LPA_1000FULL; | ||
60 | break; | ||
99 | case 100: | 61 | case 100: |
100 | bmsr |= BMSR_100FULL; | 62 | bmsr |= BMSR_100FULL; |
101 | bmcr |= BMCR_SPEED100; | 63 | bmcr |= BMCR_SPEED100; |
64 | lpa |= LPA_100FULL; | ||
102 | break; | 65 | break; |
103 | |||
104 | case 10: | 66 | case 10: |
105 | bmsr |= BMSR_10FULL; | 67 | bmsr |= BMSR_10FULL; |
68 | lpa |= LPA_10FULL; | ||
106 | break; | 69 | break; |
70 | default: | ||
71 | printk(KERN_WARNING "fixed phy: unknown speed\n"); | ||
72 | return -EINVAL; | ||
107 | } | 73 | } |
108 | } else { | 74 | } else { |
109 | switch (fixed->phy_status.speed) { | 75 | switch (fp->status.speed) { |
76 | case 1000: | ||
77 | bmsr |= BMSR_ESTATEN; | ||
78 | bmcr |= BMCR_SPEED1000; | ||
79 | lpagb |= LPA_1000HALF; | ||
80 | break; | ||
110 | case 100: | 81 | case 100: |
111 | bmsr |= BMSR_100HALF; | 82 | bmsr |= BMSR_100HALF; |
112 | bmcr |= BMCR_SPEED100; | 83 | bmcr |= BMCR_SPEED100; |
84 | lpa |= LPA_100HALF; | ||
113 | break; | 85 | break; |
114 | |||
115 | case 10: | 86 | case 10: |
116 | bmsr |= BMSR_100HALF; | 87 | bmsr |= BMSR_10HALF; |
88 | lpa |= LPA_10HALF; | ||
117 | break; | 89 | break; |
90 | default: | ||
91 | printk(KERN_WARNING "fixed phy: unknown speed\n"); | ||
92 | return -EINVAL; | ||
118 | } | 93 | } |
119 | } | 94 | } |
120 | 95 | ||
121 | regs[MII_BMCR] = bmcr; | 96 | if (fp->status.link) |
122 | regs[MII_BMSR] = bmsr | 0x800; /*we are always capable of 10 hdx */ | 97 | bmsr |= BMSR_LSTATUS | BMSR_ANEGCOMPLETE; |
98 | |||
99 | if (fp->status.pause) | ||
100 | lpa |= LPA_PAUSE_CAP; | ||
101 | |||
102 | if (fp->status.asym_pause) | ||
103 | lpa |= LPA_PAUSE_ASYM; | ||
104 | |||
105 | fp->regs[MII_PHYSID1] = fp->id >> 16; | ||
106 | fp->regs[MII_PHYSID2] = fp->id; | ||
107 | |||
108 | fp->regs[MII_BMSR] = bmsr; | ||
109 | fp->regs[MII_BMCR] = bmcr; | ||
110 | fp->regs[MII_LPA] = lpa; | ||
111 | fp->regs[MII_STAT1000] = lpagb; | ||
123 | 112 | ||
124 | return 0; | 113 | return 0; |
125 | } | 114 | } |
126 | 115 | ||
127 | static int fixed_mii_read(struct mii_bus *bus, int phy_id, int location) | 116 | static int fixed_mdio_read(struct mii_bus *bus, int phy_id, int reg_num) |
128 | { | 117 | { |
129 | struct fixed_info *fixed = bus->priv; | 118 | struct fixed_mdio_bus *fmb = container_of(bus, struct fixed_mdio_bus, |
130 | 119 | mii_bus); | |
131 | /* if user has registered link update callback, use it */ | 120 | struct fixed_phy *fp; |
132 | if (fixed->phydev) | 121 | |
133 | if (fixed->phydev->attached_dev) { | 122 | if (reg_num >= MII_REGS_NUM) |
134 | if (fixed->link_update) { | 123 | return -1; |
135 | fixed->link_update(fixed->phydev->attached_dev, | 124 | |
136 | &fixed->phy_status); | 125 | list_for_each_entry(fp, &fmb->phys, node) { |
137 | fixed_mdio_update_regs(fixed); | 126 | if (fp->id == phy_id) { |
127 | /* Issue callback if user registered it. */ | ||
128 | if (fp->link_update) { | ||
129 | fp->link_update(fp->phydev->attached_dev, | ||
130 | &fp->status); | ||
131 | fixed_phy_update_regs(fp); | ||
138 | } | 132 | } |
133 | return fp->regs[reg_num]; | ||
139 | } | 134 | } |
135 | } | ||
140 | 136 | ||
141 | if ((unsigned int)location >= fixed->regs_num) | 137 | return 0xFFFF; |
142 | return -1; | ||
143 | return fixed->regs[location]; | ||
144 | } | 138 | } |
145 | 139 | ||
146 | static int fixed_mii_write(struct mii_bus *bus, int phy_id, int location, | 140 | static int fixed_mdio_write(struct mii_bus *bus, int phy_id, int reg_num, |
147 | u16 val) | 141 | u16 val) |
148 | { | 142 | { |
149 | /* do nothing for now */ | ||
150 | return 0; | 143 | return 0; |
151 | } | 144 | } |
152 | 145 | ||
153 | static int fixed_mii_reset(struct mii_bus *bus) | 146 | /* |
147 | * If something weird is required to be done with link/speed, | ||
148 | * network driver is able to assign a function to implement this. | ||
149 | * May be useful for PHY's that need to be software-driven. | ||
150 | */ | ||
151 | int fixed_phy_set_link_update(struct phy_device *phydev, | ||
152 | int (*link_update)(struct net_device *, | ||
153 | struct fixed_phy_status *)) | ||
154 | { | 154 | { |
155 | /*nothing here - no way/need to reset it */ | 155 | struct fixed_mdio_bus *fmb = &platform_fmb; |
156 | return 0; | 156 | struct fixed_phy *fp; |
157 | } | ||
158 | #endif | ||
159 | 157 | ||
160 | static int fixed_config_aneg(struct phy_device *phydev) | 158 | if (!link_update || !phydev || !phydev->bus) |
161 | { | 159 | return -EINVAL; |
162 | /* :TODO:03/13/2006 09:45:37 PM:: | ||
163 | The full autoneg funcionality can be emulated, | ||
164 | but no need to have anything here for now | ||
165 | */ | ||
166 | return 0; | ||
167 | } | ||
168 | 160 | ||
169 | /*----------------------------------------------------------------------------- | 161 | list_for_each_entry(fp, &fmb->phys, node) { |
170 | * the manual bind will do the magic - with phy_id_mask == 0 | 162 | if (fp->id == phydev->phy_id) { |
171 | * match will never return true... | 163 | fp->link_update = link_update; |
172 | *-----------------------------------------------------------------------------*/ | 164 | fp->phydev = phydev; |
173 | static struct phy_driver fixed_mdio_driver = { | 165 | return 0; |
174 | .name = "Fixed PHY", | 166 | } |
175 | #ifdef CONFIG_FIXED_MII_1000_FDX | 167 | } |
176 | .features = PHY_GBIT_FEATURES, | ||
177 | #else | ||
178 | .features = PHY_BASIC_FEATURES, | ||
179 | #endif | ||
180 | .config_aneg = fixed_config_aneg, | ||
181 | .read_status = genphy_read_status, | ||
182 | .driver = { .owner = THIS_MODULE, }, | ||
183 | }; | ||
184 | 168 | ||
185 | static void fixed_mdio_release(struct device *dev) | 169 | return -ENOENT; |
186 | { | ||
187 | struct phy_device *phydev = container_of(dev, struct phy_device, dev); | ||
188 | struct mii_bus *bus = phydev->bus; | ||
189 | struct fixed_info *fixed = bus->priv; | ||
190 | |||
191 | kfree(phydev); | ||
192 | kfree(bus->dev); | ||
193 | kfree(bus); | ||
194 | kfree(fixed->regs); | ||
195 | kfree(fixed); | ||
196 | } | 170 | } |
171 | EXPORT_SYMBOL_GPL(fixed_phy_set_link_update); | ||
197 | 172 | ||
198 | /*----------------------------------------------------------------------------- | 173 | int fixed_phy_add(unsigned int irq, int phy_id, |
199 | * This func is used to create all the necessary stuff, bind | 174 | struct fixed_phy_status *status) |
200 | * the fixed phy driver and register all it on the mdio_bus_type. | ||
201 | * speed is either 10 or 100 or 1000, duplex is boolean. | ||
202 | * number is used to create multiple fixed PHYs, so that several devices can | ||
203 | * utilize them simultaneously. | ||
204 | * | ||
205 | * The device on mdio bus will look like [bus_id]:[phy_id], | ||
206 | * bus_id = number | ||
207 | * phy_id = speed+duplex. | ||
208 | *-----------------------------------------------------------------------------*/ | ||
209 | #if defined(CONFIG_FIXED_MII_100_FDX) || defined(CONFIG_FIXED_MII_10_FDX) || defined(CONFIG_FIXED_MII_1000_FDX) | ||
210 | struct fixed_info *fixed_mdio_register_device( | ||
211 | int bus_id, int speed, int duplex, u8 phy_id) | ||
212 | { | 175 | { |
213 | struct mii_bus *new_bus; | 176 | int ret; |
214 | struct fixed_info *fixed; | 177 | struct fixed_mdio_bus *fmb = &platform_fmb; |
215 | struct phy_device *phydev; | 178 | struct fixed_phy *fp; |
216 | int err; | ||
217 | 179 | ||
218 | struct device *dev = kzalloc(sizeof(struct device), GFP_KERNEL); | 180 | fp = kzalloc(sizeof(*fp), GFP_KERNEL); |
181 | if (!fp) | ||
182 | return -ENOMEM; | ||
219 | 183 | ||
220 | if (dev == NULL) | 184 | memset(fp->regs, 0xFF, sizeof(fp->regs[0]) * MII_REGS_NUM); |
221 | goto err_dev_alloc; | ||
222 | 185 | ||
223 | new_bus = kzalloc(sizeof(struct mii_bus), GFP_KERNEL); | 186 | fmb->irqs[phy_id] = irq; |
224 | 187 | ||
225 | if (new_bus == NULL) | 188 | fp->id = phy_id; |
226 | goto err_bus_alloc; | 189 | fp->status = *status; |
227 | 190 | ||
228 | fixed = kzalloc(sizeof(struct fixed_info), GFP_KERNEL); | 191 | ret = fixed_phy_update_regs(fp); |
192 | if (ret) | ||
193 | goto err_regs; | ||
229 | 194 | ||
230 | if (fixed == NULL) | 195 | list_add_tail(&fp->node, &fmb->phys); |
231 | goto err_fixed_alloc; | ||
232 | 196 | ||
233 | fixed->regs = kzalloc(MII_REGS_NUM * sizeof(int), GFP_KERNEL); | 197 | return 0; |
234 | if (NULL == fixed->regs) | ||
235 | goto err_fixed_regs_alloc; | ||
236 | 198 | ||
237 | fixed->regs_num = MII_REGS_NUM; | 199 | err_regs: |
238 | fixed->phy_status.speed = speed; | 200 | kfree(fp); |
239 | fixed->phy_status.duplex = duplex; | 201 | return ret; |
240 | fixed->phy_status.link = 1; | 202 | } |
203 | EXPORT_SYMBOL_GPL(fixed_phy_add); | ||
241 | 204 | ||
242 | new_bus->name = "Fixed MII Bus"; | 205 | static int __init fixed_mdio_bus_init(void) |
243 | new_bus->read = &fixed_mii_read; | 206 | { |
244 | new_bus->write = &fixed_mii_write; | 207 | struct fixed_mdio_bus *fmb = &platform_fmb; |
245 | new_bus->reset = &fixed_mii_reset; | 208 | int ret; |
246 | /*set up workspace */ | ||
247 | fixed_mdio_update_regs(fixed); | ||
248 | new_bus->priv = fixed; | ||
249 | 209 | ||
250 | new_bus->dev = dev; | 210 | pdev = platform_device_register_simple("Fixed MDIO bus", 0, NULL, 0); |
251 | dev_set_drvdata(dev, new_bus); | 211 | if (!pdev) { |
212 | ret = -ENOMEM; | ||
213 | goto err_pdev; | ||
214 | } | ||
252 | 215 | ||
253 | /* create phy_device and register it on the mdio bus */ | 216 | fmb->mii_bus.id = 0; |
254 | phydev = phy_device_create(new_bus, 0, 0); | 217 | fmb->mii_bus.name = "Fixed MDIO Bus"; |
255 | if (phydev == NULL) | 218 | fmb->mii_bus.dev = &pdev->dev; |
256 | goto err_phy_dev_create; | 219 | fmb->mii_bus.read = &fixed_mdio_read; |
220 | fmb->mii_bus.write = &fixed_mdio_write; | ||
221 | fmb->mii_bus.irq = fmb->irqs; | ||
257 | 222 | ||
258 | /* | 223 | ret = mdiobus_register(&fmb->mii_bus); |
259 | * Put the phydev pointer into the fixed pack so that bus read/write | 224 | if (ret) |
260 | * code could be able to access for instance attached netdev. Well it | 225 | goto err_mdiobus_reg; |
261 | * doesn't have to do so, only in case of utilizing user-specified | ||
262 | * link-update... | ||
263 | */ | ||
264 | 226 | ||
265 | fixed->phydev = phydev; | 227 | return 0; |
266 | phydev->speed = speed; | ||
267 | phydev->duplex = duplex; | ||
268 | 228 | ||
269 | phydev->irq = PHY_IGNORE_INTERRUPT; | 229 | err_mdiobus_reg: |
270 | phydev->dev.bus = &mdio_bus_type; | 230 | platform_device_unregister(pdev); |
231 | err_pdev: | ||
232 | return ret; | ||
233 | } | ||
234 | module_init(fixed_mdio_bus_init); | ||
271 | 235 | ||
272 | snprintf(phydev->dev.bus_id, BUS_ID_SIZE, | 236 | static void __exit fixed_mdio_bus_exit(void) |
273 | PHY_ID_FMT, bus_id, phy_id); | 237 | { |
238 | struct fixed_mdio_bus *fmb = &platform_fmb; | ||
239 | struct fixed_phy *fp; | ||
274 | 240 | ||
275 | phydev->bus = new_bus; | 241 | mdiobus_unregister(&fmb->mii_bus); |
242 | platform_device_unregister(pdev); | ||
276 | 243 | ||
277 | phydev->dev.driver = &fixed_mdio_driver.driver; | 244 | list_for_each_entry(fp, &fmb->phys, node) { |
278 | phydev->dev.release = fixed_mdio_release; | 245 | list_del(&fp->node); |
279 | err = phydev->dev.driver->probe(&phydev->dev); | 246 | kfree(fp); |
280 | if (err < 0) { | ||
281 | printk(KERN_ERR "Phy %s: problems with fixed driver\n", | ||
282 | phydev->dev.bus_id); | ||
283 | goto err_out; | ||
284 | } | ||
285 | err = device_register(&phydev->dev); | ||
286 | if (err) { | ||
287 | printk(KERN_ERR "Phy %s failed to register\n", | ||
288 | phydev->dev.bus_id); | ||
289 | goto err_out; | ||
290 | } | 247 | } |
291 | //phydev->state = PHY_RUNNING; /* make phy go up quick, but in 10Mbit/HDX | ||
292 | return fixed; | ||
293 | |||
294 | err_out: | ||
295 | kfree(phydev); | ||
296 | err_phy_dev_create: | ||
297 | kfree(fixed->regs); | ||
298 | err_fixed_regs_alloc: | ||
299 | kfree(fixed); | ||
300 | err_fixed_alloc: | ||
301 | kfree(new_bus); | ||
302 | err_bus_alloc: | ||
303 | kfree(dev); | ||
304 | err_dev_alloc: | ||
305 | |||
306 | return NULL; | ||
307 | |||
308 | } | 248 | } |
309 | #endif | 249 | module_exit(fixed_mdio_bus_exit); |
310 | 250 | ||
311 | MODULE_DESCRIPTION("Fixed PHY device & driver for PAL"); | 251 | MODULE_DESCRIPTION("Fixed MDIO bus (MDIO bus emulation with fixed PHYs)"); |
312 | MODULE_AUTHOR("Vitaly Bordug"); | 252 | MODULE_AUTHOR("Vitaly Bordug"); |
313 | MODULE_LICENSE("GPL"); | 253 | MODULE_LICENSE("GPL"); |
314 | |||
315 | static int __init fixed_init(void) | ||
316 | { | ||
317 | int cnt = 0; | ||
318 | int i; | ||
319 | /* register on the bus... Not expected to be matched | ||
320 | * with anything there... | ||
321 | * | ||
322 | */ | ||
323 | phy_driver_register(&fixed_mdio_driver); | ||
324 | |||
325 | /* We will create several mdio devices here, and will bound the upper | ||
326 | * driver to them. | ||
327 | * | ||
328 | * Then the external software can lookup the phy bus by searching | ||
329 | * for 0:101, to be connected to the virtual 100M Fdx phy. | ||
330 | * | ||
331 | * In case several virtual PHYs required, the bus_id will be in form | ||
332 | * [num]:[duplex]+[speed], which make it able even to define | ||
333 | * driver-specific link control callback, if for instance PHY is | ||
334 | * completely SW-driven. | ||
335 | */ | ||
336 | for (i=1; i <= CONFIG_FIXED_MII_AMNT; i++) { | ||
337 | #ifdef CONFIG_FIXED_MII_1000_FDX | ||
338 | fixed_phy_ptrs[cnt++] = fixed_mdio_register_device(0, 1000, 1, i); | ||
339 | #endif | ||
340 | #ifdef CONFIG_FIXED_MII_100_FDX | ||
341 | fixed_phy_ptrs[cnt++] = fixed_mdio_register_device(1, 100, 1, i); | ||
342 | #endif | ||
343 | #ifdef CONFIG_FIXED_MII_10_FDX | ||
344 | fixed_phy_ptrs[cnt++] = fixed_mdio_register_device(2, 10, 1, i); | ||
345 | #endif | ||
346 | } | ||
347 | |||
348 | return 0; | ||
349 | } | ||
350 | |||
351 | static void __exit fixed_exit(void) | ||
352 | { | ||
353 | int i; | ||
354 | |||
355 | phy_driver_unregister(&fixed_mdio_driver); | ||
356 | for (i=0; i < MAX_PHY_AMNT; i++) | ||
357 | if ( fixed_phy_ptrs[i] ) | ||
358 | device_unregister(&fixed_phy_ptrs[i]->phydev->dev); | ||
359 | } | ||
360 | |||
361 | module_init(fixed_init); | ||
362 | module_exit(fixed_exit); | ||
diff --git a/drivers/rapidio/rio.c b/drivers/rapidio/rio.c index f644807da2f9..80c5f1ba2e49 100644 --- a/drivers/rapidio/rio.c +++ b/drivers/rapidio/rio.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
24 | #include <linux/spinlock.h> | 24 | #include <linux/spinlock.h> |
25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
26 | #include <linux/interrupt.h> | ||
26 | 27 | ||
27 | #include "rio.h" | 28 | #include "rio.h" |
28 | 29 | ||
@@ -476,8 +477,8 @@ int rio_init_mports(void) | |||
476 | port->iores.end - port->iores.start, | 477 | port->iores.end - port->iores.start, |
477 | port->name)) { | 478 | port->name)) { |
478 | printk(KERN_ERR | 479 | printk(KERN_ERR |
479 | "RIO: Error requesting master port region %8.8lx-%8.8lx\n", | 480 | "RIO: Error requesting master port region 0x%016llx-0x%016llx\n", |
480 | port->iores.start, port->iores.end - 1); | 481 | (u64)port->iores.start, (u64)port->iores.end - 1); |
481 | rc = -ENOMEM; | 482 | rc = -ENOMEM; |
482 | goto out; | 483 | goto out; |
483 | } | 484 | } |
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index d7e1996e2fec..d962b74e3114 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -1284,4 +1284,14 @@ config SERIAL_OF_PLATFORM | |||
1284 | Currently, only 8250 compatible ports are supported, but | 1284 | Currently, only 8250 compatible ports are supported, but |
1285 | others can easily be added. | 1285 | others can easily be added. |
1286 | 1286 | ||
1287 | config SERIAL_QE | ||
1288 | tristate "Freescale QUICC Engine serial port support" | ||
1289 | depends on QUICC_ENGINE | ||
1290 | select SERIAL_CORE | ||
1291 | select FW_LOADER | ||
1292 | default n | ||
1293 | help | ||
1294 | This driver supports the QE serial ports on Freescale embedded | ||
1295 | PowerPC that contain a QUICC Engine. | ||
1296 | |||
1287 | endmenu | 1297 | endmenu |
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index af6377d480d7..7eb45534778e 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile | |||
@@ -64,3 +64,4 @@ obj-$(CONFIG_SERIAL_UARTLITE) += uartlite.o | |||
64 | obj-$(CONFIG_SERIAL_NETX) += netx-serial.o | 64 | obj-$(CONFIG_SERIAL_NETX) += netx-serial.o |
65 | obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o | 65 | obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o |
66 | obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o | 66 | obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o |
67 | obj-$(CONFIG_SERIAL_QE) += ucc_uart.o | ||
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm2.c b/drivers/serial/cpm_uart/cpm_uart_cpm2.c index def01582de5c..d9af06a791ba 100644 --- a/drivers/serial/cpm_uart/cpm_uart_cpm2.c +++ b/drivers/serial/cpm_uart/cpm_uart_cpm2.c | |||
@@ -165,9 +165,9 @@ void scc2_lineif(struct uart_cpm_port *pinfo) | |||
165 | * really has to get out of the driver so boards can | 165 | * really has to get out of the driver so boards can |
166 | * be supported in a sane fashion. | 166 | * be supported in a sane fashion. |
167 | */ | 167 | */ |
168 | volatile cpmux_t *cpmux = cpm2_map(im_cpmux); | ||
168 | #ifndef CONFIG_STX_GP3 | 169 | #ifndef CONFIG_STX_GP3 |
169 | volatile iop_cpm2_t *io = cpm2_map(im_ioport); | 170 | volatile iop_cpm2_t *io = cpm2_map(im_ioport); |
170 | volatile cpmux_t *cpmux = cpm2_map(im_cpmux); | ||
171 | 171 | ||
172 | io->iop_pparb |= 0x008b0000; | 172 | io->iop_pparb |= 0x008b0000; |
173 | io->iop_pdirb |= 0x00880000; | 173 | io->iop_pdirb |= 0x00880000; |
diff --git a/drivers/serial/ucc_uart.c b/drivers/serial/ucc_uart.c new file mode 100644 index 000000000000..e0994f061001 --- /dev/null +++ b/drivers/serial/ucc_uart.c | |||
@@ -0,0 +1,1514 @@ | |||
1 | /* | ||
2 | * Freescale QUICC Engine UART device driver | ||
3 | * | ||
4 | * Author: Timur Tabi <timur@freescale.com> | ||
5 | * | ||
6 | * Copyright 2007 Freescale Semiconductor, Inc. This file is licensed under | ||
7 | * the terms of the GNU General Public License version 2. This program | ||
8 | * is licensed "as is" without any warranty of any kind, whether express | ||
9 | * or implied. | ||
10 | * | ||
11 | * This driver adds support for UART devices via Freescale's QUICC Engine | ||
12 | * found on some Freescale SOCs. | ||
13 | * | ||
14 | * If Soft-UART support is needed but not already present, then this driver | ||
15 | * will request and upload the "Soft-UART" microcode upon probe. The | ||
16 | * filename of the microcode should be fsl_qe_ucode_uart_X_YZ.bin, where "X" | ||
17 | * is the name of the SOC (e.g. 8323), and YZ is the revision of the SOC, | ||
18 | * (e.g. "11" for 1.1). | ||
19 | */ | ||
20 | |||
21 | #include <linux/module.h> | ||
22 | #include <linux/serial.h> | ||
23 | #include <linux/serial_core.h> | ||
24 | #include <linux/io.h> | ||
25 | #include <linux/of_platform.h> | ||
26 | #include <linux/dma-mapping.h> | ||
27 | |||
28 | #include <linux/fs_uart_pd.h> | ||
29 | #include <asm/ucc_slow.h> | ||
30 | |||
31 | #include <linux/firmware.h> | ||
32 | #include <asm/reg.h> | ||
33 | |||
34 | /* | ||
35 | * The GUMR flag for Soft UART. This would normally be defined in qe.h, | ||
36 | * but Soft-UART is a hack and we want to keep everything related to it in | ||
37 | * this file. | ||
38 | */ | ||
39 | #define UCC_SLOW_GUMR_H_SUART 0x00004000 /* Soft-UART */ | ||
40 | |||
41 | /* | ||
42 | * soft_uart is 1 if we need to use Soft-UART mode | ||
43 | */ | ||
44 | static int soft_uart; | ||
45 | /* | ||
46 | * firmware_loaded is 1 if the firmware has been loaded, 0 otherwise. | ||
47 | */ | ||
48 | static int firmware_loaded; | ||
49 | |||
50 | /* Enable this macro to configure all serial ports in internal loopback | ||
51 | mode */ | ||
52 | /* #define LOOPBACK */ | ||
53 | |||
54 | /* The major and minor device numbers are defined in | ||
55 | * http://www.lanana.org/docs/device-list/devices-2.6+.txt. For the QE | ||
56 | * UART, we have major number 204 and minor numbers 46 - 49, which are the | ||
57 | * same as for the CPM2. This decision was made because no Freescale part | ||
58 | * has both a CPM and a QE. | ||
59 | */ | ||
60 | #define SERIAL_QE_MAJOR 204 | ||
61 | #define SERIAL_QE_MINOR 46 | ||
62 | |||
63 | /* Since we only have minor numbers 46 - 49, there is a hard limit of 4 ports */ | ||
64 | #define UCC_MAX_UART 4 | ||
65 | |||
66 | /* The number of buffer descriptors for receiving characters. */ | ||
67 | #define RX_NUM_FIFO 4 | ||
68 | |||
69 | /* The number of buffer descriptors for transmitting characters. */ | ||
70 | #define TX_NUM_FIFO 4 | ||
71 | |||
72 | /* The maximum size of the character buffer for a single RX BD. */ | ||
73 | #define RX_BUF_SIZE 32 | ||
74 | |||
75 | /* The maximum size of the character buffer for a single TX BD. */ | ||
76 | #define TX_BUF_SIZE 32 | ||
77 | |||
78 | /* | ||
79 | * The number of jiffies to wait after receiving a close command before the | ||
80 | * device is actually closed. This allows the last few characters to be | ||
81 | * sent over the wire. | ||
82 | */ | ||
83 | #define UCC_WAIT_CLOSING 100 | ||
84 | |||
85 | struct ucc_uart_pram { | ||
86 | struct ucc_slow_pram common; | ||
87 | u8 res1[8]; /* reserved */ | ||
88 | __be16 maxidl; /* Maximum idle chars */ | ||
89 | __be16 idlc; /* temp idle counter */ | ||
90 | __be16 brkcr; /* Break count register */ | ||
91 | __be16 parec; /* receive parity error counter */ | ||
92 | __be16 frmec; /* receive framing error counter */ | ||
93 | __be16 nosec; /* receive noise counter */ | ||
94 | __be16 brkec; /* receive break condition counter */ | ||
95 | __be16 brkln; /* last received break length */ | ||
96 | __be16 uaddr[2]; /* UART address character 1 & 2 */ | ||
97 | __be16 rtemp; /* Temp storage */ | ||
98 | __be16 toseq; /* Transmit out of sequence char */ | ||
99 | __be16 cchars[8]; /* control characters 1-8 */ | ||
100 | __be16 rccm; /* receive control character mask */ | ||
101 | __be16 rccr; /* receive control character register */ | ||
102 | __be16 rlbc; /* receive last break character */ | ||
103 | __be16 res2; /* reserved */ | ||
104 | __be32 res3; /* reserved, should be cleared */ | ||
105 | u8 res4; /* reserved, should be cleared */ | ||
106 | u8 res5[3]; /* reserved, should be cleared */ | ||
107 | __be32 res6; /* reserved, should be cleared */ | ||
108 | __be32 res7; /* reserved, should be cleared */ | ||
109 | __be32 res8; /* reserved, should be cleared */ | ||
110 | __be32 res9; /* reserved, should be cleared */ | ||
111 | __be32 res10; /* reserved, should be cleared */ | ||
112 | __be32 res11; /* reserved, should be cleared */ | ||
113 | __be32 res12; /* reserved, should be cleared */ | ||
114 | __be32 res13; /* reserved, should be cleared */ | ||
115 | /* The rest is for Soft-UART only */ | ||
116 | __be16 supsmr; /* 0x90, Shadow UPSMR */ | ||
117 | __be16 res92; /* 0x92, reserved, initialize to 0 */ | ||
118 | __be32 rx_state; /* 0x94, RX state, initialize to 0 */ | ||
119 | __be32 rx_cnt; /* 0x98, RX count, initialize to 0 */ | ||
120 | u8 rx_length; /* 0x9C, Char length, set to 1+CL+PEN+1+SL */ | ||
121 | u8 rx_bitmark; /* 0x9D, reserved, initialize to 0 */ | ||
122 | u8 rx_temp_dlst_qe; /* 0x9E, reserved, initialize to 0 */ | ||
123 | u8 res14[0xBC - 0x9F]; /* reserved */ | ||
124 | __be32 dump_ptr; /* 0xBC, Dump pointer */ | ||
125 | __be32 rx_frame_rem; /* 0xC0, reserved, initialize to 0 */ | ||
126 | u8 rx_frame_rem_size; /* 0xC4, reserved, initialize to 0 */ | ||
127 | u8 tx_mode; /* 0xC5, mode, 0=AHDLC, 1=UART */ | ||
128 | __be16 tx_state; /* 0xC6, TX state */ | ||
129 | u8 res15[0xD0 - 0xC8]; /* reserved */ | ||
130 | __be32 resD0; /* 0xD0, reserved, initialize to 0 */ | ||
131 | u8 resD4; /* 0xD4, reserved, initialize to 0 */ | ||
132 | __be16 resD5; /* 0xD5, reserved, initialize to 0 */ | ||
133 | } __attribute__ ((packed)); | ||
134 | |||
135 | /* SUPSMR definitions, for Soft-UART only */ | ||
136 | #define UCC_UART_SUPSMR_SL 0x8000 | ||
137 | #define UCC_UART_SUPSMR_RPM_MASK 0x6000 | ||
138 | #define UCC_UART_SUPSMR_RPM_ODD 0x0000 | ||
139 | #define UCC_UART_SUPSMR_RPM_LOW 0x2000 | ||
140 | #define UCC_UART_SUPSMR_RPM_EVEN 0x4000 | ||
141 | #define UCC_UART_SUPSMR_RPM_HIGH 0x6000 | ||
142 | #define UCC_UART_SUPSMR_PEN 0x1000 | ||
143 | #define UCC_UART_SUPSMR_TPM_MASK 0x0C00 | ||
144 | #define UCC_UART_SUPSMR_TPM_ODD 0x0000 | ||
145 | #define UCC_UART_SUPSMR_TPM_LOW 0x0400 | ||
146 | #define UCC_UART_SUPSMR_TPM_EVEN 0x0800 | ||
147 | #define UCC_UART_SUPSMR_TPM_HIGH 0x0C00 | ||
148 | #define UCC_UART_SUPSMR_FRZ 0x0100 | ||
149 | #define UCC_UART_SUPSMR_UM_MASK 0x00c0 | ||
150 | #define UCC_UART_SUPSMR_UM_NORMAL 0x0000 | ||
151 | #define UCC_UART_SUPSMR_UM_MAN_MULTI 0x0040 | ||
152 | #define UCC_UART_SUPSMR_UM_AUTO_MULTI 0x00c0 | ||
153 | #define UCC_UART_SUPSMR_CL_MASK 0x0030 | ||
154 | #define UCC_UART_SUPSMR_CL_8 0x0030 | ||
155 | #define UCC_UART_SUPSMR_CL_7 0x0020 | ||
156 | #define UCC_UART_SUPSMR_CL_6 0x0010 | ||
157 | #define UCC_UART_SUPSMR_CL_5 0x0000 | ||
158 | |||
159 | #define UCC_UART_TX_STATE_AHDLC 0x00 | ||
160 | #define UCC_UART_TX_STATE_UART 0x01 | ||
161 | #define UCC_UART_TX_STATE_X1 0x00 | ||
162 | #define UCC_UART_TX_STATE_X16 0x80 | ||
163 | |||
164 | #define UCC_UART_PRAM_ALIGNMENT 0x100 | ||
165 | |||
166 | #define UCC_UART_SIZE_OF_BD UCC_SLOW_SIZE_OF_BD | ||
167 | #define NUM_CONTROL_CHARS 8 | ||
168 | |||
169 | /* Private per-port data structure */ | ||
170 | struct uart_qe_port { | ||
171 | struct uart_port port; | ||
172 | struct ucc_slow __iomem *uccp; | ||
173 | struct ucc_uart_pram __iomem *uccup; | ||
174 | struct ucc_slow_info us_info; | ||
175 | struct ucc_slow_private *us_private; | ||
176 | struct device_node *np; | ||
177 | unsigned int ucc_num; /* First ucc is 0, not 1 */ | ||
178 | |||
179 | u16 rx_nrfifos; | ||
180 | u16 rx_fifosize; | ||
181 | u16 tx_nrfifos; | ||
182 | u16 tx_fifosize; | ||
183 | int wait_closing; | ||
184 | u32 flags; | ||
185 | struct qe_bd *rx_bd_base; | ||
186 | struct qe_bd *rx_cur; | ||
187 | struct qe_bd *tx_bd_base; | ||
188 | struct qe_bd *tx_cur; | ||
189 | unsigned char *tx_buf; | ||
190 | unsigned char *rx_buf; | ||
191 | void *bd_virt; /* virtual address of the BD buffers */ | ||
192 | dma_addr_t bd_dma_addr; /* bus address of the BD buffers */ | ||
193 | unsigned int bd_size; /* size of BD buffer space */ | ||
194 | }; | ||
195 | |||
196 | static struct uart_driver ucc_uart_driver = { | ||
197 | .owner = THIS_MODULE, | ||
198 | .driver_name = "serial", | ||
199 | .dev_name = "ttyQE", | ||
200 | .major = SERIAL_QE_MAJOR, | ||
201 | .minor = SERIAL_QE_MINOR, | ||
202 | .nr = UCC_MAX_UART, | ||
203 | }; | ||
204 | |||
205 | /* | ||
206 | * Virtual to physical address translation. | ||
207 | * | ||
208 | * Given the virtual address for a character buffer, this function returns | ||
209 | * the physical (DMA) equivalent. | ||
210 | */ | ||
211 | static inline dma_addr_t cpu2qe_addr(void *addr, struct uart_qe_port *qe_port) | ||
212 | { | ||
213 | if (likely((addr >= qe_port->bd_virt)) && | ||
214 | (addr < (qe_port->bd_virt + qe_port->bd_size))) | ||
215 | return qe_port->bd_dma_addr + (addr - qe_port->bd_virt); | ||
216 | |||
217 | /* something nasty happened */ | ||
218 | printk(KERN_ERR "%s: addr=%p\n", __FUNCTION__, addr); | ||
219 | BUG(); | ||
220 | return 0; | ||
221 | } | ||
222 | |||
223 | /* | ||
224 | * Physical to virtual address translation. | ||
225 | * | ||
226 | * Given the physical (DMA) address for a character buffer, this function | ||
227 | * returns the virtual equivalent. | ||
228 | */ | ||
229 | static inline void *qe2cpu_addr(dma_addr_t addr, struct uart_qe_port *qe_port) | ||
230 | { | ||
231 | /* sanity check */ | ||
232 | if (likely((addr >= qe_port->bd_dma_addr) && | ||
233 | (addr < (qe_port->bd_dma_addr + qe_port->bd_size)))) | ||
234 | return qe_port->bd_virt + (addr - qe_port->bd_dma_addr); | ||
235 | |||
236 | /* something nasty happened */ | ||
237 | printk(KERN_ERR "%s: addr=%x\n", __FUNCTION__, addr); | ||
238 | BUG(); | ||
239 | return NULL; | ||
240 | } | ||
241 | |||
242 | /* | ||
243 | * Return 1 if the QE is done transmitting all buffers for this port | ||
244 | * | ||
245 | * This function scans each BD in sequence. If we find a BD that is not | ||
246 | * ready (READY=1), then we return 0 indicating that the QE is still sending | ||
247 | * data. If we reach the last BD (WRAP=1), then we know we've scanned | ||
248 | * the entire list, and all BDs are done. | ||
249 | */ | ||
250 | static unsigned int qe_uart_tx_empty(struct uart_port *port) | ||
251 | { | ||
252 | struct uart_qe_port *qe_port = | ||
253 | container_of(port, struct uart_qe_port, port); | ||
254 | struct qe_bd *bdp = qe_port->tx_bd_base; | ||
255 | |||
256 | while (1) { | ||
257 | if (in_be16(&bdp->status) & BD_SC_READY) | ||
258 | /* This BD is not done, so return "not done" */ | ||
259 | return 0; | ||
260 | |||
261 | if (in_be16(&bdp->status) & BD_SC_WRAP) | ||
262 | /* | ||
263 | * This BD is done and it's the last one, so return | ||
264 | * "done" | ||
265 | */ | ||
266 | return 1; | ||
267 | |||
268 | bdp++; | ||
269 | }; | ||
270 | } | ||
271 | |||
272 | /* | ||
273 | * Set the modem control lines | ||
274 | * | ||
275 | * Although the QE can control the modem control lines (e.g. CTS), we | ||
276 | * don't need that support. This function must exist, however, otherwise | ||
277 | * the kernel will panic. | ||
278 | */ | ||
279 | void qe_uart_set_mctrl(struct uart_port *port, unsigned int mctrl) | ||
280 | { | ||
281 | } | ||
282 | |||
283 | /* | ||
284 | * Get the current modem control line status | ||
285 | * | ||
286 | * Although the QE can control the modem control lines (e.g. CTS), this | ||
287 | * driver currently doesn't support that, so we always return Carrier | ||
288 | * Detect, Data Set Ready, and Clear To Send. | ||
289 | */ | ||
290 | static unsigned int qe_uart_get_mctrl(struct uart_port *port) | ||
291 | { | ||
292 | return TIOCM_CAR | TIOCM_DSR | TIOCM_CTS; | ||
293 | } | ||
294 | |||
295 | /* | ||
296 | * Disable the transmit interrupt. | ||
297 | * | ||
298 | * Although this function is called "stop_tx", it does not actually stop | ||
299 | * transmission of data. Instead, it tells the QE to not generate an | ||
300 | * interrupt when the UCC is finished sending characters. | ||
301 | */ | ||
302 | static void qe_uart_stop_tx(struct uart_port *port) | ||
303 | { | ||
304 | struct uart_qe_port *qe_port = | ||
305 | container_of(port, struct uart_qe_port, port); | ||
306 | |||
307 | clrbits16(&qe_port->uccp->uccm, UCC_UART_UCCE_TX); | ||
308 | } | ||
309 | |||
310 | /* | ||
311 | * Transmit as many characters to the HW as possible. | ||
312 | * | ||
313 | * This function will attempt to stuff of all the characters from the | ||
314 | * kernel's transmit buffer into TX BDs. | ||
315 | * | ||
316 | * A return value of non-zero indicates that it sucessfully stuffed all | ||
317 | * characters from the kernel buffer. | ||
318 | * | ||
319 | * A return value of zero indicates that there are still characters in the | ||
320 | * kernel's buffer that have not been transmitted, but there are no more BDs | ||
321 | * available. This function should be called again after a BD has been made | ||
322 | * available. | ||
323 | */ | ||
324 | static int qe_uart_tx_pump(struct uart_qe_port *qe_port) | ||
325 | { | ||
326 | struct qe_bd *bdp; | ||
327 | unsigned char *p; | ||
328 | unsigned int count; | ||
329 | struct uart_port *port = &qe_port->port; | ||
330 | struct circ_buf *xmit = &port->info->xmit; | ||
331 | |||
332 | bdp = qe_port->rx_cur; | ||
333 | |||
334 | /* Handle xon/xoff */ | ||
335 | if (port->x_char) { | ||
336 | /* Pick next descriptor and fill from buffer */ | ||
337 | bdp = qe_port->tx_cur; | ||
338 | |||
339 | p = qe2cpu_addr(bdp->buf, qe_port); | ||
340 | |||
341 | *p++ = port->x_char; | ||
342 | out_be16(&bdp->length, 1); | ||
343 | setbits16(&bdp->status, BD_SC_READY); | ||
344 | /* Get next BD. */ | ||
345 | if (in_be16(&bdp->status) & BD_SC_WRAP) | ||
346 | bdp = qe_port->tx_bd_base; | ||
347 | else | ||
348 | bdp++; | ||
349 | qe_port->tx_cur = bdp; | ||
350 | |||
351 | port->icount.tx++; | ||
352 | port->x_char = 0; | ||
353 | return 1; | ||
354 | } | ||
355 | |||
356 | if (uart_circ_empty(xmit) || uart_tx_stopped(port)) { | ||
357 | qe_uart_stop_tx(port); | ||
358 | return 0; | ||
359 | } | ||
360 | |||
361 | /* Pick next descriptor and fill from buffer */ | ||
362 | bdp = qe_port->tx_cur; | ||
363 | |||
364 | while (!(in_be16(&bdp->status) & BD_SC_READY) && | ||
365 | (xmit->tail != xmit->head)) { | ||
366 | count = 0; | ||
367 | p = qe2cpu_addr(bdp->buf, qe_port); | ||
368 | while (count < qe_port->tx_fifosize) { | ||
369 | *p++ = xmit->buf[xmit->tail]; | ||
370 | xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); | ||
371 | port->icount.tx++; | ||
372 | count++; | ||
373 | if (xmit->head == xmit->tail) | ||
374 | break; | ||
375 | } | ||
376 | |||
377 | out_be16(&bdp->length, count); | ||
378 | setbits16(&bdp->status, BD_SC_READY); | ||
379 | |||
380 | /* Get next BD. */ | ||
381 | if (in_be16(&bdp->status) & BD_SC_WRAP) | ||
382 | bdp = qe_port->tx_bd_base; | ||
383 | else | ||
384 | bdp++; | ||
385 | } | ||
386 | qe_port->tx_cur = bdp; | ||
387 | |||
388 | if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) | ||
389 | uart_write_wakeup(port); | ||
390 | |||
391 | if (uart_circ_empty(xmit)) { | ||
392 | /* The kernel buffer is empty, so turn off TX interrupts. We | ||
393 | don't need to be told when the QE is finished transmitting | ||
394 | the data. */ | ||
395 | qe_uart_stop_tx(port); | ||
396 | return 0; | ||
397 | } | ||
398 | |||
399 | return 1; | ||
400 | } | ||
401 | |||
402 | /* | ||
403 | * Start transmitting data | ||
404 | * | ||
405 | * This function will start transmitting any available data, if the port | ||
406 | * isn't already transmitting data. | ||
407 | */ | ||
408 | static void qe_uart_start_tx(struct uart_port *port) | ||
409 | { | ||
410 | struct uart_qe_port *qe_port = | ||
411 | container_of(port, struct uart_qe_port, port); | ||
412 | |||
413 | /* If we currently are transmitting, then just return */ | ||
414 | if (in_be16(&qe_port->uccp->uccm) & UCC_UART_UCCE_TX) | ||
415 | return; | ||
416 | |||
417 | /* Otherwise, pump the port and start transmission */ | ||
418 | if (qe_uart_tx_pump(qe_port)) | ||
419 | setbits16(&qe_port->uccp->uccm, UCC_UART_UCCE_TX); | ||
420 | } | ||
421 | |||
422 | /* | ||
423 | * Stop transmitting data | ||
424 | */ | ||
425 | static void qe_uart_stop_rx(struct uart_port *port) | ||
426 | { | ||
427 | struct uart_qe_port *qe_port = | ||
428 | container_of(port, struct uart_qe_port, port); | ||
429 | |||
430 | clrbits16(&qe_port->uccp->uccm, UCC_UART_UCCE_RX); | ||
431 | } | ||
432 | |||
433 | /* | ||
434 | * Enable status change interrupts | ||
435 | * | ||
436 | * We don't support status change interrupts, but we need to define this | ||
437 | * function otherwise the kernel will panic. | ||
438 | */ | ||
439 | static void qe_uart_enable_ms(struct uart_port *port) | ||
440 | { | ||
441 | } | ||
442 | |||
443 | /* Start or stop sending break signal | ||
444 | * | ||
445 | * This function controls the sending of a break signal. If break_state=1, | ||
446 | * then we start sending a break signal. If break_state=0, then we stop | ||
447 | * sending the break signal. | ||
448 | */ | ||
449 | static void qe_uart_break_ctl(struct uart_port *port, int break_state) | ||
450 | { | ||
451 | struct uart_qe_port *qe_port = | ||
452 | container_of(port, struct uart_qe_port, port); | ||
453 | |||
454 | if (break_state) | ||
455 | ucc_slow_stop_tx(qe_port->us_private); | ||
456 | else | ||
457 | ucc_slow_restart_tx(qe_port->us_private); | ||
458 | } | ||
459 | |||
460 | /* ISR helper function for receiving character. | ||
461 | * | ||
462 | * This function is called by the ISR to handling receiving characters | ||
463 | */ | ||
464 | static void qe_uart_int_rx(struct uart_qe_port *qe_port) | ||
465 | { | ||
466 | int i; | ||
467 | unsigned char ch, *cp; | ||
468 | struct uart_port *port = &qe_port->port; | ||
469 | struct tty_struct *tty = port->info->tty; | ||
470 | struct qe_bd *bdp; | ||
471 | u16 status; | ||
472 | unsigned int flg; | ||
473 | |||
474 | /* Just loop through the closed BDs and copy the characters into | ||
475 | * the buffer. | ||
476 | */ | ||
477 | bdp = qe_port->rx_cur; | ||
478 | while (1) { | ||
479 | status = in_be16(&bdp->status); | ||
480 | |||
481 | /* If this one is empty, then we assume we've read them all */ | ||
482 | if (status & BD_SC_EMPTY) | ||
483 | break; | ||
484 | |||
485 | /* get number of characters, and check space in RX buffer */ | ||
486 | i = in_be16(&bdp->length); | ||
487 | |||
488 | /* If we don't have enough room in RX buffer for the entire BD, | ||
489 | * then we try later, which will be the next RX interrupt. | ||
490 | */ | ||
491 | if (tty_buffer_request_room(tty, i) < i) { | ||
492 | dev_dbg(port->dev, "ucc-uart: no room in RX buffer\n"); | ||
493 | return; | ||
494 | } | ||
495 | |||
496 | /* get pointer */ | ||
497 | cp = qe2cpu_addr(bdp->buf, qe_port); | ||
498 | |||
499 | /* loop through the buffer */ | ||
500 | while (i-- > 0) { | ||
501 | ch = *cp++; | ||
502 | port->icount.rx++; | ||
503 | flg = TTY_NORMAL; | ||
504 | |||
505 | if (!i && status & | ||
506 | (BD_SC_BR | BD_SC_FR | BD_SC_PR | BD_SC_OV)) | ||
507 | goto handle_error; | ||
508 | if (uart_handle_sysrq_char(port, ch)) | ||
509 | continue; | ||
510 | |||
511 | error_return: | ||
512 | tty_insert_flip_char(tty, ch, flg); | ||
513 | |||
514 | } | ||
515 | |||
516 | /* This BD is ready to be used again. Clear status. get next */ | ||
517 | clrsetbits_be16(&bdp->status, BD_SC_BR | BD_SC_FR | BD_SC_PR | | ||
518 | BD_SC_OV | BD_SC_ID, BD_SC_EMPTY); | ||
519 | if (in_be16(&bdp->status) & BD_SC_WRAP) | ||
520 | bdp = qe_port->rx_bd_base; | ||
521 | else | ||
522 | bdp++; | ||
523 | |||
524 | } | ||
525 | |||
526 | /* Write back buffer pointer */ | ||
527 | qe_port->rx_cur = bdp; | ||
528 | |||
529 | /* Activate BH processing */ | ||
530 | tty_flip_buffer_push(tty); | ||
531 | |||
532 | return; | ||
533 | |||
534 | /* Error processing */ | ||
535 | |||
536 | handle_error: | ||
537 | /* Statistics */ | ||
538 | if (status & BD_SC_BR) | ||
539 | port->icount.brk++; | ||
540 | if (status & BD_SC_PR) | ||
541 | port->icount.parity++; | ||
542 | if (status & BD_SC_FR) | ||
543 | port->icount.frame++; | ||
544 | if (status & BD_SC_OV) | ||
545 | port->icount.overrun++; | ||
546 | |||
547 | /* Mask out ignored conditions */ | ||
548 | status &= port->read_status_mask; | ||
549 | |||
550 | /* Handle the remaining ones */ | ||
551 | if (status & BD_SC_BR) | ||
552 | flg = TTY_BREAK; | ||
553 | else if (status & BD_SC_PR) | ||
554 | flg = TTY_PARITY; | ||
555 | else if (status & BD_SC_FR) | ||
556 | flg = TTY_FRAME; | ||
557 | |||
558 | /* Overrun does not affect the current character ! */ | ||
559 | if (status & BD_SC_OV) | ||
560 | tty_insert_flip_char(tty, 0, TTY_OVERRUN); | ||
561 | #ifdef SUPPORT_SYSRQ | ||
562 | port->sysrq = 0; | ||
563 | #endif | ||
564 | goto error_return; | ||
565 | } | ||
566 | |||
567 | /* Interrupt handler | ||
568 | * | ||
569 | * This interrupt handler is called after a BD is processed. | ||
570 | */ | ||
571 | static irqreturn_t qe_uart_int(int irq, void *data) | ||
572 | { | ||
573 | struct uart_qe_port *qe_port = (struct uart_qe_port *) data; | ||
574 | struct ucc_slow __iomem *uccp = qe_port->uccp; | ||
575 | u16 events; | ||
576 | |||
577 | /* Clear the interrupts */ | ||
578 | events = in_be16(&uccp->ucce); | ||
579 | out_be16(&uccp->ucce, events); | ||
580 | |||
581 | if (events & UCC_UART_UCCE_BRKE) | ||
582 | uart_handle_break(&qe_port->port); | ||
583 | |||
584 | if (events & UCC_UART_UCCE_RX) | ||
585 | qe_uart_int_rx(qe_port); | ||
586 | |||
587 | if (events & UCC_UART_UCCE_TX) | ||
588 | qe_uart_tx_pump(qe_port); | ||
589 | |||
590 | return events ? IRQ_HANDLED : IRQ_NONE; | ||
591 | } | ||
592 | |||
593 | /* Initialize buffer descriptors | ||
594 | * | ||
595 | * This function initializes all of the RX and TX buffer descriptors. | ||
596 | */ | ||
597 | static void qe_uart_initbd(struct uart_qe_port *qe_port) | ||
598 | { | ||
599 | int i; | ||
600 | void *bd_virt; | ||
601 | struct qe_bd *bdp; | ||
602 | |||
603 | /* Set the physical address of the host memory buffers in the buffer | ||
604 | * descriptors, and the virtual address for us to work with. | ||
605 | */ | ||
606 | bd_virt = qe_port->bd_virt; | ||
607 | bdp = qe_port->rx_bd_base; | ||
608 | qe_port->rx_cur = qe_port->rx_bd_base; | ||
609 | for (i = 0; i < (qe_port->rx_nrfifos - 1); i++) { | ||
610 | out_be16(&bdp->status, BD_SC_EMPTY | BD_SC_INTRPT); | ||
611 | out_be32(&bdp->buf, cpu2qe_addr(bd_virt, qe_port)); | ||
612 | out_be16(&bdp->length, 0); | ||
613 | bd_virt += qe_port->rx_fifosize; | ||
614 | bdp++; | ||
615 | } | ||
616 | |||
617 | /* */ | ||
618 | out_be16(&bdp->status, BD_SC_WRAP | BD_SC_EMPTY | BD_SC_INTRPT); | ||
619 | out_be32(&bdp->buf, cpu2qe_addr(bd_virt, qe_port)); | ||
620 | out_be16(&bdp->length, 0); | ||
621 | |||
622 | /* Set the physical address of the host memory | ||
623 | * buffers in the buffer descriptors, and the | ||
624 | * virtual address for us to work with. | ||
625 | */ | ||
626 | bd_virt = qe_port->bd_virt + | ||
627 | L1_CACHE_ALIGN(qe_port->rx_nrfifos * qe_port->rx_fifosize); | ||
628 | qe_port->tx_cur = qe_port->tx_bd_base; | ||
629 | bdp = qe_port->tx_bd_base; | ||
630 | for (i = 0; i < (qe_port->tx_nrfifos - 1); i++) { | ||
631 | out_be16(&bdp->status, BD_SC_INTRPT); | ||
632 | out_be32(&bdp->buf, cpu2qe_addr(bd_virt, qe_port)); | ||
633 | out_be16(&bdp->length, 0); | ||
634 | bd_virt += qe_port->tx_fifosize; | ||
635 | bdp++; | ||
636 | } | ||
637 | |||
638 | /* Loopback requires the preamble bit to be set on the first TX BD */ | ||
639 | #ifdef LOOPBACK | ||
640 | setbits16(&qe_port->tx_cur->status, BD_SC_P); | ||
641 | #endif | ||
642 | |||
643 | out_be16(&bdp->status, BD_SC_WRAP | BD_SC_INTRPT); | ||
644 | out_be32(&bdp->buf, cpu2qe_addr(bd_virt, qe_port)); | ||
645 | out_be16(&bdp->length, 0); | ||
646 | } | ||
647 | |||
648 | /* | ||
649 | * Initialize a UCC for UART. | ||
650 | * | ||
651 | * This function configures a given UCC to be used as a UART device. Basic | ||
652 | * UCC initialization is handled in qe_uart_request_port(). This function | ||
653 | * does all the UART-specific stuff. | ||
654 | */ | ||
655 | static void qe_uart_init_ucc(struct uart_qe_port *qe_port) | ||
656 | { | ||
657 | u32 cecr_subblock; | ||
658 | struct ucc_slow __iomem *uccp = qe_port->uccp; | ||
659 | struct ucc_uart_pram *uccup = qe_port->uccup; | ||
660 | |||
661 | unsigned int i; | ||
662 | |||
663 | /* First, disable TX and RX in the UCC */ | ||
664 | ucc_slow_disable(qe_port->us_private, COMM_DIR_RX_AND_TX); | ||
665 | |||
666 | /* Program the UCC UART parameter RAM */ | ||
667 | out_8(&uccup->common.rbmr, UCC_BMR_GBL | UCC_BMR_BO_BE); | ||
668 | out_8(&uccup->common.tbmr, UCC_BMR_GBL | UCC_BMR_BO_BE); | ||
669 | out_be16(&uccup->common.mrblr, qe_port->rx_fifosize); | ||
670 | out_be16(&uccup->maxidl, 0x10); | ||
671 | out_be16(&uccup->brkcr, 1); | ||
672 | out_be16(&uccup->parec, 0); | ||
673 | out_be16(&uccup->frmec, 0); | ||
674 | out_be16(&uccup->nosec, 0); | ||
675 | out_be16(&uccup->brkec, 0); | ||
676 | out_be16(&uccup->uaddr[0], 0); | ||
677 | out_be16(&uccup->uaddr[1], 0); | ||
678 | out_be16(&uccup->toseq, 0); | ||
679 | for (i = 0; i < 8; i++) | ||
680 | out_be16(&uccup->cchars[i], 0xC000); | ||
681 | out_be16(&uccup->rccm, 0xc0ff); | ||
682 | |||
683 | /* Configure the GUMR registers for UART */ | ||
684 | if (soft_uart) | ||
685 | /* Soft-UART requires a 1X multiplier for TX */ | ||
686 | clrsetbits_be32(&uccp->gumr_l, | ||
687 | UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK | | ||
688 | UCC_SLOW_GUMR_L_RDCR_MASK, | ||
689 | UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_1 | | ||
690 | UCC_SLOW_GUMR_L_RDCR_16); | ||
691 | else | ||
692 | clrsetbits_be32(&uccp->gumr_l, | ||
693 | UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK | | ||
694 | UCC_SLOW_GUMR_L_RDCR_MASK, | ||
695 | UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_16 | | ||
696 | UCC_SLOW_GUMR_L_RDCR_16); | ||
697 | |||
698 | clrsetbits_be32(&uccp->gumr_h, UCC_SLOW_GUMR_H_RFW, | ||
699 | UCC_SLOW_GUMR_H_TRX | UCC_SLOW_GUMR_H_TTX); | ||
700 | |||
701 | #ifdef LOOPBACK | ||
702 | clrsetbits_be32(&uccp->gumr_l, UCC_SLOW_GUMR_L_DIAG_MASK, | ||
703 | UCC_SLOW_GUMR_L_DIAG_LOOP); | ||
704 | clrsetbits_be32(&uccp->gumr_h, | ||
705 | UCC_SLOW_GUMR_H_CTSP | UCC_SLOW_GUMR_H_RSYN, | ||
706 | UCC_SLOW_GUMR_H_CDS); | ||
707 | #endif | ||
708 | |||
709 | /* Enable rx interrupts and clear all pending events. */ | ||
710 | out_be16(&uccp->uccm, 0); | ||
711 | out_be16(&uccp->ucce, 0xffff); | ||
712 | out_be16(&uccp->udsr, 0x7e7e); | ||
713 | |||
714 | /* Initialize UPSMR */ | ||
715 | out_be16(&uccp->upsmr, 0); | ||
716 | |||
717 | if (soft_uart) { | ||
718 | out_be16(&uccup->supsmr, 0x30); | ||
719 | out_be16(&uccup->res92, 0); | ||
720 | out_be32(&uccup->rx_state, 0); | ||
721 | out_be32(&uccup->rx_cnt, 0); | ||
722 | out_8(&uccup->rx_bitmark, 0); | ||
723 | out_8(&uccup->rx_length, 10); | ||
724 | out_be32(&uccup->dump_ptr, 0x4000); | ||
725 | out_8(&uccup->rx_temp_dlst_qe, 0); | ||
726 | out_be32(&uccup->rx_frame_rem, 0); | ||
727 | out_8(&uccup->rx_frame_rem_size, 0); | ||
728 | /* Soft-UART requires TX to be 1X */ | ||
729 | out_8(&uccup->tx_mode, | ||
730 | UCC_UART_TX_STATE_UART | UCC_UART_TX_STATE_X1); | ||
731 | out_be16(&uccup->tx_state, 0); | ||
732 | out_8(&uccup->resD4, 0); | ||
733 | out_be16(&uccup->resD5, 0); | ||
734 | |||
735 | /* Set UART mode. | ||
736 | * Enable receive and transmit. | ||
737 | */ | ||
738 | |||
739 | /* From the microcode errata: | ||
740 | * 1.GUMR_L register, set mode=0010 (QMC). | ||
741 | * 2.Set GUMR_H[17] bit. (UART/AHDLC mode). | ||
742 | * 3.Set GUMR_H[19:20] (Transparent mode) | ||
743 | * 4.Clear GUMR_H[26] (RFW) | ||
744 | * ... | ||
745 | * 6.Receiver must use 16x over sampling | ||
746 | */ | ||
747 | clrsetbits_be32(&uccp->gumr_l, | ||
748 | UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK | | ||
749 | UCC_SLOW_GUMR_L_RDCR_MASK, | ||
750 | UCC_SLOW_GUMR_L_MODE_QMC | UCC_SLOW_GUMR_L_TDCR_16 | | ||
751 | UCC_SLOW_GUMR_L_RDCR_16); | ||
752 | |||
753 | clrsetbits_be32(&uccp->gumr_h, | ||
754 | UCC_SLOW_GUMR_H_RFW | UCC_SLOW_GUMR_H_RSYN, | ||
755 | UCC_SLOW_GUMR_H_SUART | UCC_SLOW_GUMR_H_TRX | | ||
756 | UCC_SLOW_GUMR_H_TTX | UCC_SLOW_GUMR_H_TFL); | ||
757 | |||
758 | #ifdef LOOPBACK | ||
759 | clrsetbits_be32(&uccp->gumr_l, UCC_SLOW_GUMR_L_DIAG_MASK, | ||
760 | UCC_SLOW_GUMR_L_DIAG_LOOP); | ||
761 | clrbits32(&uccp->gumr_h, UCC_SLOW_GUMR_H_CTSP | | ||
762 | UCC_SLOW_GUMR_H_CDS); | ||
763 | #endif | ||
764 | |||
765 | cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num); | ||
766 | qe_issue_cmd(QE_INIT_TX_RX, cecr_subblock, | ||
767 | QE_CR_PROTOCOL_UNSPECIFIED, 0); | ||
768 | } | ||
769 | } | ||
770 | |||
771 | /* | ||
772 | * Initialize the port. | ||
773 | */ | ||
774 | static int qe_uart_startup(struct uart_port *port) | ||
775 | { | ||
776 | struct uart_qe_port *qe_port = | ||
777 | container_of(port, struct uart_qe_port, port); | ||
778 | int ret; | ||
779 | |||
780 | /* | ||
781 | * If we're using Soft-UART mode, then we need to make sure the | ||
782 | * firmware has been uploaded first. | ||
783 | */ | ||
784 | if (soft_uart && !firmware_loaded) { | ||
785 | dev_err(port->dev, "Soft-UART firmware not uploaded\n"); | ||
786 | return -ENODEV; | ||
787 | } | ||
788 | |||
789 | qe_uart_initbd(qe_port); | ||
790 | qe_uart_init_ucc(qe_port); | ||
791 | |||
792 | /* Install interrupt handler. */ | ||
793 | ret = request_irq(port->irq, qe_uart_int, IRQF_SHARED, "ucc-uart", | ||
794 | qe_port); | ||
795 | if (ret) { | ||
796 | dev_err(port->dev, "could not claim IRQ %u\n", port->irq); | ||
797 | return ret; | ||
798 | } | ||
799 | |||
800 | /* Startup rx-int */ | ||
801 | setbits16(&qe_port->uccp->uccm, UCC_UART_UCCE_RX); | ||
802 | ucc_slow_enable(qe_port->us_private, COMM_DIR_RX_AND_TX); | ||
803 | |||
804 | return 0; | ||
805 | } | ||
806 | |||
807 | /* | ||
808 | * Shutdown the port. | ||
809 | */ | ||
810 | static void qe_uart_shutdown(struct uart_port *port) | ||
811 | { | ||
812 | struct uart_qe_port *qe_port = | ||
813 | container_of(port, struct uart_qe_port, port); | ||
814 | struct ucc_slow __iomem *uccp = qe_port->uccp; | ||
815 | unsigned int timeout = 20; | ||
816 | |||
817 | /* Disable RX and TX */ | ||
818 | |||
819 | /* Wait for all the BDs marked sent */ | ||
820 | while (!qe_uart_tx_empty(port)) { | ||
821 | if (!--timeout) { | ||
822 | dev_warn(port->dev, "shutdown timeout\n"); | ||
823 | break; | ||
824 | } | ||
825 | set_current_state(TASK_UNINTERRUPTIBLE); | ||
826 | schedule_timeout(2); | ||
827 | } | ||
828 | |||
829 | if (qe_port->wait_closing) { | ||
830 | /* Wait a bit longer */ | ||
831 | set_current_state(TASK_UNINTERRUPTIBLE); | ||
832 | schedule_timeout(qe_port->wait_closing); | ||
833 | } | ||
834 | |||
835 | /* Stop uarts */ | ||
836 | ucc_slow_disable(qe_port->us_private, COMM_DIR_RX_AND_TX); | ||
837 | clrbits16(&uccp->uccm, UCC_UART_UCCE_TX | UCC_UART_UCCE_RX); | ||
838 | |||
839 | /* Shut them really down and reinit buffer descriptors */ | ||
840 | ucc_slow_graceful_stop_tx(qe_port->us_private); | ||
841 | qe_uart_initbd(qe_port); | ||
842 | |||
843 | free_irq(port->irq, qe_port); | ||
844 | } | ||
845 | |||
846 | /* | ||
847 | * Set the serial port parameters. | ||
848 | */ | ||
849 | static void qe_uart_set_termios(struct uart_port *port, | ||
850 | struct ktermios *termios, struct ktermios *old) | ||
851 | { | ||
852 | struct uart_qe_port *qe_port = | ||
853 | container_of(port, struct uart_qe_port, port); | ||
854 | struct ucc_slow __iomem *uccp = qe_port->uccp; | ||
855 | unsigned int baud; | ||
856 | unsigned long flags; | ||
857 | u16 upsmr = in_be16(&uccp->upsmr); | ||
858 | struct ucc_uart_pram __iomem *uccup = qe_port->uccup; | ||
859 | u16 supsmr = in_be16(&uccup->supsmr); | ||
860 | u8 char_length = 2; /* 1 + CL + PEN + 1 + SL */ | ||
861 | |||
862 | /* Character length programmed into the mode register is the | ||
863 | * sum of: 1 start bit, number of data bits, 0 or 1 parity bit, | ||
864 | * 1 or 2 stop bits, minus 1. | ||
865 | * The value 'bits' counts this for us. | ||
866 | */ | ||
867 | |||
868 | /* byte size */ | ||
869 | upsmr &= UCC_UART_UPSMR_CL_MASK; | ||
870 | supsmr &= UCC_UART_SUPSMR_CL_MASK; | ||
871 | |||
872 | switch (termios->c_cflag & CSIZE) { | ||
873 | case CS5: | ||
874 | upsmr |= UCC_UART_UPSMR_CL_5; | ||
875 | supsmr |= UCC_UART_SUPSMR_CL_5; | ||
876 | char_length += 5; | ||
877 | break; | ||
878 | case CS6: | ||
879 | upsmr |= UCC_UART_UPSMR_CL_6; | ||
880 | supsmr |= UCC_UART_SUPSMR_CL_6; | ||
881 | char_length += 6; | ||
882 | break; | ||
883 | case CS7: | ||
884 | upsmr |= UCC_UART_UPSMR_CL_7; | ||
885 | supsmr |= UCC_UART_SUPSMR_CL_7; | ||
886 | char_length += 7; | ||
887 | break; | ||
888 | default: /* case CS8 */ | ||
889 | upsmr |= UCC_UART_UPSMR_CL_8; | ||
890 | supsmr |= UCC_UART_SUPSMR_CL_8; | ||
891 | char_length += 8; | ||
892 | break; | ||
893 | } | ||
894 | |||
895 | /* If CSTOPB is set, we want two stop bits */ | ||
896 | if (termios->c_cflag & CSTOPB) { | ||
897 | upsmr |= UCC_UART_UPSMR_SL; | ||
898 | supsmr |= UCC_UART_SUPSMR_SL; | ||
899 | char_length++; /* + SL */ | ||
900 | } | ||
901 | |||
902 | if (termios->c_cflag & PARENB) { | ||
903 | upsmr |= UCC_UART_UPSMR_PEN; | ||
904 | supsmr |= UCC_UART_SUPSMR_PEN; | ||
905 | char_length++; /* + PEN */ | ||
906 | |||
907 | if (!(termios->c_cflag & PARODD)) { | ||
908 | upsmr &= ~(UCC_UART_UPSMR_RPM_MASK | | ||
909 | UCC_UART_UPSMR_TPM_MASK); | ||
910 | upsmr |= UCC_UART_UPSMR_RPM_EVEN | | ||
911 | UCC_UART_UPSMR_TPM_EVEN; | ||
912 | supsmr &= ~(UCC_UART_SUPSMR_RPM_MASK | | ||
913 | UCC_UART_SUPSMR_TPM_MASK); | ||
914 | supsmr |= UCC_UART_SUPSMR_RPM_EVEN | | ||
915 | UCC_UART_SUPSMR_TPM_EVEN; | ||
916 | } | ||
917 | } | ||
918 | |||
919 | /* | ||
920 | * Set up parity check flag | ||
921 | */ | ||
922 | port->read_status_mask = BD_SC_EMPTY | BD_SC_OV; | ||
923 | if (termios->c_iflag & INPCK) | ||
924 | port->read_status_mask |= BD_SC_FR | BD_SC_PR; | ||
925 | if (termios->c_iflag & (BRKINT | PARMRK)) | ||
926 | port->read_status_mask |= BD_SC_BR; | ||
927 | |||
928 | /* | ||
929 | * Characters to ignore | ||
930 | */ | ||
931 | port->ignore_status_mask = 0; | ||
932 | if (termios->c_iflag & IGNPAR) | ||
933 | port->ignore_status_mask |= BD_SC_PR | BD_SC_FR; | ||
934 | if (termios->c_iflag & IGNBRK) { | ||
935 | port->ignore_status_mask |= BD_SC_BR; | ||
936 | /* | ||
937 | * If we're ignore parity and break indicators, ignore | ||
938 | * overruns too. (For real raw support). | ||
939 | */ | ||
940 | if (termios->c_iflag & IGNPAR) | ||
941 | port->ignore_status_mask |= BD_SC_OV; | ||
942 | } | ||
943 | /* | ||
944 | * !!! ignore all characters if CREAD is not set | ||
945 | */ | ||
946 | if ((termios->c_cflag & CREAD) == 0) | ||
947 | port->read_status_mask &= ~BD_SC_EMPTY; | ||
948 | |||
949 | baud = uart_get_baud_rate(port, termios, old, 0, 115200); | ||
950 | |||
951 | /* Do we really need a spinlock here? */ | ||
952 | spin_lock_irqsave(&port->lock, flags); | ||
953 | |||
954 | out_be16(&uccp->upsmr, upsmr); | ||
955 | if (soft_uart) { | ||
956 | out_be16(&uccup->supsmr, supsmr); | ||
957 | out_8(&uccup->rx_length, char_length); | ||
958 | |||
959 | /* Soft-UART requires a 1X multiplier for TX */ | ||
960 | qe_setbrg(qe_port->us_info.rx_clock, baud, 16); | ||
961 | qe_setbrg(qe_port->us_info.tx_clock, baud, 1); | ||
962 | } else { | ||
963 | qe_setbrg(qe_port->us_info.rx_clock, baud, 16); | ||
964 | qe_setbrg(qe_port->us_info.tx_clock, baud, 16); | ||
965 | } | ||
966 | |||
967 | spin_unlock_irqrestore(&port->lock, flags); | ||
968 | } | ||
969 | |||
970 | /* | ||
971 | * Return a pointer to a string that describes what kind of port this is. | ||
972 | */ | ||
973 | static const char *qe_uart_type(struct uart_port *port) | ||
974 | { | ||
975 | return "QE"; | ||
976 | } | ||
977 | |||
978 | /* | ||
979 | * Allocate any memory and I/O resources required by the port. | ||
980 | */ | ||
981 | static int qe_uart_request_port(struct uart_port *port) | ||
982 | { | ||
983 | int ret; | ||
984 | struct uart_qe_port *qe_port = | ||
985 | container_of(port, struct uart_qe_port, port); | ||
986 | struct ucc_slow_info *us_info = &qe_port->us_info; | ||
987 | struct ucc_slow_private *uccs; | ||
988 | unsigned int rx_size, tx_size; | ||
989 | void *bd_virt; | ||
990 | dma_addr_t bd_dma_addr = 0; | ||
991 | |||
992 | ret = ucc_slow_init(us_info, &uccs); | ||
993 | if (ret) { | ||
994 | dev_err(port->dev, "could not initialize UCC%u\n", | ||
995 | qe_port->ucc_num); | ||
996 | return ret; | ||
997 | } | ||
998 | |||
999 | qe_port->us_private = uccs; | ||
1000 | qe_port->uccp = uccs->us_regs; | ||
1001 | qe_port->uccup = (struct ucc_uart_pram *) uccs->us_pram; | ||
1002 | qe_port->rx_bd_base = uccs->rx_bd; | ||
1003 | qe_port->tx_bd_base = uccs->tx_bd; | ||
1004 | |||
1005 | /* | ||
1006 | * Allocate the transmit and receive data buffers. | ||
1007 | */ | ||
1008 | |||
1009 | rx_size = L1_CACHE_ALIGN(qe_port->rx_nrfifos * qe_port->rx_fifosize); | ||
1010 | tx_size = L1_CACHE_ALIGN(qe_port->tx_nrfifos * qe_port->tx_fifosize); | ||
1011 | |||
1012 | bd_virt = dma_alloc_coherent(NULL, rx_size + tx_size, &bd_dma_addr, | ||
1013 | GFP_KERNEL); | ||
1014 | if (!bd_virt) { | ||
1015 | dev_err(port->dev, "could not allocate buffer descriptors\n"); | ||
1016 | return -ENOMEM; | ||
1017 | } | ||
1018 | |||
1019 | qe_port->bd_virt = bd_virt; | ||
1020 | qe_port->bd_dma_addr = bd_dma_addr; | ||
1021 | qe_port->bd_size = rx_size + tx_size; | ||
1022 | |||
1023 | qe_port->rx_buf = bd_virt; | ||
1024 | qe_port->tx_buf = qe_port->rx_buf + rx_size; | ||
1025 | |||
1026 | return 0; | ||
1027 | } | ||
1028 | |||
1029 | /* | ||
1030 | * Configure the port. | ||
1031 | * | ||
1032 | * We say we're a CPM-type port because that's mostly true. Once the device | ||
1033 | * is configured, this driver operates almost identically to the CPM serial | ||
1034 | * driver. | ||
1035 | */ | ||
1036 | static void qe_uart_config_port(struct uart_port *port, int flags) | ||
1037 | { | ||
1038 | if (flags & UART_CONFIG_TYPE) { | ||
1039 | port->type = PORT_CPM; | ||
1040 | qe_uart_request_port(port); | ||
1041 | } | ||
1042 | } | ||
1043 | |||
1044 | /* | ||
1045 | * Release any memory and I/O resources that were allocated in | ||
1046 | * qe_uart_request_port(). | ||
1047 | */ | ||
1048 | static void qe_uart_release_port(struct uart_port *port) | ||
1049 | { | ||
1050 | struct uart_qe_port *qe_port = | ||
1051 | container_of(port, struct uart_qe_port, port); | ||
1052 | struct ucc_slow_private *uccs = qe_port->us_private; | ||
1053 | |||
1054 | dma_free_coherent(NULL, qe_port->bd_size, qe_port->bd_virt, | ||
1055 | qe_port->bd_dma_addr); | ||
1056 | |||
1057 | ucc_slow_free(uccs); | ||
1058 | } | ||
1059 | |||
1060 | /* | ||
1061 | * Verify that the data in serial_struct is suitable for this device. | ||
1062 | */ | ||
1063 | static int qe_uart_verify_port(struct uart_port *port, | ||
1064 | struct serial_struct *ser) | ||
1065 | { | ||
1066 | if (ser->type != PORT_UNKNOWN && ser->type != PORT_CPM) | ||
1067 | return -EINVAL; | ||
1068 | |||
1069 | if (ser->irq < 0 || ser->irq >= NR_IRQS) | ||
1070 | return -EINVAL; | ||
1071 | |||
1072 | if (ser->baud_base < 9600) | ||
1073 | return -EINVAL; | ||
1074 | |||
1075 | return 0; | ||
1076 | } | ||
1077 | /* UART operations | ||
1078 | * | ||
1079 | * Details on these functions can be found in Documentation/serial/driver | ||
1080 | */ | ||
1081 | static struct uart_ops qe_uart_pops = { | ||
1082 | .tx_empty = qe_uart_tx_empty, | ||
1083 | .set_mctrl = qe_uart_set_mctrl, | ||
1084 | .get_mctrl = qe_uart_get_mctrl, | ||
1085 | .stop_tx = qe_uart_stop_tx, | ||
1086 | .start_tx = qe_uart_start_tx, | ||
1087 | .stop_rx = qe_uart_stop_rx, | ||
1088 | .enable_ms = qe_uart_enable_ms, | ||
1089 | .break_ctl = qe_uart_break_ctl, | ||
1090 | .startup = qe_uart_startup, | ||
1091 | .shutdown = qe_uart_shutdown, | ||
1092 | .set_termios = qe_uart_set_termios, | ||
1093 | .type = qe_uart_type, | ||
1094 | .release_port = qe_uart_release_port, | ||
1095 | .request_port = qe_uart_request_port, | ||
1096 | .config_port = qe_uart_config_port, | ||
1097 | .verify_port = qe_uart_verify_port, | ||
1098 | }; | ||
1099 | |||
1100 | /* | ||
1101 | * Obtain the SOC model number and revision level | ||
1102 | * | ||
1103 | * This function parses the device tree to obtain the SOC model. It then | ||
1104 | * reads the SVR register to the revision. | ||
1105 | * | ||
1106 | * The device tree stores the SOC model two different ways. | ||
1107 | * | ||
1108 | * The new way is: | ||
1109 | * | ||
1110 | * cpu@0 { | ||
1111 | * compatible = "PowerPC,8323"; | ||
1112 | * device_type = "cpu"; | ||
1113 | * ... | ||
1114 | * | ||
1115 | * | ||
1116 | * The old way is: | ||
1117 | * PowerPC,8323@0 { | ||
1118 | * device_type = "cpu"; | ||
1119 | * ... | ||
1120 | * | ||
1121 | * This code first checks the new way, and then the old way. | ||
1122 | */ | ||
1123 | static unsigned int soc_info(unsigned int *rev_h, unsigned int *rev_l) | ||
1124 | { | ||
1125 | struct device_node *np; | ||
1126 | const char *soc_string; | ||
1127 | unsigned int svr; | ||
1128 | unsigned int soc; | ||
1129 | |||
1130 | /* Find the CPU node */ | ||
1131 | np = of_find_node_by_type(NULL, "cpu"); | ||
1132 | if (!np) | ||
1133 | return 0; | ||
1134 | /* Find the compatible property */ | ||
1135 | soc_string = of_get_property(np, "compatible", NULL); | ||
1136 | if (!soc_string) | ||
1137 | /* No compatible property, so try the name. */ | ||
1138 | soc_string = np->name; | ||
1139 | |||
1140 | /* Extract the SOC number from the "PowerPC," string */ | ||
1141 | if ((sscanf(soc_string, "PowerPC,%u", &soc) != 1) || !soc) | ||
1142 | return 0; | ||
1143 | |||
1144 | /* Get the revision from the SVR */ | ||
1145 | svr = mfspr(SPRN_SVR); | ||
1146 | *rev_h = (svr >> 4) & 0xf; | ||
1147 | *rev_l = svr & 0xf; | ||
1148 | |||
1149 | return soc; | ||
1150 | } | ||
1151 | |||
1152 | /* | ||
1153 | * requst_firmware_nowait() callback function | ||
1154 | * | ||
1155 | * This function is called by the kernel when a firmware is made available, | ||
1156 | * or if it times out waiting for the firmware. | ||
1157 | */ | ||
1158 | static void uart_firmware_cont(const struct firmware *fw, void *context) | ||
1159 | { | ||
1160 | struct qe_firmware *firmware; | ||
1161 | struct device *dev = context; | ||
1162 | int ret; | ||
1163 | |||
1164 | if (!fw) { | ||
1165 | dev_err(dev, "firmware not found\n"); | ||
1166 | return; | ||
1167 | } | ||
1168 | |||
1169 | firmware = (struct qe_firmware *) fw->data; | ||
1170 | |||
1171 | if (firmware->header.length != fw->size) { | ||
1172 | dev_err(dev, "invalid firmware\n"); | ||
1173 | return; | ||
1174 | } | ||
1175 | |||
1176 | ret = qe_upload_firmware(firmware); | ||
1177 | if (ret) { | ||
1178 | dev_err(dev, "could not load firmware\n"); | ||
1179 | return; | ||
1180 | } | ||
1181 | |||
1182 | firmware_loaded = 1; | ||
1183 | } | ||
1184 | |||
1185 | static int ucc_uart_probe(struct of_device *ofdev, | ||
1186 | const struct of_device_id *match) | ||
1187 | { | ||
1188 | struct device_node *np = ofdev->node; | ||
1189 | const unsigned int *iprop; /* Integer OF properties */ | ||
1190 | const char *sprop; /* String OF properties */ | ||
1191 | struct uart_qe_port *qe_port = NULL; | ||
1192 | struct resource res; | ||
1193 | int ret; | ||
1194 | |||
1195 | /* | ||
1196 | * Determine if we need Soft-UART mode | ||
1197 | */ | ||
1198 | if (of_find_property(np, "soft-uart", NULL)) { | ||
1199 | dev_dbg(&ofdev->dev, "using Soft-UART mode\n"); | ||
1200 | soft_uart = 1; | ||
1201 | } | ||
1202 | |||
1203 | /* | ||
1204 | * If we are using Soft-UART, determine if we need to upload the | ||
1205 | * firmware, too. | ||
1206 | */ | ||
1207 | if (soft_uart) { | ||
1208 | struct qe_firmware_info *qe_fw_info; | ||
1209 | |||
1210 | qe_fw_info = qe_get_firmware_info(); | ||
1211 | |||
1212 | /* Check if the firmware has been uploaded. */ | ||
1213 | if (qe_fw_info && strstr(qe_fw_info->id, "Soft-UART")) { | ||
1214 | firmware_loaded = 1; | ||
1215 | } else { | ||
1216 | char filename[32]; | ||
1217 | unsigned int soc; | ||
1218 | unsigned int rev_h; | ||
1219 | unsigned int rev_l; | ||
1220 | |||
1221 | soc = soc_info(&rev_h, &rev_l); | ||
1222 | if (!soc) { | ||
1223 | dev_err(&ofdev->dev, "unknown CPU model\n"); | ||
1224 | return -ENXIO; | ||
1225 | } | ||
1226 | sprintf(filename, "fsl_qe_ucode_uart_%u_%u%u.bin", | ||
1227 | soc, rev_h, rev_l); | ||
1228 | |||
1229 | dev_info(&ofdev->dev, "waiting for firmware %s\n", | ||
1230 | filename); | ||
1231 | |||
1232 | /* | ||
1233 | * We call request_firmware_nowait instead of | ||
1234 | * request_firmware so that the driver can load and | ||
1235 | * initialize the ports without holding up the rest of | ||
1236 | * the kernel. If hotplug support is enabled in the | ||
1237 | * kernel, then we use it. | ||
1238 | */ | ||
1239 | ret = request_firmware_nowait(THIS_MODULE, | ||
1240 | FW_ACTION_HOTPLUG, filename, &ofdev->dev, | ||
1241 | &ofdev->dev, uart_firmware_cont); | ||
1242 | if (ret) { | ||
1243 | dev_err(&ofdev->dev, | ||
1244 | "could not load firmware %s\n", | ||
1245 | filename); | ||
1246 | return ret; | ||
1247 | } | ||
1248 | } | ||
1249 | } | ||
1250 | |||
1251 | qe_port = kzalloc(sizeof(struct uart_qe_port), GFP_KERNEL); | ||
1252 | if (!qe_port) { | ||
1253 | dev_err(&ofdev->dev, "can't allocate QE port structure\n"); | ||
1254 | return -ENOMEM; | ||
1255 | } | ||
1256 | |||
1257 | /* Search for IRQ and mapbase */ | ||
1258 | ret = of_address_to_resource(np, 0, &res); | ||
1259 | if (ret) { | ||
1260 | dev_err(&ofdev->dev, "missing 'reg' property in device tree\n"); | ||
1261 | kfree(qe_port); | ||
1262 | return ret; | ||
1263 | } | ||
1264 | if (!res.start) { | ||
1265 | dev_err(&ofdev->dev, "invalid 'reg' property in device tree\n"); | ||
1266 | kfree(qe_port); | ||
1267 | return -EINVAL; | ||
1268 | } | ||
1269 | qe_port->port.mapbase = res.start; | ||
1270 | |||
1271 | /* Get the UCC number (device ID) */ | ||
1272 | /* UCCs are numbered 1-7 */ | ||
1273 | iprop = of_get_property(np, "device-id", NULL); | ||
1274 | if (!iprop || (*iprop < 1) || (*iprop > UCC_MAX_NUM)) { | ||
1275 | dev_err(&ofdev->dev, | ||
1276 | "missing or invalid UCC specified in device tree\n"); | ||
1277 | kfree(qe_port); | ||
1278 | return -ENODEV; | ||
1279 | } | ||
1280 | qe_port->ucc_num = *iprop - 1; | ||
1281 | |||
1282 | /* | ||
1283 | * In the future, we should not require the BRG to be specified in the | ||
1284 | * device tree. If no clock-source is specified, then just pick a BRG | ||
1285 | * to use. This requires a new QE library function that manages BRG | ||
1286 | * assignments. | ||
1287 | */ | ||
1288 | |||
1289 | sprop = of_get_property(np, "rx-clock-name", NULL); | ||
1290 | if (!sprop) { | ||
1291 | dev_err(&ofdev->dev, "missing rx-clock-name in device tree\n"); | ||
1292 | kfree(qe_port); | ||
1293 | return -ENODEV; | ||
1294 | } | ||
1295 | |||
1296 | qe_port->us_info.rx_clock = qe_clock_source(sprop); | ||
1297 | if ((qe_port->us_info.rx_clock < QE_BRG1) || | ||
1298 | (qe_port->us_info.rx_clock > QE_BRG16)) { | ||
1299 | dev_err(&ofdev->dev, "rx-clock-name must be a BRG for UART\n"); | ||
1300 | kfree(qe_port); | ||
1301 | return -ENODEV; | ||
1302 | } | ||
1303 | |||
1304 | #ifdef LOOPBACK | ||
1305 | /* In internal loopback mode, TX and RX must use the same clock */ | ||
1306 | qe_port->us_info.tx_clock = qe_port->us_info.rx_clock; | ||
1307 | #else | ||
1308 | sprop = of_get_property(np, "tx-clock-name", NULL); | ||
1309 | if (!sprop) { | ||
1310 | dev_err(&ofdev->dev, "missing tx-clock-name in device tree\n"); | ||
1311 | kfree(qe_port); | ||
1312 | return -ENODEV; | ||
1313 | } | ||
1314 | qe_port->us_info.tx_clock = qe_clock_source(sprop); | ||
1315 | #endif | ||
1316 | if ((qe_port->us_info.tx_clock < QE_BRG1) || | ||
1317 | (qe_port->us_info.tx_clock > QE_BRG16)) { | ||
1318 | dev_err(&ofdev->dev, "tx-clock-name must be a BRG for UART\n"); | ||
1319 | kfree(qe_port); | ||
1320 | return -ENODEV; | ||
1321 | } | ||
1322 | |||
1323 | /* Get the port number, numbered 0-3 */ | ||
1324 | iprop = of_get_property(np, "port-number", NULL); | ||
1325 | if (!iprop) { | ||
1326 | dev_err(&ofdev->dev, "missing port-number in device tree\n"); | ||
1327 | kfree(qe_port); | ||
1328 | return -EINVAL; | ||
1329 | } | ||
1330 | qe_port->port.line = *iprop; | ||
1331 | if (qe_port->port.line >= UCC_MAX_UART) { | ||
1332 | dev_err(&ofdev->dev, "port-number must be 0-%u\n", | ||
1333 | UCC_MAX_UART - 1); | ||
1334 | kfree(qe_port); | ||
1335 | return -EINVAL; | ||
1336 | } | ||
1337 | |||
1338 | qe_port->port.irq = irq_of_parse_and_map(np, 0); | ||
1339 | if (qe_port->port.irq == NO_IRQ) { | ||
1340 | dev_err(&ofdev->dev, "could not map IRQ for UCC%u\n", | ||
1341 | qe_port->ucc_num + 1); | ||
1342 | kfree(qe_port); | ||
1343 | return -EINVAL; | ||
1344 | } | ||
1345 | |||
1346 | /* | ||
1347 | * Newer device trees have an "fsl,qe" compatible property for the QE | ||
1348 | * node, but we still need to support older device trees. | ||
1349 | */ | ||
1350 | np = of_find_compatible_node(NULL, NULL, "fsl,qe"); | ||
1351 | if (!np) { | ||
1352 | np = of_find_node_by_type(NULL, "qe"); | ||
1353 | if (!np) { | ||
1354 | dev_err(&ofdev->dev, "could not find 'qe' node\n"); | ||
1355 | kfree(qe_port); | ||
1356 | return -EINVAL; | ||
1357 | } | ||
1358 | } | ||
1359 | |||
1360 | iprop = of_get_property(np, "brg-frequency", NULL); | ||
1361 | if (!iprop) { | ||
1362 | dev_err(&ofdev->dev, | ||
1363 | "missing brg-frequency in device tree\n"); | ||
1364 | kfree(qe_port); | ||
1365 | return -EINVAL; | ||
1366 | } | ||
1367 | |||
1368 | if (*iprop) | ||
1369 | qe_port->port.uartclk = *iprop; | ||
1370 | else { | ||
1371 | /* | ||
1372 | * Older versions of U-Boot do not initialize the brg-frequency | ||
1373 | * property, so in this case we assume the BRG frequency is | ||
1374 | * half the QE bus frequency. | ||
1375 | */ | ||
1376 | iprop = of_get_property(np, "bus-frequency", NULL); | ||
1377 | if (!iprop) { | ||
1378 | dev_err(&ofdev->dev, | ||
1379 | "missing QE bus-frequency in device tree\n"); | ||
1380 | kfree(qe_port); | ||
1381 | return -EINVAL; | ||
1382 | } | ||
1383 | if (*iprop) | ||
1384 | qe_port->port.uartclk = *iprop / 2; | ||
1385 | else { | ||
1386 | dev_err(&ofdev->dev, | ||
1387 | "invalid QE bus-frequency in device tree\n"); | ||
1388 | kfree(qe_port); | ||
1389 | return -EINVAL; | ||
1390 | } | ||
1391 | } | ||
1392 | |||
1393 | spin_lock_init(&qe_port->port.lock); | ||
1394 | qe_port->np = np; | ||
1395 | qe_port->port.dev = &ofdev->dev; | ||
1396 | qe_port->port.ops = &qe_uart_pops; | ||
1397 | qe_port->port.iotype = UPIO_MEM; | ||
1398 | |||
1399 | qe_port->tx_nrfifos = TX_NUM_FIFO; | ||
1400 | qe_port->tx_fifosize = TX_BUF_SIZE; | ||
1401 | qe_port->rx_nrfifos = RX_NUM_FIFO; | ||
1402 | qe_port->rx_fifosize = RX_BUF_SIZE; | ||
1403 | |||
1404 | qe_port->wait_closing = UCC_WAIT_CLOSING; | ||
1405 | qe_port->port.fifosize = 512; | ||
1406 | qe_port->port.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP; | ||
1407 | |||
1408 | qe_port->us_info.ucc_num = qe_port->ucc_num; | ||
1409 | qe_port->us_info.regs = (phys_addr_t) res.start; | ||
1410 | qe_port->us_info.irq = qe_port->port.irq; | ||
1411 | |||
1412 | qe_port->us_info.rx_bd_ring_len = qe_port->rx_nrfifos; | ||
1413 | qe_port->us_info.tx_bd_ring_len = qe_port->tx_nrfifos; | ||
1414 | |||
1415 | /* Make sure ucc_slow_init() initializes both TX and RX */ | ||
1416 | qe_port->us_info.init_tx = 1; | ||
1417 | qe_port->us_info.init_rx = 1; | ||
1418 | |||
1419 | /* Add the port to the uart sub-system. This will cause | ||
1420 | * qe_uart_config_port() to be called, so the us_info structure must | ||
1421 | * be initialized. | ||
1422 | */ | ||
1423 | ret = uart_add_one_port(&ucc_uart_driver, &qe_port->port); | ||
1424 | if (ret) { | ||
1425 | dev_err(&ofdev->dev, "could not add /dev/ttyQE%u\n", | ||
1426 | qe_port->port.line); | ||
1427 | kfree(qe_port); | ||
1428 | return ret; | ||
1429 | } | ||
1430 | |||
1431 | dev_set_drvdata(&ofdev->dev, qe_port); | ||
1432 | |||
1433 | dev_info(&ofdev->dev, "UCC%u assigned to /dev/ttyQE%u\n", | ||
1434 | qe_port->ucc_num + 1, qe_port->port.line); | ||
1435 | |||
1436 | /* Display the mknod command for this device */ | ||
1437 | dev_dbg(&ofdev->dev, "mknod command is 'mknod /dev/ttyQE%u c %u %u'\n", | ||
1438 | qe_port->port.line, SERIAL_QE_MAJOR, | ||
1439 | SERIAL_QE_MINOR + qe_port->port.line); | ||
1440 | |||
1441 | return 0; | ||
1442 | } | ||
1443 | |||
1444 | static int ucc_uart_remove(struct of_device *ofdev) | ||
1445 | { | ||
1446 | struct uart_qe_port *qe_port = dev_get_drvdata(&ofdev->dev); | ||
1447 | |||
1448 | dev_info(&ofdev->dev, "removing /dev/ttyQE%u\n", qe_port->port.line); | ||
1449 | |||
1450 | uart_remove_one_port(&ucc_uart_driver, &qe_port->port); | ||
1451 | |||
1452 | dev_set_drvdata(&ofdev->dev, NULL); | ||
1453 | kfree(qe_port); | ||
1454 | |||
1455 | return 0; | ||
1456 | } | ||
1457 | |||
1458 | static struct of_device_id ucc_uart_match[] = { | ||
1459 | { | ||
1460 | .type = "serial", | ||
1461 | .compatible = "ucc_uart", | ||
1462 | }, | ||
1463 | {}, | ||
1464 | }; | ||
1465 | MODULE_DEVICE_TABLE(of, ucc_uart_match); | ||
1466 | |||
1467 | static struct of_platform_driver ucc_uart_of_driver = { | ||
1468 | .owner = THIS_MODULE, | ||
1469 | .name = "ucc_uart", | ||
1470 | .match_table = ucc_uart_match, | ||
1471 | .probe = ucc_uart_probe, | ||
1472 | .remove = ucc_uart_remove, | ||
1473 | }; | ||
1474 | |||
1475 | static int __init ucc_uart_init(void) | ||
1476 | { | ||
1477 | int ret; | ||
1478 | |||
1479 | printk(KERN_INFO "Freescale QUICC Engine UART device driver\n"); | ||
1480 | #ifdef LOOPBACK | ||
1481 | printk(KERN_INFO "ucc-uart: Using loopback mode\n"); | ||
1482 | #endif | ||
1483 | |||
1484 | ret = uart_register_driver(&ucc_uart_driver); | ||
1485 | if (ret) { | ||
1486 | printk(KERN_ERR "ucc-uart: could not register UART driver\n"); | ||
1487 | return ret; | ||
1488 | } | ||
1489 | |||
1490 | ret = of_register_platform_driver(&ucc_uart_of_driver); | ||
1491 | if (ret) | ||
1492 | printk(KERN_ERR | ||
1493 | "ucc-uart: could not register platform driver\n"); | ||
1494 | |||
1495 | return ret; | ||
1496 | } | ||
1497 | |||
1498 | static void __exit ucc_uart_exit(void) | ||
1499 | { | ||
1500 | printk(KERN_INFO | ||
1501 | "Freescale QUICC Engine UART device driver unloading\n"); | ||
1502 | |||
1503 | of_unregister_platform_driver(&ucc_uart_of_driver); | ||
1504 | uart_unregister_driver(&ucc_uart_driver); | ||
1505 | } | ||
1506 | |||
1507 | module_init(ucc_uart_init); | ||
1508 | module_exit(ucc_uart_exit); | ||
1509 | |||
1510 | MODULE_DESCRIPTION("Freescale QUICC Engine (QE) UART"); | ||
1511 | MODULE_AUTHOR("Timur Tabi <timur@freescale.com>"); | ||
1512 | MODULE_LICENSE("GPL v2"); | ||
1513 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_QE_MAJOR); | ||
1514 | |||
diff --git a/include/asm-powerpc/immap_qe.h b/include/asm-powerpc/immap_qe.h index aba9806b31c9..82a452615097 100644 --- a/include/asm-powerpc/immap_qe.h +++ b/include/asm-powerpc/immap_qe.h | |||
@@ -393,9 +393,39 @@ struct dbg { | |||
393 | u8 res2[0x48]; | 393 | u8 res2[0x48]; |
394 | } __attribute__ ((packed)); | 394 | } __attribute__ ((packed)); |
395 | 395 | ||
396 | /* RISC Special Registers (Trap and Breakpoint) */ | 396 | /* |
397 | * RISC Special Registers (Trap and Breakpoint). These are described in | ||
398 | * the QE Developer's Handbook. | ||
399 | */ | ||
397 | struct rsp { | 400 | struct rsp { |
398 | u32 reg[0x40]; /* 64 32-bit registers */ | 401 | __be32 tibcr[16]; /* Trap/instruction breakpoint control regs */ |
402 | u8 res0[64]; | ||
403 | __be32 ibcr0; | ||
404 | __be32 ibs0; | ||
405 | __be32 ibcnr0; | ||
406 | u8 res1[4]; | ||
407 | __be32 ibcr1; | ||
408 | __be32 ibs1; | ||
409 | __be32 ibcnr1; | ||
410 | __be32 npcr; | ||
411 | __be32 dbcr; | ||
412 | __be32 dbar; | ||
413 | __be32 dbamr; | ||
414 | __be32 dbsr; | ||
415 | __be32 dbcnr; | ||
416 | u8 res2[12]; | ||
417 | __be32 dbdr_h; | ||
418 | __be32 dbdr_l; | ||
419 | __be32 dbdmr_h; | ||
420 | __be32 dbdmr_l; | ||
421 | __be32 bsr; | ||
422 | __be32 bor; | ||
423 | __be32 bior; | ||
424 | u8 res3[4]; | ||
425 | __be32 iatr[4]; | ||
426 | __be32 eccr; /* Exception control configuration register */ | ||
427 | __be32 eicr; | ||
428 | u8 res4[0x100-0xf8]; | ||
399 | } __attribute__ ((packed)); | 429 | } __attribute__ ((packed)); |
400 | 430 | ||
401 | struct qe_immap { | 431 | struct qe_immap { |
diff --git a/include/asm-powerpc/lmb.h b/include/asm-powerpc/lmb.h index b5f9f4c9c294..5d1dc48a0bb8 100644 --- a/include/asm-powerpc/lmb.h +++ b/include/asm-powerpc/lmb.h | |||
@@ -51,6 +51,7 @@ extern unsigned long __init __lmb_alloc_base(unsigned long size, | |||
51 | extern unsigned long __init lmb_phys_mem_size(void); | 51 | extern unsigned long __init lmb_phys_mem_size(void); |
52 | extern unsigned long __init lmb_end_of_DRAM(void); | 52 | extern unsigned long __init lmb_end_of_DRAM(void); |
53 | extern void __init lmb_enforce_memory_limit(unsigned long memory_limit); | 53 | extern void __init lmb_enforce_memory_limit(unsigned long memory_limit); |
54 | extern int __init lmb_is_reserved(unsigned long addr); | ||
54 | 55 | ||
55 | extern void lmb_dump_all(void); | 56 | extern void lmb_dump_all(void); |
56 | 57 | ||
diff --git a/include/asm-powerpc/mpc8260.h b/include/asm-powerpc/mpc8260.h index e0d480790e12..03317e1e6185 100644 --- a/include/asm-powerpc/mpc8260.h +++ b/include/asm-powerpc/mpc8260.h | |||
@@ -8,6 +8,7 @@ | |||
8 | #ifndef __ASM_POWERPC_MPC8260_H__ | 8 | #ifndef __ASM_POWERPC_MPC8260_H__ |
9 | #define __ASM_POWERPC_MPC8260_H__ | 9 | #define __ASM_POWERPC_MPC8260_H__ |
10 | 10 | ||
11 | #define MPC82XX_BCR_PLDP 0x00800000 /* Pipeline Maximum Depth */ | ||
11 | 12 | ||
12 | #ifdef CONFIG_8260 | 13 | #ifdef CONFIG_8260 |
13 | 14 | ||
diff --git a/include/asm-powerpc/pci-bridge.h b/include/asm-powerpc/pci-bridge.h index a6ea49eb680b..e5802c62f428 100644 --- a/include/asm-powerpc/pci-bridge.h +++ b/include/asm-powerpc/pci-bridge.h | |||
@@ -152,9 +152,6 @@ extern void setup_indirect_pci(struct pci_controller* hose, | |||
152 | resource_size_t cfg_addr, | 152 | resource_size_t cfg_addr, |
153 | resource_size_t cfg_data, u32 flags); | 153 | resource_size_t cfg_data, u32 flags); |
154 | extern void setup_grackle(struct pci_controller *hose); | 154 | extern void setup_grackle(struct pci_controller *hose); |
155 | extern void __init update_bridge_resource(struct pci_dev *dev, | ||
156 | struct resource *res); | ||
157 | |||
158 | #else /* CONFIG_PPC64 */ | 155 | #else /* CONFIG_PPC64 */ |
159 | 156 | ||
160 | /* | 157 | /* |
diff --git a/include/asm-powerpc/qe.h b/include/asm-powerpc/qe.h index a24b7b14958f..430dc77b35fc 100644 --- a/include/asm-powerpc/qe.h +++ b/include/asm-powerpc/qe.h | |||
@@ -94,6 +94,58 @@ unsigned long qe_muram_alloc_fixed(unsigned long offset, int size); | |||
94 | void qe_muram_dump(void); | 94 | void qe_muram_dump(void); |
95 | void *qe_muram_addr(unsigned long offset); | 95 | void *qe_muram_addr(unsigned long offset); |
96 | 96 | ||
97 | /* Structure that defines QE firmware binary files. | ||
98 | * | ||
99 | * See Documentation/powerpc/qe-firmware.txt for a description of these | ||
100 | * fields. | ||
101 | */ | ||
102 | struct qe_firmware { | ||
103 | struct qe_header { | ||
104 | __be32 length; /* Length of the entire structure, in bytes */ | ||
105 | u8 magic[3]; /* Set to { 'Q', 'E', 'F' } */ | ||
106 | u8 version; /* Version of this layout. First ver is '1' */ | ||
107 | } header; | ||
108 | u8 id[62]; /* Null-terminated identifier string */ | ||
109 | u8 split; /* 0 = shared I-RAM, 1 = split I-RAM */ | ||
110 | u8 count; /* Number of microcode[] structures */ | ||
111 | struct { | ||
112 | __be16 model; /* The SOC model */ | ||
113 | u8 major; /* The SOC revision major */ | ||
114 | u8 minor; /* The SOC revision minor */ | ||
115 | } __attribute__ ((packed)) soc; | ||
116 | u8 padding[4]; /* Reserved, for alignment */ | ||
117 | __be64 extended_modes; /* Extended modes */ | ||
118 | __be32 vtraps[8]; /* Virtual trap addresses */ | ||
119 | u8 reserved[4]; /* Reserved, for future expansion */ | ||
120 | struct qe_microcode { | ||
121 | u8 id[32]; /* Null-terminated identifier */ | ||
122 | __be32 traps[16]; /* Trap addresses, 0 == ignore */ | ||
123 | __be32 eccr; /* The value for the ECCR register */ | ||
124 | __be32 iram_offset; /* Offset into I-RAM for the code */ | ||
125 | __be32 count; /* Number of 32-bit words of the code */ | ||
126 | __be32 code_offset; /* Offset of the actual microcode */ | ||
127 | u8 major; /* The microcode version major */ | ||
128 | u8 minor; /* The microcode version minor */ | ||
129 | u8 revision; /* The microcode version revision */ | ||
130 | u8 padding; /* Reserved, for alignment */ | ||
131 | u8 reserved[4]; /* Reserved, for future expansion */ | ||
132 | } __attribute__ ((packed)) microcode[1]; | ||
133 | /* All microcode binaries should be located here */ | ||
134 | /* CRC32 should be located here, after the microcode binaries */ | ||
135 | } __attribute__ ((packed)); | ||
136 | |||
137 | struct qe_firmware_info { | ||
138 | char id[64]; /* Firmware name */ | ||
139 | u32 vtraps[8]; /* Virtual trap addresses */ | ||
140 | u64 extended_modes; /* Extended modes */ | ||
141 | }; | ||
142 | |||
143 | /* Upload a firmware to the QE */ | ||
144 | int qe_upload_firmware(const struct qe_firmware *firmware); | ||
145 | |||
146 | /* Obtain information on the uploaded firmware */ | ||
147 | struct qe_firmware_info *qe_get_firmware_info(void); | ||
148 | |||
97 | /* Buffer descriptors */ | 149 | /* Buffer descriptors */ |
98 | struct qe_bd { | 150 | struct qe_bd { |
99 | __be16 status; | 151 | __be16 status; |
@@ -329,6 +381,15 @@ enum comm_dir { | |||
329 | 381 | ||
330 | #define QE_SDEBCR_BA_MASK 0x01FFFFFF | 382 | #define QE_SDEBCR_BA_MASK 0x01FFFFFF |
331 | 383 | ||
384 | /* Communication Processor */ | ||
385 | #define QE_CP_CERCR_MEE 0x8000 /* Multi-user RAM ECC enable */ | ||
386 | #define QE_CP_CERCR_IEE 0x4000 /* Instruction RAM ECC enable */ | ||
387 | #define QE_CP_CERCR_CIR 0x0800 /* Common instruction RAM */ | ||
388 | |||
389 | /* I-RAM */ | ||
390 | #define QE_IRAM_IADD_AIE 0x80000000 /* Auto Increment Enable */ | ||
391 | #define QE_IRAM_IADD_BADDR 0x00080000 /* Base Address */ | ||
392 | |||
332 | /* UPC */ | 393 | /* UPC */ |
333 | #define UPGCR_PROTOCOL 0x80000000 /* protocol ul2 or pl2 */ | 394 | #define UPGCR_PROTOCOL 0x80000000 /* protocol ul2 or pl2 */ |
334 | #define UPGCR_TMS 0x40000000 /* Transmit master/slave mode */ | 395 | #define UPGCR_TMS 0x40000000 /* Transmit master/slave mode */ |
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h index 87be8c3bc9cb..bc9739dff5e7 100644 --- a/include/asm-powerpc/system.h +++ b/include/asm-powerpc/system.h | |||
@@ -169,6 +169,8 @@ extern int do_page_fault(struct pt_regs *, unsigned long, unsigned long); | |||
169 | extern void bad_page_fault(struct pt_regs *, unsigned long, int); | 169 | extern void bad_page_fault(struct pt_regs *, unsigned long, int); |
170 | extern int die(const char *, struct pt_regs *, long); | 170 | extern int die(const char *, struct pt_regs *, long); |
171 | extern void _exception(int, struct pt_regs *, int, unsigned long); | 171 | extern void _exception(int, struct pt_regs *, int, unsigned long); |
172 | extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); | ||
173 | |||
172 | #ifdef CONFIG_BOOKE_WDT | 174 | #ifdef CONFIG_BOOKE_WDT |
173 | extern u32 booke_wdt_enabled; | 175 | extern u32 booke_wdt_enabled; |
174 | extern u32 booke_wdt_period; | 176 | extern u32 booke_wdt_period; |
diff --git a/include/linux/phy_fixed.h b/include/linux/phy_fixed.h index 04ba70d49fb8..509d8f5f984e 100644 --- a/include/linux/phy_fixed.h +++ b/include/linux/phy_fixed.h | |||
@@ -1,38 +1,31 @@ | |||
1 | #ifndef __PHY_FIXED_H | 1 | #ifndef __PHY_FIXED_H |
2 | #define __PHY_FIXED_H | 2 | #define __PHY_FIXED_H |
3 | 3 | ||
4 | #define MII_REGS_NUM 29 | ||
5 | |||
6 | /* max number of virtual phy stuff */ | ||
7 | #define MAX_PHY_AMNT 10 | ||
8 | /* | ||
9 | The idea is to emulate normal phy behavior by responding with | ||
10 | pre-defined values to mii BMCR read, so that read_status hook could | ||
11 | take all the needed info. | ||
12 | */ | ||
13 | |||
14 | struct fixed_phy_status { | 4 | struct fixed_phy_status { |
15 | u8 link; | 5 | int link; |
16 | u16 speed; | 6 | int speed; |
17 | u8 duplex; | 7 | int duplex; |
8 | int pause; | ||
9 | int asym_pause; | ||
18 | }; | 10 | }; |
19 | 11 | ||
20 | /*----------------------------------------------------------------------------- | 12 | #ifdef CONFIG_FIXED_PHY |
21 | * Private information hoder for mii_bus | 13 | extern int fixed_phy_add(unsigned int irq, int phy_id, |
22 | *-----------------------------------------------------------------------------*/ | 14 | struct fixed_phy_status *status); |
23 | struct fixed_info { | 15 | #else |
24 | u16 *regs; | 16 | static inline int fixed_phy_add(unsigned int irq, int phy_id, |
25 | u8 regs_num; | 17 | struct fixed_phy_status *status) |
26 | struct fixed_phy_status phy_status; | 18 | { |
27 | struct phy_device *phydev; /* pointer to the container */ | 19 | return -ENODEV; |
28 | /* link & speed cb */ | 20 | } |
29 | int (*link_update) (struct net_device *, struct fixed_phy_status *); | 21 | #endif /* CONFIG_FIXED_PHY */ |
30 | 22 | ||
31 | }; | 23 | /* |
32 | 24 | * This function issued only by fixed_phy-aware drivers, no need | |
33 | 25 | * protect it with #ifdef | |
34 | int fixed_mdio_set_link_update(struct phy_device *, | 26 | */ |
35 | int (*link_update) (struct net_device *, struct fixed_phy_status *)); | 27 | extern int fixed_phy_set_link_update(struct phy_device *phydev, |
36 | struct fixed_info *fixed_mdio_get_phydev (int phydev_ind); | 28 | int (*link_update)(struct net_device *, |
29 | struct fixed_phy_status *)); | ||
37 | 30 | ||
38 | #endif /* __PHY_FIXED_H */ | 31 | #endif /* __PHY_FIXED_H */ |