forked from luck/tmp_suning_uos_patched
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 commitcdeb89943b
("MAINTAINERS: Fix incorrect status tag") and commit19624236cc
("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
This commit is contained in:
parent
0bdad33d6b
commit
7ade8495dc
|
@ -86,149 +86,6 @@
|
|||
xlnx,use-parity = <0>;
|
||||
};
|
||||
|
||||
Some IP cores actually implement 2 or more logical devices. In
|
||||
this case, the device should still describe the whole IP core with
|
||||
a single node and add a child node for each logical device. The
|
||||
ranges property can be used to translate from parent IP-core to the
|
||||
registers of each device. In addition, the parent node should be
|
||||
compatible with the bus type 'xlnx,compound', and should contain
|
||||
#address-cells and #size-cells, as with any other bus. (Note: this
|
||||
makes the assumption that both logical devices have the same bus
|
||||
binding. If this is not true, then separate nodes should be used
|
||||
for each logical device). The 'cell-index' property can be used to
|
||||
enumerate logical devices within an IP core. For example, the
|
||||
following is the system.mhs entry for the dual ps2 controller found
|
||||
on the ml403 reference design.
|
||||
|
||||
BEGIN opb_ps2_dual_ref
|
||||
PARAMETER INSTANCE = opb_ps2_dual_ref_0
|
||||
PARAMETER HW_VER = 1.00.a
|
||||
PARAMETER C_BASEADDR = 0xA9000000
|
||||
PARAMETER C_HIGHADDR = 0xA9001FFF
|
||||
BUS_INTERFACE SOPB = opb_v20_0
|
||||
PORT Sys_Intr1 = ps2_1_intr
|
||||
PORT Sys_Intr2 = ps2_2_intr
|
||||
PORT Clkin1 = ps2_clk_rx_1
|
||||
PORT Clkin2 = ps2_clk_rx_2
|
||||
PORT Clkpd1 = ps2_clk_tx_1
|
||||
PORT Clkpd2 = ps2_clk_tx_2
|
||||
PORT Rx1 = ps2_d_rx_1
|
||||
PORT Rx2 = ps2_d_rx_2
|
||||
PORT Txpd1 = ps2_d_tx_1
|
||||
PORT Txpd2 = ps2_d_tx_2
|
||||
END
|
||||
|
||||
It would result in the following device tree nodes:
|
||||
|
||||
opb_ps2_dual_ref_0: opb-ps2-dual-ref@a9000000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "xlnx,compound";
|
||||
ranges = <0 a9000000 2000>;
|
||||
// If this device had extra parameters, then they would
|
||||
// go here.
|
||||
ps2@0 {
|
||||
compatible = "xlnx,opb-ps2-dual-ref-1.00.a";
|
||||
reg = <0 40>;
|
||||
interrupt-parent = <&opb_intc_0>;
|
||||
interrupts = <3 0>;
|
||||
cell-index = <0>;
|
||||
};
|
||||
ps2@1000 {
|
||||
compatible = "xlnx,opb-ps2-dual-ref-1.00.a";
|
||||
reg = <1000 40>;
|
||||
interrupt-parent = <&opb_intc_0>;
|
||||
interrupts = <3 0>;
|
||||
cell-index = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
Also, the system.mhs file defines bus attachments from the processor
|
||||
to the devices. The device tree structure should reflect the bus
|
||||
attachments. Again an example; this system.mhs fragment:
|
||||
|
||||
BEGIN ppc405_virtex4
|
||||
PARAMETER INSTANCE = ppc405_0
|
||||
PARAMETER HW_VER = 1.01.a
|
||||
BUS_INTERFACE DPLB = plb_v34_0
|
||||
BUS_INTERFACE IPLB = plb_v34_0
|
||||
END
|
||||
|
||||
BEGIN opb_intc
|
||||
PARAMETER INSTANCE = opb_intc_0
|
||||
PARAMETER HW_VER = 1.00.c
|
||||
PARAMETER C_BASEADDR = 0xD1000FC0
|
||||
PARAMETER C_HIGHADDR = 0xD1000FDF
|
||||
BUS_INTERFACE SOPB = opb_v20_0
|
||||
END
|
||||
|
||||
BEGIN opb_uart16550
|
||||
PARAMETER INSTANCE = opb_uart16550_0
|
||||
PARAMETER HW_VER = 1.00.d
|
||||
PARAMETER C_BASEADDR = 0xa0000000
|
||||
PARAMETER C_HIGHADDR = 0xa0001FFF
|
||||
BUS_INTERFACE SOPB = opb_v20_0
|
||||
END
|
||||
|
||||
BEGIN plb_v34
|
||||
PARAMETER INSTANCE = plb_v34_0
|
||||
PARAMETER HW_VER = 1.02.a
|
||||
END
|
||||
|
||||
BEGIN plb_bram_if_cntlr
|
||||
PARAMETER INSTANCE = plb_bram_if_cntlr_0
|
||||
PARAMETER HW_VER = 1.00.b
|
||||
PARAMETER C_BASEADDR = 0xFFFF0000
|
||||
PARAMETER C_HIGHADDR = 0xFFFFFFFF
|
||||
BUS_INTERFACE SPLB = plb_v34_0
|
||||
END
|
||||
|
||||
BEGIN plb2opb_bridge
|
||||
PARAMETER INSTANCE = plb2opb_bridge_0
|
||||
PARAMETER HW_VER = 1.01.a
|
||||
PARAMETER C_RNG0_BASEADDR = 0x20000000
|
||||
PARAMETER C_RNG0_HIGHADDR = 0x3FFFFFFF
|
||||
PARAMETER C_RNG1_BASEADDR = 0x60000000
|
||||
PARAMETER C_RNG1_HIGHADDR = 0x7FFFFFFF
|
||||
PARAMETER C_RNG2_BASEADDR = 0x80000000
|
||||
PARAMETER C_RNG2_HIGHADDR = 0xBFFFFFFF
|
||||
PARAMETER C_RNG3_BASEADDR = 0xC0000000
|
||||
PARAMETER C_RNG3_HIGHADDR = 0xDFFFFFFF
|
||||
BUS_INTERFACE SPLB = plb_v34_0
|
||||
BUS_INTERFACE MOPB = opb_v20_0
|
||||
END
|
||||
|
||||
Gives this device tree (some properties removed for clarity):
|
||||
|
||||
plb@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "xlnx,plb-v34-1.02.a";
|
||||
device_type = "ibm,plb";
|
||||
ranges; // 1:1 translation
|
||||
|
||||
plb_bram_if_cntrl_0: bram@ffff0000 {
|
||||
reg = <ffff0000 10000>;
|
||||
}
|
||||
|
||||
opb@20000000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <20000000 20000000 20000000
|
||||
60000000 60000000 20000000
|
||||
80000000 80000000 40000000
|
||||
c0000000 c0000000 20000000>;
|
||||
|
||||
opb_uart16550_0: serial@a0000000 {
|
||||
reg = <a00000000 2000>;
|
||||
};
|
||||
|
||||
opb_intc_0: interrupt-controller@d1000fc0 {
|
||||
reg = <d1000fc0 20>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
That covers the general approach to binding xilinx IP cores into the
|
||||
device tree. The following are bindings for specific devices:
|
||||
|
||||
|
|
|
@ -70,28 +70,6 @@ Currently, the following image format targets exist:
|
|||
kernel with this image type and it depends entirely on
|
||||
the embedded device tree for all information.
|
||||
|
||||
The simpleImage is useful for booting systems with
|
||||
an unknown firmware interface or for booting from
|
||||
a debugger when no firmware is present (such as on
|
||||
the Xilinx Virtex platform). The only assumption that
|
||||
simpleImage makes is that RAM is correctly initialized
|
||||
and that the MMU is either off or has RAM mapped to
|
||||
base address 0.
|
||||
|
||||
simpleImage also supports inserting special platform
|
||||
specific initialization code to the start of the bootup
|
||||
sequence. The virtex405 platform uses this feature to
|
||||
ensure that the cache is invalidated before caching
|
||||
is enabled. Platform specific initialization code is
|
||||
added as part of the wrapper script and is keyed on
|
||||
the image target name. For example, all
|
||||
simpleImage.virtex405-* targets will add the
|
||||
virtex405-head.S initialization code (This also means
|
||||
that the dts file for virtex405 targets should be
|
||||
named (virtex405-<board>.dts). Search the wrapper
|
||||
script for 'virtex405' and see the file
|
||||
arch/powerpc/boot/virtex405-head.S for details.
|
||||
|
||||
treeImage.%; Image format for used with OpenBIOS firmware found
|
||||
on some ppc4xx hardware. This image embeds a device
|
||||
tree blob inside the image.
|
||||
|
@ -116,10 +94,8 @@ Image types which embed a device tree blob (simpleImage, dtbImage, treeImage,
|
|||
and cuImage) all generate the device tree blob from a file in the
|
||||
arch/powerpc/boot/dts/ directory. The Makefile selects the correct device
|
||||
tree source based on the name of the target. Therefore, if the kernel is
|
||||
built with 'make treeImage.walnut simpleImage.virtex405-ml403', then the
|
||||
build system will use arch/powerpc/boot/dts/walnut.dts to build
|
||||
treeImage.walnut and arch/powerpc/boot/dts/virtex405-ml403.dts to build
|
||||
the simpleImage.virtex405-ml403.
|
||||
built with 'make treeImage.walnut', then the build system will use
|
||||
arch/powerpc/boot/dts/walnut.dts to build treeImage.walnut.
|
||||
|
||||
Two special targets called 'zImage' and 'zImage.initrd' also exist. These
|
||||
targets build all the default images as selected by the kernel configuration.
|
||||
|
|
|
@ -230,7 +230,7 @@ config PPC_EARLY_DEBUG_40x
|
|||
help
|
||||
Select this to enable early debugging for IBM 40x chips via the
|
||||
inbuilt serial port. This works on chips with a 16550 compatible
|
||||
UART. Xilinx chips with uartlite cannot use this option.
|
||||
UART.
|
||||
|
||||
config PPC_EARLY_DEBUG_CPM
|
||||
bool "Early serial debugging for Freescale CPM-based serial ports"
|
||||
|
|
|
@ -79,7 +79,6 @@ $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405
|
|||
$(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/treeboot-akebono.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405
|
||||
|
||||
# The pre-boot decompressors pull in a lot of kernel headers and other source
|
||||
# files. This creates a bit of a dependency headache since we need to copy
|
||||
|
@ -129,14 +128,12 @@ src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
|
|||
src-wlib-$(CONFIG_PPC_8xx) += mpc8xx.c planetcore.c fsl-soc.c
|
||||
src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c
|
||||
src-wlib-$(CONFIG_EMBEDDED6xx) += ugecon.c fsl-soc.c
|
||||
src-wlib-$(CONFIG_XILINX_VIRTEX) += uartlite.c
|
||||
src-wlib-$(CONFIG_CPM) += cpm-serial.c
|
||||
|
||||
src-plat-y := of.c epapr.c
|
||||
src-plat-$(CONFIG_40x) += fixed-head.S ep405.c cuboot-hotfoot.c \
|
||||
treeboot-walnut.c cuboot-acadia.c \
|
||||
cuboot-kilauea.c simpleboot.c \
|
||||
virtex405-head.S virtex.c
|
||||
cuboot-kilauea.c simpleboot.c
|
||||
src-plat-$(CONFIG_44x) += treeboot-ebony.c cuboot-ebony.c treeboot-bamboo.c \
|
||||
cuboot-bamboo.c cuboot-sam440ep.c \
|
||||
cuboot-sequoia.c cuboot-rainier.c \
|
||||
|
@ -144,7 +141,7 @@ src-plat-$(CONFIG_44x) += treeboot-ebony.c cuboot-ebony.c treeboot-bamboo.c \
|
|||
cuboot-warp.c cuboot-yosemite.c \
|
||||
treeboot-iss4xx.c treeboot-currituck.c \
|
||||
treeboot-akebono.c \
|
||||
simpleboot.c fixed-head.S virtex.c
|
||||
simpleboot.c fixed-head.S
|
||||
src-plat-$(CONFIG_PPC_8xx) += cuboot-8xx.c fixed-head.S ep88xc.c redboot-8xx.c
|
||||
src-plat-$(CONFIG_PPC_MPC52xx) += cuboot-52xx.c
|
||||
src-plat-$(CONFIG_PPC_82xx) += cuboot-pq2.c fixed-head.S ep8248e.c cuboot-824x.c
|
||||
|
|
|
@ -4,4 +4,3 @@ subdir-y += fsl
|
|||
|
||||
dtstree := $(srctree)/$(src)
|
||||
dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
|
||||
dtb-$(CONFIG_XILINX_VIRTEX440_GENERIC_BOARD) += virtex440-ml507.dtb virtex440-ml510.dtb
|
||||
|
|
|
@ -1,406 +0,0 @@
|
|||
/*
|
||||
* This file supports the Xilinx ML507 board with the 440 processor.
|
||||
* A reference design for the FPGA is provided at http://git.xilinx.com.
|
||||
*
|
||||
* (C) Copyright 2008 Xilinx, Inc.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*
|
||||
* ---
|
||||
*
|
||||
* Device Tree Generator version: 1.1
|
||||
*
|
||||
* CAUTION: This file is automatically generated by libgen.
|
||||
* Version: Xilinx EDK 10.1.03 EDK_K_SP3.6
|
||||
*
|
||||
* XPS project directory: ml507_ppc440_emb_ref
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "xlnx,virtex440";
|
||||
dcr-parent = <&ppc440_0>;
|
||||
model = "testing";
|
||||
DDR2_SDRAM: memory@0 {
|
||||
device_type = "memory";
|
||||
reg = < 0 0x10000000 >;
|
||||
} ;
|
||||
chosen {
|
||||
bootargs = "console=ttyS0 root=/dev/ram";
|
||||
stdout-path = &RS232_Uart_1;
|
||||
} ;
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#cpus = <1>;
|
||||
#size-cells = <0>;
|
||||
ppc440_0: cpu@0 {
|
||||
clock-frequency = <400000000>;
|
||||
compatible = "PowerPC,440", "ibm,ppc440";
|
||||
d-cache-line-size = <0x20>;
|
||||
d-cache-size = <0x8000>;
|
||||
dcr-access-method = "native";
|
||||
dcr-controller ;
|
||||
device_type = "cpu";
|
||||
i-cache-line-size = <0x20>;
|
||||
i-cache-size = <0x8000>;
|
||||
model = "PowerPC,440";
|
||||
reg = <0>;
|
||||
timebase-frequency = <400000000>;
|
||||
xlnx,apu-control = <1>;
|
||||
xlnx,apu-udi-0 = <0>;
|
||||
xlnx,apu-udi-1 = <0>;
|
||||
xlnx,apu-udi-10 = <0>;
|
||||
xlnx,apu-udi-11 = <0>;
|
||||
xlnx,apu-udi-12 = <0>;
|
||||
xlnx,apu-udi-13 = <0>;
|
||||
xlnx,apu-udi-14 = <0>;
|
||||
xlnx,apu-udi-15 = <0>;
|
||||
xlnx,apu-udi-2 = <0>;
|
||||
xlnx,apu-udi-3 = <0>;
|
||||
xlnx,apu-udi-4 = <0>;
|
||||
xlnx,apu-udi-5 = <0>;
|
||||
xlnx,apu-udi-6 = <0>;
|
||||
xlnx,apu-udi-7 = <0>;
|
||||
xlnx,apu-udi-8 = <0>;
|
||||
xlnx,apu-udi-9 = <0>;
|
||||
xlnx,dcr-autolock-enable = <1>;
|
||||
xlnx,dcu-rd-ld-cache-plb-prio = <0>;
|
||||
xlnx,dcu-rd-noncache-plb-prio = <0>;
|
||||
xlnx,dcu-rd-touch-plb-prio = <0>;
|
||||
xlnx,dcu-rd-urgent-plb-prio = <0>;
|
||||
xlnx,dcu-wr-flush-plb-prio = <0>;
|
||||
xlnx,dcu-wr-store-plb-prio = <0>;
|
||||
xlnx,dcu-wr-urgent-plb-prio = <0>;
|
||||
xlnx,dma0-control = <0>;
|
||||
xlnx,dma0-plb-prio = <0>;
|
||||
xlnx,dma0-rxchannelctrl = <0x1010000>;
|
||||
xlnx,dma0-rxirqtimer = <0x3ff>;
|
||||
xlnx,dma0-txchannelctrl = <0x1010000>;
|
||||
xlnx,dma0-txirqtimer = <0x3ff>;
|
||||
xlnx,dma1-control = <0>;
|
||||
xlnx,dma1-plb-prio = <0>;
|
||||
xlnx,dma1-rxchannelctrl = <0x1010000>;
|
||||
xlnx,dma1-rxirqtimer = <0x3ff>;
|
||||
xlnx,dma1-txchannelctrl = <0x1010000>;
|
||||
xlnx,dma1-txirqtimer = <0x3ff>;
|
||||
xlnx,dma2-control = <0>;
|
||||
xlnx,dma2-plb-prio = <0>;
|
||||
xlnx,dma2-rxchannelctrl = <0x1010000>;
|
||||
xlnx,dma2-rxirqtimer = <0x3ff>;
|
||||
xlnx,dma2-txchannelctrl = <0x1010000>;
|
||||
xlnx,dma2-txirqtimer = <0x3ff>;
|
||||
xlnx,dma3-control = <0>;
|
||||
xlnx,dma3-plb-prio = <0>;
|
||||
xlnx,dma3-rxchannelctrl = <0x1010000>;
|
||||
xlnx,dma3-rxirqtimer = <0x3ff>;
|
||||
xlnx,dma3-txchannelctrl = <0x1010000>;
|
||||
xlnx,dma3-txirqtimer = <0x3ff>;
|
||||
xlnx,endian-reset = <0>;
|
||||
xlnx,generate-plb-timespecs = <1>;
|
||||
xlnx,icu-rd-fetch-plb-prio = <0>;
|
||||
xlnx,icu-rd-spec-plb-prio = <0>;
|
||||
xlnx,icu-rd-touch-plb-prio = <0>;
|
||||
xlnx,interconnect-imask = <0xffffffff>;
|
||||
xlnx,mplb-allow-lock-xfer = <1>;
|
||||
xlnx,mplb-arb-mode = <0>;
|
||||
xlnx,mplb-awidth = <0x20>;
|
||||
xlnx,mplb-counter = <0x500>;
|
||||
xlnx,mplb-dwidth = <0x80>;
|
||||
xlnx,mplb-max-burst = <8>;
|
||||
xlnx,mplb-native-dwidth = <0x80>;
|
||||
xlnx,mplb-p2p = <0>;
|
||||
xlnx,mplb-prio-dcur = <2>;
|
||||
xlnx,mplb-prio-dcuw = <3>;
|
||||
xlnx,mplb-prio-icu = <4>;
|
||||
xlnx,mplb-prio-splb0 = <1>;
|
||||
xlnx,mplb-prio-splb1 = <0>;
|
||||
xlnx,mplb-read-pipe-enable = <1>;
|
||||
xlnx,mplb-sync-tattribute = <0>;
|
||||
xlnx,mplb-wdog-enable = <1>;
|
||||
xlnx,mplb-write-pipe-enable = <1>;
|
||||
xlnx,mplb-write-post-enable = <1>;
|
||||
xlnx,num-dma = <1>;
|
||||
xlnx,pir = <0xf>;
|
||||
xlnx,ppc440mc-addr-base = <0>;
|
||||
xlnx,ppc440mc-addr-high = <0xfffffff>;
|
||||
xlnx,ppc440mc-arb-mode = <0>;
|
||||
xlnx,ppc440mc-bank-conflict-mask = <0xc00000>;
|
||||
xlnx,ppc440mc-control = <0xf810008f>;
|
||||
xlnx,ppc440mc-max-burst = <8>;
|
||||
xlnx,ppc440mc-prio-dcur = <2>;
|
||||
xlnx,ppc440mc-prio-dcuw = <3>;
|
||||
xlnx,ppc440mc-prio-icu = <4>;
|
||||
xlnx,ppc440mc-prio-splb0 = <1>;
|
||||
xlnx,ppc440mc-prio-splb1 = <0>;
|
||||
xlnx,ppc440mc-row-conflict-mask = <0x3ffe00>;
|
||||
xlnx,ppcdm-asyncmode = <0>;
|
||||
xlnx,ppcds-asyncmode = <0>;
|
||||
xlnx,user-reset = <0>;
|
||||
DMA0: sdma@80 {
|
||||
compatible = "xlnx,ll-dma-1.00.a";
|
||||
dcr-reg = < 0x80 0x11 >;
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 10 2 11 2 >;
|
||||
} ;
|
||||
} ;
|
||||
} ;
|
||||
plb_v46_0: plb@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "xlnx,plb-v46-1.03.a", "simple-bus";
|
||||
ranges ;
|
||||
DIP_Switches_8Bit: gpio@81460000 {
|
||||
compatible = "xlnx,xps-gpio-1.00.a";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 7 2 >;
|
||||
reg = < 0x81460000 0x10000 >;
|
||||
xlnx,all-inputs = <1>;
|
||||
xlnx,all-inputs-2 = <0>;
|
||||
xlnx,dout-default = <0>;
|
||||
xlnx,dout-default-2 = <0>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gpio-width = <8>;
|
||||
xlnx,interrupt-present = <1>;
|
||||
xlnx,is-bidir = <1>;
|
||||
xlnx,is-bidir-2 = <1>;
|
||||
xlnx,is-dual = <0>;
|
||||
xlnx,tri-default = <0xffffffff>;
|
||||
xlnx,tri-default-2 = <0xffffffff>;
|
||||
} ;
|
||||
FLASH: flash@fc000000 {
|
||||
bank-width = <2>;
|
||||
compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash";
|
||||
reg = < 0xfc000000 0x2000000 >;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,include-datawidth-matching-0 = <0x1>;
|
||||
xlnx,include-datawidth-matching-1 = <0x0>;
|
||||
xlnx,include-datawidth-matching-2 = <0x0>;
|
||||
xlnx,include-datawidth-matching-3 = <0x0>;
|
||||
xlnx,include-negedge-ioregs = <0x0>;
|
||||
xlnx,include-plb-ipif = <0x1>;
|
||||
xlnx,include-wrbuf = <0x1>;
|
||||
xlnx,max-mem-width = <0x10>;
|
||||
xlnx,mch-native-dwidth = <0x20>;
|
||||
xlnx,mch-plb-clk-period-ps = <0x2710>;
|
||||
xlnx,mch-splb-awidth = <0x20>;
|
||||
xlnx,mch0-accessbuf-depth = <0x10>;
|
||||
xlnx,mch0-protocol = <0x0>;
|
||||
xlnx,mch0-rddatabuf-depth = <0x10>;
|
||||
xlnx,mch1-accessbuf-depth = <0x10>;
|
||||
xlnx,mch1-protocol = <0x0>;
|
||||
xlnx,mch1-rddatabuf-depth = <0x10>;
|
||||
xlnx,mch2-accessbuf-depth = <0x10>;
|
||||
xlnx,mch2-protocol = <0x0>;
|
||||
xlnx,mch2-rddatabuf-depth = <0x10>;
|
||||
xlnx,mch3-accessbuf-depth = <0x10>;
|
||||
xlnx,mch3-protocol = <0x0>;
|
||||
xlnx,mch3-rddatabuf-depth = <0x10>;
|
||||
xlnx,mem0-width = <0x10>;
|
||||
xlnx,mem1-width = <0x20>;
|
||||
xlnx,mem2-width = <0x20>;
|
||||
xlnx,mem3-width = <0x20>;
|
||||
xlnx,num-banks-mem = <0x1>;
|
||||
xlnx,num-channels = <0x2>;
|
||||
xlnx,priority-mode = <0x0>;
|
||||
xlnx,synch-mem-0 = <0x0>;
|
||||
xlnx,synch-mem-1 = <0x0>;
|
||||
xlnx,synch-mem-2 = <0x0>;
|
||||
xlnx,synch-mem-3 = <0x0>;
|
||||
xlnx,synch-pipedelay-0 = <0x2>;
|
||||
xlnx,synch-pipedelay-1 = <0x2>;
|
||||
xlnx,synch-pipedelay-2 = <0x2>;
|
||||
xlnx,synch-pipedelay-3 = <0x2>;
|
||||
xlnx,tavdv-ps-mem-0 = <0x1adb0>;
|
||||
xlnx,tavdv-ps-mem-1 = <0x3a98>;
|
||||
xlnx,tavdv-ps-mem-2 = <0x3a98>;
|
||||
xlnx,tavdv-ps-mem-3 = <0x3a98>;
|
||||
xlnx,tcedv-ps-mem-0 = <0x1adb0>;
|
||||
xlnx,tcedv-ps-mem-1 = <0x3a98>;
|
||||
xlnx,tcedv-ps-mem-2 = <0x3a98>;
|
||||
xlnx,tcedv-ps-mem-3 = <0x3a98>;
|
||||
xlnx,thzce-ps-mem-0 = <0x88b8>;
|
||||
xlnx,thzce-ps-mem-1 = <0x1b58>;
|
||||
xlnx,thzce-ps-mem-2 = <0x1b58>;
|
||||
xlnx,thzce-ps-mem-3 = <0x1b58>;
|
||||
xlnx,thzoe-ps-mem-0 = <0x1b58>;
|
||||
xlnx,thzoe-ps-mem-1 = <0x1b58>;
|
||||
xlnx,thzoe-ps-mem-2 = <0x1b58>;
|
||||
xlnx,thzoe-ps-mem-3 = <0x1b58>;
|
||||
xlnx,tlzwe-ps-mem-0 = <0x88b8>;
|
||||
xlnx,tlzwe-ps-mem-1 = <0x0>;
|
||||
xlnx,tlzwe-ps-mem-2 = <0x0>;
|
||||
xlnx,tlzwe-ps-mem-3 = <0x0>;
|
||||
xlnx,twc-ps-mem-0 = <0x2af8>;
|
||||
xlnx,twc-ps-mem-1 = <0x3a98>;
|
||||
xlnx,twc-ps-mem-2 = <0x3a98>;
|
||||
xlnx,twc-ps-mem-3 = <0x3a98>;
|
||||
xlnx,twp-ps-mem-0 = <0x11170>;
|
||||
xlnx,twp-ps-mem-1 = <0x2ee0>;
|
||||
xlnx,twp-ps-mem-2 = <0x2ee0>;
|
||||
xlnx,twp-ps-mem-3 = <0x2ee0>;
|
||||
xlnx,xcl0-linesize = <0x4>;
|
||||
xlnx,xcl0-writexfer = <0x1>;
|
||||
xlnx,xcl1-linesize = <0x4>;
|
||||
xlnx,xcl1-writexfer = <0x1>;
|
||||
xlnx,xcl2-linesize = <0x4>;
|
||||
xlnx,xcl2-writexfer = <0x1>;
|
||||
xlnx,xcl3-linesize = <0x4>;
|
||||
xlnx,xcl3-writexfer = <0x1>;
|
||||
} ;
|
||||
Hard_Ethernet_MAC: xps-ll-temac@81c00000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "xlnx,compound";
|
||||
ethernet@81c00000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "xlnx,xps-ll-temac-1.01.b";
|
||||
device_type = "network";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 5 2 >;
|
||||
llink-connected = <&DMA0>;
|
||||
local-mac-address = [ 02 00 00 00 00 00 ];
|
||||
reg = < 0x81c00000 0x40 >;
|
||||
xlnx,bus2core-clk-ratio = <1>;
|
||||
xlnx,phy-type = <1>;
|
||||
xlnx,phyaddr = <1>;
|
||||
xlnx,rxcsum = <1>;
|
||||
xlnx,rxfifo = <0x1000>;
|
||||
xlnx,temac-type = <0>;
|
||||
xlnx,txcsum = <1>;
|
||||
xlnx,txfifo = <0x1000>;
|
||||
phy-handle = <&phy7>;
|
||||
clock-frequency = <100000000>;
|
||||
phy7: phy@7 {
|
||||
compatible = "marvell,88e1111";
|
||||
reg = <7>;
|
||||
} ;
|
||||
} ;
|
||||
} ;
|
||||
IIC_EEPROM: i2c@81600000 {
|
||||
compatible = "xlnx,xps-iic-2.00.a";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 6 2 >;
|
||||
reg = < 0x81600000 0x10000 >;
|
||||
xlnx,clk-freq = <0x5f5e100>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gpo-width = <0x1>;
|
||||
xlnx,iic-freq = <0x186a0>;
|
||||
xlnx,scl-inertial-delay = <0x0>;
|
||||
xlnx,sda-inertial-delay = <0x0>;
|
||||
xlnx,ten-bit-adr = <0x0>;
|
||||
} ;
|
||||
LEDs_8Bit: gpio@81400000 {
|
||||
compatible = "xlnx,xps-gpio-1.00.a";
|
||||
reg = < 0x81400000 0x10000 >;
|
||||
xlnx,all-inputs = <0>;
|
||||
xlnx,all-inputs-2 = <0>;
|
||||
xlnx,dout-default = <0>;
|
||||
xlnx,dout-default-2 = <0>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gpio-width = <8>;
|
||||
xlnx,interrupt-present = <0>;
|
||||
xlnx,is-bidir = <1>;
|
||||
xlnx,is-bidir-2 = <1>;
|
||||
xlnx,is-dual = <0>;
|
||||
xlnx,tri-default = <0xffffffff>;
|
||||
xlnx,tri-default-2 = <0xffffffff>;
|
||||
} ;
|
||||
LEDs_Positions: gpio@81420000 {
|
||||
compatible = "xlnx,xps-gpio-1.00.a";
|
||||
reg = < 0x81420000 0x10000 >;
|
||||
xlnx,all-inputs = <0>;
|
||||
xlnx,all-inputs-2 = <0>;
|
||||
xlnx,dout-default = <0>;
|
||||
xlnx,dout-default-2 = <0>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gpio-width = <5>;
|
||||
xlnx,interrupt-present = <0>;
|
||||
xlnx,is-bidir = <1>;
|
||||
xlnx,is-bidir-2 = <1>;
|
||||
xlnx,is-dual = <0>;
|
||||
xlnx,tri-default = <0xffffffff>;
|
||||
xlnx,tri-default-2 = <0xffffffff>;
|
||||
} ;
|
||||
Push_Buttons_5Bit: gpio@81440000 {
|
||||
compatible = "xlnx,xps-gpio-1.00.a";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 8 2 >;
|
||||
reg = < 0x81440000 0x10000 >;
|
||||
xlnx,all-inputs = <1>;
|
||||
xlnx,all-inputs-2 = <0>;
|
||||
xlnx,dout-default = <0>;
|
||||
xlnx,dout-default-2 = <0>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gpio-width = <5>;
|
||||
xlnx,interrupt-present = <1>;
|
||||
xlnx,is-bidir = <1>;
|
||||
xlnx,is-bidir-2 = <1>;
|
||||
xlnx,is-dual = <0>;
|
||||
xlnx,tri-default = <0xffffffff>;
|
||||
xlnx,tri-default-2 = <0xffffffff>;
|
||||
} ;
|
||||
RS232_Uart_1: serial@83e00000 {
|
||||
clock-frequency = <100000000>;
|
||||
compatible = "xlnx,xps-uart16550-2.00.b", "ns16550";
|
||||
current-speed = <9600>;
|
||||
device_type = "serial";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 9 2 >;
|
||||
reg = < 0x83e00000 0x10000 >;
|
||||
reg-offset = <0x1003>;
|
||||
reg-shift = <2>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,has-external-rclk = <0>;
|
||||
xlnx,has-external-xin = <0>;
|
||||
xlnx,is-a-16550 = <1>;
|
||||
} ;
|
||||
SysACE_CompactFlash: sysace@83600000 {
|
||||
compatible = "xlnx,xps-sysace-1.00.a";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 4 2 >;
|
||||
reg = < 0x83600000 0x10000 >;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,mem-width = <0x10>;
|
||||
} ;
|
||||
xps_bram_if_cntlr_1: xps-bram-if-cntlr@ffff0000 {
|
||||
compatible = "xlnx,xps-bram-if-cntlr-1.00.a";
|
||||
reg = < 0xffff0000 0x10000 >;
|
||||
xlnx,family = "virtex5";
|
||||
} ;
|
||||
xps_intc_0: interrupt-controller@81800000 {
|
||||
#interrupt-cells = <2>;
|
||||
compatible = "xlnx,xps-intc-1.00.a";
|
||||
interrupt-controller ;
|
||||
reg = < 0x81800000 0x10000 >;
|
||||
xlnx,num-intr-inputs = <0xc>;
|
||||
} ;
|
||||
xps_timebase_wdt_1: xps-timebase-wdt@83a00000 {
|
||||
compatible = "xlnx,xps-timebase-wdt-1.00.b";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 2 0 1 2 >;
|
||||
reg = < 0x83a00000 0x10000 >;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,wdt-enable-once = <0>;
|
||||
xlnx,wdt-interval = <0x1e>;
|
||||
} ;
|
||||
xps_timer_1: timer@83c00000 {
|
||||
compatible = "xlnx,xps-timer-1.00.a";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 3 2 >;
|
||||
reg = < 0x83c00000 0x10000 >;
|
||||
xlnx,count-width = <0x20>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gen0-assert = <1>;
|
||||
xlnx,gen1-assert = <1>;
|
||||
xlnx,one-timer-only = <1>;
|
||||
xlnx,trig0-assert = <1>;
|
||||
xlnx,trig1-assert = <1>;
|
||||
} ;
|
||||
} ;
|
||||
} ;
|
|
@ -1,466 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Xilinx ML510 Reference Design support
|
||||
*
|
||||
* This DTS file was created for the ml510_bsb1_pcores_ppc440 reference design.
|
||||
* The reference design contains a bug which prevent PCI DMA from working
|
||||
* properly. A description of the bug is given in the plbv46_pci section. It
|
||||
* needs to be fixed by the user until Xilinx updates their reference design.
|
||||
*
|
||||
* Copyright 2009, Roderick Colenbrander
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "xlnx,ml510-ref-design", "xlnx,virtex440";
|
||||
dcr-parent = <&ppc440_0>;
|
||||
DDR2_SDRAM_DIMM0: memory@0 {
|
||||
device_type = "memory";
|
||||
reg = < 0x0 0x20000000 >;
|
||||
} ;
|
||||
alias {
|
||||
ethernet0 = &Hard_Ethernet_MAC;
|
||||
serial0 = &RS232_Uart_1;
|
||||
} ;
|
||||
chosen {
|
||||
bootargs = "console=ttyS0 root=/dev/ram";
|
||||
stdout-path = "/plb@0/serial@83e00000";
|
||||
} ;
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#cpus = <0x1>;
|
||||
#size-cells = <0>;
|
||||
ppc440_0: cpu@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
clock-frequency = <300000000>;
|
||||
compatible = "PowerPC,440", "ibm,ppc440";
|
||||
d-cache-line-size = <0x20>;
|
||||
d-cache-size = <0x8000>;
|
||||
dcr-access-method = "native";
|
||||
dcr-controller ;
|
||||
device_type = "cpu";
|
||||
i-cache-line-size = <0x20>;
|
||||
i-cache-size = <0x8000>;
|
||||
model = "PowerPC,440";
|
||||
reg = <0>;
|
||||
timebase-frequency = <300000000>;
|
||||
xlnx,apu-control = <0x2000>;
|
||||
xlnx,apu-udi-0 = <0x0>;
|
||||
xlnx,apu-udi-1 = <0x0>;
|
||||
xlnx,apu-udi-10 = <0x0>;
|
||||
xlnx,apu-udi-11 = <0x0>;
|
||||
xlnx,apu-udi-12 = <0x0>;
|
||||
xlnx,apu-udi-13 = <0x0>;
|
||||
xlnx,apu-udi-14 = <0x0>;
|
||||
xlnx,apu-udi-15 = <0x0>;
|
||||
xlnx,apu-udi-2 = <0x0>;
|
||||
xlnx,apu-udi-3 = <0x0>;
|
||||
xlnx,apu-udi-4 = <0x0>;
|
||||
xlnx,apu-udi-5 = <0x0>;
|
||||
xlnx,apu-udi-6 = <0x0>;
|
||||
xlnx,apu-udi-7 = <0x0>;
|
||||
xlnx,apu-udi-8 = <0x0>;
|
||||
xlnx,apu-udi-9 = <0x0>;
|
||||
xlnx,dcr-autolock-enable = <0x1>;
|
||||
xlnx,dcu-rd-ld-cache-plb-prio = <0x0>;
|
||||
xlnx,dcu-rd-noncache-plb-prio = <0x0>;
|
||||
xlnx,dcu-rd-touch-plb-prio = <0x0>;
|
||||
xlnx,dcu-rd-urgent-plb-prio = <0x0>;
|
||||
xlnx,dcu-wr-flush-plb-prio = <0x0>;
|
||||
xlnx,dcu-wr-store-plb-prio = <0x0>;
|
||||
xlnx,dcu-wr-urgent-plb-prio = <0x0>;
|
||||
xlnx,dma0-control = <0x0>;
|
||||
xlnx,dma0-plb-prio = <0x0>;
|
||||
xlnx,dma0-rxchannelctrl = <0x1010000>;
|
||||
xlnx,dma0-rxirqtimer = <0x3ff>;
|
||||
xlnx,dma0-txchannelctrl = <0x1010000>;
|
||||
xlnx,dma0-txirqtimer = <0x3ff>;
|
||||
xlnx,dma1-control = <0x0>;
|
||||
xlnx,dma1-plb-prio = <0x0>;
|
||||
xlnx,dma1-rxchannelctrl = <0x1010000>;
|
||||
xlnx,dma1-rxirqtimer = <0x3ff>;
|
||||
xlnx,dma1-txchannelctrl = <0x1010000>;
|
||||
xlnx,dma1-txirqtimer = <0x3ff>;
|
||||
xlnx,dma2-control = <0x0>;
|
||||
xlnx,dma2-plb-prio = <0x0>;
|
||||
xlnx,dma2-rxchannelctrl = <0x1010000>;
|
||||
xlnx,dma2-rxirqtimer = <0x3ff>;
|
||||
xlnx,dma2-txchannelctrl = <0x1010000>;
|
||||
xlnx,dma2-txirqtimer = <0x3ff>;
|
||||
xlnx,dma3-control = <0x0>;
|
||||
xlnx,dma3-plb-prio = <0x0>;
|
||||
xlnx,dma3-rxchannelctrl = <0x1010000>;
|
||||
xlnx,dma3-rxirqtimer = <0x3ff>;
|
||||
xlnx,dma3-txchannelctrl = <0x1010000>;
|
||||
xlnx,dma3-txirqtimer = <0x3ff>;
|
||||
xlnx,endian-reset = <0x0>;
|
||||
xlnx,generate-plb-timespecs = <0x1>;
|
||||
xlnx,icu-rd-fetch-plb-prio = <0x0>;
|
||||
xlnx,icu-rd-spec-plb-prio = <0x0>;
|
||||
xlnx,icu-rd-touch-plb-prio = <0x0>;
|
||||
xlnx,interconnect-imask = <0xffffffff>;
|
||||
xlnx,mplb-allow-lock-xfer = <0x1>;
|
||||
xlnx,mplb-arb-mode = <0x0>;
|
||||
xlnx,mplb-awidth = <0x20>;
|
||||
xlnx,mplb-counter = <0x500>;
|
||||
xlnx,mplb-dwidth = <0x80>;
|
||||
xlnx,mplb-max-burst = <0x8>;
|
||||
xlnx,mplb-native-dwidth = <0x80>;
|
||||
xlnx,mplb-p2p = <0x0>;
|
||||
xlnx,mplb-prio-dcur = <0x2>;
|
||||
xlnx,mplb-prio-dcuw = <0x3>;
|
||||
xlnx,mplb-prio-icu = <0x4>;
|
||||
xlnx,mplb-prio-splb0 = <0x1>;
|
||||
xlnx,mplb-prio-splb1 = <0x0>;
|
||||
xlnx,mplb-read-pipe-enable = <0x1>;
|
||||
xlnx,mplb-sync-tattribute = <0x0>;
|
||||
xlnx,mplb-wdog-enable = <0x1>;
|
||||
xlnx,mplb-write-pipe-enable = <0x1>;
|
||||
xlnx,mplb-write-post-enable = <0x1>;
|
||||
xlnx,num-dma = <0x0>;
|
||||
xlnx,pir = <0xf>;
|
||||
xlnx,ppc440mc-addr-base = <0x0>;
|
||||
xlnx,ppc440mc-addr-high = <0x1fffffff>;
|
||||
xlnx,ppc440mc-arb-mode = <0x0>;
|
||||
xlnx,ppc440mc-bank-conflict-mask = <0x1800000>;
|
||||
xlnx,ppc440mc-control = <0xf810008f>;
|
||||
xlnx,ppc440mc-max-burst = <0x8>;
|
||||
xlnx,ppc440mc-prio-dcur = <0x2>;
|
||||
xlnx,ppc440mc-prio-dcuw = <0x3>;
|
||||
xlnx,ppc440mc-prio-icu = <0x4>;
|
||||
xlnx,ppc440mc-prio-splb0 = <0x1>;
|
||||
xlnx,ppc440mc-prio-splb1 = <0x0>;
|
||||
xlnx,ppc440mc-row-conflict-mask = <0x7ffe00>;
|
||||
xlnx,ppcdm-asyncmode = <0x0>;
|
||||
xlnx,ppcds-asyncmode = <0x0>;
|
||||
xlnx,user-reset = <0x0>;
|
||||
} ;
|
||||
} ;
|
||||
plb_v46_0: plb@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "xlnx,plb-v46-1.03.a", "simple-bus";
|
||||
ranges ;
|
||||
FLASH: flash@fc000000 {
|
||||
bank-width = <2>;
|
||||
compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash";
|
||||
reg = < 0xfc000000 0x2000000 >;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,include-datawidth-matching-0 = <0x1>;
|
||||
xlnx,include-datawidth-matching-1 = <0x0>;
|
||||
xlnx,include-datawidth-matching-2 = <0x0>;
|
||||
xlnx,include-datawidth-matching-3 = <0x0>;
|
||||
xlnx,include-negedge-ioregs = <0x0>;
|
||||
xlnx,include-plb-ipif = <0x1>;
|
||||
xlnx,include-wrbuf = <0x1>;
|
||||
xlnx,max-mem-width = <0x10>;
|
||||
xlnx,mch-native-dwidth = <0x20>;
|
||||
xlnx,mch-plb-clk-period-ps = <0x2710>;
|
||||
xlnx,mch-splb-awidth = <0x20>;
|
||||
xlnx,mch0-accessbuf-depth = <0x10>;
|
||||
xlnx,mch0-protocol = <0x0>;
|
||||
xlnx,mch0-rddatabuf-depth = <0x10>;
|
||||
xlnx,mch1-accessbuf-depth = <0x10>;
|
||||
xlnx,mch1-protocol = <0x0>;
|
||||
xlnx,mch1-rddatabuf-depth = <0x10>;
|
||||
xlnx,mch2-accessbuf-depth = <0x10>;
|
||||
xlnx,mch2-protocol = <0x0>;
|
||||
xlnx,mch2-rddatabuf-depth = <0x10>;
|
||||
xlnx,mch3-accessbuf-depth = <0x10>;
|
||||
xlnx,mch3-protocol = <0x0>;
|
||||
xlnx,mch3-rddatabuf-depth = <0x10>;
|
||||
xlnx,mem0-width = <0x10>;
|
||||
xlnx,mem1-width = <0x20>;
|
||||
xlnx,mem2-width = <0x20>;
|
||||
xlnx,mem3-width = <0x20>;
|
||||
xlnx,num-banks-mem = <0x1>;
|
||||
xlnx,num-channels = <0x2>;
|
||||
xlnx,priority-mode = <0x0>;
|
||||
xlnx,synch-mem-0 = <0x0>;
|
||||
xlnx,synch-mem-1 = <0x0>;
|
||||
xlnx,synch-mem-2 = <0x0>;
|
||||
xlnx,synch-mem-3 = <0x0>;
|
||||
xlnx,synch-pipedelay-0 = <0x2>;
|
||||
xlnx,synch-pipedelay-1 = <0x2>;
|
||||
xlnx,synch-pipedelay-2 = <0x2>;
|
||||
xlnx,synch-pipedelay-3 = <0x2>;
|
||||
xlnx,tavdv-ps-mem-0 = <0x1adb0>;
|
||||
xlnx,tavdv-ps-mem-1 = <0x3a98>;
|
||||
xlnx,tavdv-ps-mem-2 = <0x3a98>;
|
||||
xlnx,tavdv-ps-mem-3 = <0x3a98>;
|
||||
xlnx,tcedv-ps-mem-0 = <0x1adb0>;
|
||||
xlnx,tcedv-ps-mem-1 = <0x3a98>;
|
||||
xlnx,tcedv-ps-mem-2 = <0x3a98>;
|
||||
xlnx,tcedv-ps-mem-3 = <0x3a98>;
|
||||
xlnx,thzce-ps-mem-0 = <0x88b8>;
|
||||
xlnx,thzce-ps-mem-1 = <0x1b58>;
|
||||
xlnx,thzce-ps-mem-2 = <0x1b58>;
|
||||
xlnx,thzce-ps-mem-3 = <0x1b58>;
|
||||
xlnx,thzoe-ps-mem-0 = <0x1b58>;
|
||||
xlnx,thzoe-ps-mem-1 = <0x1b58>;
|
||||
xlnx,thzoe-ps-mem-2 = <0x1b58>;
|
||||
xlnx,thzoe-ps-mem-3 = <0x1b58>;
|
||||
xlnx,tlzwe-ps-mem-0 = <0x88b8>;
|
||||
xlnx,tlzwe-ps-mem-1 = <0x0>;
|
||||
xlnx,tlzwe-ps-mem-2 = <0x0>;
|
||||
xlnx,tlzwe-ps-mem-3 = <0x0>;
|
||||
xlnx,twc-ps-mem-0 = <0x1adb0>;
|
||||
xlnx,twc-ps-mem-1 = <0x3a98>;
|
||||
xlnx,twc-ps-mem-2 = <0x3a98>;
|
||||
xlnx,twc-ps-mem-3 = <0x3a98>;
|
||||
xlnx,twp-ps-mem-0 = <0x11170>;
|
||||
xlnx,twp-ps-mem-1 = <0x2ee0>;
|
||||
xlnx,twp-ps-mem-2 = <0x2ee0>;
|
||||
xlnx,twp-ps-mem-3 = <0x2ee0>;
|
||||
xlnx,xcl0-linesize = <0x4>;
|
||||
xlnx,xcl0-writexfer = <0x1>;
|
||||
xlnx,xcl1-linesize = <0x4>;
|
||||
xlnx,xcl1-writexfer = <0x1>;
|
||||
xlnx,xcl2-linesize = <0x4>;
|
||||
xlnx,xcl2-writexfer = <0x1>;
|
||||
xlnx,xcl3-linesize = <0x4>;
|
||||
xlnx,xcl3-writexfer = <0x1>;
|
||||
} ;
|
||||
Hard_Ethernet_MAC: xps-ll-temac@81c00000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "xlnx,compound";
|
||||
ethernet@81c00000 {
|
||||
compatible = "xlnx,xps-ll-temac-1.01.b";
|
||||
device_type = "network";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 8 2 >;
|
||||
llink-connected = <&Hard_Ethernet_MAC_fifo>;
|
||||
local-mac-address = [ 02 00 00 00 00 00 ];
|
||||
reg = < 0x81c00000 0x40 >;
|
||||
xlnx,bus2core-clk-ratio = <0x1>;
|
||||
xlnx,phy-type = <0x3>;
|
||||
xlnx,phyaddr = <0x1>;
|
||||
xlnx,rxcsum = <0x0>;
|
||||
xlnx,rxfifo = <0x8000>;
|
||||
xlnx,temac-type = <0x0>;
|
||||
xlnx,txcsum = <0x0>;
|
||||
xlnx,txfifo = <0x8000>;
|
||||
} ;
|
||||
} ;
|
||||
Hard_Ethernet_MAC_fifo: xps-ll-fifo@81a00000 {
|
||||
compatible = "xlnx,xps-ll-fifo-1.01.a";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 6 2 >;
|
||||
reg = < 0x81a00000 0x10000 >;
|
||||
xlnx,family = "virtex5";
|
||||
} ;
|
||||
IIC_EEPROM: i2c@81600000 {
|
||||
compatible = "xlnx,xps-iic-2.00.a";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 9 2 >;
|
||||
reg = < 0x81600000 0x10000 >;
|
||||
xlnx,clk-freq = <0x5f5e100>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gpo-width = <0x1>;
|
||||
xlnx,iic-freq = <0x186a0>;
|
||||
xlnx,scl-inertial-delay = <0x5>;
|
||||
xlnx,sda-inertial-delay = <0x5>;
|
||||
xlnx,ten-bit-adr = <0x0>;
|
||||
} ;
|
||||
LCD_OPTIONAL: gpio@81420000 {
|
||||
compatible = "xlnx,xps-gpio-1.00.a";
|
||||
reg = < 0x81420000 0x10000 >;
|
||||
xlnx,all-inputs = <0x0>;
|
||||
xlnx,all-inputs-2 = <0x0>;
|
||||
xlnx,dout-default = <0x0>;
|
||||
xlnx,dout-default-2 = <0x0>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gpio-width = <0xb>;
|
||||
xlnx,interrupt-present = <0x0>;
|
||||
xlnx,is-bidir = <0x1>;
|
||||
xlnx,is-bidir-2 = <0x1>;
|
||||
xlnx,is-dual = <0x0>;
|
||||
xlnx,tri-default = <0xffffffff>;
|
||||
xlnx,tri-default-2 = <0xffffffff>;
|
||||
} ;
|
||||
LEDs_4Bit: gpio@81400000 {
|
||||
compatible = "xlnx,xps-gpio-1.00.a";
|
||||
reg = < 0x81400000 0x10000 >;
|
||||
xlnx,all-inputs = <0x0>;
|
||||
xlnx,all-inputs-2 = <0x0>;
|
||||
xlnx,dout-default = <0x0>;
|
||||
xlnx,dout-default-2 = <0x0>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gpio-width = <0x4>;
|
||||
xlnx,interrupt-present = <0x0>;
|
||||
xlnx,is-bidir = <0x1>;
|
||||
xlnx,is-bidir-2 = <0x1>;
|
||||
xlnx,is-dual = <0x0>;
|
||||
xlnx,tri-default = <0xffffffff>;
|
||||
xlnx,tri-default-2 = <0xffffffff>;
|
||||
} ;
|
||||
RS232_Uart_1: serial@83e00000 {
|
||||
clock-frequency = <100000000>;
|
||||
compatible = "xlnx,xps-uart16550-2.00.b", "ns16550";
|
||||
current-speed = <9600>;
|
||||
device_type = "serial";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 11 2 >;
|
||||
reg = < 0x83e00000 0x10000 >;
|
||||
reg-offset = <0x1003>;
|
||||
reg-shift = <2>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,has-external-rclk = <0x0>;
|
||||
xlnx,has-external-xin = <0x0>;
|
||||
xlnx,is-a-16550 = <0x1>;
|
||||
} ;
|
||||
SPI_EEPROM: xps-spi@feff8000 {
|
||||
compatible = "xlnx,xps-spi-2.00.b";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 10 2 >;
|
||||
reg = < 0xfeff8000 0x80 >;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,fifo-exist = <0x1>;
|
||||
xlnx,num-ss-bits = <0x1>;
|
||||
xlnx,num-transfer-bits = <0x8>;
|
||||
xlnx,sck-ratio = <0x80>;
|
||||
} ;
|
||||
SysACE_CompactFlash: sysace@83600000 {
|
||||
compatible = "xlnx,xps-sysace-1.00.a";
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupts = < 7 2 >;
|
||||
reg = < 0x83600000 0x10000 >;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,mem-width = <0x10>;
|
||||
} ;
|
||||
plbv46_pci_0: plbv46-pci@85e00000 {
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
compatible = "xlnx,plbv46-pci-1.03.a";
|
||||
device_type = "pci";
|
||||
reg = < 0x85e00000 0x10000 >;
|
||||
|
||||
/*
|
||||
* The default ML510 BSB has C_IPIFBAR2PCIBAR_0 set to
|
||||
* 0 which means that a read/write to the memory mapped
|
||||
* i/o region (which starts at 0xa0000000) for pci
|
||||
* bar 0 on the plb side translates to 0.
|
||||
* It is important to set this value to 0xa0000000, so
|
||||
* that inbound and outbound pci transactions work
|
||||
* properly including DMA.
|
||||
*/
|
||||
ranges = <0x02000000 0 0xa0000000 0xa0000000 0 0x20000000
|
||||
0x01000000 0 0x00000000 0xf0000000 0 0x00010000>;
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
interrupt-map-mask = <0xff00 0x0 0x0 0x7>;
|
||||
interrupt-map = <
|
||||
/* IRQ mapping for pci slots and ALI M1533
|
||||
* periperhals. In total there are 5 interrupt
|
||||
* lines connected to a xps_intc controller.
|
||||
* Four of them are PCI IRQ A, B, C, D and
|
||||
* which correspond to respectively xpx_intc
|
||||
* 5, 4, 3 and 2. The fifth interrupt line is
|
||||
* connected to the south bridge and this one
|
||||
* uses irq 1 and is active high instead of
|
||||
* active low.
|
||||
*
|
||||
* The M1533 contains various peripherals
|
||||
* including AC97 audio, a modem, USB, IDE and
|
||||
* some power management stuff. The modem
|
||||
* isn't connected on the ML510 and the power
|
||||
* management core also isn't used.
|
||||
*/
|
||||
|
||||
/* IDSEL 0x16 / dev=6, bus=0 / PCI slot 3 */
|
||||
0x3000 0 0 1 &xps_intc_0 3 2
|
||||
0x3000 0 0 2 &xps_intc_0 2 2
|
||||
0x3000 0 0 3 &xps_intc_0 5 2
|
||||
0x3000 0 0 4 &xps_intc_0 4 2
|
||||
|
||||
/* IDSEL 0x13 / dev=3, bus=1 / PCI slot 4 */
|
||||
/*
|
||||
0x11800 0 0 1 &xps_intc_0 5 0 2
|
||||
0x11800 0 0 2 &xps_intc_0 4 0 2
|
||||
0x11800 0 0 3 &xps_intc_0 3 0 2
|
||||
0x11800 0 0 4 &xps_intc_0 2 0 2
|
||||
*/
|
||||
|
||||
/* According to the datasheet + schematic
|
||||
* ABCD [FPGA] of slot 5 is mapped to DABC.
|
||||
* Testing showed that at least A maps to B,
|
||||
* the mapping of the other pins is a guess
|
||||
* and for that reason the lines have been
|
||||
* commented out.
|
||||
*/
|
||||
/* IDSEL 0x15 / dev=5, bus=0 / PCI slot 5 */
|
||||
0x2800 0 0 1 &xps_intc_0 4 2
|
||||
/*
|
||||
0x2800 0 0 2 &xps_intc_0 3 2
|
||||
0x2800 0 0 3 &xps_intc_0 2 2
|
||||
0x2800 0 0 4 &xps_intc_0 5 2
|
||||
*/
|
||||
|
||||
/* IDSEL 0x12 / dev=2, bus=1 / PCI slot 6 */
|
||||
/*
|
||||
0x11000 0 0 1 &xps_intc_0 4 0 2
|
||||
0x11000 0 0 2 &xps_intc_0 3 0 2
|
||||
0x11000 0 0 3 &xps_intc_0 2 0 2
|
||||
0x11000 0 0 4 &xps_intc_0 5 0 2
|
||||
*/
|
||||
|
||||
/* IDSEL 0x11 / dev=1, bus=0 / AC97 audio */
|
||||
0x0800 0 0 1 &i8259 7 2
|
||||
|
||||
/* IDSEL 0x1b / dev=11, bus=0 / IDE */
|
||||
0x5800 0 0 1 &i8259 14 2
|
||||
|
||||
/* IDSEL 0x1f / dev 15, bus=0 / 2x USB 1.1 */
|
||||
0x7800 0 0 1 &i8259 7 2
|
||||
>;
|
||||
ali_m1533 {
|
||||
#size-cells = <1>;
|
||||
#address-cells = <2>;
|
||||
i8259: interrupt-controller@20 {
|
||||
reg = <1 0x20 2
|
||||
1 0xa0 2
|
||||
1 0x4d0 2>;
|
||||
interrupt-controller;
|
||||
device_type = "interrupt-controller";
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
compatible = "chrp,iic";
|
||||
|
||||
/* south bridge irq is active high */
|
||||
interrupts = <1 3>;
|
||||
interrupt-parent = <&xps_intc_0>;
|
||||
};
|
||||
};
|
||||
} ;
|
||||
xps_bram_if_cntlr_1: xps-bram-if-cntlr@ffff0000 {
|
||||
compatible = "xlnx,xps-bram-if-cntlr-1.00.a";
|
||||
reg = < 0xffff0000 0x10000 >;
|
||||
xlnx,family = "virtex5";
|
||||
} ;
|
||||
xps_intc_0: interrupt-controller@81800000 {
|
||||
#interrupt-cells = <0x2>;
|
||||
compatible = "xlnx,xps-intc-1.00.a";
|
||||
interrupt-controller ;
|
||||
reg = < 0x81800000 0x10000 >;
|
||||
xlnx,num-intr-inputs = <0xc>;
|
||||
} ;
|
||||
xps_tft_0: tft@86e00000 {
|
||||
compatible = "xlnx,xps-tft-1.00.a";
|
||||
reg = < 0x86e00000 0x10000 >;
|
||||
xlnx,dcr-splb-slave-if = <0x1>;
|
||||
xlnx,default-tft-base-addr = <0x0>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,i2c-slave-addr = <0x76>;
|
||||
xlnx,mplb-awidth = <0x20>;
|
||||
xlnx,mplb-dwidth = <0x80>;
|
||||
xlnx,mplb-native-dwidth = <0x40>;
|
||||
xlnx,mplb-smallest-slave = <0x20>;
|
||||
xlnx,tft-interface = <0x1>;
|
||||
} ;
|
||||
} ;
|
||||
} ;
|
|
@ -88,7 +88,6 @@ int serial_console_init(void);
|
|||
int ns16550_console_init(void *devp, struct serial_console_data *scdp);
|
||||
int cpm_console_init(void *devp, struct serial_console_data *scdp);
|
||||
int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp);
|
||||
int uartlite_console_init(void *devp, struct serial_console_data *scdp);
|
||||
int opal_console_init(void *devp, struct serial_console_data *scdp);
|
||||
void *simple_alloc_init(char *base, unsigned long heap_size,
|
||||
unsigned long granularity, unsigned long max_allocs);
|
||||
|
|
|
@ -132,11 +132,6 @@ int serial_console_init(void)
|
|||
else if (dt_is_compatible(devp, "fsl,mpc5200-psc-uart"))
|
||||
rc = mpc5200_psc_console_init(devp, &serial_cd);
|
||||
#endif
|
||||
#ifdef CONFIG_XILINX_VIRTEX
|
||||
else if (dt_is_compatible(devp, "xlnx,opb-uartlite-1.00.b") ||
|
||||
dt_is_compatible(devp, "xlnx,xps-uartlite-1.00.a"))
|
||||
rc = uartlite_console_init(devp, &serial_cd);
|
||||
#endif
|
||||
#ifdef CONFIG_PPC64_BOOT_WRAPPER
|
||||
else if (dt_is_compatible(devp, "ibm,opal-console-raw"))
|
||||
rc = opal_console_init(devp, &serial_cd);
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
/*
|
||||
* Xilinx UARTLITE bootloader driver
|
||||
*
|
||||
* Copyright (C) 2007 Secret Lab Technologies Ltd.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include "types.h"
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
#include "io.h"
|
||||
#include "ops.h"
|
||||
|
||||
#define ULITE_RX 0x00
|
||||
#define ULITE_TX 0x04
|
||||
#define ULITE_STATUS 0x08
|
||||
#define ULITE_CONTROL 0x0c
|
||||
|
||||
#define ULITE_STATUS_RXVALID 0x01
|
||||
#define ULITE_STATUS_TXFULL 0x08
|
||||
|
||||
#define ULITE_CONTROL_RST_RX 0x02
|
||||
|
||||
static void * reg_base;
|
||||
|
||||
static int uartlite_open(void)
|
||||
{
|
||||
/* Clear the RX FIFO */
|
||||
out_be32(reg_base + ULITE_CONTROL, ULITE_CONTROL_RST_RX);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void uartlite_putc(unsigned char c)
|
||||
{
|
||||
u32 reg = ULITE_STATUS_TXFULL;
|
||||
while (reg & ULITE_STATUS_TXFULL) /* spin on TXFULL bit */
|
||||
reg = in_be32(reg_base + ULITE_STATUS);
|
||||
out_be32(reg_base + ULITE_TX, c);
|
||||
}
|
||||
|
||||
static unsigned char uartlite_getc(void)
|
||||
{
|
||||
u32 reg = 0;
|
||||
while (!(reg & ULITE_STATUS_RXVALID)) /* spin waiting for RXVALID bit */
|
||||
reg = in_be32(reg_base + ULITE_STATUS);
|
||||
return in_be32(reg_base + ULITE_RX);
|
||||
}
|
||||
|
||||
static u8 uartlite_tstc(void)
|
||||
{
|
||||
u32 reg = in_be32(reg_base + ULITE_STATUS);
|
||||
return reg & ULITE_STATUS_RXVALID;
|
||||
}
|
||||
|
||||
int uartlite_console_init(void *devp, struct serial_console_data *scdp)
|
||||
{
|
||||
int n;
|
||||
unsigned long reg_phys;
|
||||
|
||||
n = getprop(devp, "virtual-reg", ®_base, sizeof(reg_base));
|
||||
if (n != sizeof(reg_base)) {
|
||||
if (!dt_xlate_reg(devp, 0, ®_phys, NULL))
|
||||
return -1;
|
||||
|
||||
reg_base = (void *)reg_phys;
|
||||
}
|
||||
|
||||
scdp->open = uartlite_open;
|
||||
scdp->putc = uartlite_putc;
|
||||
scdp->getc = uartlite_getc;
|
||||
scdp->tstc = uartlite_tstc;
|
||||
scdp->close = NULL;
|
||||
return 0;
|
||||
}
|
|
@ -1,97 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* The platform specific code for virtex devices since a boot loader is not
|
||||
* always used.
|
||||
*
|
||||
* (C) Copyright 2008 Xilinx, Inc.
|
||||
*/
|
||||
|
||||
#include "ops.h"
|
||||
#include "io.h"
|
||||
#include "stdio.h"
|
||||
|
||||
#define UART_DLL 0 /* Out: Divisor Latch Low */
|
||||
#define UART_DLM 1 /* Out: Divisor Latch High */
|
||||
#define UART_FCR 2 /* Out: FIFO Control Register */
|
||||
#define UART_FCR_CLEAR_RCVR 0x02 /* Clear the RCVR FIFO */
|
||||
#define UART_FCR_CLEAR_XMIT 0x04 /* Clear the XMIT FIFO */
|
||||
#define UART_LCR 3 /* Out: Line Control Register */
|
||||
#define UART_MCR 4 /* Out: Modem Control Register */
|
||||
#define UART_MCR_RTS 0x02 /* RTS complement */
|
||||
#define UART_MCR_DTR 0x01 /* DTR complement */
|
||||
#define UART_LCR_DLAB 0x80 /* Divisor latch access bit */
|
||||
#define UART_LCR_WLEN8 0x03 /* Wordlength: 8 bits */
|
||||
|
||||
static int virtex_ns16550_console_init(void *devp)
|
||||
{
|
||||
unsigned char *reg_base;
|
||||
u32 reg_shift, reg_offset, clk, spd;
|
||||
u16 divisor;
|
||||
int n;
|
||||
|
||||
if (dt_get_virtual_reg(devp, (void **)®_base, 1) < 1)
|
||||
return -1;
|
||||
|
||||
n = getprop(devp, "reg-offset", ®_offset, sizeof(reg_offset));
|
||||
if (n == sizeof(reg_offset))
|
||||
reg_base += reg_offset;
|
||||
|
||||
n = getprop(devp, "reg-shift", ®_shift, sizeof(reg_shift));
|
||||
if (n != sizeof(reg_shift))
|
||||
reg_shift = 0;
|
||||
|
||||
n = getprop(devp, "current-speed", (void *)&spd, sizeof(spd));
|
||||
if (n != sizeof(spd))
|
||||
spd = 9600;
|
||||
|
||||
/* should there be a default clock rate?*/
|
||||
n = getprop(devp, "clock-frequency", (void *)&clk, sizeof(clk));
|
||||
if (n != sizeof(clk))
|
||||
return -1;
|
||||
|
||||
divisor = clk / (16 * spd);
|
||||
|
||||
/* Access baud rate */
|
||||
out_8(reg_base + (UART_LCR << reg_shift), UART_LCR_DLAB);
|
||||
|
||||
/* Baud rate based on input clock */
|
||||
out_8(reg_base + (UART_DLL << reg_shift), divisor & 0xFF);
|
||||
out_8(reg_base + (UART_DLM << reg_shift), divisor >> 8);
|
||||
|
||||
/* 8 data, 1 stop, no parity */
|
||||
out_8(reg_base + (UART_LCR << reg_shift), UART_LCR_WLEN8);
|
||||
|
||||
/* RTS/DTR */
|
||||
out_8(reg_base + (UART_MCR << reg_shift), UART_MCR_RTS | UART_MCR_DTR);
|
||||
|
||||
/* Clear transmitter and receiver */
|
||||
out_8(reg_base + (UART_FCR << reg_shift),
|
||||
UART_FCR_CLEAR_XMIT | UART_FCR_CLEAR_RCVR);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* For virtex, the kernel may be loaded without using a bootloader and if so
|
||||
some UARTs need more setup than is provided in the normal console init
|
||||
*/
|
||||
int platform_specific_init(void)
|
||||
{
|
||||
void *devp;
|
||||
char devtype[MAX_PROP_LEN];
|
||||
char path[MAX_PATH_LEN];
|
||||
|
||||
devp = finddevice("/chosen");
|
||||
if (devp == NULL)
|
||||
return -1;
|
||||
|
||||
if (getprop(devp, "linux,stdout-path", path, MAX_PATH_LEN) > 0) {
|
||||
devp = finddevice(path);
|
||||
if (devp == NULL)
|
||||
return -1;
|
||||
|
||||
if ((getprop(devp, "device_type", devtype, sizeof(devtype)) > 0)
|
||||
&& !strcmp(devtype, "serial")
|
||||
&& (dt_is_compatible(devp, "ns16550")))
|
||||
virtex_ns16550_console_init(devp);
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#include "ppc_asm.h"
|
||||
|
||||
.text
|
||||
.global _zimage_start
|
||||
_zimage_start:
|
||||
|
||||
/* PPC errata 213: needed by Virtex-4 FX */
|
||||
mfccr0 0
|
||||
oris 0,0,0x50000000@h
|
||||
mtccr0 0
|
||||
|
||||
/*
|
||||
* Invalidate the data cache if the data cache is turned off.
|
||||
* - The 405 core does not invalidate the data cache on power-up
|
||||
* or reset but does turn off the data cache. We cannot assume
|
||||
* that the cache contents are valid.
|
||||
* - If the data cache is turned on this must have been done by
|
||||
* a bootloader and we assume that the cache contents are
|
||||
* valid.
|
||||
*/
|
||||
mfdccr r9
|
||||
cmplwi r9,0
|
||||
bne 2f
|
||||
lis r9,0
|
||||
li r8,256
|
||||
mtctr r8
|
||||
1: dccci r0,r9
|
||||
addi r9,r9,0x20
|
||||
bdnz 1b
|
||||
2: b _zimage_start_lib
|
|
@ -324,14 +324,6 @@ adder875-redboot)
|
|||
platformo="$object/fixed-head.o $object/redboot-8xx.o"
|
||||
binary=y
|
||||
;;
|
||||
simpleboot-virtex405-*)
|
||||
platformo="$object/virtex405-head.o $object/simpleboot.o $object/virtex.o"
|
||||
binary=y
|
||||
;;
|
||||
simpleboot-virtex440-*)
|
||||
platformo="$object/fixed-head.o $object/simpleboot.o $object/virtex.o"
|
||||
binary=y
|
||||
;;
|
||||
simpleboot-*)
|
||||
platformo="$object/fixed-head.o $object/simpleboot.o"
|
||||
binary=y
|
||||
|
|
|
@ -1,75 +0,0 @@
|
|||
CONFIG_40x=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_WALNUT is not set
|
||||
CONFIG_XILINX_VIRTEX_GENERIC_BOARD=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_PCI=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_XILINX_SYSACE=y
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_SERIO_XILINX_XPS_PS2=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_UARTLITE=y
|
||||
CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||
CONFIG_XILINX_HWICAP=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_XILINX=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_XILINX=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_CRAMFS=y
|
||||
CONFIG_ROMFS_FS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ASCII=m
|
||||
CONFIG_NLS_ISO8859_1=m
|
||||
CONFIG_NLS_UTF8=m
|
||||
CONFIG_CRC_CCITT=y
|
||||
CONFIG_FONTS=y
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
|
@ -1,74 +0,0 @@
|
|||
CONFIG_44x=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_XILINX_SYSACE=y
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_SERIO_XILINX_XPS_PS2=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_UARTLITE=y
|
||||
CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||
CONFIG_XILINX_HWICAP=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_XILINX=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_XILINX=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_CRAMFS=y
|
||||
CONFIG_ROMFS_FS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ASCII=m
|
||||
CONFIG_NLS_ISO8859_1=m
|
||||
CONFIG_NLS_UTF8=m
|
||||
CONFIG_CRC_CCITT=y
|
||||
CONFIG_FONTS=y
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
|
@ -14,7 +14,6 @@ CONFIG_EP405=y
|
|||
CONFIG_HOTFOOT=y
|
||||
CONFIG_KILAUEA=y
|
||||
CONFIG_MAKALU=y
|
||||
CONFIG_XILINX_VIRTEX_GENERIC_BOARD=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
@ -37,33 +36,26 @@ CONFIG_MTD_UBI=m
|
|||
CONFIG_MTD_UBI_GLUEBI=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=35000
|
||||
CONFIG_XILINX_SYSACE=m
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_IBM_EMAC=y
|
||||
# CONFIG_INPUT is not set
|
||||
CONFIG_SERIO=m
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_SERIO_XILINX_XPS_PS2=m
|
||||
# CONFIG_VT is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_UARTLITE=y
|
||||
CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_XILINX_HWICAP=m
|
||||
CONFIG_I2C=m
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_GPIO=m
|
||||
CONFIG_I2C_IBM_IIC=m
|
||||
CONFIG_GPIO_XILINX=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_FB=m
|
||||
CONFIG_FB_XILINX=m
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT4_FS=m
|
||||
CONFIG_VFAT_FS=m
|
||||
|
|
|
@ -22,7 +22,6 @@ CONFIG_GLACIER=y
|
|||
CONFIG_REDWOOD=y
|
||||
CONFIG_EIGER=y
|
||||
CONFIG_YOSEMITE=y
|
||||
CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y
|
||||
CONFIG_PPC4xx_GPIO=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_NET=y
|
||||
|
@ -46,7 +45,6 @@ CONFIG_MTD_UBI=m
|
|||
CONFIG_MTD_UBI_GLUEBI=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=35000
|
||||
CONFIG_XILINX_SYSACE=m
|
||||
CONFIG_SCSI=m
|
||||
CONFIG_BLK_DEV_SD=m
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
|
@ -57,7 +55,6 @@ CONFIG_IBM_EMAC=y
|
|||
CONFIG_SERIO=m
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
CONFIG_SERIO_XILINX_XPS_PS2=m
|
||||
# CONFIG_VT is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
|
@ -65,18 +62,13 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
|||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_UARTLITE=y
|
||||
CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_XILINX_HWICAP=m
|
||||
CONFIG_I2C=m
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_GPIO=m
|
||||
CONFIG_I2C_IBM_IIC=m
|
||||
CONFIG_GPIO_XILINX=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_FB=m
|
||||
CONFIG_FB_XILINX=m
|
||||
CONFIG_USB=m
|
||||
CONFIG_USB_EHCI_HCD=m
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Xilinx intc external definitions
|
||||
*
|
||||
* Copyright 2007 Secret Lab Technologies Ltd.
|
||||
*/
|
||||
#ifndef _ASM_POWERPC_XILINX_INTC_H
|
||||
#define _ASM_POWERPC_XILINX_INTC_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
extern void __init xilinx_intc_init_tree(void);
|
||||
extern unsigned int xintc_get_irq(void);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _ASM_POWERPC_XILINX_INTC_H */
|
|
@ -1,21 +0,0 @@
|
|||
/*
|
||||
* Xilinx pci external definitions
|
||||
*
|
||||
* Copyright 2009 Roderick Colenbrander
|
||||
* Copyright 2009 Secret Lab Technologies Ltd.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#ifndef INCLUDE_XILINX_PCI
|
||||
#define INCLUDE_XILINX_PCI
|
||||
|
||||
#ifdef CONFIG_XILINX_PCI
|
||||
extern void __init xilinx_pci_init(void);
|
||||
#else
|
||||
static inline void __init xilinx_pci_init(void) { return; }
|
||||
#endif
|
||||
|
||||
#endif /* INCLUDE_XILINX_PCI */
|
|
@ -1385,32 +1385,6 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||
.machine_check = machine_check_4xx,
|
||||
.platform = "ppc405",
|
||||
},
|
||||
{ /* Xilinx Virtex-II Pro */
|
||||
.pvr_mask = 0xfffff000,
|
||||
.pvr_value = 0x20010000,
|
||||
.cpu_name = "Virtex-II Pro",
|
||||
.cpu_features = CPU_FTRS_40X,
|
||||
.cpu_user_features = PPC_FEATURE_32 |
|
||||
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
||||
.mmu_features = MMU_FTR_TYPE_40x,
|
||||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.machine_check = machine_check_4xx,
|
||||
.platform = "ppc405",
|
||||
},
|
||||
{ /* Xilinx Virtex-4 FX */
|
||||
.pvr_mask = 0xfffff000,
|
||||
.pvr_value = 0x20011000,
|
||||
.cpu_name = "Virtex-4 FX",
|
||||
.cpu_features = CPU_FTRS_40X,
|
||||
.cpu_user_features = PPC_FEATURE_32 |
|
||||
PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_4xxMAC,
|
||||
.mmu_features = MMU_FTR_TYPE_40x,
|
||||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.machine_check = machine_check_4xx,
|
||||
.platform = "ppc405",
|
||||
},
|
||||
{ /* 405EP */
|
||||
.pvr_mask = 0xffff0000,
|
||||
.pvr_value = 0x51210000,
|
||||
|
@ -1800,19 +1774,6 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||
.machine_check = machine_check_440A,
|
||||
.platform = "ppc440",
|
||||
},
|
||||
{ /* 440 in Xilinx Virtex-5 FXT */
|
||||
.pvr_mask = 0xfffffff0,
|
||||
.pvr_value = 0x7ff21910,
|
||||
.cpu_name = "440 in Virtex-5 FXT",
|
||||
.cpu_features = CPU_FTRS_44X,
|
||||
.cpu_user_features = COMMON_USER_BOOKE,
|
||||
.mmu_features = MMU_FTR_TYPE_44x,
|
||||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.cpu_setup = __setup_cpu_440x5,
|
||||
.machine_check = machine_check_440A,
|
||||
.platform = "ppc440",
|
||||
},
|
||||
{ /* 460EX */
|
||||
.pvr_mask = 0xffff0006,
|
||||
.pvr_value = 0x13020002,
|
||||
|
|
|
@ -55,23 +55,6 @@ config WALNUT
|
|||
help
|
||||
This option enables support for the IBM PPC405GP evaluation board.
|
||||
|
||||
config XILINX_VIRTEX_GENERIC_BOARD
|
||||
bool "Generic Xilinx Virtex board"
|
||||
depends on 40x
|
||||
select XILINX_VIRTEX_II_PRO
|
||||
select XILINX_VIRTEX_4_FX
|
||||
select XILINX_INTC
|
||||
help
|
||||
This option enables generic support for Xilinx Virtex based boards.
|
||||
|
||||
The generic virtex board support matches any device tree which
|
||||
specifies 'xilinx,virtex' in its compatible field. This includes
|
||||
the Xilinx ML3xx and ML4xx reference designs using the powerpc
|
||||
core.
|
||||
|
||||
Most Virtex designs should use this unless it needs to do some
|
||||
special configuration at board probe time.
|
||||
|
||||
config OBS600
|
||||
bool "OpenBlockS 600"
|
||||
depends on 40x
|
||||
|
@ -109,20 +92,6 @@ config 405EZ
|
|||
select IBM_EMAC_MAL_CLR_ICINTSTAT if IBM_EMAC
|
||||
select IBM_EMAC_MAL_COMMON_ERR if IBM_EMAC
|
||||
|
||||
config XILINX_VIRTEX
|
||||
bool
|
||||
select DEFAULT_UIMAGE
|
||||
|
||||
config XILINX_VIRTEX_II_PRO
|
||||
bool
|
||||
select XILINX_VIRTEX
|
||||
select IBM405_ERR77
|
||||
select IBM405_ERR51
|
||||
|
||||
config XILINX_VIRTEX_4_FX
|
||||
bool
|
||||
select XILINX_VIRTEX
|
||||
|
||||
config STB03xxx
|
||||
bool
|
||||
select IBM405_ERR77
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-$(CONFIG_WALNUT) += walnut.o
|
||||
obj-$(CONFIG_XILINX_VIRTEX_GENERIC_BOARD) += virtex.o
|
||||
obj-$(CONFIG_EP405) += ep405.o
|
||||
obj-$(CONFIG_PPC40x_SIMPLE) += ppc40x_simple.o
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
* Xilinx Virtex (IIpro & 4FX) based board support
|
||||
*
|
||||
* Copyright 2007 Secret Lab Technologies Ltd.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/xilinx_intc.h>
|
||||
#include <asm/xilinx_pci.h>
|
||||
#include <asm/ppc4xx.h>
|
||||
|
||||
static const struct of_device_id xilinx_of_bus_ids[] __initconst = {
|
||||
{ .compatible = "xlnx,plb-v46-1.00.a", },
|
||||
{ .compatible = "xlnx,plb-v34-1.01.a", },
|
||||
{ .compatible = "xlnx,plb-v34-1.02.a", },
|
||||
{ .compatible = "xlnx,opb-v20-1.10.c", },
|
||||
{ .compatible = "xlnx,dcr-v29-1.00.a", },
|
||||
{ .compatible = "xlnx,compound", },
|
||||
{}
|
||||
};
|
||||
|
||||
static int __init virtex_device_probe(void)
|
||||
{
|
||||
of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
machine_device_initcall(virtex, virtex_device_probe);
|
||||
|
||||
static int __init virtex_probe(void)
|
||||
{
|
||||
if (!of_machine_is_compatible("xlnx,virtex"))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
define_machine(virtex) {
|
||||
.name = "Xilinx Virtex",
|
||||
.probe = virtex_probe,
|
||||
.setup_arch = xilinx_pci_init,
|
||||
.init_IRQ = xilinx_intc_init_tree,
|
||||
.get_irq = xintc_get_irq,
|
||||
.restart = ppc4xx_reset_system,
|
||||
.calibrate_decr = generic_calibrate_decr,
|
||||
};
|
|
@ -232,33 +232,6 @@ config ICON
|
|||
help
|
||||
This option enables support for the AMCC PPC440SPe evaluation board.
|
||||
|
||||
config XILINX_VIRTEX440_GENERIC_BOARD
|
||||
bool "Generic Xilinx Virtex 5 FXT board support"
|
||||
depends on 44x
|
||||
select XILINX_VIRTEX_5_FXT
|
||||
select XILINX_INTC
|
||||
help
|
||||
This option enables generic support for Xilinx Virtex based boards
|
||||
that use a 440 based processor in the Virtex 5 FXT FPGA architecture.
|
||||
|
||||
The generic virtex board support matches any device tree which
|
||||
specifies 'xlnx,virtex440' in its compatible field. This includes
|
||||
the Xilinx ML5xx reference designs using the powerpc core.
|
||||
|
||||
Most Virtex 5 designs should use this unless it needs to do some
|
||||
special configuration at board probe time.
|
||||
|
||||
config XILINX_ML510
|
||||
bool "Xilinx ML510 extra support"
|
||||
depends on XILINX_VIRTEX440_GENERIC_BOARD
|
||||
select HAVE_PCI
|
||||
select XILINX_PCI if PCI
|
||||
select PPC_INDIRECT_PCI if PCI
|
||||
select PPC_I8259 if PCI
|
||||
help
|
||||
This option enables extra support for features on the Xilinx ML510
|
||||
board. The ML510 has a PCI bus with ALI south bridge.
|
||||
|
||||
config PPC44x_SIMPLE
|
||||
bool "Simple PowerPC 44x board support"
|
||||
depends on 44x
|
||||
|
@ -354,13 +327,3 @@ config 476FPE_ERR46
|
|||
config IBM440EP_ERR42
|
||||
bool
|
||||
|
||||
# Xilinx specific config options.
|
||||
config XILINX_VIRTEX
|
||||
bool
|
||||
select DEFAULT_UIMAGE
|
||||
|
||||
# Xilinx Virtex 5 FXT FPGA architecture, selected by a Xilinx board above
|
||||
config XILINX_VIRTEX_5_FXT
|
||||
bool
|
||||
select XILINX_VIRTEX
|
||||
|
||||
|
|
|
@ -7,8 +7,6 @@ obj-$(CONFIG_PPC44x_SIMPLE) += ppc44x_simple.o
|
|||
obj-$(CONFIG_EBONY) += ebony.o
|
||||
obj-$(CONFIG_SAM440EP) += sam440ep.o
|
||||
obj-$(CONFIG_WARP) += warp.o
|
||||
obj-$(CONFIG_XILINX_VIRTEX_5_FXT) += virtex.o
|
||||
obj-$(CONFIG_XILINX_ML510) += virtex_ml510.o
|
||||
obj-$(CONFIG_ISS4xx) += iss4xx.o
|
||||
obj-$(CONFIG_CANYONLANDS)+= canyonlands.o
|
||||
obj-$(CONFIG_CURRITUCK) += ppc476.o
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
/*
|
||||
* Xilinx Virtex 5FXT based board support, derived from
|
||||
* the Xilinx Virtex (IIpro & 4FX) based board support
|
||||
*
|
||||
* Copyright 2007 Secret Lab Technologies Ltd.
|
||||
* Copyright 2008 Xilinx, Inc.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/time.h>
|
||||
#include <asm/xilinx_intc.h>
|
||||
#include <asm/xilinx_pci.h>
|
||||
#include <asm/reg.h>
|
||||
#include <asm/ppc4xx.h>
|
||||
#include "44x.h"
|
||||
|
||||
static const struct of_device_id xilinx_of_bus_ids[] __initconst = {
|
||||
{ .compatible = "simple-bus", },
|
||||
{ .compatible = "xlnx,plb-v46-1.00.a", },
|
||||
{ .compatible = "xlnx,plb-v46-1.02.a", },
|
||||
{ .compatible = "xlnx,plb-v34-1.01.a", },
|
||||
{ .compatible = "xlnx,plb-v34-1.02.a", },
|
||||
{ .compatible = "xlnx,opb-v20-1.10.c", },
|
||||
{ .compatible = "xlnx,dcr-v29-1.00.a", },
|
||||
{ .compatible = "xlnx,compound", },
|
||||
{}
|
||||
};
|
||||
|
||||
static int __init virtex_device_probe(void)
|
||||
{
|
||||
of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
machine_device_initcall(virtex, virtex_device_probe);
|
||||
|
||||
static int __init virtex_probe(void)
|
||||
{
|
||||
if (!of_machine_is_compatible("xlnx,virtex440"))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
define_machine(virtex) {
|
||||
.name = "Xilinx Virtex440",
|
||||
.probe = virtex_probe,
|
||||
.setup_arch = xilinx_pci_init,
|
||||
.init_IRQ = xilinx_intc_init_tree,
|
||||
.get_irq = xintc_get_irq,
|
||||
.calibrate_decr = generic_calibrate_decr,
|
||||
.restart = ppc4xx_reset_system,
|
||||
};
|
|
@ -1,30 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <asm/i8259.h>
|
||||
#include <linux/pci.h>
|
||||
#include "44x.h"
|
||||
|
||||
/**
|
||||
* ml510_ail_quirk
|
||||
*/
|
||||
static void ml510_ali_quirk(struct pci_dev *dev)
|
||||
{
|
||||
/* Enable the IDE controller */
|
||||
pci_write_config_byte(dev, 0x58, 0x4c);
|
||||
/* Assign irq 14 to the primary ide channel */
|
||||
pci_write_config_byte(dev, 0x44, 0x0d);
|
||||
/* Assign irq 15 to the secondary ide channel */
|
||||
pci_write_config_byte(dev, 0x75, 0x0f);
|
||||
/* Set the ide controller in native mode */
|
||||
pci_write_config_byte(dev, 0x09, 0xff);
|
||||
|
||||
/* INTB = disabled, INTA = disabled */
|
||||
pci_write_config_byte(dev, 0x48, 0x00);
|
||||
/* INTD = disabled, INTC = disabled */
|
||||
pci_write_config_byte(dev, 0x4a, 0x00);
|
||||
/* Audio = INT7, Modem = disabled. */
|
||||
pci_write_config_byte(dev, 0x4b, 0x60);
|
||||
/* USB = INT7 */
|
||||
pci_write_config_byte(dev, 0x74, 0x06);
|
||||
}
|
||||
DECLARE_PCI_FIXUP_EARLY(0x10b9, 0x1533, ml510_ali_quirk);
|
||||
|
|
@ -317,8 +317,4 @@ config MCU_MPC8349EMITX
|
|||
also register MCU GPIOs with the generic GPIO API, so you'll able
|
||||
to use MCU pins as GPIOs.
|
||||
|
||||
config XILINX_PCI
|
||||
bool "Xilinx PCI host bridge support"
|
||||
depends on PCI && XILINX_VIRTEX
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -31,8 +31,6 @@ obj-$(CONFIG_RTC_DRV_CMOS) += rtc_cmos_setup.o
|
|||
obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o
|
||||
obj-$(CONFIG_PPC_I8259) += i8259.o
|
||||
obj-$(CONFIG_IPIC) += ipic.o
|
||||
obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o
|
||||
obj-$(CONFIG_XILINX_PCI) += xilinx_pci.o
|
||||
obj-$(CONFIG_OF_RTC) += of_rtc.o
|
||||
|
||||
obj-$(CONFIG_CPM) += cpm_common.o
|
||||
|
|
|
@ -1,88 +0,0 @@
|
|||
/*
|
||||
* Interrupt controller driver for Xilinx Virtex FPGAs
|
||||
*
|
||||
* Copyright (C) 2007 Secret Lab Technologies Ltd.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is a driver for the interrupt controller typically found in
|
||||
* Xilinx Virtex FPGA designs.
|
||||
*
|
||||
* The interrupt sense levels are hard coded into the FPGA design with
|
||||
* typically a 1:1 relationship between irq lines and devices (no shared
|
||||
* irq lines). Therefore, this driver does not attempt to handle edge
|
||||
* and level interrupts differently.
|
||||
*/
|
||||
#undef DEBUG
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/i8259.h>
|
||||
#include <asm/irq.h>
|
||||
#include <linux/irqchip.h>
|
||||
|
||||
#if defined(CONFIG_PPC_I8259)
|
||||
/*
|
||||
* Support code for cascading to 8259 interrupt controllers
|
||||
*/
|
||||
static void xilinx_i8259_cascade(struct irq_desc *desc)
|
||||
{
|
||||
struct irq_chip *chip = irq_desc_get_chip(desc);
|
||||
unsigned int cascade_irq = i8259_irq();
|
||||
|
||||
if (cascade_irq)
|
||||
generic_handle_irq(cascade_irq);
|
||||
|
||||
/* Let xilinx_intc end the interrupt */
|
||||
chip->irq_unmask(&desc->irq_data);
|
||||
}
|
||||
|
||||
static void __init xilinx_i8259_setup_cascade(void)
|
||||
{
|
||||
struct device_node *cascade_node;
|
||||
int cascade_irq;
|
||||
|
||||
/* Initialize i8259 controller */
|
||||
cascade_node = of_find_compatible_node(NULL, NULL, "chrp,iic");
|
||||
if (!cascade_node)
|
||||
return;
|
||||
|
||||
cascade_irq = irq_of_parse_and_map(cascade_node, 0);
|
||||
if (!cascade_irq) {
|
||||
pr_err("virtex_ml510: Failed to map cascade interrupt\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
i8259_init(cascade_node, 0);
|
||||
irq_set_chained_handler(cascade_irq, xilinx_i8259_cascade);
|
||||
|
||||
/* Program irq 7 (usb/audio), 14/15 (ide) to level sensitive */
|
||||
/* This looks like a dirty hack to me --gcl */
|
||||
outb(0xc0, 0x4d0);
|
||||
outb(0xc0, 0x4d1);
|
||||
|
||||
out:
|
||||
of_node_put(cascade_node);
|
||||
}
|
||||
#else
|
||||
static inline void xilinx_i8259_setup_cascade(void) { return; }
|
||||
#endif /* defined(CONFIG_PPC_I8259) */
|
||||
|
||||
/*
|
||||
* Initialize master Xilinx interrupt controller
|
||||
*/
|
||||
void __init xilinx_intc_init_tree(void)
|
||||
{
|
||||
irqchip_init();
|
||||
xilinx_i8259_setup_cascade();
|
||||
}
|
|
@ -1,132 +0,0 @@
|
|||
/*
|
||||
* PCI support for Xilinx plbv46_pci soft-core which can be used on
|
||||
* Xilinx Virtex ML410 / ML510 boards.
|
||||
*
|
||||
* Copyright 2009 Roderick Colenbrander
|
||||
* Copyright 2009 Secret Lab Technologies Ltd.
|
||||
*
|
||||
* The pci bridge fixup code was copied from ppc4xx_pci.c and was written
|
||||
* by Benjamin Herrenschmidt.
|
||||
* Copyright 2007 Ben. Herrenschmidt <benh@kernel.crashing.org>, IBM Corp.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/pci.h>
|
||||
#include <mm/mmu_decl.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/xilinx_pci.h>
|
||||
|
||||
#define XPLB_PCI_ADDR 0x10c
|
||||
#define XPLB_PCI_DATA 0x110
|
||||
#define XPLB_PCI_BUS 0x114
|
||||
|
||||
#define PCI_HOST_ENABLE_CMD PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY
|
||||
|
||||
static const struct of_device_id xilinx_pci_match[] = {
|
||||
{ .compatible = "xlnx,plbv46-pci-1.03.a", },
|
||||
{}
|
||||
};
|
||||
|
||||
/**
|
||||
* xilinx_pci_fixup_bridge - Block Xilinx PHB configuration.
|
||||
*/
|
||||
static void xilinx_pci_fixup_bridge(struct pci_dev *dev)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
int i;
|
||||
|
||||
if (dev->devfn || dev->bus->self)
|
||||
return;
|
||||
|
||||
hose = pci_bus_to_host(dev->bus);
|
||||
if (!hose)
|
||||
return;
|
||||
|
||||
if (!of_match_node(xilinx_pci_match, hose->dn))
|
||||
return;
|
||||
|
||||
/* Hide the PCI host BARs from the kernel as their content doesn't
|
||||
* fit well in the resource management
|
||||
*/
|
||||
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
|
||||
dev->resource[i].start = 0;
|
||||
dev->resource[i].end = 0;
|
||||
dev->resource[i].flags = 0;
|
||||
}
|
||||
|
||||
dev_info(&dev->dev, "Hiding Xilinx plb-pci host bridge resources %s\n",
|
||||
pci_name(dev));
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, xilinx_pci_fixup_bridge);
|
||||
|
||||
/**
|
||||
* xilinx_pci_exclude_device - Don't do config access for non-root bus
|
||||
*
|
||||
* This is a hack. Config access to any bus other than bus 0 does not
|
||||
* currently work on the ML510 so we prevent it here.
|
||||
*/
|
||||
static int
|
||||
xilinx_pci_exclude_device(struct pci_controller *hose, u_char bus, u8 devfn)
|
||||
{
|
||||
return (bus != 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* xilinx_pci_init - Find and register a Xilinx PCI host bridge
|
||||
*/
|
||||
void __init xilinx_pci_init(void)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
struct resource r;
|
||||
void __iomem *pci_reg;
|
||||
struct device_node *pci_node;
|
||||
|
||||
pci_node = of_find_matching_node(NULL, xilinx_pci_match);
|
||||
if(!pci_node)
|
||||
return;
|
||||
|
||||
if (of_address_to_resource(pci_node, 0, &r)) {
|
||||
pr_err("xilinx-pci: cannot resolve base address\n");
|
||||
return;
|
||||
}
|
||||
|
||||
hose = pcibios_alloc_controller(pci_node);
|
||||
if (!hose) {
|
||||
pr_err("xilinx-pci: pcibios_alloc_controller() failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Setup config space */
|
||||
setup_indirect_pci(hose, r.start + XPLB_PCI_ADDR,
|
||||
r.start + XPLB_PCI_DATA,
|
||||
PPC_INDIRECT_TYPE_SET_CFG_TYPE);
|
||||
|
||||
/* According to the xilinx plbv46_pci documentation the soft-core starts
|
||||
* a self-init when the bus master enable bit is set. Without this bit
|
||||
* set the pci bus can't be scanned.
|
||||
*/
|
||||
early_write_config_word(hose, 0, 0, PCI_COMMAND, PCI_HOST_ENABLE_CMD);
|
||||
|
||||
/* Set the max latency timer to 255 */
|
||||
early_write_config_byte(hose, 0, 0, PCI_LATENCY_TIMER, 0xff);
|
||||
|
||||
/* Set the max bus number to 255 */
|
||||
pci_reg = of_iomap(pci_node, 0);
|
||||
out_8(pci_reg + XPLB_PCI_BUS, 0xff);
|
||||
iounmap(pci_reg);
|
||||
|
||||
/* Nothing past the root bridge is working right now. By default
|
||||
* exclude config access to anything except bus 0 */
|
||||
if (!ppc_md.pci_exclude_device)
|
||||
ppc_md.pci_exclude_device = xilinx_pci_exclude_device;
|
||||
|
||||
/* Register the host bridge with the linux kernel! */
|
||||
pci_process_bridge_OF_ranges(hose, pci_node, 1);
|
||||
|
||||
pr_info("xilinx-pci: Registered PCI host bridge\n");
|
||||
}
|
|
@ -209,7 +209,7 @@ config DTLK
|
|||
|
||||
config XILINX_HWICAP
|
||||
tristate "Xilinx HWICAP Support"
|
||||
depends on XILINX_VIRTEX || MICROBLAZE
|
||||
depends on MICROBLAZE
|
||||
help
|
||||
This option enables support for Xilinx Internal Configuration
|
||||
Access Port (ICAP) driver. The ICAP is used on Xilinx Virtex
|
||||
|
|
|
@ -2008,7 +2008,7 @@ config FB_PS3_DEFAULT_SIZE_M
|
|||
|
||||
config FB_XILINX
|
||||
tristate "Xilinx frame buffer support"
|
||||
depends on FB && (XILINX_VIRTEX || MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP)
|
||||
depends on FB && (MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP)
|
||||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
|
|
Loading…
Reference in New Issue
Block a user