| /* | 
 |  * 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; | 
 | 		accel0 = &fxos8700; | 
 | 	}; | 
 |  | 
 | 	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,uart-mcumgr = &lpuart0; | 
 | 		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,ftm-pwm"; | 
 | 	#pwm-cells = <3>; | 
 | 	pinctrl-0 = <&ftm0_default>; | 
 | 	pinctrl-names = "default"; | 
 | 	clock-source = "fixed"; | 
 | }; | 
 |  | 
 | /* RGB LED powered by FlexTimer 3, and PWM headers for channel 5 and 6 */ | 
 | &ftm3 { | 
 | 	status = "okay"; | 
 | 	compatible = "nxp,ftm-pwm"; | 
 | 	#pwm-cells = <3>; | 
 | 	pinctrl-0 = <&ftm3_default>; | 
 | 	pinctrl-names = "default"; | 
 | 	clock-source = "fixed"; | 
 | }; | 
 |  | 
 | /* 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>; | 
 |  | 
 | 		/* | 
 | 		 * Partition sizes must be aligned | 
 | 		 * to the flash memory sector size of 4KB. | 
 | 		 */ | 
 | 		boot_partition: partition@0 { | 
 | 			label = "mcuboot"; | 
 | 			reg = <0x00000000 DT_SIZE_K(64)>; | 
 | 			read-only; | 
 | 		}; | 
 |  | 
 | 		slot0_partition: partition@10000 { | 
 | 			label = "image-0"; | 
 | 			reg = <0x00010000 DT_SIZE_K(932)>; | 
 | 		}; | 
 |  | 
 | 		slot1_partition: partition@F9000 { | 
 | 			label = "image-1"; | 
 | 			reg = <0x000F9000 DT_SIZE_K(932)>; | 
 | 		}; | 
 |  | 
 | 		storage_partition: partition@1E2000 { | 
 | 			label = "storage"; | 
 | 			reg = <0x001E2000 DT_SIZE_K(120)>; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &enet_mac { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&enet_default>; | 
 | 	pinctrl-names = "default"; | 
 | 	phy-connection-type = "rmii"; | 
 | 	phy-handle = <&phy>; | 
 | 	zephyr,random-mac-address; | 
 | }; | 
 |  | 
 | &enet_mdio { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&mdio_default>; | 
 | 	pinctrl-names = "default"; | 
 |  | 
 | 	phy: phy@0 { | 
 | 		compatible = "ethernet-phy"; | 
 | 		reg = <0>; | 
 | 		status = "okay"; | 
 | 	}; | 
 | }; | 
 |  | 
 | &flexcan0 { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&flexcan0_default>; | 
 | 	pinctrl-names = "default"; | 
 | 	phys = <&transceiver0>; | 
 | }; | 
 |  | 
 | &flexcan1 { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&flexcan1_default>; | 
 | 	pinctrl-names = "default"; | 
 | 	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: 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: 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"; | 
 | }; |