linux/arch/arm64/boot/dts/renesas/rzg3s-smarc.dtsi

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