device tree for lite5200b

Grant Likely grant.likely at secretlab.ca
Mon Oct 30 09:58:58 EST 2006


Sylvain,

Here's my second draft of a device tree for the lite5200b.  Enjoy

Note: The interrupt mappings are not correct.  I assumed 2 bits for L1
and 8 for L2.  Nicolas' code uses 2 and 6.

g.

/*
 * Lite5200b board Device Tree Source
 *
 * Copyright 2006 Secret Lab Technologies Ltd.
 * Grant Likely <grant.likely at secretlab.ca>
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */

/ {
	model = "Lite5200b";
	compatible = "mpc5200";
	#address-cells = <1>;
	#size-cells = <1>;

	cpus {
		#cpus = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		PowerPC,5200 at 0 {
			device_type = "cpu";
			reg = <0>;
			d-cache-line-size = <20>;
			i-cache-line-size = <20>;
			d-cache-size = <4000>;		// L1, 16K
			i-cache-size = <4000>;		// L1, 16K
			timebase-frequency = <0>;	// from bootloader
			bus-frequency = <0>;		// from bootloader
			clock-frequency = <0>;		// from bootloader
			32-bit;
		};
	};

	memory {
		device_type = "memory";
		reg = <00000000 10000000>;	// 256MB
	};

	soc5200 at f0000000 {
		#interrupt-cells = <2>;
		device_type = "soc";
		ranges = <0 f0000000 f0010000>;
		reg = <f0000000 00010000>;
		bus-frequency = <0>;		// from bootloader

		pic at 500 {
			// 5200 interrupts are encoded into two levels;
			// Level 1 is 2 bits; [CRIT=0,MAIN=1,PERF=2,SDMA=3]
			// Level 2 is 5 bits
			// The levels are encoded into a single cell:
			// in binary: xxxx xx11 xxx2 2222
			linux,phandle = <500>;
			interrupt-controller;
			device_type = "interrupt_controller";
			compatible = "mpc52xx-pic";
			reg = <500 80>;
			built-in;
		};

		gpt at 600 {	// General Purpose Timer
			compatible = "mpc5200-gpt";
			device_type = "gpt";
			reg = <600 10>;
			interrupts = <109 2>;
			interrupt-parent = <500>;
		};

		gpt at 610 {	// General Purpose Timer
			compatible = "mpc5200-gpt";
			device_type = "gpt";
			reg = <610 10>;
			interrupts = <10a 2>;
			interrupt-parent = <500>;
		};

		gpt at 620 {	// General Purpose Timer
			compatible = "mpc5200-gpt";
			device_type = "gpt";
			reg = <620 10>;
			interrupts = <10b 2>;
			interrupt-parent = <500>;
		};

		gpt at 630 {	// General Purpose Timer
			compatible = "mpc5200-gpt";
			device_type = "gpt";
			reg = <630 10>;
			interrupts = <10c 2>;
			interrupt-parent = <500>;
		};

		gpt at 640 {	// General Purpose Timer
			compatible = "mpc5200-gpt";
			device_type = "gpt";
			reg = <640 10>;
			interrupts = <10d 2>;
			interrupt-parent = <500>;
		};

		gpt at 650 {	// General Purpose Timer
			compatible = "mpc5200-gpt";
			device_type = "gpt";
			reg = <650 10>;
			interrupts = <10e 2>;
			interrupt-parent = <500>;
		};

		gpt at 660 {	// General Purpose Timer
			compatible = "mpc5200-gpt";
			device_type = "gpt";
			reg = <660 10>;
			interrupts = <10f 2>;
			interrupt-parent = <500>;
		};

		gpt at 670 {	// General Purpose Timer
			compatible = "mpc5200-gpt";
			device_type = "gpt";
			reg = <670 10>;
			interrupts = <110 2>;
			interrupt-parent = <500>;
		};

		rtc at 800 {	// Real time clock
			compatible = "mpc5200-rtc";
			device_type = "rtc";
			reg = <800 100>;
			interrupts = <105 2 106 2>;
			interrupt-parent = <500>;
		};

		mscan at 900 {
			device_type = "mscan";
			compatible = "mpc5200-mscan";
			interrupts = <211 2>;
			interrupt-parent = <500>;
			reg = <900 80>;
		};

		mscan at 980 {
			device_type = "mscan";
			compatible = "mpc5200-mscan";
			interrupts = <212 2>;
			interrupt-parent = <500>;
			reg = <980 80>;
		};

		pci at 0d00 {
			#interrupt-cells = <1>;
			#size-cells = <2>;
			#address-cells = <3>;
			device_type = "pci";
			compatible = "mpc5200-pci";
			// I actually know very little about setting up PCI,
			// so anything here would just be pulled out of my
			// butt.  Instead I'll leave these placeholders until
			// I figure out what it should be
			//
			// interrupt-map-mask = <>;
			// interrupt-map = <>;
			// bus-range = <>;
			// ranges = <>;
			//
			clock-frequency = <3f940aa>;
			interrupts = <208 2 209 2 20a 2>;
			interrupt-parent = <500>;
		};

		spi at f00 {
			device_type = "spi";
			compatible = "mpc5200-spi";
			reg = <f00 20>;
			interrupts = <20d 2 20e 2>;
			interrupt-parent = <500>;
		};

		serial at 2000 {		// PSC1
			device_type = "serial";
			compatible = "mpc5200-psc";
			reg = <2000 100>;
			interrupts = <201 2>;
			interrupt-parent = <500>;
		};

		// PSC2 in spi mode example
		spi at 2200 {		// PSC2
			device_type = "spi";
			compatible = "mpc5200-psc";
			reg = <2200 100>;
			interrupts = <202 2>;
			interrupt-parent = <500>;
		};

		// PSC3 in CODEC mode example
		i2s at 2400 {		// PSC3
			device_type = "i2s";
			compatible = "mpc5200-psc";
			reg = <2400 100>;
			interrupts = <203 2>;
			interrupt-parent = <500>;
		};

		// PSC4 unconfigured
		//serial at 2600 {		// PSC4
		//	device_type = "serial";
		//	compatible = "mpc5200-psc";
		//	reg = <2600 100>;
		//	interrupts = <20b 2>;
		//	interrupt-parent = <500>;
		//};

		// PSC5 unconfigured
		//serial at 2800 {		// PSC5
		//	device_type = "serial";
		//	compatible = "mpc5200-psc";
		//	reg = <2800 100>;
		//	interrupts = <20c 2>;
		//	interrupt-parent = <500>;
		//};

		// PSC6 in AC97 mode example
		ac97 at 2c00 {		// PSC6
			device_type = "ac97";
			compatible = "mpc5200-psc";
			reg = <2c00 100>;
			interrupts = <204 2>;
			interrupt-parent = <500>;
		};

		ethernet at 3000 {
			device_type = "network";
			compatible = "mpc5200-fec";
			reg = <3000 800>;
			mac-address = [ 02 03 04 05 06 07 ]; // Bad!
			interrupts = <205 2>;
			interrupt-parent = <500>;
		};

		ata at 3a00 {
			device_type = "ata";
			compatible = "mpc5200-ata";
			reg = <3a00 100>;
			interrupts = <207 2>;
			interrupt-parent = <500>;
		};

		i2c at 3d00 {
			device_type = "i2c";
			compatible = "mpc5200-i2c";
			reg = <3d00 40>;
			interrupts = <20f 2>;
			interrupt-parent = <500>;
		};

		i2c at 3d40 {
			device_type = "i2c";
			compatible = "mpc5200-i2c";
			reg = <3d40 40>;
			interrupts = <210 2>;
			interrupt-parent = <500>;
		};
	};
};
-- 
Grant Likely, B.Sc. P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195



More information about the Linuxppc-embedded mailing list