// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
 * Device Tree Source for the RZ/G2UL SMARC pincontrol parts
 *
 * Copyright (C) 2022 Renesas Electronics Corp.
 */

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

&pinctrl {
	pinctrl-0 = <&sound_clk_pins>;
	pinctrl-names = "default";

	can0_pins: can0 {
		pinmux = <RZG2L_PORT_PINMUX(1, 1, 3)>, /* TX */
			 <RZG2L_PORT_PINMUX(1, 2, 3)>; /* RX */
	};

#if (SW_ET0_EN_N)
	can0-stb-hog {
		gpio-hog;
		gpios = <RZG2L_GPIO(2, 2) GPIO_ACTIVE_HIGH>;
		output-low;
		line-name = "can0_stb";
	};
#endif

	can1_pins: can1 {
		pinmux = <RZG2L_PORT_PINMUX(2, 0, 3)>, /* TX */
			 <RZG2L_PORT_PINMUX(2, 1, 3)>; /* RX */
	};

#if (SW_ET0_EN_N)
	can1-stb-hog {
		gpio-hog;
		gpios = <RZG2L_GPIO(2, 3) GPIO_ACTIVE_HIGH>;
		output-low;
		line-name = "can1_stb";
	};
#endif

	i2c0_pins: i2c0 {
		pins = "RIIC0_SDA", "RIIC0_SCL";
		input-enable;
	};

	i2c1_pins: i2c1 {
		pins = "RIIC1_SDA", "RIIC1_SCL";
		input-enable;
	};

	mtu3_pins: mtu3 {
		mtu2-pwm {
			pinmux = <RZG2L_PORT_PINMUX(4, 0, 4)>; /* MTIOC2A */
		};
	};

	scif0_pins: scif0 {
		pinmux = <RZG2L_PORT_PINMUX(6, 4, 6)>, /* TxD */
			 <RZG2L_PORT_PINMUX(6, 3, 6)>; /* RxD */
	};

	sd1-pwr-en-hog {
		gpio-hog;
		gpios = <RZG2L_GPIO(0, 3) GPIO_ACTIVE_HIGH>;
		output-high;
		line-name = "sd1_pwr_en";
	};

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

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

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

	sdhi1_pins_uhs: sd1_uhs {
		sd1_data_uhs {
			pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
			power-source = <1800>;
		};

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

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

	sound_clk_pins: sound_clk {
		pins = "AUDIO_CLK1", "AUDIO_CLK2";
		input-enable;
	};

	spi1_pins: spi1 {
		pinmux = <RZG2L_PORT_PINMUX(4, 0, 2)>, /* CK */
			 <RZG2L_PORT_PINMUX(4, 1, 2)>, /* MOSI */
			 <RZG2L_PORT_PINMUX(4, 2, 2)>, /* MISO */
			 <RZG2L_PORT_PINMUX(4, 3, 2)>; /* SSL */
	};

	ssi1_pins: ssi1 {
		pinmux = <RZG2L_PORT_PINMUX(3, 0, 2)>, /* BCK */
			 <RZG2L_PORT_PINMUX(3, 1, 2)>, /* RCK */
			 <RZG2L_PORT_PINMUX(3, 2, 2)>, /* TXD */
			 <RZG2L_PORT_PINMUX(3, 3, 2)>; /* RXD */
	};

	usb0_pins: usb0 {
		pinmux = <RZG2L_PORT_PINMUX(5, 0, 1)>, /* VBUS */
			 <RZG2L_PORT_PINMUX(5, 2, 1)>, /* OVC */
			 <RZG2L_PORT_PINMUX(5, 3, 1)>; /* OTG_ID */
	};

	usb1_pins: usb1 {
		pinmux = <RZG2L_PORT_PINMUX(5, 4, 5)>, /* OVC */
			 <RZG2L_PORT_PINMUX(6, 0, 1)>; /* VBUS */
	};
};
