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

powerpc: Remove Xilinx PPC405/PPC440 support

The latest Xilinx design tools called ISE and EDK has been released in
October 2013. New tool doesn't support any PPC405/PPC440 new designs.
These platforms are no longer supported and tested.

PowerPC 405/440 port is orphan from 2013 by
commit cdeb89943bfc ("MAINTAINERS: Fix incorrect status tag") and
commit 19624236cce1 ("MAINTAINERS: Update Grant's email address and maintainership")
that's why it is time to remove the support fot these platforms.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/8c593895e2cb57d232d85ce4d8c3a1aa7f0869cc.1590079968.git.christophe.leroy@csgroup.eu

authored by

Michal Simek and committed by
Michael Ellerman
7ade8495 0bdad33d

+7 -1953
-143
Documentation/devicetree/bindings/xilinx.txt
··· 86 86 xlnx,use-parity = <0>; 87 87 }; 88 88 89 - Some IP cores actually implement 2 or more logical devices. In 90 - this case, the device should still describe the whole IP core with 91 - a single node and add a child node for each logical device. The 92 - ranges property can be used to translate from parent IP-core to the 93 - registers of each device. In addition, the parent node should be 94 - compatible with the bus type 'xlnx,compound', and should contain 95 - #address-cells and #size-cells, as with any other bus. (Note: this 96 - makes the assumption that both logical devices have the same bus 97 - binding. If this is not true, then separate nodes should be used 98 - for each logical device). The 'cell-index' property can be used to 99 - enumerate logical devices within an IP core. For example, the 100 - following is the system.mhs entry for the dual ps2 controller found 101 - on the ml403 reference design. 102 - 103 - BEGIN opb_ps2_dual_ref 104 - PARAMETER INSTANCE = opb_ps2_dual_ref_0 105 - PARAMETER HW_VER = 1.00.a 106 - PARAMETER C_BASEADDR = 0xA9000000 107 - PARAMETER C_HIGHADDR = 0xA9001FFF 108 - BUS_INTERFACE SOPB = opb_v20_0 109 - PORT Sys_Intr1 = ps2_1_intr 110 - PORT Sys_Intr2 = ps2_2_intr 111 - PORT Clkin1 = ps2_clk_rx_1 112 - PORT Clkin2 = ps2_clk_rx_2 113 - PORT Clkpd1 = ps2_clk_tx_1 114 - PORT Clkpd2 = ps2_clk_tx_2 115 - PORT Rx1 = ps2_d_rx_1 116 - PORT Rx2 = ps2_d_rx_2 117 - PORT Txpd1 = ps2_d_tx_1 118 - PORT Txpd2 = ps2_d_tx_2 119 - END 120 - 121 - It would result in the following device tree nodes: 122 - 123 - opb_ps2_dual_ref_0: opb-ps2-dual-ref@a9000000 { 124 - #address-cells = <1>; 125 - #size-cells = <1>; 126 - compatible = "xlnx,compound"; 127 - ranges = <0 a9000000 2000>; 128 - // If this device had extra parameters, then they would 129 - // go here. 130 - ps2@0 { 131 - compatible = "xlnx,opb-ps2-dual-ref-1.00.a"; 132 - reg = <0 40>; 133 - interrupt-parent = <&opb_intc_0>; 134 - interrupts = <3 0>; 135 - cell-index = <0>; 136 - }; 137 - ps2@1000 { 138 - compatible = "xlnx,opb-ps2-dual-ref-1.00.a"; 139 - reg = <1000 40>; 140 - interrupt-parent = <&opb_intc_0>; 141 - interrupts = <3 0>; 142 - cell-index = <0>; 143 - }; 144 - }; 145 - 146 - Also, the system.mhs file defines bus attachments from the processor 147 - to the devices. The device tree structure should reflect the bus 148 - attachments. Again an example; this system.mhs fragment: 149 - 150 - BEGIN ppc405_virtex4 151 - PARAMETER INSTANCE = ppc405_0 152 - PARAMETER HW_VER = 1.01.a 153 - BUS_INTERFACE DPLB = plb_v34_0 154 - BUS_INTERFACE IPLB = plb_v34_0 155 - END 156 - 157 - BEGIN opb_intc 158 - PARAMETER INSTANCE = opb_intc_0 159 - PARAMETER HW_VER = 1.00.c 160 - PARAMETER C_BASEADDR = 0xD1000FC0 161 - PARAMETER C_HIGHADDR = 0xD1000FDF 162 - BUS_INTERFACE SOPB = opb_v20_0 163 - END 164 - 165 - BEGIN opb_uart16550 166 - PARAMETER INSTANCE = opb_uart16550_0 167 - PARAMETER HW_VER = 1.00.d 168 - PARAMETER C_BASEADDR = 0xa0000000 169 - PARAMETER C_HIGHADDR = 0xa0001FFF 170 - BUS_INTERFACE SOPB = opb_v20_0 171 - END 172 - 173 - BEGIN plb_v34 174 - PARAMETER INSTANCE = plb_v34_0 175 - PARAMETER HW_VER = 1.02.a 176 - END 177 - 178 - BEGIN plb_bram_if_cntlr 179 - PARAMETER INSTANCE = plb_bram_if_cntlr_0 180 - PARAMETER HW_VER = 1.00.b 181 - PARAMETER C_BASEADDR = 0xFFFF0000 182 - PARAMETER C_HIGHADDR = 0xFFFFFFFF 183 - BUS_INTERFACE SPLB = plb_v34_0 184 - END 185 - 186 - BEGIN plb2opb_bridge 187 - PARAMETER INSTANCE = plb2opb_bridge_0 188 - PARAMETER HW_VER = 1.01.a 189 - PARAMETER C_RNG0_BASEADDR = 0x20000000 190 - PARAMETER C_RNG0_HIGHADDR = 0x3FFFFFFF 191 - PARAMETER C_RNG1_BASEADDR = 0x60000000 192 - PARAMETER C_RNG1_HIGHADDR = 0x7FFFFFFF 193 - PARAMETER C_RNG2_BASEADDR = 0x80000000 194 - PARAMETER C_RNG2_HIGHADDR = 0xBFFFFFFF 195 - PARAMETER C_RNG3_BASEADDR = 0xC0000000 196 - PARAMETER C_RNG3_HIGHADDR = 0xDFFFFFFF 197 - BUS_INTERFACE SPLB = plb_v34_0 198 - BUS_INTERFACE MOPB = opb_v20_0 199 - END 200 - 201 - Gives this device tree (some properties removed for clarity): 202 - 203 - plb@0 { 204 - #address-cells = <1>; 205 - #size-cells = <1>; 206 - compatible = "xlnx,plb-v34-1.02.a"; 207 - device_type = "ibm,plb"; 208 - ranges; // 1:1 translation 209 - 210 - plb_bram_if_cntrl_0: bram@ffff0000 { 211 - reg = <ffff0000 10000>; 212 - } 213 - 214 - opb@20000000 { 215 - #address-cells = <1>; 216 - #size-cells = <1>; 217 - ranges = <20000000 20000000 20000000 218 - 60000000 60000000 20000000 219 - 80000000 80000000 40000000 220 - c0000000 c0000000 20000000>; 221 - 222 - opb_uart16550_0: serial@a0000000 { 223 - reg = <a00000000 2000>; 224 - }; 225 - 226 - opb_intc_0: interrupt-controller@d1000fc0 { 227 - reg = <d1000fc0 20>; 228 - }; 229 - }; 230 - }; 231 - 232 89 That covers the general approach to binding xilinx IP cores into the 233 90 device tree. The following are bindings for specific devices: 234 91
+2 -26
Documentation/powerpc/bootwrapper.rst
··· 70 70 kernel with this image type and it depends entirely on 71 71 the embedded device tree for all information. 72 72 73 - The simpleImage is useful for booting systems with 74 - an unknown firmware interface or for booting from 75 - a debugger when no firmware is present (such as on 76 - the Xilinx Virtex platform). The only assumption that 77 - simpleImage makes is that RAM is correctly initialized 78 - and that the MMU is either off or has RAM mapped to 79 - base address 0. 80 - 81 - simpleImage also supports inserting special platform 82 - specific initialization code to the start of the bootup 83 - sequence. The virtex405 platform uses this feature to 84 - ensure that the cache is invalidated before caching 85 - is enabled. Platform specific initialization code is 86 - added as part of the wrapper script and is keyed on 87 - the image target name. For example, all 88 - simpleImage.virtex405-* targets will add the 89 - virtex405-head.S initialization code (This also means 90 - that the dts file for virtex405 targets should be 91 - named (virtex405-<board>.dts). Search the wrapper 92 - script for 'virtex405' and see the file 93 - arch/powerpc/boot/virtex405-head.S for details. 94 - 95 73 treeImage.%; Image format for used with OpenBIOS firmware found 96 74 on some ppc4xx hardware. This image embeds a device 97 75 tree blob inside the image. ··· 94 116 and cuImage) all generate the device tree blob from a file in the 95 117 arch/powerpc/boot/dts/ directory. The Makefile selects the correct device 96 118 tree source based on the name of the target. Therefore, if the kernel is 97 - built with 'make treeImage.walnut simpleImage.virtex405-ml403', then the 98 - build system will use arch/powerpc/boot/dts/walnut.dts to build 99 - treeImage.walnut and arch/powerpc/boot/dts/virtex405-ml403.dts to build 100 - the simpleImage.virtex405-ml403. 119 + built with 'make treeImage.walnut', then the build system will use 120 + arch/powerpc/boot/dts/walnut.dts to build treeImage.walnut. 101 121 102 122 Two special targets called 'zImage' and 'zImage.initrd' also exist. These 103 123 targets build all the default images as selected by the kernel configuration.
+1 -1
arch/powerpc/Kconfig.debug
··· 230 230 help 231 231 Select this to enable early debugging for IBM 40x chips via the 232 232 inbuilt serial port. This works on chips with a 16550 compatible 233 - UART. Xilinx chips with uartlite cannot use this option. 233 + UART. 234 234 235 235 config PPC_EARLY_DEBUG_CPM 236 236 bool "Early serial debugging for Freescale CPM-based serial ports"
+2 -5
arch/powerpc/boot/Makefile
··· 79 79 $(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405 80 80 $(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405 81 81 $(obj)/treeboot-akebono.o: BOOTCFLAGS += -mcpu=405 82 - $(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405 83 82 84 83 # The pre-boot decompressors pull in a lot of kernel headers and other source 85 84 # files. This creates a bit of a dependency headache since we need to copy ··· 128 129 src-wlib-$(CONFIG_PPC_8xx) += mpc8xx.c planetcore.c fsl-soc.c 129 130 src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c 130 131 src-wlib-$(CONFIG_EMBEDDED6xx) += ugecon.c fsl-soc.c 131 - src-wlib-$(CONFIG_XILINX_VIRTEX) += uartlite.c 132 132 src-wlib-$(CONFIG_CPM) += cpm-serial.c 133 133 134 134 src-plat-y := of.c epapr.c 135 135 src-plat-$(CONFIG_40x) += fixed-head.S ep405.c cuboot-hotfoot.c \ 136 136 treeboot-walnut.c cuboot-acadia.c \ 137 - cuboot-kilauea.c simpleboot.c \ 138 - virtex405-head.S virtex.c 137 + cuboot-kilauea.c simpleboot.c 139 138 src-plat-$(CONFIG_44x) += treeboot-ebony.c cuboot-ebony.c treeboot-bamboo.c \ 140 139 cuboot-bamboo.c cuboot-sam440ep.c \ 141 140 cuboot-sequoia.c cuboot-rainier.c \ ··· 141 144 cuboot-warp.c cuboot-yosemite.c \ 142 145 treeboot-iss4xx.c treeboot-currituck.c \ 143 146 treeboot-akebono.c \ 144 - simpleboot.c fixed-head.S virtex.c 147 + simpleboot.c fixed-head.S 145 148 src-plat-$(CONFIG_PPC_8xx) += cuboot-8xx.c fixed-head.S ep88xc.c redboot-8xx.c 146 149 src-plat-$(CONFIG_PPC_MPC52xx) += cuboot-52xx.c 147 150 src-plat-$(CONFIG_PPC_82xx) += cuboot-pq2.c fixed-head.S ep8248e.c cuboot-824x.c
-1
arch/powerpc/boot/dts/Makefile
··· 4 4 5 5 dtstree := $(srctree)/$(src) 6 6 dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts)) 7 - dtb-$(CONFIG_XILINX_VIRTEX440_GENERIC_BOARD) += virtex440-ml507.dtb virtex440-ml510.dtb
-406
arch/powerpc/boot/dts/virtex440-ml507.dts
··· 1 - /* 2 - * This file supports the Xilinx ML507 board with the 440 processor. 3 - * A reference design for the FPGA is provided at http://git.xilinx.com. 4 - * 5 - * (C) Copyright 2008 Xilinx, Inc. 6 - * 7 - * This file is licensed under the terms of the GNU General Public License 8 - * version 2. This program is licensed "as is" without any warranty of any 9 - * kind, whether express or implied. 10 - * 11 - * --- 12 - * 13 - * Device Tree Generator version: 1.1 14 - * 15 - * CAUTION: This file is automatically generated by libgen. 16 - * Version: Xilinx EDK 10.1.03 EDK_K_SP3.6 17 - * 18 - * XPS project directory: ml507_ppc440_emb_ref 19 - */ 20 - 21 - /dts-v1/; 22 - 23 - / { 24 - #address-cells = <1>; 25 - #size-cells = <1>; 26 - compatible = "xlnx,virtex440"; 27 - dcr-parent = <&ppc440_0>; 28 - model = "testing"; 29 - DDR2_SDRAM: memory@0 { 30 - device_type = "memory"; 31 - reg = < 0 0x10000000 >; 32 - } ; 33 - chosen { 34 - bootargs = "console=ttyS0 root=/dev/ram"; 35 - stdout-path = &RS232_Uart_1; 36 - } ; 37 - cpus { 38 - #address-cells = <1>; 39 - #cpus = <1>; 40 - #size-cells = <0>; 41 - ppc440_0: cpu@0 { 42 - clock-frequency = <400000000>; 43 - compatible = "PowerPC,440", "ibm,ppc440"; 44 - d-cache-line-size = <0x20>; 45 - d-cache-size = <0x8000>; 46 - dcr-access-method = "native"; 47 - dcr-controller ; 48 - device_type = "cpu"; 49 - i-cache-line-size = <0x20>; 50 - i-cache-size = <0x8000>; 51 - model = "PowerPC,440"; 52 - reg = <0>; 53 - timebase-frequency = <400000000>; 54 - xlnx,apu-control = <1>; 55 - xlnx,apu-udi-0 = <0>; 56 - xlnx,apu-udi-1 = <0>; 57 - xlnx,apu-udi-10 = <0>; 58 - xlnx,apu-udi-11 = <0>; 59 - xlnx,apu-udi-12 = <0>; 60 - xlnx,apu-udi-13 = <0>; 61 - xlnx,apu-udi-14 = <0>; 62 - xlnx,apu-udi-15 = <0>; 63 - xlnx,apu-udi-2 = <0>; 64 - xlnx,apu-udi-3 = <0>; 65 - xlnx,apu-udi-4 = <0>; 66 - xlnx,apu-udi-5 = <0>; 67 - xlnx,apu-udi-6 = <0>; 68 - xlnx,apu-udi-7 = <0>; 69 - xlnx,apu-udi-8 = <0>; 70 - xlnx,apu-udi-9 = <0>; 71 - xlnx,dcr-autolock-enable = <1>; 72 - xlnx,dcu-rd-ld-cache-plb-prio = <0>; 73 - xlnx,dcu-rd-noncache-plb-prio = <0>; 74 - xlnx,dcu-rd-touch-plb-prio = <0>; 75 - xlnx,dcu-rd-urgent-plb-prio = <0>; 76 - xlnx,dcu-wr-flush-plb-prio = <0>; 77 - xlnx,dcu-wr-store-plb-prio = <0>; 78 - xlnx,dcu-wr-urgent-plb-prio = <0>; 79 - xlnx,dma0-control = <0>; 80 - xlnx,dma0-plb-prio = <0>; 81 - xlnx,dma0-rxchannelctrl = <0x1010000>; 82 - xlnx,dma0-rxirqtimer = <0x3ff>; 83 - xlnx,dma0-txchannelctrl = <0x1010000>; 84 - xlnx,dma0-txirqtimer = <0x3ff>; 85 - xlnx,dma1-control = <0>; 86 - xlnx,dma1-plb-prio = <0>; 87 - xlnx,dma1-rxchannelctrl = <0x1010000>; 88 - xlnx,dma1-rxirqtimer = <0x3ff>; 89 - xlnx,dma1-txchannelctrl = <0x1010000>; 90 - xlnx,dma1-txirqtimer = <0x3ff>; 91 - xlnx,dma2-control = <0>; 92 - xlnx,dma2-plb-prio = <0>; 93 - xlnx,dma2-rxchannelctrl = <0x1010000>; 94 - xlnx,dma2-rxirqtimer = <0x3ff>; 95 - xlnx,dma2-txchannelctrl = <0x1010000>; 96 - xlnx,dma2-txirqtimer = <0x3ff>; 97 - xlnx,dma3-control = <0>; 98 - xlnx,dma3-plb-prio = <0>; 99 - xlnx,dma3-rxchannelctrl = <0x1010000>; 100 - xlnx,dma3-rxirqtimer = <0x3ff>; 101 - xlnx,dma3-txchannelctrl = <0x1010000>; 102 - xlnx,dma3-txirqtimer = <0x3ff>; 103 - xlnx,endian-reset = <0>; 104 - xlnx,generate-plb-timespecs = <1>; 105 - xlnx,icu-rd-fetch-plb-prio = <0>; 106 - xlnx,icu-rd-spec-plb-prio = <0>; 107 - xlnx,icu-rd-touch-plb-prio = <0>; 108 - xlnx,interconnect-imask = <0xffffffff>; 109 - xlnx,mplb-allow-lock-xfer = <1>; 110 - xlnx,mplb-arb-mode = <0>; 111 - xlnx,mplb-awidth = <0x20>; 112 - xlnx,mplb-counter = <0x500>; 113 - xlnx,mplb-dwidth = <0x80>; 114 - xlnx,mplb-max-burst = <8>; 115 - xlnx,mplb-native-dwidth = <0x80>; 116 - xlnx,mplb-p2p = <0>; 117 - xlnx,mplb-prio-dcur = <2>; 118 - xlnx,mplb-prio-dcuw = <3>; 119 - xlnx,mplb-prio-icu = <4>; 120 - xlnx,mplb-prio-splb0 = <1>; 121 - xlnx,mplb-prio-splb1 = <0>; 122 - xlnx,mplb-read-pipe-enable = <1>; 123 - xlnx,mplb-sync-tattribute = <0>; 124 - xlnx,mplb-wdog-enable = <1>; 125 - xlnx,mplb-write-pipe-enable = <1>; 126 - xlnx,mplb-write-post-enable = <1>; 127 - xlnx,num-dma = <1>; 128 - xlnx,pir = <0xf>; 129 - xlnx,ppc440mc-addr-base = <0>; 130 - xlnx,ppc440mc-addr-high = <0xfffffff>; 131 - xlnx,ppc440mc-arb-mode = <0>; 132 - xlnx,ppc440mc-bank-conflict-mask = <0xc00000>; 133 - xlnx,ppc440mc-control = <0xf810008f>; 134 - xlnx,ppc440mc-max-burst = <8>; 135 - xlnx,ppc440mc-prio-dcur = <2>; 136 - xlnx,ppc440mc-prio-dcuw = <3>; 137 - xlnx,ppc440mc-prio-icu = <4>; 138 - xlnx,ppc440mc-prio-splb0 = <1>; 139 - xlnx,ppc440mc-prio-splb1 = <0>; 140 - xlnx,ppc440mc-row-conflict-mask = <0x3ffe00>; 141 - xlnx,ppcdm-asyncmode = <0>; 142 - xlnx,ppcds-asyncmode = <0>; 143 - xlnx,user-reset = <0>; 144 - DMA0: sdma@80 { 145 - compatible = "xlnx,ll-dma-1.00.a"; 146 - dcr-reg = < 0x80 0x11 >; 147 - interrupt-parent = <&xps_intc_0>; 148 - interrupts = < 10 2 11 2 >; 149 - } ; 150 - } ; 151 - } ; 152 - plb_v46_0: plb@0 { 153 - #address-cells = <1>; 154 - #size-cells = <1>; 155 - compatible = "xlnx,plb-v46-1.03.a", "simple-bus"; 156 - ranges ; 157 - DIP_Switches_8Bit: gpio@81460000 { 158 - compatible = "xlnx,xps-gpio-1.00.a"; 159 - interrupt-parent = <&xps_intc_0>; 160 - interrupts = < 7 2 >; 161 - reg = < 0x81460000 0x10000 >; 162 - xlnx,all-inputs = <1>; 163 - xlnx,all-inputs-2 = <0>; 164 - xlnx,dout-default = <0>; 165 - xlnx,dout-default-2 = <0>; 166 - xlnx,family = "virtex5"; 167 - xlnx,gpio-width = <8>; 168 - xlnx,interrupt-present = <1>; 169 - xlnx,is-bidir = <1>; 170 - xlnx,is-bidir-2 = <1>; 171 - xlnx,is-dual = <0>; 172 - xlnx,tri-default = <0xffffffff>; 173 - xlnx,tri-default-2 = <0xffffffff>; 174 - } ; 175 - FLASH: flash@fc000000 { 176 - bank-width = <2>; 177 - compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash"; 178 - reg = < 0xfc000000 0x2000000 >; 179 - xlnx,family = "virtex5"; 180 - xlnx,include-datawidth-matching-0 = <0x1>; 181 - xlnx,include-datawidth-matching-1 = <0x0>; 182 - xlnx,include-datawidth-matching-2 = <0x0>; 183 - xlnx,include-datawidth-matching-3 = <0x0>; 184 - xlnx,include-negedge-ioregs = <0x0>; 185 - xlnx,include-plb-ipif = <0x1>; 186 - xlnx,include-wrbuf = <0x1>; 187 - xlnx,max-mem-width = <0x10>; 188 - xlnx,mch-native-dwidth = <0x20>; 189 - xlnx,mch-plb-clk-period-ps = <0x2710>; 190 - xlnx,mch-splb-awidth = <0x20>; 191 - xlnx,mch0-accessbuf-depth = <0x10>; 192 - xlnx,mch0-protocol = <0x0>; 193 - xlnx,mch0-rddatabuf-depth = <0x10>; 194 - xlnx,mch1-accessbuf-depth = <0x10>; 195 - xlnx,mch1-protocol = <0x0>; 196 - xlnx,mch1-rddatabuf-depth = <0x10>; 197 - xlnx,mch2-accessbuf-depth = <0x10>; 198 - xlnx,mch2-protocol = <0x0>; 199 - xlnx,mch2-rddatabuf-depth = <0x10>; 200 - xlnx,mch3-accessbuf-depth = <0x10>; 201 - xlnx,mch3-protocol = <0x0>; 202 - xlnx,mch3-rddatabuf-depth = <0x10>; 203 - xlnx,mem0-width = <0x10>; 204 - xlnx,mem1-width = <0x20>; 205 - xlnx,mem2-width = <0x20>; 206 - xlnx,mem3-width = <0x20>; 207 - xlnx,num-banks-mem = <0x1>; 208 - xlnx,num-channels = <0x2>; 209 - xlnx,priority-mode = <0x0>; 210 - xlnx,synch-mem-0 = <0x0>; 211 - xlnx,synch-mem-1 = <0x0>; 212 - xlnx,synch-mem-2 = <0x0>; 213 - xlnx,synch-mem-3 = <0x0>; 214 - xlnx,synch-pipedelay-0 = <0x2>; 215 - xlnx,synch-pipedelay-1 = <0x2>; 216 - xlnx,synch-pipedelay-2 = <0x2>; 217 - xlnx,synch-pipedelay-3 = <0x2>; 218 - xlnx,tavdv-ps-mem-0 = <0x1adb0>; 219 - xlnx,tavdv-ps-mem-1 = <0x3a98>; 220 - xlnx,tavdv-ps-mem-2 = <0x3a98>; 221 - xlnx,tavdv-ps-mem-3 = <0x3a98>; 222 - xlnx,tcedv-ps-mem-0 = <0x1adb0>; 223 - xlnx,tcedv-ps-mem-1 = <0x3a98>; 224 - xlnx,tcedv-ps-mem-2 = <0x3a98>; 225 - xlnx,tcedv-ps-mem-3 = <0x3a98>; 226 - xlnx,thzce-ps-mem-0 = <0x88b8>; 227 - xlnx,thzce-ps-mem-1 = <0x1b58>; 228 - xlnx,thzce-ps-mem-2 = <0x1b58>; 229 - xlnx,thzce-ps-mem-3 = <0x1b58>; 230 - xlnx,thzoe-ps-mem-0 = <0x1b58>; 231 - xlnx,thzoe-ps-mem-1 = <0x1b58>; 232 - xlnx,thzoe-ps-mem-2 = <0x1b58>; 233 - xlnx,thzoe-ps-mem-3 = <0x1b58>; 234 - xlnx,tlzwe-ps-mem-0 = <0x88b8>; 235 - xlnx,tlzwe-ps-mem-1 = <0x0>; 236 - xlnx,tlzwe-ps-mem-2 = <0x0>; 237 - xlnx,tlzwe-ps-mem-3 = <0x0>; 238 - xlnx,twc-ps-mem-0 = <0x2af8>; 239 - xlnx,twc-ps-mem-1 = <0x3a98>; 240 - xlnx,twc-ps-mem-2 = <0x3a98>; 241 - xlnx,twc-ps-mem-3 = <0x3a98>; 242 - xlnx,twp-ps-mem-0 = <0x11170>; 243 - xlnx,twp-ps-mem-1 = <0x2ee0>; 244 - xlnx,twp-ps-mem-2 = <0x2ee0>; 245 - xlnx,twp-ps-mem-3 = <0x2ee0>; 246 - xlnx,xcl0-linesize = <0x4>; 247 - xlnx,xcl0-writexfer = <0x1>; 248 - xlnx,xcl1-linesize = <0x4>; 249 - xlnx,xcl1-writexfer = <0x1>; 250 - xlnx,xcl2-linesize = <0x4>; 251 - xlnx,xcl2-writexfer = <0x1>; 252 - xlnx,xcl3-linesize = <0x4>; 253 - xlnx,xcl3-writexfer = <0x1>; 254 - } ; 255 - Hard_Ethernet_MAC: xps-ll-temac@81c00000 { 256 - #address-cells = <1>; 257 - #size-cells = <1>; 258 - compatible = "xlnx,compound"; 259 - ethernet@81c00000 { 260 - #address-cells = <1>; 261 - #size-cells = <0>; 262 - compatible = "xlnx,xps-ll-temac-1.01.b"; 263 - device_type = "network"; 264 - interrupt-parent = <&xps_intc_0>; 265 - interrupts = < 5 2 >; 266 - llink-connected = <&DMA0>; 267 - local-mac-address = [ 02 00 00 00 00 00 ]; 268 - reg = < 0x81c00000 0x40 >; 269 - xlnx,bus2core-clk-ratio = <1>; 270 - xlnx,phy-type = <1>; 271 - xlnx,phyaddr = <1>; 272 - xlnx,rxcsum = <1>; 273 - xlnx,rxfifo = <0x1000>; 274 - xlnx,temac-type = <0>; 275 - xlnx,txcsum = <1>; 276 - xlnx,txfifo = <0x1000>; 277 - phy-handle = <&phy7>; 278 - clock-frequency = <100000000>; 279 - phy7: phy@7 { 280 - compatible = "marvell,88e1111"; 281 - reg = <7>; 282 - } ; 283 - } ; 284 - } ; 285 - IIC_EEPROM: i2c@81600000 { 286 - compatible = "xlnx,xps-iic-2.00.a"; 287 - interrupt-parent = <&xps_intc_0>; 288 - interrupts = < 6 2 >; 289 - reg = < 0x81600000 0x10000 >; 290 - xlnx,clk-freq = <0x5f5e100>; 291 - xlnx,family = "virtex5"; 292 - xlnx,gpo-width = <0x1>; 293 - xlnx,iic-freq = <0x186a0>; 294 - xlnx,scl-inertial-delay = <0x0>; 295 - xlnx,sda-inertial-delay = <0x0>; 296 - xlnx,ten-bit-adr = <0x0>; 297 - } ; 298 - LEDs_8Bit: gpio@81400000 { 299 - compatible = "xlnx,xps-gpio-1.00.a"; 300 - reg = < 0x81400000 0x10000 >; 301 - xlnx,all-inputs = <0>; 302 - xlnx,all-inputs-2 = <0>; 303 - xlnx,dout-default = <0>; 304 - xlnx,dout-default-2 = <0>; 305 - xlnx,family = "virtex5"; 306 - xlnx,gpio-width = <8>; 307 - xlnx,interrupt-present = <0>; 308 - xlnx,is-bidir = <1>; 309 - xlnx,is-bidir-2 = <1>; 310 - xlnx,is-dual = <0>; 311 - xlnx,tri-default = <0xffffffff>; 312 - xlnx,tri-default-2 = <0xffffffff>; 313 - } ; 314 - LEDs_Positions: gpio@81420000 { 315 - compatible = "xlnx,xps-gpio-1.00.a"; 316 - reg = < 0x81420000 0x10000 >; 317 - xlnx,all-inputs = <0>; 318 - xlnx,all-inputs-2 = <0>; 319 - xlnx,dout-default = <0>; 320 - xlnx,dout-default-2 = <0>; 321 - xlnx,family = "virtex5"; 322 - xlnx,gpio-width = <5>; 323 - xlnx,interrupt-present = <0>; 324 - xlnx,is-bidir = <1>; 325 - xlnx,is-bidir-2 = <1>; 326 - xlnx,is-dual = <0>; 327 - xlnx,tri-default = <0xffffffff>; 328 - xlnx,tri-default-2 = <0xffffffff>; 329 - } ; 330 - Push_Buttons_5Bit: gpio@81440000 { 331 - compatible = "xlnx,xps-gpio-1.00.a"; 332 - interrupt-parent = <&xps_intc_0>; 333 - interrupts = < 8 2 >; 334 - reg = < 0x81440000 0x10000 >; 335 - xlnx,all-inputs = <1>; 336 - xlnx,all-inputs-2 = <0>; 337 - xlnx,dout-default = <0>; 338 - xlnx,dout-default-2 = <0>; 339 - xlnx,family = "virtex5"; 340 - xlnx,gpio-width = <5>; 341 - xlnx,interrupt-present = <1>; 342 - xlnx,is-bidir = <1>; 343 - xlnx,is-bidir-2 = <1>; 344 - xlnx,is-dual = <0>; 345 - xlnx,tri-default = <0xffffffff>; 346 - xlnx,tri-default-2 = <0xffffffff>; 347 - } ; 348 - RS232_Uart_1: serial@83e00000 { 349 - clock-frequency = <100000000>; 350 - compatible = "xlnx,xps-uart16550-2.00.b", "ns16550"; 351 - current-speed = <9600>; 352 - device_type = "serial"; 353 - interrupt-parent = <&xps_intc_0>; 354 - interrupts = < 9 2 >; 355 - reg = < 0x83e00000 0x10000 >; 356 - reg-offset = <0x1003>; 357 - reg-shift = <2>; 358 - xlnx,family = "virtex5"; 359 - xlnx,has-external-rclk = <0>; 360 - xlnx,has-external-xin = <0>; 361 - xlnx,is-a-16550 = <1>; 362 - } ; 363 - SysACE_CompactFlash: sysace@83600000 { 364 - compatible = "xlnx,xps-sysace-1.00.a"; 365 - interrupt-parent = <&xps_intc_0>; 366 - interrupts = < 4 2 >; 367 - reg = < 0x83600000 0x10000 >; 368 - xlnx,family = "virtex5"; 369 - xlnx,mem-width = <0x10>; 370 - } ; 371 - xps_bram_if_cntlr_1: xps-bram-if-cntlr@ffff0000 { 372 - compatible = "xlnx,xps-bram-if-cntlr-1.00.a"; 373 - reg = < 0xffff0000 0x10000 >; 374 - xlnx,family = "virtex5"; 375 - } ; 376 - xps_intc_0: interrupt-controller@81800000 { 377 - #interrupt-cells = <2>; 378 - compatible = "xlnx,xps-intc-1.00.a"; 379 - interrupt-controller ; 380 - reg = < 0x81800000 0x10000 >; 381 - xlnx,num-intr-inputs = <0xc>; 382 - } ; 383 - xps_timebase_wdt_1: xps-timebase-wdt@83a00000 { 384 - compatible = "xlnx,xps-timebase-wdt-1.00.b"; 385 - interrupt-parent = <&xps_intc_0>; 386 - interrupts = < 2 0 1 2 >; 387 - reg = < 0x83a00000 0x10000 >; 388 - xlnx,family = "virtex5"; 389 - xlnx,wdt-enable-once = <0>; 390 - xlnx,wdt-interval = <0x1e>; 391 - } ; 392 - xps_timer_1: timer@83c00000 { 393 - compatible = "xlnx,xps-timer-1.00.a"; 394 - interrupt-parent = <&xps_intc_0>; 395 - interrupts = < 3 2 >; 396 - reg = < 0x83c00000 0x10000 >; 397 - xlnx,count-width = <0x20>; 398 - xlnx,family = "virtex5"; 399 - xlnx,gen0-assert = <1>; 400 - xlnx,gen1-assert = <1>; 401 - xlnx,one-timer-only = <1>; 402 - xlnx,trig0-assert = <1>; 403 - xlnx,trig1-assert = <1>; 404 - } ; 405 - } ; 406 - } ;
-466
arch/powerpc/boot/dts/virtex440-ml510.dts
··· 1 - // SPDX-License-Identifier: GPL-2.0 2 - /* 3 - * Xilinx ML510 Reference Design support 4 - * 5 - * This DTS file was created for the ml510_bsb1_pcores_ppc440 reference design. 6 - * The reference design contains a bug which prevent PCI DMA from working 7 - * properly. A description of the bug is given in the plbv46_pci section. It 8 - * needs to be fixed by the user until Xilinx updates their reference design. 9 - * 10 - * Copyright 2009, Roderick Colenbrander 11 - */ 12 - 13 - /dts-v1/; 14 - / { 15 - #address-cells = <1>; 16 - #size-cells = <1>; 17 - compatible = "xlnx,ml510-ref-design", "xlnx,virtex440"; 18 - dcr-parent = <&ppc440_0>; 19 - DDR2_SDRAM_DIMM0: memory@0 { 20 - device_type = "memory"; 21 - reg = < 0x0 0x20000000 >; 22 - } ; 23 - alias { 24 - ethernet0 = &Hard_Ethernet_MAC; 25 - serial0 = &RS232_Uart_1; 26 - } ; 27 - chosen { 28 - bootargs = "console=ttyS0 root=/dev/ram"; 29 - stdout-path = "/plb@0/serial@83e00000"; 30 - } ; 31 - cpus { 32 - #address-cells = <1>; 33 - #cpus = <0x1>; 34 - #size-cells = <0>; 35 - ppc440_0: cpu@0 { 36 - #address-cells = <1>; 37 - #size-cells = <1>; 38 - clock-frequency = <300000000>; 39 - compatible = "PowerPC,440", "ibm,ppc440"; 40 - d-cache-line-size = <0x20>; 41 - d-cache-size = <0x8000>; 42 - dcr-access-method = "native"; 43 - dcr-controller ; 44 - device_type = "cpu"; 45 - i-cache-line-size = <0x20>; 46 - i-cache-size = <0x8000>; 47 - model = "PowerPC,440"; 48 - reg = <0>; 49 - timebase-frequency = <300000000>; 50 - xlnx,apu-control = <0x2000>; 51 - xlnx,apu-udi-0 = <0x0>; 52 - xlnx,apu-udi-1 = <0x0>; 53 - xlnx,apu-udi-10 = <0x0>; 54 - xlnx,apu-udi-11 = <0x0>; 55 - xlnx,apu-udi-12 = <0x0>; 56 - xlnx,apu-udi-13 = <0x0>; 57 - xlnx,apu-udi-14 = <0x0>; 58 - xlnx,apu-udi-15 = <0x0>; 59 - xlnx,apu-udi-2 = <0x0>; 60 - xlnx,apu-udi-3 = <0x0>; 61 - xlnx,apu-udi-4 = <0x0>; 62 - xlnx,apu-udi-5 = <0x0>; 63 - xlnx,apu-udi-6 = <0x0>; 64 - xlnx,apu-udi-7 = <0x0>; 65 - xlnx,apu-udi-8 = <0x0>; 66 - xlnx,apu-udi-9 = <0x0>; 67 - xlnx,dcr-autolock-enable = <0x1>; 68 - xlnx,dcu-rd-ld-cache-plb-prio = <0x0>; 69 - xlnx,dcu-rd-noncache-plb-prio = <0x0>; 70 - xlnx,dcu-rd-touch-plb-prio = <0x0>; 71 - xlnx,dcu-rd-urgent-plb-prio = <0x0>; 72 - xlnx,dcu-wr-flush-plb-prio = <0x0>; 73 - xlnx,dcu-wr-store-plb-prio = <0x0>; 74 - xlnx,dcu-wr-urgent-plb-prio = <0x0>; 75 - xlnx,dma0-control = <0x0>; 76 - xlnx,dma0-plb-prio = <0x0>; 77 - xlnx,dma0-rxchannelctrl = <0x1010000>; 78 - xlnx,dma0-rxirqtimer = <0x3ff>; 79 - xlnx,dma0-txchannelctrl = <0x1010000>; 80 - xlnx,dma0-txirqtimer = <0x3ff>; 81 - xlnx,dma1-control = <0x0>; 82 - xlnx,dma1-plb-prio = <0x0>; 83 - xlnx,dma1-rxchannelctrl = <0x1010000>; 84 - xlnx,dma1-rxirqtimer = <0x3ff>; 85 - xlnx,dma1-txchannelctrl = <0x1010000>; 86 - xlnx,dma1-txirqtimer = <0x3ff>; 87 - xlnx,dma2-control = <0x0>; 88 - xlnx,dma2-plb-prio = <0x0>; 89 - xlnx,dma2-rxchannelctrl = <0x1010000>; 90 - xlnx,dma2-rxirqtimer = <0x3ff>; 91 - xlnx,dma2-txchannelctrl = <0x1010000>; 92 - xlnx,dma2-txirqtimer = <0x3ff>; 93 - xlnx,dma3-control = <0x0>; 94 - xlnx,dma3-plb-prio = <0x0>; 95 - xlnx,dma3-rxchannelctrl = <0x1010000>; 96 - xlnx,dma3-rxirqtimer = <0x3ff>; 97 - xlnx,dma3-txchannelctrl = <0x1010000>; 98 - xlnx,dma3-txirqtimer = <0x3ff>; 99 - xlnx,endian-reset = <0x0>; 100 - xlnx,generate-plb-timespecs = <0x1>; 101 - xlnx,icu-rd-fetch-plb-prio = <0x0>; 102 - xlnx,icu-rd-spec-plb-prio = <0x0>; 103 - xlnx,icu-rd-touch-plb-prio = <0x0>; 104 - xlnx,interconnect-imask = <0xffffffff>; 105 - xlnx,mplb-allow-lock-xfer = <0x1>; 106 - xlnx,mplb-arb-mode = <0x0>; 107 - xlnx,mplb-awidth = <0x20>; 108 - xlnx,mplb-counter = <0x500>; 109 - xlnx,mplb-dwidth = <0x80>; 110 - xlnx,mplb-max-burst = <0x8>; 111 - xlnx,mplb-native-dwidth = <0x80>; 112 - xlnx,mplb-p2p = <0x0>; 113 - xlnx,mplb-prio-dcur = <0x2>; 114 - xlnx,mplb-prio-dcuw = <0x3>; 115 - xlnx,mplb-prio-icu = <0x4>; 116 - xlnx,mplb-prio-splb0 = <0x1>; 117 - xlnx,mplb-prio-splb1 = <0x0>; 118 - xlnx,mplb-read-pipe-enable = <0x1>; 119 - xlnx,mplb-sync-tattribute = <0x0>; 120 - xlnx,mplb-wdog-enable = <0x1>; 121 - xlnx,mplb-write-pipe-enable = <0x1>; 122 - xlnx,mplb-write-post-enable = <0x1>; 123 - xlnx,num-dma = <0x0>; 124 - xlnx,pir = <0xf>; 125 - xlnx,ppc440mc-addr-base = <0x0>; 126 - xlnx,ppc440mc-addr-high = <0x1fffffff>; 127 - xlnx,ppc440mc-arb-mode = <0x0>; 128 - xlnx,ppc440mc-bank-conflict-mask = <0x1800000>; 129 - xlnx,ppc440mc-control = <0xf810008f>; 130 - xlnx,ppc440mc-max-burst = <0x8>; 131 - xlnx,ppc440mc-prio-dcur = <0x2>; 132 - xlnx,ppc440mc-prio-dcuw = <0x3>; 133 - xlnx,ppc440mc-prio-icu = <0x4>; 134 - xlnx,ppc440mc-prio-splb0 = <0x1>; 135 - xlnx,ppc440mc-prio-splb1 = <0x0>; 136 - xlnx,ppc440mc-row-conflict-mask = <0x7ffe00>; 137 - xlnx,ppcdm-asyncmode = <0x0>; 138 - xlnx,ppcds-asyncmode = <0x0>; 139 - xlnx,user-reset = <0x0>; 140 - } ; 141 - } ; 142 - plb_v46_0: plb@0 { 143 - #address-cells = <1>; 144 - #size-cells = <1>; 145 - compatible = "xlnx,plb-v46-1.03.a", "simple-bus"; 146 - ranges ; 147 - FLASH: flash@fc000000 { 148 - bank-width = <2>; 149 - compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash"; 150 - reg = < 0xfc000000 0x2000000 >; 151 - xlnx,family = "virtex5"; 152 - xlnx,include-datawidth-matching-0 = <0x1>; 153 - xlnx,include-datawidth-matching-1 = <0x0>; 154 - xlnx,include-datawidth-matching-2 = <0x0>; 155 - xlnx,include-datawidth-matching-3 = <0x0>; 156 - xlnx,include-negedge-ioregs = <0x0>; 157 - xlnx,include-plb-ipif = <0x1>; 158 - xlnx,include-wrbuf = <0x1>; 159 - xlnx,max-mem-width = <0x10>; 160 - xlnx,mch-native-dwidth = <0x20>; 161 - xlnx,mch-plb-clk-period-ps = <0x2710>; 162 - xlnx,mch-splb-awidth = <0x20>; 163 - xlnx,mch0-accessbuf-depth = <0x10>; 164 - xlnx,mch0-protocol = <0x0>; 165 - xlnx,mch0-rddatabuf-depth = <0x10>; 166 - xlnx,mch1-accessbuf-depth = <0x10>; 167 - xlnx,mch1-protocol = <0x0>; 168 - xlnx,mch1-rddatabuf-depth = <0x10>; 169 - xlnx,mch2-accessbuf-depth = <0x10>; 170 - xlnx,mch2-protocol = <0x0>; 171 - xlnx,mch2-rddatabuf-depth = <0x10>; 172 - xlnx,mch3-accessbuf-depth = <0x10>; 173 - xlnx,mch3-protocol = <0x0>; 174 - xlnx,mch3-rddatabuf-depth = <0x10>; 175 - xlnx,mem0-width = <0x10>; 176 - xlnx,mem1-width = <0x20>; 177 - xlnx,mem2-width = <0x20>; 178 - xlnx,mem3-width = <0x20>; 179 - xlnx,num-banks-mem = <0x1>; 180 - xlnx,num-channels = <0x2>; 181 - xlnx,priority-mode = <0x0>; 182 - xlnx,synch-mem-0 = <0x0>; 183 - xlnx,synch-mem-1 = <0x0>; 184 - xlnx,synch-mem-2 = <0x0>; 185 - xlnx,synch-mem-3 = <0x0>; 186 - xlnx,synch-pipedelay-0 = <0x2>; 187 - xlnx,synch-pipedelay-1 = <0x2>; 188 - xlnx,synch-pipedelay-2 = <0x2>; 189 - xlnx,synch-pipedelay-3 = <0x2>; 190 - xlnx,tavdv-ps-mem-0 = <0x1adb0>; 191 - xlnx,tavdv-ps-mem-1 = <0x3a98>; 192 - xlnx,tavdv-ps-mem-2 = <0x3a98>; 193 - xlnx,tavdv-ps-mem-3 = <0x3a98>; 194 - xlnx,tcedv-ps-mem-0 = <0x1adb0>; 195 - xlnx,tcedv-ps-mem-1 = <0x3a98>; 196 - xlnx,tcedv-ps-mem-2 = <0x3a98>; 197 - xlnx,tcedv-ps-mem-3 = <0x3a98>; 198 - xlnx,thzce-ps-mem-0 = <0x88b8>; 199 - xlnx,thzce-ps-mem-1 = <0x1b58>; 200 - xlnx,thzce-ps-mem-2 = <0x1b58>; 201 - xlnx,thzce-ps-mem-3 = <0x1b58>; 202 - xlnx,thzoe-ps-mem-0 = <0x1b58>; 203 - xlnx,thzoe-ps-mem-1 = <0x1b58>; 204 - xlnx,thzoe-ps-mem-2 = <0x1b58>; 205 - xlnx,thzoe-ps-mem-3 = <0x1b58>; 206 - xlnx,tlzwe-ps-mem-0 = <0x88b8>; 207 - xlnx,tlzwe-ps-mem-1 = <0x0>; 208 - xlnx,tlzwe-ps-mem-2 = <0x0>; 209 - xlnx,tlzwe-ps-mem-3 = <0x0>; 210 - xlnx,twc-ps-mem-0 = <0x1adb0>; 211 - xlnx,twc-ps-mem-1 = <0x3a98>; 212 - xlnx,twc-ps-mem-2 = <0x3a98>; 213 - xlnx,twc-ps-mem-3 = <0x3a98>; 214 - xlnx,twp-ps-mem-0 = <0x11170>; 215 - xlnx,twp-ps-mem-1 = <0x2ee0>; 216 - xlnx,twp-ps-mem-2 = <0x2ee0>; 217 - xlnx,twp-ps-mem-3 = <0x2ee0>; 218 - xlnx,xcl0-linesize = <0x4>; 219 - xlnx,xcl0-writexfer = <0x1>; 220 - xlnx,xcl1-linesize = <0x4>; 221 - xlnx,xcl1-writexfer = <0x1>; 222 - xlnx,xcl2-linesize = <0x4>; 223 - xlnx,xcl2-writexfer = <0x1>; 224 - xlnx,xcl3-linesize = <0x4>; 225 - xlnx,xcl3-writexfer = <0x1>; 226 - } ; 227 - Hard_Ethernet_MAC: xps-ll-temac@81c00000 { 228 - #address-cells = <1>; 229 - #size-cells = <1>; 230 - compatible = "xlnx,compound"; 231 - ethernet@81c00000 { 232 - compatible = "xlnx,xps-ll-temac-1.01.b"; 233 - device_type = "network"; 234 - interrupt-parent = <&xps_intc_0>; 235 - interrupts = < 8 2 >; 236 - llink-connected = <&Hard_Ethernet_MAC_fifo>; 237 - local-mac-address = [ 02 00 00 00 00 00 ]; 238 - reg = < 0x81c00000 0x40 >; 239 - xlnx,bus2core-clk-ratio = <0x1>; 240 - xlnx,phy-type = <0x3>; 241 - xlnx,phyaddr = <0x1>; 242 - xlnx,rxcsum = <0x0>; 243 - xlnx,rxfifo = <0x8000>; 244 - xlnx,temac-type = <0x0>; 245 - xlnx,txcsum = <0x0>; 246 - xlnx,txfifo = <0x8000>; 247 - } ; 248 - } ; 249 - Hard_Ethernet_MAC_fifo: xps-ll-fifo@81a00000 { 250 - compatible = "xlnx,xps-ll-fifo-1.01.a"; 251 - interrupt-parent = <&xps_intc_0>; 252 - interrupts = < 6 2 >; 253 - reg = < 0x81a00000 0x10000 >; 254 - xlnx,family = "virtex5"; 255 - } ; 256 - IIC_EEPROM: i2c@81600000 { 257 - compatible = "xlnx,xps-iic-2.00.a"; 258 - interrupt-parent = <&xps_intc_0>; 259 - interrupts = < 9 2 >; 260 - reg = < 0x81600000 0x10000 >; 261 - xlnx,clk-freq = <0x5f5e100>; 262 - xlnx,family = "virtex5"; 263 - xlnx,gpo-width = <0x1>; 264 - xlnx,iic-freq = <0x186a0>; 265 - xlnx,scl-inertial-delay = <0x5>; 266 - xlnx,sda-inertial-delay = <0x5>; 267 - xlnx,ten-bit-adr = <0x0>; 268 - } ; 269 - LCD_OPTIONAL: gpio@81420000 { 270 - compatible = "xlnx,xps-gpio-1.00.a"; 271 - reg = < 0x81420000 0x10000 >; 272 - xlnx,all-inputs = <0x0>; 273 - xlnx,all-inputs-2 = <0x0>; 274 - xlnx,dout-default = <0x0>; 275 - xlnx,dout-default-2 = <0x0>; 276 - xlnx,family = "virtex5"; 277 - xlnx,gpio-width = <0xb>; 278 - xlnx,interrupt-present = <0x0>; 279 - xlnx,is-bidir = <0x1>; 280 - xlnx,is-bidir-2 = <0x1>; 281 - xlnx,is-dual = <0x0>; 282 - xlnx,tri-default = <0xffffffff>; 283 - xlnx,tri-default-2 = <0xffffffff>; 284 - } ; 285 - LEDs_4Bit: gpio@81400000 { 286 - compatible = "xlnx,xps-gpio-1.00.a"; 287 - reg = < 0x81400000 0x10000 >; 288 - xlnx,all-inputs = <0x0>; 289 - xlnx,all-inputs-2 = <0x0>; 290 - xlnx,dout-default = <0x0>; 291 - xlnx,dout-default-2 = <0x0>; 292 - xlnx,family = "virtex5"; 293 - xlnx,gpio-width = <0x4>; 294 - xlnx,interrupt-present = <0x0>; 295 - xlnx,is-bidir = <0x1>; 296 - xlnx,is-bidir-2 = <0x1>; 297 - xlnx,is-dual = <0x0>; 298 - xlnx,tri-default = <0xffffffff>; 299 - xlnx,tri-default-2 = <0xffffffff>; 300 - } ; 301 - RS232_Uart_1: serial@83e00000 { 302 - clock-frequency = <100000000>; 303 - compatible = "xlnx,xps-uart16550-2.00.b", "ns16550"; 304 - current-speed = <9600>; 305 - device_type = "serial"; 306 - interrupt-parent = <&xps_intc_0>; 307 - interrupts = < 11 2 >; 308 - reg = < 0x83e00000 0x10000 >; 309 - reg-offset = <0x1003>; 310 - reg-shift = <2>; 311 - xlnx,family = "virtex5"; 312 - xlnx,has-external-rclk = <0x0>; 313 - xlnx,has-external-xin = <0x0>; 314 - xlnx,is-a-16550 = <0x1>; 315 - } ; 316 - SPI_EEPROM: xps-spi@feff8000 { 317 - compatible = "xlnx,xps-spi-2.00.b"; 318 - interrupt-parent = <&xps_intc_0>; 319 - interrupts = < 10 2 >; 320 - reg = < 0xfeff8000 0x80 >; 321 - xlnx,family = "virtex5"; 322 - xlnx,fifo-exist = <0x1>; 323 - xlnx,num-ss-bits = <0x1>; 324 - xlnx,num-transfer-bits = <0x8>; 325 - xlnx,sck-ratio = <0x80>; 326 - } ; 327 - SysACE_CompactFlash: sysace@83600000 { 328 - compatible = "xlnx,xps-sysace-1.00.a"; 329 - interrupt-parent = <&xps_intc_0>; 330 - interrupts = < 7 2 >; 331 - reg = < 0x83600000 0x10000 >; 332 - xlnx,family = "virtex5"; 333 - xlnx,mem-width = <0x10>; 334 - } ; 335 - plbv46_pci_0: plbv46-pci@85e00000 { 336 - #size-cells = <2>; 337 - #address-cells = <3>; 338 - compatible = "xlnx,plbv46-pci-1.03.a"; 339 - device_type = "pci"; 340 - reg = < 0x85e00000 0x10000 >; 341 - 342 - /* 343 - * The default ML510 BSB has C_IPIFBAR2PCIBAR_0 set to 344 - * 0 which means that a read/write to the memory mapped 345 - * i/o region (which starts at 0xa0000000) for pci 346 - * bar 0 on the plb side translates to 0. 347 - * It is important to set this value to 0xa0000000, so 348 - * that inbound and outbound pci transactions work 349 - * properly including DMA. 350 - */ 351 - ranges = <0x02000000 0 0xa0000000 0xa0000000 0 0x20000000 352 - 0x01000000 0 0x00000000 0xf0000000 0 0x00010000>; 353 - 354 - #interrupt-cells = <1>; 355 - interrupt-parent = <&xps_intc_0>; 356 - interrupt-map-mask = <0xff00 0x0 0x0 0x7>; 357 - interrupt-map = < 358 - /* IRQ mapping for pci slots and ALI M1533 359 - * periperhals. In total there are 5 interrupt 360 - * lines connected to a xps_intc controller. 361 - * Four of them are PCI IRQ A, B, C, D and 362 - * which correspond to respectively xpx_intc 363 - * 5, 4, 3 and 2. The fifth interrupt line is 364 - * connected to the south bridge and this one 365 - * uses irq 1 and is active high instead of 366 - * active low. 367 - * 368 - * The M1533 contains various peripherals 369 - * including AC97 audio, a modem, USB, IDE and 370 - * some power management stuff. The modem 371 - * isn't connected on the ML510 and the power 372 - * management core also isn't used. 373 - */ 374 - 375 - /* IDSEL 0x16 / dev=6, bus=0 / PCI slot 3 */ 376 - 0x3000 0 0 1 &xps_intc_0 3 2 377 - 0x3000 0 0 2 &xps_intc_0 2 2 378 - 0x3000 0 0 3 &xps_intc_0 5 2 379 - 0x3000 0 0 4 &xps_intc_0 4 2 380 - 381 - /* IDSEL 0x13 / dev=3, bus=1 / PCI slot 4 */ 382 - /* 383 - 0x11800 0 0 1 &xps_intc_0 5 0 2 384 - 0x11800 0 0 2 &xps_intc_0 4 0 2 385 - 0x11800 0 0 3 &xps_intc_0 3 0 2 386 - 0x11800 0 0 4 &xps_intc_0 2 0 2 387 - */ 388 - 389 - /* According to the datasheet + schematic 390 - * ABCD [FPGA] of slot 5 is mapped to DABC. 391 - * Testing showed that at least A maps to B, 392 - * the mapping of the other pins is a guess 393 - * and for that reason the lines have been 394 - * commented out. 395 - */ 396 - /* IDSEL 0x15 / dev=5, bus=0 / PCI slot 5 */ 397 - 0x2800 0 0 1 &xps_intc_0 4 2 398 - /* 399 - 0x2800 0 0 2 &xps_intc_0 3 2 400 - 0x2800 0 0 3 &xps_intc_0 2 2 401 - 0x2800 0 0 4 &xps_intc_0 5 2 402 - */ 403 - 404 - /* IDSEL 0x12 / dev=2, bus=1 / PCI slot 6 */ 405 - /* 406 - 0x11000 0 0 1 &xps_intc_0 4 0 2 407 - 0x11000 0 0 2 &xps_intc_0 3 0 2 408 - 0x11000 0 0 3 &xps_intc_0 2 0 2 409 - 0x11000 0 0 4 &xps_intc_0 5 0 2 410 - */ 411 - 412 - /* IDSEL 0x11 / dev=1, bus=0 / AC97 audio */ 413 - 0x0800 0 0 1 &i8259 7 2 414 - 415 - /* IDSEL 0x1b / dev=11, bus=0 / IDE */ 416 - 0x5800 0 0 1 &i8259 14 2 417 - 418 - /* IDSEL 0x1f / dev 15, bus=0 / 2x USB 1.1 */ 419 - 0x7800 0 0 1 &i8259 7 2 420 - >; 421 - ali_m1533 { 422 - #size-cells = <1>; 423 - #address-cells = <2>; 424 - i8259: interrupt-controller@20 { 425 - reg = <1 0x20 2 426 - 1 0xa0 2 427 - 1 0x4d0 2>; 428 - interrupt-controller; 429 - device_type = "interrupt-controller"; 430 - #address-cells = <0>; 431 - #interrupt-cells = <2>; 432 - compatible = "chrp,iic"; 433 - 434 - /* south bridge irq is active high */ 435 - interrupts = <1 3>; 436 - interrupt-parent = <&xps_intc_0>; 437 - }; 438 - }; 439 - } ; 440 - xps_bram_if_cntlr_1: xps-bram-if-cntlr@ffff0000 { 441 - compatible = "xlnx,xps-bram-if-cntlr-1.00.a"; 442 - reg = < 0xffff0000 0x10000 >; 443 - xlnx,family = "virtex5"; 444 - } ; 445 - xps_intc_0: interrupt-controller@81800000 { 446 - #interrupt-cells = <0x2>; 447 - compatible = "xlnx,xps-intc-1.00.a"; 448 - interrupt-controller ; 449 - reg = < 0x81800000 0x10000 >; 450 - xlnx,num-intr-inputs = <0xc>; 451 - } ; 452 - xps_tft_0: tft@86e00000 { 453 - compatible = "xlnx,xps-tft-1.00.a"; 454 - reg = < 0x86e00000 0x10000 >; 455 - xlnx,dcr-splb-slave-if = <0x1>; 456 - xlnx,default-tft-base-addr = <0x0>; 457 - xlnx,family = "virtex5"; 458 - xlnx,i2c-slave-addr = <0x76>; 459 - xlnx,mplb-awidth = <0x20>; 460 - xlnx,mplb-dwidth = <0x80>; 461 - xlnx,mplb-native-dwidth = <0x40>; 462 - xlnx,mplb-smallest-slave = <0x20>; 463 - xlnx,tft-interface = <0x1>; 464 - } ; 465 - } ; 466 - } ;
-1
arch/powerpc/boot/ops.h
··· 88 88 int ns16550_console_init(void *devp, struct serial_console_data *scdp); 89 89 int cpm_console_init(void *devp, struct serial_console_data *scdp); 90 90 int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp); 91 - int uartlite_console_init(void *devp, struct serial_console_data *scdp); 92 91 int opal_console_init(void *devp, struct serial_console_data *scdp); 93 92 void *simple_alloc_init(char *base, unsigned long heap_size, 94 93 unsigned long granularity, unsigned long max_allocs);
-5
arch/powerpc/boot/serial.c
··· 132 132 else if (dt_is_compatible(devp, "fsl,mpc5200-psc-uart")) 133 133 rc = mpc5200_psc_console_init(devp, &serial_cd); 134 134 #endif 135 - #ifdef CONFIG_XILINX_VIRTEX 136 - else if (dt_is_compatible(devp, "xlnx,opb-uartlite-1.00.b") || 137 - dt_is_compatible(devp, "xlnx,xps-uartlite-1.00.a")) 138 - rc = uartlite_console_init(devp, &serial_cd); 139 - #endif 140 135 #ifdef CONFIG_PPC64_BOOT_WRAPPER 141 136 else if (dt_is_compatible(devp, "ibm,opal-console-raw")) 142 137 rc = opal_console_init(devp, &serial_cd);
-79
arch/powerpc/boot/uartlite.c
··· 1 - /* 2 - * Xilinx UARTLITE bootloader driver 3 - * 4 - * Copyright (C) 2007 Secret Lab Technologies Ltd. 5 - * 6 - * This file is licensed under the terms of the GNU General Public License 7 - * version 2. This program is licensed "as is" without any warranty of any 8 - * kind, whether express or implied. 9 - */ 10 - 11 - #include <stdarg.h> 12 - #include <stddef.h> 13 - #include "types.h" 14 - #include "string.h" 15 - #include "stdio.h" 16 - #include "io.h" 17 - #include "ops.h" 18 - 19 - #define ULITE_RX 0x00 20 - #define ULITE_TX 0x04 21 - #define ULITE_STATUS 0x08 22 - #define ULITE_CONTROL 0x0c 23 - 24 - #define ULITE_STATUS_RXVALID 0x01 25 - #define ULITE_STATUS_TXFULL 0x08 26 - 27 - #define ULITE_CONTROL_RST_RX 0x02 28 - 29 - static void * reg_base; 30 - 31 - static int uartlite_open(void) 32 - { 33 - /* Clear the RX FIFO */ 34 - out_be32(reg_base + ULITE_CONTROL, ULITE_CONTROL_RST_RX); 35 - return 0; 36 - } 37 - 38 - static void uartlite_putc(unsigned char c) 39 - { 40 - u32 reg = ULITE_STATUS_TXFULL; 41 - while (reg & ULITE_STATUS_TXFULL) /* spin on TXFULL bit */ 42 - reg = in_be32(reg_base + ULITE_STATUS); 43 - out_be32(reg_base + ULITE_TX, c); 44 - } 45 - 46 - static unsigned char uartlite_getc(void) 47 - { 48 - u32 reg = 0; 49 - while (!(reg & ULITE_STATUS_RXVALID)) /* spin waiting for RXVALID bit */ 50 - reg = in_be32(reg_base + ULITE_STATUS); 51 - return in_be32(reg_base + ULITE_RX); 52 - } 53 - 54 - static u8 uartlite_tstc(void) 55 - { 56 - u32 reg = in_be32(reg_base + ULITE_STATUS); 57 - return reg & ULITE_STATUS_RXVALID; 58 - } 59 - 60 - int uartlite_console_init(void *devp, struct serial_console_data *scdp) 61 - { 62 - int n; 63 - unsigned long reg_phys; 64 - 65 - n = getprop(devp, "virtual-reg", &reg_base, sizeof(reg_base)); 66 - if (n != sizeof(reg_base)) { 67 - if (!dt_xlate_reg(devp, 0, &reg_phys, NULL)) 68 - return -1; 69 - 70 - reg_base = (void *)reg_phys; 71 - } 72 - 73 - scdp->open = uartlite_open; 74 - scdp->putc = uartlite_putc; 75 - scdp->getc = uartlite_getc; 76 - scdp->tstc = uartlite_tstc; 77 - scdp->close = NULL; 78 - return 0; 79 - }
-97
arch/powerpc/boot/virtex.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * The platform specific code for virtex devices since a boot loader is not 4 - * always used. 5 - * 6 - * (C) Copyright 2008 Xilinx, Inc. 7 - */ 8 - 9 - #include "ops.h" 10 - #include "io.h" 11 - #include "stdio.h" 12 - 13 - #define UART_DLL 0 /* Out: Divisor Latch Low */ 14 - #define UART_DLM 1 /* Out: Divisor Latch High */ 15 - #define UART_FCR 2 /* Out: FIFO Control Register */ 16 - #define UART_FCR_CLEAR_RCVR 0x02 /* Clear the RCVR FIFO */ 17 - #define UART_FCR_CLEAR_XMIT 0x04 /* Clear the XMIT FIFO */ 18 - #define UART_LCR 3 /* Out: Line Control Register */ 19 - #define UART_MCR 4 /* Out: Modem Control Register */ 20 - #define UART_MCR_RTS 0x02 /* RTS complement */ 21 - #define UART_MCR_DTR 0x01 /* DTR complement */ 22 - #define UART_LCR_DLAB 0x80 /* Divisor latch access bit */ 23 - #define UART_LCR_WLEN8 0x03 /* Wordlength: 8 bits */ 24 - 25 - static int virtex_ns16550_console_init(void *devp) 26 - { 27 - unsigned char *reg_base; 28 - u32 reg_shift, reg_offset, clk, spd; 29 - u16 divisor; 30 - int n; 31 - 32 - if (dt_get_virtual_reg(devp, (void **)&reg_base, 1) < 1) 33 - return -1; 34 - 35 - n = getprop(devp, "reg-offset", &reg_offset, sizeof(reg_offset)); 36 - if (n == sizeof(reg_offset)) 37 - reg_base += reg_offset; 38 - 39 - n = getprop(devp, "reg-shift", &reg_shift, sizeof(reg_shift)); 40 - if (n != sizeof(reg_shift)) 41 - reg_shift = 0; 42 - 43 - n = getprop(devp, "current-speed", (void *)&spd, sizeof(spd)); 44 - if (n != sizeof(spd)) 45 - spd = 9600; 46 - 47 - /* should there be a default clock rate?*/ 48 - n = getprop(devp, "clock-frequency", (void *)&clk, sizeof(clk)); 49 - if (n != sizeof(clk)) 50 - return -1; 51 - 52 - divisor = clk / (16 * spd); 53 - 54 - /* Access baud rate */ 55 - out_8(reg_base + (UART_LCR << reg_shift), UART_LCR_DLAB); 56 - 57 - /* Baud rate based on input clock */ 58 - out_8(reg_base + (UART_DLL << reg_shift), divisor & 0xFF); 59 - out_8(reg_base + (UART_DLM << reg_shift), divisor >> 8); 60 - 61 - /* 8 data, 1 stop, no parity */ 62 - out_8(reg_base + (UART_LCR << reg_shift), UART_LCR_WLEN8); 63 - 64 - /* RTS/DTR */ 65 - out_8(reg_base + (UART_MCR << reg_shift), UART_MCR_RTS | UART_MCR_DTR); 66 - 67 - /* Clear transmitter and receiver */ 68 - out_8(reg_base + (UART_FCR << reg_shift), 69 - UART_FCR_CLEAR_XMIT | UART_FCR_CLEAR_RCVR); 70 - return 0; 71 - } 72 - 73 - /* For virtex, the kernel may be loaded without using a bootloader and if so 74 - some UARTs need more setup than is provided in the normal console init 75 - */ 76 - int platform_specific_init(void) 77 - { 78 - void *devp; 79 - char devtype[MAX_PROP_LEN]; 80 - char path[MAX_PATH_LEN]; 81 - 82 - devp = finddevice("/chosen"); 83 - if (devp == NULL) 84 - return -1; 85 - 86 - if (getprop(devp, "linux,stdout-path", path, MAX_PATH_LEN) > 0) { 87 - devp = finddevice(path); 88 - if (devp == NULL) 89 - return -1; 90 - 91 - if ((getprop(devp, "device_type", devtype, sizeof(devtype)) > 0) 92 - && !strcmp(devtype, "serial") 93 - && (dt_is_compatible(devp, "ns16550"))) 94 - virtex_ns16550_console_init(devp); 95 - } 96 - return 0; 97 - }
-31
arch/powerpc/boot/virtex405-head.S
··· 1 - /* SPDX-License-Identifier: GPL-2.0 */ 2 - #include "ppc_asm.h" 3 - 4 - .text 5 - .global _zimage_start 6 - _zimage_start: 7 - 8 - /* PPC errata 213: needed by Virtex-4 FX */ 9 - mfccr0 0 10 - oris 0,0,0x50000000@h 11 - mtccr0 0 12 - 13 - /* 14 - * Invalidate the data cache if the data cache is turned off. 15 - * - The 405 core does not invalidate the data cache on power-up 16 - * or reset but does turn off the data cache. We cannot assume 17 - * that the cache contents are valid. 18 - * - If the data cache is turned on this must have been done by 19 - * a bootloader and we assume that the cache contents are 20 - * valid. 21 - */ 22 - mfdccr r9 23 - cmplwi r9,0 24 - bne 2f 25 - lis r9,0 26 - li r8,256 27 - mtctr r8 28 - 1: dccci r0,r9 29 - addi r9,r9,0x20 30 - bdnz 1b 31 - 2: b _zimage_start_lib
-8
arch/powerpc/boot/wrapper
··· 324 324 platformo="$object/fixed-head.o $object/redboot-8xx.o" 325 325 binary=y 326 326 ;; 327 - simpleboot-virtex405-*) 328 - platformo="$object/virtex405-head.o $object/simpleboot.o $object/virtex.o" 329 - binary=y 330 - ;; 331 - simpleboot-virtex440-*) 332 - platformo="$object/fixed-head.o $object/simpleboot.o $object/virtex.o" 333 - binary=y 334 - ;; 335 327 simpleboot-*) 336 328 platformo="$object/fixed-head.o $object/simpleboot.o" 337 329 binary=y
-75
arch/powerpc/configs/40x/virtex_defconfig
··· 1 - CONFIG_40x=y 2 - # CONFIG_LOCALVERSION_AUTO is not set 3 - CONFIG_SYSVIPC=y 4 - CONFIG_POSIX_MQUEUE=y 5 - CONFIG_IKCONFIG=y 6 - CONFIG_IKCONFIG_PROC=y 7 - CONFIG_LOG_BUF_SHIFT=14 8 - CONFIG_BLK_DEV_INITRD=y 9 - CONFIG_SLAB=y 10 - CONFIG_MODULES=y 11 - CONFIG_MODULE_UNLOAD=y 12 - CONFIG_MODULE_FORCE_UNLOAD=y 13 - CONFIG_MODVERSIONS=y 14 - # CONFIG_BLK_DEV_BSG is not set 15 - # CONFIG_WALNUT is not set 16 - CONFIG_XILINX_VIRTEX_GENERIC_BOARD=y 17 - CONFIG_PREEMPT=y 18 - CONFIG_MATH_EMULATION=y 19 - CONFIG_CMDLINE_BOOL=y 20 - CONFIG_CMDLINE="" 21 - CONFIG_PCI=y 22 - CONFIG_NET=y 23 - CONFIG_PACKET=y 24 - CONFIG_UNIX=y 25 - CONFIG_INET=y 26 - CONFIG_IP_MULTICAST=y 27 - CONFIG_IP_PNP=y 28 - CONFIG_IP_PNP_DHCP=y 29 - CONFIG_IP_PNP_BOOTP=y 30 - CONFIG_NETFILTER=y 31 - CONFIG_IP_NF_IPTABLES=m 32 - CONFIG_IP_NF_FILTER=m 33 - CONFIG_IP_NF_MANGLE=m 34 - CONFIG_BLK_DEV_LOOP=y 35 - CONFIG_BLK_DEV_RAM=y 36 - CONFIG_BLK_DEV_RAM_SIZE=8192 37 - CONFIG_XILINX_SYSACE=y 38 - CONFIG_NETDEVICES=y 39 - # CONFIG_SERIO_SERPORT is not set 40 - CONFIG_SERIO_XILINX_XPS_PS2=y 41 - CONFIG_SERIAL_8250=y 42 - CONFIG_SERIAL_8250_CONSOLE=y 43 - CONFIG_SERIAL_OF_PLATFORM=y 44 - CONFIG_SERIAL_UARTLITE=y 45 - CONFIG_SERIAL_UARTLITE_CONSOLE=y 46 - CONFIG_XILINX_HWICAP=y 47 - CONFIG_GPIOLIB=y 48 - CONFIG_GPIO_SYSFS=y 49 - CONFIG_GPIO_XILINX=y 50 - # CONFIG_HWMON is not set 51 - CONFIG_FB=y 52 - CONFIG_FB_XILINX=y 53 - CONFIG_FRAMEBUFFER_CONSOLE=y 54 - CONFIG_LOGO=y 55 - # CONFIG_USB_SUPPORT is not set 56 - CONFIG_EXT2_FS=y 57 - CONFIG_AUTOFS4_FS=y 58 - CONFIG_MSDOS_FS=y 59 - CONFIG_VFAT_FS=y 60 - CONFIG_TMPFS=y 61 - CONFIG_CRAMFS=y 62 - CONFIG_ROMFS_FS=y 63 - CONFIG_NFS_FS=y 64 - CONFIG_ROOT_NFS=y 65 - CONFIG_NLS_CODEPAGE_437=y 66 - CONFIG_NLS_ASCII=m 67 - CONFIG_NLS_ISO8859_1=m 68 - CONFIG_NLS_UTF8=m 69 - CONFIG_CRC_CCITT=y 70 - CONFIG_FONTS=y 71 - CONFIG_FONT_8x8=y 72 - CONFIG_FONT_8x16=y 73 - CONFIG_PRINTK_TIME=y 74 - CONFIG_DEBUG_INFO=y 75 - CONFIG_DEBUG_KERNEL=y
-74
arch/powerpc/configs/44x/virtex5_defconfig
··· 1 - CONFIG_44x=y 2 - # CONFIG_LOCALVERSION_AUTO is not set 3 - CONFIG_SYSVIPC=y 4 - CONFIG_POSIX_MQUEUE=y 5 - CONFIG_IKCONFIG=y 6 - CONFIG_IKCONFIG_PROC=y 7 - CONFIG_LOG_BUF_SHIFT=14 8 - CONFIG_BLK_DEV_INITRD=y 9 - CONFIG_SLAB=y 10 - CONFIG_MODULES=y 11 - CONFIG_MODULE_UNLOAD=y 12 - CONFIG_MODULE_FORCE_UNLOAD=y 13 - CONFIG_MODVERSIONS=y 14 - # CONFIG_BLK_DEV_BSG is not set 15 - # CONFIG_EBONY is not set 16 - CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y 17 - CONFIG_PREEMPT=y 18 - CONFIG_MATH_EMULATION=y 19 - CONFIG_CMDLINE_BOOL=y 20 - CONFIG_CMDLINE="" 21 - CONFIG_NET=y 22 - CONFIG_PACKET=y 23 - CONFIG_UNIX=y 24 - CONFIG_INET=y 25 - CONFIG_IP_MULTICAST=y 26 - CONFIG_IP_PNP=y 27 - CONFIG_IP_PNP_DHCP=y 28 - CONFIG_IP_PNP_BOOTP=y 29 - CONFIG_NETFILTER=y 30 - CONFIG_IP_NF_IPTABLES=m 31 - CONFIG_IP_NF_FILTER=m 32 - CONFIG_IP_NF_MANGLE=m 33 - CONFIG_BLK_DEV_LOOP=y 34 - CONFIG_BLK_DEV_RAM=y 35 - CONFIG_BLK_DEV_RAM_SIZE=8192 36 - CONFIG_XILINX_SYSACE=y 37 - CONFIG_NETDEVICES=y 38 - # CONFIG_SERIO_SERPORT is not set 39 - CONFIG_SERIO_XILINX_XPS_PS2=y 40 - CONFIG_SERIAL_8250=y 41 - CONFIG_SERIAL_8250_CONSOLE=y 42 - CONFIG_SERIAL_OF_PLATFORM=y 43 - CONFIG_SERIAL_UARTLITE=y 44 - CONFIG_SERIAL_UARTLITE_CONSOLE=y 45 - CONFIG_XILINX_HWICAP=y 46 - CONFIG_GPIOLIB=y 47 - CONFIG_GPIO_SYSFS=y 48 - CONFIG_GPIO_XILINX=y 49 - # CONFIG_HWMON is not set 50 - CONFIG_FB=y 51 - CONFIG_FB_XILINX=y 52 - CONFIG_FRAMEBUFFER_CONSOLE=y 53 - CONFIG_LOGO=y 54 - # CONFIG_USB_SUPPORT is not set 55 - CONFIG_EXT2_FS=y 56 - CONFIG_AUTOFS4_FS=y 57 - CONFIG_MSDOS_FS=y 58 - CONFIG_VFAT_FS=y 59 - CONFIG_TMPFS=y 60 - CONFIG_CRAMFS=y 61 - CONFIG_ROMFS_FS=y 62 - CONFIG_NFS_FS=y 63 - CONFIG_ROOT_NFS=y 64 - CONFIG_NLS_CODEPAGE_437=y 65 - CONFIG_NLS_ASCII=m 66 - CONFIG_NLS_ISO8859_1=m 67 - CONFIG_NLS_UTF8=m 68 - CONFIG_CRC_CCITT=y 69 - CONFIG_FONTS=y 70 - CONFIG_FONT_8x8=y 71 - CONFIG_FONT_8x16=y 72 - CONFIG_PRINTK_TIME=y 73 - CONFIG_DEBUG_INFO=y 74 - CONFIG_DEBUG_KERNEL=y
-8
arch/powerpc/configs/ppc40x_defconfig
··· 14 14 CONFIG_HOTFOOT=y 15 15 CONFIG_KILAUEA=y 16 16 CONFIG_MAKALU=y 17 - CONFIG_XILINX_VIRTEX_GENERIC_BOARD=y 18 17 CONFIG_NET=y 19 18 CONFIG_PACKET=y 20 19 CONFIG_UNIX=y ··· 36 37 CONFIG_MTD_UBI_GLUEBI=m 37 38 CONFIG_BLK_DEV_RAM=y 38 39 CONFIG_BLK_DEV_RAM_SIZE=35000 39 - CONFIG_XILINX_SYSACE=m 40 40 CONFIG_NETDEVICES=y 41 41 CONFIG_IBM_EMAC=y 42 42 # CONFIG_INPUT is not set 43 43 CONFIG_SERIO=m 44 44 # CONFIG_SERIO_I8042 is not set 45 45 # CONFIG_SERIO_SERPORT is not set 46 - CONFIG_SERIO_XILINX_XPS_PS2=m 47 46 # CONFIG_VT is not set 48 47 CONFIG_SERIAL_8250=y 49 48 CONFIG_SERIAL_8250_CONSOLE=y 50 49 CONFIG_SERIAL_8250_EXTENDED=y 51 50 CONFIG_SERIAL_8250_SHARE_IRQ=y 52 51 CONFIG_SERIAL_OF_PLATFORM=y 53 - CONFIG_SERIAL_UARTLITE=y 54 - CONFIG_SERIAL_UARTLITE_CONSOLE=y 55 52 # CONFIG_HW_RANDOM is not set 56 - CONFIG_XILINX_HWICAP=m 57 53 CONFIG_I2C=m 58 54 CONFIG_I2C_CHARDEV=m 59 55 CONFIG_I2C_GPIO=m 60 56 CONFIG_I2C_IBM_IIC=m 61 - CONFIG_GPIO_XILINX=y 62 57 # CONFIG_HWMON is not set 63 58 CONFIG_THERMAL=y 64 59 CONFIG_FB=m 65 - CONFIG_FB_XILINX=m 66 60 CONFIG_EXT2_FS=y 67 61 CONFIG_EXT4_FS=m 68 62 CONFIG_VFAT_FS=m
-8
arch/powerpc/configs/ppc44x_defconfig
··· 22 22 CONFIG_REDWOOD=y 23 23 CONFIG_EIGER=y 24 24 CONFIG_YOSEMITE=y 25 - CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y 26 25 CONFIG_PPC4xx_GPIO=y 27 26 CONFIG_MATH_EMULATION=y 28 27 CONFIG_NET=y ··· 45 46 CONFIG_MTD_UBI_GLUEBI=m 46 47 CONFIG_BLK_DEV_RAM=y 47 48 CONFIG_BLK_DEV_RAM_SIZE=35000 48 - CONFIG_XILINX_SYSACE=m 49 49 CONFIG_SCSI=m 50 50 CONFIG_BLK_DEV_SD=m 51 51 # CONFIG_SCSI_LOWLEVEL is not set ··· 55 57 CONFIG_SERIO=m 56 58 # CONFIG_SERIO_I8042 is not set 57 59 # CONFIG_SERIO_SERPORT is not set 58 - CONFIG_SERIO_XILINX_XPS_PS2=m 59 60 # CONFIG_VT is not set 60 61 CONFIG_SERIAL_8250=y 61 62 CONFIG_SERIAL_8250_CONSOLE=y ··· 62 65 CONFIG_SERIAL_8250_EXTENDED=y 63 66 CONFIG_SERIAL_8250_SHARE_IRQ=y 64 67 CONFIG_SERIAL_OF_PLATFORM=y 65 - CONFIG_SERIAL_UARTLITE=y 66 - CONFIG_SERIAL_UARTLITE_CONSOLE=y 67 68 # CONFIG_HW_RANDOM is not set 68 - CONFIG_XILINX_HWICAP=m 69 69 CONFIG_I2C=m 70 70 CONFIG_I2C_CHARDEV=m 71 71 CONFIG_I2C_GPIO=m 72 72 CONFIG_I2C_IBM_IIC=m 73 - CONFIG_GPIO_XILINX=y 74 73 # CONFIG_HWMON is not set 75 74 CONFIG_FB=m 76 - CONFIG_FB_XILINX=m 77 75 CONFIG_USB=m 78 76 CONFIG_USB_EHCI_HCD=m 79 77 CONFIG_USB_OHCI_HCD=m
-16
arch/powerpc/include/asm/xilinx_intc.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 - /* 3 - * Xilinx intc external definitions 4 - * 5 - * Copyright 2007 Secret Lab Technologies Ltd. 6 - */ 7 - #ifndef _ASM_POWERPC_XILINX_INTC_H 8 - #define _ASM_POWERPC_XILINX_INTC_H 9 - 10 - #ifdef __KERNEL__ 11 - 12 - extern void __init xilinx_intc_init_tree(void); 13 - extern unsigned int xintc_get_irq(void); 14 - 15 - #endif /* __KERNEL__ */ 16 - #endif /* _ASM_POWERPC_XILINX_INTC_H */
-21
arch/powerpc/include/asm/xilinx_pci.h
··· 1 - /* 2 - * Xilinx pci external definitions 3 - * 4 - * Copyright 2009 Roderick Colenbrander 5 - * Copyright 2009 Secret Lab Technologies Ltd. 6 - * 7 - * This file is licensed under the terms of the GNU General Public License 8 - * version 2. This program is licensed "as is" without any warranty of any 9 - * kind, whether express or implied. 10 - */ 11 - 12 - #ifndef INCLUDE_XILINX_PCI 13 - #define INCLUDE_XILINX_PCI 14 - 15 - #ifdef CONFIG_XILINX_PCI 16 - extern void __init xilinx_pci_init(void); 17 - #else 18 - static inline void __init xilinx_pci_init(void) { return; } 19 - #endif 20 - 21 - #endif /* INCLUDE_XILINX_PCI */
-39
arch/powerpc/kernel/cputable.c
··· 1385 1385 .machine_check = machine_check_4xx, 1386 1386 .platform = "ppc405", 1387 1387 }, 1388 - { /* Xilinx Virtex-II Pro */ 1389 - .pvr_mask = 0xfffff000, 1390 - .pvr_value = 0x20010000, 1391 - .cpu_name = "Virtex-II Pro", 1392 - .cpu_features = CPU_FTRS_40X, 1393 - .cpu_user_features = PPC_FEATURE_32 | 1394 - PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1395 - .mmu_features = MMU_FTR_TYPE_40x, 1396 - .icache_bsize = 32, 1397 - .dcache_bsize = 32, 1398 - .machine_check = machine_check_4xx, 1399 - .platform = "ppc405", 1400 - }, 1401 - { /* Xilinx Virtex-4 FX */ 1402 - .pvr_mask = 0xfffff000, 1403 - .pvr_value = 0x20011000, 1404 - .cpu_name = "Virtex-4 FX", 1405 - .cpu_features = CPU_FTRS_40X, 1406 - .cpu_user_features = PPC_FEATURE_32 | 1407 - PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC, 1408 - .mmu_features = MMU_FTR_TYPE_40x, 1409 - .icache_bsize = 32, 1410 - .dcache_bsize = 32, 1411 - .machine_check = machine_check_4xx, 1412 - .platform = "ppc405", 1413 - }, 1414 1388 { /* 405EP */ 1415 1389 .pvr_mask = 0xffff0000, 1416 1390 .pvr_value = 0x51210000, ··· 1771 1797 .icache_bsize = 32, 1772 1798 .dcache_bsize = 32, 1773 1799 .cpu_setup = __setup_cpu_440spe, 1774 - .machine_check = machine_check_440A, 1775 - .platform = "ppc440", 1776 - }, 1777 - { /* 440 in Xilinx Virtex-5 FXT */ 1778 - .pvr_mask = 0xfffffff0, 1779 - .pvr_value = 0x7ff21910, 1780 - .cpu_name = "440 in Virtex-5 FXT", 1781 - .cpu_features = CPU_FTRS_44X, 1782 - .cpu_user_features = COMMON_USER_BOOKE, 1783 - .mmu_features = MMU_FTR_TYPE_44x, 1784 - .icache_bsize = 32, 1785 - .dcache_bsize = 32, 1786 - .cpu_setup = __setup_cpu_440x5, 1787 1800 .machine_check = machine_check_440A, 1788 1801 .platform = "ppc440", 1789 1802 },
-31
arch/powerpc/platforms/40x/Kconfig
··· 55 55 help 56 56 This option enables support for the IBM PPC405GP evaluation board. 57 57 58 - config XILINX_VIRTEX_GENERIC_BOARD 59 - bool "Generic Xilinx Virtex board" 60 - depends on 40x 61 - select XILINX_VIRTEX_II_PRO 62 - select XILINX_VIRTEX_4_FX 63 - select XILINX_INTC 64 - help 65 - This option enables generic support for Xilinx Virtex based boards. 66 - 67 - The generic virtex board support matches any device tree which 68 - specifies 'xilinx,virtex' in its compatible field. This includes 69 - the Xilinx ML3xx and ML4xx reference designs using the powerpc 70 - core. 71 - 72 - Most Virtex designs should use this unless it needs to do some 73 - special configuration at board probe time. 74 - 75 58 config OBS600 76 59 bool "OpenBlockS 600" 77 60 depends on 40x ··· 91 108 select IBM_EMAC_NO_FLOW_CTRL if IBM_EMAC 92 109 select IBM_EMAC_MAL_CLR_ICINTSTAT if IBM_EMAC 93 110 select IBM_EMAC_MAL_COMMON_ERR if IBM_EMAC 94 - 95 - config XILINX_VIRTEX 96 - bool 97 - select DEFAULT_UIMAGE 98 - 99 - config XILINX_VIRTEX_II_PRO 100 - bool 101 - select XILINX_VIRTEX 102 - select IBM405_ERR77 103 - select IBM405_ERR51 104 - 105 - config XILINX_VIRTEX_4_FX 106 - bool 107 - select XILINX_VIRTEX 108 111 109 112 config STB03xxx 110 113 bool
-1
arch/powerpc/platforms/40x/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 2 obj-$(CONFIG_WALNUT) += walnut.o 3 - obj-$(CONFIG_XILINX_VIRTEX_GENERIC_BOARD) += virtex.o 4 3 obj-$(CONFIG_EP405) += ep405.o 5 4 obj-$(CONFIG_PPC40x_SIMPLE) += ppc40x_simple.o
-54
arch/powerpc/platforms/40x/virtex.c
··· 1 - /* 2 - * Xilinx Virtex (IIpro & 4FX) based board support 3 - * 4 - * Copyright 2007 Secret Lab Technologies Ltd. 5 - * 6 - * This file is licensed under the terms of the GNU General Public License 7 - * version 2. This program is licensed "as is" without any warranty of any 8 - * kind, whether express or implied. 9 - */ 10 - 11 - #include <linux/init.h> 12 - #include <linux/of_platform.h> 13 - #include <asm/machdep.h> 14 - #include <asm/prom.h> 15 - #include <asm/time.h> 16 - #include <asm/xilinx_intc.h> 17 - #include <asm/xilinx_pci.h> 18 - #include <asm/ppc4xx.h> 19 - 20 - static const struct of_device_id xilinx_of_bus_ids[] __initconst = { 21 - { .compatible = "xlnx,plb-v46-1.00.a", }, 22 - { .compatible = "xlnx,plb-v34-1.01.a", }, 23 - { .compatible = "xlnx,plb-v34-1.02.a", }, 24 - { .compatible = "xlnx,opb-v20-1.10.c", }, 25 - { .compatible = "xlnx,dcr-v29-1.00.a", }, 26 - { .compatible = "xlnx,compound", }, 27 - {} 28 - }; 29 - 30 - static int __init virtex_device_probe(void) 31 - { 32 - of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL); 33 - 34 - return 0; 35 - } 36 - machine_device_initcall(virtex, virtex_device_probe); 37 - 38 - static int __init virtex_probe(void) 39 - { 40 - if (!of_machine_is_compatible("xlnx,virtex")) 41 - return 0; 42 - 43 - return 1; 44 - } 45 - 46 - define_machine(virtex) { 47 - .name = "Xilinx Virtex", 48 - .probe = virtex_probe, 49 - .setup_arch = xilinx_pci_init, 50 - .init_IRQ = xilinx_intc_init_tree, 51 - .get_irq = xintc_get_irq, 52 - .restart = ppc4xx_reset_system, 53 - .calibrate_decr = generic_calibrate_decr, 54 - };
-37
arch/powerpc/platforms/44x/Kconfig
··· 232 232 help 233 233 This option enables support for the AMCC PPC440SPe evaluation board. 234 234 235 - config XILINX_VIRTEX440_GENERIC_BOARD 236 - bool "Generic Xilinx Virtex 5 FXT board support" 237 - depends on 44x 238 - select XILINX_VIRTEX_5_FXT 239 - select XILINX_INTC 240 - help 241 - This option enables generic support for Xilinx Virtex based boards 242 - that use a 440 based processor in the Virtex 5 FXT FPGA architecture. 243 - 244 - The generic virtex board support matches any device tree which 245 - specifies 'xlnx,virtex440' in its compatible field. This includes 246 - the Xilinx ML5xx reference designs using the powerpc core. 247 - 248 - Most Virtex 5 designs should use this unless it needs to do some 249 - special configuration at board probe time. 250 - 251 - config XILINX_ML510 252 - bool "Xilinx ML510 extra support" 253 - depends on XILINX_VIRTEX440_GENERIC_BOARD 254 - select HAVE_PCI 255 - select XILINX_PCI if PCI 256 - select PPC_INDIRECT_PCI if PCI 257 - select PPC_I8259 if PCI 258 - help 259 - This option enables extra support for features on the Xilinx ML510 260 - board. The ML510 has a PCI bus with ALI south bridge. 261 - 262 235 config PPC44x_SIMPLE 263 236 bool "Simple PowerPC 44x board support" 264 237 depends on 44x ··· 326 353 # 44x errata/workaround config symbols, selected by the CPU models above 327 354 config IBM440EP_ERR42 328 355 bool 329 - 330 - # Xilinx specific config options. 331 - config XILINX_VIRTEX 332 - bool 333 - select DEFAULT_UIMAGE 334 - 335 - # Xilinx Virtex 5 FXT FPGA architecture, selected by a Xilinx board above 336 - config XILINX_VIRTEX_5_FXT 337 - bool 338 - select XILINX_VIRTEX 339 356
-2
arch/powerpc/platforms/44x/Makefile
··· 7 7 obj-$(CONFIG_EBONY) += ebony.o 8 8 obj-$(CONFIG_SAM440EP) += sam440ep.o 9 9 obj-$(CONFIG_WARP) += warp.o 10 - obj-$(CONFIG_XILINX_VIRTEX_5_FXT) += virtex.o 11 - obj-$(CONFIG_XILINX_ML510) += virtex_ml510.o 12 10 obj-$(CONFIG_ISS4xx) += iss4xx.o 13 11 obj-$(CONFIG_CANYONLANDS)+= canyonlands.o 14 12 obj-$(CONFIG_CURRITUCK) += ppc476.o
-60
arch/powerpc/platforms/44x/virtex.c
··· 1 - /* 2 - * Xilinx Virtex 5FXT based board support, derived from 3 - * the Xilinx Virtex (IIpro & 4FX) based board support 4 - * 5 - * Copyright 2007 Secret Lab Technologies Ltd. 6 - * Copyright 2008 Xilinx, Inc. 7 - * 8 - * This file is licensed under the terms of the GNU General Public License 9 - * version 2. This program is licensed "as is" without any warranty of any 10 - * kind, whether express or implied. 11 - */ 12 - 13 - #include <linux/init.h> 14 - #include <linux/of_platform.h> 15 - #include <asm/machdep.h> 16 - #include <asm/prom.h> 17 - #include <asm/time.h> 18 - #include <asm/xilinx_intc.h> 19 - #include <asm/xilinx_pci.h> 20 - #include <asm/reg.h> 21 - #include <asm/ppc4xx.h> 22 - #include "44x.h" 23 - 24 - static const struct of_device_id xilinx_of_bus_ids[] __initconst = { 25 - { .compatible = "simple-bus", }, 26 - { .compatible = "xlnx,plb-v46-1.00.a", }, 27 - { .compatible = "xlnx,plb-v46-1.02.a", }, 28 - { .compatible = "xlnx,plb-v34-1.01.a", }, 29 - { .compatible = "xlnx,plb-v34-1.02.a", }, 30 - { .compatible = "xlnx,opb-v20-1.10.c", }, 31 - { .compatible = "xlnx,dcr-v29-1.00.a", }, 32 - { .compatible = "xlnx,compound", }, 33 - {} 34 - }; 35 - 36 - static int __init virtex_device_probe(void) 37 - { 38 - of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL); 39 - 40 - return 0; 41 - } 42 - machine_device_initcall(virtex, virtex_device_probe); 43 - 44 - static int __init virtex_probe(void) 45 - { 46 - if (!of_machine_is_compatible("xlnx,virtex440")) 47 - return 0; 48 - 49 - return 1; 50 - } 51 - 52 - define_machine(virtex) { 53 - .name = "Xilinx Virtex440", 54 - .probe = virtex_probe, 55 - .setup_arch = xilinx_pci_init, 56 - .init_IRQ = xilinx_intc_init_tree, 57 - .get_irq = xintc_get_irq, 58 - .calibrate_decr = generic_calibrate_decr, 59 - .restart = ppc4xx_reset_system, 60 - };
-30
arch/powerpc/platforms/44x/virtex_ml510.c
··· 1 - // SPDX-License-Identifier: GPL-2.0 2 - #include <asm/i8259.h> 3 - #include <linux/pci.h> 4 - #include "44x.h" 5 - 6 - /** 7 - * ml510_ail_quirk 8 - */ 9 - static void ml510_ali_quirk(struct pci_dev *dev) 10 - { 11 - /* Enable the IDE controller */ 12 - pci_write_config_byte(dev, 0x58, 0x4c); 13 - /* Assign irq 14 to the primary ide channel */ 14 - pci_write_config_byte(dev, 0x44, 0x0d); 15 - /* Assign irq 15 to the secondary ide channel */ 16 - pci_write_config_byte(dev, 0x75, 0x0f); 17 - /* Set the ide controller in native mode */ 18 - pci_write_config_byte(dev, 0x09, 0xff); 19 - 20 - /* INTB = disabled, INTA = disabled */ 21 - pci_write_config_byte(dev, 0x48, 0x00); 22 - /* INTD = disabled, INTC = disabled */ 23 - pci_write_config_byte(dev, 0x4a, 0x00); 24 - /* Audio = INT7, Modem = disabled. */ 25 - pci_write_config_byte(dev, 0x4b, 0x60); 26 - /* USB = INT7 */ 27 - pci_write_config_byte(dev, 0x74, 0x06); 28 - } 29 - DECLARE_PCI_FIXUP_EARLY(0x10b9, 0x1533, ml510_ali_quirk); 30 -
-4
arch/powerpc/platforms/Kconfig
··· 317 317 also register MCU GPIOs with the generic GPIO API, so you'll able 318 318 to use MCU pins as GPIOs. 319 319 320 - config XILINX_PCI 321 - bool "Xilinx PCI host bridge support" 322 - depends on PCI && XILINX_VIRTEX 323 - 324 320 endmenu
-2
arch/powerpc/sysdev/Makefile
··· 31 31 obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o 32 32 obj-$(CONFIG_PPC_I8259) += i8259.o 33 33 obj-$(CONFIG_IPIC) += ipic.o 34 - obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o 35 - obj-$(CONFIG_XILINX_PCI) += xilinx_pci.o 36 34 obj-$(CONFIG_OF_RTC) += of_rtc.o 37 35 38 36 obj-$(CONFIG_CPM) += cpm_common.o
-88
arch/powerpc/sysdev/xilinx_intc.c
··· 1 - /* 2 - * Interrupt controller driver for Xilinx Virtex FPGAs 3 - * 4 - * Copyright (C) 2007 Secret Lab Technologies Ltd. 5 - * 6 - * This file is licensed under the terms of the GNU General Public License 7 - * version 2. This program is licensed "as is" without any warranty of any 8 - * kind, whether express or implied. 9 - * 10 - */ 11 - 12 - /* 13 - * This is a driver for the interrupt controller typically found in 14 - * Xilinx Virtex FPGA designs. 15 - * 16 - * The interrupt sense levels are hard coded into the FPGA design with 17 - * typically a 1:1 relationship between irq lines and devices (no shared 18 - * irq lines). Therefore, this driver does not attempt to handle edge 19 - * and level interrupts differently. 20 - */ 21 - #undef DEBUG 22 - 23 - #include <linux/kernel.h> 24 - #include <linux/irq.h> 25 - #include <linux/of.h> 26 - #include <linux/of_address.h> 27 - #include <linux/of_irq.h> 28 - #include <asm/io.h> 29 - #include <asm/processor.h> 30 - #include <asm/i8259.h> 31 - #include <asm/irq.h> 32 - #include <linux/irqchip.h> 33 - 34 - #if defined(CONFIG_PPC_I8259) 35 - /* 36 - * Support code for cascading to 8259 interrupt controllers 37 - */ 38 - static void xilinx_i8259_cascade(struct irq_desc *desc) 39 - { 40 - struct irq_chip *chip = irq_desc_get_chip(desc); 41 - unsigned int cascade_irq = i8259_irq(); 42 - 43 - if (cascade_irq) 44 - generic_handle_irq(cascade_irq); 45 - 46 - /* Let xilinx_intc end the interrupt */ 47 - chip->irq_unmask(&desc->irq_data); 48 - } 49 - 50 - static void __init xilinx_i8259_setup_cascade(void) 51 - { 52 - struct device_node *cascade_node; 53 - int cascade_irq; 54 - 55 - /* Initialize i8259 controller */ 56 - cascade_node = of_find_compatible_node(NULL, NULL, "chrp,iic"); 57 - if (!cascade_node) 58 - return; 59 - 60 - cascade_irq = irq_of_parse_and_map(cascade_node, 0); 61 - if (!cascade_irq) { 62 - pr_err("virtex_ml510: Failed to map cascade interrupt\n"); 63 - goto out; 64 - } 65 - 66 - i8259_init(cascade_node, 0); 67 - irq_set_chained_handler(cascade_irq, xilinx_i8259_cascade); 68 - 69 - /* Program irq 7 (usb/audio), 14/15 (ide) to level sensitive */ 70 - /* This looks like a dirty hack to me --gcl */ 71 - outb(0xc0, 0x4d0); 72 - outb(0xc0, 0x4d1); 73 - 74 - out: 75 - of_node_put(cascade_node); 76 - } 77 - #else 78 - static inline void xilinx_i8259_setup_cascade(void) { return; } 79 - #endif /* defined(CONFIG_PPC_I8259) */ 80 - 81 - /* 82 - * Initialize master Xilinx interrupt controller 83 - */ 84 - void __init xilinx_intc_init_tree(void) 85 - { 86 - irqchip_init(); 87 - xilinx_i8259_setup_cascade(); 88 - }
-132
arch/powerpc/sysdev/xilinx_pci.c
··· 1 - /* 2 - * PCI support for Xilinx plbv46_pci soft-core which can be used on 3 - * Xilinx Virtex ML410 / ML510 boards. 4 - * 5 - * Copyright 2009 Roderick Colenbrander 6 - * Copyright 2009 Secret Lab Technologies Ltd. 7 - * 8 - * The pci bridge fixup code was copied from ppc4xx_pci.c and was written 9 - * by Benjamin Herrenschmidt. 10 - * Copyright 2007 Ben. Herrenschmidt <benh@kernel.crashing.org>, IBM Corp. 11 - * 12 - * This file is licensed under the terms of the GNU General Public License 13 - * version 2. This program is licensed "as is" without any warranty of any 14 - * kind, whether express or implied. 15 - */ 16 - 17 - #include <linux/ioport.h> 18 - #include <linux/of.h> 19 - #include <linux/pci.h> 20 - #include <mm/mmu_decl.h> 21 - #include <asm/io.h> 22 - #include <asm/xilinx_pci.h> 23 - 24 - #define XPLB_PCI_ADDR 0x10c 25 - #define XPLB_PCI_DATA 0x110 26 - #define XPLB_PCI_BUS 0x114 27 - 28 - #define PCI_HOST_ENABLE_CMD PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY 29 - 30 - static const struct of_device_id xilinx_pci_match[] = { 31 - { .compatible = "xlnx,plbv46-pci-1.03.a", }, 32 - {} 33 - }; 34 - 35 - /** 36 - * xilinx_pci_fixup_bridge - Block Xilinx PHB configuration. 37 - */ 38 - static void xilinx_pci_fixup_bridge(struct pci_dev *dev) 39 - { 40 - struct pci_controller *hose; 41 - int i; 42 - 43 - if (dev->devfn || dev->bus->self) 44 - return; 45 - 46 - hose = pci_bus_to_host(dev->bus); 47 - if (!hose) 48 - return; 49 - 50 - if (!of_match_node(xilinx_pci_match, hose->dn)) 51 - return; 52 - 53 - /* Hide the PCI host BARs from the kernel as their content doesn't 54 - * fit well in the resource management 55 - */ 56 - for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { 57 - dev->resource[i].start = 0; 58 - dev->resource[i].end = 0; 59 - dev->resource[i].flags = 0; 60 - } 61 - 62 - dev_info(&dev->dev, "Hiding Xilinx plb-pci host bridge resources %s\n", 63 - pci_name(dev)); 64 - } 65 - DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, xilinx_pci_fixup_bridge); 66 - 67 - /** 68 - * xilinx_pci_exclude_device - Don't do config access for non-root bus 69 - * 70 - * This is a hack. Config access to any bus other than bus 0 does not 71 - * currently work on the ML510 so we prevent it here. 72 - */ 73 - static int 74 - xilinx_pci_exclude_device(struct pci_controller *hose, u_char bus, u8 devfn) 75 - { 76 - return (bus != 0); 77 - } 78 - 79 - /** 80 - * xilinx_pci_init - Find and register a Xilinx PCI host bridge 81 - */ 82 - void __init xilinx_pci_init(void) 83 - { 84 - struct pci_controller *hose; 85 - struct resource r; 86 - void __iomem *pci_reg; 87 - struct device_node *pci_node; 88 - 89 - pci_node = of_find_matching_node(NULL, xilinx_pci_match); 90 - if(!pci_node) 91 - return; 92 - 93 - if (of_address_to_resource(pci_node, 0, &r)) { 94 - pr_err("xilinx-pci: cannot resolve base address\n"); 95 - return; 96 - } 97 - 98 - hose = pcibios_alloc_controller(pci_node); 99 - if (!hose) { 100 - pr_err("xilinx-pci: pcibios_alloc_controller() failed\n"); 101 - return; 102 - } 103 - 104 - /* Setup config space */ 105 - setup_indirect_pci(hose, r.start + XPLB_PCI_ADDR, 106 - r.start + XPLB_PCI_DATA, 107 - PPC_INDIRECT_TYPE_SET_CFG_TYPE); 108 - 109 - /* According to the xilinx plbv46_pci documentation the soft-core starts 110 - * a self-init when the bus master enable bit is set. Without this bit 111 - * set the pci bus can't be scanned. 112 - */ 113 - early_write_config_word(hose, 0, 0, PCI_COMMAND, PCI_HOST_ENABLE_CMD); 114 - 115 - /* Set the max latency timer to 255 */ 116 - early_write_config_byte(hose, 0, 0, PCI_LATENCY_TIMER, 0xff); 117 - 118 - /* Set the max bus number to 255 */ 119 - pci_reg = of_iomap(pci_node, 0); 120 - out_8(pci_reg + XPLB_PCI_BUS, 0xff); 121 - iounmap(pci_reg); 122 - 123 - /* Nothing past the root bridge is working right now. By default 124 - * exclude config access to anything except bus 0 */ 125 - if (!ppc_md.pci_exclude_device) 126 - ppc_md.pci_exclude_device = xilinx_pci_exclude_device; 127 - 128 - /* Register the host bridge with the linux kernel! */ 129 - pci_process_bridge_OF_ranges(hose, pci_node, 1); 130 - 131 - pr_info("xilinx-pci: Registered PCI host bridge\n"); 132 - }
+1 -1
drivers/char/Kconfig
··· 209 209 210 210 config XILINX_HWICAP 211 211 tristate "Xilinx HWICAP Support" 212 - depends on XILINX_VIRTEX || MICROBLAZE 212 + depends on MICROBLAZE 213 213 help 214 214 This option enables support for Xilinx Internal Configuration 215 215 Access Port (ICAP) driver. The ICAP is used on Xilinx Virtex
+1 -1
drivers/video/fbdev/Kconfig
··· 2008 2008 2009 2009 config FB_XILINX 2010 2010 tristate "Xilinx frame buffer support" 2011 - depends on FB && (XILINX_VIRTEX || MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP) 2011 + depends on FB && (MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP) 2012 2012 select FB_CFB_FILLRECT 2013 2013 select FB_CFB_COPYAREA 2014 2014 select FB_CFB_IMAGEBLIT