Linux preempt-rt

Check our new training course

Real-Time Linux with PREEMPT_RT

Check our new training course
with Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

/*
 * Copyright (c) 2017-2019 Intel Corporation.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "skeleton.dtsi"
#include <dt-bindings/interrupt-controller/intel-ioapic.h>
#include <dt-bindings/i2c/i2c.h>
#include <dt-bindings/pcie/pcie.h>

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

		cpu@0 {
			device_type = "cpu";
			compatible = "apollo_lake";
			reg = <0>;
		};

	};

	flash0: flash@100000{
		compatible = "soc-nv-flash";
		reg = <0x00100000 DT_FLASH_SIZE>;
	};

	sram0: memory@400000 {
		device_type = "memory";
		compatible = "mmio-sram";
		reg = <0x00400000 DT_SRAM_SIZE>;
	};

	intc: ioapic@fec00000  {
		compatible = "intel,ioapic";
		reg = <0xfec00000 0x1000>;
		interrupt-controller;
		#interrupt-cells = <3>;
	};

	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "simple-bus";
		ranges;

		uart0: uart@0 {
			compatible = "ns16550";

			pcie;
			reg = <PCIE_BDF(0,0x18,0) PCIE_ID(0x8086,0x5abc)>;

			label = "UART_0";
			clock-frequency = <1843200>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			status = "okay";
			current-speed = <115200>;
		};

		uart1: uart@1 {
			compatible = "ns16550";

			pcie;
			reg = <PCIE_BDF(0,0x18,1) PCIE_ID(0x8086,0x5abe)>;

			label = "UART_1";
			clock-frequency = <1843200>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;

			status = "okay";
			current-speed = <115200>;
		};

		uart2: uart@2 {
			compatible = "ns16550";

			pcie;
			reg = <PCIE_BDF(0,0x18,2) PCIE_ID(0x8086,0x5ac0)>;

			label = "UART_2";
			clock-frequency = <1843200>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;

			status = "okay";
			current-speed = <115200>;
		};

		uart3: uart@3 {
			compatible = "ns16550";

			pcie;
			reg = <PCIE_BDF(0,0x18,3) PCIE_ID(0x8086,0x5aee)>;

			label = "UART_3";
			clock-frequency = <1843200>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;

			status = "okay";
			current-speed = <115200>;
		};

		i2c0: i2c@0 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			pcie;
			reg = <PCIE_BDF(0,0x16,0) PCIE_ID(0x8086,0x5aac)>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			label = "I2C_0";

			status = "okay";
		};

		i2c1: i2c@1 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			pcie;
			reg = <PCIE_BDF(0,0x16,1) PCIE_ID(0x8086,0x5aae)>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			label = "I2C_1";

			status = "okay";
		};

		i2c2: i2c@2 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			pcie;
			reg = <PCIE_BDF(0,0x16,2) PCIE_ID(0x8086,0x5ab0)>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			label = "I2C_2";

			status = "okay";
		};

		i2c3: i2c@3 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			pcie;
			reg = <PCIE_BDF(0,0x16,3) PCIE_ID(0x8086,0x5ab2)>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			label = "I2C_3";

			status = "okay";
		};

		i2c4: i2c@4 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			pcie;
			reg = <PCIE_BDF(0,0x17,0) PCIE_ID(0x8086,0x5ab4)>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			label = "I2C_4";

			status = "okay";
		};

		i2c5: i2c@5 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			pcie;
			reg = <PCIE_BDF(0,0x17,1) PCIE_ID(0x8086,0x5ab6)>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			label = "I2C_5";

			status = "okay";
		};

		i2c6: i2c@6 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			pcie;
			reg = <PCIE_BDF(0,0x17,2) PCIE_ID(0x8086,0x5ab8)>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			label = "I2C_6";

			status = "okay";
		};

		i2c7: i2c@7 {
			compatible = "snps,designware-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			pcie;
			reg = <PCIE_BDF(0,0x17,3) PCIE_ID(0x8086,0x5aba)>;
			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;
			label = "I2C_7";

			status = "okay";
		};

		gpio: gpio@d0c50000 {
			compatible = "intel,apl-gpio";
			reg = <0xd0c50000 0x1000>,
			      <0xd0c40000 0x1000>,
			      <0xd0c70000 0x1000>,
			      <0xd0c00000 0x1000>;
			interrupts = <14 IRQ_TYPE_LEVEL_LOW 3>;
			interrupt-parent = <&intc>;

			label = "APL_GPIO";
			gpio-controller ;
			#gpio-cells = <2>;

			status = "okay";
		};
	};
};