// SPDX-License-Identifier: GPL-2.0-only

#include "msm8916-pm8916.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>

/ {
	chassis-type = "embedded";

	aliases {
		mmc0 = &sdhc_1; /* eMMC */
		serial0 = &blsp_uart2;
	};

	chosen {
		stdout-path = "serial0";
	};

	reserved-memory {
		mpss_mem: mpss@86800000 {
			reg = <0x0 0x86800000 0x0 0x5500000>;
			no-map;
		};

		gps_mem: gps@8bd00000 {
			reg = <0x0 0x8bd00000 0x0 0x200000>;
			no-map;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		pinctrl-0 = <&button_default>;
		pinctrl-names = "default";

		label = "GPIO Buttons";

		/* GPIO is board-specific */
		button_restart: button-restart {
			label = "Restart";
			linux,code = <KEY_RESTART>;
		};
	};

	leds {
		compatible = "gpio-leds";

		pinctrl-0 = <&gpio_leds_default>;
		pinctrl-names = "default";

		/*
		 * GPIOs are board-specific.
		 * Functions and default-states defined here are fallbacks.
		 * Feel free to override them if your board is different.
		 */
		led_r: led-r {
			color = <LED_COLOR_ID_RED>;
			default-state = "on";
			function = LED_FUNCTION_POWER;
		};

		led_g: led-g {
			color = <LED_COLOR_ID_GREEN>;
			default-state = "off";
			function = LED_FUNCTION_WLAN;
		};

		led_b: led-b {
			color = <LED_COLOR_ID_BLUE>;
			default-state = "off";
			function = LED_FUNCTION_WAN;
		};
	};
};

&bam_dmux {
	status = "okay";
};

&bam_dmux_dma {
	status = "okay";
};

&blsp_uart2 {
	status = "okay";
};

/* Remove &mdss_dsi0_phy from clocks to make sure that gcc probes with display disabled */
&gcc {
	clocks = <&xo_board>, <&sleep_clk>, <0>, <0>, <0>, <0>, <0>;
};

&mpss {
	status = "okay";
};

&pm8916_usbin {
	status = "okay";
};

&sdhc_1 {
	status = "okay";
};

&usb {
	extcon = <&pm8916_usbin>;
	usb-role-switch;

	status = "okay";
};

&usb_hs_phy {
	extcon = <&pm8916_usbin>;
};

&wcnss {
	status = "okay";
};

&wcnss_iris {
	compatible = "qcom,wcn3620";
};

&tlmm {
	/* pins are board-specific */
	button_default: button-default-state {
		function = "gpio";
		drive-strength = <2>;
	};

	gpio_leds_default: gpio-leds-default-state {
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
	};
};