// 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 {
		i2c0 = &i2c0;
		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>;
	};
};

&i2c0 {
	status = "okay";

	clock-frequency = <1000000>;
};

&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";
};
