Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5fa4fdc authored by Viresh Kumar's avatar Viresh Kumar Committed by Arnd Bergmann
Browse files

ARM: SPEAr3xx: Add device-tree support to SPEAr3xx architecture



This patch adds a generic target for SPEAr3xx machines that can be configured
via the device-tree. Currently the following devices are supported via the
devicetree:

- VIC interrupts
- PL011 UART
- PL061 GPIO
- PL110 CLCD
- SP805 WDT
- Synopsys DW I2C
- Synopsys DW ethernet
- ST FSMC-NAND
- ST SPEAR-SMI
- ST SPEAR-KEYBOARD
- ST SPEAR-RTC
- ARASAN SDHCI-SPEAR
- SPEAR-EHCI
- SPEAR-OHCI

Other peripheral devices will follow in later patches.

This also removes IO_ADDRESS macro and creates 16 MB static mappings instead of
4K for individual peripherals. This is done to have efficient TLB lookup for any
I/O windows that are located closely together. ioremap() on this range will
return this mapping only instead of creating another.

Signed-off-by: default avatarViresh Kumar <viresh.kumar@st.com>
parent 5fb00f96
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -17,14 +17,14 @@ Introduction
  SPEAr (Platform)
	- SPEAr3XX (3XX SOC series, based on ARM9)
		- SPEAr300 (SOC)
			- SPEAr300_EVB (Evaluation Board)
			- SPEAr300 Evaluation Board
		- SPEAr310 (SOC)
			- SPEAr310_EVB (Evaluation Board)
			- SPEAr310 Evaluation Board
		- SPEAr320 (SOC)
			- SPEAr320_EVB (Evaluation Board)
			- SPEAr320 Evaluation Board
	- SPEAr6XX (6XX SOC series, based on ARM9)
		- SPEAr600 (SOC)
			- SPEAr600_EVB (Evaluation Board)
			- SPEAr600 Evaluation Board
	- SPEAr13XX (13XX SOC series, based on ARM CORTEXA9)
		- SPEAr1300 (SOC)

@@ -51,10 +51,11 @@ Introduction
  Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c and for
  spear6xx is mach-spear6xx/spear6xx.c. mach-spear* also contain soc/machine
  specific files, like spear300.c, spear310.c, spear320.c and spear600.c.
  mach-spear* also contains board specific files for each machine type.
  mach-spear* doesn't contains board specific files as they fully support
  Flattened Device Tree.


  Document Author
  ---------------

  Viresh Kumar, (c) 2010 ST Microelectronics
  Viresh Kumar <viresh.kumar@st.com>, (c) 2010-2012 ST Microelectronics
+18 −0
Original line number Diff line number Diff line
@@ -6,3 +6,21 @@ Boards with the ST SPEAr600 SoC shall have the following properties:
Required root node property:

compatible = "st,spear600";

Boards with the ST SPEAr300 SoC shall have the following properties:

Required root node property:

compatible = "st,spear300";

Boards with the ST SPEAr310 SoC shall have the following properties:

Required root node property:

compatible = "st,spear310";

Boards with the ST SPEAr320 SoC shall have the following properties:

Required root node property:

