// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
 * Device Tree Source for the RZ SMARC Carrier-II Board.
 *
 * Copyright (C) 2023 Renesas Electronics Corp.
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>

/ {
	aliases {
		serial0 = &scif0;
		mmc1 = &sdhi1;
	};

	keys {
		compatible = "gpio-keys";

		key-1 {
			interrupts = <RZG2L_GPIO(18, 0) IRQ_TYPE_EDGE_FALLING>;
			interrupt-parent = <&pinctrl>;
			linux,code = <KEY_1>;
			label = "USER_SW1";
			wakeup-source;
			debounce-interval = <20>;
		};

		key-2 {
			interrupts = <RZG2L_GPIO(0, 1) IRQ_TYPE_EDGE_FALLING>;
			interrupt-parent = <&pinctrl>;
			linux,code = <KEY_2>;
			label = "USER_SW2";
			wakeup-source;
			debounce-interval = <20>;
		};

		key-3 {
			interrupts = <RZG2L_GPIO(0, 3) IRQ_TYPE_EDGE_FALLING>;
			interrupt-parent = <&pinctrl>;
			linux,code = <KEY_3>;
			label = "USER_SW3";
			wakeup-source;
			debounce-interval = <20>;
		};
	};

	vcc_sdhi1: regulator-vcc-sdhi1 {
		compatible = "regulator-fixed";
		regulator-name = "SDHI1 Vcc";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpios = <&pinctrl RZG2L_GPIO(2, 3) GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	vccq_sdhi1: regulator-vccq-sdhi1 {
		compatible = "regulator-gpio";
		regulator-name = "SDHI1 VccQ";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;
		gpios = <&pinctrl RZG2L_GPIO(4, 2) GPIO_ACTIVE_HIGH>;
		gpios-states = <1>;
		states = <3300000 1>, <1800000 0>;
	};
};

&pinctrl {
	key-1-gpio-hog {
		gpio-hog;
		gpios = <RZG2L_GPIO(18, 0) GPIO_ACTIVE_LOW>;
		input;
		line-name = "key-1-gpio-irq";
	};

	key-2-gpio-hog {
		gpio-hog;
		gpios = <RZG2L_GPIO(0, 1) GPIO_ACTIVE_LOW>;
		input;
		line-name = "key-2-gpio-irq";
	};

	key-3-gpio-hog {
		gpio-hog;
		gpios = <RZG2L_GPIO(0, 3) GPIO_ACTIVE_LOW>;
		input;
		line-name = "key-3-gpio-irq";
	};

	scif0_pins: scif0 {
		pinmux = <RZG2L_PORT_PINMUX(6, 3, 1)>, /* RXD */
			 <RZG2L_PORT_PINMUX(6, 4, 1)>; /* TXD */
	};

	sdhi1_pins: sd1 {
		data {
			pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
			power-source = <3300>;
		};

		ctrl {
			pins = "SD1_CLK", "SD1_CMD";
			power-source = <3300>;
		};

		cd {
			pinmux = <RZG2L_PORT_PINMUX(0, 2, 1)>; /* SD1_CD */
		};
	};

	sdhi1_pins_uhs: sd1-uhs {
		data {
			pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
			power-source = <1800>;
		};

		ctrl {
			pins = "SD1_CLK", "SD1_CMD";
			power-source = <1800>;
		};

		cd {
			pinmux = <RZG2L_PORT_PINMUX(0, 2, 1)>; /* SD1_CD */
		};
	};
};

&scif0 {
	pinctrl-names = "default";
	pinctrl-0 = <&scif0_pins>;
	status = "okay";
};

&sdhi1 {
	pinctrl-0 = <&sdhi1_pins>;
	pinctrl-1 = <&sdhi1_pins_uhs>;
	pinctrl-names = "default", "state_uhs";
	vmmc-supply = <&vcc_sdhi1>;
	vqmmc-supply = <&vccq_sdhi1>;
	bus-width = <4>;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	max-frequency = <125000000>;
	status = "okay";
};
