Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-2.6.25' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc into for-2.6.25

+9537 -702
+3
Documentation/powerpc/00-INDEX
··· 28 28 - info on sound support under Linux/PPC 29 29 zImage_layout.txt 30 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.
+84 -7
Documentation/powerpc/booting-without-of.txt
··· 52 52 i) Freescale QUICC Engine module (QE) 53 53 j) CFI or JEDEC memory-mapped NOR flash 54 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 61 VII - Specifying interrupt information for devices 58 62 1) interrupts property ··· 1261 1257 services interrupts for this device. 1262 1258 - phy-handle : The phandle for the PHY connected to this ethernet 1263 1259 controller. 1260 + - fixed-link : <a b c d e> where a is emulated phy id - choose any, 1261 + but unique to the all specified fixed-links, b is duplex - 0 half, 1262 + 1 full, c is link speed - d#10/d#100/d#1000, d is pause - 0 no 1263 + pause, 1 pause, e is asym_pause - 0 no asym_pause, 1 asym_pause. 1264 1264 1265 1265 Recommended properties: 1266 1266 ··· 1419 1411 1420 1412 Example multi port host USB controller device node : 1421 1413 usb@22000 { 1422 - device_type = "usb"; 1423 1414 compatible = "fsl-usb2-mph"; 1424 1415 reg = <22000 1000>; 1425 1416 #address-cells = <1>; ··· 1432 1425 1433 1426 Example dual role USB controller device node : 1434 1427 usb@23000 { 1435 - device_type = "usb"; 1436 1428 compatible = "fsl-usb2-dr"; 1437 1429 reg = <23000 1000>; 1438 1430 #address-cells = <1>; ··· 1595 1589 iii) USB (Universal Serial Bus Controller) 1596 1590 1597 1591 Required properties: 1598 - - device_type : should be "usb". 1599 1592 - compatible : could be "qe_udc" or "fhci-hcd". 1600 1593 - mode : the could be "host" or "slave". 1601 1594 - reg : Offset and length of the register set for the device ··· 1608 1603 1609 1604 Example(slave): 1610 1605 usb@6c0 { 1611 - device_type = "usb"; 1612 1606 compatible = "qe_udc"; 1613 1607 reg = <6c0 40>; 1614 1608 interrupts = <8b 0>; ··· 1620 1616 1621 1617 Required properties: 1622 1618 - device_type : should be "network", "hldc", "uart", "transparent" 1623 - "bisync" or "atm". 1619 + "bisync", "atm", or "serial". 1624 1620 - compatible : could be "ucc_geth" or "fsl_atm" and so on. 1625 1621 - model : should be "UCC". 1626 1622 - device-id : the ucc number(1-8), corresponding to UCCx in UM. ··· 1633 1629 - interrupt-parent : the phandle for the interrupt controller that 1634 1630 services interrupts for this device. 1635 1631 - pio-handle : The phandle for the Parallel I/O port configuration. 1632 + - port-number : for UART drivers, the port number to use, between 0 and 3. 1633 + This usually corresponds to the /dev/ttyQE device, e.g. <0> = /dev/ttyQE0. 1634 + The port number is added to the minor number of the device. Unlike the 1635 + CPM UART driver, the port-number is required for the QE UART driver. 1636 + - soft-uart : for UART drivers, if specified this means the QE UART device 1637 + driver should use "Soft-UART" mode, which is needed on some SOCs that have 1638 + broken UART hardware. Soft-UART is provided via a microcode upload. 1636 1639 - rx-clock-name: the UCC receive clock source 1637 1640 "none": clock source is disabled 1638 1641 "brg1" through "brg16": clock source is BRG1-BRG16, respectively ··· 1798 1787 reg = <0 c000>; 1799 1788 }; 1800 1789 }; 1790 + 1791 + viii) Uploaded QE firmware 1792 + 1793 + If a new firwmare has been uploaded to the QE (usually by the 1794 + boot loader), then a 'firmware' child node should be added to the QE 1795 + node. This node provides information on the uploaded firmware that 1796 + device drivers may need. 1797 + 1798 + Required properties: 1799 + - id: The string name of the firmware. This is taken from the 'id' 1800 + member of the qe_firmware structure of the uploaded firmware. 1801 + Device drivers can search this string to determine if the 1802 + firmware they want is already present. 1803 + - extended-modes: The Extended Modes bitfield, taken from the 1804 + firmware binary. It is a 64-bit number represented 1805 + as an array of two 32-bit numbers. 1806 + - virtual-traps: The virtual traps, taken from the firmware binary. 1807 + It is an array of 8 32-bit numbers. 1808 + 1809 + Example: 1810 + 1811 + firmware { 1812 + id = "Soft-UART"; 1813 + extended-modes = <0 0>; 1814 + virtual-traps = <0 0 0 0 0 0 0 0>; 1815 + } 1801 1816 1802 1817 j) CFI or JEDEC memory-mapped NOR flash 1803 1818 ··· 2306 2269 available. 2307 2270 For Axon: 0x0000012a 2308 2271 2309 - l) Xilinx IP cores 2272 + o) Xilinx IP cores 2310 2273 2311 2274 The Xilinx EDK toolchain ships with a set of IP cores (devices) for use 2312 2275 in Xilinx Spartan and Virtex FPGAs. The devices cover the whole range ··· 2575 2538 2576 2539 Requred properties: 2577 2540 - current-speed : Baud rate of uartlite 2541 + 2542 + p) Freescale Synchronous Serial Interface 2543 + 2544 + The SSI is a serial device that communicates with audio codecs. It can 2545 + be programmed in AC97, I2S, left-justified, or right-justified modes. 2546 + 2547 + Required properties: 2548 + - compatible : compatible list, containing "fsl,ssi" 2549 + - cell-index : the SSI, <0> = SSI1, <1> = SSI2, and so on 2550 + - reg : offset and length of the register set for the device 2551 + - interrupts : <a b> where a is the interrupt number and b is a 2552 + field that represents an encoding of the sense and 2553 + level information for the interrupt. This should be 2554 + encoded based on the information in section 2) 2555 + depending on the type of interrupt controller you 2556 + have. 2557 + - interrupt-parent : the phandle for the interrupt controller that 2558 + services interrupts for this device. 2559 + - fsl,mode : the operating mode for the SSI interface 2560 + "i2s-slave" - I2S mode, SSI is clock slave 2561 + "i2s-master" - I2S mode, SSI is clock master 2562 + "lj-slave" - left-justified mode, SSI is clock slave 2563 + "lj-master" - l.j. mode, SSI is clock master 2564 + "rj-slave" - right-justified mode, SSI is clock slave 2565 + "rj-master" - r.j., SSI is clock master 2566 + "ac97-slave" - AC97 mode, SSI is clock slave 2567 + "ac97-master" - AC97 mode, SSI is clock master 2568 + 2569 + Optional properties: 2570 + - codec-handle : phandle to a 'codec' node that defines an audio 2571 + codec connected to this SSI. This node is typically 2572 + a child of an I2C or other control node. 2573 + 2574 + Child 'codec' node required properties: 2575 + - compatible : compatible list, contains the name of the codec 2576 + 2577 + Child 'codec' node optional properties: 2578 + - clock-frequency : The frequency of the input clock, which typically 2579 + comes from an on-board dedicated oscillator. 2580 + 2578 2581 2579 2582 More devices will be defined as this spec matures. 2580 2583
+295
Documentation/powerpc/qe_firmware.txt
··· 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.
+3
arch/powerpc/Kconfig
··· 140 140 Used to allow a board to specify it wants a uImage built by default 141 141 default n 142 142 143 + config REDBOOT 144 + bool 145 + 143 146 config PPC64_SWSUSP 144 147 bool 145 148 depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL))
+1
arch/powerpc/boot/.gitignore
··· 31 31 zImage.miboot 32 32 zImage.pmac 33 33 zImage.pseries 34 + zImage.redboot* 34 35 zImage.sandpoint 35 36 zImage.vmode 36 37 zconf.h
+8 -2
arch/powerpc/boot/Makefile
··· 57 57 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ 58 58 cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ 59 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 61 cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ 62 62 ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ 63 63 cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c \ 64 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 66 src-boot := $(src-wlib) $(src-plat) empty.c 67 67 68 68 src-boot := $(addprefix $(obj)/, $(src-boot)) ··· 195 195 image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc 196 196 image-$(CONFIG_EP405) += zImage.ep405 197 197 image-$(CONFIG_8260) += cuImage.pq2 198 + image-$(CONFIG_EP8248E) += zImage.ep8248e 198 199 image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx 200 + image-$(CONFIG_STORCENTER) += cuImage.824x 199 201 image-$(CONFIG_PPC_83xx) += cuImage.83xx 200 202 image-$(CONFIG_PPC_85xx) += cuImage.85xx 201 203 image-$(CONFIG_MPC7448HPC2) += cuImage.hpc2 ··· 208 206 image-$(CONFIG_WALNUT) += treeImage.walnut 209 207 image-$(CONFIG_TAISHAN) += cuImage.taishan 210 208 image-$(CONFIG_KATMAI) += cuImage.katmai 209 + endif 210 + 211 + ifneq ($(CONFIG_REDBOOT),"") 212 + image-$(CONFIG_PPC_8xx) += zImage.redboot-8xx 211 213 endif 212 214 213 215 # For 32-bit powermacs, build the COFF and miboot images
+53
arch/powerpc/boot/cuboot-824x.c
··· 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 + }
+2 -1
arch/powerpc/boot/cuboot-83xx.c
··· 24 24 void *soc; 25 25 26 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 29 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); 29 30 30 31 /* Unfortunately, the specific model number is encoded in the
+3 -2
arch/powerpc/boot/cuboot-85xx.c
··· 24 24 void *soc; 25 25 26 26 dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); 27 - dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr, 28 - bd.bi_enet2addr); 27 + dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); 28 + dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); 29 + dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr); 29 30 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); 30 31 31 32 /* Unfortunately, the specific model number is encoded in the
+14
arch/powerpc/boot/devtree.c
··· 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 105 void dt_fixup_mac_address(u32 index, const u8 *addr) 92 106 { 93 107 void *devp = find_node_by_prop_value(NULL, "linux,network-index",
+184
arch/powerpc/boot/dts/adder875-redboot.dts
··· 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 = &eth0; 23 + ethernet1 = &eth1; 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 + };
+183
arch/powerpc/boot/dts/adder875-uboot.dts
··· 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 = &eth0; 23 + ethernet1 = &eth1; 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 + };
+207
arch/powerpc/boot/dts/ep8248e.dts
··· 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 = &eth0; 23 + ethernet1 = &eth1; 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 + };
+48 -1
arch/powerpc/boot/dts/mpc8313erdb.dts
··· 45 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 95 soc8313@e0000000 { 49 96 #address-cells = <1>; 50 97 #size-cells = <1>; 51 98 device_type = "soc"; 99 + compatible = "simple-bus"; 52 100 ranges = <0 e0000000 00100000>; 53 101 reg = <e0000000 00000200>; 54 102 bus-frequency = <0>; ··· 140 92 141 93 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ 142 94 usb@23000 { 143 - device_type = "usb"; 144 95 compatible = "fsl-usb2-dr"; 145 96 reg = <23000 1000>; 146 97 #address-cells = <1>;
+50 -1
arch/powerpc/boot/dts/mpc832x_mds.dts
··· 7 7 * under the terms of the GNU General Public License as published by the 8 8 * Free Software Foundation; either version 2 of the License, or (at your 9 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 / { ··· 181 169 1 1e 1 0 1 0 /* TX_EN */ 182 170 1 1f 2 0 1 0>;/* CRS */ 183 171 }; 172 + pio5: ucc_pin@05 { 173 + pio-map = < 174 + /* 175 + * open has 176 + * port pin dir drain sel irq 177 + */ 178 + 2 0 1 0 2 0 /* TxD5 */ 179 + 2 8 2 0 2 0 /* RxD5 */ 180 + 181 + 2 1d 2 0 0 0 /* CTS5 */ 182 + 2 1f 1 0 2 0 /* RTS5 */ 183 + 184 + 2 18 2 0 0 0 /* CD */ 185 + 186 + >; 187 + }; 188 + 184 189 }; 185 190 }; 186 191 ··· 205 176 #address-cells = <1>; 206 177 #size-cells = <1>; 207 178 device_type = "qe"; 179 + compatible = "fsl,qe"; 208 180 model = "QE"; 209 181 ranges = <0 e0100000 00100000>; 210 182 reg = <e0100000 480>; ··· 240 210 }; 241 211 242 212 usb@6c0 { 243 - device_type = "usb"; 244 213 compatible = "qe_udc"; 245 214 reg = <6c0 40 8B00 100>; 246 215 interrupts = <b>; ··· 278 249 phy-handle = < &phy4 >; 279 250 pio-handle = < &pio4 >; 280 251 }; 252 + 253 + ucc@2400 { 254 + device_type = "serial"; 255 + compatible = "ucc_uart"; 256 + model = "UCC"; 257 + device-id = <5>; /* The UCC number, 1-7*/ 258 + port-number = <0>; /* Which ttyQEx device */ 259 + soft-uart; /* We need Soft-UART */ 260 + reg = <2400 200>; 261 + interrupts = <28>; /* From Table 18-12 */ 262 + interrupt-parent = < &qeic >; 263 + /* 264 + * For Soft-UART, we need to set TX to 1X, which 265 + * means specifying separate clock sources. 266 + */ 267 + rx-clock-name = "brg5"; 268 + tx-clock-name = "brg6"; 269 + pio-handle = < &pio5 >; 270 + }; 271 + 281 272 282 273 mdio@2320 { 283 274 #address-cells = <1>;
+18 -12
arch/powerpc/boot/dts/mpc8349emitx.dts
··· 91 91 }; 92 92 93 93 usb@22000 { 94 - device_type = "usb"; 95 94 compatible = "fsl-usb2-mph"; 96 95 reg = <22000 1000>; 97 96 #address-cells = <1>; ··· 102 103 }; 103 104 104 105 usb@23000 { 105 - device_type = "usb"; 106 106 compatible = "fsl-usb2-dr"; 107 107 reg = <23000 1000>; 108 108 #address-cells = <1>; ··· 123 125 interrupt-parent = < &ipic >; 124 126 interrupts = <12 8>; 125 127 reg = <1c>; 126 - device_type = "ethernet-phy"; 127 - }; 128 - 129 - /* Vitesse 7385 */ 130 - phy1f: ethernet-phy@1f { 131 - interrupt-parent = < &ipic >; 132 - interrupts = <12 8>; 133 - reg = <1f>; 134 128 device_type = "ethernet-phy"; 135 129 }; 136 130 }; ··· 149 159 local-mac-address = [ 00 00 00 00 00 00 ]; 150 160 interrupts = <23 8 24 8 25 8>; 151 161 interrupt-parent = < &ipic >; 152 - phy-handle = < &phy1f >; 162 + /* Vitesse 7385 isn't on the MDIO bus */ 163 + fixed-link = <1 1 d#1000 0 0>; 153 164 linux,network-index = <1>; 154 165 }; 155 166 ··· 244 253 device_type = "pci"; 245 254 }; 246 255 256 + localbus@e0005000 { 257 + #address-cells = <2>; 258 + #size-cells = <1>; 259 + compatible = "fsl,mpc8349e-localbus", 260 + "fsl,pq2pro-localbus"; 261 + reg = <e0005000 d8>; 262 + ranges = <3 0 f0000000 210>; 247 263 248 - 264 + pata@3,0 { 265 + compatible = "fsl,mpc8349emitx-pata", "ata-generic"; 266 + reg = <3 0 10 3 20c 4>; 267 + reg-shift = <1>; 268 + pio-mode = <6>; 269 + interrupts = <17 8>; 270 + interrupt-parent = <&ipic>; 271 + }; 272 + }; 249 273 };
-1
arch/powerpc/boot/dts/mpc8349emitxgp.dts
··· 89 89 }; 90 90 91 91 usb@23000 { 92 - device_type = "usb"; 93 92 compatible = "fsl-usb2-dr"; 94 93 reg = <23000 1000>; 95 94 #address-cells = <1>;
-2
arch/powerpc/boot/dts/mpc834x_mds.dts
··· 104 104 /* phy type (ULPI or SERIAL) are only types supportted for MPH */ 105 105 /* port = 0 or 1 */ 106 106 usb@22000 { 107 - device_type = "usb"; 108 107 compatible = "fsl-usb2-mph"; 109 108 reg = <22000 1000>; 110 109 #address-cells = <1>; ··· 115 116 }; 116 117 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ 117 118 usb@23000 { 118 - device_type = "usb"; 119 119 compatible = "fsl-usb2-dr"; 120 120 reg = <23000 1000>; 121 121 #address-cells = <1>;
-1
arch/powerpc/boot/dts/mpc836x_mds.dts
··· 241 241 }; 242 242 243 243 usb@6c0 { 244 - device_type = "usb"; 245 244 compatible = "qe_udc"; 246 245 reg = <6c0 40 8B00 100>; 247 246 interrupts = <b>;
+279
arch/powerpc/boot/dts/mpc8377_mds.dts
··· 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 + };
+265
arch/powerpc/boot/dts/mpc8378_mds.dts
··· 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 + };
+293
arch/powerpc/boot/dts/mpc8379_mds.dts
··· 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 + };
+3 -3
arch/powerpc/boot/dts/mpc8544ds.dts
··· 304 304 interrupt-map = < 305 305 // IDSEL 0x1c USB 306 306 e000 0 0 1 &i8259 c 2 307 - e100 0 0 1 &i8259 9 2 308 - e200 0 0 1 &i8259 a 2 309 - e300 0 0 1 &i8259 b 2 307 + e100 0 0 2 &i8259 9 2 308 + e200 0 0 3 &i8259 a 2 309 + e300 0 0 4 &i8259 b 2 310 310 311 311 // IDSEL 0x1d Audio 312 312 e800 0 0 1 &i8259 6 2
+4 -3
arch/powerpc/boot/dts/mpc8572ds.dts
··· 334 334 335 335 // IDSEL 0x1c USB 336 336 e000 0 0 1 &i8259 c 2 337 - e100 0 0 1 &i8259 9 2 338 - e200 0 0 1 &i8259 a 2 339 - e300 0 0 1 &i8259 b 2 337 + e100 0 0 2 &i8259 9 2 338 + e200 0 0 3 &i8259 a 2 339 + e300 0 0 4 &i8259 b 2 340 340 341 341 // IDSEL 0x1d Audio 342 342 e800 0 0 1 &i8259 6 2 ··· 481 481 clock-frequency = <1fca055>; 482 482 interrupt-parent = <&mpic>; 483 483 interrupts = <1b 2>; 484 + interrupt-map-mask = <f800 0 0 7>; 484 485 interrupt-map = < 485 486 /* IDSEL 0x0 */ 486 487 0000 0 0 1 &mpic 0 1
+112 -1
arch/powerpc/boot/dts/mpc8610_hpcd.dts
··· 1 1 /* 2 2 * MPC8610 HPCD Device Tree Source 3 3 * 4 - * Copyright 2007 Freescale Semiconductor Inc. 4 + * Copyright 2007-2008 Freescale Semiconductor Inc. 5 5 * 6 6 * This program is free software; you can redistribute it and/or modify it 7 7 * under the terms of the GNU General Public License Version 2 as published ··· 49 49 #size-cells = <1>; 50 50 #interrupt-cells = <2>; 51 51 device_type = "soc"; 52 + compatible = "fsl,mpc8610-immr", "simple-bus"; 52 53 ranges = <0 e0000000 00100000>; 53 54 reg = <e0000000 1000>; 54 55 bus-frequency = <0>; ··· 63 62 interrupts = <2b 2>; 64 63 interrupt-parent = <&mpic>; 65 64 dfsrr; 65 + 66 + cs4270:codec@4f { 67 + compatible = "cirrus,cs4270"; 68 + reg = <4f>; 69 + /* MCLK source is a stand-alone oscillator */ 70 + clock-frequency = <bb8000>; 71 + }; 66 72 }; 67 73 68 74 i2c@3100 { ··· 119 111 reg = <e0000 1000>; 120 112 fsl,has-rstcr; 121 113 }; 114 + 115 + i2s@16000 { 116 + compatible = "fsl,mpc8610-ssi"; 117 + cell-index = <0>; 118 + reg = <16000 100>; 119 + interrupt-parent = <&mpic>; 120 + interrupts = <3e 2>; 121 + fsl,mode = "i2s-slave"; 122 + codec-handle = <&cs4270>; 123 + }; 124 + 125 + ssi@16100 { 126 + compatible = "fsl,mpc8610-ssi"; 127 + cell-index = <1>; 128 + reg = <16100 100>; 129 + interrupt-parent = <&mpic>; 130 + interrupts = <3f 2>; 131 + }; 132 + 133 + dma@21300 { 134 + #address-cells = <1>; 135 + #size-cells = <1>; 136 + compatible = "fsl,mpc8610-dma", "fsl,eloplus-dma"; 137 + cell-index = <0>; 138 + reg = <21300 4>; /* DMA general status register */ 139 + ranges = <0 21100 200>; 140 + 141 + dma-channel@0 { 142 + compatible = "fsl,mpc8610-dma-channel", 143 + "fsl,eloplus-dma-channel"; 144 + cell-index = <0>; 145 + reg = <0 80>; 146 + interrupt-parent = <&mpic>; 147 + interrupts = <14 2>; 148 + }; 149 + dma-channel@1 { 150 + compatible = "fsl,mpc8610-dma-channel", 151 + "fsl,eloplus-dma-channel"; 152 + cell-index = <1>; 153 + reg = <80 80>; 154 + interrupt-parent = <&mpic>; 155 + interrupts = <15 2>; 156 + }; 157 + dma-channel@2 { 158 + compatible = "fsl,mpc8610-dma-channel", 159 + "fsl,eloplus-dma-channel"; 160 + cell-index = <2>; 161 + reg = <100 80>; 162 + interrupt-parent = <&mpic>; 163 + interrupts = <16 2>; 164 + }; 165 + dma-channel@3 { 166 + compatible = "fsl,mpc8610-dma-channel", 167 + "fsl,eloplus-dma-channel"; 168 + cell-index = <3>; 169 + reg = <180 80>; 170 + interrupt-parent = <&mpic>; 171 + interrupts = <17 2>; 172 + }; 173 + }; 174 + 175 + dma@c300 { 176 + #address-cells = <1>; 177 + #size-cells = <1>; 178 + compatible = "fsl,mpc8610-dma", "fsl,mpc8540-dma"; 179 + cell-index = <1>; 180 + reg = <c300 4>; /* DMA general status register */ 181 + ranges = <0 c100 200>; 182 + 183 + dma-channel@0 { 184 + compatible = "fsl,mpc8610-dma-channel", 185 + "fsl,mpc8540-dma-channel"; 186 + cell-index = <0>; 187 + reg = <0 80>; 188 + interrupt-parent = <&mpic>; 189 + interrupts = <3c 2>; 190 + }; 191 + dma-channel@1 { 192 + compatible = "fsl,mpc8610-dma-channel", 193 + "fsl,mpc8540-dma-channel"; 194 + cell-index = <1>; 195 + reg = <80 80>; 196 + interrupt-parent = <&mpic>; 197 + interrupts = <3d 2>; 198 + }; 199 + dma-channel@2 { 200 + compatible = "fsl,mpc8610-dma-channel", 201 + "fsl,mpc8540-dma-channel"; 202 + cell-index = <2>; 203 + reg = <100 80>; 204 + interrupt-parent = <&mpic>; 205 + interrupts = <3e 2>; 206 + }; 207 + dma-channel@3 { 208 + compatible = "fsl,mpc8610-dma-channel", 209 + "fsl,mpc8540-dma-channel"; 210 + cell-index = <3>; 211 + reg = <180 80>; 212 + interrupt-parent = <&mpic>; 213 + interrupts = <3f 2>; 214 + }; 215 + }; 216 + 122 217 }; 123 218 124 219 pci0: pci@e0008000 {
+45 -3
arch/powerpc/boot/dts/mpc8641_hpcn.dts
··· 60 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 104 soc8641@f8000000 { 64 105 #address-cells = <1>; 65 106 #size-cells = <1>; 66 107 device_type = "soc"; 108 + compatible = "simple-bus"; 67 109 ranges = <00000000 f8000000 00100000>; 68 110 reg = <f8000000 00001000>; // CCSRBAR 69 111 bus-frequency = <0>; ··· 368 326 369 327 // IDSEL 0x1c USB 370 328 e000 0 0 1 &i8259 c 2 371 - e100 0 0 1 &i8259 9 2 372 - e200 0 0 1 &i8259 a 2 373 - e300 0 0 1 &i8259 b 2 329 + e100 0 0 2 &i8259 9 2 330 + e200 0 0 3 &i8259 a 2 331 + e300 0 0 4 &i8259 b 2 374 332 375 333 // IDSEL 0x1d Audio 376 334 e800 0 0 1 &i8259 6 2
+138
arch/powerpc/boot/dts/storcenter.dts
··· 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 + };
+55
arch/powerpc/boot/ep8248e.c
··· 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 + }
+14
arch/powerpc/boot/ops.h
··· 159 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 175 void dt_fixup_memory(u64 start, u64 size); 163 176 void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq); 164 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 179 void dt_fixup_mac_address(u32 index, const u8 *addr); 166 180 void __dt_fixup_mac_addresses(u32 startindex, ...); 167 181 #define dt_fixup_mac_addresses(...) \
+58
arch/powerpc/boot/redboot-8xx.c
··· 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 + }
+56
arch/powerpc/boot/redboot.h
··· 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
+1 -1
arch/powerpc/boot/wrapper
··· 168 168 ksection=.kernel:vmlinux.bin 169 169 isection=.kernel:initrd 170 170 ;; 171 - ep88xc|ep405) 171 + ep88xc|ep405|redboot*|ep8248e) 172 172 platformo="$object/fixed-head.o $object/$platform.o" 173 173 binary=y 174 174 ;;
+798
arch/powerpc/configs/adder875-redboot_defconfig
··· 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
+798
arch/powerpc/configs/adder875-uboot_defconfig
··· 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
+821
arch/powerpc/configs/ep8248e_defconfig
··· 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
+33 -13
arch/powerpc/configs/mpc8313_rdb_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.24-rc4 4 - # Thu Dec 6 16:48:31 2007 3 + # Linux kernel version: 2.6.24-rc6 4 + # Thu Jan 17 16:35:55 2008 5 5 # 6 6 # CONFIG_PPC64 is not set 7 7 ··· 144 144 # CONFIG_MPC834x_MDS is not set 145 145 # CONFIG_MPC834x_ITX is not set 146 146 # CONFIG_MPC836x_MDS is not set 147 + # CONFIG_MPC837x_MDS is not set 147 148 CONFIG_PPC_MPC831x=y 148 149 # CONFIG_MPIC is not set 149 150 # CONFIG_MPIC_WEIRD is not set ··· 337 336 CONFIG_MTD=y 338 337 # CONFIG_MTD_DEBUG is not set 339 338 # CONFIG_MTD_CONCAT is not set 340 - # CONFIG_MTD_PARTITIONS is not set 339 + CONFIG_MTD_PARTITIONS=y 340 + # CONFIG_MTD_REDBOOT_PARTS is not set 341 + # CONFIG_MTD_CMDLINE_PARTS is not set 341 342 342 343 # 343 344 # User Modules And Translation Layers 344 345 # 345 346 CONFIG_MTD_CHAR=y 346 - # CONFIG_MTD_BLKDEVS is not set 347 - # CONFIG_MTD_BLOCK is not set 348 - # CONFIG_MTD_BLOCK_RO is not set 347 + CONFIG_MTD_BLKDEVS=y 348 + CONFIG_MTD_BLOCK=y 349 349 # CONFIG_FTL is not set 350 350 # CONFIG_NFTL is not set 351 351 # CONFIG_INFTL is not set ··· 383 381 # Mapping drivers for chip access 384 382 # 385 383 # CONFIG_MTD_COMPLEX_MAPPINGS is not set 386 - CONFIG_MTD_PHYSMAP=y 387 - CONFIG_MTD_PHYSMAP_START=0xfe000000 388 - CONFIG_MTD_PHYSMAP_LEN=0x1000000 389 - CONFIG_MTD_PHYSMAP_BANKWIDTH=2 390 - # CONFIG_MTD_PHYSMAP_OF is not set 384 + # CONFIG_MTD_PHYSMAP is not set 385 + CONFIG_MTD_PHYSMAP_OF=y 391 386 # CONFIG_MTD_INTEL_VR_NOR is not set 392 387 # CONFIG_MTD_PLATRAM is not set 393 388 ··· 405 406 # CONFIG_MTD_DOC2000 is not set 406 407 # CONFIG_MTD_DOC2001 is not set 407 408 # CONFIG_MTD_DOC2001PLUS is not set 408 - # CONFIG_MTD_NAND is not set 409 + CONFIG_MTD_NAND=y 410 + CONFIG_MTD_NAND_VERIFY_WRITE=y 411 + # CONFIG_MTD_NAND_ECC_SMC is not set 412 + # CONFIG_MTD_NAND_MUSEUM_IDS is not set 413 + CONFIG_MTD_NAND_IDS=y 414 + # CONFIG_MTD_NAND_DISKONCHIP is not set 415 + # CONFIG_MTD_NAND_CAFE is not set 416 + # CONFIG_MTD_NAND_NANDSIM is not set 417 + # CONFIG_MTD_NAND_PLATFORM is not set 418 + # CONFIG_MTD_ALAUDA is not set 409 419 # CONFIG_MTD_ONENAND is not set 410 420 411 421 # ··· 1186 1178 # CONFIG_BEFS_FS is not set 1187 1179 # CONFIG_BFS_FS is not set 1188 1180 # CONFIG_EFS_FS is not set 1189 - # CONFIG_JFFS2_FS is not set 1181 + CONFIG_JFFS2_FS=y 1182 + CONFIG_JFFS2_FS_DEBUG=0 1183 + CONFIG_JFFS2_FS_WRITEBUFFER=y 1184 + # CONFIG_JFFS2_FS_WBUF_VERIFY is not set 1185 + # CONFIG_JFFS2_SUMMARY is not set 1186 + # CONFIG_JFFS2_FS_XATTR is not set 1187 + # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 1188 + CONFIG_JFFS2_ZLIB=y 1189 + # CONFIG_JFFS2_LZO is not set 1190 + CONFIG_JFFS2_RTIME=y 1191 + # CONFIG_JFFS2_RUBIN is not set 1190 1192 # CONFIG_CRAMFS is not set 1191 1193 # CONFIG_VXFS_FS is not set 1192 1194 # CONFIG_HPFS_FS is not set ··· 1260 1242 CONFIG_CRC32=y 1261 1243 # CONFIG_CRC7 is not set 1262 1244 # CONFIG_LIBCRC32C is not set 1245 + CONFIG_ZLIB_INFLATE=y 1246 + CONFIG_ZLIB_DEFLATE=y 1263 1247 CONFIG_PLIST=y 1264 1248 CONFIG_HAS_IOMEM=y 1265 1249 CONFIG_HAS_IOPORT=y
+2 -1
arch/powerpc/configs/mpc834x_itx_defconfig
··· 570 570 # CONFIG_PATA_SIS is not set 571 571 # CONFIG_PATA_VIA is not set 572 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 575 CONFIG_MD=y 575 576 CONFIG_BLK_DEV_MD=y 576 577 CONFIG_MD_LINEAR=y
+168 -3
arch/powerpc/configs/mpc8610_hpcd_defconfig
··· 696 696 CONFIG_SERIAL_CORE=y 697 697 CONFIG_SERIAL_CORE_CONSOLE=y 698 698 # CONFIG_SERIAL_JSM is not set 699 - CONFIG_SERIAL_OF_PLATFORM=y 699 + # CONFIG_SERIAL_OF_PLATFORM is not set 700 700 CONFIG_UNIX98_PTYS=y 701 701 # CONFIG_LEGACY_PTYS is not set 702 702 # CONFIG_IPMI_HANDLER is not set ··· 708 708 # CONFIG_RAW_DRIVER is not set 709 709 # CONFIG_TCG_TPM is not set 710 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 767 # SPI support ··· 816 763 # 817 764 # Sound 818 765 # 819 - # CONFIG_SOUND is not set 766 + CONFIG_SOUND=y 767 + 768 + # 769 + # Advanced Linux Sound Architecture 770 + # 771 + CONFIG_SND=y 772 + CONFIG_SND_TIMER=y 773 + CONFIG_SND_PCM=y 774 + # CONFIG_SND_SEQUENCER is not set 775 + CONFIG_SND_OSSEMUL=y 776 + CONFIG_SND_MIXER_OSS=y 777 + CONFIG_SND_PCM_OSS=y 778 + # CONFIG_SND_PCM_OSS_PLUGINS is not set 779 + # CONFIG_SND_DYNAMIC_MINORS is not set 780 + # CONFIG_SND_SUPPORT_OLD_API is not set 781 + CONFIG_SND_VERBOSE_PROCFS=y 782 + # CONFIG_SND_VERBOSE_PRINTK is not set 783 + # CONFIG_SND_DEBUG is not set 784 + 785 + # 786 + # Generic devices 787 + # 788 + # CONFIG_SND_DUMMY is not set 789 + # CONFIG_SND_MTPAV is not set 790 + # CONFIG_SND_SERIAL_U16550 is not set 791 + # CONFIG_SND_MPU401 is not set 792 + 793 + # 794 + # PCI devices 795 + # 796 + # CONFIG_SND_AD1889 is not set 797 + # CONFIG_SND_ALS300 is not set 798 + # CONFIG_SND_ALS4000 is not set 799 + # CONFIG_SND_ALI5451 is not set 800 + # CONFIG_SND_ATIIXP is not set 801 + # CONFIG_SND_ATIIXP_MODEM is not set 802 + # CONFIG_SND_AU8810 is not set 803 + # CONFIG_SND_AU8820 is not set 804 + # CONFIG_SND_AU8830 is not set 805 + # CONFIG_SND_AZT3328 is not set 806 + # CONFIG_SND_BT87X is not set 807 + # CONFIG_SND_CA0106 is not set 808 + # CONFIG_SND_CMIPCI is not set 809 + # CONFIG_SND_CS4281 is not set 810 + # CONFIG_SND_CS46XX is not set 811 + # CONFIG_SND_CS5530 is not set 812 + # CONFIG_SND_DARLA20 is not set 813 + # CONFIG_SND_GINA20 is not set 814 + # CONFIG_SND_LAYLA20 is not set 815 + # CONFIG_SND_DARLA24 is not set 816 + # CONFIG_SND_GINA24 is not set 817 + # CONFIG_SND_LAYLA24 is not set 818 + # CONFIG_SND_MONA is not set 819 + # CONFIG_SND_MIA is not set 820 + # CONFIG_SND_ECHO3G is not set 821 + # CONFIG_SND_INDIGO is not set 822 + # CONFIG_SND_INDIGOIO is not set 823 + # CONFIG_SND_INDIGODJ is not set 824 + # CONFIG_SND_EMU10K1 is not set 825 + # CONFIG_SND_EMU10K1X is not set 826 + # CONFIG_SND_ENS1370 is not set 827 + # CONFIG_SND_ENS1371 is not set 828 + # CONFIG_SND_ES1938 is not set 829 + # CONFIG_SND_ES1968 is not set 830 + # CONFIG_SND_FM801 is not set 831 + # CONFIG_SND_HDA_INTEL is not set 832 + # CONFIG_SND_HDSP is not set 833 + # CONFIG_SND_HDSPM is not set 834 + # CONFIG_SND_ICE1712 is not set 835 + # CONFIG_SND_ICE1724 is not set 836 + # CONFIG_SND_INTEL8X0 is not set 837 + # CONFIG_SND_INTEL8X0M is not set 838 + # CONFIG_SND_KORG1212 is not set 839 + # CONFIG_SND_MAESTRO3 is not set 840 + # CONFIG_SND_MIXART is not set 841 + # CONFIG_SND_NM256 is not set 842 + # CONFIG_SND_PCXHR is not set 843 + # CONFIG_SND_RIPTIDE is not set 844 + # CONFIG_SND_RME32 is not set 845 + # CONFIG_SND_RME96 is not set 846 + # CONFIG_SND_RME9652 is not set 847 + # CONFIG_SND_SONICVIBES is not set 848 + # CONFIG_SND_TRIDENT is not set 849 + # CONFIG_SND_VIA82XX is not set 850 + # CONFIG_SND_VIA82XX_MODEM is not set 851 + # CONFIG_SND_VX222 is not set 852 + # CONFIG_SND_YMFPCI is not set 853 + 854 + # 855 + # ALSA PowerMac devices 856 + # 857 + 858 + # 859 + # ALSA PowerPC devices 860 + # 861 + 862 + # 863 + # System on Chip audio support 864 + # 865 + CONFIG_SND_SOC=y 866 + 867 + # 868 + # SoC Audio support for SuperH 869 + # 870 + 871 + # 872 + # ALSA SoC audio for Freescale SOCs 873 + # 874 + CONFIG_SND_SOC_MPC8610=y 875 + CONFIG_SND_SOC_MPC8610_HPCD=y 876 + CONFIG_SND_SOC_CS4270=y 877 + CONFIG_SND_SOC_CS4270_VD33_ERRATA=y 878 + 820 879 CONFIG_HID_SUPPORT=y 821 880 CONFIG_HID=y 822 881 # CONFIG_HID_DEBUG is not set
+1174
arch/powerpc/configs/storcenter_defconfig
··· 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
+1
arch/powerpc/kernel/Makefile
··· 70 70 obj-$(CONFIG_PCI) += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \ 71 71 pci-common.o 72 72 obj-$(CONFIG_PCI_MSI) += msi.o 73 + obj-$(CONFIG_RAPIDIO) += rio.o 73 74 obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o \ 74 75 machine_kexec_$(CONFIG_WORD_SIZE).o 75 76 obj-$(CONFIG_AUDIT) += audit.o
+13 -7
arch/powerpc/kernel/head_fsl_booke.S
··· 73 73 /* We try to not make any assumptions about how the boot loader 74 74 * setup or used the TLBs. We invalidate all mappings from the 75 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 77 - * bootloader needs to live in this first 16M. 76 + * first 64M of kernel memory. Any boot info passed from the 77 + * bootloader needs to live in this first 64M. 78 78 * 79 79 * Requirement on bootloader: 80 80 * - The page we're executing in needs to reside in TLB1 and ··· 167 167 mtspr SPRN_MAS0,r7 168 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 171 lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ 172 172 rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ 173 173 mtspr SPRN_MAS0,r7 ··· 177 177 ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l 178 178 mtspr SPRN_MAS1,r6 179 179 mfspr r6,SPRN_MAS2 180 - li r7,0 /* temp EPN = 0 */ 180 + lis r7,PHYSICAL_START@h 181 181 rlwimi r7,r6,0,20,31 182 182 mtspr SPRN_MAS2,r7 183 + mfspr r6,SPRN_MAS3 184 + rlwimi r7,r6,0,20,31 185 + mtspr SPRN_MAS3,r7 183 186 tlbwe 184 187 185 188 xori r6,r4,1 ··· 225 222 lis r6,0x1000 /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */ 226 223 mtspr SPRN_MAS0,r6 227 224 lis r6,(MAS1_VALID|MAS1_IPROT)@h 228 - ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_16M))@l 225 + ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_64M))@l 229 226 mtspr SPRN_MAS1,r6 230 227 li r7,0 231 - lis r6,KERNELBASE@h 232 - ori r6,r6,KERNELBASE@l 228 + lis r6,PAGE_OFFSET@h 229 + ori r6,r6,PAGE_OFFSET@l 233 230 rlwimi r6,r7,0,20,31 234 231 mtspr SPRN_MAS2,r6 235 232 li r7,(MAS3_SX|MAS3_SW|MAS3_SR) ··· 237 234 tlbwe 238 235 239 236 /* 7. Jump to KERNELBASE mapping */ 237 + lis r6,KERNELBASE@h 238 + ori r6,r6,KERNELBASE@l 239 + rlwimi r6,r7,0,20,31 240 240 lis r7,MSR_KERNEL@h 241 241 ori r7,r7,MSR_KERNEL@l 242 242 bl 1f /* Find our address */
+5 -3
arch/powerpc/kernel/pci-common.c
··· 792 792 for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) { 793 793 if ((res = bus->resource[i]) == NULL) 794 794 continue; 795 - if (!res->flags || bus->self->transparent) 795 + if (!res->flags) 796 796 continue; 797 - 797 + if (i >= 3 && bus->self->transparent) 798 + continue; 798 799 /* On PowerMac, Apple leaves bridge windows open over 799 800 * an inaccessible region of memory space (0...fffff) 800 801 * which is somewhat bogus, but that's what they think ··· 807 806 * equal to the pci_mem_offset of the host bridge and 808 807 * their size is smaller than 1M. 809 808 */ 810 - if (res->start == hose->pci_mem_offset && 809 + if (res->flags & IORESOURCE_MEM && 810 + res->start == hose->pci_mem_offset && 811 811 res->end < 0x100000) { 812 812 printk(KERN_INFO 813 813 "PCI: Closing bogus Apple Firmware"
-58
arch/powerpc/kernel/pci_32.c
··· 94 94 } 95 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 97 #ifdef CONFIG_PPC_OF 156 98 /* 157 99 * Functions below are used on OpenFirmware machines.
+30 -10
arch/powerpc/math-emu/op-4.h
··· 194 194 (X##_f[3] = I3, X##_f[2] = I2, X##_f[1] = I1, X##_f[0] = I0) 195 195 196 196 #ifndef __FP_FRAC_ADD_4 197 - #define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ 198 - (r0 = x0 + y0, \ 199 - r1 = x1 + y1 + (r0 < x0), \ 200 - r2 = x2 + y2 + (r1 < x1), \ 201 - r3 = x3 + y3 + (r2 < x2)) 197 + #define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ 198 + do { \ 199 + int _c1, _c2, _c3; \ 200 + r0 = x0 + y0; \ 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 212 #endif 203 213 204 214 #ifndef __FP_FRAC_SUB_4 205 - #define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ 206 - (r0 = x0 - y0, \ 207 - r1 = x1 - y1 - (r0 > x0), \ 208 - r2 = x2 - y2 - (r1 > x1), \ 209 - r3 = x3 - y3 - (r2 > x2)) 215 + #define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ 216 + do { \ 217 + int _c1, _c2, _c3; \ 218 + r0 = x0 - y0; \ 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 230 #endif 211 231 212 232 #ifndef __FP_FRAC_ADDI_4
+3 -3
arch/powerpc/mm/fsl_booke_mmu.c
··· 165 165 void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1, 166 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 169 tlbcam_index++; 170 170 if (cam1) { 171 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 174 if (cam2) { 175 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
+13
arch/powerpc/mm/lmb.c
··· 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 + }
+19 -2
arch/powerpc/mm/mem.c
··· 213 213 */ 214 214 #ifdef CONFIG_HIGHMEM 215 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 231 #else 217 232 free_bootmem_with_active_regions(0, max_pfn); 218 - #endif 219 233 220 234 /* reserve the sections we're already using */ 221 235 for (i = 0; i < lmb.reserved.cnt; i++) 222 236 reserve_bootmem(lmb.reserved.region[i].base, 223 237 lmb_size_bytes(&lmb.reserved, i)); 224 238 239 + #endif 225 240 /* XXX need to clip this if using highmem? */ 226 241 sparse_memory_present_with_active_regions(0); 227 242 ··· 349 334 highmem_mapnr = total_lowmem >> PAGE_SHIFT; 350 335 for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { 351 336 struct page *page = pfn_to_page(pfn); 352 - 337 + if (lmb_is_reserved(pfn << PAGE_SHIFT)) 338 + continue; 353 339 ClearPageReserved(page); 354 340 init_page_count(page); 355 341 __free_page(page); 356 342 totalhigh_pages++; 343 + reservedpages--; 357 344 } 358 345 totalram_pages += totalhigh_pages; 359 346 printk(KERN_DEBUG "High memory: %luk\n",
+13
arch/powerpc/platforms/82xx/Kconfig
··· 26 26 help 27 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 42 endchoice 30 43 31 44 config PQ2ADS
+1
arch/powerpc/platforms/82xx/Makefile
··· 5 5 obj-$(CONFIG_CPM2) += pq2.o 6 6 obj-$(CONFIG_PQ2_ADS_PCI_PIC) += pq2ads-pci-pic.o 7 7 obj-$(CONFIG_PQ2FADS) += pq2fads.o 8 + obj-$(CONFIG_EP8248E) += ep8248e.o
+324
arch/powerpc/platforms/82xx/ep8248e.c
··· 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 + };
+13
arch/powerpc/platforms/83xx/mpc8313_rdb.c
··· 14 14 */ 15 15 16 16 #include <linux/pci.h> 17 + #include <linux/of_platform.h> 17 18 18 19 #include <asm/time.h> 19 20 #include <asm/ipic.h> ··· 75 74 76 75 return of_flat_dt_is_compatible(root, "MPC8313ERDB"); 77 76 } 77 + 78 + static struct of_device_id __initdata of_bus_ids[] = { 79 + { .compatible = "simple-bus" }, 80 + {}, 81 + }; 82 + 83 + static int __init declare_of_platform_devices(void) 84 + { 85 + of_platform_bus_probe(NULL, of_bus_ids, NULL); 86 + return 0; 87 + } 88 + machine_device_initcall(mpc8313_rdb, declare_of_platform_devices); 78 89 79 90 define_machine(mpc8313_rdb) { 80 91 .name = "MPC8313 RDB",
+1 -4
arch/powerpc/platforms/83xx/mpc832x_mds.c
··· 110 110 111 111 static int __init mpc832x_declare_of_platform_devices(void) 112 112 { 113 - if (!machine_is(mpc832x_mds)) 114 - return 0; 115 - 116 113 /* Publish the QE devices */ 117 114 of_platform_bus_probe(NULL, mpc832x_ids, NULL); 118 115 119 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 120 static void __init mpc832x_sys_init_IRQ(void) 124 121 {
+2 -8
arch/powerpc/platforms/83xx/mpc832x_rdb.c
··· 63 63 64 64 static int __init mpc832x_spi_init(void) 65 65 { 66 - if (!machine_is(mpc832x_rdb)) 67 - return 0; 68 - 69 66 par_io_config_pin(3, 0, 3, 0, 1, 0); /* SPI1 MOSI, I/O */ 70 67 par_io_config_pin(3, 1, 3, 0, 1, 0); /* SPI1 MISO, I/O */ 71 68 par_io_config_pin(3, 2, 3, 0, 1, 0); /* SPI1 CLK, I/O */ ··· 77 80 mpc83xx_spi_deactivate_cs); 78 81 } 79 82 80 - device_initcall(mpc832x_spi_init); 83 + machine_device_initcall(mpc832x_rdb, mpc832x_spi_init); 81 84 82 85 /* ************************************************************************ 83 86 * ··· 120 123 121 124 static int __init mpc832x_declare_of_platform_devices(void) 122 125 { 123 - if (!machine_is(mpc832x_rdb)) 124 - return 0; 125 - 126 126 /* Publish the QE devices */ 127 127 of_platform_bus_probe(NULL, mpc832x_ids, NULL); 128 128 129 129 return 0; 130 130 } 131 - device_initcall(mpc832x_declare_of_platform_devices); 131 + machine_device_initcall(mpc832x_rdb, mpc832x_declare_of_platform_devices); 132 132 133 133 void __init mpc832x_rdb_init_IRQ(void) 134 134 {
+12
arch/powerpc/platforms/83xx/mpc834x_itx.c
··· 23 23 #include <linux/delay.h> 24 24 #include <linux/seq_file.h> 25 25 #include <linux/root_dev.h> 26 + #include <linux/of_platform.h> 26 27 27 28 #include <asm/system.h> 28 29 #include <asm/atomic.h> ··· 37 36 #include <sysdev/fsl_soc.h> 38 37 39 38 #include "mpc83xx.h" 39 + 40 + static struct of_device_id __initdata mpc834x_itx_ids[] = { 41 + { .compatible = "fsl,pq2pro-localbus", }, 42 + {}, 43 + }; 44 + 45 + static int __init mpc834x_itx_declare_of_platform_devices(void) 46 + { 47 + return of_platform_bus_probe(NULL, mpc834x_itx_ids, NULL); 48 + } 49 + machine_device_initcall(mpc834x_itx, mpc834x_itx_declare_of_platform_devices); 40 50 41 51 /* ************************************************************************ 42 52 *
+1 -4
arch/powerpc/platforms/83xx/mpc834x_mds.c
··· 115 115 116 116 static int __init mpc834x_declare_of_platform_devices(void) 117 117 { 118 - if (!machine_is(mpc834x_mds)) 119 - return 0; 120 - 121 118 of_platform_bus_probe(NULL, mpc834x_ids, NULL); 122 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 124 * Called very early, MMU is off, device-tree isn't unflattened
+1 -4
arch/powerpc/platforms/83xx/mpc836x_mds.c
··· 141 141 142 142 static int __init mpc836x_declare_of_platform_devices(void) 143 143 { 144 - if (!machine_is(mpc836x_mds)) 145 - return 0; 146 - 147 144 /* Publish the QE devices */ 148 145 of_platform_bus_probe(NULL, mpc836x_ids, NULL); 149 146 150 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 151 static void __init mpc836x_mds_init_IRQ(void) 155 152 {
+52 -4
arch/powerpc/platforms/83xx/mpc837x_mds.c
··· 22 22 23 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 77 * Setup the architecture ··· 90 40 for_each_compatible_node(np, "pci", "fsl,mpc8349-pci") 91 41 mpc83xx_add_bridge(np); 92 42 #endif 43 + mpc837xmds_usb_cfg(); 93 44 } 94 45 95 46 static struct of_device_id mpc837x_ids[] = { ··· 101 50 102 51 static int __init mpc837x_declare_of_platform_devices(void) 103 52 { 104 - if (!machine_is(mpc837x_mds)) 105 - return 0; 106 - 107 53 /* Publish of_device */ 108 54 of_platform_bus_probe(NULL, mpc837x_ids, NULL); 109 55 110 56 return 0; 111 57 } 112 - device_initcall(mpc837x_declare_of_platform_devices); 58 + machine_device_initcall(mpc837x_mds, mpc837x_declare_of_platform_devices); 113 59 114 60 static void __init mpc837x_mds_init_IRQ(void) 115 61 {
+3
arch/powerpc/platforms/83xx/mpc83xx.h
··· 14 14 #define MPC83XX_SCCR_USB_DRCM_11 0x00300000 15 15 #define MPC83XX_SCCR_USB_DRCM_01 0x00100000 16 16 #define MPC83XX_SCCR_USB_DRCM_10 0x00200000 17 + #define MPC837X_SCCR_USB_DRCM_11 0x00c00000 17 18 18 19 /* system i/o configuration register low */ 19 20 #define MPC83XX_SICRL_OFFS 0x114 ··· 23 22 #define MPC834X_SICRL_USB1 0x20000000 24 23 #define MPC831X_SICRL_USB_MASK 0x00000c00 25 24 #define MPC831X_SICRL_USB_ULPI 0x00000800 25 + #define MPC837X_SICRL_USB_MASK 0xf0000000 26 + #define MPC837X_SICRL_USB_ULPI 0x50000000 26 27 27 28 /* system i/o configuration register high */ 28 29 #define MPC83XX_SICRH_OFFS 0x118
+43 -3
arch/powerpc/platforms/83xx/usb.c
··· 41 41 sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK; 42 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 45 if (np) { 46 46 sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ 47 47 ··· 67 67 port0_is_dr = 1; 68 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 71 if (np) { 72 72 sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */ 73 73 ··· 111 111 const void *dr_mode; 112 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 115 if (!np) 116 116 return -ENODEV; 117 117 prop = of_get_property(np, "phy_type", NULL); ··· 179 179 return ret; 180 180 } 181 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 */
+8 -10
arch/powerpc/platforms/85xx/mpc85xx_ads.c
··· 52 52 { 53 53 int cascade_irq; 54 54 55 - while ((cascade_irq = cpm2_get_irq()) >= 0) { 55 + while ((cascade_irq = cpm2_get_irq()) >= 0) 56 56 generic_handle_irq(cascade_irq); 57 - } 57 + 58 58 desc->chip->eoi(irq); 59 59 } 60 60 ··· 70 70 #endif 71 71 72 72 np = of_find_node_by_type(np, "open-pic"); 73 - 74 - if (np == NULL) { 73 + if (!np) { 75 74 printk(KERN_ERR "Could not find open-pic node\n"); 76 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 79 printk(KERN_ERR "Could not map mpic register space\n"); 81 80 of_node_put(np); 82 81 return; ··· 99 100 irq = irq_of_parse_and_map(np, 0); 100 101 101 102 cpm2_pic_init(np); 103 + of_node_put(np); 102 104 set_irq_chained_handler(irq, cpm2_cascade); 103 105 #endif 104 106 } ··· 112 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 116 /* SCC1 */ 117 117 {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, 118 118 {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, ··· 233 233 234 234 static int __init declare_of_platform_devices(void) 235 235 { 236 - if (!machine_is(mpc85xx_ads)) 237 - return 0; 238 - 239 236 of_platform_bus_probe(NULL, of_bus_ids, NULL); 237 + 240 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 243 * Called very early, device-tree isn't unflattened
+1 -5
arch/powerpc/platforms/85xx/mpc85xx_cds.c
··· 222 222 struct device_node *cascade_node = NULL; 223 223 int cascade_irq; 224 224 225 - if (!machine_is(mpc85xx_cds)) 226 - return 0; 227 - 228 225 /* Initialize the i8259 controller */ 229 226 for_each_node_by_type(np, "interrupt-controller") 230 227 if (of_device_is_compatible(np, "chrp,iic")) { ··· 259 262 260 263 return 0; 261 264 } 262 - 263 - device_initcall(mpc85xx_cds_8259_attach); 265 + machine_device_initcall(mpc85xx_cds, mpc85xx_cds_8259_attach); 264 266 265 267 #endif /* CONFIG_PPC_I8259 */ 266 268
+2 -5
arch/powerpc/platforms/85xx/mpc85xx_mds.c
··· 144 144 145 145 static int __init mpc85xx_publish_devices(void) 146 146 { 147 - if (!machine_is(mpc85xx_mds)) 148 - return 0; 149 - 150 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 150 return 0; 154 151 } 155 - device_initcall(mpc85xx_publish_devices); 152 + machine_device_initcall(mpc85xx_mds, mpc85xx_publish_devices); 156 153 157 154 static void __init mpc85xx_mds_pic_init(void) 158 155 {
+15
arch/powerpc/platforms/86xx/mpc8610_hpcd.c
··· 34 34 35 35 #include <asm/mpic.h> 36 36 37 + #include <linux/of_platform.h> 37 38 #include <sysdev/fsl_pci.h> 38 39 #include <sysdev/fsl_soc.h> 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); 39 54 40 55 void __init 41 56 mpc86xx_hpcd_init_irq(void)
+14
arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
··· 18 18 #include <linux/kdev_t.h> 19 19 #include <linux/delay.h> 20 20 #include <linux/seq_file.h> 21 + #include <linux/of_platform.h> 21 22 22 23 #include <asm/system.h> 23 24 #include <asm/time.h> ··· 212 211 213 212 return 0; 214 213 } 214 + 215 + static __initdata struct of_device_id of_bus_ids[] = { 216 + { .compatible = "simple-bus", }, 217 + {}, 218 + }; 219 + 220 + static int __init declare_of_platform_devices(void) 221 + { 222 + of_platform_bus_probe(NULL, of_bus_ids, NULL); 223 + 224 + return 0; 225 + } 226 + machine_device_initcall(mpc86xx_hpcn, declare_of_platform_devices); 215 227 216 228 define_machine(mpc86xx_hpcn) { 217 229 .name = "MPC86xx HPCN",
+9
arch/powerpc/platforms/8xx/Kconfig
··· 44 44 This board is also resold by Freescale as the QUICCStart 45 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 56 endchoice 48 57 49 58 menu "Freescale Ethernet driver platform-specific options"
+1
arch/powerpc/platforms/8xx/Makefile
··· 5 5 obj-$(CONFIG_MPC885ADS) += mpc885ads_setup.o 6 6 obj-$(CONFIG_MPC86XADS) += mpc86xads_setup.o 7 7 obj-$(CONFIG_PPC_EP88XC) += ep88xc.o 8 + obj-$(CONFIG_PPC_ADDER875) += adder875.o
+118
arch/powerpc/platforms/8xx/adder875.c
··· 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 + };
+2 -3
arch/powerpc/platforms/8xx/ep88xc.c
··· 155 155 static int __init declare_of_platform_devices(void) 156 156 { 157 157 /* Publish the QE devices */ 158 - if (machine_is(ep88xc)) 159 - of_platform_bus_probe(NULL, of_bus_ids, NULL); 158 + of_platform_bus_probe(NULL, of_bus_ids, NULL); 160 159 161 160 return 0; 162 161 } 163 - device_initcall(declare_of_platform_devices); 162 + machine_device_initcall(ep88xc, declare_of_platform_devices); 164 163 165 164 define_machine(ep88xc) { 166 165 .name = "Embedded Planet EP88xC",
+2 -3
arch/powerpc/platforms/8xx/mpc86xads_setup.c
··· 128 128 129 129 static int __init declare_of_platform_devices(void) 130 130 { 131 - if (machine_is(mpc86x_ads)) 132 - of_platform_bus_probe(NULL, of_bus_ids, NULL); 131 + of_platform_bus_probe(NULL, of_bus_ids, NULL); 133 132 134 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 137 define_machine(mpc86x_ads) { 139 138 .name = "MPC86x ADS",
+2 -3
arch/powerpc/platforms/8xx/mpc885ads_setup.c
··· 264 264 static int __init declare_of_platform_devices(void) 265 265 { 266 266 /* Publish the QE devices */ 267 - if (machine_is(mpc885_ads)) 268 - of_platform_bus_probe(NULL, of_bus_ids, NULL); 267 + of_platform_bus_probe(NULL, of_bus_ids, NULL); 269 268 270 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 273 define_machine(mpc885_ads) { 275 274 .name = "Freescale MPC885 ADS",
+6
arch/powerpc/platforms/Kconfig
··· 22 22 depends on 6xx 23 23 select FSL_SOC 24 24 select 83xx 25 + select IPIC 25 26 select WANT_DEVICE_TREE 26 27 27 28 config PPC_86xx ··· 80 79 depends on PPC_PSERIES 81 80 bool 82 81 default y 82 + 83 + config IPIC 84 + bool 85 + default n 83 86 84 87 config MPIC 85 88 bool ··· 270 265 config QUICC_ENGINE 271 266 bool 272 267 select PPC_LIB_RHEAP 268 + select CRC32 273 269 help 274 270 The QUICC Engine (QE) is a new generation of communications 275 271 coprocessors on Freescale embedded CPUs (akin to CPM in older chips).
+17 -6
arch/powerpc/platforms/embedded6xx/Kconfig
··· 9 9 select FSL_SOC 10 10 select PPC_UDBG_16550 if SERIAL_8250 11 11 select DEFAULT_UIMAGE 12 + select MPC10X_OPENPIC 13 + select MPC10X_BRIDGE 12 14 help 13 15 Select LINKSTATION if configuring for one of PPC- (MPC8241) 14 16 based NAS systems from Buffalo Technology. So far only 15 17 KuroboxHG has been tested. In the future classical Kurobox, 16 18 Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based 17 19 Terastation systems should be supported too. 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. 18 33 19 34 config MPC7448HPC2 20 35 bool "Freescale MPC7448HPC2(Taiga)" ··· 38 23 select DEFAULT_UIMAGE 39 24 select PPC_UDBG_16550 40 25 select WANT_DEVICE_TREE 26 + select TSI108_BRIDGE 41 27 help 42 28 Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga) 43 29 platform ··· 49 33 select TSI108_BRIDGE 50 34 select PPC_UDBG_16550 51 35 select WANT_DEVICE_TREE 36 + select TSI108_BRIDGE 52 37 help 53 38 Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval 54 39 Board with TSI108/9 bridge (Hickory/Holly) ··· 65 48 66 49 config TSI108_BRIDGE 67 50 bool 68 - depends on MPC7448HPC2 || PPC_HOLLY 69 51 select PCI 70 52 select MPIC 71 53 select MPIC_WEIRD 72 - default y 73 54 74 55 config MPC10X_BRIDGE 75 56 bool 76 - depends on LINKSTATION 77 57 select PPC_INDIRECT_PCI 78 - default y 79 58 80 59 config MV64X60 81 60 bool ··· 80 67 81 68 config MPC10X_OPENPIC 82 69 bool 83 - depends on LINKSTATION 84 - default y 85 70 86 71 config MPC10X_STORE_GATHERING 87 72 bool "Enable MPC10x store gathering"
+1
arch/powerpc/platforms/embedded6xx/Makefile
··· 3 3 # 4 4 obj-$(CONFIG_MPC7448HPC2) += mpc7448_hpc2.o 5 5 obj-$(CONFIG_LINKSTATION) += linkstation.o ls_uart.o 6 + obj-$(CONFIG_STORCENTER) += storcenter.o 6 7 obj-$(CONFIG_PPC_HOLLY) += holly.o 7 8 obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o
-2
arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
··· 53 53 54 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 56 int mpc7448_hpc2_exclude_device(struct pci_controller *hose, 59 57 u_char bus, u_char devfn) 60 58 {
+192
arch/powerpc/platforms/embedded6xx/storcenter.c
··· 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 + };
+2 -1
arch/powerpc/sysdev/Makefile
··· 12 12 obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o 13 13 obj-$(CONFIG_FSL_SOC) += fsl_soc.o 14 14 obj-$(CONFIG_FSL_PCI) += fsl_pci.o 15 + obj-$(CONFIG_RAPIDIO) += fsl_rio.o 15 16 obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o 16 17 obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ 17 18 obj-$(CONFIG_PPC_BESTCOMM) += bestcomm/ ··· 25 24 ifeq ($(CONFIG_PPC_MERGE),y) 26 25 obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o 27 26 obj-$(CONFIG_PPC_I8259) += i8259.o 28 - obj-$(CONFIG_PPC_83xx) += ipic.o 27 + obj-$(CONFIG_IPIC) += ipic.o 29 28 obj-$(CONFIG_4xx) += uic.o 30 29 obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o 31 30 ifeq ($(CONFIG_PCI),y)
+62 -88
arch/powerpc/sysdev/fsl_pci.c
··· 33 33 struct ccsr_pci __iomem *pci; 34 34 int i; 35 35 36 - pr_debug("PCI memory map start 0x%x, size 0x%x\n", rsrc->start, 37 - rsrc->end - rsrc->start + 1); 36 + pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n", 37 + (u64)rsrc->start, (u64)rsrc->end - (u64)rsrc->start + 1); 38 38 pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1); 39 39 40 40 /* Disable all windows (except powar0 since its ignored) */ ··· 46 46 /* Setup outbound MEM window */ 47 47 for(i = 0; i < 3; i++) 48 48 if (hose->mem_resources[i].flags & IORESOURCE_MEM){ 49 - pr_debug("PCI MEM resource start 0x%08x, size 0x%08x.\n", 50 - hose->mem_resources[i].start, 51 - hose->mem_resources[i].end 52 - - hose->mem_resources[i].start + 1); 53 - out_be32(&pci->pow[i+1].potar, 54 - (hose->mem_resources[i].start >> 12) 55 - & 0x000fffff); 49 + resource_size_t pci_addr_start = 50 + hose->mem_resources[i].start - 51 + hose->pci_mem_offset; 52 + pr_debug("PCI MEM resource start 0x%016llx, size 0x%016llx.\n", 53 + (u64)hose->mem_resources[i].start, 54 + (u64)hose->mem_resources[i].end 55 + - (u64)hose->mem_resources[i].start + 1); 56 + out_be32(&pci->pow[i+1].potar, (pci_addr_start >> 12)); 56 57 out_be32(&pci->pow[i+1].potear, 0); 57 58 out_be32(&pci->pow[i+1].powbar, 58 - (hose->mem_resources[i].start >> 12) 59 - & 0x000fffff); 59 + (hose->mem_resources[i].start >> 12)); 60 60 /* Enable, Mem R/W */ 61 61 out_be32(&pci->pow[i+1].powar, 0x80044000 62 62 | (__ilog2(hose->mem_resources[i].end ··· 65 65 66 66 /* Setup outbound IO window */ 67 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", 69 - hose->io_resource.start, 70 - hose->io_resource.end - hose->io_resource.start + 1, 71 - hose->io_base_phys); 72 - out_be32(&pci->pow[i+1].potar, (hose->io_resource.start >> 12) 73 - & 0x000fffff); 68 + pr_debug("PCI IO resource start 0x%016llx, size 0x%016llx, " 69 + "phy base 0x%016llx.\n", 70 + (u64)hose->io_resource.start, 71 + (u64)hose->io_resource.end - (u64)hose->io_resource.start + 1, 72 + (u64)hose->io_base_phys); 73 + out_be32(&pci->pow[i+1].potar, (hose->io_resource.start >> 12)); 74 74 out_be32(&pci->pow[i+1].potear, 0); 75 - out_be32(&pci->pow[i+1].powbar, (hose->io_base_phys >> 12) 76 - & 0x000fffff); 75 + out_be32(&pci->pow[i+1].powbar, (hose->io_base_phys >> 12)); 77 76 /* Enable, IO R/W */ 78 77 out_be32(&pci->pow[i+1].powar, 0x80088000 79 78 | (__ilog2(hose->io_resource.end ··· 106 107 } 107 108 } 108 109 109 - static void __init quirk_fsl_pcie_transparent(struct pci_dev *dev) 110 - { 111 - struct resource *res; 112 - int i, res_idx = PCI_BRIDGE_RESOURCES; 113 - struct pci_controller *hose; 110 + static int fsl_pcie_bus_fixup; 114 111 112 + static void __init quirk_fsl_pcie_header(struct pci_dev *dev) 113 + { 115 114 /* if we aren't a PCIe don't bother */ 116 115 if (!pci_find_capability(dev, PCI_CAP_ID_EXP)) 117 116 return ; 118 117 119 - /* 120 - * Make the bridge be transparent. 121 - */ 122 - dev->transparent = 1; 123 - 124 - hose = pci_bus_to_host(dev->bus); 125 - if (!hose) { 126 - printk(KERN_ERR "Can't find hose for bus %d\n", 127 - dev->bus->number); 128 - return; 129 - } 130 - 131 - /* Clear out any of the virtual P2P bridge registers */ 132 - pci_write_config_word(dev, PCI_IO_BASE_UPPER16, 0); 133 - pci_write_config_word(dev, PCI_IO_LIMIT_UPPER16, 0); 134 - pci_write_config_byte(dev, PCI_IO_BASE, 0x10); 135 - pci_write_config_byte(dev, PCI_IO_LIMIT, 0); 136 - pci_write_config_word(dev, PCI_MEMORY_BASE, 0x10); 137 - pci_write_config_word(dev, PCI_MEMORY_LIMIT, 0); 138 - pci_write_config_word(dev, PCI_PREF_BASE_UPPER32, 0x0); 139 - pci_write_config_word(dev, PCI_PREF_LIMIT_UPPER32, 0x0); 140 - pci_write_config_word(dev, PCI_PREF_MEMORY_BASE, 0x10); 141 - pci_write_config_word(dev, PCI_PREF_MEMORY_LIMIT, 0); 142 - 143 - if (hose->io_resource.flags) { 144 - res = &dev->resource[res_idx++]; 145 - res->start = hose->io_resource.start; 146 - res->end = hose->io_resource.end; 147 - res->flags = hose->io_resource.flags; 148 - update_bridge_resource(dev, res); 149 - } 150 - 151 - for (i = 0; i < 3; i++) { 152 - res = &dev->resource[res_idx + i]; 153 - res->start = hose->mem_resources[i].start; 154 - res->end = hose->mem_resources[i].end; 155 - res->flags = hose->mem_resources[i].flags; 156 - update_bridge_resource(dev, res); 157 - } 118 + dev->class = PCI_CLASS_BRIDGE_PCI << 8; 119 + fsl_pcie_bus_fixup = 1; 120 + return ; 158 121 } 159 122 160 123 int __init fsl_pcie_check_link(struct pci_controller *hose) ··· 133 172 struct pci_controller *hose = (struct pci_controller *) bus->sysdata; 134 173 int i; 135 174 136 - /* deal with bogus pci_bus when we don't have anything connected on PCIe */ 137 - if (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK) { 138 - if (bus->parent) { 139 - for (i = 0; i < 4; ++i) 140 - bus->resource[i] = bus->parent->resource[i]; 175 + if ((bus->parent == hose->bus) && 176 + ((fsl_pcie_bus_fixup && 177 + early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) || 178 + (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK))) 179 + { 180 + for (i = 0; i < 4; ++i) { 181 + struct resource *res = bus->resource[i]; 182 + struct resource *par = bus->parent->resource[i]; 183 + if (res) { 184 + res->start = 0; 185 + res->end = 0; 186 + res->flags = 0; 187 + } 188 + if (res && par) { 189 + res->start = par->start; 190 + res->end = par->end; 191 + res->flags = par->flags; 192 + } 141 193 } 142 194 } 143 195 } ··· 214 240 return 0; 215 241 } 216 242 217 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8548E, quirk_fsl_pcie_transparent); 218 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8548, quirk_fsl_pcie_transparent); 219 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8543E, quirk_fsl_pcie_transparent); 220 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8543, quirk_fsl_pcie_transparent); 221 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8547E, quirk_fsl_pcie_transparent); 222 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8545E, quirk_fsl_pcie_transparent); 223 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8545, quirk_fsl_pcie_transparent); 224 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568E, quirk_fsl_pcie_transparent); 225 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_transparent); 226 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_transparent); 227 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_transparent); 228 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_transparent); 229 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent); 230 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); 231 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); 232 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_transparent); 233 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_transparent); 234 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); 235 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_transparent); 236 - DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8610, quirk_fsl_pcie_transparent); 243 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8548E, quirk_fsl_pcie_header); 244 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8548, quirk_fsl_pcie_header); 245 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8543E, quirk_fsl_pcie_header); 246 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8543, quirk_fsl_pcie_header); 247 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8547E, quirk_fsl_pcie_header); 248 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8545E, quirk_fsl_pcie_header); 249 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8545, quirk_fsl_pcie_header); 250 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8568E, quirk_fsl_pcie_header); 251 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_header); 252 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_header); 253 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_header); 254 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_header); 255 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_header); 256 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_header); 257 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_header); 258 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_header); 259 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_header); 260 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_header); 261 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_header); 262 + DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8610, quirk_fsl_pcie_header);
+77 -26
arch/powerpc/sysdev/fsl_soc.c
··· 24 24 #include <linux/platform_device.h> 25 25 #include <linux/of_platform.h> 26 26 #include <linux/phy.h> 27 + #include <linux/phy_fixed.h> 27 28 #include <linux/spi/spi.h> 28 29 #include <linux/fsl_devices.h> 29 30 #include <linux/fs_enet_pd.h> ··· 55 54 soc = of_find_node_by_type(NULL, "soc"); 56 55 if (soc) { 57 56 int size; 58 - const void *prop = of_get_property(soc, "reg", &size); 57 + u32 naddr; 58 + const u32 *prop = of_get_property(soc, "#address-cells", &size); 59 59 60 + if (prop && size == 4) 61 + naddr = *prop; 62 + else 63 + naddr = 2; 64 + 65 + prop = of_get_property(soc, "ranges", &size); 60 66 if (prop) 61 - immrbase = of_translate_address(soc, prop); 67 + immrbase = of_translate_address(soc, prop + naddr); 68 + 62 69 of_node_put(soc); 63 70 } 64 71 ··· 139 130 EXPORT_SYMBOL(get_baudrate); 140 131 #endif /* CONFIG_CPM2 */ 141 132 133 + #ifdef CONFIG_FIXED_PHY 134 + static int __init of_add_fixed_phys(void) 135 + { 136 + int ret; 137 + struct device_node *np; 138 + u32 *fixed_link; 139 + struct fixed_phy_status status = {}; 140 + 141 + for_each_node_by_name(np, "ethernet") { 142 + fixed_link = (u32 *)of_get_property(np, "fixed-link", NULL); 143 + if (!fixed_link) 144 + continue; 145 + 146 + status.link = 1; 147 + status.duplex = fixed_link[1]; 148 + status.speed = fixed_link[2]; 149 + status.pause = fixed_link[3]; 150 + status.asym_pause = fixed_link[4]; 151 + 152 + ret = fixed_phy_add(PHY_POLL, fixed_link[0], &status); 153 + if (ret) { 154 + of_node_put(np); 155 + return ret; 156 + } 157 + } 158 + 159 + return 0; 160 + } 161 + arch_initcall(of_add_fixed_phys); 162 + #endif /* CONFIG_FIXED_PHY */ 163 + 142 164 static int __init gfar_mdio_of_init(void) 143 165 { 144 166 struct device_node *np = NULL; ··· 237 197 static const char *gfar_tx_intr = "tx"; 238 198 static const char *gfar_rx_intr = "rx"; 239 199 static const char *gfar_err_intr = "error"; 240 - 241 200 242 201 static int __init gfar_of_init(void) 243 202 { ··· 321 282 gfar_data.interface = PHY_INTERFACE_MODE_MII; 322 283 323 284 ph = of_get_property(np, "phy-handle", NULL); 324 - phy = of_find_node_by_phandle(*ph); 285 + if (ph == NULL) { 286 + u32 *fixed_link; 325 287 326 - if (phy == NULL) { 327 - ret = -ENODEV; 328 - goto unreg; 329 - } 288 + fixed_link = (u32 *)of_get_property(np, "fixed-link", 289 + NULL); 290 + if (!fixed_link) { 291 + ret = -ENODEV; 292 + goto unreg; 293 + } 330 294 331 - mdio = of_get_parent(phy); 295 + gfar_data.bus_id = 0; 296 + gfar_data.phy_id = fixed_link[0]; 297 + } else { 298 + phy = of_find_node_by_phandle(*ph); 332 299 333 - id = of_get_property(phy, "reg", NULL); 334 - ret = of_address_to_resource(mdio, 0, &res); 335 - if (ret) { 300 + if (phy == NULL) { 301 + ret = -ENODEV; 302 + goto unreg; 303 + } 304 + 305 + mdio = of_get_parent(phy); 306 + 307 + id = of_get_property(phy, "reg", NULL); 308 + ret = of_address_to_resource(mdio, 0, &res); 309 + if (ret) { 310 + of_node_put(phy); 311 + of_node_put(mdio); 312 + goto unreg; 313 + } 314 + 315 + gfar_data.phy_id = *id; 316 + gfar_data.bus_id = res.start; 317 + 336 318 of_node_put(phy); 337 319 of_node_put(mdio); 338 - goto unreg; 339 320 } 340 - 341 - gfar_data.phy_id = *id; 342 - gfar_data.bus_id = res.start; 343 - 344 - of_node_put(phy); 345 - of_node_put(mdio); 346 321 347 322 ret = 348 323 platform_device_add_data(gfar_dev, &gfar_data, ··· 584 531 static int __init fsl_usb_of_init(void) 585 532 { 586 533 struct device_node *np; 587 - unsigned int i; 534 + unsigned int i = 0; 588 535 struct platform_device *usb_dev_mph = NULL, *usb_dev_dr_host = NULL, 589 536 *usb_dev_dr_client = NULL; 590 537 int ret; 591 538 592 - for (np = NULL, i = 0; 593 - (np = of_find_compatible_node(np, "usb", "fsl-usb2-mph")) != NULL; 594 - i++) { 539 + for_each_compatible_node(np, NULL, "fsl-usb2-mph") { 595 540 struct resource r[2]; 596 541 struct fsl_usb2_platform_data usb_data; 597 542 const unsigned char *prop = NULL; ··· 632 581 fsl_usb2_platform_data)); 633 582 if (ret) 634 583 goto unreg_mph; 584 + i++; 635 585 } 636 586 637 - for (np = NULL; 638 - (np = of_find_compatible_node(np, "usb", "fsl-usb2-dr")) != NULL; 639 - i++) { 587 + for_each_compatible_node(np, NULL, "fsl-usb2-dr") { 640 588 struct resource r[2]; 641 589 struct fsl_usb2_platform_data usb_data; 642 590 const unsigned char *prop = NULL; ··· 707 657 fsl_usb2_platform_data)))) 708 658 goto unreg_dr; 709 659 } 660 + i++; 710 661 } 711 662 return 0; 712 663
+62
arch/powerpc/sysdev/ipic.c
··· 48 48 .bit = 17, 49 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 58 [4] = { 52 59 .mask = IPIC_SIMSR_H, 53 60 .prio = IPIC_SIPRR_C, 54 61 .force = IPIC_SIFCR_H, 55 62 .bit = 19, 56 63 .prio_mask = 3, 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, 57 92 }, 58 93 [9] = { 59 94 .mask = IPIC_SIMSR_H, ··· 258 223 .bit = 7, 259 224 .prio_mask = 7, 260 225 }, 226 + [40] = { 227 + .mask = IPIC_SIMSR_H, 228 + .prio = IPIC_SIPRR_B, 229 + .force = IPIC_SIFCR_H, 230 + .bit = 8, 231 + .prio_mask = 0, 232 + }, 233 + [41] = { 234 + .mask = IPIC_SIMSR_H, 235 + .prio = IPIC_SIPRR_B, 236 + .force = IPIC_SIFCR_H, 237 + .bit = 9, 238 + .prio_mask = 1, 239 + }, 261 240 [42] = { 262 241 .mask = IPIC_SIMSR_H, 263 242 .prio = IPIC_SIPRR_B, 264 243 .force = IPIC_SIFCR_H, 265 244 .bit = 10, 266 245 .prio_mask = 2, 246 + }, 247 + [43] = { 248 + .mask = IPIC_SIMSR_H, 249 + .prio = IPIC_SIPRR_B, 250 + .force = IPIC_SIFCR_H, 251 + .bit = 11, 252 + .prio_mask = 3, 267 253 }, 268 254 [44] = { 269 255 .mask = IPIC_SIMSR_H, ··· 442 386 .prio = 0, 443 387 .force = IPIC_SIFCR_L, 444 388 .bit = 18, 389 + }, 390 + [83] = { 391 + .mask = IPIC_SIMSR_L, 392 + .prio = 0, 393 + .force = IPIC_SIFCR_L, 394 + .bit = 19, 445 395 }, 446 396 [84] = { 447 397 .mask = IPIC_SIMSR_L,
+2 -2
arch/powerpc/sysdev/mpic.c
··· 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 271 struct mpic_reg_bank *rb, unsigned int offset, 272 272 unsigned int size) 273 273 { ··· 287 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 291 struct mpic_reg_bank *rb, unsigned int offset, 292 292 unsigned int size) 293 293 {
+1 -1
arch/powerpc/sysdev/qe_lib/Kconfig
··· 4 4 5 5 config UCC_SLOW 6 6 bool 7 - default n 7 + default y if SERIAL_QE 8 8 help 9 9 This option provides qe_lib support to UCC slow 10 10 protocols: UART, BISYNC, QMC
+247
arch/powerpc/sysdev/qe_lib/qe.c
··· 25 25 #include <linux/module.h> 26 26 #include <linux/delay.h> 27 27 #include <linux/ioport.h> 28 + #include <linux/crc32.h> 28 29 #include <asm/irq.h> 29 30 #include <asm/page.h> 30 31 #include <asm/pgtable.h> ··· 395 394 return (void *)&qe_immr->muram[offset]; 396 395 } 397 396 EXPORT_SYMBOL(qe_muram_addr); 397 + 398 + /* The maximum number of RISCs we support */ 399 + #define MAX_QE_RISC 2 400 + 401 + /* Firmware information stored here for qe_get_firmware_info() */ 402 + static struct qe_firmware_info qe_firmware_info; 403 + 404 + /* 405 + * Set to 1 if QE firmware has been uploaded, and therefore 406 + * qe_firmware_info contains valid data. 407 + */ 408 + static int qe_firmware_uploaded; 409 + 410 + /* 411 + * Upload a QE microcode 412 + * 413 + * This function is a worker function for qe_upload_firmware(). It does 414 + * the actual uploading of the microcode. 415 + */ 416 + static void qe_upload_microcode(const void *base, 417 + const struct qe_microcode *ucode) 418 + { 419 + const __be32 *code = base + be32_to_cpu(ucode->code_offset); 420 + unsigned int i; 421 + 422 + if (ucode->major || ucode->minor || ucode->revision) 423 + printk(KERN_INFO "qe-firmware: " 424 + "uploading microcode '%s' version %u.%u.%u\n", 425 + ucode->id, ucode->major, ucode->minor, ucode->revision); 426 + else 427 + printk(KERN_INFO "qe-firmware: " 428 + "uploading microcode '%s'\n", ucode->id); 429 + 430 + /* Use auto-increment */ 431 + out_be32(&qe_immr->iram.iadd, be32_to_cpu(ucode->iram_offset) | 432 + QE_IRAM_IADD_AIE | QE_IRAM_IADD_BADDR); 433 + 434 + for (i = 0; i < be32_to_cpu(ucode->count); i++) 435 + out_be32(&qe_immr->iram.idata, be32_to_cpu(code[i])); 436 + } 437 + 438 + /* 439 + * Upload a microcode to the I-RAM at a specific address. 440 + * 441 + * See Documentation/powerpc/qe-firmware.txt for information on QE microcode 442 + * uploading. 443 + * 444 + * Currently, only version 1 is supported, so the 'version' field must be 445 + * set to 1. 446 + * 447 + * The SOC model and revision are not validated, they are only displayed for 448 + * informational purposes. 449 + * 450 + * 'calc_size' is the calculated size, in bytes, of the firmware structure and 451 + * all of the microcode structures, minus the CRC. 452 + * 453 + * 'length' is the size that the structure says it is, including the CRC. 454 + */ 455 + int qe_upload_firmware(const struct qe_firmware *firmware) 456 + { 457 + unsigned int i; 458 + unsigned int j; 459 + u32 crc; 460 + size_t calc_size = sizeof(struct qe_firmware); 461 + size_t length; 462 + const struct qe_header *hdr; 463 + 464 + if (!firmware) { 465 + printk(KERN_ERR "qe-firmware: invalid pointer\n"); 466 + return -EINVAL; 467 + } 468 + 469 + hdr = &firmware->header; 470 + length = be32_to_cpu(hdr->length); 471 + 472 + /* Check the magic */ 473 + if ((hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') || 474 + (hdr->magic[2] != 'F')) { 475 + printk(KERN_ERR "qe-firmware: not a microcode\n"); 476 + return -EPERM; 477 + } 478 + 479 + /* Check the version */ 480 + if (hdr->version != 1) { 481 + printk(KERN_ERR "qe-firmware: unsupported version\n"); 482 + return -EPERM; 483 + } 484 + 485 + /* Validate some of the fields */ 486 + if ((firmware->count < 1) || (firmware->count >= MAX_QE_RISC)) { 487 + printk(KERN_ERR "qe-firmware: invalid data\n"); 488 + return -EINVAL; 489 + } 490 + 491 + /* Validate the length and check if there's a CRC */ 492 + calc_size += (firmware->count - 1) * sizeof(struct qe_microcode); 493 + 494 + for (i = 0; i < firmware->count; i++) 495 + /* 496 + * For situations where the second RISC uses the same microcode 497 + * as the first, the 'code_offset' and 'count' fields will be 498 + * zero, so it's okay to add those. 499 + */ 500 + calc_size += sizeof(__be32) * 501 + be32_to_cpu(firmware->microcode[i].count); 502 + 503 + /* Validate the length */ 504 + if (length != calc_size + sizeof(__be32)) { 505 + printk(KERN_ERR "qe-firmware: invalid length\n"); 506 + return -EPERM; 507 + } 508 + 509 + /* Validate the CRC */ 510 + crc = be32_to_cpu(*(__be32 *)((void *)firmware + calc_size)); 511 + if (crc != crc32(0, firmware, calc_size)) { 512 + printk(KERN_ERR "qe-firmware: firmware CRC is invalid\n"); 513 + return -EIO; 514 + } 515 + 516 + /* 517 + * If the microcode calls for it, split the I-RAM. 518 + */ 519 + if (!firmware->split) 520 + setbits16(&qe_immr->cp.cercr, QE_CP_CERCR_CIR); 521 + 522 + if (firmware->soc.model) 523 + printk(KERN_INFO 524 + "qe-firmware: firmware '%s' for %u V%u.%u\n", 525 + firmware->id, be16_to_cpu(firmware->soc.model), 526 + firmware->soc.major, firmware->soc.minor); 527 + else 528 + printk(KERN_INFO "qe-firmware: firmware '%s'\n", 529 + firmware->id); 530 + 531 + /* 532 + * The QE only supports one microcode per RISC, so clear out all the 533 + * saved microcode information and put in the new. 534 + */ 535 + memset(&qe_firmware_info, 0, sizeof(qe_firmware_info)); 536 + strcpy(qe_firmware_info.id, firmware->id); 537 + qe_firmware_info.extended_modes = firmware->extended_modes; 538 + memcpy(qe_firmware_info.vtraps, firmware->vtraps, 539 + sizeof(firmware->vtraps)); 540 + 541 + /* Loop through each microcode. */ 542 + for (i = 0; i < firmware->count; i++) { 543 + const struct qe_microcode *ucode = &firmware->microcode[i]; 544 + 545 + /* Upload a microcode if it's present */ 546 + if (ucode->code_offset) 547 + qe_upload_microcode(firmware, ucode); 548 + 549 + /* Program the traps for this processor */ 550 + for (j = 0; j < 16; j++) { 551 + u32 trap = be32_to_cpu(ucode->traps[j]); 552 + 553 + if (trap) 554 + out_be32(&qe_immr->rsp[i].tibcr[j], trap); 555 + } 556 + 557 + /* Enable traps */ 558 + out_be32(&qe_immr->rsp[i].eccr, be32_to_cpu(ucode->eccr)); 559 + } 560 + 561 + qe_firmware_uploaded = 1; 562 + 563 + return 0; 564 + } 565 + EXPORT_SYMBOL(qe_upload_firmware); 566 + 567 + /* 568 + * Get info on the currently-loaded firmware 569 + * 570 + * This function also checks the device tree to see if the boot loader has 571 + * uploaded a firmware already. 572 + */ 573 + struct qe_firmware_info *qe_get_firmware_info(void) 574 + { 575 + static int initialized; 576 + struct property *prop; 577 + struct device_node *qe; 578 + struct device_node *fw = NULL; 579 + const char *sprop; 580 + unsigned int i; 581 + 582 + /* 583 + * If we haven't checked yet, and a driver hasn't uploaded a firmware 584 + * yet, then check the device tree for information. 585 + */ 586 + if (initialized || qe_firmware_uploaded) 587 + return NULL; 588 + 589 + initialized = 1; 590 + 591 + /* 592 + * Newer device trees have an "fsl,qe" compatible property for the QE 593 + * node, but we still need to support older device trees. 594 + */ 595 + qe = of_find_compatible_node(NULL, NULL, "fsl,qe"); 596 + if (!qe) { 597 + qe = of_find_node_by_type(NULL, "qe"); 598 + if (!qe) 599 + return NULL; 600 + } 601 + 602 + /* Find the 'firmware' child node */ 603 + for_each_child_of_node(qe, fw) { 604 + if (strcmp(fw->name, "firmware") == 0) 605 + break; 606 + } 607 + 608 + of_node_put(qe); 609 + 610 + /* Did we find the 'firmware' node? */ 611 + if (!fw) 612 + return NULL; 613 + 614 + qe_firmware_uploaded = 1; 615 + 616 + /* Copy the data into qe_firmware_info*/ 617 + sprop = of_get_property(fw, "id", NULL); 618 + if (sprop) 619 + strncpy(qe_firmware_info.id, sprop, 620 + sizeof(qe_firmware_info.id) - 1); 621 + 622 + prop = of_find_property(fw, "extended-modes", NULL); 623 + if (prop && (prop->length == sizeof(u64))) { 624 + const u64 *iprop = prop->value; 625 + 626 + qe_firmware_info.extended_modes = *iprop; 627 + } 628 + 629 + prop = of_find_property(fw, "virtual-traps", NULL); 630 + if (prop && (prop->length == 32)) { 631 + const u32 *iprop = prop->value; 632 + 633 + for (i = 0; i < ARRAY_SIZE(qe_firmware_info.vtraps); i++) 634 + qe_firmware_info.vtraps[i] = iprop[i]; 635 + } 636 + 637 + of_node_put(fw); 638 + 639 + return &qe_firmware_info; 640 + } 641 + EXPORT_SYMBOL(qe_get_firmware_info); 642 +
+9 -1
arch/powerpc/sysdev/qe_lib/ucc_slow.c
··· 19 19 #include <linux/stddef.h> 20 20 #include <linux/interrupt.h> 21 21 #include <linux/err.h> 22 + #include <linux/module.h> 22 23 23 24 #include <asm/io.h> 24 25 #include <asm/immap_qe.h> ··· 42 41 default: return QE_CR_SUBBLOCK_INVALID; 43 42 } 44 43 } 44 + EXPORT_SYMBOL(ucc_slow_get_qe_cr_subblock); 45 45 46 46 void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs) 47 47 { ··· 58 56 qe_issue_cmd(QE_GRACEFUL_STOP_TX, id, 59 57 QE_CR_PROTOCOL_UNSPECIFIED, 0); 60 58 } 59 + EXPORT_SYMBOL(ucc_slow_graceful_stop_tx); 61 60 62 61 void ucc_slow_stop_tx(struct ucc_slow_private * uccs) 63 62 { ··· 68 65 id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num); 69 66 qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0); 70 67 } 68 + EXPORT_SYMBOL(ucc_slow_stop_tx); 71 69 72 70 void ucc_slow_restart_tx(struct ucc_slow_private * uccs) 73 71 { ··· 78 74 id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num); 79 75 qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0); 80 76 } 77 + EXPORT_SYMBOL(ucc_slow_restart_tx); 81 78 82 79 void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode) 83 80 { ··· 99 94 } 100 95 out_be32(&us_regs->gumr_l, gumr_l); 101 96 } 97 + EXPORT_SYMBOL(ucc_slow_enable); 102 98 103 99 void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode) 104 100 { ··· 120 114 } 121 115 out_be32(&us_regs->gumr_l, gumr_l); 122 116 } 117 + EXPORT_SYMBOL(ucc_slow_disable); 123 118 124 119 /* Initialize the UCC for Slow operations 125 120 * ··· 354 347 *uccs_ret = uccs; 355 348 return 0; 356 349 } 350 + EXPORT_SYMBOL(ucc_slow_init); 357 351 358 352 void ucc_slow_free(struct ucc_slow_private * uccs) 359 353 { ··· 374 366 375 367 kfree(uccs); 376 368 } 377 - 369 + EXPORT_SYMBOL(ucc_slow_free); 378 370
-1
arch/ppc/kernel/Makefile
··· 13 13 ppc_htab.o 14 14 obj-$(CONFIG_MODULES) += ppc_ksyms.o 15 15 obj-$(CONFIG_PCI) += pci.o 16 - obj-$(CONFIG_RAPIDIO) += rio.o 17 16 obj-$(CONFIG_KGDB) += ppc-stub.o 18 17 obj-$(CONFIG_SMP) += smp.o smp-tbsync.o 19 18 obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
arch/ppc/kernel/rio.c arch/powerpc/kernel/rio.c
+1 -2
arch/ppc/platforms/85xx/mpc85xx_ads_common.c
··· 42 42 43 43 #include <mm/mmu_decl.h> 44 44 45 - #include <syslib/ppc85xx_rio.h> 46 - 47 45 #include <platforms/85xx/mpc85xx_ads_common.h> 48 46 49 47 #ifndef CONFIG_PCI ··· 188 190 #endif /* CONFIG_PCI */ 189 191 190 192 #ifdef CONFIG_RAPIDIO 193 + extern void mpc85xx_rio_setup(int law_start, int law_size); 191 194 void platform_rio_init(void) 192 195 { 193 196 /* 512MB RIO LAW at 0xc0000000 */
+1 -1
arch/ppc/platforms/85xx/stx_gp3.c
··· 54 54 55 55 #include <syslib/cpm2_pic.h> 56 56 #include <syslib/ppc85xx_common.h> 57 - #include <syslib/ppc85xx_rio.h> 58 57 59 58 60 59 unsigned char __res[sizeof(bd_t)]; ··· 269 270 #endif /* CONFIG_PCI */ 270 271 271 272 #ifdef CONFIG_RAPIDIO 273 + extern void mpc85xx_rio_setup(int law_start, int law_size); 272 274 void 273 275 platform_rio_init(void) 274 276 {
+1 -1
arch/ppc/platforms/85xx/tqm85xx.c
··· 54 54 #include <syslib/ppc85xx_setup.h> 55 55 #include <syslib/cpm2_pic.h> 56 56 #include <syslib/ppc85xx_common.h> 57 - #include <syslib/ppc85xx_rio.h> 58 57 59 58 #ifndef CONFIG_PCI 60 59 unsigned long isa_io_base = 0; ··· 308 309 #endif /* CONFIG_PCI */ 309 310 310 311 #ifdef CONFIG_RAPIDIO 312 + extern void mpc85xx_rio_setup(int law_start, int law_size); 311 313 void platform_rio_init(void) 312 314 { 313 315 /* 512MB RIO LAW at 0xc0000000 */
-1
arch/ppc/syslib/Makefile
··· 93 93 ifeq ($(CONFIG_85xx),y) 94 94 obj-$(CONFIG_PCI) += pci_auto.o 95 95 endif 96 - obj-$(CONFIG_RAPIDIO) += ppc85xx_rio.o 97 96 obj-$(CONFIG_83xx) += ppc83xx_setup.o ppc_sys.o \ 98 97 mpc83xx_sys.o mpc83xx_devices.o ipic.o 99 98 ifeq ($(CONFIG_83xx),y)
arch/ppc/syslib/ppc85xx_rio.c arch/powerpc/sysdev/fsl_rio.c
arch/ppc/syslib/ppc85xx_rio.h arch/powerpc/sysdev/fsl_rio.h
+8 -1
drivers/net/fs_enet/fs_enet-main.c
··· 1178 1178 struct device_node *phynode, *mdionode; 1179 1179 struct resource res; 1180 1180 int ret = 0, len; 1181 + const u32 *data; 1181 1182 1182 - const u32 *data = of_get_property(np, "phy-handle", &len); 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 + } 1188 + 1189 + data = of_get_property(np, "phy-handle", &len); 1183 1190 if (!data || len != 4) 1184 1191 return -EINVAL; 1185 1192
+4 -26
drivers/net/phy/Kconfig
··· 61 61 Currently supports the IP175C PHY. 62 62 63 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 65 ---help--- 66 - Adds the driver to PHY layer to cover the boards that do not have any PHY bound, 67 - but with the ability to manipulate the speed/link in software. The relevant MII 68 - speed/duplex parameters could be effectively handled in a user-specified function. 69 - Currently tested with mpc866ads. 66 + Adds the platform "fixed" MDIO Bus to cover the boards that use 67 + PHYs that are not connected to the real MDIO bus. 70 68 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. 69 + Currently tested with mpc866ads and mpc8349e-mitx. 92 70 93 71 config MDIO_BITBANG 94 72 tristate "Support for bitbanged MDIO buses"
+199 -308
drivers/net/phy/fixed.c
··· 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 - * 8 - * Copyright (c) 2006 MontaVista Software, Inc. 7 + * Copyright (c) 2006-2007 MontaVista Software, Inc. 9 8 * 10 9 * This program is free software; you can redistribute it and/or modify it 11 10 * under the terms of the GNU General Public License as published by the 12 11 * Free Software Foundation; either version 2 of the License, or (at your 13 12 * option) any later version. 14 - * 15 13 */ 14 + 16 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 16 #include <linux/module.h> 17 + #include <linux/platform_device.h> 18 + #include <linux/list.h> 30 19 #include <linux/mii.h> 31 - #include <linux/ethtool.h> 32 20 #include <linux/phy.h> 33 21 #include <linux/phy_fixed.h> 34 22 35 - #include <asm/io.h> 36 - #include <asm/irq.h> 37 - #include <asm/uaccess.h> 23 + #define MII_REGS_NUM 29 38 24 39 - /* we need to track the allocated pointers in order to free them on exit */ 40 - static struct fixed_info *fixed_phy_ptrs[CONFIG_FIXED_MII_AMNT*MAX_PHY_AMNT]; 25 + struct fixed_mdio_bus { 26 + int irqs[PHY_MAX_ADDR]; 27 + struct mii_bus mii_bus; 28 + struct list_head phys; 29 + }; 41 30 42 - /*----------------------------------------------------------------------------- 43 - * If something weird is required to be done with link/speed, 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 *)) 31 + struct fixed_phy { 32 + int id; 33 + u16 regs[MII_REGS_NUM]; 34 + struct phy_device *phydev; 35 + struct fixed_phy_status status; 36 + int (*link_update)(struct net_device *, struct fixed_phy_status *); 37 + struct list_head node; 38 + }; 39 + 40 + static struct platform_device *pdev; 41 + static struct fixed_mdio_bus platform_fmb = { 42 + .phys = LIST_HEAD_INIT(platform_fmb.phys), 43 + }; 44 + 45 + static int fixed_phy_update_regs(struct fixed_phy *fp) 50 46 { 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 - 68 - struct fixed_info *fixed_mdio_get_phydev (int phydev_ind) 69 - { 70 - if (phydev_ind >= MAX_PHY_AMNT) 71 - return NULL; 72 - return fixed_phy_ptrs[phydev_ind]; 73 - } 74 - 75 - EXPORT_SYMBOL(fixed_mdio_get_phydev); 76 - 77 - /*----------------------------------------------------------------------------- 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 - { 83 - u16 *regs = fixed->regs; 84 - u16 bmsr = 0; 47 + u16 bmsr = BMSR_ANEGCAPABLE; 85 48 u16 bmcr = 0; 49 + u16 lpagb = 0; 50 + u16 lpa = 0; 86 51 87 - if (!regs) { 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) { 52 + if (fp->status.duplex) { 96 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 61 case 100: 100 62 bmsr |= BMSR_100FULL; 101 63 bmcr |= BMCR_SPEED100; 64 + lpa |= LPA_100FULL; 102 65 break; 103 - 104 66 case 10: 105 67 bmsr |= BMSR_10FULL; 68 + lpa |= LPA_10FULL; 106 69 break; 70 + default: 71 + printk(KERN_WARNING "fixed phy: unknown speed\n"); 72 + return -EINVAL; 107 73 } 108 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 81 case 100: 111 82 bmsr |= BMSR_100HALF; 112 83 bmcr |= BMCR_SPEED100; 84 + lpa |= LPA_100HALF; 113 85 break; 114 - 115 86 case 10: 116 - bmsr |= BMSR_100HALF; 87 + bmsr |= BMSR_10HALF; 88 + lpa |= LPA_10HALF; 117 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; 122 - regs[MII_BMSR] = bmsr | 0x800; /*we are always capable of 10 hdx */ 96 + if (fp->status.link) 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 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, 119 + mii_bus); 120 + struct fixed_phy *fp; 130 121 131 - /* if user has registered link update callback, use it */ 132 - if (fixed->phydev) 133 - if (fixed->phydev->attached_dev) { 134 - if (fixed->link_update) { 135 - fixed->link_update(fixed->phydev->attached_dev, 136 - &fixed->phy_status); 137 - fixed_mdio_update_regs(fixed); 138 - } 139 - } 140 - 141 - if ((unsigned int)location >= fixed->regs_num) 122 + if (reg_num >= MII_REGS_NUM) 142 123 return -1; 143 - return fixed->regs[location]; 144 - } 145 124 146 - static int fixed_mii_write(struct mii_bus *bus, int phy_id, int location, 147 - u16 val) 148 - { 149 - /* do nothing for now */ 150 - return 0; 151 - } 152 - 153 - static int fixed_mii_reset(struct mii_bus *bus) 154 - { 155 - /*nothing here - no way/need to reset it */ 156 - return 0; 157 - } 158 - #endif 159 - 160 - static int fixed_config_aneg(struct phy_device *phydev) 161 - { 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 - 169 - /*----------------------------------------------------------------------------- 170 - * the manual bind will do the magic - with phy_id_mask == 0 171 - * match will never return true... 172 - *-----------------------------------------------------------------------------*/ 173 - static struct phy_driver fixed_mdio_driver = { 174 - .name = "Fixed PHY", 175 - #ifdef CONFIG_FIXED_MII_1000_FDX 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 - 185 - static void fixed_mdio_release(struct device *dev) 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 - } 197 - 198 - /*----------------------------------------------------------------------------- 199 - * This func is used to create all the necessary stuff, bind 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 - { 213 - struct mii_bus *new_bus; 214 - struct fixed_info *fixed; 215 - struct phy_device *phydev; 216 - int err; 217 - 218 - struct device *dev = kzalloc(sizeof(struct device), GFP_KERNEL); 219 - 220 - if (dev == NULL) 221 - goto err_dev_alloc; 222 - 223 - new_bus = kzalloc(sizeof(struct mii_bus), GFP_KERNEL); 224 - 225 - if (new_bus == NULL) 226 - goto err_bus_alloc; 227 - 228 - fixed = kzalloc(sizeof(struct fixed_info), GFP_KERNEL); 229 - 230 - if (fixed == NULL) 231 - goto err_fixed_alloc; 232 - 233 - fixed->regs = kzalloc(MII_REGS_NUM * sizeof(int), GFP_KERNEL); 234 - if (NULL == fixed->regs) 235 - goto err_fixed_regs_alloc; 236 - 237 - fixed->regs_num = MII_REGS_NUM; 238 - fixed->phy_status.speed = speed; 239 - fixed->phy_status.duplex = duplex; 240 - fixed->phy_status.link = 1; 241 - 242 - new_bus->name = "Fixed MII Bus"; 243 - new_bus->read = &fixed_mii_read; 244 - new_bus->write = &fixed_mii_write; 245 - new_bus->reset = &fixed_mii_reset; 246 - /*set up workspace */ 247 - fixed_mdio_update_regs(fixed); 248 - new_bus->priv = fixed; 249 - 250 - new_bus->dev = dev; 251 - dev_set_drvdata(dev, new_bus); 252 - 253 - /* create phy_device and register it on the mdio bus */ 254 - phydev = phy_device_create(new_bus, 0, 0); 255 - if (phydev == NULL) 256 - goto err_phy_dev_create; 257 - 258 - /* 259 - * Put the phydev pointer into the fixed pack so that bus read/write 260 - * code could be able to access for instance attached netdev. Well it 261 - * doesn't have to do so, only in case of utilizing user-specified 262 - * link-update... 263 - */ 264 - 265 - fixed->phydev = phydev; 266 - phydev->speed = speed; 267 - phydev->duplex = duplex; 268 - 269 - phydev->irq = PHY_IGNORE_INTERRUPT; 270 - phydev->dev.bus = &mdio_bus_type; 271 - 272 - snprintf(phydev->dev.bus_id, BUS_ID_SIZE, 273 - PHY_ID_FMT, bus_id, phy_id); 274 - 275 - phydev->bus = new_bus; 276 - 277 - phydev->dev.driver = &fixed_mdio_driver.driver; 278 - phydev->dev.release = fixed_mdio_release; 279 - err = phydev->dev.driver->probe(&phydev->dev); 280 - if (err < 0) { 281 - printk(KERN_ERR "Phy %s: problems with fixed driver\n", 282 - phydev->dev.bus_id); 283 - goto err_out; 125 + list_for_each_entry(fp, &fmb->phys, node) { 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); 132 + } 133 + return fp->regs[reg_num]; 134 + } 284 135 } 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 - } 291 - //phydev->state = PHY_RUNNING; /* make phy go up quick, but in 10Mbit/HDX 292 - return fixed; 293 136 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 - 137 + return 0xFFFF; 308 138 } 309 - #endif 310 139 311 - MODULE_DESCRIPTION("Fixed PHY device & driver for PAL"); 140 + static int fixed_mdio_write(struct mii_bus *bus, int phy_id, int reg_num, 141 + u16 val) 142 + { 143 + return 0; 144 + } 145 + 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 + { 155 + struct fixed_mdio_bus *fmb = &platform_fmb; 156 + struct fixed_phy *fp; 157 + 158 + if (!link_update || !phydev || !phydev->bus) 159 + return -EINVAL; 160 + 161 + list_for_each_entry(fp, &fmb->phys, node) { 162 + if (fp->id == phydev->phy_id) { 163 + fp->link_update = link_update; 164 + fp->phydev = phydev; 165 + return 0; 166 + } 167 + } 168 + 169 + return -ENOENT; 170 + } 171 + EXPORT_SYMBOL_GPL(fixed_phy_set_link_update); 172 + 173 + int fixed_phy_add(unsigned int irq, int phy_id, 174 + struct fixed_phy_status *status) 175 + { 176 + int ret; 177 + struct fixed_mdio_bus *fmb = &platform_fmb; 178 + struct fixed_phy *fp; 179 + 180 + fp = kzalloc(sizeof(*fp), GFP_KERNEL); 181 + if (!fp) 182 + return -ENOMEM; 183 + 184 + memset(fp->regs, 0xFF, sizeof(fp->regs[0]) * MII_REGS_NUM); 185 + 186 + fmb->irqs[phy_id] = irq; 187 + 188 + fp->id = phy_id; 189 + fp->status = *status; 190 + 191 + ret = fixed_phy_update_regs(fp); 192 + if (ret) 193 + goto err_regs; 194 + 195 + list_add_tail(&fp->node, &fmb->phys); 196 + 197 + return 0; 198 + 199 + err_regs: 200 + kfree(fp); 201 + return ret; 202 + } 203 + EXPORT_SYMBOL_GPL(fixed_phy_add); 204 + 205 + static int __init fixed_mdio_bus_init(void) 206 + { 207 + struct fixed_mdio_bus *fmb = &platform_fmb; 208 + int ret; 209 + 210 + pdev = platform_device_register_simple("Fixed MDIO bus", 0, NULL, 0); 211 + if (!pdev) { 212 + ret = -ENOMEM; 213 + goto err_pdev; 214 + } 215 + 216 + fmb->mii_bus.id = 0; 217 + fmb->mii_bus.name = "Fixed MDIO Bus"; 218 + fmb->mii_bus.dev = &pdev->dev; 219 + fmb->mii_bus.read = &fixed_mdio_read; 220 + fmb->mii_bus.write = &fixed_mdio_write; 221 + fmb->mii_bus.irq = fmb->irqs; 222 + 223 + ret = mdiobus_register(&fmb->mii_bus); 224 + if (ret) 225 + goto err_mdiobus_reg; 226 + 227 + return 0; 228 + 229 + err_mdiobus_reg: 230 + platform_device_unregister(pdev); 231 + err_pdev: 232 + return ret; 233 + } 234 + module_init(fixed_mdio_bus_init); 235 + 236 + static void __exit fixed_mdio_bus_exit(void) 237 + { 238 + struct fixed_mdio_bus *fmb = &platform_fmb; 239 + struct fixed_phy *fp; 240 + 241 + mdiobus_unregister(&fmb->mii_bus); 242 + platform_device_unregister(pdev); 243 + 244 + list_for_each_entry(fp, &fmb->phys, node) { 245 + list_del(&fp->node); 246 + kfree(fp); 247 + } 248 + } 249 + module_exit(fixed_mdio_bus_exit); 250 + 251 + MODULE_DESCRIPTION("Fixed MDIO bus (MDIO bus emulation with fixed PHYs)"); 312 252 MODULE_AUTHOR("Vitaly Bordug"); 313 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);
+3 -2
drivers/rapidio/rio.c
··· 23 23 #include <linux/module.h> 24 24 #include <linux/spinlock.h> 25 25 #include <linux/slab.h> 26 + #include <linux/interrupt.h> 26 27 27 28 #include "rio.h" 28 29 ··· 477 476 port->iores.end - port->iores.start, 478 477 port->name)) { 479 478 printk(KERN_ERR 480 - "RIO: Error requesting master port region %8.8lx-%8.8lx\n", 481 - port->iores.start, port->iores.end - 1); 479 + "RIO: Error requesting master port region 0x%016llx-0x%016llx\n", 480 + (u64)port->iores.start, (u64)port->iores.end - 1); 482 481 rc = -ENOMEM; 483 482 goto out; 484 483 }
+10
drivers/serial/Kconfig
··· 1284 1284 Currently, only 8250 compatible ports are supported, but 1285 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 1297 endmenu
+1
drivers/serial/Makefile
··· 64 64 obj-$(CONFIG_SERIAL_NETX) += netx-serial.o 65 65 obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o 66 66 obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o 67 + obj-$(CONFIG_SERIAL_QE) += ucc_uart.o
+1 -1
drivers/serial/cpm_uart/cpm_uart_cpm2.c
··· 165 165 * really has to get out of the driver so boards can 166 166 * be supported in a sane fashion. 167 167 */ 168 + volatile cpmux_t *cpmux = cpm2_map(im_cpmux); 168 169 #ifndef CONFIG_STX_GP3 169 170 volatile iop_cpm2_t *io = cpm2_map(im_ioport); 170 - volatile cpmux_t *cpmux = cpm2_map(im_cpmux); 171 171 172 172 io->iop_pparb |= 0x008b0000; 173 173 io->iop_pdirb |= 0x00880000;
+1514
drivers/serial/ucc_uart.c
··· 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 +
+32 -2
include/asm-powerpc/immap_qe.h
··· 393 393 u8 res2[0x48]; 394 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 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 429 } __attribute__ ((packed)); 400 430 401 431 struct qe_immap {
+1
include/asm-powerpc/lmb.h
··· 51 51 extern unsigned long __init lmb_phys_mem_size(void); 52 52 extern unsigned long __init lmb_end_of_DRAM(void); 53 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 56 extern void lmb_dump_all(void); 56 57
+1
include/asm-powerpc/mpc8260.h
··· 8 8 #ifndef __ASM_POWERPC_MPC8260_H__ 9 9 #define __ASM_POWERPC_MPC8260_H__ 10 10 11 + #define MPC82XX_BCR_PLDP 0x00800000 /* Pipeline Maximum Depth */ 11 12 12 13 #ifdef CONFIG_8260 13 14
-3
include/asm-powerpc/pci-bridge.h
··· 152 152 resource_size_t cfg_addr, 153 153 resource_size_t cfg_data, u32 flags); 154 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 155 #else /* CONFIG_PPC64 */ 159 156 160 157 /*
+61
include/asm-powerpc/qe.h
··· 94 94 void qe_muram_dump(void); 95 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 149 /* Buffer descriptors */ 98 150 struct qe_bd { 99 151 __be16 status; ··· 380 328 #define QE_SDTM_MSNUM_SHIFT 24 381 329 382 330 #define QE_SDEBCR_BA_MASK 0x01FFFFFF 331 + 332 + /* Communication Processor */ 333 + #define QE_CP_CERCR_MEE 0x8000 /* Multi-user RAM ECC enable */ 334 + #define QE_CP_CERCR_IEE 0x4000 /* Instruction RAM ECC enable */ 335 + #define QE_CP_CERCR_CIR 0x0800 /* Common instruction RAM */ 336 + 337 + /* I-RAM */ 338 + #define QE_IRAM_IADD_AIE 0x80000000 /* Auto Increment Enable */ 339 + #define QE_IRAM_IADD_BADDR 0x00080000 /* Base Address */ 383 340 384 341 /* UPC */ 385 342 #define UPGCR_PROTOCOL 0x80000000 /* protocol ul2 or pl2 */
+2
include/asm-powerpc/system.h
··· 169 169 extern void bad_page_fault(struct pt_regs *, unsigned long, int); 170 170 extern int die(const char *, struct pt_regs *, long); 171 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 174 #ifdef CONFIG_BOOKE_WDT 173 175 extern u32 booke_wdt_enabled; 174 176 extern u32 booke_wdt_period;
+22 -29
include/linux/phy_fixed.h
··· 1 1 #ifndef __PHY_FIXED_H 2 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 4 struct fixed_phy_status { 15 - u8 link; 16 - u16 speed; 17 - u8 duplex; 5 + int link; 6 + int speed; 7 + int duplex; 8 + int pause; 9 + int asym_pause; 18 10 }; 19 11 20 - /*----------------------------------------------------------------------------- 21 - * Private information hoder for mii_bus 22 - *-----------------------------------------------------------------------------*/ 23 - struct fixed_info { 24 - u16 *regs; 25 - u8 regs_num; 26 - struct fixed_phy_status phy_status; 27 - struct phy_device *phydev; /* pointer to the container */ 28 - /* link & speed cb */ 29 - int (*link_update) (struct net_device *, struct fixed_phy_status *); 12 + #ifdef CONFIG_FIXED_PHY 13 + extern int fixed_phy_add(unsigned int irq, int phy_id, 14 + struct fixed_phy_status *status); 15 + #else 16 + static inline int fixed_phy_add(unsigned int irq, int phy_id, 17 + struct fixed_phy_status *status) 18 + { 19 + return -ENODEV; 20 + } 21 + #endif /* CONFIG_FIXED_PHY */ 30 22 31 - }; 32 - 33 - 34 - int fixed_mdio_set_link_update(struct phy_device *, 35 - int (*link_update) (struct net_device *, struct fixed_phy_status *)); 36 - struct fixed_info *fixed_mdio_get_phydev (int phydev_ind); 23 + /* 24 + * This function issued only by fixed_phy-aware drivers, no need 25 + * protect it with #ifdef 26 + */ 27 + extern int fixed_phy_set_link_update(struct phy_device *phydev, 28 + int (*link_update)(struct net_device *, 29 + struct fixed_phy_status *)); 37 30 38 31 #endif /* __PHY_FIXED_H */