/*
 * Copyright (c) 2020 Lingao Meng
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <nordic/nrf52833_qiaa.dtsi>
#include "bbc_microbit_v2-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "BBC Micro:bit V2";
	compatible = "bbc,microbit-v2";

	/* These aliases are provided for compatibility with samples */
	aliases {
		sw0 = &buttonA;
		sw1 = &buttonB;
		magn0 = &lsm303agr_magn;
		accel0 = &lsm303agr_accel;
		watchdog0 = &wdt0;
	};

	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;
		zephyr,display = &led_matrix;
	};

	gpio_keys {
		compatible = "gpio-keys";
		buttonA: button_0 {
			label = "BTN_A";
			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_A>;
		};

		buttonB: button_1 {
			label = "BTN_B";
			gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_B>;
		};
	};

	led_matrix: led_matrix {
		compatible = "nordic,nrf-led-matrix";
		status = "okay";
		width = <5>;
		height = <5>;
		pixel-mapping = [00 01 02 03 04
				 10 11 12 13 14
				 20 21 22 23 24
				 30 31 32 33 34
				 40 41 42 43 44];
		row-gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>,
			    <&gpio0 22 GPIO_ACTIVE_HIGH>,
			    <&gpio0 15 GPIO_ACTIVE_HIGH>,
			    <&gpio0 24 GPIO_ACTIVE_HIGH>,
			    <&gpio0 19 GPIO_ACTIVE_HIGH>;
		col-gpios = <&gpio0 28 GPIO_ACTIVE_LOW>,
			    <&gpio0 11 GPIO_ACTIVE_LOW>,
			    <&gpio0 31 GPIO_ACTIVE_LOW>,
			    <&gpio1  5 GPIO_ACTIVE_LOW>,
			    <&gpio0 30 GPIO_ACTIVE_LOW>;
		refresh-frequency = <50>;
		timer = <&timer4>;
		pwm = <&pwm0>;
		pixel-group-size = <4>;
	};

	edge_connector: connector {
		compatible = "microbit,edge-connector";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &gpio0 2 0>,	/* P0 */
			   <1 0 &gpio0 3 0>,	/* P1 */
			   <2 0 &gpio0 4 0>,	/* P2 */
			   <3 0 &gpio0 31 0>,	/* P3 */
			   <4 0 &gpio0 28 0>,	/* P4 */
			   <5 0 &gpio0 14 0>,	/* P5 */
			   <6 0 &gpio1 5 0>,	/* P6 */
			   <7 0 &gpio0 11 0>,	/* P7 */
			   <8 0 &gpio0 10 0>,	/* P8 */
			   <9 0 &gpio0 9 0>,	/* P9 */
			   <10 0 &gpio0 30 0>,	/* P10 */
			   <11 0 &gpio0 23 0>,	/* P11 */
			   <12 0 &gpio0 12 0>,	/* P12 */
			   <13 0 &gpio0 17 0>,	/* P13 */
			   <14 0 &gpio0 1 0>,	/* P14 */
			   <15 0 &gpio0 13 0>,	/* P15 */
			   <16 0 &gpio1 2 0>,	/* P16 */
			   <19 0 &gpio0 26 0>,	/* P19 */
			   <20 0 &gpio1 0 0>;	/* P20 */
	};
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&pwm1 {
	/* buzzer */
	status = "okay";
	pinctrl-0 = <&pwm1_default>;
	pinctrl-1 = <&pwm1_sleep>;
	pinctrl-names = "default", "sleep";
};

&uart0 {
	compatible = "nordic,nrf-uart";
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart0_default>;
	pinctrl-1 = <&uart0_sleep>;
	pinctrl-names = "default", "sleep";
};

&i2c0 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;

	/* See https://tech.microbit.org/hardware/i2c/ for board variants */

	pinctrl-0 = <&i2c0_default>;
	pinctrl-1 = <&i2c0_sleep>;
	pinctrl-names = "default", "sleep";
	lsm303agr_magn: lsm303agr-magn@1e {
		compatible = "st,lis2mdl", "st,lsm303agr-magn";
		status = "okay";
		reg = <0x1e>;
		irq-gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;	/* A3 */
	};

	lsm303agr_accel: lsm303agr-accel@19 {
		compatible = "st,lis2dh", "st,lsm303agr-accel";
		status = "okay";
		reg = <0x19>;
		irq-gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;
	};
};

&flash0 {

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0xC000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0x32000>;
		};
		slot1_partition: partition@3e000 {
			label = "image-1";
			reg = <0x0003E000 0x32000>;
		};
		scratch_partition: partition@70000 {
			label = "image-scratch";
			reg = <0x00070000 0xA000>;
		};
		storage_partition: partition@7a000 {
			label = "storage";
			reg = <0x0007A000 0x00006000>;
		};
	};
};

zephyr_udc0: &usbd {
	compatible = "nordic,nrf-usbd";
	status = "okay";
};
