Linux Audio

Check our new training course

Embedded Linux Audio

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

Bootlin logo

Elixir Cross Referencer

Loading...
/*
 * Copyright (c) 2021, Electromaticus LLC, 2022 NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nxp/nxp_k66.dtsi>
#include <zephyr/dt-bindings/pwm/pwm.h>
#include "rddrone_fmuk66-pinctrl.dtsi"
#include <freq.h>

/ {
	model = "NXP RDDRONE FMUK66 board";
	compatible = "nxp,mk66f18", "nxp,k66f", "nxp,k6x";

	aliases {
		led0 = &amber_led;
		led1 = &green_led;
		pwm-led0 = &red_pwm_led;
		pwm-led1 = &green_pwm_led;
		pwm-led2 = &blue_pwm_led;
		magn0 = &bmm150;
		red-pwm-led = &red_pwm_led;
		green-pwm-led = &green_pwm_led;
		blue-pwm-led = &blue_pwm_led;
	};

	chosen {
		/*
		 * Note: when using DMA, the SRAM region must be set to
		 * a memory region that is not cached by the chip. If the chosen
		 * sram region is changed and DMA is in use, you will
		 * encounter issues!
		 */
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
		zephyr,console = &lpuart0;
		zephyr,shell-uart = &lpuart0;
		zephyr,uart-pipe = &lpuart0;
		zephyr,canbus = &flexcan0;
	};

	leds {
		compatible = "gpio-leds";
		amber_led: led_0 {
			gpios = <&gpiod 13 GPIO_ACTIVE_LOW>;
			label = "LED_AMB";
		};
		green_led: led_1 {
			gpios = <&gpiod 14 GPIO_ACTIVE_LOW>;
			label = "LED_GRN";
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		red_pwm_led: red_pwm_led {
			pwms = <&ftm3 1 15625000 PWM_POLARITY_INVERTED>;
		};
		blue_pwm_led: blue_pwm_led {
			pwms = <&ftm3 4 15625000 PWM_POLARITY_INVERTED>;
		};
		green_pwm_led: green_pwm_led {
			pwms = <&ftm3 5 15625000 PWM_POLARITY_INVERTED>;
		};
	};

	transceiver0: can-phy0 {
		compatible = "nxp,tja1042", "can-transceiver-gpio";
		max-bitrate = <5000000>;
		standby-gpios = <&gpioc 19 GPIO_ACTIVE_HIGH>;
		#phy-cells = <0>;
	};

	transceiver1: can-phy1 {
		compatible = "nxp,tja1042", "can-transceiver-gpio";
		max-bitrate = <5000000>;
		standby-gpios = <&gpioc 18 GPIO_ACTIVE_HIGH>;
		#phy-cells = <0>;
	};

	/* This regulator enables the 3V3_S line, which powers sensors on-board. */
	reg-3v3-s {
		compatible = "regulator-fixed";
		regulator-name = "reg-3v3-s";
		enable-gpios = <&gpiob 8 GPIO_ACTIVE_HIGH>;
		startup-delay-us = <2000>;
		regulator-always-on;
		status = "okay";
	};

	/* This regulator enables the onboard Ethernet PHY */
	reg-3v3-neth {
		compatible = "regulator-fixed";
		regulator-name = "reg-3v3-neth";
		enable-gpios = <&gpiob 3 GPIO_ACTIVE_LOW>;
		regulator-always-on;
		status = "okay";
	};

	/* This regulator enables the onboard SD card support */
	reg-3v3-sd {
		compatible = "regulator-fixed";
		regulator-name = "reg-3v3-sd";
		enable-gpios = <&gpiod 6 GPIO_ACTIVE_HIGH>;
		regulator-always-on;
		status = "okay";
	};
};

&sim {
	pllfll-select = <KINETIS_SIM_PLLFLLSEL_MCGPLLCLK>;
	er32k-select = <KINETIS_SIM_ER32KSEL_RTC>;
};

&cpu0 {
	clock-frequency = <160000000>;
};

&adc0 {
	status = "okay";
};

&adc1 {
	status = "okay";
};

&temp1 {
	status = "okay";
};

&dac0 {
	status = "okay";
	voltage-reference = <2>;
};

/* PWM header is powered by FlexTimer 0 for channels 1 to 4 */
&ftm0 {
	status = "okay";
	compatible = "nxp,kinetis-ftm-pwm";
	#pwm-cells = <3>;
	pinctrl-0 = <&ftm0_default>;
	pinctrl-names = "default";
};


/* RGB LED powered by FlexTimer 3, and PWM headers for channel 5 and 6 */
&ftm3 {
	status = "okay";
	compatible = "nxp,kinetis-ftm-pwm";
	#pwm-cells = <3>;
	pinctrl-0 = <&ftm3_default>;
	pinctrl-names = "default";
};

