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) 2020 Stephane Dorre <stephane.dorre@gmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * DTS for Pine64 PineTime DevKit-0 board
 * Further info: https://wiki.pine64.org/index.php/PineTime
 *
 */

/dts-v1/;
#include <nordic/nrf52832_qfaa.dtsi>

/ {
	model = "Pine64 PineTime DevKit0";
	compatible = "pine64,pinetime-devkit0";

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,bt-mon-uart = &uart0;
		zephyr,bt-c2h-uart = &uart0;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
	};

	aliases {
		led0 = &blled0;	/* backlight low */
		led1 = &blled1;	/* backlight mid */
		led2 = &blled2;	/* backlight high */
		led3 = &statusled;	/* status led, may be not populated */
		sw0 = &key_in;  /* key in */
		sw1 = &key_out;  /* key out */
	};

	leds {
		compatible = "gpio-leds";
		blled0: bl_led_0 {
			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
			label = "Backlight LED 0";
		};
		blled1: bl_led_1 {
			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
			label = "Backlight LED 1";
		};
		blled2: bl_led_2 {
			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
			label = "Backlight LED 2";
		};
		statusled: led_3 {
			gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
			label = "Status Led";
		};
	};

	buttons {
		compatible = "gpio-keys";
		key_in: button_0 {
			gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
			label = "Key in";
		};
		key_out: button_1 {
			gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
			label = "Key out";
		};
	};
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&uart0 {
	compatible = "nordic,nrf-uart";
	current-speed = <115200>;
	status = "okay";
	tx-pin = <11>;
	rx-pin = <30>;
};

&i2c0 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	sda-pin = <6>;
	scl-pin = <7>;
	clock-frequency = <I2C_BITRATE_FAST>; /* 400KHz */

	/* BOSCH BMA421 Triaxial Acceleration Sensor (1000KHz) */
	bma421: bma421@18 {
		compatible = "bosch,bma4xx";
		reg = <0x18>;
		label = "BMA421";
		int1-gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
	};

	/* TianYiHeXin HRS3300 PPG Hear Rate Sensor (800KHz) */
	hrs3300: hrs3300@44 {
		compatible = "tian-yi-he-xin-hrs3300";
		reg = <0x44>;
		label = "HRS3300";
	};

	/* Hynitron CST816S Capacitive Touch Controller (400KHz) */
	cst816s: cst816s@15 {
		compatible = "hynitron-cst816s";
		reg = <0x15>;
		label = "CST816S";
		irq-gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
		rst-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
	};
};

&spi1 {
	compatible = "nordic,nrf-spi";
	status = "okay";
	sck-pin = <2>;
	mosi-pin = <3>;
	miso-pin = <4>;

	cs-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>, <&gpio0 25 GPIO_ACTIVE_LOW>;

	/* Macronix MX25L CMOS Flash Memory */
	mx25l: mx25l@0 {
		compatible = "mxicy,cmos-mx25l";
		reg = <0>;
		spi-max-frequency = <8000000>; /* 8MHz */
		label = "CMOS MX25L";
	};

	/* Sitronix ST7789V LCD */
	st7789v: st7789v@1 {
		compatible = "sitronix,st7789v";
		reg = <1>;
		spi-max-frequency = <8000000>; /* 8MHz */
		label = "ST7789V";
		cmd-data-gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;	/* DET */
		reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;	/* RESX reset */
		width = <240>;
		height = <240>;
		x-offset = <0>;
		y-offset = <0>;
		vcom = <0x19>;
		gctrl = <0x35>;
		vrhs = <0x12>;
		vdvs = <0x20>;
		mdac = <0x00>;
		gamma = <0x01>;
		colmod = <0x05>;
		lcm = <0x2c>;
		porch-param = [0c 0c 00 33 33];
		cmd2en-param = [5a 69 02 01];
		pwctrl1-param = [a4 a1];
		pvgam-param = [D0 04 0D 11 13 2B 3F 54 4C 18 0D 0B 1F 23];
		nvgam-param = [D0 04 0C 11 13 2C 3F 44 51 2F 1F 1F 20 23];
		ram-param = [00 F0];
		rgb-param = [CD 08 14];
	};
};

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		/* MCUboot bootloader */
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0xc000>;
		};

		/* main firmware partition */
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0x32000>;
		};

		/* next firmware update */
		slot1_partition: partition@3e000 {
			label = "image-1";
			reg = <0x0003E000 0x32000>;
		};

		/* needed to slot0-slot1 swapping */
		scratch_partition: partition@70000 {
			label = "image-scratch";
			reg = <0x00070000 0xa000>;
		};

		/* to be used in firmware */
		storage_partition: partition@7a000 {
			label = "storage";
			reg = <0x0007a000 0x00006000>;
		};
	};
};