Virtex V5FX PPC 440 Support In Xilinx Git Tree

Stephen Neuendorffer stephen.neuendorffer at xilinx.com
Thu Apr 3 03:34:12 EST 2008


I've just pushed support for generating device trees for the ppc440 in
V5FXT up to git.xilinx.com.

The most obvious difference is that the PPC440 block contains not only
the PPC440 core, but also an interconnect block, subsuming part of the
'multi-ported' functionality of the MPMC.  In order to have a relatively
straightforward mapping between blocks in the EDK design and nodes in
the dts, I've represented this as shown below.  Note that unlike the
MPMC, the dma ports are controlled through DCR (which is part of the
point of the recent dcr patches).  I've done some preliminary testing
using some hacked together platform support code and we'll update this
based on the 405 code soon.

Steve

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "xlnx,virtex";
	dcr-parent = <&ppc440_virtex5_0>;
	model = "testing";
	chosen {
		bootargs = "root=/dev/xsysace/disc0/part2";
	} ;
	cpus {
		#address-cells = <1>;
		#cpus = <1>;
		#size-cells = <0>;
		ppc440_virtex5_0: cpu at 0 {
			#address-cells = <1>;
			#size-cells = <1>;
			clock-frequency = <17d78400>;
			compatible = "PowerPC,440", "ibm,ppc440";
			d-cache-line-size = <20>;
			d-cache-line-size = <20>;
			d-cache-size = <8000>;
			dcr-access-method = "native";
			dcr-controller ;
			device_type = "cpu";
			i-cache-line-size = <20>;
			i-cache-size = <8000>;
			model = "PowerPC,440";
			reg = <0>;
			timebase-frequency = <17d78400>;
			DMA0: sdma at 1010000 {
				compatible = "xlnx,ll-dma-1.00.a";
				dcr-reg = < 1010000 11 >;
				interrupt-parent = <&opb_intc_0>;
				interrupts = < 5 2 6 2 >;
			} ;
			DMA1: sdma at 1010000 {
				compatible = "xlnx,ll-dma-1.00.a";
				dcr-reg = < 1010000 11 >;
			} ;
			DMA2: sdma at 1010000 {
				compatible = "xlnx,ll-dma-1.00.a";
				dcr-reg = < 1010000 11 >;
			} ;
			DMA3: sdma at 1010000 {
				compatible = "xlnx,ll-dma-1.00.a";
				dcr-reg = < 1010000 11 >;
			} ;
		} ;
	} ;
	plb_v46_cfb_0: plb at 0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "xlnx,plb-v46-1.00.a";
		ranges ;
		iic_bus: i2c at d0020000 {
			compatible = "xlnx,xps-iic-1.00.a";
			interrupt-parent = <&opb_intc_0>;
			interrupts = < 7 2 >;
			reg = < d0020000 200 >;
			xlnx,clk-freq = <5f5e100>;
			xlnx,family = "virtex5";
			xlnx,gpo-width = <1>;
			xlnx,iic-freq = <186a0>;
			xlnx,ten-bit-adr = <0>;
		} ;
		leds_8bit: gpio at d0010200 {
			compatible = "xlnx,xps-gpio-1.00.a";
			interrupt-parent = <&opb_intc_0>;
			interrupts = < 1 2 >;
			reg = < d0010200 200 >;
			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 = <1>;
			xlnx,is-bidir = <1>;
			xlnx,is-bidir-2 = <1>;
			xlnx,is-dual = <0>;
			xlnx,tri-default = <ffffffff>;
			xlnx,tri-default-2 = <ffffffff>;
		} ;
		ll_temac_0: xps-ll-temac at 91200000 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "xlnx,compound";
			ethernet at 91200000 {
				compatible = "xlnx,xps-ll-temac-1.00.b";
				device_type = "network";
				interrupt-parent = <&opb_intc_0>;
				interrupts = < 4 2 >;
				llink-connected = <&DMA0>;
				local-mac-address = [ 00 00 00 00 00 00
];
				reg = < 91200000 40 >;
				xlnx,bus2core-clk-ratio = <1>;
				xlnx,phy-type = <1>;
				xlnx,phyaddr = <1>;
				xlnx,rxcsum = <0>;
				xlnx,rxfifo = <4000>;
				xlnx,temac-type = <0>;
				xlnx,txcsum = <0>;
				xlnx,txfifo = <4000>;
			} ;
		} ;
		opb_intc_0: interrupt-controller at d0020200 {
			#interrupt-cells = <2>;
			compatible = "xlnx,xps-intc-1.00.a";
			interrupt-controller ;
			reg = < d0020200 20 >;
			xlnx,num-intr-inputs = <8>;
		} ;
		plb_bram_if_cntlr_0: xps-bram-if-cntlr at ffff0000 {
			compatible = "xlnx,xps-bram-if-cntlr-1.00.a";
			reg = < ffff0000 10000 >;
			xlnx,family = "virtex5";
		} ;
		plb_bram_if_cntlr_1: xps-bram-if-cntlr at eee00000 {
			compatible = "xlnx,xps-bram-if-cntlr-1.00.a";
			reg = < eee00000 2000 >;
			xlnx,family = "virtex5";
		} ;
		rs232_uart_0: serial at d0000000 {
			clock-frequency = "";
			compatible = "xlnx,xps-uart16550-1.00.a";
			current-speed = <2580>;
			device_type = "serial";
			interrupt-parent = <&opb_intc_0>;
			interrupts = < 0 2 >;
			reg = < d0000000 2000 >;
			reg-offset = <3>;
			reg-shift = <2>;
			xlnx,family = "virtex5";
			xlnx,has-external-rclk = <0>;
			xlnx,has-external-xin = <1>;
			xlnx,is-a-16550 = <1>;
		} ;
		sysace_compactflash: sysace at d0030100 {
			compatible = "xlnx,xps-sysace-1.00.a";
			reg = < d0030100 80 >;
			xlnx,family = "virtex5";
			xlnx,mem-width = <10>;
		} ;
	} ;
	ppc440mc_ddr2_0: memory at 0 {
		device_type = "memory";
		reg = < 0 20000000 >;
	} ;
}  ;

> -----Original Message-----
> From: John Linn
> Sent: Wednesday, April 02, 2008 8:24 AM
> To: Peter Korsgaard
> Cc: linuxppc-embedded at ozlabs.org; git
> Subject: RE: Virtex V5FX PPC 440 Support In Xilinx Git Tree
> 
> Hi Peter,
> 
> We added arch/ppc support because it was the easiest path for us.  We
realize it's going away soon in
> the mainline.
> 
> We are working on getting arch/powerpc more mature for both the 405
and the 440 as we do believe this
> is the future for powerpc.
> 
> Thanks,
> John
> 
> 
> 
> -----Original Message-----
> From: Peter Korsgaard [mailto:jacmet at gmail.com] On Behalf Of Peter
Korsgaard
> Sent: Wednesday, April 02, 2008 3:51 AM
> To: John Linn
> Cc: linuxppc-embedded at ozlabs.org; git
> Subject: Re: Virtex V5FX PPC 440 Support In Xilinx Git Tree
> 
> >>>>> "John" == John Linn <John.Linn at xilinx.com> writes:
> 
>  John> I pushed PowerPC 440 support to the Xilinx Git server with
>  John> support for ppc arch and with powerpc arch support coming in
>  John> the near future.
> 
> Neat, but why have you added arch/ppc support? It's supposed to go
> away pretty much by the time the hardware gets in the hand of
> developers.
> 
> --
> Bye, Peter Korsgaard




More information about the Linuxppc-embedded mailing list