/* LPUART connected to debug header */
&lpuart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&lpuart0_default>;
	pinctrl-names = "default";
};

zephyr_udc0: &usbotg {
	compatible = "nxp,kinetis-usbd";
	status = "okay";
	num-bidir-endpoints = <8>;
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart0_default>;
	pinctrl-names = "default";
};

&uart1 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart1_default>;
	pinctrl-names = "default";
};

&uart2 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart2_default>;
	pinctrl-names = "default";
};

&uart4 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart4_default>;
	pinctrl-names = "default";
};

&usbotg {
	compatible = "nxp,kinetis-usbd";
	status = "okay";
	num-bidir-endpoints = <8>;
};

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&gpiod {
	status = "okay";
};

&gpioe {
	status = "okay";
};

&flash0 {

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x00010000>;
			read-only;
		};

		/*
		 * The flash starting at 0x00010000 and ending at
		 * 0x0001ffff (sectors 16-31) is reserved for use
		 * by the application.
		 */
		storage_partition: partition@1e000 {
			label = "storage";
			reg = <0x0001e000 0x00002000>;
		};

		slot0_partition: partition@20000 {
			label = "image-0";
			reg = <0x00020000 0x00060000>;
		};
		slot1_partition: partition@80000 {
			label = "image-1";
			reg = <0x00080000 0x00060000>;
		};
		scratch_partition: partition@e0000 {
			label = "image-scratch";
			reg = <0x000e0000 0x00020000>;
		};
	};
};

&enet {
	status = "okay";
	pinctrl-0 = <&enet_default>;
	pinctrl-names = "default";
};

&flexcan0 {
	status = "okay";
	pinctrl-0 = <&flexcan0_default>;
	pinctrl-names = "default";
	bus-speed = <125000>;
	phys = <&transceiver0>;
};

&flexcan1 {
	status = "okay";
	pinctrl-0 = <&flexcan1_default>;
	pinctrl-names = "default";
	bus-speed = <125000>;
	phys = <&transceiver1>;
};

/* external i2c port */
&i2c0 {
	status = "okay";
	pinctrl-0 = <&i2c0_default>;
	pinctrl-names = "default";
};

/* magnetometer (bmm150), barometer (bmp280), pressure (mpl3115),
 * secure element (a7102ch) i2c bus
 */
&i2c1 {
	status = "okay";
	pinctrl-0 = <&i2c1_default>;
	pinctrl-names = "default";

	/*
	 * This board does not have a BME280, it has a BMP280.
	 * The two parts are incredibly similar, so the BME280 driver works for
	 * BMP280 as well.
	 */
	bme280@76 {
		compatible = "bosch,bme280";
		status = "okay";
		reg = <0x76>;
	};

	bmm150: bmm150@10 {
		compatible = "bosch,bmm150";
		status = "okay";
		reg = <0x10>;
	};
};

/* f-ram spi port */
&spi0 {
	status = "okay";
	pinctrl-0 = <&spi0_default>;
	pinctrl-names = "default";
};

/* flash (w25x40), accel, magneto (fxos8700), gyro (fxas2100) */
&spi1 {
	status = "okay";
	pinctrl-0 = <&spi1_default>;
	pinctrl-names = "default";
	/*
	 * cs-gpios needs to be populated as per the schematics
	 * fxos8700  - CS#0
	 * fxas21002 - CS#1
	 */
	cs-gpios = <&gpiob 10 GPIO_ACTIVE_LOW>,
		   <&gpiob 9 GPIO_ACTIVE_LOW>;
	clock-frequency = <DT_FREQ_M(1)>;


	fxos8700@0 {
		compatible = "nxp,fxos8700";
		reg = <0>;
		spi-max-frequency = <DT_FREQ_M(1)>;
		reset-gpios = <&gpioa 25 GPIO_ACTIVE_HIGH>;
		int1-gpios = <&gpioe 9 GPIO_ACTIVE_LOW>;
		int2-gpios = <&gpioe 10 GPIO_ACTIVE_LOW>;
		status = "okay";
	};

	fxas21002@1 {
		compatible = "nxp,fxas21002";
		reg = <1>;
		spi-max-frequency = <DT_FREQ_M(1)>;
		reset-gpios = <&gpiod 12 GPIO_ACTIVE_LOW>;
		int1-gpios = <&gpioe 7 GPIO_ACTIVE_LOW>;
		int2-gpios = <&gpioe 6 GPIO_ACTIVE_LOW>;
		status = "okay";
	};

};

/* external spi */
&spi2 {
	status = "okay";
	pinctrl-0 = <&spi2_default>;
	pinctrl-names = "default";
};

&edma0 {
	status = "okay";
};

&pit0 {
	status = "okay";
};