/*
 * Device Tree Source for UniPhier SoCs default pinctrl settings
 *
 * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+	X11
 */

&pinctrl {
	pinctrl_emmc: emmc_grp {
		groups = "emmc", "emmc_dat8";
		function = "emmc";
	};

	pinctrl_emmc_1v8: emmc_grp_1v8 {
		groups = "emmc", "emmc_dat8";
		function = "emmc";
	};

	pinctrl_i2c0: i2c0_grp {
		groups = "i2c0";
		function = "i2c0";
	};

	pinctrl_i2c1: i2c1_grp {
		groups = "i2c1";
		function = "i2c1";
	};

	pinctrl_i2c2: i2c2_grp {
		groups = "i2c2";
		function = "i2c2";
	};

	pinctrl_i2c3: i2c3_grp {
		groups = "i2c3";
		function = "i2c3";
	};

	pinctrl_i2c4: i2c4_grp {
		groups = "i2c4";
		function = "i2c4";
	};

	pinctrl_sd: sd_grp {
		groups = "sd";
		function = "sd";
	};

	pinctrl_sd_1v8: sd_grp_1v8 {
		groups = "sd";
		function = "sd";
	};

	pinctrl_sd1: sd1_grp {
		groups = "sd1";
		function = "sd1";
	};

	pinctrl_sd1_1v8: sd1_grp_1v8 {
		groups = "sd1";
		function = "sd1";
	};

	pinctrl_uart0: uart0_grp {
		groups = "uart0";
		function = "uart0";
	};

	pinctrl_uart1: uart1_grp {
		groups = "uart1";
		function = "uart1";
	};

	pinctrl_uart2: uart2_grp {
		groups = "uart2";
		function = "uart2";
	};

	pinctrl_uart3: uart3_grp {
		groups = "uart3";
		function = "uart3";
	};

	pinctrl_usb0: usb0_grp {
		groups = "usb0";
		function = "usb0";
	};

	pinctrl_usb1: usb1_grp {
		groups = "usb1";
		function = "usb1";
	};

	pinctrl_usb2: usb2_grp {
		groups = "usb2";
		function = "usb2";
	};

	pinctrl_usb3: usb3_grp {
		groups = "usb3";
		function = "usb3";
	};
};