compatible = "st,spear320";
+179 −0
Original line number Diff line number Diff line
/*
 * DTS file for SPEAr300 Evaluation Baord
 *
 * Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
/include/ "spear300.dtsi"

/ {
	model = "ST SPEAr300 Evaluation Board";
	compatible = "st,spear300-evb", "st,spear300";
	#address-cells = <1>;
	#size-cells = <1>;

	memory {
		reg = <0 0x40000000>;
	};

	ahb {
		clcd@60000000 {
			status = "okay";
		};

		fsmc: flash@94000000 {
			status = "okay";
		};

		gmac: eth@e0800000 {
			status = "okay";
		};

		sdhci@70000000 {
			int-gpio = <&gpio1 0 0>;
			power-gpio = <&gpio1 2 1>;
			status = "okay";
		};

		smi: flash@fc000000 {
			status = "okay";
		};

		spi0: spi@d0100000 {
			status = "okay";
		};

		ehci@e1800000 {
			status = "okay";
		};

		ohci@e1900000 {
			status = "okay";
		};

		ohci@e2100000 {
			status = "okay";
		};

		apb {
			gpio0: gpio@fc980000 {
			       status = "okay";
			};

			gpio1: gpio@a9000000 {
			       status = "okay";
			};

			i2c0: i2c@d0180000 {
			       status = "okay";
			};

			kbd@a0000000 {
				linux,keymap = < 0x00010000
						 0x00020100
						 0x00030200
						 0x00040300
						 0x00050400
						 0x00060500
						 0x00070600
						 0x00080700
						 0x00090800
						 0x000a0001
						 0x000c0101
						 0x000d0201
						 0x000e0301
						 0x000f0401
						 0x00100501
						 0x00110601
						 0x00120701
						 0x00130801
						 0x00140002
						 0x00150102
						 0x00160202
						 0x00170302
						 0x00180402
						 0x00190502
						 0x001a0602
						 0x001b0702
						 0x001c0802
						 0x001d0003
						 0x001e0103
						 0x001f0203
						 0x00200303
						 0x00210403
						 0x00220503
						 0x00230603
						 0x00240703
						 0x00250803
						 0x00260004
						 0x00270104
						 0x00280204
						 0x00290304
						 0x002a0404
						 0x002b0504
						 0x002c0604
						 0x002d0704
						 0x002e0804
						 0x002f0005
						 0x00300105
						 0x00310205
						 0x00320305
						 0x00330405
						 0x00340505
						 0x00350605
						 0x00360705
						 0x00370805
						 0x00380006
						 0x00390106
						 0x003a0206
						 0x003b0306
						 0x003c0406
						 0x003d0506
						 0x003e0606
						 0x003f0706
						 0x00400806
						 0x00410007
						 0x00420107
						 0x00430207
						 0x00440307
						 0x00450407
						 0x00460507
						 0x00470607
						 0x00480707
						 0x00490807
						 0x004a0008
						 0x004b0108
						 0x004c0208
						 0x004d0308
						 0x004e0408
						 0x004f0508
						 0x00500608
						 0x00510708
						 0x00520808 >;
			       autorepeat;
			       st,mode = <0>;
			       status = "okay";
			};

			rtc@fc900000 {
			       status = "okay";
			};

			serial@d0000000 {
			       status = "okay";
			};

			wdt@fc880000 {
			       status = "okay";
			};
		};
	};
};
+72 −0
Original line number Diff line number Diff line
/*
 * DTS file for SPEAr300 SoC
 *
 * Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/include/ "spear3xx.dtsi"

/ {
	ahb {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "simple-bus";
		ranges = <0x60000000 0x60000000 0x50000000
			  0xd0000000 0xd0000000 0x30000000>;

		clcd@60000000 {
			compatible = "arm,clcd-pl110", "arm,primecell";
			reg = <0x60000000 0x1000>;
			interrupts = <30>;
			status = "disabled";
		};

		fsmc: flash@94000000 {
			compatible = "st,spear600-fsmc-nand";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0x94000000 0x1000	/* FSMC Register */
			       0x80000000 0x0010>;	/* NAND Base */
			reg-names = "fsmc_regs", "nand_data";
			st,ale-off = <0x20000>;
			st,cle-off = <0x10000>;
			status = "disabled";
		};

		sdhci@70000000 {
			compatible = "st,sdhci-spear";
			reg = <0x70000000 0x100>;
			interrupts = <1>;
			status = "disabled";
		};

		apb {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "simple-bus";
			ranges = <0xa0000000 0xa0000000 0x10000000
				  0xd0000000 0xd0000000 0x30000000>;

			gpio1: gpio@a9000000 {
				#gpio-cells = <2>;
				compatible = "arm,pl061", "arm,primecell";
				gpio-controller;
				reg = <0xa9000000 0x1000>;
				status = "disabled";
			};

			kbd@a0000000 {
				compatible = "st,spear300-kbd";
				reg = <0xa0000000 0x1000>;
				status = "disabled";
			};
		};
	};
};
+107 −0
Original line number Diff line number Diff line
/*
 * DTS file for SPEAr310 Evaluation Baord
 *
 * Copyright 2012 Viresh Kumar <viresh.kumar@st.com>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
/include/ "spear310.dtsi"

/ {
	model = "ST SPEAr310 Evaluation Board";
	compatible = "st,spear310-evb", "st,spear310";
	#address-cells = <1>;
	#size-cells = <1>;

	memory {
		reg = <0 0x40000000>;
	};

	ahb {
		fsmc: flash@44000000 {
			status = "okay";
		};

		gmac: eth@e0800000 {
			status = "okay";
		};

		smi: flash@fc000000 {
			status = "okay";
			clock-rate=<50000000>;

			flash@f8000000 {
				label = "m25p64";
				reg = <0xf8000000 0x800000>;
				#address-cells = <1>;
				#size-cells = <1>;
				st,smi-fast-mode;
			};
		};

		spi0: spi@d0100000 {
			status = "okay";
		};

		ehci@e1800000 {
			status = "okay";
		};

		ohci@e1900000 {
			status = "okay";
		};

		ohci@e2100000 {
			status = "okay";
		};

		apb {
			gpio0: gpio@fc980000 {
			       status = "okay";
			};

			i2c0: i2c@d0180000 {
			       status = "okay";
			};

			rtc@fc900000 {
			       status = "okay";
			};

			serial@d0000000 {
			       status = "okay";
			};

			serial@b2000000 {
			       status = "okay";
			};

			serial@b2080000 {
			       status = "okay";
			};

			serial@b2100000 {
			       status = "okay";
			};

			serial@b2180000 {
			       status = "okay";
			};

			serial@b2200000 {
			       status = "okay";
			};

			wdt@fc880000 {
			       status = "okay";
			};
		};
	};
};
Loading