Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

/*-
 * Copyright (c) 2013-2014 Ruslan Bukin <br@bsdpad.com>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

/ {
	compatible = "samsung,exynos5";
	#address-cells = <1>;
	#size-cells = <1>;
	interrupt-parent = <&GIC>;

	aliases {
		soc = &SOC;
		serial0 = &serial0;
		serial1 = &serial1;
		serial2 = &serial2;
		serial3 = &serial3;
		clk0 = &clk0;
		dp0 = &dp0;
		fimd0 = &fimd0;
	};

	SOC: Exynos5@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "simple-bus";
		ranges;
		bus-frequency = <0>;

		pmu_system_controller: system-controller@10040000 {
			reg = <0x10040000 0x5000>;
			status = "disabled";
		};

		GIC: interrupt-controller@10481000 {
			compatible = "arm,gic";
			reg =	< 0x10481000 0x1000 >,	/* Distributor Registers */
				< 0x10482000 0x2000 >;	/* CPU Interface Registers */
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <1>;
		};

		combiner: interrupt-controller@10440000 {
			compatible = "exynos,combiner";
			reg = <0x10440000 0x1000>;
			interrupts = < 32 33 34 35 36 37 38 39
				       40 41 42 43 44 45 46 47
				       48 49 50 51 52 53 54 55
				       56 57 58 59 60 61 62 63 >;
			interrupt-parent = <&GIC>;
		};

		clk0: clk@10010000 {
			compatible = "exynos,clk";
			reg = < 0x10020000 0x20000 >;
		};

		mct {
			compatible = "exynos,mct";
			reg = < 0x101C0000 0x1000 >;
			clock-frequency = <24000000>;
		};

		generic_timer {
			compatible = "arm,armv7-timer";
			clock-frequency = <24000000>;
			interrupts = < 29 30 27 26 >;
			interrupt-parent = <&GIC>;
		};

		pwm {
			compatible = "samsung,s3c24x0-timer";
			reg = <0x12DD0000 0x1000>;
			interrupts = < 71 >;
			interrupt-parent = <&GIC>;
			clock-frequency = <24000000>;
		};

		pad0: pad@11400000 {
			status = "disabled";
		};

		usbdrd_phy0: phy@12100000 {
			compatible = "samsung,exynos5420-usbdrd-phy";
			status = "disabled";
			reg = <0x12100000 0x100>;
			samsung,pmu-syscon = <&pmu_system_controller>;
		};

		usbdrd_phy1: phy@12500000 {
			compatible = "samsung,exynos5420-usbdrd-phy";
			status = "disabled";
			reg = <0x12500000 0x100>;
			samsung,pmu-syscon = <&pmu_system_controller>;
		};

		xhci@12000000 {
			compatible = "samsung,exynos5250-dwusb3";
			status = "disabled";
			reg = <0x12000000 0x1000>,
			      <0x1200c100 0x1000>;
			interrupts = < 104 >;
			interrupt-parent = <&GIC>;
		};

		xhci@12400000 {
			compatible = "samsung,exynos5250-dwusb3";
			status = "disabled";
			reg = <0x12400000 0x1000>,
			      <0x1240c100 0x1000>;
			interrupts = < 105 >;
			interrupt-parent = <&GIC>;
		};

		usb@12110000 {
			compatible = "exynos,usb-ehci", "usb-ehci";
			status = "disabled";
			reg = <0x12110000 0x1000>, /* EHCI */
			      <0x12130000 0x1000>, /* EHCI host ctrl */
			      <0x10050230 0x10>; /* Sysreg */
			interrupts = < 103 >;
			interrupt-parent = <&GIC>;
		};

		usb@12120000 {
			compatible = "exynos,usb-ohci", "usb-ohci";
			status = "disabled";
			reg = <0x12120000 0x10000>;
			interrupts = < 103 >;
			interrupt-parent = <&GIC>;
		};

		sdhci@12200000 {
			compatible = "sdhci_generic";
			status = "disabled";
			reg = <0x12200000 0x1000>;
			interrupts = <107>;
			interrupt-parent = <&GIC>;
			max-frequency = <24000000>; /* TODO: verify freq */
		};

		sdhci@12210000 {
			compatible = "sdhci_generic";
			status = "disabled";
			reg = <0x12210000 0x1000>;
			interrupts = <108>;
			interrupt-parent = <&GIC>;
			max-frequency = <24000000>;
		};

		sdhci@12220000 {
			compatible = "sdhci_generic";
			status = "disabled";
			reg = <0x12220000 0x1000>;
			interrupts = <109>;
			interrupt-parent = <&GIC>;
			max-frequency = <24000000>;
		};

		sdhci@12230000 {
			compatible = "sdhci_generic";
			status = "disabled";
			reg = <0x12230000 0x1000>;
			interrupts = <110>;
			interrupt-parent = <&GIC>;
			max-frequency = <24000000>;
		};

		serial0: serial@12C00000 {
			compatible = "exynos";
			status = "disabled";
			reg = <0x12C00000 0x100>;
			interrupts = < 83 >;
			interrupt-parent = <&GIC>;
			clock-frequency = < 100000000 >;
			current-speed = <115200>;
		};

		serial1: serial@12C10000 {
			compatible = "exynos";
			status = "disabled";
			reg = <0x12C10000 0x100>;
			interrupts = < 84 >;
			interrupt-parent = <&GIC>;
			clock-frequency = < 100000000 >;
			current-speed = <115200>;
		};

		serial2: serial@12C20000 {
			compatible = "exynos";
			status = "disabled";
			reg = <0x12C20000 0x100>;
			interrupts = < 85 >;
			interrupt-parent = <&GIC>;
			clock-frequency = < 100000000 >;
			current-speed = <115200>;
		};

		serial3: serial@12C30000 {
			compatible = "exynos";
			status = "disabled";
			reg = <0x12C30000 0x100>;
			interrupts = < 86 >;
			interrupt-parent = <&GIC>;
			clock-frequency = < 100000000 >;
			current-speed = <115200>;
		};

		spi0: spi@12d20000 {
			compatible = "samsung,exynos5-spi";
			status = "disabled";
			reg = <0x12d20000 0x100>;
			interrupts = < 100 >;
			interrupt-parent = <&GIC>;
		};

		spi1: spi@12d30000 {
			compatible = "samsung,exynos5-spi";
			status = "disabled";
			reg = <0x12d30000 0x100>;
			interrupts = < 101 >;
			interrupt-parent = <&GIC>;
		};

		spi2: spi@12d40000 {
			compatible = "samsung,exynos5-spi";
			status = "disabled";
			reg = <0x12d40000 0x100>;
			interrupts = < 102 >;
			interrupt-parent = <&GIC>;
		};

		i2c0: i2c@12C60000 {
			compatible = "exynos,i2c";
			status = "disabled";
			reg = <0x12C60000 0x10000>;
			interrupts = < 88 >;
			interrupt-parent = <&GIC>;
		};

		i2c1: i2c@12C70000 {
			compatible = "exynos,i2c";
			status = "disabled";
			reg = <0x12C70000 0x10000>;
			interrupts = < 89 >;
			interrupt-parent = <&GIC>;
		};

		i2c2: i2c@12C80000 {
			compatible = "exynos,i2c";
			status = "disabled";
			reg = <0x12C80000 0x10000>;
			interrupts = < 90 >;
			interrupt-parent = <&GIC>;
		};

		i2c3: i2c@12C90000 {
			compatible = "exynos,i2c";
			status = "disabled";
			reg = <0x12C90000 0x10000>;
			interrupts = < 91 >;
			interrupt-parent = <&GIC>;
		};

		i2c4: i2c@12CA0000 {
			compatible = "exynos,i2c";
			status = "disabled";
			reg = <0x12CA0000 0x10000>;
			interrupts = < 92 >;
			interrupt-parent = <&GIC>;
		};

		i2c5: i2c@12CB0000 {
			compatible = "exynos,i2c";
			status = "disabled";
			reg = <0x12CB0000 0x10000>;
			interrupts = < 93 >;
			interrupt-parent = <&GIC>;
		};

		i2c6: i2c@12CC0000 {
			compatible = "exynos,i2c";
			status = "disabled";
			reg = <0x12CC0000 0x10000>;
			interrupts = < 94 >;
			interrupt-parent = <&GIC>;
		};

		i2c7: i2c@12CD0000 {
			compatible = "exynos,i2c";
			status = "disabled";
			reg = <0x12CD0000 0x10000>;
			interrupts = < 95 >;
			interrupt-parent = <&GIC>;
		};

		fimd0: fimd@14400000 {
			compatible = "exynos,fimd";
			status = "disabled";
			reg = < 0x14400000 0x10000 >, /* fimd */
			      < 0x14420000 0x10000 >, /* disp */
			      < 0x10050000 0x220 >; /* sysreg */
			interrupt-parent = <&GIC>;
		};

		dp0: dp@145B0000 {
			compatible = "exynos,dp";
			status = "disabled";
			reg = < 0x145B0000 0x10000 >;
			interrupt-parent = <&GIC>;
		};
	};
};