// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2019 BayLibre SAS. All rights reserved.
 */

/dts-v1/;
/plugin/;

#include <dt-bindings/phy/phy.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
  compatible = "khadas,vim3l", "amlogic,sm1";
  model = "Khadas VIM3L";
  fragment@101 {
        target-path = "/";
        __overlay__ {
                reserved-memory {
                        #address-cells = <2>;
                        #size-cells = <2>;
                        ramoops@d000000 {
                                compatible = "ramoops";
                                reg = <0x0 0x0d000000 0x0 0x00100000>;
                                record-size = <0x8000>;
                                console-size = <0x8000>;
                                ftrace-size = <0x0>;
                                pmsg-size = <0x8000>;
                        };
                };
        };
  };
};

&vcc_5v {
    gpio-open-drain;
};

&uart_A {
	bluetooth {
        interrupt-parent = <&gpio_intc>;
        interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "host-wakeup";
    };
};

&uart_C {
        status = "disabled";
        pinctrl-0 = <&uart_c_pins>;
        pinctrl-names = "default";
};

&emmc_pwrseq{
	status = "okay";
};

&sd_emmc_a {
     /* WiFi firmware requires power to be kept while in suspend */
    keep-power-in-suspend;
};

&spicc1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&spicc1_pins>;
	cs-gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>;
	#address-cells = <1>;
	#size-cells = <0>;

	spidev@0 {
		compatible = "rohm,dh2228fv";
		reg = <0>;
		spi-max-frequency = <500000>;
		status = "okay";
	};

	neonkey@0 {
		compatible = "nanohub";
		reg = <0>;
		spi-max-frequency = <500000>;

		sensorhub,nreset-gpio = <&gpio GPIOA_0 0>;
		sensorhub,boot0-gpio = <&gpio GPIOA_3 0>;   /* Fake */
		sensorhub,wakeup-gpio = <&gpio GPIOA_2 0>;  /* A2 -> PB9 */
		sensorhub,irq1-gpio = <&gpio GPIOA_1 0>;    /* A1 -> PB5 */
		interrupt-parent = <&gpio_intc>;
		interrupts = <62 IRQ_TYPE_EDGE_RISING>;     /* A1 */
		/* sensorhub,spi-cs-gpio = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>; Optional */
		sensorhub,bl-addr = <0x08000000>;
		sensorhub,kernel-addr = <0x0800C000>;
		sensorhub,shared-addr = <0x08040000>;
		sensorhub,flash-banks = <0 0x08000000 0x04000>,
					<3 0x0800C000 0x04000>,
					<4 0x08010000 0x10000>,
					<5 0x08020000 0x20000>,
					<6 0x08040000 0x20000>,
					<7 0x08060000 0x20000>;
		sensorhub,num-flash-banks = <6>;
		status = "disabled";
	};

	argonkey@0 {
		compatible = "nanohub";
		reg = <0>;
		spi-max-frequency = <500000>;
		spi-cpol;

		sensorhub,nreset-gpio = <&gpio GPIOA_0 0>;
		sensorhub,boot0-gpio = <&gpio GPIOA_3 0>;
		sensorhub,wakeup-gpio = <&gpio GPIOA_1 0>;  /* A1 -> PA0 */
		sensorhub,irq1-gpio = <&gpio GPIOA_2 0>;    /* A2 -> PA1 */
		interrupt-parent = <&gpio_intc>;
		interrupts = <63 IRQ_TYPE_EDGE_RISING>;     /* A2 */
		sensorhub,bl-addr = <0x08000000>;
		sensorhub,kernel-addr = <0x0800C000>;
		sensorhub,num-flash-banks = <4>;
		sensorhub,flash-banks =	<0 0x08000000 0x04000>,
					<3 0x0800C000 0x04000>,
					<4 0x08010000 0x10000>,
					<5 0x08020000 0x20000>;
		sensorhub,shared-addr = <0x08040000>;
		sensorhub,num-shared-flash-banks = <6>;
		sensorhub,shared-flash-banks = <6 0x08040000 0x20000>,
					<7 0x08060000 0x20000>,
					<8 0x08080000 0x20000>,
					<9 0x080A0000 0x20000>,
					<10 0x080C0000 0x20000>,
					<11 0x080E0000 0x20000>;
		status = "disabled";
	};
};
